diff --git a/DEPS b/DEPS
index bcb4a0c..310edd7 100644
--- a/DEPS
+++ b/DEPS
@@ -206,11 +206,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': '38688fcdba24dcc2100b5f888c5c5a90226e2267',
+  'skia_revision': '13fa34606b78b9d01d4c34fcadb5f09de9393818',
   # 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': 'd9768e31d63ec7cf5af6f5f12e16e1a98788e12b',
+  'v8_revision': 'de50d9668fa280e7c845c482315c47bd33efd88d',
   # 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.
@@ -218,7 +218,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': '0c84d564df9ff047376df09d92021d60e73c1702',
+  'angle_revision': 'b1ac88b6534f0ba01da15000b3dc4afc2b7a1b2b',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling SwiftShader
   # and whatever else without interference from each other.
@@ -269,7 +269,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling catapult
   # and whatever else without interference from each other.
-  'catapult_revision': '749daf949871a89f04587bf6851edf066492a4d0',
+  'catapult_revision': 'edbb060595882b5fc4928693493444d26a704447',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling libFuzzer
   # and whatever else without interference from each other.
@@ -277,7 +277,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': 'feeda66ef2070e9cb0e9a62a76043f53fa2e8af8',
+  'devtools_frontend_revision': 'cdba9badd3b34e91bc3ddf4744cf26556ff129f4',
   # 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.
@@ -329,11 +329,11 @@
   # 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': 'c4593127cbdd382c18afea59b242b8040db5e4ce',
+  'dawn_revision': 'e557087870b0db11f232ce5825f88d8037e10e7c',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
-  'quiche_revision': 'ed30357616a74eb59b1f99d7bfad9a28f699a6b3',
+  'quiche_revision': '34a2680533d9bb39e0f8f191dcd121eda634e3f2',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling ios_webkit
   # and whatever else without interference from each other.
@@ -892,7 +892,7 @@
   # Tools used when building Chrome for Chrome OS. This affects both the Simple
   # Chrome workflow, as well as the chromeos-chrome ebuild.
   'src/third_party/chromite': {
-      'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + '954fbcfe8ee7660c189fe4a28d03a0b8de800d74',
+      'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + '3169c31f1f0ea280b0aef547004aa0e729647591',
       'condition': 'checkout_chromeos',
   },
 
@@ -1265,7 +1265,7 @@
   },
 
   'src/third_party/perfetto':
-    Var('android_git') + '/platform/external/perfetto.git' + '@' + 'e6f794f1dc5dcb51696a9c70ba882081f91859e7',
+    Var('android_git') + '/platform/external/perfetto.git' + '@' + 'be6747613d78aa1a7d88423b063d7a74fa3899e0',
 
   'src/third_party/perl': {
       'url': Var('chromium_git') + '/chromium/deps/perl.git' + '@' + '6f3e5028eb65d0b4c5fdd792106ac4c84eee1eb3',
@@ -1497,7 +1497,7 @@
   },
 
   'src/third_party/webrtc':
-    Var('webrtc_git') + '/src.git' + '@' + 'd273ed0320fcac7ffd6a083f4fb7871189e3446c',
+    Var('webrtc_git') + '/src.git' + '@' + '1d0e7b6bbe1763c0e94c97ef0a9e615240a643c8',
 
   'src/third_party/libgifcodec':
      Var('skia_git') + '/libgifcodec' + '@'+  Var('libgifcodec_revision'),
@@ -1535,7 +1535,7 @@
       'packages': [
         {
           'package': 'skia/tools/goldctl/linux-amd64',
-          'version': 'Chou-EJOehSH7VP2sMHb5CcVaudNGgiqt2COC7NHh74C',
+          'version': 'ikTOCf4Bt8qV4csQ2QeAWQwnDdKV4rH8bvkUgV-zFTsC',
         },
       ],
       'dep_type': 'cipd',
@@ -1545,7 +1545,7 @@
       'packages': [
         {
           'package': 'skia/tools/goldctl/windows-amd64',
-          'version': '7thhl6meG4eUWxxLq14JUg9yW0VQ2TTwYwWaZxkp3E8C',
+          'version': 'XxwGBMgOMB-RL51eSZcbadG4yUHFe_y3WZoPzJHB494C',
         },
       ],
       'dep_type': 'cipd',
@@ -1569,7 +1569,7 @@
     Var('chromium_git') + '/v8/v8.git' + '@' +  Var('v8_revision'),
 
   'src-internal': {
-    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@0b03fa00934a23cc3b85d82d346fc18f104a1595',
+    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@615063999dd255b93a3d21a2de0e0e977f4d8055',
     'condition': 'checkout_src_internal',
   },
 
@@ -1577,7 +1577,7 @@
     'packages': [
       {
         'package': 'chromeos_internal/apps/help_app/app',
-        'version': 'pGrZJhALiGd7xxQgijaE7hMxwdHHb3IJpLlKhFbUo5sC',
+        'version': 'rzh7SSCNO_IMmZv7t7OIlOy_7XIZejdnXpj-Uh3IeGwC',
       },
     ],
     'condition': 'checkout_chromeos and checkout_src_internal',
@@ -1588,7 +1588,7 @@
     'packages': [
       {
         'package': 'chromeos_internal/apps/media_app/app',
-        'version': 'WqJoWsae8v0BSdpCN_2iqYbhQITuBWwyhYO0NqTO9fsC',
+        'version': 'U-5IIfB8vy39NvpI83unV6yKRSTL446Zw5cBERt3kGgC',
       },
     ],
     'condition': 'checkout_chromeos and checkout_src_internal',
diff --git a/ash/strings/ash_strings_bn.xtb b/ash/strings/ash_strings_bn.xtb
index 5b98952..19dbe428 100644
--- a/ash/strings/ash_strings_bn.xtb
+++ b/ash/strings/ash_strings_bn.xtb
@@ -314,6 +314,7 @@
 <translation id="4072264167173457037">মাঝারি সিগন্যাল</translation>
 <translation id="4112140312785995938">পিছিয়ে যান</translation>
 <translation id="4114315158543974537">'ফোন হাব' ফিচার চালু করুন</translation>
+<translation id="4121728057981832179">কোনও ভার্চুয়াল মেশিন আপনার মাইক্রোফোন ব্যবহার করছে</translation>
 <translation id="4129129681837227511">আপনার লক স্ক্রিনে বিজ্ঞপ্তি দেখার জন্য সেটিংস পরিবর্তন করতে আনলক করুন</translation>
 <translation id="4146833061457621061">মিউজিক চালান</translation>
 <translation id="4149156641122542261"><ph name="DEVICE_TYPE" /> <ph name="DOMAIN" /> ম্যানেজ করে</translation>
@@ -328,6 +329,7 @@
 <translation id="4217571870635786043">ডিক্টেশন</translation>
 <translation id="4239069858505860023">GPRS</translation>
 <translation id="4261870227682513959">বিজ্ঞপ্তি সেটিংস দেখান। বিজ্ঞপ্তি বন্ধ আছে</translation>
+<translation id="4267383818855338811">কোনও ভার্চুয়াল মেশিন আপনার ক্যামেরা ব্যবহার করছে</translation>
 <translation id="4269883910223712419">এই ডিভাইসের প্রশাসক এগুলি করতে পারেন:</translation>
 <translation id="4279490309300973883">অনুকরণ করা হচ্ছে</translation>
 <translation id="4285498937028063278">আনপিন</translation>
@@ -363,6 +365,7 @@
 <translation id="4513946894732546136">প্রতিক্রিয়া</translation>
 <translation id="4527045527269911712">ব্লুটুথ ডিভাইস "<ph name="DEVICE_NAME" />" যুক্ত করার অনুমতি চাইছে।</translation>
 <translation id="453661520163887813">সম্পূর্ণ হতে <ph name="TIME" /> বাকি</translation>
+<translation id="4544483149666270818">রেকর্ড করতে একটি উইন্ডো বেছে নিন</translation>
 <translation id="4560576029703263363">চালু করা আছে</translation>
 <translation id="4561267230861221837">3G</translation>
 <translation id="4565377596337484307">পাসওয়ার্ড লুকান</translation>
@@ -402,6 +405,15 @@
 <translation id="4918086044614829423">স্বীকার</translation>
 <translation id="4924411785043111640">রিস্টার্ট করুন এবং রিসেট করুন</translation>
 <translation id="4925542575807923399">এই অ্যাকাউন্টের অ্যাডমিনিস্ট্রেটর অ্যাকাউন্টটিকে একাধিক সাইন-ইন সেশনের প্রথম সাইন-ইন করে থাকা অ্যাকাউন্ট হিসেবে রাখতে চায়৷</translation>
+<translation id="4942878304446937978">স্ট্যাটাস ট্রে, সময় <ph name="TIME" />,
+        <ph name="BATTERY" />
+        <ph name="NETWORK" />,
+        <ph name="MIC" />,
+        <ph name="CAMERA" />,
+        <ph name="NOTIFICATION" />,
+        <ph name="IME" />
+        <ph name="LOCALE" /></translation>
+<translation id="4946376291507881335">ছবি তুলুন</translation>
 <translation id="495046168593986294">উপরের দিকে স্ক্রল করুন</translation>
 <translation id="4961318399572185831">স্ক্রিন কাস্ট করুন</translation>
 <translation id="4969092041573468113"><ph name="HOURS" />ঘঃ <ph name="MINUTES" />মিঃ <ph name="SECONDS" />সেঃ</translation>
@@ -447,6 +459,7 @@
 <translation id="554893713779400387">ডিক্টেশন চালু বা বন্ধ করুন</translation>
 <translation id="556042886152191864">বোতাম</translation>
 <translation id="5571066253365925590">ব্লুটুথ সক্ষমিত</translation>
+<translation id="558849140439112033">ছবি তুলতে ড্র্যাগ করে কিছুটা জায়গা বেছে নিন</translation>
 <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY" />, <ph name="DATE" /></translation>
 <translation id="5600837773213129531">কথ্য প্রতিবার্তা বন্ধ করতে Ctrl + Alt + Z টিপুন।</translation>
 <translation id="5625955975703555628">LTE+</translation>
@@ -474,9 +487,11 @@
 <translation id="5860033963881614850">বন্ধ করুন</translation>
 <translation id="5876666360658629066">অভিভাবকীয় কোডটি লিখুন</translation>
 <translation id="5895138241574237353">পুনর্সূচনা</translation>
+<translation id="589817443623831496">পয়েন্ট স্ক্যানিং</translation>
 <translation id="5901316534475909376">Shift+Esc</translation>
 <translation id="5909862606227538307">ডেস্কটি অ্যাক্টিভ নেই</translation>
 <translation id="5911909173233110115"><ph name="USERNAME" /> (<ph name="MAIL" />)</translation>
+<translation id="5915278665499293471">ফুলস্ক্রিন ছবি তুলতে যেকোনও জায়গায় ক্লিক করুন</translation>
 <translation id="5916664084637901428">চালু</translation>
 <translation id="5920710855273935292">মাইক্রোফোন মিউট করা আছে।</translation>
 <translation id="594179686076170922">আপনার ফোনের সাথে কানেক্ট করা হচ্ছে...</translation>
@@ -535,6 +550,7 @@
 <translation id="6490471652906364588">USB-C ডিভাইস (ডান পোর্ট)</translation>
 <translation id="649452524636452238">স্মার্ট কার্ড পিন</translation>
 <translation id="6501401484702599040"><ph name="RECEIVER_NAME" /> এ স্ক্রিন কাস্ট করা হচ্ছে</translation>
+<translation id="6520517963145875092">ছবি তুলতে একটি উইন্ডো বেছে নিন</translation>
 <translation id="652139407789908527">এই আপডেট চলাকালীন, আপনার স্ক্রিনে, সাধারণত যে সময় লাগে, তার চেয়ে বেশি সময় (প্রায় এক মিনিট পর্যন্ত) কিছুই দেখতে পাবেন না। আপডেট চলাকালীন পাওয়ার বোতাম প্রেস করবেন না।</translation>
 <translation id="6528179044667508675">বিরক্ত করবে না</translation>
 <translation id="65320610082834431">ইমোজি</translation>
@@ -563,6 +579,7 @@
 <translation id="6751052314767925245">আপনার অ্যাডমিনিস্ট্রেটর প্রয়োগ করেছেন</translation>
 <translation id="6751826523481687655">পারফরম্যান্স ট্রেস করার বিকল্প চালু আছে</translation>
 <translation id="6752912906630585008">ডেস্ক <ph name="REMOVED_DESK" />-কে সরিয়ে দিয়ে <ph name="RECEIVE_DESK" />-এর সাথে মার্জ করা হয়েছে</translation>
+<translation id="6757237461819837179">কোনও মিডিয়া চলছে না</translation>
 <translation id="6777216307882431711">কানেক্ট করা USB-C ডিভাইসগুলি চার্জ করা হচ্ছে</translation>
 <translation id="6790428901817661496">চালু করুন</translation>
 <translation id="6803622936009808957">সমর্থিত রেসুলিউশানগুলি খুঁজে না পাওয়ায় প্রদর্শনগুলি মিরর মানে প্রতিবিম্বিত করতে পারেনি। এর পরিবর্তে প্রসারিত ডেস্কটপে প্রবেশ করেছে।</translation>
@@ -611,6 +628,7 @@
 <translation id="7348093485538360975">অন-স্ক্রীণ কীবোর্ড</translation>
 <translation id="735745346212279324">VPN ডিসকানেক্ট করা হয়েছে</translation>
 <translation id="7377169924702866686">Caps Lock চালু আছে৷</translation>
+<translation id="7378203170292176219">রেকর্ড করতে ড্র্যাগ করে কিছুটা জায়গা বেছে নিন</translation>
 <translation id="7378594059915113390">মিডিয়ার নিয়ন্ত্রণ</translation>
 <translation id="7398254312354928459">নেটওয়ার্ক সংযোগ পরিবর্তন করা হয়েছে</translation>
 <translation id="7405710164030118432">ডিভাইসটি আনলক করতে আপনার Family Link-এর অভিভাবকীয় অ্যাক্সেস কোডটি লিখুন</translation>
@@ -637,6 +655,7 @@
 <translation id="7618774594543487847">নিউট্রাল</translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° ফারেনহাইট</translation>
 <translation id="7633755430369750696">'নিয়ারবাই শেয়ার' সেটিংস দেখুন।</translation>
+<translation id="7641938616688887143">রেকর্ড করুন</translation>
 <translation id="7642647758716480637"><ph name="NETWORK_NAME" /> নেটওয়ার্কের সেটিংস খুলুন, <ph name="CONNECTION_STATUS" /></translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (মালিক)</translation>
 <translation id="7647488630410863958">আপনার বিজ্ঞপ্তিগুলি দেখতে ডিভাইস আনলক করুন</translation>
@@ -733,6 +752,7 @@
 <translation id="8563862697512465947">বিজ্ঞপ্তি সেটিংস</translation>
 <translation id="857201607579416096">স্ক্রিনের নিচে ডানদিকের কোণায় মেনু সরে গেছে।</translation>
 <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation>
+<translation id="861041328460089089">ফুলস্ক্রিনের ছবি তুলতে যেকোনও জায়গায় ট্যাপ করুন</translation>
 <translation id="8627191004499078455"><ph name="DEVICE_NAME" />-এর সাথে কানেক্ট হয়েছে</translation>
 <translation id="8631727435199967028">অ্যাক্সেসিবিলিটি সেটিংস</translation>
 <translation id="8637598503828012618"><ph name="CONNECTION_STATUS" />, সিগন্যাল: <ph name="SIGNAL_STRENGTH" />, আপনার অ্যাডমিনিস্ট্রেটর ম্যানেজ করে</translation>
diff --git a/ash/strings/ash_strings_iw.xtb b/ash/strings/ash_strings_iw.xtb
index f7f0a21..5272110a 100644
--- a/ash/strings/ash_strings_iw.xtb
+++ b/ash/strings/ash_strings_iw.xtb
@@ -97,7 +97,7 @@
 <translation id="1864454756846565995">‏מכשיר עם יציאת USB-C (יציאה אחורית)</translation>
 <translation id="1882897271359938046">משקף אל <ph name="DISPLAY_NAME" /></translation>
 <translation id="1885785240814121742">ביטול נעילה עם טביעת אצבע</translation>
-<translation id="1888656773939766144"><ph name="DISPLAY_NAME" /> לא תומך ברזולוציה של <ph name="SPECIFIED_RESOLUTION" /> (<ph name="SPECIFIED_REFRESH_RATE" /> הרץ). הרזולוציה הוחלפה ל-<ph name="FALLBACK_RESOLUTION" /> ‏(<ph name="FALLBACK_REFRESH_RATE" />). עליך ללחוץ על 'אישור' כדי לשמור את השינויים. ההגדרות הקודמות ישוחזרו בעוד <ph name="TIMEOUT_SECONDS" />.</translation>
+<translation id="1888656773939766144">‏<ph name="DISPLAY_NAME" /> לא תומך ברזולוציה של <ph name="SPECIFIED_RESOLUTION" /> ‏(<ph name="SPECIFIED_REFRESH_RATE" />Hz). הרזולוציה הוחלפה ל-<ph name="FALLBACK_RESOLUTION" /> ‏(<ph name="FALLBACK_REFRESH_RATE" />). עליך ללחוץ על 'אישור' כדי לשמור את השינויים. ההגדרות הקודמות ישוחזרו בעוד <ph name="TIMEOUT_SECONDS" />.</translation>
 <translation id="1919743966458266018">מקש הקיצור לפתיחת מנהל המשימות השתנה. השתמש ב-<ph name="NEW_SHORTCUT" /> במקום ב-<ph name="OLD_SHORTCUT" />.</translation>
 <translation id="1923539912171292317">לחיצות אוטומטיות</translation>
 <translation id="1924640696879807758">מהטלפון</translation>
@@ -387,7 +387,7 @@
 <translation id="4759238208242260848">הורדות</translation>
 <translation id="4774338217796918551">אפשר לחזור מחר בשעה <ph name="COME_BACK_TIME" />.</translation>
 <translation id="4776917500594043016">סיסמה עבור <ph name="USER_EMAIL_ADDRESS" /></translation>
-<translation id="4778095205580009397">‏Google Assistant אינו זמין בסשן הדגמה.</translation>
+<translation id="4778095205580009397">‏Google Assistant לא זמינה בסשן הדגמה.</translation>
 <translation id="479989351350248267">Search</translation>
 <translation id="4804818685124855865">נתק</translation>
 <translation id="4814539958450445987">מסך הכניסה</translation>
@@ -397,7 +397,7 @@
 <translation id="485592688953820832">ללא פעולה (השהיה)</translation>
 <translation id="4868492592575313542">מופעלת</translation>
 <translation id="4872237917498892622">‏Alt + חיפוש או Shift</translation>
-<translation id="4890187583552566966">‏Google Assistant הושבת על-ידי מנהל המערכת.</translation>
+<translation id="4890187583552566966">‏Google Assistant הושבתה על-ידי מנהל המערכת.</translation>
 <translation id="4895488851634969361">הסוללה טעונה במלואה.</translation>
 <translation id="490375751687810070">אנכי</translation>
 <translation id="4905614135390995787">מקש הקיצור להפעלה או כיבוי של מצב ניגודיות גבוהה השתנה. השתמש ב-<ph name="NEW_SHORTCUT" /> במקום ב-<ph name="OLD_SHORTCUT" />.</translation>
@@ -468,7 +468,7 @@
 <translation id="5669267381087807207">מפעיל</translation>
 <translation id="5673434351075758678">מ"<ph name="FROM_LOCALE" />" ל"<ph name="TO_LOCALE" />" אחרי סנכרון ההגדרות.</translation>
 <translation id="5679050765726761783">המתאם שחיברת הוא בעל הספק נמוך</translation>
-<translation id="5682642926269496722">‏Google Assistant אינו זמין לחשבון המשתמש הנוכחי.</translation>
+<translation id="5682642926269496722">‏Google Assistant לא זמינה לחשבון המשתמש הנוכחי.</translation>
 <translation id="5689633613396158040">עם תאורת לילה, קל יותר להסתכל על המסך או לקרוא כשהתאורה מסביב עמומה. יש להקיש כדי לשנות את השעה שבה מופעלת 'תאורת לילה' או כדי לכבות אותה לגמרי.</translation>
 <translation id="5691772641933328258">טביעת האצבע לא זוהתה</translation>
 <translation id="5710450975648804523">מצב 'נא לא להפריע' מופעל</translation>
diff --git a/ash/strings/ash_strings_pt-BR.xtb b/ash/strings/ash_strings_pt-BR.xtb
index 045c15c..b18031f 100644
--- a/ash/strings/ash_strings_pt-BR.xtb
+++ b/ash/strings/ash_strings_pt-BR.xtb
@@ -551,7 +551,7 @@
 <translation id="6490471652906364588">Dispositivo USB-C (porta da direita)</translation>
 <translation id="649452524636452238">PIN do cartão inteligente</translation>
 <translation id="6501401484702599040">Transmitindo tela para <ph name="RECEIVER_NAME" /></translation>
-<translation id="6520517963145875092">Selecionar uma janela para a captura</translation>
+<translation id="6520517963145875092">Selecione uma janela para a captura</translation>
 <translation id="652139407789908527">Sua tela ficará desligada por mais tempo que o normal (até um minuto) durante a atualização. Não pressione o botão liga/desliga enquanto a atualização está em andamento.</translation>
 <translation id="6528179044667508675">Não perturbe</translation>
 <translation id="65320610082834431">Emojis</translation>
diff --git a/ash/strings/ash_strings_sr-Latn.xtb b/ash/strings/ash_strings_sr-Latn.xtb
index 4307bfb..b515c522 100644
--- a/ash/strings/ash_strings_sr-Latn.xtb
+++ b/ash/strings/ash_strings_sr-Latn.xtb
@@ -687,7 +687,7 @@
 <translation id="7904094684485781019">Administrator za ovaj nalog je zabranio višestruko prijavljivanje.</translation>
 <translation id="7933084174919150729">Google pomoćnik je dostupan samo za primarni profil.</translation>
 <translation id="79341161159229895">Nalogom upravljaju <ph name="FIRST_PARENT_EMAIL" /> i <ph name="SECOND_PARENT_EMAIL" /></translation>
-<translation id="793716872548410480">Pritisnite <ph name="SHORTCUT_KEY_NAME" /> + V da biste videli privremenu memoriju. Poslednjih 5 stavki koje ste kopirali čuvaju se u privremenoj memoriji.</translation>
+<translation id="793716872548410480">Pritisnite <ph name="SHORTCUT_KEY_NAME" /> + V da biste videli privremenu memoriju. Poslednjih 5 stavki koje ste kopirali se čuvaju u privremenoj memoriji.</translation>
 <translation id="7955885781510802139">Režim visokog kontrasta</translation>
 <translation id="7977927628060636163">Traže se mobilne mreže…</translation>
 <translation id="7980780401175799550">Isprobajte nove načine za kretanje kroz Chrome OS</translation>
diff --git a/ash/strings/ash_strings_sr.xtb b/ash/strings/ash_strings_sr.xtb
index b1731ad0..2a4261c 100644
--- a/ash/strings/ash_strings_sr.xtb
+++ b/ash/strings/ash_strings_sr.xtb
@@ -687,7 +687,7 @@
 <translation id="7904094684485781019">Администратор за овај налог је забранио вишеструко пријављивање.</translation>
 <translation id="7933084174919150729">Google помоћник је доступан само за примарни профил.</translation>
 <translation id="79341161159229895">Налогом управљају <ph name="FIRST_PARENT_EMAIL" /> и <ph name="SECOND_PARENT_EMAIL" /></translation>
-<translation id="793716872548410480">Притисните <ph name="SHORTCUT_KEY_NAME" /> + V да бисте видели привремену меморију. Последњих 5 ставки које сте копирали чувају се у привременој меморији.</translation>
+<translation id="793716872548410480">Притисните <ph name="SHORTCUT_KEY_NAME" /> + V да бисте видели привремену меморију. Последњих 5 ставки које сте копирали се чувају у привременој меморији.</translation>
 <translation id="7955885781510802139">Режим високог контраста</translation>
 <translation id="7977927628060636163">Траже се мобилне мреже…</translation>
 <translation id="7980780401175799550">Испробајте нове начине за кретање кроз Chrome ОС</translation>
diff --git a/ash/strings/ash_strings_ur.xtb b/ash/strings/ash_strings_ur.xtb
index bd2c104..b26cbfde 100644
--- a/ash/strings/ash_strings_ur.xtb
+++ b/ash/strings/ash_strings_ur.xtb
@@ -410,8 +410,8 @@
         <ph name="BATTERY" />
         <ph name="NETWORK" />،
         <ph name="MIC" />،
-        <ph name="CAMERA" />
-        <ph name="NOTIFICATION" />
+        <ph name="CAMERA" />،
+        <ph name="NOTIFICATION" />،
         <ph name="IME" />
         <ph name="LOCALE" /></translation>
 <translation id="4946376291507881335">کیپچر کریں</translation>
diff --git a/ash/strings/ash_strings_zh-TW.xtb b/ash/strings/ash_strings_zh-TW.xtb
index 59192032..a38115a 100644
--- a/ash/strings/ash_strings_zh-TW.xtb
+++ b/ash/strings/ash_strings_zh-TW.xtb
@@ -687,7 +687,7 @@
 <translation id="7904094684485781019">這個帳戶的管理員已禁止多重登入。</translation>
 <translation id="7933084174919150729">Google 助理僅適用於主要設定檔。</translation>
 <translation id="79341161159229895">這個帳戶是由 <ph name="FIRST_PARENT_EMAIL" /> 和 <ph name="SECOND_PARENT_EMAIL" /> 管理</translation>
-<translation id="793716872548410480">按下<ph name="SHORTCUT_KEY_NAME" /> + V 鍵即可查看剪貼簿。你最後複製的 5 項目會儲存到剪貼簿中。</translation>
+<translation id="793716872548410480">按下<ph name="SHORTCUT_KEY_NAME" /> + V 鍵即可查看剪貼簿。你最後複製的 5 個項目會儲存到剪貼簿中。</translation>
 <translation id="7955885781510802139">高對比模式</translation>
 <translation id="7977927628060636163">正在搜尋行動網路...</translation>
 <translation id="7980780401175799550">試用瀏覽 Chrome 作業系統的新方式</translation>
diff --git a/ash/system/tray/tray_popup_item_style.cc b/ash/system/tray/tray_popup_item_style.cc
index 46352c2..e478dd9 100644
--- a/ash/system/tray/tray_popup_item_style.cc
+++ b/ash/system/tray/tray_popup_item_style.cc
@@ -71,7 +71,8 @@
     case ColorStyle::DISABLED:
       return SkColorSetA(kBaseTextColor, kDisabledAlpha);
     case ColorStyle::CONNECTED:
-      return gfx::kGoogleGreenDark600;
+      return AshColorProvider::Get()->GetContentLayerColor(
+          AshColorProvider::ContentLayerType::kTextColorPositive);
   }
   NOTREACHED();
   return gfx::kPlaceholderColor;
diff --git a/base/allocator/partition_allocator/partition_alloc.h b/base/allocator/partition_allocator/partition_alloc.h
index 1a905b46..523e03db 100644
--- a/base/allocator/partition_allocator/partition_alloc.h
+++ b/base/allocator/partition_allocator/partition_alloc.h
@@ -506,33 +506,30 @@
   PA_DCHECK(slot_span);
   PA_DCHECK(IsValidSlotSpan(slot_span));
 
+  // |ptr| points after the tag and the cookie.
+  //
+  // Layout inside the slot:
+  //  <--------extras------->                  <-extras->
+  //  <----------------utilized_slot_size--------------->
+  //                        <----usable_size--->
+  //  |[tag/refcnt]|[cookie]|...data...|[empty]|[cookie]|[unused]|
+  //                        ^
+  //                       ptr
+  //
+  // Note: tag, ref-count and cookie can be 0-sized.
+  //
+  // For more context, see the other "Layout inside the slot" comment below.
   const size_t utilized_slot_size = slot_span->GetUtilizedSlotSize();
   if (allow_extras) {
-    // |ptr| points after the tag and the cookie.
-    //
-    // Layout inside the slot:
-    //  <--------extras------->                  <-extras->
-    //  <----------------utilized_slot_size--------------->
-    //  |[tag/refcnt]|[cookie]|...data...|[empty]|[cookie]|[unused]|
-    //  ^                     ^
-    //  |                     |
-    //  allocation_start_ptr  ptr
-    //
-    // Note: tag, ref-count and cookie can be 0-sized.
-    //
-    // For more context, see the other "Layout inside the slot" comment below.
-    void* allocation_start_ptr =
-        internal::PartitionPointerAdjustSubtract(true /* allow_extras */, ptr);
 
 #if DCHECK_IS_ON()
-    void* start_cookie_ptr =
-        internal::PartitionCookiePointerAdjustSubtract(ptr);
-    void* end_cookie_ptr = internal::PartitionCookiePointerAdjustSubtract(
-        reinterpret_cast<char*>(allocation_start_ptr) + utilized_slot_size);
-
+    // Verify 2 cookies surrounding the allocated region.
     // If these asserts fire, you probably corrupted memory.
-    internal::PartitionCookieCheckValue(start_cookie_ptr);
-    internal::PartitionCookieCheckValue(end_cookie_ptr);
+    char* char_ptr = static_cast<char*>(ptr);
+    size_t usable_size = internal::PartitionSizeAdjustSubtract(
+        true /* allow_extras */, utilized_slot_size);
+    internal::PartitionCookieCheckValue(char_ptr - internal::kCookieSize);
+    internal::PartitionCookieCheckValue(char_ptr + usable_size);
 #endif
 
     if (!slot_span->bucket->is_direct_mapped()) {
@@ -569,8 +566,10 @@
 #endif
     }
 
-    ptr = allocation_start_ptr;
-  }
+    // Shift ptr to the beginning of the slot.
+    ptr =
+        internal::PartitionPointerAdjustSubtract(true /* allow_extras */, ptr);
+  }  // if (allow_extras)
 
 #if DCHECK_IS_ON()
   memset(ptr, kFreedByte, utilized_slot_size);
@@ -873,18 +872,18 @@
 
   // Layout inside the slot:
   //  |[tag/refcnt]|[cookie]|...data...|[empty]|[cookie]|[unused]|
-  //                        <----a----->
-  //                        <--------b--------->
-  //  <----------c---------->                  <---c---->
-  //  <---------------d--------------->   +    <---d---->
-  //  <------------------------e------------------------>
-  //  <----------------------------f----------------------------->
-  //   a: requested_size
-  //   b: usable_size
-  //   c: extras
-  //   d: raw_size
-  //   e: utilized_slot_size
-  //   f: slot_size
+  //                        <---(a)---->
+  //                        <-------(b)-------->
+  //  <---------(c)--------->                  <--(c)--->
+  //  <---------------(d)-------------->   +   <--(d)--->
+  //  <-----------------------(e)----------------------->
+  //  <---------------------------(f)---------------------------->
+  //   (a) requested_size
+  //   (b) usable_size
+  //   (c) extras
+  //   (d) raw_size
+  //   (e) utilized_slot_size
+  //   (f) slot_size
   //
   // - The tag/ref-count may or may not exist in the slot, depending on
   //   CheckedPtr implementation.
diff --git a/base/fuchsia/time_zone_data_unittest.cc b/base/fuchsia/time_zone_data_unittest.cc
index d90ac38..3256b51 100644
--- a/base/fuchsia/time_zone_data_unittest.cc
+++ b/base/fuchsia/time_zone_data_unittest.cc
@@ -18,7 +18,7 @@
 namespace {
 
 // Directory path to the tzdata configuration files.
-const char kTzDataDirPath[] = "/pkg/base/test/data/tzdata/2019a/44/le";
+const char kTzDataDirPath[] = "/pkg/base/test/data/tzdata/icu/44/le";
 
 // File path to the text file containing the expected ICU library revision, for
 // example "2019c".
diff --git a/base/test/data/tzdata/2019a/44/le/metaZones.res b/base/test/data/tzdata/icu/44/le/metaZones.res
similarity index 100%
rename from base/test/data/tzdata/2019a/44/le/metaZones.res
rename to base/test/data/tzdata/icu/44/le/metaZones.res
Binary files differ
diff --git a/base/test/data/tzdata/2019a/44/le/timezoneTypes.res b/base/test/data/tzdata/icu/44/le/timezoneTypes.res
similarity index 100%
rename from base/test/data/tzdata/2019a/44/le/timezoneTypes.res
rename to base/test/data/tzdata/icu/44/le/timezoneTypes.res
Binary files differ
diff --git a/base/test/data/tzdata/2019a/44/le/zoneinfo64.res b/base/test/data/tzdata/icu/44/le/zoneinfo64.res
similarity index 100%
rename from base/test/data/tzdata/2019a/44/le/zoneinfo64.res
rename to base/test/data/tzdata/icu/44/le/zoneinfo64.res
Binary files differ
diff --git a/base/test/data/tzdata/revision.txt b/base/test/data/tzdata/revision.txt
new file mode 100644
index 0000000..149d790
--- /dev/null
+++ b/base/test/data/tzdata/revision.txt
@@ -0,0 +1 @@
+2019a
diff --git a/build/apple/tweak_info_plist.py b/build/apple/tweak_info_plist.py
index 7f47e762..e9c3bd1 100755
--- a/build/apple/tweak_info_plist.py
+++ b/build/apple/tweak_info_plist.py
@@ -263,6 +263,9 @@
                     choices=('ios', 'mac'),
                     default='mac',
                     help='The target platform of the bundle')
+  # TODO(crbug.com/1140474): Remove once iOS 14.2 reaches mass adoption.
+  parser.add_option('--lock-to-version',
+                    help='Set CFBundleVersion to given value + @MAJOR@@PATH@')
   parser.add_option(
       '--version-overrides',
       action='append',
@@ -326,10 +329,17 @@
         'CFBundleVersion': '@BUILD@.@PATCH@',
     }
   else:
-    version_format_for_key = {
-        'CFBundleShortVersionString': '@MAJOR@.@BUILD@.@PATCH@',
-        'CFBundleVersion': '@MAJOR@.@MINOR@.@BUILD@.@PATCH@'
-    }
+    # TODO(crbug.com/1140474): Remove once iOS 14.2 reaches mass adoption.
+    if options.lock_to_version:
+      version_format_for_key = {
+          'CFBundleShortVersionString': '@MAJOR@.@BUILD@.@PATCH@',
+          'CFBundleVersion': options.lock_to_version + '.@MAJOR@@PATCH@'
+      }
+    else:
+      version_format_for_key = {
+          'CFBundleShortVersionString': '@MAJOR@.@BUILD@.@PATCH@',
+          'CFBundleVersion': '@MAJOR@.@MINOR@.@BUILD@.@PATCH@'
+      }
 
   if options.use_breakpad:
     version_format_for_key['BreakpadVersion'] = \
diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
index 961ff53c..ecfb35e 100644
--- a/chrome/android/chrome_java_sources.gni
+++ b/chrome/android/chrome_java_sources.gni
@@ -297,6 +297,7 @@
   "java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerHost.java",
   "java/src/org/chromium/chrome/browser/compositor/layouts/LayoutProvider.java",
   "java/src/org/chromium/chrome/browser/compositor/layouts/LayoutRenderHost.java",
+  "java/src/org/chromium/chrome/browser/compositor/layouts/LayoutStateProvider.java",
   "java/src/org/chromium/chrome/browser/compositor/layouts/LayoutUpdateHost.java",
   "java/src/org/chromium/chrome/browser/compositor/layouts/OverviewModeBehavior.java",
   "java/src/org/chromium/chrome/browser/compositor/layouts/OverviewModeController.java",
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_iw.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_iw.xtb
index 91791bc8..37efe66 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_iw.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_iw.xtb
@@ -15,8 +15,8 @@
 <translation id="4982366513646093083">‏מזמינים אוכל\nבכמה הקשות בלבד</translation>
 <translation id="5267269112080050255">‏Google Assistant ב-Chrome נפתח בגובה מלא.</translation>
 <translation id="5447168050208292829">‏עושים צ'ק-אין לטיסה\nבכמה הקשות בלבד</translation>
-<translation id="6555233628095991027">‏Google Assistant ב-Chrome נפתח בחצי גובה.</translation>
-<translation id="6785872064505734160">‏Google Assistant ב-Chrome יכול להשלים עבורך פעולות באתרים</translation>
+<translation id="6555233628095991027">‏Google Assistant ב-Chrome נפתחה בחצי גובה.</translation>
+<translation id="6785872064505734160">‏Google Assistant ב-Chrome יכולה להשלים עבורך פעולות באתרים</translation>
 <translation id="6973932557599545801">לצערי אין לי אפשרות לעזור. עליך להמשיך בעצמך.</translation>
 <translation id="7135664311366978968">‏קונים כרטיסים לסרט\nבכמה הקשות בלבד</translation>
 <translation id="7455021968451468078">‏Google Assistant יכול לעזור לך\nלהחליף סיסמה</translation>
diff --git a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantAccessibilityIntegrationTest.java b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantAccessibilityIntegrationTest.java
index 32fdce4..6e6e959c 100644
--- a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantAccessibilityIntegrationTest.java
+++ b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantAccessibilityIntegrationTest.java
@@ -49,8 +49,8 @@
 import org.chromium.chrome.browser.autofill_assistant.proto.CollectUserDataProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.ElementAreaProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.ElementAreaProto.Rectangle;
-import org.chromium.chrome.browser.autofill_assistant.proto.FocusElementProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.SelectorProto;
+import org.chromium.chrome.browser.autofill_assistant.proto.ShowCastProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.SupportedScriptProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.SupportedScriptProto.PresentationProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.TextInputProto;
@@ -135,9 +135,9 @@
                                                 "#touch_area_four"))))
                         .build();
         list.add((ActionProto) ActionProto.newBuilder()
-                         .setFocusElement(FocusElementProto.newBuilder()
-                                                  .setElement(element)
-                                                  .setTouchableElementArea(elementArea))
+                         .setShowCast(ShowCastProto.newBuilder()
+                                              .setElementToPresent(element)
+                                              .setTouchableElementArea(elementArea))
                          .build());
 
         // Create enough additional sections to fill up more than the height of the screen.
@@ -212,9 +212,9 @@
                                                 "#touch_area_four"))))
                         .build();
         list.add((ActionProto) ActionProto.newBuilder()
-                         .setFocusElement(FocusElementProto.newBuilder()
-                                                  .setElement(element)
-                                                  .setTouchableElementArea(elementArea))
+                         .setShowCast(ShowCastProto.newBuilder()
+                                              .setElementToPresent(element)
+                                              .setTouchableElementArea(elementArea))
                          .build());
 
         // Create enough additional sections to fill up more than the height of the screen.
diff --git a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantBackButtonIntegrationTest.java b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantBackButtonIntegrationTest.java
index 44580c9..db17f1fe 100644
--- a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantBackButtonIntegrationTest.java
+++ b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantBackButtonIntegrationTest.java
@@ -47,9 +47,9 @@
 import org.chromium.chrome.browser.autofill_assistant.proto.ClientSettingsProto.IntegrationTestSettings;
 import org.chromium.chrome.browser.autofill_assistant.proto.ElementAreaProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.ElementAreaProto.Rectangle;
-import org.chromium.chrome.browser.autofill_assistant.proto.FocusElementProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.PromptProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.SelectorProto;
+import org.chromium.chrome.browser.autofill_assistant.proto.ShowCastProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.StopProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.SupportedScriptProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.SupportedScriptProto.PresentationProto;
@@ -128,15 +128,14 @@
                         .build();
 
         ArrayList<ActionProto> list = new ArrayList<>();
-        list.add(
-                (ActionProto) ActionProto.newBuilder()
-                        .setFocusElement(FocusElementProto.newBuilder()
-                                                 .setElement(element)
-                                                 .setTouchableElementArea(
-                                                         ElementAreaProto.newBuilder().addTouchable(
-                                                                 Rectangle.newBuilder().addElements(
-                                                                         element))))
-                        .build());
+        list.add((ActionProto) ActionProto.newBuilder()
+                         .setShowCast(ShowCastProto.newBuilder()
+                                              .setElementToPresent(element)
+                                              .setTouchableElementArea(
+                                                      ElementAreaProto.newBuilder().addTouchable(
+                                                              Rectangle.newBuilder().addElements(
+                                                                      element))))
+                         .build());
         list.add((ActionProto) ActionProto.newBuilder()
                          .setPrompt(PromptProto.newBuilder().setMessage("Prompt").addChoices(
                                  PromptProto.Choice.newBuilder()))
@@ -195,15 +194,14 @@
                         .build();
 
         ArrayList<ActionProto> list = new ArrayList<>();
-        list.add(
-                (ActionProto) ActionProto.newBuilder()
-                        .setFocusElement(FocusElementProto.newBuilder()
-                                                 .setElement(element)
-                                                 .setTouchableElementArea(
-                                                         ElementAreaProto.newBuilder().addTouchable(
-                                                                 Rectangle.newBuilder().addElements(
-                                                                         element))))
-                        .build());
+        list.add((ActionProto) ActionProto.newBuilder()
+                         .setShowCast(ShowCastProto.newBuilder()
+                                              .setElementToPresent(element)
+                                              .setTouchableElementArea(
+                                                      ElementAreaProto.newBuilder().addTouchable(
+                                                              Rectangle.newBuilder().addElements(
+                                                                      element))))
+                         .build());
         list.add((ActionProto) ActionProto.newBuilder()
                          .setTell(TellProto.newBuilder().setMessage("Tell"))
                          .build());
@@ -323,15 +321,14 @@
                         .build();
 
         ArrayList<ActionProto> list = new ArrayList<>();
-        list.add(
-                (ActionProto) ActionProto.newBuilder()
-                        .setFocusElement(FocusElementProto.newBuilder()
-                                                 .setElement(element)
-                                                 .setTouchableElementArea(
-                                                         ElementAreaProto.newBuilder().addTouchable(
-                                                                 Rectangle.newBuilder().addElements(
-                                                                         element))))
-                        .build());
+        list.add((ActionProto) ActionProto.newBuilder()
+                         .setShowCast(ShowCastProto.newBuilder()
+                                              .setElementToPresent(element)
+                                              .setTouchableElementArea(
+                                                      ElementAreaProto.newBuilder().addTouchable(
+                                                              Rectangle.newBuilder().addElements(
+                                                                      element))))
+                         .build());
         list.add((ActionProto) ActionProto.newBuilder()
                          .setTell(TellProto.newBuilder().setMessage("Tell"))
                          .build());
diff --git a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantBottomsheetTest.java b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantBottomsheetTest.java
index b2d652a8..4450dcce 100644
--- a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantBottomsheetTest.java
+++ b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantBottomsheetTest.java
@@ -66,10 +66,10 @@
 import org.chromium.chrome.browser.autofill_assistant.proto.ConfigureBottomSheetProto.PeekMode;
 import org.chromium.chrome.browser.autofill_assistant.proto.ConfigureBottomSheetProto.ViewportResizing;
 import org.chromium.chrome.browser.autofill_assistant.proto.DetailsProto;
-import org.chromium.chrome.browser.autofill_assistant.proto.FocusElementProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.PromptProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.PromptProto.Choice;
 import org.chromium.chrome.browser.autofill_assistant.proto.SelectorProto;
+import org.chromium.chrome.browser.autofill_assistant.proto.ShowCastProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.ShowDetailsProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.SupportedScriptProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.SupportedScriptProto.PresentationProto;
@@ -143,7 +143,7 @@
                          .build());
         // Focus on the bottom element.
         list.add((ActionProto) ActionProto.newBuilder()
-                         .setFocusElement(FocusElementProto.newBuilder().setElement(
+                         .setShowCast(ShowCastProto.newBuilder().setElementToPresent(
                                  SelectorProto.newBuilder().addFilters(
                                          SelectorProto.Filter.newBuilder().setCssSelector(
                                                  "p.bottom"))))
@@ -423,7 +423,7 @@
                          .build());
         // Focus on the bottom element.
         list.add((ActionProto) ActionProto.newBuilder()
-                         .setFocusElement(FocusElementProto.newBuilder().setElement(
+                         .setShowCast(ShowCastProto.newBuilder().setElementToPresent(
                                  SelectorProto.newBuilder().addFilters(
                                          SelectorProto.Filter.newBuilder().setCssSelector(
                                                  "p.bottom"))))
diff --git a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantCollectUserDataIntegrationTest.java b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantCollectUserDataIntegrationTest.java
index f5d16b2..c3226fb0 100644
--- a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantCollectUserDataIntegrationTest.java
+++ b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantCollectUserDataIntegrationTest.java
@@ -73,7 +73,6 @@
 import org.chromium.chrome.browser.autofill_assistant.proto.ElementAreaProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.ElementAreaProto.Rectangle;
 import org.chromium.chrome.browser.autofill_assistant.proto.ElementConditionProto;
-import org.chromium.chrome.browser.autofill_assistant.proto.FocusElementProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.IntList;
 import org.chromium.chrome.browser.autofill_assistant.proto.KeyboardValueFillStrategy;
 import org.chromium.chrome.browser.autofill_assistant.proto.ModelProto.ModelValue;
@@ -83,6 +82,7 @@
 import org.chromium.chrome.browser.autofill_assistant.proto.PromptProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.PromptProto.Choice;
 import org.chromium.chrome.browser.autofill_assistant.proto.SelectorProto;
+import org.chromium.chrome.browser.autofill_assistant.proto.ShowCastProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.ShowDetailsProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.SupportedScriptProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.SupportedScriptProto.PresentationProto;
@@ -320,16 +320,16 @@
      */
     @Test
     @MediumTest
-    public void testTermsAndConditionsWithFocusElement() throws Exception {
+    public void testTermsAndConditionsWithShowCast() throws Exception {
         String profileId = mHelper.addDummyProfile("John Doe", "johndoe@gmail.com");
         mHelper.addDummyCreditCard(profileId);
 
         ArrayList<ActionProto> list = new ArrayList<>();
         list.add(
                 (ActionProto) ActionProto.newBuilder()
-                        .setFocusElement(
-                                FocusElementProto.newBuilder()
-                                        .setElement(SelectorProto.newBuilder().addFilters(
+                        .setShowCast(
+                                ShowCastProto.newBuilder()
+                                        .setElementToPresent(SelectorProto.newBuilder().addFilters(
                                                 SelectorProto.Filter.newBuilder().setCssSelector(
                                                         "div.terms")))
                                         .setTouchableElementArea(ElementAreaProto.newBuilder().addTouchable(
diff --git a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantGenericUiTest.java b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantGenericUiTest.java
index 33f8be57..6dd7dd7 100644
--- a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantGenericUiTest.java
+++ b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantGenericUiTest.java
@@ -94,7 +94,6 @@
 import org.chromium.chrome.browser.autofill_assistant.proto.ElementConditionProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.EndActionProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.EventProto;
-import org.chromium.chrome.browser.autofill_assistant.proto.FocusElementProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.ForEachProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.GenericUserInterfaceProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.ImageViewProto;
@@ -119,6 +118,7 @@
 import org.chromium.chrome.browser.autofill_assistant.proto.SetViewVisibilityProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.ShapeDrawableProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.ShowCalendarPopupProto;
+import org.chromium.chrome.browser.autofill_assistant.proto.ShowCastProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.ShowGenericUiPopupProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.ShowGenericUiProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.ShowGenericUiProto.PeriodicElementChecks;
@@ -2710,15 +2710,14 @@
                         .build();
 
         ArrayList<ActionProto> list = new ArrayList<>();
-        list.add(
-                (ActionProto) ActionProto.newBuilder()
-                        .setFocusElement(FocusElementProto.newBuilder()
-                                                 .setElement(touch_area_one)
-                                                 .setTouchableElementArea(
-                                                         ElementAreaProto.newBuilder().addTouchable(
-                                                                 Rectangle.newBuilder().addElements(
-                                                                         touch_area_one))))
-                        .build());
+        list.add((ActionProto) ActionProto.newBuilder()
+                         .setShowCast(ShowCastProto.newBuilder()
+                                              .setElementToPresent(touch_area_one)
+                                              .setTouchableElementArea(
+                                                      ElementAreaProto.newBuilder().addTouchable(
+                                                              Rectangle.newBuilder().addElements(
+                                                                      touch_area_one))))
+                         .build());
 
         ElementCheck touch_area_one_present =
                 (ElementCheck) ElementCheck.newBuilder()
diff --git a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantKeyboardIntegrationTest.java b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantKeyboardIntegrationTest.java
index e280a9a..5a67585 100644
--- a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantKeyboardIntegrationTest.java
+++ b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantKeyboardIntegrationTest.java
@@ -40,13 +40,13 @@
 import org.chromium.chrome.browser.autofill_assistant.proto.ElementAreaProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.ElementAreaProto.Rectangle;
 import org.chromium.chrome.browser.autofill_assistant.proto.ElementConditionProto;
-import org.chromium.chrome.browser.autofill_assistant.proto.FocusElementProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.KeyboardValueFillStrategy;
 import org.chromium.chrome.browser.autofill_assistant.proto.PromptProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.PromptProto.Choice;
 import org.chromium.chrome.browser.autofill_assistant.proto.SelectorProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.SetFormFieldValueProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.SetFormFieldValueProto.KeyPress;
+import org.chromium.chrome.browser.autofill_assistant.proto.ShowCastProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.SupportedScriptProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.SupportedScriptProto.PresentationProto;
 import org.chromium.chrome.browser.flags.ChromeSwitches;
@@ -127,15 +127,14 @@
                                                  .setType(ChipType.HIGHLIGHTED_ACTION)
                                                  .setText("Continue"))))
                          .build());
-        list.add(
-                (ActionProto) ActionProto.newBuilder()
-                        .setFocusElement(FocusElementProto.newBuilder()
-                                                 .setElement(element)
-                                                 .setTouchableElementArea(
-                                                         ElementAreaProto.newBuilder().addTouchable(
-                                                                 Rectangle.newBuilder().addElements(
-                                                                         element))))
-                        .build());
+        list.add((ActionProto) ActionProto.newBuilder()
+                         .setShowCast(ShowCastProto.newBuilder()
+                                              .setElementToPresent(element)
+                                              .setTouchableElementArea(
+                                                      ElementAreaProto.newBuilder().addTouchable(
+                                                              Rectangle.newBuilder().addElements(
+                                                                      element))))
+                         .build());
         list.add((ActionProto) ActionProto.newBuilder()
                          .setPrompt(PromptProto.newBuilder()
                                             .setMessage("Highlighted")
@@ -205,15 +204,14 @@
                                                             .setType(ChipType.HIGHLIGHTED_ACTION)
                                                             .setText("Continue"))))
                          .build());
-        list.add(
-                (ActionProto) ActionProto.newBuilder()
-                        .setFocusElement(FocusElementProto.newBuilder()
-                                                 .setElement(element)
-                                                 .setTouchableElementArea(
-                                                         ElementAreaProto.newBuilder().addTouchable(
-                                                                 Rectangle.newBuilder().addElements(
-                                                                         element))))
-                        .build());
+        list.add((ActionProto) ActionProto.newBuilder()
+                         .setShowCast(ShowCastProto.newBuilder()
+                                              .setElementToPresent(element)
+                                              .setTouchableElementArea(
+                                                      ElementAreaProto.newBuilder().addTouchable(
+                                                              Rectangle.newBuilder().addElements(
+                                                                      element))))
+                         .build());
         list.add((ActionProto) ActionProto.newBuilder()
                          .setPrompt(PromptProto.newBuilder()
                                             .setMessage("Highlighted")
@@ -273,15 +271,14 @@
                                                  .setType(ChipType.HIGHLIGHTED_ACTION)
                                                  .setText("Continue"))))
                          .build());
-        list.add(
-                (ActionProto) ActionProto.newBuilder()
-                        .setFocusElement(FocusElementProto.newBuilder()
-                                                 .setElement(element)
-                                                 .setTouchableElementArea(
-                                                         ElementAreaProto.newBuilder().addTouchable(
-                                                                 Rectangle.newBuilder().addElements(
-                                                                         element))))
-                        .build());
+        list.add((ActionProto) ActionProto.newBuilder()
+                         .setShowCast(ShowCastProto.newBuilder()
+                                              .setElementToPresent(element)
+                                              .setTouchableElementArea(
+                                                      ElementAreaProto.newBuilder().addTouchable(
+                                                              Rectangle.newBuilder().addElements(
+                                                                      element))))
+                         .build());
         list.add((ActionProto) ActionProto.newBuilder()
                          .setPrompt(PromptProto.newBuilder()
                                             .setMessage("Highlighted")
@@ -319,15 +316,14 @@
                         .build();
 
         ArrayList<ActionProto> list = new ArrayList<>();
-        list.add(
-                (ActionProto) ActionProto.newBuilder()
-                        .setFocusElement(FocusElementProto.newBuilder()
-                                                 .setElement(element)
-                                                 .setTouchableElementArea(
-                                                         ElementAreaProto.newBuilder().addTouchable(
-                                                                 Rectangle.newBuilder().addElements(
-                                                                         element))))
-                        .build());
+        list.add((ActionProto) ActionProto.newBuilder()
+                         .setShowCast(ShowCastProto.newBuilder()
+                                              .setElementToPresent(element)
+                                              .setTouchableElementArea(
+                                                      ElementAreaProto.newBuilder().addTouchable(
+                                                              Rectangle.newBuilder().addElements(
+                                                                      element))))
+                         .build());
         list.add((ActionProto) ActionProto.newBuilder()
                          .setPrompt(
                                  PromptProto.newBuilder()
diff --git a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantOverlayIntegrationTest.java b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantOverlayIntegrationTest.java
index 1f000ba..96c8519a 100644
--- a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantOverlayIntegrationTest.java
+++ b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantOverlayIntegrationTest.java
@@ -45,11 +45,11 @@
 import org.chromium.chrome.browser.autofill_assistant.proto.DrawableProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.ElementAreaProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.ElementAreaProto.Rectangle;
-import org.chromium.chrome.browser.autofill_assistant.proto.FocusElementProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.OverlayImageProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.PromptProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.PromptProto.Choice;
 import org.chromium.chrome.browser.autofill_assistant.proto.SelectorProto;
+import org.chromium.chrome.browser.autofill_assistant.proto.ShowCastProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.SupportedScriptProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.SupportedScriptProto.PresentationProto;
 import org.chromium.chrome.browser.customtabs.CustomTabActivityTestRule;
@@ -98,15 +98,14 @@
                         .build();
 
         ArrayList<ActionProto> list = new ArrayList<>();
-        list.add(
-                (ActionProto) ActionProto.newBuilder()
-                        .setFocusElement(FocusElementProto.newBuilder()
-                                                 .setElement(element)
-                                                 .setTouchableElementArea(
-                                                         ElementAreaProto.newBuilder().addTouchable(
-                                                                 Rectangle.newBuilder().addElements(
-                                                                         element))))
-                        .build());
+        list.add((ActionProto) ActionProto.newBuilder()
+                         .setShowCast(ShowCastProto.newBuilder()
+                                              .setElementToPresent(element)
+                                              .setTouchableElementArea(
+                                                      ElementAreaProto.newBuilder().addTouchable(
+                                                              Rectangle.newBuilder().addElements(
+                                                                      element))))
+                         .build());
         list.add((ActionProto) ActionProto.newBuilder()
                          .setPrompt(PromptProto.newBuilder().setMessage("Prompt").addChoices(
                                  PromptProto.Choice.newBuilder()))
@@ -147,30 +146,28 @@
                         .build();
 
         ArrayList<ActionProto> list = new ArrayList<>();
-        list.add(
-                (ActionProto) ActionProto.newBuilder()
-                        .setFocusElement(FocusElementProto.newBuilder()
-                                                 .setElement(element)
-                                                 .setTouchableElementArea(
-                                                         ElementAreaProto.newBuilder().addTouchable(
-                                                                 Rectangle.newBuilder().addElements(
-                                                                         element))))
-                        .build());
+        list.add((ActionProto) ActionProto.newBuilder()
+                         .setShowCast(ShowCastProto.newBuilder()
+                                              .setElementToPresent(element)
+                                              .setTouchableElementArea(
+                                                      ElementAreaProto.newBuilder().addTouchable(
+                                                              Rectangle.newBuilder().addElements(
+                                                                      element))))
+                         .build());
         list.add((ActionProto) ActionProto.newBuilder()
                          .setPrompt(PromptProto.newBuilder()
                                             .setMessage("First Prompt")
                                             .addChoices(PromptProto.Choice.newBuilder().setChip(
                                                     ChipProto.newBuilder().setText("Continue"))))
                          .build());
-        list.add(
-                (ActionProto) ActionProto.newBuilder()
-                        .setFocusElement(FocusElementProto.newBuilder()
-                                                 .setElement(element)
-                                                 .setTouchableElementArea(
-                                                         ElementAreaProto.newBuilder().addTouchable(
-                                                                 Rectangle.newBuilder().addElements(
-                                                                         element))))
-                        .build());
+        list.add((ActionProto) ActionProto.newBuilder()
+                         .setShowCast(ShowCastProto.newBuilder()
+                                              .setElementToPresent(element)
+                                              .setTouchableElementArea(
+                                                      ElementAreaProto.newBuilder().addTouchable(
+                                                              Rectangle.newBuilder().addElements(
+                                                                      element))))
+                         .build());
         list.add((ActionProto) ActionProto.newBuilder()
                          .setPrompt(PromptProto.newBuilder()
                                             .setMessage("Second Prompt")
@@ -214,15 +211,14 @@
                         .build();
 
         ArrayList<ActionProto> list = new ArrayList<>();
-        list.add(
-                (ActionProto) ActionProto.newBuilder()
-                        .setFocusElement(FocusElementProto.newBuilder()
-                                                 .setElement(element)
-                                                 .setTouchableElementArea(
-                                                         ElementAreaProto.newBuilder().addTouchable(
-                                                                 Rectangle.newBuilder().addElements(
-                                                                         element))))
-                        .build());
+        list.add((ActionProto) ActionProto.newBuilder()
+                         .setShowCast(ShowCastProto.newBuilder()
+                                              .setElementToPresent(element)
+                                              .setTouchableElementArea(
+                                                      ElementAreaProto.newBuilder().addTouchable(
+                                                              Rectangle.newBuilder().addElements(
+                                                                      element))))
+                         .build());
         list.add((ActionProto) ActionProto.newBuilder()
                          .setPrompt(PromptProto.newBuilder().setMessage("Prompt").addChoices(
                                  PromptProto.Choice.newBuilder()))
@@ -269,15 +265,14 @@
                         .build();
 
         ArrayList<ActionProto> list = new ArrayList<>();
-        list.add(
-                (ActionProto) ActionProto.newBuilder()
-                        .setFocusElement(FocusElementProto.newBuilder()
-                                                 .setElement(element)
-                                                 .setTouchableElementArea(
-                                                         ElementAreaProto.newBuilder().addTouchable(
-                                                                 Rectangle.newBuilder().addElements(
-                                                                         element))))
-                        .build());
+        list.add((ActionProto) ActionProto.newBuilder()
+                         .setShowCast(ShowCastProto.newBuilder()
+                                              .setElementToPresent(element)
+                                              .setTouchableElementArea(
+                                                      ElementAreaProto.newBuilder().addTouchable(
+                                                              Rectangle.newBuilder().addElements(
+                                                                      element))))
+                         .build());
         list.add((ActionProto) ActionProto.newBuilder()
                          .setPrompt(PromptProto.newBuilder().setMessage("Prompt").addChoices(
                                  PromptProto.Choice.newBuilder()))
@@ -325,15 +320,14 @@
                         .build();
 
         ArrayList<ActionProto> list = new ArrayList<>();
-        list.add(
-                (ActionProto) ActionProto.newBuilder()
-                        .setFocusElement(FocusElementProto.newBuilder()
-                                                 .setElement(element)
-                                                 .setTouchableElementArea(
-                                                         ElementAreaProto.newBuilder().addTouchable(
-                                                                 Rectangle.newBuilder().addElements(
-                                                                         element))))
-                        .build());
+        list.add((ActionProto) ActionProto.newBuilder()
+                         .setShowCast(ShowCastProto.newBuilder()
+                                              .setElementToPresent(element)
+                                              .setTouchableElementArea(
+                                                      ElementAreaProto.newBuilder().addTouchable(
+                                                              Rectangle.newBuilder().addElements(
+                                                                      element))))
+                         .build());
         list.add((ActionProto) ActionProto.newBuilder()
                          .setPrompt(PromptProto.newBuilder().setMessage("Prompt").addChoices(
                                  PromptProto.Choice.newBuilder()))
diff --git a/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/PasswordGenerationIntegrationTest.java b/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/PasswordGenerationIntegrationTest.java
index 063ca81..6c781a3 100644
--- a/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/PasswordGenerationIntegrationTest.java
+++ b/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/PasswordGenerationIntegrationTest.java
@@ -33,6 +33,7 @@
 import org.chromium.chrome.browser.infobar.InfoBarContainer;
 import org.chromium.chrome.browser.sync.SyncTestRule;
 import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
+import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
 import org.chromium.components.browser_ui.modaldialog.AppModalPresenter;
 import org.chromium.content_public.browser.test.util.CriteriaHelper;
 import org.chromium.content_public.browser.test.util.DOMUtils;
@@ -52,6 +53,10 @@
     @Rule
     public SyncTestRule mSyncTestRule = new SyncTestRule();
 
+    @Rule
+    public final ChromeTabbedActivityTestRule mActivityTestRule =
+            new ChromeTabbedActivityTestRule();
+
     private static final String PASSWORD_NODE_ID = "password_field";
     private static final String PASSWORD_NODE_ID_MANUAL = "password_field_manual";
     private static final String SUBMIT_NODE_ID = "input_submit_button";
@@ -62,7 +67,7 @@
     private static final String ELIGIBLE_FOR_GENERATION = "1";
     private static final String INFOBAR_MESSAGE = "Password saved";
 
-    private final ManualFillingTestHelper mHelper = new ManualFillingTestHelper(mSyncTestRule);
+    private final ManualFillingTestHelper mHelper = new ManualFillingTestHelper(mActivityTestRule);
 
     @Before
     public void setUp() throws InterruptedException {
@@ -191,7 +196,7 @@
     private void waitForGenerationDialog() {
         waitForModalDialogPresenter();
         ModalDialogManager manager = TestThreadUtils.runOnUiThreadBlockingNoException(
-                mSyncTestRule.getActivity()::getModalDialogManager);
+                mActivityTestRule.getActivity()::getModalDialogManager);
         Window window = ((AppModalPresenter) manager.getCurrentPresenterForTest()).getWindow();
         mHelper.waitForViewOnRoot(
                 window.getDecorView().getRootView(), withId(password_generation_dialog));
@@ -199,7 +204,7 @@
 
     private void waitForModalDialogPresenter() {
         CriteriaHelper.pollUiThread(()
-                                            -> mSyncTestRule.getActivity()
+                                            -> mActivityTestRule.getActivity()
                                                        .getModalDialogManager()
                                                        .getCurrentPresenterForTest()
                         != null);
@@ -207,8 +212,9 @@
 
     private void assertNoInfobarsAreShown() {
         TestThreadUtils.runOnUiThreadBlocking(() -> {
-            Assert.assertFalse(InfoBarContainer.from(mSyncTestRule.getActivity().getActivityTab())
-                                       .hasInfoBars());
+            Assert.assertFalse(
+                    InfoBarContainer.from(mActivityTestRule.getActivity().getActivityTab())
+                            .hasInfoBars());
         });
     }
 
diff --git a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/library/api/client/lifecycle/AppLifecycleListener.java b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/library/api/client/lifecycle/AppLifecycleListener.java
index c357f802..433f06ba 100644
--- a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/library/api/client/lifecycle/AppLifecycleListener.java
+++ b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/library/api/client/lifecycle/AppLifecycleListener.java
@@ -25,6 +25,12 @@
     /** Called to clear all data then initiate a refresh. */
     void onClearAllWithRefresh();
 
+    /** Called when user signs in. */
+    void onSignedIn();
+
+    /** Called when user signs out. */
+    void onSignedOut();
+
     /**
      * Called when the host wants the Feed to perform any heavyweight initialization it might need
      * to do. This is the only trigger for the initialization process; if it’s not called, the host
diff --git a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/library/api/client/scope/ProcessScopeBuilder.java b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/library/api/client/scope/ProcessScopeBuilder.java
index 6189d5d..59a830a 100644
--- a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/library/api/client/scope/ProcessScopeBuilder.java
+++ b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/library/api/client/scope/ProcessScopeBuilder.java
@@ -223,7 +223,7 @@
         FeedSessionManagerFactory fsmFactory = new FeedSessionManagerFactory(taskQueue, store,
                 timingUtils, threadUtils, protocolAdapter, feedRequestManager,
                 actionUploadRequestManager, schedulerApi, mConfiguration, mClock, lifecycleListener,
-                mainThreadRunner, mBasicLoggingApi);
+                mainThreadRunner, mBasicLoggingApi, actionManager);
         FeedSessionManager feedSessionManager = fsmFactory.create();
         actionManager.initialize(feedSessionManager);
         RequestManagerImpl clientRequestManager =
diff --git a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/library/common/testing/InfraIntegrationScope.java b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/library/common/testing/InfraIntegrationScope.java
index 166644d..0759b05 100644
--- a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/library/common/testing/InfraIntegrationScope.java
+++ b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/library/common/testing/InfraIntegrationScope.java
@@ -4,6 +4,8 @@
 
 package org.chromium.chrome.browser.feed.library.common.testing;
 
+import static org.mockito.Mockito.mock;
+
 import com.google.protobuf.GeneratedMessageLite.GeneratedExtension;
 
 import org.chromium.chrome.browser.feed.library.api.client.lifecycle.AppLifecycleListener;
@@ -14,6 +16,7 @@
 import org.chromium.chrome.browser.feed.library.api.host.scheduler.SchedulerApi;
 import org.chromium.chrome.browser.feed.library.api.host.storage.ContentStorageDirect;
 import org.chromium.chrome.browser.feed.library.api.host.storage.JournalStorageDirect;
+import org.chromium.chrome.browser.feed.library.api.internal.actionmanager.ActionManager;
 import org.chromium.chrome.browser.feed.library.api.internal.modelprovider.ModelProviderFactory;
 import org.chromium.chrome.browser.feed.library.api.internal.protocoladapter.ProtocolAdapter;
 import org.chromium.chrome.browser.feed.library.api.internal.scope.ClearAllListener;
@@ -106,10 +109,11 @@
         FakeActionUploadRequestManager fakeActionUploadRequestManager =
                 new FakeActionUploadRequestManager(mStore, new FakeViewActionManager(mStore),
                         FakeThreadUtils.withThreadChecks());
+        ActionManager actionManager = mock(ActionManager.class);
         mFeedSessionManager = new FeedSessionManagerFactory(mTaskQueue, mStore, timingUtils,
                 fakeThreadUtils, mFeedProtocolAdapter, mFakeFeedRequestManager,
                 fakeActionUploadRequestManager, schedulerApi, configuration, fakeClock,
-                mAppLifecycleListener, fakeMainThreadRunner, fakeBasicLoggingApi)
+                mAppLifecycleListener, fakeMainThreadRunner, fakeBasicLoggingApi, actionManager)
                                       .create();
         new ClearAllListener(
                 mTaskQueue, mFeedSessionManager, mStore, fakeThreadUtils, mAppLifecycleListener);
diff --git a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/library/feedapplifecyclelistener/FeedAppLifecycleListener.java b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/library/feedapplifecyclelistener/FeedAppLifecycleListener.java
index 25bfeb8..a9d2982 100644
--- a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/library/feedapplifecyclelistener/FeedAppLifecycleListener.java
+++ b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/library/feedapplifecyclelistener/FeedAppLifecycleListener.java
@@ -50,6 +50,18 @@
     }
 
     @Override
+    public void onSignedIn() {
+        mThreadUtils.checkMainThread();
+        dispatchLifecycleEvent(LifecycleEvent.SIGNED_IN);
+    }
+
+    @Override
+    public void onSignedOut() {
+        mThreadUtils.checkMainThread();
+        dispatchLifecycleEvent(LifecycleEvent.SIGNED_OUT);
+    }
+
+    @Override
     public void initialize() {
         mThreadUtils.checkMainThread();
         Logger.i(TAG, "initialize called");
diff --git a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/library/feedapplifecyclelistener/FeedLifecycleListener.java b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/library/feedapplifecyclelistener/FeedLifecycleListener.java
index 1801ba8..cd8032e 100644
--- a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/library/feedapplifecyclelistener/FeedLifecycleListener.java
+++ b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/library/feedapplifecyclelistener/FeedLifecycleListener.java
@@ -14,13 +14,15 @@
     /** The types of lifecycle events. */
     @StringDef({LifecycleEvent.ENTER_FOREGROUND, LifecycleEvent.ENTER_BACKGROUND,
             LifecycleEvent.CLEAR_ALL, LifecycleEvent.CLEAR_ALL_WITH_REFRESH,
-            LifecycleEvent.INITIALIZE})
+            LifecycleEvent.INITIALIZE, LifecycleEvent.SIGNED_IN, LifecycleEvent.SIGNED_OUT})
     @interface LifecycleEvent {
         String ENTER_FOREGROUND = "foreground";
         String ENTER_BACKGROUND = "background";
         String CLEAR_ALL = "clearAll";
         String CLEAR_ALL_WITH_REFRESH = "clearAllWithRefresh";
         String INITIALIZE = "initialize";
+        String SIGNED_IN = "signedIn";
+        String SIGNED_OUT = "signedOut";
     }
 
     void onLifecycleEvent(@LifecycleEvent String event);
diff --git a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/library/feedsessionmanager/FeedSessionManagerFactory.java b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/library/feedsessionmanager/FeedSessionManagerFactory.java
index afcf2a4c..9f801c0 100644
--- a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/library/feedsessionmanager/FeedSessionManagerFactory.java
+++ b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/library/feedsessionmanager/FeedSessionManagerFactory.java
@@ -8,6 +8,7 @@
 import org.chromium.chrome.browser.feed.library.api.host.config.Configuration.ConfigKey;
 import org.chromium.chrome.browser.feed.library.api.host.logging.BasicLoggingApi;
 import org.chromium.chrome.browser.feed.library.api.host.scheduler.SchedulerApi;
+import org.chromium.chrome.browser.feed.library.api.internal.actionmanager.ActionManager;
 import org.chromium.chrome.browser.feed.library.api.internal.common.ThreadUtils;
 import org.chromium.chrome.browser.feed.library.api.internal.protocoladapter.ProtocolAdapter;
 import org.chromium.chrome.browser.feed.library.api.internal.requestmanager.ActionUploadRequestManager;
@@ -48,6 +49,7 @@
     private final FeedObservable<FeedLifecycleListener> mLifecycleListenerObservable;
     private final MainThreadRunner mMainThreadRunner;
     private final BasicLoggingApi mBasicLoggingApi;
+    private final ActionManager mActionManager;
 
     public FeedSessionManagerFactory(TaskQueue taskQueue, Store store, TimingUtils timingUtils,
             ThreadUtils threadUtils, ProtocolAdapter protocolAdapter,
@@ -55,7 +57,8 @@
             ActionUploadRequestManager actionUploadRequestManager, SchedulerApi schedulerApi,
             Configuration configuration, Clock clock,
             FeedObservable<FeedLifecycleListener> lifecycleListenerObservable,
-            MainThreadRunner mainThreadRunner, BasicLoggingApi basicLoggingApi) {
+            MainThreadRunner mainThreadRunner, BasicLoggingApi basicLoggingApi,
+            ActionManager actionManager) {
         this.mTaskQueue = taskQueue;
         this.mStore = store;
         this.mTimingUtils = timingUtils;
@@ -69,6 +72,7 @@
         this.mLifecycleListenerObservable = lifecycleListenerObservable;
         this.mMainThreadRunner = mainThreadRunner;
         this.mBasicLoggingApi = basicLoggingApi;
+        this.mActionManager = actionManager;
     }
 
     /** Creates a new FeedSessionManager and initializes it */
@@ -88,6 +92,6 @@
                 sessionManagerMutation, contentCache, mStore, mTimingUtils, mThreadUtils,
                 mProtocolAdapter, mFeedRequestManager, mActionUploadRequestManager, mSchedulerApi,
                 mConfiguration, mClock, mLifecycleListenerObservable, mMainThreadRunner,
-                mBasicLoggingApi);
+                mBasicLoggingApi, mActionManager);
     }
 }
diff --git a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/library/feedsessionmanager/FeedSessionManagerImpl.java b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/library/feedsessionmanager/FeedSessionManagerImpl.java
index cb2d12d..3817de6 100644
--- a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/library/feedsessionmanager/FeedSessionManagerImpl.java
+++ b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/library/feedsessionmanager/FeedSessionManagerImpl.java
@@ -21,6 +21,7 @@
 import org.chromium.chrome.browser.feed.library.api.host.scheduler.SchedulerApi;
 import org.chromium.chrome.browser.feed.library.api.host.scheduler.SchedulerApi.RequestBehavior;
 import org.chromium.chrome.browser.feed.library.api.host.scheduler.SchedulerApi.SessionState;
+import org.chromium.chrome.browser.feed.library.api.internal.actionmanager.ActionManager;
 import org.chromium.chrome.browser.feed.library.api.internal.common.Model;
 import org.chromium.chrome.browser.feed.library.api.internal.common.PayloadWithId;
 import org.chromium.chrome.browser.feed.library.api.internal.common.ThreadUtils;
@@ -60,6 +61,9 @@
 import org.chromium.chrome.browser.feed.library.feedsessionmanager.internal.SessionCache;
 import org.chromium.chrome.browser.feed.library.feedsessionmanager.internal.SessionFactory;
 import org.chromium.chrome.browser.feed.library.feedsessionmanager.internal.SessionManagerMutation;
+import org.chromium.chrome.browser.flags.ChromeFeatureList;
+import org.chromium.chrome.browser.preferences.Pref;
+import org.chromium.chrome.browser.profiles.Profile;
 import org.chromium.components.feed.core.proto.libraries.api.internal.StreamDataProto.StreamDataOperation;
 import org.chromium.components.feed.core.proto.libraries.api.internal.StreamDataProto.StreamPayload;
 import org.chromium.components.feed.core.proto.libraries.api.internal.StreamDataProto.StreamSharedState;
@@ -71,6 +75,7 @@
 import org.chromium.components.feed.core.proto.wire.ConsistencyTokenProto.ConsistencyToken;
 import org.chromium.components.feed.core.proto.wire.ContentIdProto.ContentId;
 import org.chromium.components.feed.core.proto.wire.PietSharedStateItemProto.PietSharedStateItem;
+import org.chromium.components.user_prefs.UserPrefs;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -136,6 +141,7 @@
     private final Configuration mConfiguration;
     private final MainThreadRunner mMainThreadRunner;
     private final BasicLoggingApi mBasicLoggingApi;
+    private final ActionManager mActionManager;
     private final long mSessionPopulationTimeoutMs;
     private final boolean mUploadingActionsEnabled;
 
@@ -157,7 +163,8 @@
             ActionUploadRequestManager actionUploadRequestManager, SchedulerApi schedulerApi,
             Configuration configuration, Clock clock,
             FeedObservable<FeedLifecycleListener> lifecycleListenerObservable,
-            MainThreadRunner mainThreadRunner, BasicLoggingApi basicLoggingApi) {
+            MainThreadRunner mainThreadRunner, BasicLoggingApi basicLoggingApi,
+            ActionManager actionManager) {
         this.mTaskQueue = taskQueue;
         this.mSessionFactory = sessionFactory;
         this.mSessionCache = sessionCache;
@@ -175,6 +182,7 @@
         this.mConfiguration = configuration;
         this.mMainThreadRunner = mainThreadRunner;
         this.mBasicLoggingApi = basicLoggingApi;
+        this.mActionManager = actionManager;
         mUploadingActionsEnabled =
                 configuration.getValueOrDefault(ConfigKey.UNDOABLE_ACTIONS_ENABLED, false);
         mSessionPopulationTimeoutMs =
@@ -793,10 +801,32 @@
                         mOutstandingMutations.size());
                 mOutstandingMutations.clear();
                 break;
+            case LifecycleEvent.ENTER_FOREGROUND:
+                mActionManager.setCanUploadClicksAndViewsWhenNoticeCardIsPresent(canUpload());
+                break;
+            case LifecycleEvent.ENTER_BACKGROUND:
+                mActionManager.setCanUploadClicksAndViewsWhenNoticeCardIsPresent(canUpload());
+                break;
+            case LifecycleEvent.SIGNED_IN:
+                mActionManager.setCanUploadClicksAndViewsWhenNoticeCardIsPresent(canUpload());
+                break;
+            case LifecycleEvent.SIGNED_OUT:
+                mActionManager.setCanUploadClicksAndViewsWhenNoticeCardIsPresent(canUpload());
+                break;
             default:
                 // Do nothing
         }
     }
+
+    private boolean canUpload() {
+        if (ChromeFeatureList.isEnabled(
+                    ChromeFeatureList.INTEREST_FEEDV1_CLICKS_AND_VIEWS_CONDITIONAL_UPLOAD)) {
+            return UserPrefs.get(Profile.getLastUsedRegularProfile())
+                    .getBoolean(Pref.HAS_REACHED_CLICK_AND_VIEW_ACTIONS_UPLOAD_CONDITIONS);
+        }
+        return true;
+    }
+
     // TODO: implement longer term fix for reading/saving the consistency token
     @Override
     public void triggerUploadActions(Set<StreamUploadableAction> actions) {
diff --git a/chrome/android/feed/core/javatests/src/org/chromium/chrome/browser/feed/library/feedapplifecyclelistener/FeedAppLifecycleListenerTest.java b/chrome/android/feed/core/javatests/src/org/chromium/chrome/browser/feed/library/feedapplifecyclelistener/FeedAppLifecycleListenerTest.java
index d105b92..9cc8ba3 100644
--- a/chrome/android/feed/core/javatests/src/org/chromium/chrome/browser/feed/library/feedapplifecyclelistener/FeedAppLifecycleListenerTest.java
+++ b/chrome/android/feed/core/javatests/src/org/chromium/chrome/browser/feed/library/feedapplifecyclelistener/FeedAppLifecycleListenerTest.java
@@ -59,6 +59,18 @@
     }
 
     @Test
+    public void onSignedIn() {
+        mAppLifecycleListener.onSignedIn();
+        verify(mLifecycleListener).onLifecycleEvent(LifecycleEvent.SIGNED_IN);
+    }
+
+    @Test
+    public void onSignedOut() {
+        mAppLifecycleListener.onSignedOut();
+        verify(mLifecycleListener).onLifecycleEvent(LifecycleEvent.SIGNED_OUT);
+    }
+
+    @Test
     public void onInitialize() {
         mAppLifecycleListener.initialize();
         verify(mLifecycleListener).onLifecycleEvent(LifecycleEvent.INITIALIZE);
diff --git a/chrome/android/feed/core/javatests/src/org/chromium/chrome/browser/feed/library/feedsessionmanager/FeedSessionManagerImplTest.java b/chrome/android/feed/core/javatests/src/org/chromium/chrome/browser/feed/library/feedsessionmanager/FeedSessionManagerImplTest.java
index 14403c94..6e2c16d 100644
--- a/chrome/android/feed/core/javatests/src/org/chromium/chrome/browser/feed/library/feedsessionmanager/FeedSessionManagerImplTest.java
+++ b/chrome/android/feed/core/javatests/src/org/chromium/chrome/browser/feed/library/feedsessionmanager/FeedSessionManagerImplTest.java
@@ -8,6 +8,7 @@
 
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 import static org.mockito.MockitoAnnotations.initMocks;
@@ -19,7 +20,9 @@
 import com.google.protobuf.ByteString;
 
 import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
+import org.junit.rules.TestRule;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
 import org.robolectric.ParameterizedRobolectricTestRunner;
@@ -28,6 +31,7 @@
 import org.robolectric.annotation.Config;
 
 import org.chromium.base.Consumer;
+import org.chromium.base.test.util.JniMocker;
 import org.chromium.chrome.browser.feed.library.api.common.MutationContext;
 import org.chromium.chrome.browser.feed.library.api.host.config.Configuration;
 import org.chromium.chrome.browser.feed.library.api.host.config.Configuration.ConfigKey;
@@ -36,6 +40,7 @@
 import org.chromium.chrome.browser.feed.library.api.host.scheduler.SchedulerApi;
 import org.chromium.chrome.browser.feed.library.api.host.scheduler.SchedulerApi.RequestBehavior;
 import org.chromium.chrome.browser.feed.library.api.host.scheduler.SchedulerApi.SessionState;
+import org.chromium.chrome.browser.feed.library.api.internal.actionmanager.ActionManager;
 import org.chromium.chrome.browser.feed.library.api.internal.common.Model;
 import org.chromium.chrome.browser.feed.library.api.internal.common.SemanticPropertiesWithId;
 import org.chromium.chrome.browser.feed.library.api.internal.common.testing.ContentIdGenerators;
@@ -68,6 +73,10 @@
 import org.chromium.chrome.browser.feed.library.testing.requestmanager.FakeActionUploadRequestManager;
 import org.chromium.chrome.browser.feed.library.testing.requestmanager.FakeFeedRequestManager;
 import org.chromium.chrome.browser.feed.library.testing.store.FakeStore;
+import org.chromium.chrome.browser.flags.ChromeFeatureList;
+import org.chromium.chrome.browser.preferences.Pref;
+import org.chromium.chrome.browser.profiles.Profile;
+import org.chromium.chrome.test.util.browser.Features;
 import org.chromium.components.feed.core.proto.libraries.api.internal.StreamDataProto.StreamDataOperation;
 import org.chromium.components.feed.core.proto.libraries.api.internal.StreamDataProto.StreamPayload;
 import org.chromium.components.feed.core.proto.libraries.api.internal.StreamDataProto.StreamSharedState;
@@ -84,6 +93,9 @@
 import org.chromium.components.feed.core.proto.wire.ContentIdProto.ContentId;
 import org.chromium.components.feed.core.proto.wire.PietSharedStateItemProto.PietSharedStateItem;
 import org.chromium.components.feed.core.proto.wire.ResponseProto.Response;
+import org.chromium.components.prefs.PrefService;
+import org.chromium.components.user_prefs.UserPrefs;
+import org.chromium.components.user_prefs.UserPrefsJni;
 import org.chromium.testing.local.LocalRobolectricTestRunner;
 
 import java.nio.charset.Charset;
@@ -119,8 +131,23 @@
     private FakeTaskQueue mFakeTaskQueue;
     private FakeThreadUtils mFakeThreadUtils;
     private FeedAppLifecycleListener mAppLifecycleListener;
+
+    @Rule
+    public TestRule mFeaturesProcessorRule = new Features.JUnitProcessor();
+
+    @Rule
+    public JniMocker mocker = new JniMocker();
+
     @Mock
     private SchedulerApi mSchedulerApi;
+    @Mock
+    private UserPrefs.Natives mUserPrefsJniMock;
+    @Mock
+    private Profile mProfile;
+    @Mock
+    private PrefService mPrefService;
+    @Mock
+    private ActionManager mActionManager;
 
     @Parameters
     public static List<Object[]> data() {
@@ -133,6 +160,11 @@
     @Before
     public void setUp() {
         initMocks(this);
+
+        mocker.mock(UserPrefsJni.TEST_HOOKS, mUserPrefsJniMock);
+        Profile.setLastUsedProfileForTesting(mProfile);
+        when(mUserPrefsJniMock.get(mProfile)).thenReturn(mPrefService);
+
         mConfiguration = new Configuration.Builder()
                                  .put(ConfigKey.UNDOABLE_ACTIONS_ENABLED, mUploadingActionsEnabled)
                                  .put(ConfigKey.STORAGE_MISS_THRESHOLD, STORAGE_MISS_THRESHOLD)
@@ -742,6 +774,38 @@
         verify(modelProviderObserver).onSessionStart(uiContext);
     }
 
+    @Test
+    @Features.EnableFeatures(ChromeFeatureList.INTEREST_FEEDV1_CLICKS_AND_VIEWS_CONDITIONAL_UPLOAD)
+    public void testLifecycleEventsWhenConditionalUploadFeatureEnabled() {
+        when(mPrefService.getBoolean(Pref.HAS_REACHED_CLICK_AND_VIEW_ACTIONS_UPLOAD_CONDITIONS))
+                .thenReturn(false);
+
+        FeedSessionManagerImpl sessionManager = createFeedSessionManager(mConfiguration);
+
+        sessionManager.onLifecycleEvent(LifecycleEvent.ENTER_FOREGROUND);
+        sessionManager.onLifecycleEvent(LifecycleEvent.ENTER_BACKGROUND);
+        sessionManager.onLifecycleEvent(LifecycleEvent.SIGNED_IN);
+        sessionManager.onLifecycleEvent(LifecycleEvent.SIGNED_OUT);
+
+        verify(mActionManager, times(4)).setCanUploadClicksAndViewsWhenNoticeCardIsPresent(false);
+    }
+
+    @Test
+    @Features.DisableFeatures(ChromeFeatureList.INTEREST_FEEDV1_CLICKS_AND_VIEWS_CONDITIONAL_UPLOAD)
+    public void testLifecycleEventsWhenConditionalUploadFeatureDisabled() {
+        when(mPrefService.getBoolean(Pref.HAS_REACHED_CLICK_AND_VIEW_ACTIONS_UPLOAD_CONDITIONS))
+                .thenReturn(false);
+
+        FeedSessionManagerImpl sessionManager = createFeedSessionManager(mConfiguration);
+
+        sessionManager.onLifecycleEvent(LifecycleEvent.ENTER_FOREGROUND);
+        sessionManager.onLifecycleEvent(LifecycleEvent.ENTER_BACKGROUND);
+        sessionManager.onLifecycleEvent(LifecycleEvent.SIGNED_IN);
+        sessionManager.onLifecycleEvent(LifecycleEvent.SIGNED_OUT);
+
+        verify(mActionManager, times(4)).setCanUploadClicksAndViewsWhenNoticeCardIsPresent(true);
+    }
+
     private int populateSession(FeedSessionManagerImpl sessionManager, int featureCnt, int idStart,
             boolean reset,
             /*@Nullable*/ String sharedStateId) {
@@ -806,7 +870,7 @@
         return new FeedSessionManagerFactory(mFakeTaskQueue, mFakeStore, mTimingUtils,
                 mFakeThreadUtils, mFakeProtocolAdapter, mFakeRequestManager,
                 mFakeActionUploadRequestManager, mSchedulerApi, configuration, mFakeClock,
-                mAppLifecycleListener, mFakeMainThreadRunner, mFakeBasicLoggingApi)
+                mAppLifecycleListener, mFakeMainThreadRunner, mFakeBasicLoggingApi, mActionManager)
                 .create();
     }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
index c359cb83..84944e9 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
@@ -64,6 +64,7 @@
 import org.chromium.chrome.browser.compositor.layouts.LayoutManagerChrome;
 import org.chromium.chrome.browser.compositor.layouts.LayoutManagerChromePhone;
 import org.chromium.chrome.browser.compositor.layouts.LayoutManagerChromeTablet;
+import org.chromium.chrome.browser.compositor.layouts.LayoutStateProvider;
 import org.chromium.chrome.browser.compositor.layouts.OverviewModeBehavior;
 import org.chromium.chrome.browser.compositor.layouts.OverviewModeController;
 import org.chromium.chrome.browser.compositor.layouts.phone.StackLayout;
@@ -286,6 +287,9 @@
 
     private NextTabPolicySupplier mNextTabPolicySupplier;
 
+    private final OneshotSupplierImpl<LayoutStateProvider> mLayoutStateProviderOneshotSupplier =
+            new OneshotSupplierImpl<>();
+    // TODO(crbug.com/1108496): Removed after all usages has been migrated to LayoutStateProvider.
     private final OneshotSupplierImpl<OverviewModeBehavior> mOverviewModeBehaviorSupplier =
             new OneshotSupplierImpl<>();
     private OverviewModeController mOverviewModeController;
@@ -565,7 +569,7 @@
             }
             mLayoutManager = new LayoutManagerChromePhone(compositorViewHolder, mContentContainer,
                     mStartSurfaceSupplier.get(), getTabContentManagerSupplier(),
-                    mOverviewModeBehaviorSupplier);
+                    mOverviewModeBehaviorSupplier, mLayoutStateProviderOneshotSupplier);
             mOverviewModeController = mLayoutManager;
         }
     }
@@ -575,9 +579,9 @@
 
         try (TraceEvent e = TraceEvent.scoped(
                      "ChromeTabbedActivity.setupCompositorContentPreNativeForTablet")) {
-            mLayoutManager =
-                    new LayoutManagerChromeTablet(getCompositorViewHolder(), mContentContainer,
-                            getTabContentManagerSupplier(), mOverviewModeBehaviorSupplier);
+            mLayoutManager = new LayoutManagerChromeTablet(getCompositorViewHolder(),
+                    mContentContainer, getTabContentManagerSupplier(),
+                    mOverviewModeBehaviorSupplier, mLayoutStateProviderOneshotSupplier);
             mOverviewModeController = mLayoutManager;
         }
     }
@@ -615,7 +619,7 @@
                 }
 
                 Layout activeLayout = mLayoutManager.getActiveLayout();
-                if (activeLayout instanceof StackLayout && !activeLayout.isHiding()) {
+                if (activeLayout instanceof StackLayout && !activeLayout.isStartingToHide()) {
                     RecordUserAction.record("MobileToolbarStackViewButtonInStackView");
                 } else if (!isInOverviewMode()) {
                     RecordUserAction.record("MobileToolbarStackViewButtonInBrowsingView");
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/Layout.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/Layout.java
index 504b63c..361325cc 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/Layout.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/Layout.java
@@ -114,7 +114,10 @@
     protected LayoutTab[] mLayoutTabs;
 
     // True means that the layout is going to hide as soon as the animation finishes.
-    private boolean mIsHiding;
+    private boolean mIsStartingToHide;
+
+    // True means that the layout is going to show as soon as the animation finishes.
+    private boolean mIsStartingToShow;
 
     // The next id to show when the layout is hidden, or TabBase#INVALID_TAB_ID if no change.
     protected int mNextTabId = Tab.INVALID_TAB_ID;
@@ -416,15 +419,22 @@
      */
     public void startHiding(int nextTabId, boolean hintAtTabSelection) {
         mUpdateHost.startHiding(nextTabId, hintAtTabSelection);
-        mIsHiding = true;
+        mIsStartingToHide = true;
         mNextTabId = nextTabId;
     }
 
     /**
      * @return True is the layout is in the process of hiding itself.
      */
-    public boolean isHiding() {
-        return mIsHiding;
+    public boolean isStartingToHide() {
+        return mIsStartingToHide;
+    }
+
+    /**
+     * @return True is the layout is in the process of showing itself.
+     */
+    public boolean isStartingToShow() {
+        return mIsStartingToShow;
     }
 
     /**
@@ -438,6 +448,7 @@
      * To be called when the transition into the layout is done.
      */
     public void doneShowing() {
+        mIsStartingToShow = false;
         mUpdateHost.doneShowing();
     }
 
@@ -446,7 +457,7 @@
      * This is currently called by the renderer when all the animation are done while hiding.
      */
     public void doneHiding() {
-        mIsHiding = false;
+        mIsStartingToHide = false;
         if (mNextTabId != Tab.INVALID_TAB_ID) {
             TabModel model = mTabModelSelector.getModelForTabId(mNextTabId);
             if (model != null) {
@@ -477,7 +488,9 @@
      * @param animate Whether to play an entry animation.
      */
     public void show(long time, boolean animate) {
-        mIsHiding = false;
+        // TODO(crbug.com/1108496): Remove after LayoutManager explicitly hide the old layout.
+        mIsStartingToHide = false;
+        mIsStartingToShow = true;
         mNextTabId = Tab.INVALID_TAB_ID;
     }
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManager.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManager.java
index 85731fee..a1770db 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManager.java
@@ -20,6 +20,7 @@
 import org.chromium.base.TraceEvent;
 import org.chromium.base.supplier.ObservableSupplier;
 import org.chromium.base.supplier.ObservableSupplierImpl;
+import org.chromium.base.supplier.OneshotSupplierImpl;
 import org.chromium.chrome.browser.browser_controls.BrowserControlsStateProvider;
 import org.chromium.chrome.browser.browser_controls.BrowserControlsUtils;
 import org.chromium.chrome.browser.browser_controls.BrowserControlsVisibilityManager;
@@ -80,7 +81,7 @@
  * includes lifecycle managment like showing/hiding this {@link Layout}.
  */
 public class LayoutManager implements LayoutUpdateHost, LayoutProvider,
-                                      TabModelSelector.CloseAllTabsDelegate {
+                                      TabModelSelector.CloseAllTabsDelegate, LayoutStateProvider {
     /** Sampling at 60 fps. */
     private static final long FRAME_DELTA_TIME_MS = 16;
 
@@ -118,6 +119,9 @@
     private TabModelObserver mTabModelFilterObserver;
 
     // External Observers
+    private final ObserverList<LayoutStateObserver> mLayoutObservers = new ObserverList<>();
+    // TODO(crbug.com/1108496): Remove after all SceneChangeObserver migrates to
+    // LayoutStateObserver.
     private final ObserverList<SceneChangeObserver> mSceneChangeObservers = new ObserverList<>();
 
     // Current Layout State
@@ -165,6 +169,9 @@
     /** A map of {@link SceneOverlay} to its position relative to the others. */
     private Map<Class, Integer> mOverlayOrderMap = new HashMap<>();
 
+    /** The supplier used to supply the LayoutStateProvider. */
+    private final OneshotSupplierImpl<LayoutStateProvider> mLayoutStateProviderOneshotSupplier;
+
     /**
      * Protected class to handle {@link TabModelObserver} related tasks. Extending classes will
      * need to override any related calls to add new functionality */
@@ -241,14 +248,18 @@
      * @param host A {@link LayoutManagerHost} instance.
      * @param contentContainer A {@link ViewGroup} for Android views to be bound to.
      * @param tabContentManagerSupplier Supplier of the {@link TabContentManager} instance.
+     * @param layoutStateProviderOneshotSupplier Supplier used to supply the {@link
+     *         LayoutStateProvider}.
      */
     public LayoutManager(LayoutManagerHost host, ViewGroup contentContainer,
-            ObservableSupplier<TabContentManager> tabContentManagerSupplier) {
+            ObservableSupplier<TabContentManager> tabContentManagerSupplier,
+            OneshotSupplierImpl<LayoutStateProvider> layoutStateProviderOneshotSupplier) {
         mHost = host;
         mPxToDp = 1.f / mHost.getContext().getResources().getDisplayMetrics().density;
         mAndroidViewShownSupplier = new ObservableSupplierImpl<>();
         mAndroidViewShownSupplier.set(true);
         mTabContentManagerSupplier = tabContentManagerSupplier;
+        mLayoutStateProviderOneshotSupplier = layoutStateProviderOneshotSupplier;
 
         mContext = host.getContext();
         LayoutRenderHost renderHost = host.getLayoutRenderHost();
@@ -262,7 +273,7 @@
                 StripLayoutHelperManager.class,
                 StatusIndicatorCoordinator.getSceneOverlayClass(),
                 ContextualSearchPanel.class};
-        // clang-format off
+        // clang-format on
 
         for (int i = 0; i < overlayOrder.length; i++) mOverlayOrderMap.put(overlayOrder[i], i);
 
@@ -274,6 +285,8 @@
         mOverlayPanelManager = new OverlayPanelManager();
 
         mFrameRequestSupplier = new CompositorModelChangeProcessor.FrameRequestSupplier(this);
+
+        mLayoutStateProviderOneshotSupplier.set(this);
     }
 
     /**
@@ -418,9 +431,16 @@
         //  system.
         final Layout layout = getActiveLayout();
 
-        if (layout != null && layout.onUpdate(timeMs, dtMs) && layout.isHiding()
-                && areAnimatorsComplete) {
-            layout.doneHiding();
+        // TODO(crbug.com/1070281): Layout itself should decide when it's done hiding and done
+        //  showing.
+        if (layout != null && layout.onUpdate(timeMs, dtMs) && areAnimatorsComplete) {
+            if (layout.isStartingToHide()) {
+                layout.doneHiding();
+            } else if (layout.isStartingToShow()) {
+                // TODO(crbug.com/1108496): Call layout.doneShowing() here after all Layout have
+                //  been consolidated into the new Layout System to avoid Layout tests become flaky,
+                //  especially the StartSurfaceLayoutTest.
+            }
         }
 
         // TODO(1100332): Once overlays are MVC, this should no longer be needed.
@@ -883,10 +903,18 @@
     public void startHiding(int nextTabId, boolean hintAtTabSelection) {
         requestUpdate();
         if (hintAtTabSelection) {
+            notifyObserversOnTabSelectionHinted(nextTabId);
+
+            // TODO(crbug.com/1108496): Remove after migrates to LayoutStateObserver.
             for (SceneChangeObserver observer : mSceneChangeObservers) {
                 observer.onTabSelectionHinted(nextTabId);
             }
         }
+
+        Layout layoutBeingHidden = getActiveLayout();
+        notifyObserversLayoutStartedHiding(layoutBeingHidden.getLayoutType(),
+                shouldShowToolbarAnimationOnHide(layoutBeingHidden, nextTabId),
+                shouldDelayHideAnimation(layoutBeingHidden));
     }
 
     @Override
@@ -894,11 +922,19 @@
         // TODO: If next layout is default layout clear caches (should this be a sub layout thing?)
 
         assert mNextActiveLayout != null : "Need to have a next active layout.";
-        if (mNextActiveLayout != null) startShowing(mNextActiveLayout, true);
+        if (mNextActiveLayout != null) {
+            // Notify LayoutObservers the active layout is finished hiding.
+            notifyObserversLayoutFinishedHiding(getActiveLayout().getLayoutType());
+
+            startShowing(mNextActiveLayout, true);
+        }
     }
 
     @Override
-    public void doneShowing() {}
+    public void doneShowing() {
+        // Notify LayoutObservers the active layout is finished showing.
+        notifyObserversLayoutFinishedShowing(getActiveLayout().getLayoutType());
+    }
 
     /**
      * Should be called by control logic to show a new {@link Layout}.
@@ -920,6 +956,8 @@
             if (oldLayout != null) {
                 oldLayout.forceAnimationToFinish();
                 oldLayout.detachViews();
+
+                // TODO(crbug.com/1108496): hide oldLayout if it's not hidden.
             }
             layout.contextChanged(mHost.getContext());
             layout.attachViews(mContentContainer);
@@ -949,10 +987,14 @@
                 getActiveLayout().canHostBeFocusable());
         mHost.requestRender();
 
+        // TODO(crbug.com/1108496): Remove after migrates to LayoutStateObserver#onStartedShowing.
         // Notify observers about the new scene.
         for (SceneChangeObserver observer : mSceneChangeObservers) {
             observer.onSceneChange(getActiveLayout());
         }
+
+        notifyObserversLayoutStartedShowing(
+                layout.getLayoutType(), shouldShowToolbarAnimationOnShow(animate));
     }
 
     /**
@@ -1068,4 +1110,74 @@
     protected void switchToTab(Tab tab, int lastTabId) {
         tabSelected(tab.getId(), lastTabId, tab.isIncognito());
     }
+
+    // LayoutStateProvider implementation.
+    @Override
+    public boolean isLayoutVisible(int layoutType) {
+        return getActiveLayout().getLayoutType() == layoutType;
+    }
+
+    @Override
+    public void addObserver(LayoutStateObserver listener) {
+        mLayoutObservers.addObserver(listener);
+    }
+
+    @Override
+    public void removeObserver(LayoutStateObserver listener) {
+        mLayoutObservers.removeObserver(listener);
+    }
+
+    protected final void notifyObserversLayoutStartedShowing(
+            @Layout.LayoutType int layoutType, boolean showToolbar) {
+        mLayoutStateProviderOneshotSupplier.onAvailable((unused) -> {
+            for (LayoutStateObserver observer : mLayoutObservers) {
+                observer.onStartedShowing(layoutType, showToolbar);
+            }
+        });
+    }
+
+    protected final void notifyObserversLayoutFinishedShowing(@Layout.LayoutType int layoutType) {
+        mLayoutStateProviderOneshotSupplier.onAvailable((unused) -> {
+            for (LayoutStateObserver observer : mLayoutObservers) {
+                observer.onFinishedShowing(layoutType);
+            }
+        });
+    }
+
+    protected final void notifyObserversLayoutStartedHiding(
+            @Layout.LayoutType int layoutType, boolean showToolbar, boolean delayAnimation) {
+        mLayoutStateProviderOneshotSupplier.onAvailable((unused) -> {
+            for (LayoutStateObserver observer : mLayoutObservers) {
+                observer.onStartedHiding(layoutType, showToolbar, delayAnimation);
+            }
+        });
+    }
+
+    protected final void notifyObserversLayoutFinishedHiding(@Layout.LayoutType int layoutType) {
+        mLayoutStateProviderOneshotSupplier.onAvailable((unused) -> {
+            for (LayoutStateObserver observer : mLayoutObservers) {
+                observer.onFinishedHiding(layoutType);
+            }
+        });
+    }
+
+    protected final void notifyObserversOnTabSelectionHinted(int tabId) {
+        mLayoutStateProviderOneshotSupplier.onAvailable((unused) -> {
+            for (LayoutStateObserver observer : mLayoutObservers) {
+                observer.onTabSelectionHinted(tabId);
+            }
+        });
+    }
+
+    protected boolean shouldShowToolbarAnimationOnShow(boolean isAnimate) {
+        return false;
+    }
+
+    protected boolean shouldShowToolbarAnimationOnHide(Layout layoutBeingHidden, int nextTabId) {
+        return false;
+    }
+
+    protected boolean shouldDelayHideAnimation(Layout layoutBeingHidden) {
+        return false;
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerChrome.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerChrome.java
index 8238e9b..305773d4 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerChrome.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerChrome.java
@@ -88,8 +88,10 @@
     public LayoutManagerChrome(LayoutManagerHost host, ViewGroup contentContainer,
             boolean createOverviewLayout, @Nullable StartSurface startSurface,
             ObservableSupplier<TabContentManager> tabContentManagerSupplier,
-            OneshotSupplierImpl<OverviewModeBehavior> overviewModeBehaviorSupplier) {
-        super(host, contentContainer, tabContentManagerSupplier);
+            OneshotSupplierImpl<OverviewModeBehavior> overviewModeBehaviorSupplier,
+            OneshotSupplierImpl<LayoutStateProvider> layoutStateProviderOneshotSupplier) {
+        super(host, contentContainer, tabContentManagerSupplier,
+                layoutStateProviderOneshotSupplier);
         Context context = host.getContext();
         LayoutRenderHost renderHost = host.getLayoutRenderHost();
 
@@ -259,6 +261,7 @@
 
         Layout layoutBeingShown = getActiveLayout();
 
+        // TODO(crbug.com/1108496): Remove after migrates to LayoutStateObserver.
         // Check if we should notify OverviewModeObservers.
         if (isOverviewLayout(layoutBeingShown)) {
             boolean showToolbar = animate && (!mEnableAnimations
@@ -271,6 +274,7 @@
     public void startHiding(int nextTabId, boolean hintAtTabSelection) {
         super.startHiding(nextTabId, hintAtTabSelection);
 
+        // TODO(crbug.com/1108496): Remove after migrates to LayoutStateObserver.
         Layout layoutBeingHidden = getActiveLayout();
         if (isOverviewLayout(layoutBeingHidden)) {
             boolean showToolbar = true;
@@ -289,6 +293,7 @@
     public void doneShowing() {
         super.doneShowing();
 
+        // TODO(crbug.com/1108496): Remove after migrates to LayoutStateObserver.
         if (isOverviewLayout(getActiveLayout())) {
             notifyObserversFinishedShowing();
         }
@@ -305,12 +310,34 @@
 
         super.doneHiding();
 
+        // TODO(crbug.com/1108496): Remove after migrates to Observer.
         if (isOverviewLayout(layoutBeingHidden)) {
             notifyObserversFinishedHiding();
         }
     }
 
     @Override
+    protected boolean shouldDelayHideAnimation(Layout layoutBeingHidden) {
+        return mEnableAnimations && layoutBeingHidden == mOverviewLayout && mCreatingNtp;
+    }
+
+    @Override
+    protected boolean shouldShowToolbarAnimationOnShow(boolean isAnimate) {
+        return isAnimate
+                && (!mEnableAnimations || getTabModelSelector().getCurrentModel().getCount() <= 0);
+    }
+
+    @Override
+    protected boolean shouldShowToolbarAnimationOnHide(Layout layoutBeingHidden, int nextTabId) {
+        boolean showAnimation = true;
+        if (mEnableAnimations && layoutBeingHidden == mOverviewLayout) {
+            final LayoutTab tab = layoutBeingHidden.getLayoutTab(nextTabId);
+            showAnimation = tab == null || !tab.showToolbar();
+        }
+        return showAnimation;
+    }
+
+    @Override
     protected void tabCreated(int id, int sourceId, @TabLaunchType int launchType,
             boolean incognito, boolean willBeSelected, float originX, float originY) {
         Tab newTab = TabModelUtils.getTabById(getTabModelSelector().getModel(incognito), id);
@@ -394,7 +421,7 @@
     @Override
     public void hideOverview(boolean animate) {
         Layout activeLayout = getActiveLayout();
-        if (activeLayout != null && !activeLayout.isHiding()) {
+        if (activeLayout != null && !activeLayout.isStartingToHide()) {
             if (animate) {
                 activeLayout.onTabSelecting(time(), Tab.INVALID_TAB_ID);
             } else {
@@ -423,7 +450,7 @@
     @Override
     public boolean overviewVisible() {
         Layout activeLayout = getActiveLayout();
-        return isOverviewLayout(activeLayout) && !activeLayout.isHiding();
+        return isOverviewLayout(activeLayout) && !activeLayout.isStartingToHide();
     }
 
     @Override
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerChromePhone.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerChromePhone.java
index 43f9d355..7dbb7eb7 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerChromePhone.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerChromePhone.java
@@ -41,9 +41,10 @@
     public LayoutManagerChromePhone(LayoutManagerHost host, ViewGroup contentContainer,
             StartSurface startSurface,
             ObservableSupplier<TabContentManager> tabContentManagerSupplier,
-            OneshotSupplierImpl<OverviewModeBehavior> overviewModeBehaviorSupplier) {
+            OneshotSupplierImpl<OverviewModeBehavior> overviewModeBehaviorSupplier,
+            OneshotSupplierImpl<LayoutStateProvider> layoutStateProviderOneshotSupplier) {
         super(host, contentContainer, true, startSurface, tabContentManagerSupplier,
-                overviewModeBehaviorSupplier);
+                overviewModeBehaviorSupplier, layoutStateProviderOneshotSupplier);
     }
 
     @Override
@@ -130,7 +131,7 @@
 
     @Override
     protected void tabCreating(int sourceId, String url, boolean isIncognito) {
-        if (!getActiveLayout().isHiding() && overlaysHandleTabCreating()
+        if (!getActiveLayout().isStartingToHide() && overlaysHandleTabCreating()
                 && getActiveLayout().handlesTabCreating()) {
             // If the current layout in the foreground, let it handle the tab creation animation.
             // This check allows us to switch from the StackLayout to the SimpleAnimationLayout
@@ -138,7 +139,7 @@
             getActiveLayout().onTabCreating(sourceId);
         } else if (animationsEnabled()) {
             if (!overviewVisible()) {
-                if (getActiveLayout() != null && getActiveLayout().isHiding()) {
+                if (getActiveLayout() != null && getActiveLayout().isStartingToHide()) {
                     setNextLayout(mSimpleAnimationLayout);
                     // The method Layout#doneHiding() will automatically show the next layout.
                     getActiveLayout().doneHiding();
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerChromeTablet.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerChromeTablet.java
index a0f4ff5..8f24eee4 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerChromeTablet.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerChromeTablet.java
@@ -37,9 +37,10 @@
      */
     public LayoutManagerChromeTablet(LayoutManagerHost host, ViewGroup contentContainer,
             ObservableSupplier<TabContentManager> tabContentManagerSupplier,
-            OneshotSupplierImpl<OverviewModeBehavior> overviewModeBehaviorSupplier) {
+            OneshotSupplierImpl<OverviewModeBehavior> overviewModeBehaviorSupplier,
+            OneshotSupplierImpl<LayoutStateProvider> layoutStateProviderOneshotSupplier) {
         super(host, contentContainer, false, null, tabContentManagerSupplier,
-                overviewModeBehaviorSupplier);
+                overviewModeBehaviorSupplier, layoutStateProviderOneshotSupplier);
 
         mTabStripLayoutHelperManager = new StripLayoutHelperManager(
                 host.getContext(), this, mHost.getLayoutRenderHost(), () -> mTitleCache);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutStateProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutStateProvider.java
new file mode 100644
index 0000000..bb1fcf32
--- /dev/null
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutStateProvider.java
@@ -0,0 +1,71 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.compositor.layouts;
+
+/**
+ * Exposes the current {@link Layout} state as well as a way to listen to {@link Layout} state
+ * changes.
+ */
+public interface LayoutStateProvider {
+    /**
+     * An observer that is notified when the {@link Layout} state changes.
+     */
+    interface LayoutStateObserver {
+        // TODO(crbug.com/1108496): Reiterate to see whether the showToolbar param is needed.
+        /**
+         * Called when Layout starts showing.
+         * @param layoutType LayoutType of the started showing Layout.
+         * @param showToolbar Whether or not to show the normal toolbar when animating into the
+         */
+        default void onStartedShowing(@Layout.LayoutType int layoutType, boolean showToolbar) {}
+
+        /**
+         * Called when Layout finishes showing.
+         * @param layoutType LayoutType of the finished showing Layout.
+         */
+        default void onFinishedShowing(@Layout.LayoutType int layoutType) {}
+
+        // TODO(crbug.com/1108496): Reiterate to see whether the showToolbar and delayAnimation
+        // param is needed.
+        /**
+         * Called when Layout starts hiding.
+         * @param layoutType LayoutType of the started hiding Layout.
+         * @param showToolbar    Whether or not to show the normal toolbar when animating out of
+         *                       showing Layout.
+         * @param delayAnimation Whether or not to delay any related animations until after Layout
+         */
+        default void onStartedHiding(
+                @Layout.LayoutType int layoutType, boolean showToolbar, boolean delayAnimation) {}
+
+        /**
+         * Called when Layout finishes hiding.
+         * @param layoutType LayoutType of the finished hiding Layout.
+         */
+        default void onFinishedHiding(@Layout.LayoutType int layoutType) {}
+
+        /**
+         * Called when a layout wants to hint that a new tab might be selected soon. This is not
+         * called every time a tab is selected.
+         * @param tabId The id of the tab that might be selected soon.
+         */
+        default void onTabSelectionHinted(int tabId) {}
+    }
+
+    /**
+     * @return Whether or not the {@link Layout} is visible.
+     * @param layoutType whether the {@link Layout} give {@link Layout.LayoutType} is visible.
+     */
+    boolean isLayoutVisible(@Layout.LayoutType int layoutType);
+
+    /**
+     * @param listener Registers {@code listener} for all layout status changes.
+     */
+    void addObserver(LayoutStateObserver listener);
+
+    /**
+     * @param listener Unregisters {@code listener} for all layout status changes.
+     */
+    void removeObserver(LayoutStateObserver listener);
+}
\ No newline at end of file
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/phone/stack/Stack.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/phone/stack/Stack.java
index 234227a7..841faaa2 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/phone/stack/Stack.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/phone/stack/Stack.java
@@ -1727,7 +1727,7 @@
             mStackTabs = new StackTab[count];
 
             final boolean isIncognito = mTabList.isIncognito();
-            final boolean needTitle = !mLayout.isHiding();
+            final boolean needTitle = !mLayout.isStartingToHide();
             for (int i = 0; i < count; ++i) {
                 Tab tab = mTabList.getTabAt(i);
                 int tabId = tab != null ? tab.getId() : Tab.INVALID_TAB_ID;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabCompositorContentInitializer.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabCompositorContentInitializer.java
index 8d8f1ba..4561f996 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabCompositorContentInitializer.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabCompositorContentInitializer.java
@@ -9,6 +9,7 @@
 
 import org.chromium.base.Callback;
 import org.chromium.base.supplier.ObservableSupplier;
+import org.chromium.base.supplier.OneshotSupplierImpl;
 import org.chromium.chrome.browser.compositor.CompositorViewHolder;
 import org.chromium.chrome.browser.compositor.layouts.LayoutManager;
 import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager;
@@ -67,8 +68,8 @@
     @Override
     public void onFinishNativeInitialization() {
         ViewGroup contentContainer = mActivity.findViewById(android.R.id.content);
-        LayoutManager layoutDriver = new LayoutManager(
-                mCompositorViewHolder.get(), contentContainer, mTabContentManagerSupplier);
+        LayoutManager layoutDriver = new LayoutManager(mCompositorViewHolder.get(),
+                contentContainer, mTabContentManagerSupplier, new OneshotSupplierImpl<>());
 
         mCompositorViewHolderInitializer.initializeCompositorContent(layoutDriver,
                 mActivity.findViewById(org.chromium.chrome.R.id.url_bar), contentContainer,
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/NavigateTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/NavigateTest.java
index 2151daa4..655fd82 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/NavigateTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/NavigateTest.java
@@ -307,6 +307,32 @@
     }
 
     /**
+     * Test 'Request Desktop Site' option properly affects UA client hints with Critical-CH
+     */
+    @Test
+    @MediumTest
+    @Feature({"Navigation"})
+    @CommandLineFlags.
+    Add({"enable-features=UserAgentClientHint, FeaturePolicyForClientHints, CriticalClientHint"})
+    // TODO(https://crbug.com/928669) Remove switch when UA-CH-* launched.
+    public void testRequestDesktopSiteCriticalClientHints() throws Exception {
+        // TODO(https://crbug.com/1138913): Move EchoCriticalHeader request handler here when
+        // implemented
+        String url = mTestServer.getURL("/echocriticalheader");
+        final Tab tab = mActivityTestRule.getActivity().getActivityTab();
+        TestThreadUtils.runOnUiThreadBlocking(
+                ()
+                        -> tab.getWebContents().getNavigationController().setUseDesktopUserAgent(
+                                true /* useDesktop */, true /* reloadOnChange */));
+
+        navigateAndObserve(url, url);
+        ChromeTabUtils.waitForTabPageLoaded(tab, url);
+        String content = JavaScriptUtils.executeJavaScriptAndWaitForResult(
+                tab.getWebContents(), "document.body.textContent");
+        // Note: |content| is JSON, hence lots of escaping.
+        Assert.assertEquals("Proper headers", "\"?0\\\"Linux\\\"\"", content);
+    }
+    /**
      * Test Opening a link and verify that TabObserver#onPageLoadStarted gives the old and new URL.
      */
     @Test
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkPersonalizedSigninPromoDismissTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkPersonalizedSigninPromoDismissTest.java
index c0ef9b4e..d283142 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkPersonalizedSigninPromoDismissTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkPersonalizedSigninPromoDismissTest.java
@@ -32,6 +32,7 @@
 import org.chromium.chrome.browser.signin.SigninPromoController;
 import org.chromium.chrome.browser.sync.SyncTestRule;
 import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
+import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
 import org.chromium.chrome.test.util.BookmarkTestRule;
 import org.chromium.chrome.test.util.BookmarkTestUtil;
 import org.chromium.chrome.test.util.ChromeTabUtils;
@@ -47,6 +48,10 @@
 
     private final BookmarkTestRule mBookmarkTestRule = new BookmarkTestRule();
 
+    @Rule
+    public final ChromeTabbedActivityTestRule mActivityTestRule =
+            new ChromeTabbedActivityTestRule();
+
     // As bookmarks need the fake AccountManagerFacade in SyncTestRule,
     // BookmarkTestRule should be initialized after and destroyed before the
     // SyncTestRule.
@@ -59,9 +64,10 @@
         BookmarkPromoHeader.setPrefPersonalizedSigninPromoDeclinedForTests(false);
         SigninPromoController.setSigninPromoImpressionsCountBookmarksForTests(0);
 
+        mActivityTestRule.startMainActivityOnBlankPage();
         TestThreadUtils.runOnUiThreadBlocking(() -> {
             BookmarkModel bookmarkModel = new BookmarkModel(Profile.fromWebContents(
-                    mSyncTestRule.getActivity().getActivityTab().getWebContents()));
+                    mActivityTestRule.getActivity().getActivityTab().getWebContents()));
             bookmarkModel.loadFakePartnerBookmarkShimForTesting();
         });
         BookmarkTestUtil.waitForBookmarkModelLoaded();
@@ -76,20 +82,20 @@
     @Test
     @MediumTest
     public void testPromoNotShownAfterBeingDismissed() {
-        mBookmarkTestRule.showBookmarkManager(mSyncTestRule.getActivity());
+        mBookmarkTestRule.showBookmarkManager(mActivityTestRule.getActivity());
         onView(withId(R.id.signin_promo_view_container)).check(matches(isDisplayed()));
         onView(withId(R.id.signin_promo_close_button)).perform(click());
         onView(withId(R.id.signin_promo_view_container)).check(doesNotExist());
 
         closeBookmarkManager();
-        mBookmarkTestRule.showBookmarkManager(mSyncTestRule.getActivity());
+        mBookmarkTestRule.showBookmarkManager(mActivityTestRule.getActivity());
         onView(withId(R.id.signin_promo_view_container)).check(doesNotExist());
     }
 
     private void closeBookmarkManager() {
-        if (mSyncTestRule.getActivity().isTablet()) {
+        if (mActivityTestRule.getActivity().isTablet()) {
             ChromeTabbedActivity chromeTabbedActivity =
-                    (ChromeTabbedActivity) mSyncTestRule.getActivity();
+                    (ChromeTabbedActivity) mActivityTestRule.getActivity();
             ChromeTabUtils.closeCurrentTab(
                     InstrumentationRegistry.getInstrumentation(), chromeTabbedActivity);
         } else {
@@ -102,7 +108,7 @@
     public void testPromoNotExistWhenImpressionLimitReached() {
         SigninPromoController.setSigninPromoImpressionsCountBookmarksForTests(
                 SigninPromoController.getMaxImpressionsBookmarksForTests());
-        mBookmarkTestRule.showBookmarkManager(mSyncTestRule.getActivity());
+        mBookmarkTestRule.showBookmarkManager(mActivityTestRule.getActivity());
         onView(withId(R.id.signin_promo_view_container)).check(doesNotExist());
     }
 
@@ -110,7 +116,7 @@
     @MediumTest
     public void testPromoImpressionCountIncrementAfterDisplayingSigninPromo() {
         assertEquals(0, SigninPromoController.getSigninPromoImpressionsCountBookmarks());
-        mBookmarkTestRule.showBookmarkManager(mSyncTestRule.getActivity());
+        mBookmarkTestRule.showBookmarkManager(mActivityTestRule.getActivity());
         onView(withId(R.id.signin_promo_view_container)).check(matches(isDisplayed()));
         assertEquals(1, SigninPromoController.getSigninPromoImpressionsCountBookmarks());
     }
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkPersonalizedSigninPromoTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkPersonalizedSigninPromoTest.java
index 01959a0..e1c52869 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkPersonalizedSigninPromoTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkPersonalizedSigninPromoTest.java
@@ -37,6 +37,7 @@
 import org.chromium.chrome.browser.signin.SigninActivityLauncherImpl;
 import org.chromium.chrome.browser.sync.SyncTestRule;
 import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
+import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
 import org.chromium.chrome.test.util.BookmarkTestRule;
 import org.chromium.components.signin.metrics.SigninAccessPoint;
 
@@ -50,6 +51,10 @@
 
     private final BookmarkTestRule mBookmarkTestRule = new BookmarkTestRule();
 
+    @Rule
+    public final ChromeTabbedActivityTestRule mActivityTestRule =
+            new ChromeTabbedActivityTestRule();
+
     // As bookmarks need the fake AccountManagerFacade in SyncTestRule,
     // BookmarkTestRule should be initialized after and destroyed before the
     // SyncTestRule.
@@ -64,6 +69,7 @@
         BookmarkPromoHeader.forcePromoStateForTests(
                 BookmarkPromoHeader.PromoState.PROMO_SIGNIN_PERSONALIZED);
         SigninActivityLauncherImpl.setLauncherForTest(mMockSigninActivityLauncherImpl);
+        mActivityTestRule.startMainActivityOnBlankPage();
     }
 
     @After
@@ -114,7 +120,7 @@
     }
 
     private void showBookmarkManagerAndCheckSigninPromoIsDisplayed() {
-        mBookmarkTestRule.showBookmarkManager(mSyncTestRule.getActivity());
+        mBookmarkTestRule.showBookmarkManager(mActivityTestRule.getActivity());
         onView(withId(R.id.signin_promo_view_container)).check(matches(isDisplayed()));
     }
 }
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerTest.java
index aa29d42b..f4e86c29 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerTest.java
@@ -4,13 +4,14 @@
 
 package org.chromium.chrome.browser.compositor.layouts;
 
+import static android.os.Build.VERSION_CODES.N_MR1;
+
 import static org.chromium.base.test.util.Restriction.RESTRICTION_TYPE_LOW_END_DEVICE;
 import static org.chromium.base.test.util.Restriction.RESTRICTION_TYPE_NON_LOW_END_DEVICE;
 
 import android.content.Context;
 import android.graphics.PointF;
 import android.support.test.InstrumentationRegistry;
-import android.util.Log;
 import android.view.MotionEvent;
 import android.view.MotionEvent.PointerCoords;
 import android.view.MotionEvent.PointerProperties;
@@ -28,11 +29,14 @@
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
+import org.chromium.base.Log;
 import org.chromium.base.MathUtils;
 import org.chromium.base.supplier.ObservableSupplierImpl;
 import org.chromium.base.supplier.OneshotSupplierImpl;
 import org.chromium.base.test.UiThreadTest;
+import org.chromium.base.test.util.CallbackHelper;
 import org.chromium.base.test.util.CommandLineFlags;
+import org.chromium.base.test.util.DisableIf;
 import org.chromium.base.test.util.DisabledTest;
 import org.chromium.base.test.util.Feature;
 import org.chromium.base.test.util.Restriction;
@@ -68,6 +72,8 @@
 import org.chromium.content_public.browser.test.util.TestThreadUtils;
 import org.chromium.ui.test.util.UiRestriction;
 
+import java.util.concurrent.TimeoutException;
+
 /**
  * Unit tests for {@link org.chromium.chrome.browser.compositor.layouts.LayoutManagerChrome}
  */
@@ -92,6 +98,13 @@
 
     private float mDpToPx;
 
+    private OneshotSupplierImpl<LayoutStateProvider> mLayoutStateProviderSupplier;
+
+    class LayoutObserverCallbackHelper extends CallbackHelper {
+        @Layout.LayoutType
+        public int layoutType;
+    }
+
     private void initializeMotionEvent() {
         mProperties[0] = new PointerProperties();
         mProperties[0].id = 0;
@@ -172,8 +185,14 @@
                 new ObservableSupplierImpl<>();
         OneshotSupplierImpl<OverviewModeBehavior> overviewModeBehaviorSupplier =
                 new OneshotSupplierImpl<>();
+
+        if (mLayoutStateProviderSupplier == null) {
+            mLayoutStateProviderSupplier = new OneshotSupplierImpl<>();
+        }
+
         mManagerPhone = new LayoutManagerChromePhone(layoutManagerHost, container, null,
-                tabContentManagerSupplier, overviewModeBehaviorSupplier);
+                tabContentManagerSupplier, overviewModeBehaviorSupplier,
+                mLayoutStateProviderSupplier);
         tabContentManagerSupplier.set(tabContentManager);
         mManager = mManagerPhone;
         CompositorAnimationHandler.setTestingMode(true);
@@ -641,6 +660,209 @@
         verifyStartSurfaceLayoutEnable(TabListCoordinator.TabListMode.LIST);
     }
 
+    @Test
+    @MediumTest
+    public void testLayoutObserverNotification_ShowAndHide_ToolbarSwipe() throws TimeoutException {
+        LayoutObserverCallbackHelper startedShowingCallback = new LayoutObserverCallbackHelper();
+        LayoutObserverCallbackHelper finishedShowingCallback = new LayoutObserverCallbackHelper();
+        LayoutObserverCallbackHelper startedHidingCallback = new LayoutObserverCallbackHelper();
+        LayoutObserverCallbackHelper finishedHidingCallback = new LayoutObserverCallbackHelper();
+
+        setUpShowAndHideLayoutObserverNotification(startedShowingCallback, finishedShowingCallback,
+                startedHidingCallback, finishedHidingCallback);
+
+        TestThreadUtils.runOnUiThreadBlocking(() -> {
+            performToolbarSideSwipe(ScrollDirection.RIGHT);
+            Assert.assertEquals(
+                    Layout.LayoutType.TOOLBAR_SWIPE, mManager.getActiveLayout().getLayoutType());
+            Assert.assertTrue(mLayoutStateProviderSupplier.get().isLayoutVisible(
+                    Layout.LayoutType.TOOLBAR_SWIPE));
+        });
+
+        // The |startedShowingCallback| callCount 0 is reserved for the default layout during
+        // initialization. Because LayoutManager does not explicitly hide the old layout when a new
+        // layout is forced to show, the callCount for |finishedShowingCallback|,
+        // |startedHidingCallback|, and |finishedHidingCallback| are still 0.
+        // TODO(crbug.com/1108496): update the callCount when LayoutManager explicitly hide the old
+        // layout.
+        startedShowingCallback.waitForCallback(1);
+        Assert.assertEquals(Layout.LayoutType.TOOLBAR_SWIPE, startedShowingCallback.layoutType);
+
+        // TODO(crbug.com/1108496): Enable the following two lines after layout.doneShowing() is
+        //  always call when trying to show a Layout.
+        // finishedShowingCallback.waitForCallback(0);
+        // Assert.assertEquals(Layout.LayoutType.TOOLBAR_SWIPE, finishedShowingCallback.layoutType);
+
+        TestThreadUtils.runOnUiThreadBlocking(() -> {
+            finishToolbarSideSwipe();
+            Assert.assertEquals(
+                    Layout.LayoutType.BROWSING, mManager.getActiveLayout().getLayoutType());
+            Assert.assertTrue(
+                    mLayoutStateProviderSupplier.get().isLayoutVisible(Layout.LayoutType.BROWSING));
+        });
+
+        startedHidingCallback.waitForCallback(0);
+        Assert.assertEquals(Layout.LayoutType.TOOLBAR_SWIPE, startedHidingCallback.layoutType);
+
+        finishedHidingCallback.waitForCallback(0);
+        Assert.assertEquals(Layout.LayoutType.TOOLBAR_SWIPE, finishedHidingCallback.layoutType);
+
+        startedShowingCallback.waitForCallback(2);
+        Assert.assertEquals(Layout.LayoutType.BROWSING, startedShowingCallback.layoutType);
+
+        // TODO(crbug.com/1108496): Enable the following two lines after layout.doneShowing() is
+        //  always call when trying to show a Layout.
+        // finishedShowingCallback.waitForCallback(1);
+        // Assert.assertEquals(Layout.LayoutType.BROWSING, finishedShowingCallback.layoutType);
+    }
+
+    @Test
+    @MediumTest
+    @DisableIf.Build(sdk_is_greater_than = N_MR1, message = "crbug.com/1139943")
+    public void testLayoutObserverNotification_ShowAndHide_TabSwitcher() throws TimeoutException {
+        LayoutObserverCallbackHelper startedShowingCallback = new LayoutObserverCallbackHelper();
+        LayoutObserverCallbackHelper finishedShowingCallback = new LayoutObserverCallbackHelper();
+        LayoutObserverCallbackHelper startedHidingCallback = new LayoutObserverCallbackHelper();
+        LayoutObserverCallbackHelper finishedHidingCallback = new LayoutObserverCallbackHelper();
+
+        setUpShowAndHideLayoutObserverNotification(startedShowingCallback, finishedShowingCallback,
+                startedHidingCallback, finishedHidingCallback);
+
+        TestThreadUtils.runOnUiThreadBlocking(() -> {
+            mManager.showOverview(true);
+
+            Assert.assertTrue(
+                    "layoutManager is way too long to end motion", simulateTime(mManager, 1000));
+            Assert.assertEquals(
+                    Layout.LayoutType.TAB_SWITCHER, mManager.getActiveLayout().getLayoutType());
+            Assert.assertTrue(mLayoutStateProviderSupplier.get().isLayoutVisible(
+                    Layout.LayoutType.TAB_SWITCHER));
+        });
+
+        // The |startedShowingCallback| callCount 0 is reserved for the default layout during
+        // initialization. Because LayoutManager does not explicitly hide the old layout when a new
+        // layout is forced to show, the callCount for |finishedShowingCallback|,
+        // |startedHidingCallback|, and |finishedHidingCallback| are still 0.
+        // TODO(crbug.com/1108496): update the callCount when LayoutManager explicitly hide the old
+        // layout.
+        startedShowingCallback.waitForCallback(1);
+        Assert.assertEquals(Layout.LayoutType.TAB_SWITCHER, startedShowingCallback.layoutType);
+
+        finishedShowingCallback.waitForCallback(0);
+        Assert.assertEquals(Layout.LayoutType.TAB_SWITCHER, finishedShowingCallback.layoutType);
+
+        TestThreadUtils.runOnUiThreadBlocking(() -> {
+            mManagerPhone.hideOverview(true);
+            Assert.assertTrue(
+                    "layoutManager is way too long to end motion", simulateTime(mManager, 1000));
+
+            Assert.assertTrue(
+                    mLayoutStateProviderSupplier.get().isLayoutVisible(Layout.LayoutType.BROWSING));
+        });
+
+        startedHidingCallback.waitForCallback(0);
+        Assert.assertEquals(Layout.LayoutType.TAB_SWITCHER, startedHidingCallback.layoutType);
+
+        finishedHidingCallback.waitForCallback(0);
+        Assert.assertEquals(Layout.LayoutType.TAB_SWITCHER, finishedHidingCallback.layoutType);
+
+        startedShowingCallback.waitForCallback(2);
+        Assert.assertEquals(Layout.LayoutType.BROWSING, startedShowingCallback.layoutType);
+
+        // TODO(crbug.com/1108496): Enable the following two lines after layout.doneShowing() is
+        //  always call when trying to show a Layout.
+        // finishedShowingCallback.waitForCallback(1);
+        // Assert.assertEquals(Layout.LayoutType.BROWSING, finishedShowingCallback.layoutType);
+    }
+
+    private void setUpShowAndHideLayoutObserverNotification(
+            LayoutObserverCallbackHelper startedShowingCallback,
+            LayoutObserverCallbackHelper finishedShowingCallback,
+            LayoutObserverCallbackHelper startedHidingCallback,
+            LayoutObserverCallbackHelper finishedHidingCallback) throws TimeoutException {
+        TestThreadUtils.runOnUiThreadBlocking(() -> {
+            mLayoutStateProviderSupplier = new OneshotSupplierImpl<>();
+
+            mLayoutStateProviderSupplier.onAvailable((layoutStateProvider) -> {
+                layoutStateProvider.addObserver(new LayoutStateProvider.LayoutStateObserver() {
+                    @Override
+                    public void onStartedShowing(int layoutType, boolean showToolbar) {
+                        Log.d(TAG, "Started to show: " + layoutType);
+                        startedShowingCallback.layoutType = layoutType;
+                        startedShowingCallback.notifyCalled();
+                    }
+
+                    @Override
+                    public void onFinishedShowing(int layoutType) {
+                        Log.d(TAG, "finished to show: " + layoutType);
+                        finishedShowingCallback.layoutType = layoutType;
+                        finishedShowingCallback.notifyCalled();
+                    }
+
+                    @Override
+                    public void onStartedHiding(
+                            int layoutType, boolean showToolbar, boolean delayAnimation) {
+                        Log.d(TAG, "Started to hide: " + layoutType);
+                        startedHidingCallback.layoutType = layoutType;
+                        startedHidingCallback.notifyCalled();
+                    }
+
+                    @Override
+                    public void onFinishedHiding(int layoutType) {
+                        Log.d(TAG, "finished to hide: " + layoutType);
+                        finishedHidingCallback.layoutType = layoutType;
+                        finishedHidingCallback.notifyCalled();
+                    }
+                });
+            });
+
+            initializeLayoutManagerPhone(2, 0);
+            Assert.assertEquals(
+                    Layout.LayoutType.BROWSING, mManager.getActiveLayout().getLayoutType());
+        });
+
+        startedShowingCallback.waitForCallback(0);
+        Assert.assertEquals(Layout.LayoutType.BROWSING, startedShowingCallback.layoutType);
+    }
+
+    @Test
+    @MediumTest
+    @DisableIf.Build(sdk_is_greater_than = N_MR1, message = "crbug.com/1139943")
+    public void testLayoutObserverNotification_TabSelectionHinted() throws TimeoutException {
+        CallbackHelper tabSelectionHintedCallback = new CallbackHelper();
+
+        TestThreadUtils.runOnUiThreadBlocking(() -> {
+            mLayoutStateProviderSupplier = new OneshotSupplierImpl<>();
+
+            mLayoutStateProviderSupplier.onAvailable((layoutStateProvider) -> {
+                layoutStateProvider.addObserver(new LayoutStateProvider.LayoutStateObserver() {
+                    @Override
+                    public void onTabSelectionHinted(int tabId) {
+                        Log.d(TAG, "onTabSelectionHinted");
+                        tabSelectionHintedCallback.notifyCalled();
+                    }
+                });
+            });
+
+            initializeLayoutManagerPhone(2, 0);
+            mManager.showOverview(true);
+
+            Assert.assertTrue(
+                    "layoutManager is way too long to end motion", simulateTime(mManager, 1000));
+            Assert.assertEquals(
+                    Layout.LayoutType.TAB_SWITCHER, mManager.getActiveLayout().getLayoutType());
+
+            mManagerPhone.hideOverview(true);
+            Assert.assertTrue(
+                    "layoutManager is way too long to end motion", simulateTime(mManager, 1000));
+
+            Assert.assertEquals(
+                    Layout.LayoutType.BROWSING, mManager.getActiveLayout().getLayoutType());
+        });
+
+        tabSelectionHintedCallback.waitForCallback(0);
+    }
+
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
@@ -721,6 +943,7 @@
         final int finalId = model.getTabAt(finalIndex).getId();
 
         performToolbarSideSwipe(direction);
+        finishToolbarSideSwipe();
 
         Assert.assertEquals("Unexpected model change after side swipe", model.isIncognito(),
                 mTabModelSelector.isIncognitoSelected());
@@ -751,14 +974,21 @@
         // TODO(mdjones): Update implementation of EdgeSwipeHandler to work this way by default.
         eventHandler.swipeUpdated(deltaX, 0.f, deltaX, 0.f, deltaX, 0.f);
         eventHandler.swipeUpdated(deltaX, 0.f, deltaX, 0.f, deltaX, 0.f);
-        eventHandler.swipeFinished();
-
         Assert.assertTrue("LayoutManager#getActiveLayout() should be ToolbarSwipeLayout",
                 mManager.getActiveLayout() instanceof ToolbarSwipeLayout);
         Assert.assertTrue("LayoutManager took too long to finish the animations",
                 simulateTime(mManager, 1000));
     }
 
+    private void finishToolbarSideSwipe() {
+        final EdgeSwipeHandler eventHandler = mManager.getToolbarSwipeHandler();
+        Assert.assertNotNull("LayoutManager#getToolbarSwipeHandler() returned null", eventHandler);
+
+        eventHandler.swipeFinished();
+        Assert.assertTrue("LayoutManager took too long to finish the animations",
+                simulateTime(mManager, 1000));
+    }
+
     @Override
     public Tab createTab(int id, boolean incognito) {
         return MockTab.createAndInitialize(id, incognito);
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/infobar/SyncErrorInfoBarTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/infobar/SyncErrorInfoBarTest.java
index 86c2448..8371b914 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/infobar/SyncErrorInfoBarTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/infobar/SyncErrorInfoBarTest.java
@@ -22,6 +22,7 @@
 import org.chromium.chrome.browser.sync.settings.SyncSettingsUtils;
 import org.chromium.chrome.browser.sync.settings.SyncSettingsUtils.SyncError;
 import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
+import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
 import org.chromium.chrome.test.util.ChromeRenderTestRule;
 import org.chromium.chrome.test.util.InfoBarUtil;
 import org.chromium.chrome.test.util.browser.sync.SyncTestUtil;
@@ -49,6 +50,10 @@
     };
 
     @Rule
+    public final ChromeTabbedActivityTestRule mActivityTestRule =
+            new ChromeTabbedActivityTestRule();
+
+    @Rule
     public final ChromeRenderTestRule mRenderTestRule =
             ChromeRenderTestRule.Builder.withPublicCorpus().build();
 
@@ -56,58 +61,58 @@
     public void setUp() {
         deleteSyncErrorInfoBarShowTimePref();
         mFakeProfileSyncService = (FakeProfileSyncService) mSyncTestRule.getProfileSyncService();
-        mSyncTestRule.startMainActivityOnBlankPage();
+        mActivityTestRule.startMainActivityOnBlankPage();
     }
 
     @Test
     @LargeTest
     public void testSyncErrorInfoBarShownForAuthError() throws Exception {
         Assert.assertEquals("InfoBar should not be shown before signing in", 0,
-                mSyncTestRule.getInfoBars().size());
+                mActivityTestRule.getInfoBars().size());
         showSyncErrorInfoBarForAuthError();
-        Assert.assertEquals("InfoBar should be shown", 1, mSyncTestRule.getInfoBars().size());
+        Assert.assertEquals("InfoBar should be shown", 1, mActivityTestRule.getInfoBars().size());
 
         // Resolving the error should not show the infobar again.
         deleteSyncErrorInfoBarShowTimePref();
         mFakeProfileSyncService.setAuthError(GoogleServiceAuthError.State.NONE);
-        InfoBarUtil.waitUntilNoInfoBarsExist(mSyncTestRule.getInfoBars());
+        InfoBarUtil.waitUntilNoInfoBarsExist(mActivityTestRule.getInfoBars());
     }
 
     @Test
     @LargeTest
     public void testSyncErrorInfoBarShownForSyncSetupIncomplete() {
         Assert.assertEquals("InfoBar should not be shown before signing in", 0,
-                mSyncTestRule.getInfoBars().size());
+                mActivityTestRule.getInfoBars().size());
         showSyncErrorInfoBarForSyncSetupIncomplete();
-        Assert.assertEquals("InfoBar should be shown", 1, mSyncTestRule.getInfoBars().size());
+        Assert.assertEquals("InfoBar should be shown", 1, mActivityTestRule.getInfoBars().size());
 
         // Resolving the error should not show the infobar again.
         deleteSyncErrorInfoBarShowTimePref();
         TestThreadUtils.runOnUiThreadBlocking(() -> {
             mFakeProfileSyncService.setFirstSetupComplete(SyncFirstSetupCompleteSource.BASIC_FLOW);
         });
-        InfoBarUtil.waitUntilNoInfoBarsExist(mSyncTestRule.getInfoBars());
+        InfoBarUtil.waitUntilNoInfoBarsExist(mActivityTestRule.getInfoBars());
     }
 
     @Test
     @LargeTest
     public void testSyncErrorInfoBarShownForPassphraseRequired() {
         Assert.assertEquals("InfoBar should not be shown before signing in", 0,
-                mSyncTestRule.getInfoBars().size());
+                mActivityTestRule.getInfoBars().size());
         showSyncErrorInfoBarForPassphraseRequired();
-        Assert.assertEquals("InfoBar should be shown", 1, mSyncTestRule.getInfoBars().size());
+        Assert.assertEquals("InfoBar should be shown", 1, mActivityTestRule.getInfoBars().size());
 
         // Resolving the error should not show the infobar again.
         deleteSyncErrorInfoBarShowTimePref();
         mFakeProfileSyncService.setPassphraseRequiredForPreferredDataTypes(false);
-        InfoBarUtil.waitUntilNoInfoBarsExist(mSyncTestRule.getInfoBars());
+        InfoBarUtil.waitUntilNoInfoBarsExist(mActivityTestRule.getInfoBars());
     }
 
     @Test
     @LargeTest
     public void testSyncErrorInfoBarNotShownWhenNoError() {
         Assert.assertEquals("InfoBar should not be shown before signing in", 0,
-                mSyncTestRule.getInfoBars().size());
+                mActivityTestRule.getInfoBars().size());
         mSyncTestRule.setUpAccountAndEnableSyncForTesting();
         SyncTestUtil.waitForSyncActive();
         mFakeProfileSyncService.setEngineInitialized(true);
@@ -125,7 +130,7 @@
         Assert.assertTrue(syncError != SyncError.SYNC_SETUP_INCOMPLETE);
 
         Assert.assertEquals("InfoBar should not be shown when there is no error", 0,
-                mSyncTestRule.getInfoBars().size());
+                mActivityTestRule.getInfoBars().size());
     }
 
     @Test
@@ -133,14 +138,14 @@
     public void testSyncErrorInfoBarIsNotShownBeforeMinimalIntervalPassed() {
         // Initiate auth error to show the infobar.
         Assert.assertEquals("InfoBar should not be shown before signing in", 0,
-                mSyncTestRule.getInfoBars().size());
+                mActivityTestRule.getInfoBars().size());
         showSyncErrorInfoBarForAuthError();
-        Assert.assertEquals("InfoBar should be shown", 1, mSyncTestRule.getInfoBars().size());
+        Assert.assertEquals("InfoBar should be shown", 1, mActivityTestRule.getInfoBars().size());
 
         // Create another new tab.
-        mSyncTestRule.loadUrlInNewTab(UrlConstants.CHROME_BLANK_URL);
+        mActivityTestRule.loadUrlInNewTab(UrlConstants.CHROME_BLANK_URL);
         Assert.assertEquals("InfoBar should not be shown again before minimum interval passed", 0,
-                mSyncTestRule.getInfoBars().size());
+                mActivityTestRule.getInfoBars().size());
 
         // Override the time of last seen infobar to minimum required time before current time.
         ContextUtils.getAppSharedPreferences()
@@ -149,9 +154,9 @@
                         System.currentTimeMillis()
                                 - SyncErrorInfoBar.MINIMAL_DURATION_BETWEEN_INFOBARS_MS)
                 .apply();
-        mSyncTestRule.loadUrlInNewTab(UrlConstants.CHROME_BLANK_URL);
+        mActivityTestRule.loadUrlInNewTab(UrlConstants.CHROME_BLANK_URL);
         Assert.assertEquals("InfoBar should be shown again after minimum interval passed", 1,
-                mSyncTestRule.getInfoBars().size());
+                mActivityTestRule.getInfoBars().size());
     }
 
     @Test
@@ -159,7 +164,7 @@
     @Feature("RenderTest")
     public void testSyncErrorInfoBarForAuthErrorView() throws IOException {
         showSyncErrorInfoBarForAuthError();
-        mRenderTestRule.render(mSyncTestRule.getInfoBarContainer().getContainerViewForTesting(),
+        mRenderTestRule.render(mActivityTestRule.getInfoBarContainer().getContainerViewForTesting(),
                 "sync_error_infobar_auth_error");
     }
 
@@ -168,7 +173,7 @@
     @Feature("RenderTest")
     public void testSyncErrorInfoBarForSyncSetupIncompleteView() throws IOException {
         showSyncErrorInfoBarForSyncSetupIncomplete();
-        mRenderTestRule.render(mSyncTestRule.getInfoBarContainer().getContainerViewForTesting(),
+        mRenderTestRule.render(mActivityTestRule.getInfoBarContainer().getContainerViewForTesting(),
                 "sync_error_infobar_sync_setup_incomplete");
     }
 
@@ -177,26 +182,26 @@
     @Feature("RenderTest")
     public void testSyncErrorInfoBarForPassphraseRequiredView() throws IOException {
         showSyncErrorInfoBarForPassphraseRequired();
-        mRenderTestRule.render(mSyncTestRule.getInfoBarContainer().getContainerViewForTesting(),
+        mRenderTestRule.render(mActivityTestRule.getInfoBarContainer().getContainerViewForTesting(),
                 "sync_error_infobar_passphrase_required");
     }
 
     private void showSyncErrorInfoBarForAuthError() {
         mSyncTestRule.setUpAccountAndEnableSyncForTesting();
         mFakeProfileSyncService.setAuthError(GoogleServiceAuthError.State.INVALID_GAIA_CREDENTIALS);
-        mSyncTestRule.loadUrlInNewTab(UrlConstants.CHROME_BLANK_URL);
+        mActivityTestRule.loadUrlInNewTab(UrlConstants.CHROME_BLANK_URL);
     }
 
     private void showSyncErrorInfoBarForPassphraseRequired() {
         mSyncTestRule.setUpAccountAndEnableSyncForTesting();
         mFakeProfileSyncService.setEngineInitialized(true);
         mFakeProfileSyncService.setPassphraseRequiredForPreferredDataTypes(true);
-        mSyncTestRule.loadUrlInNewTab(UrlConstants.CHROME_BLANK_URL);
+        mActivityTestRule.loadUrlInNewTab(UrlConstants.CHROME_BLANK_URL);
     }
 
     private void showSyncErrorInfoBarForSyncSetupIncomplete() {
         mSyncTestRule.setUpTestAccountAndSignInWithSyncSetupAsIncomplete();
-        mSyncTestRule.loadUrlInNewTab(UrlConstants.CHROME_BLANK_URL);
+        mActivityTestRule.loadUrlInNewTab(UrlConstants.CHROME_BLANK_URL);
     }
 
     private void deleteSyncErrorInfoBarShowTimePref() {
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/signin/SigninFragmentTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/signin/SigninFragmentTest.java
index d34e47d..34fac4e 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/signin/SigninFragmentTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/signin/SigninFragmentTest.java
@@ -28,6 +28,7 @@
 import org.hamcrest.Matcher;
 import org.junit.After;
 import org.junit.Assert;
+import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -41,6 +42,7 @@
 import org.chromium.chrome.browser.sync.ProfileSyncService;
 import org.chromium.chrome.browser.sync.SyncTestRule;
 import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
+import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
 import org.chromium.chrome.test.util.ActivityUtils;
 import org.chromium.chrome.test.util.ApplicationTestUtils;
 import org.chromium.chrome.test.util.ChromeRenderTestRule;
@@ -65,11 +67,20 @@
     public final SyncTestRule mSyncTestRule = new SyncTestRule();
 
     @Rule
+    public final ChromeTabbedActivityTestRule mActivityTestRule =
+            new ChromeTabbedActivityTestRule();
+
+    @Rule
     public final ChromeRenderTestRule mRenderTestRule =
             ChromeRenderTestRule.Builder.withPublicCorpus().build();
 
     private SigninActivity mSigninActivity;
 
+    @Before
+    public void setUp() {
+        mActivityTestRule.startMainActivityOnBlankPage();
+    }
+
     @After
     public void tearDown() throws Exception {
         // Since SigninActivity is launched inside this test class, we need to
@@ -86,7 +97,7 @@
         mSigninActivity = ActivityUtils.waitForActivity(
                 InstrumentationRegistry.getInstrumentation(), SigninActivity.class, () -> {
                     SigninActivityLauncherImpl.get().launchActivityForPromoAddAccountFlow(
-                            mSyncTestRule.getActivity(), SigninAccessPoint.BOOKMARK_MANAGER);
+                            mActivityTestRule.getActivity(), SigninAccessPoint.BOOKMARK_MANAGER);
                 });
         mRenderTestRule.render(mSigninActivity.findViewById(R.id.fragment_container),
                 "signin_fragment_new_account");
@@ -101,7 +112,7 @@
         mSigninActivity = ActivityUtils.waitForActivity(
                 InstrumentationRegistry.getInstrumentation(), SigninActivity.class, () -> {
                     SigninActivityLauncherImpl.get().launchActivityForPromoChooseAccountFlow(
-                            mSyncTestRule.getActivity(), SigninAccessPoint.BOOKMARK_MANAGER,
+                            mActivityTestRule.getActivity(), SigninAccessPoint.BOOKMARK_MANAGER,
                             account.name);
                 });
         mRenderTestRule.render(mSigninActivity.findViewById(R.id.fragment_container),
@@ -118,7 +129,7 @@
         mSigninActivity = ActivityUtils.waitForActivity(
                 InstrumentationRegistry.getInstrumentation(), SigninActivity.class, () -> {
                     SigninActivityLauncherImpl.get().launchActivityForPromoChooseAccountFlow(
-                            mSyncTestRule.getActivity(), SigninAccessPoint.BOOKMARK_MANAGER,
+                            mActivityTestRule.getActivity(), SigninAccessPoint.BOOKMARK_MANAGER,
                             secondAccountName);
                 });
         mRenderTestRule.render(mSigninActivity.findViewById(R.id.fragment_container),
@@ -133,7 +144,7 @@
         mSigninActivity = ActivityUtils.waitForActivity(
                 InstrumentationRegistry.getInstrumentation(), SigninActivity.class, () -> {
                     SigninActivityLauncherImpl.get().launchActivityForPromoDefaultFlow(
-                            mSyncTestRule.getActivity(), SigninAccessPoint.BOOKMARK_MANAGER,
+                            mActivityTestRule.getActivity(), SigninAccessPoint.BOOKMARK_MANAGER,
                             account.name);
                 });
         mRenderTestRule.render(mSigninActivity.findViewById(R.id.fragment_container),
@@ -147,7 +158,8 @@
         mSigninActivity = ActivityUtils.waitForActivity(
                 InstrumentationRegistry.getInstrumentation(), SigninActivity.class, () -> {
                     SigninActivityLauncherImpl.get().launchActivityForPromoDefaultFlow(
-                            mSyncTestRule.getActivity(), SigninAccessPoint.SETTINGS, account.name);
+                            mActivityTestRule.getActivity(), SigninAccessPoint.SETTINGS,
+                            account.name);
                 });
         onView(withText(account.name)).check(matches(isDisplayed()));
         onView(withId(R.id.signin_details_description)).perform(clickOnClickableSpan());
@@ -171,7 +183,7 @@
         mSigninActivity = ActivityUtils.waitForActivity(
                 InstrumentationRegistry.getInstrumentation(), SigninActivity.class, () -> {
                     SigninActivityLauncherImpl.get().launchActivity(
-                            mSyncTestRule.getActivity(), SigninAccessPoint.SETTINGS);
+                            mActivityTestRule.getActivity(), SigninAccessPoint.SETTINGS);
                 });
         onView(withId(R.id.positive_button)).check(matches(withText(R.string.signin_add_account)));
         onView(withId(R.id.negative_button)).check(matches(withText(R.string.cancel)));
@@ -186,7 +198,7 @@
         mSigninActivity = ActivityUtils.waitForActivity(
                 InstrumentationRegistry.getInstrumentation(), SigninActivity.class, () -> {
                     SigninActivityLauncherImpl.get().launchActivityForPromoDefaultFlow(
-                            mSyncTestRule.getActivity(), SigninAccessPoint.BOOKMARK_MANAGER,
+                            mActivityTestRule.getActivity(), SigninAccessPoint.BOOKMARK_MANAGER,
                             defaultAccount.name);
                 });
         onView(withText(defaultAccount.name)).check(matches(isDisplayed())).perform(click());
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/sync/FirstRunTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/sync/FirstRunTest.java
index 1ce8e88..a7705dc 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/sync/FirstRunTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/sync/FirstRunTest.java
@@ -5,15 +5,13 @@
 package org.chromium.chrome.browser.sync;
 
 import android.accounts.Account;
-import android.app.Activity;
-import android.app.Instrumentation;
-import android.app.Instrumentation.ActivityMonitor;
+import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
 import android.support.test.InstrumentationRegistry;
 
-import androidx.test.filters.SmallTest;
+import androidx.test.filters.LargeTest;
 
 import org.junit.After;
 import org.junit.Assert;
@@ -24,16 +22,16 @@
 
 import org.chromium.base.CommandLine;
 import org.chromium.base.test.util.CallbackHelper;
-import org.chromium.base.test.util.DisabledTest;
 import org.chromium.base.test.util.Feature;
-import org.chromium.base.test.util.FlakyTest;
+import org.chromium.chrome.browser.SyncFirstSetupCompleteSource;
+import org.chromium.chrome.browser.document.ChromeLauncherActivity;
 import org.chromium.chrome.browser.firstrun.FirstRunActivity;
 import org.chromium.chrome.browser.firstrun.FirstRunActivity.FirstRunActivityObserver;
 import org.chromium.chrome.browser.firstrun.FirstRunFlowSequencer;
 import org.chromium.chrome.browser.firstrun.FirstRunSignInProcessor;
 import org.chromium.chrome.browser.flags.ChromeSwitches;
 import org.chromium.chrome.browser.settings.SettingsActivity;
-import org.chromium.chrome.browser.sync.settings.AccountManagementFragment;
+import org.chromium.chrome.browser.sync.settings.SyncAndServicesSettings;
 import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
 import org.chromium.chrome.test.util.ActivityUtils;
 import org.chromium.chrome.test.util.browser.sync.SyncTestUtil;
@@ -48,51 +46,7 @@
 @RunWith(ChromeJUnit4ClassRunner.class)
 public class FirstRunTest {
     @Rule
-    public SyncTestRule mSyncTestRule = new SyncTestRule() {
-        @Override
-        public void startMainActivityForSyncTest() {
-            FirstRunActivity.setObserverForTest(mTestObserver);
-
-            // Starts up and waits for the FirstRunActivity to be ready.
-            // This isn't exactly what startMainActivity is supposed to be doing, but short of a
-            // refactoring of SyncTestBase to use something other than ChromeTabbedActivity,
-            // it's the only way to reuse the rest of the setup and initialization code inside of
-            // it.
-            final Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation();
-            final Context context = instrumentation.getTargetContext();
-
-            // Create an Intent that causes Chrome to run.
-            final Intent intent = new Intent(TEST_ACTION);
-            intent.setPackage(context.getPackageName());
-            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-
-            // Start the FRE.
-            final ActivityMonitor freMonitor =
-                    new ActivityMonitor(FirstRunActivity.class.getName(), null, false);
-            instrumentation.addMonitor(freMonitor);
-            TestThreadUtils.runOnUiThreadBlocking(() -> {
-                FirstRunFlowSequencer.launch(context, intent, false /* requiresBroadcast */,
-                        false /* preferLightweightFre */);
-            });
-
-            // Wait for the FRE to be ready to use.
-            Activity activity =
-                    freMonitor.waitForActivityWithTimeout(CriteriaHelper.DEFAULT_MAX_TIME_TO_POLL);
-            instrumentation.removeMonitor(freMonitor);
-
-            mActivity = (FirstRunActivity) activity;
-
-            try {
-                mTestObserver.flowIsKnownCallback.waitForCallback(0);
-            } catch (TimeoutException e) {
-                Assert.fail();
-            }
-            CriteriaHelper.pollUiThread((() -> mActivity.isNativeSideIsInitializedForTest()),
-                    "native never initialized.");
-        }
-    };
-
-    private static final String TEST_ACTION = "com.artificial.package.TEST_ACTION";
+    public SyncTestRule mSyncTestRule = new SyncTestRule();
 
     private static final class TestObserver implements FirstRunActivityObserver {
         public final CallbackHelper flowIsKnownCallback = new CallbackHelper();
@@ -125,6 +79,29 @@
     public void setUp() {
         Assert.assertFalse(
                 CommandLine.getInstance().hasSwitch(ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE));
+
+        FirstRunActivity.setObserverForTest(mTestObserver);
+
+        Context context = InstrumentationRegistry.getInstrumentation().getTargetContext();
+        Intent intent = new Intent(Intent.ACTION_MAIN);
+        intent.setPackage(context.getPackageName());
+        intent.setComponent(new ComponentName(context, ChromeLauncherActivity.class));
+        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+
+        Runnable activityTrigger = () -> TestThreadUtils.runOnUiThreadBlocking(() -> {
+            FirstRunFlowSequencer.launch(context, intent, false /* requiresBroadcast */,
+                    false /* preferLightweightFre */);
+        });
+        mActivity = ActivityUtils.waitForActivity(InstrumentationRegistry.getInstrumentation(),
+                FirstRunActivity.class, activityTrigger);
+
+        try {
+            mTestObserver.flowIsKnownCallback.waitForCallback(0);
+        } catch (TimeoutException e) {
+            Assert.fail();
+        }
+        CriteriaHelper.pollUiThread(
+                (() -> mActivity.isNativeSideIsInitializedForTest()), "native never initialized.");
     }
 
     @After
@@ -133,12 +110,9 @@
     }
 
     // Test that signing in through FirstRun signs in and starts sync.
-    /*
-     * @SmallTest
-     * @Feature({"Sync"})
-     */
     @Test
-    @FlakyTest(message = "https://crbug.com/616456")
+    @LargeTest
+    @Feature({"Sync"})
     public void testSignIn() {
         Account testAccount = mSyncTestRule.addTestAccount();
         Assert.assertNull(mSyncTestRule.getCurrentSignedInAccount());
@@ -151,12 +125,9 @@
 
     // Test that signing in and opening settings through FirstRun signs in and doesn't fully start
     // sync until the settings page is closed.
-    /*
-     * @SmallTest
-     * @Feature({"Sync"})
-     */
     @Test
-    @FlakyTest(message = "https://crbug.com/616456")
+    @LargeTest
+    @Feature({"Sync"})
     public void testSignInWithOpenSettings() {
         final Account testAccount = mSyncTestRule.addTestAccount();
         final SettingsActivity settingsActivity =
@@ -169,20 +140,26 @@
         Assert.assertFalse(SyncTestUtil.isSyncActive());
 
         // Close the settings fragment.
-        AccountManagementFragment fragment =
-                (AccountManagementFragment) settingsActivity.getMainFragment();
+        SyncAndServicesSettings fragment =
+                (SyncAndServicesSettings) settingsActivity.getMainFragment();
         Assert.assertNotNull(fragment);
         settingsActivity.getSupportFragmentManager().beginTransaction().remove(fragment).commit();
 
-        // Sync should immediately become active.
+        TestThreadUtils.runOnUiThreadBlocking(() -> {
+            // First setup should not be marked as complete just by closing the fragment.
+            Assert.assertFalse(mSyncTestRule.getProfileSyncService().isFirstSetupComplete());
+
+            // Marking the first setup as complete should make sync active.
+            mSyncTestRule.getProfileSyncService().setFirstSetupComplete(
+                    SyncFirstSetupCompleteSource.BASIC_FLOW);
+        });
         Assert.assertTrue(SyncTestUtil.isSyncActive());
     }
 
     // Test that not signing in through FirstRun does not sign in sync.
     @Test
-    @SmallTest
+    @LargeTest
     @Feature({"Sync"})
-    @DisabledTest // https://crbug.com/901488
     public void testNoSignIn() {
         mSyncTestRule.addTestAccount();
         Assert.assertFalse(SyncTestUtil.isSyncRequested());
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/sync/OpenTabsTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/sync/OpenTabsTest.java
index 16cb08c3..b8ba660 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/sync/OpenTabsTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/sync/OpenTabsTest.java
@@ -24,6 +24,7 @@
 import org.chromium.chrome.browser.tabmodel.TabModelSelector;
 import org.chromium.chrome.browser.tabmodel.TabModelUtils;
 import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
+import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
 import org.chromium.chrome.test.util.browser.sync.SyncTestUtil;
 import org.chromium.components.sync.protocol.EntitySpecifics;
 import org.chromium.components.sync.protocol.SessionHeader;
@@ -51,6 +52,10 @@
     @Rule
     public SyncTestRule mSyncTestRule = new SyncTestRule();
 
+    @Rule
+    public final ChromeTabbedActivityTestRule mActivityTestRule =
+            new ChromeTabbedActivityTestRule();
+
     private static final String TAG = "OpenTabsTest";
 
     private static final String OPEN_TABS_TYPE = "Sessions";
@@ -96,6 +101,8 @@
         mSyncTestRule.setUpAccountAndEnableSyncForTesting();
         mClientName = getClientName();
         mSessionTagCounter = 0;
+
+        mActivityTestRule.startMainActivityOnBlankPage();
     }
 
     // Test syncing an open tab from client to server.
@@ -103,7 +110,7 @@
     @LargeTest
     @Feature({"Sync"})
     public void testUploadOpenTab() {
-        mSyncTestRule.loadUrl(URL);
+        mActivityTestRule.loadUrl(URL);
         waitForLocalTabsForClient(mClientName, URL);
         waitForServerTabs(URL);
     }
@@ -113,9 +120,9 @@
     @LargeTest
     @Feature({"Sync"})
     public void testUploadMultipleOpenTabs() {
-        mSyncTestRule.loadUrl(URL);
-        mSyncTestRule.loadUrlInNewTab(URL2);
-        mSyncTestRule.loadUrlInNewTab(URL3);
+        mActivityTestRule.loadUrl(URL);
+        mActivityTestRule.loadUrlInNewTab(URL2);
+        mActivityTestRule.loadUrlInNewTab(URL3);
         waitForLocalTabsForClient(mClientName, URL, URL2, URL3);
         waitForServerTabs(URL, URL2, URL3);
     }
@@ -125,14 +132,14 @@
     @LargeTest
     @Feature({"Sync"})
     public void testUploadAndCloseOpenTab() {
-        mSyncTestRule.loadUrl(URL);
+        mActivityTestRule.loadUrl(URL);
         // Can't have zero tabs, so we have to open two to test closing one.
-        mSyncTestRule.loadUrlInNewTab(URL2);
+        mActivityTestRule.loadUrlInNewTab(URL2);
         waitForLocalTabsForClient(mClientName, URL, URL2);
         waitForServerTabs(URL, URL2);
 
         TestThreadUtils.runOnUiThreadBlocking(() -> {
-            TabModelSelector selector = mSyncTestRule.getActivity().getTabModelSelector();
+            TabModelSelector selector = mActivityTestRule.getActivity().getTabModelSelector();
             Assert.assertTrue(TabModelUtils.closeCurrentTab(selector.getCurrentModel()));
         });
 
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/sync/SyncTestRule.java b/chrome/android/javatests/src/org/chromium/chrome/browser/sync/SyncTestRule.java
index 8ec02719..a35e3df0 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/sync/SyncTestRule.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/sync/SyncTestRule.java
@@ -16,19 +16,17 @@
 import androidx.preference.TwoStatePreference;
 
 import org.junit.Assert;
+import org.junit.rules.TestRule;
 import org.junit.runner.Description;
 import org.junit.runners.model.Statement;
 
 import org.chromium.base.Promise;
-import org.chromium.chrome.browser.app.ChromeActivity;
 import org.chromium.chrome.browser.autofill.PersonalDataManager;
 import org.chromium.chrome.browser.autofill.PersonalDataManager.CreditCard;
+import org.chromium.chrome.browser.init.ProcessInitializationHandler;
 import org.chromium.chrome.browser.profiles.Profile;
 import org.chromium.chrome.browser.signin.UnifiedConsentServiceBridge;
-import org.chromium.chrome.browser.uid.UniqueIdentificationGenerator;
 import org.chromium.chrome.browser.uid.UniqueIdentificationGeneratorFactory;
-import org.chromium.chrome.browser.uid.UuidBasedUniqueIdentificationGenerator;
-import org.chromium.chrome.test.ChromeActivityTestRule;
 import org.chromium.chrome.test.util.browser.signin.AccountManagerTestRule;
 import org.chromium.chrome.test.util.browser.signin.SigninTestUtil;
 import org.chromium.chrome.test.util.browser.sync.SyncTestUtil;
@@ -52,7 +50,7 @@
 /**
  * TestRule for common functionality between sync tests.
  */
-public class SyncTestRule extends ChromeActivityTestRule<ChromeActivity> {
+public class SyncTestRule implements TestRule {
     private static final String TAG = "SyncTestBase";
 
     private static final String CLIENT_ID = "Client_ID";
@@ -142,9 +140,7 @@
         ProfileSyncService.resetForTests();
     }
 
-    public SyncTestRule() {
-        super(ChromeActivity.class);
-    }
+    public SyncTestRule() {}
 
     /**Getters for Test variables */
     public Context getTargetContext() {
@@ -163,12 +159,6 @@
         return mSyncContentResolver;
     }
 
-    public void startMainActivityForSyncTest() throws Exception {
-        // Start the activity by opening about:blank. This URL is ideal because it is not synced as
-        // a typed URL. If another URL is used, it could interfere with test data.
-        startMainActivityOnBlankPage();
-    }
-
     /**
      * Adds an account of default account name to AccountManagerFacade and waits for the seeding.
      */
@@ -315,7 +305,7 @@
 
     @Override
     public Statement apply(final Statement statement, final Description desc) {
-        final Statement base = super.apply(new Statement() {
+        return mAccountManagerTestRule.apply(new Statement() {
             @Override
             public void evaluate() throws Throwable {
                 mSyncContentResolver = new MockSyncContentResolverDelegate();
@@ -328,6 +318,9 @@
 
                 // Load native since the FakeServer needs it and possibly ProfileSyncService as well
                 // (depends on what fake is provided by |createProfileSyncService()|).
+                TestThreadUtils.runOnUiThreadBlocking(() -> {
+                    ProcessInitializationHandler.getInstance().initializePreNative();
+                });
                 NativeLibraryTestUtils.loadNativeLibraryAndInitBrowserProcess();
 
                 TestThreadUtils.runOnUiThreadBlocking(() -> {
@@ -343,27 +336,13 @@
                 });
 
                 UniqueIdentificationGeneratorFactory.registerGenerator(
-                        UuidBasedUniqueIdentificationGenerator.GENERATOR_ID,
-                        new UniqueIdentificationGenerator() {
-                            @Override
-                            public String getUniqueId(String salt) {
-                                return CLIENT_ID;
-                            }
-                        },
-                        true);
-
-                startMainActivityForSyncTest();
+                        SyncController.GENERATOR_ID, salt -> CLIENT_ID, true);
 
                 // Ensure SyncController is created.
                 TestThreadUtils.runOnUiThreadBlocking(() -> SyncController.get());
 
                 statement.evaluate();
-            }
-        }, desc);
-        return mAccountManagerTestRule.apply(new Statement() {
-            @Override
-            public void evaluate() throws Throwable {
-                base.evaluate();
+
                 ruleTearDown();
             }
         }, desc);
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/sync/TypedUrlsTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/sync/TypedUrlsTest.java
index 5471161..415ada8 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/sync/TypedUrlsTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/sync/TypedUrlsTest.java
@@ -21,6 +21,7 @@
 import org.chromium.base.test.util.Feature;
 import org.chromium.chrome.browser.flags.ChromeSwitches;
 import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
+import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
 import org.chromium.chrome.test.util.browser.sync.SyncTestUtil;
 import org.chromium.components.sync.ModelType;
 import org.chromium.components.sync.protocol.EntitySpecifics;
@@ -45,6 +46,10 @@
     @Rule
     public SyncTestRule mSyncTestRule = new SyncTestRule();
 
+    @Rule
+    public final ChromeTabbedActivityTestRule mActivityTestRule =
+            new ChromeTabbedActivityTestRule();
+
     private static final String TAG = "TypedUrlsTest";
 
     private static final String TYPED_URLS_TYPE = "Typed URLs";
@@ -70,6 +75,7 @@
     @Before
     public void setUp() throws Exception {
         mSyncTestRule.setUpAccountAndEnableSyncForTesting();
+        mActivityTestRule.startMainActivityOnBlankPage();
         // Make sure the initial state is clean.
         assertClientTypedUrlCount(0);
         assertServerTypedUrlCountWithName(0, URL);
@@ -122,7 +128,7 @@
     private void loadUrlByTyping(final String url) {
         TestThreadUtils.runOnUiThreadBlocking(() -> {
             LoadUrlParams params = new LoadUrlParams(url, PageTransition.TYPED);
-            mSyncTestRule.getActivity().getActivityTab().loadUrl(params);
+            mActivityTestRule.getActivity().getActivityTab().loadUrl(params);
         });
     }
 
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/sync/ui/PassphraseTypeDialogFragmentTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/sync/ui/PassphraseTypeDialogFragmentTest.java
index a121f09e..958c036c 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/sync/ui/PassphraseTypeDialogFragmentTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/sync/ui/PassphraseTypeDialogFragmentTest.java
@@ -12,6 +12,7 @@
 import androidx.test.filters.SmallTest;
 
 import org.junit.Assert;
+import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -23,6 +24,7 @@
 import org.chromium.chrome.browser.flags.ChromeSwitches;
 import org.chromium.chrome.browser.sync.SyncTestRule;
 import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
+import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
 import org.chromium.components.sync.PassphraseType;
 
 /**
@@ -34,6 +36,10 @@
     @Rule
     public SyncTestRule mSyncTestRule = new SyncTestRule();
 
+    @Rule
+    public final ChromeTabbedActivityTestRule mActivityTestRule =
+            new ChromeTabbedActivityTestRule();
+
     private static final String TAG = "PassphraseTypeDialogFragmentTest";
 
     private static final boolean ENABLED = true;
@@ -54,6 +60,11 @@
 
     private PassphraseTypeDialogFragment mTypeFragment;
 
+    @Before
+    public void setUp() {
+        mActivityTestRule.startMainActivityOnBlankPage();
+    }
+
     @Test
     @SmallTest
     @Feature({"Sync"})
@@ -119,7 +130,7 @@
 
     public void createFragment(@PassphraseType int type, boolean isEncryptEverythingAllowed) {
         mTypeFragment = PassphraseTypeDialogFragment.create(type, 0, isEncryptEverythingAllowed);
-        mTypeFragment.show(mSyncTestRule.getActivity().getSupportFragmentManager(), TAG);
+        mTypeFragment.show(mActivityTestRule.getActivity().getSupportFragmentManager(), TAG);
         InstrumentationRegistry.getInstrumentation().waitForIdleSync();
     }
 
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/compositor/layouts/SceneOverlayTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/compositor/layouts/SceneOverlayTest.java
index efbbd4e9..e2d5e24 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/compositor/layouts/SceneOverlayTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/compositor/layouts/SceneOverlayTest.java
@@ -5,6 +5,8 @@
 package org.chromium.chrome.browser.compositor.layouts;
 
 import static org.junit.Assert.assertEquals;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.doNothing;
 import static org.mockito.Mockito.when;
 
 import android.content.Context;
@@ -21,6 +23,7 @@
 import org.robolectric.annotation.Config;
 
 import org.chromium.base.supplier.ObservableSupplier;
+import org.chromium.base.supplier.OneshotSupplierImpl;
 import org.chromium.base.test.BaseRobolectricTestRunner;
 import org.chromium.chrome.browser.compositor.bottombar.contextualsearch.ContextualSearchPanel;
 import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager;
@@ -53,6 +56,9 @@
     @Mock
     private ObservableSupplier<TabContentManager> mTabContentManagerSupplier;
 
+    @Mock
+    private OneshotSupplierImpl<LayoutStateProvider> mLayoutStateProviderOneshotSupplier;
+
     private LayoutManager mLayoutManager;
 
     @Before
@@ -62,9 +68,10 @@
         when(mLayoutManagerHost.getContext()).thenReturn(mContext);
         when(mContext.getResources()).thenReturn(mResources);
         when(mResources.getDisplayMetrics()).thenReturn(mDisplayMetrics);
+        doNothing().when(mLayoutStateProviderOneshotSupplier).set(any());
 
-        mLayoutManager =
-                new LayoutManager(mLayoutManagerHost, mContainerView, mTabContentManagerSupplier);
+        mLayoutManager = new LayoutManager(mLayoutManagerHost, mContainerView,
+                mTabContentManagerSupplier, mLayoutStateProviderOneshotSupplier);
     }
 
     @Test
diff --git a/chrome/android/monochrome/BUILD.gn b/chrome/android/monochrome/BUILD.gn
index c520131..aa43fd6 100644
--- a/chrome/android/monochrome/BUILD.gn
+++ b/chrome/android/monochrome/BUILD.gn
@@ -10,6 +10,7 @@
       "//chrome/android/monochrome/scripts/monochrome_python_tests.pydeps"
   data_deps = [
     "//android_webview:system_webview_apk",
+    "//build/android:devil_chromium_py",
     "//chrome/android:chrome_public_apk",
     "//chrome/android:monochrome_public_apk",
     "//testing:run_isolated_script_test",
diff --git a/chrome/android/monochrome/scripts/monochrome_apk_checker_test.py b/chrome/android/monochrome/scripts/monochrome_apk_checker_test.py
index e284345..956b08f 100755
--- a/chrome/android/monochrome/scripts/monochrome_apk_checker_test.py
+++ b/chrome/android/monochrome/scripts/monochrome_apk_checker_test.py
@@ -229,7 +229,7 @@
     Returns: A dict mapping from obfuscated paths to original paths or an
            empty dict if passed a None |pathmap_path|.
     """
-    if pathmap_path is None:
+    if pathmap_path is None or not os.path.exists(pathmap_path):
       return {}
 
     pathmap = {}
diff --git a/chrome/android/profiles/newest.txt b/chrome/android/profiles/newest.txt
index 13cc53aa..66102f6 100644
--- a/chrome/android/profiles/newest.txt
+++ b/chrome/android/profiles/newest.txt
@@ -1 +1 @@
-chromeos-chrome-amd64-88.0.4296.0_rc-r1-merged.afdo.bz2
+chromeos-chrome-amd64-88.0.4296.6_rc-r1-merged.afdo.bz2
diff --git a/chrome/app/chromeos_strings.grdp b/chrome/app/chromeos_strings.grdp
index 717ef1b..465b7db 100644
--- a/chrome/app/chromeos_strings.grdp
+++ b/chrome/app/chromeos_strings.grdp
@@ -5202,15 +5202,9 @@
   <message name="IDS_OOBE_FINGERPINT_SETUP_SCREEN_ENROLLMENT_SUCCESS_DESCRIPTION" desc="The label that shows when fingerprint enrollment is successful.">
     When you see this icon, use your fingerprint for identification or to approve purchases.
   </message>
-  <message name="IDS_OOBE_FINGERPINT_SETUP_SCREEN_BUTTON_SKIP" desc="In fingerprint setup screen, button label to skip the fingerrint setup.">
+  <message name="IDS_OOBE_FINGERPINT_SETUP_SCREEN_BUTTON_SKIP" desc="In fingerprint setup screen, button label to skip the fingerprint setup.">
     Skip
   </message>
-  <message name="IDS_OOBE_FINGERPINT_SETUP_SCREEN_BUTTON_LATER" desc="In fingerprint setup screen, button label to skip the fingerrint setup.">
-    Do it later
-  </message>
-  <message name="IDS_OOBE_FINGERPINT_SETUP_SCREEN_BUTTON_NEXT" desc="In fingerprint setup screen, button label to proceed to the next step.">
-    Next
-  </message>
   <message name="IDS_OOBE_FINGERPINT_SETUP_SCREEN_BUTTON_DONE" desc="Fingerprint setup is done, button label to exit the setup.">
     Done
   </message>
diff --git a/chrome/app/chromeos_strings_grdp/IDS_OOBE_FINGERPINT_SETUP_SCREEN_BUTTON_LATER.png.sha1 b/chrome/app/chromeos_strings_grdp/IDS_OOBE_FINGERPINT_SETUP_SCREEN_BUTTON_LATER.png.sha1
deleted file mode 100644
index 911bf79..0000000
--- a/chrome/app/chromeos_strings_grdp/IDS_OOBE_FINGERPINT_SETUP_SCREEN_BUTTON_LATER.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-da039721cc20c5b5279830a251f0ddfe30f83112
\ No newline at end of file
diff --git a/chrome/app/chromeos_strings_grdp/IDS_OOBE_FINGERPINT_SETUP_SCREEN_BUTTON_NEXT.png.sha1 b/chrome/app/chromeos_strings_grdp/IDS_OOBE_FINGERPINT_SETUP_SCREEN_BUTTON_NEXT.png.sha1
deleted file mode 100644
index a6df5e7..0000000
--- a/chrome/app/chromeos_strings_grdp/IDS_OOBE_FINGERPINT_SETUP_SCREEN_BUTTON_NEXT.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-9d151e643bd4a4a6c1ff3ef6fb84b0ad6da02fc8
\ No newline at end of file
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
index e60a72f..1dd59f35 100644
--- a/chrome/app/generated_resources.grd
+++ b/chrome/app/generated_resources.grd
@@ -11017,6 +11017,10 @@
              desc="Label of the textfield to choose a new name for a window.">
       Window name
     </message>
+    <message name="IDS_COMMANDER_LABEL"
+             desc="Label to identify the Commander feature in Task Manager">
+      Commander
+    </message>
   </messages>
 </release>
 </grit>
diff --git a/chrome/app/generated_resources_grd/IDS_COMMANDER_LABEL.png.sha1 b/chrome/app/generated_resources_grd/IDS_COMMANDER_LABEL.png.sha1
new file mode 100644
index 0000000..7909895
--- /dev/null
+++ b/chrome/app/generated_resources_grd/IDS_COMMANDER_LABEL.png.sha1
@@ -0,0 +1 @@
+bb35663c6800e28b389ec3ed50789794131bff82
\ No newline at end of file
diff --git a/chrome/app/resources/chromium_strings_ar.xtb b/chrome/app/resources/chromium_strings_ar.xtb
index 3fd1d76..b161925 100644
--- a/chrome/app/resources/chromium_strings_ar.xtb
+++ b/chrome/app/resources/chromium_strings_ar.xtb
@@ -183,6 +183,7 @@
 <translation id="6863361426438995919">‏Google Pay (تم النسخ إلى Chromium)</translation>
 <translation id="6893813176749746474">‏تم تحديث متصفح Chromium، ولكنك لم تستخدمه منذ أكثر من 30 يومًا.</translation>
 <translation id="6964305034639999644">‏فتح الرابط في نافذة تصفح متخفٍ في Chromium</translation>
+<translation id="6978145336957848883">‏من السهل تخمين كلمات المرور الضعيفة. يمكنك السماح لمتصفِّح Chromium <ph name="BEGIN_LINK" />بإنشاء كلمات مرور قوية وتذكُّرها لك<ph name="END_LINK" />.</translation>
 <translation id="6990124437352146030">‏يحتاج Chromium إلى إذن للوصول إلى الميكروفون من أجل الموقع الإلكتروني هذا.</translation>
 <translation id="701244094609242530">‏يتعذّر على Chromium التحقّق من الإضافات. يُرجى إعادة المحاولة.</translation>
 <translation id="7028347026395185822">{NUM_HOURS,plural, =1{‏لم يعثر متصفِّح Chromium على أي برامج ضارّة معروفة على جهاز الكمبيوتر. تمّ إجراء آخر عملية تحقُّق قبل ساعة واحدة.}zero{‏لم يعثر متصفِّح Chromium على أي برامج ضارّة معروفة على جهاز الكمبيوتر. تمّ إجراء آخر عملية تحقُّق قبل {NUM_HOURS} ساعة.}two{‏لم يعثر متصفِّح Chromium على أي برامج ضارّة معروفة على جهاز الكمبيوتر. تمّ إجراء آخر عملية تحقُّق قبل ساعتَين ({NUM_HOURS}).}few{‏لم يعثر متصفِّح Chromium على أي برامج ضارّة معروفة على جهاز الكمبيوتر. تمّ إجراء آخر عملية تحقُّق قبل {NUM_HOURS} ساعات.}many{‏لم يعثر متصفِّح Chromium على أي برامج ضارّة معروفة على جهاز الكمبيوتر. تمّ إجراء آخر عملية تحقُّق قبل {NUM_HOURS} ساعة.}other{‏لم يعثر متصفِّح Chromium على أي برامج ضارّة معروفة على جهاز الكمبيوتر. تمّ إجراء آخر عملية تحقُّق قبل {NUM_HOURS} ساعة.}}</translation>
diff --git a/chrome/app/resources/chromium_strings_az.xtb b/chrome/app/resources/chromium_strings_az.xtb
index e4ba51bc..ae17cac 100644
--- a/chrome/app/resources/chromium_strings_az.xtb
+++ b/chrome/app/resources/chromium_strings_az.xtb
@@ -183,6 +183,7 @@
 <translation id="6863361426438995919">Google Pay (Chromium'a kopyalandı)</translation>
 <translation id="6893813176749746474">Xrom yeniləndi, lakin ən azı 30 gün üçün istifadə etməmişlər.</translation>
 <translation id="6964305034639999644">Linki gizli Chromium pəncərəsində açın</translation>
+<translation id="6978145336957848883">Zəif parolları tapmaq asandır. Chromium'un <ph name="BEGIN_LINK" />sizin üçün güclü parollar yaratmasına və yadda saxlamasına<ph name="END_LINK" /> imkan verin.</translation>
 <translation id="6990124437352146030">Chromium bu sayt üçün mikrofona giriş tələb edir</translation>
 <translation id="701244094609242530">Chromium artırmalarınızı yoxlaya bilmir. Sonra yenidən cəhd edin.</translation>
 <translation id="7028347026395185822">{NUM_HOURS,plural, =1{Chromium kompüterinizdə məlum zərərli proqram təminatı tapmadı. Son yoxlanma: 1 saat əvvəl.}other{Chromium kompüterinizdə məlum zərərli proqram təminatı tapmadı. Son yoxlanma: {NUM_HOURS} saat əvvəl.}}</translation>
diff --git a/chrome/app/resources/chromium_strings_be.xtb b/chrome/app/resources/chromium_strings_be.xtb
index 4d9e56b..50c4c460 100644
--- a/chrome/app/resources/chromium_strings_be.xtb
+++ b/chrome/app/resources/chromium_strings_be.xtb
@@ -185,6 +185,7 @@
 <translation id="6863361426438995919">Google Pay (скапіравана ў Chromium)</translation>
 <translation id="6893813176749746474">Chromium быў абноўлены, але вы не выкарыстоўвалі яго на працягу як мінімум 30 дзён.</translation>
 <translation id="6964305034639999644">Адкрыць спасылку ў акне інко&amp;гніта ў Chromium</translation>
+<translation id="6978145336957848883">Ненадзейныя паролі лёгка адгадаць. Дазвольце Chromium <ph name="BEGIN_LINK" />ствараць для вас надзейныя паролі і запамінаць іх<ph name="END_LINK" />.</translation>
 <translation id="6990124437352146030">Chromium запытвае дазвол на доступ да мікрафона для гэтага сайта</translation>
 <translation id="701244094609242530">Браўзеру Chromium не ўдаецца праверыць пашырэнні. Паўтарыце спробу пазней.</translation>
 <translation id="7028347026395185822">{NUM_HOURS,plural, =1{Chromium не знайшоў шкоднага праграмнага забеспячэння на вашым камп'ютары. Апошні раз праверка праводзілася гадзіну таму.}one{Chromium не знайшоў шкоднага праграмнага забеспячэння на вашым камп'ютары. Апошні раз праверка праводзілася {NUM_HOURS} гадзіну таму.}few{Chromium не знайшоў шкоднага праграмнага забеспячэння на вашым камп'ютары. Апошні раз праверка праводзілася {NUM_HOURS} гадзіны таму.}many{Chromium не знайшоў шкоднага праграмнага забеспячэння на вашым камп'ютары. Апошні раз праверка праводзілася {NUM_HOURS} гадзін таму.}other{Chromium не знайшоў шкоднага праграмнага забеспячэння на вашым камп'ютары. Апошні раз праверка праводзілася {NUM_HOURS} гадзіны таму.}}</translation>
diff --git a/chrome/app/resources/chromium_strings_bg.xtb b/chrome/app/resources/chromium_strings_bg.xtb
index 9d6ee21c..a42d4fc 100644
--- a/chrome/app/resources/chromium_strings_bg.xtb
+++ b/chrome/app/resources/chromium_strings_bg.xtb
@@ -179,6 +179,7 @@
 <translation id="6863361426438995919">Google Pay (копирано в Chromium)</translation>
 <translation id="6893813176749746474">Chromium е актуализиран, но не сте го използвали от поне 30 дни.</translation>
 <translation id="6964305034639999644">Отваряне на връзката в прозорец в режим „инко&amp;гнито“ на Chromium</translation>
+<translation id="6978145336957848883">Ненадеждните пароли са лесни за отгатване. Използвайте Chromium <ph name="BEGIN_LINK" />за създаване и запомняне на надеждни пароли за профилите ви<ph name="END_LINK" />.</translation>
 <translation id="6990124437352146030">Chromium се нуждае от разрешение за достъп до микрофона ви за този сайт</translation>
 <translation id="701244094609242530">Chromium не може да провери разширенията ви. Опитайте пак по-късно.</translation>
 <translation id="7028347026395185822">{NUM_HOURS,plural, =1{Chromium не откри познат опасен софтуер на компютъра ви. Последна проверка: преди 1 час.}other{Chromium не откри познат опасен софтуер на компютъра ви. Последна проверка: преди {NUM_HOURS} часа.}}</translation>
diff --git a/chrome/app/resources/chromium_strings_bn.xtb b/chrome/app/resources/chromium_strings_bn.xtb
index 58ec401..07409c9 100644
--- a/chrome/app/resources/chromium_strings_bn.xtb
+++ b/chrome/app/resources/chromium_strings_bn.xtb
@@ -44,12 +44,14 @@
 <translation id="2711502716910134313">Chromium ট্যাব</translation>
 <translation id="2718390899429598676">অতিরিক্ত নিরাপত্তার জন্য Chromium আপনার ডেটা এনক্রিপ্ট করবে।</translation>
 <translation id="2770231113462710648">ডিফল্ট ব্রাউজার এতে পরিবর্তন করুন:</translation>
+<translation id="2774556997178638058"><ph name="BEGIN_LINK" />আপনার অ্যাডমিনিস্ট্রেটর<ph name="END_LINK" /> Chromium-এর পক্ষ থেকে ক্ষতিকারক সফ্টওয়্যার চেক করার বিকল্পটি বন্ধ করে দিয়েছেন</translation>
 <translation id="2799223571221894425">পুনঃশুরু</translation>
 <translation id="2847479871509788944">Chromium থেকে সরান...</translation>
 <translation id="2885378588091291677">কার্য পরিচালক</translation>
 <translation id="2910007522516064972">&amp;Chromium সম্পর্কে</translation>
 <translation id="2977470724722393594">Chromium আপ-টু-ডেট আছে</translation>
 <translation id="2983934633046890458">Chromium আপনার পাসওয়ার্ড এডিট করার অনুমতি চাইছে।</translation>
+<translation id="3031887101543416445">{NUM_DAYS,plural, =1{Chromium আপনার কম্পিউটারে কোনও পরিচিত ক্ষতিকারক সফ্টওয়্যার খুঁজে পায়নি। শেষবার চেক করা হয়েছে: ১ দিন আগে।}one{Chromium আপনার কম্পিউটারে কোনও পরিচিত ক্ষতিকারক সফ্টওয়্যার খুঁজে পায়নি। শেষবার চেক করা হয়েছে: {NUM_DAYS} দিন আগে।}other{Chromium আপনার কম্পিউটারে কোনও পরিচিত ক্ষতিকারক সফ্টওয়্যার খুঁজে পায়নি। শেষবার চেক করা হয়েছে: {NUM_DAYS} দিন আগে।}}</translation>
 <translation id="3032706164202344641">Chromium আপনার পাসওয়ার্ড চেক করতে পারছে না। পরে আবার চেষ্টা করুন।</translation>
 <translation id="3032787606318309379">Chromium-এ জুড়ছে...</translation>
 <translation id="3068515742935458733">Google-এ  <ph name="UMA_LINK" /> ও ক্র্যাশ রিপোর্ট পাঠিয়ে Chromium আরও ভালো করতে সাহায্য করুন</translation>
@@ -69,6 +71,7 @@
 <translation id="347328004046849135">কোনও চুরি হয়ে যাওয়া পাসওয়ার্ড দিয়ে আপনি সাইন-ইন করলে আপনাকে Chromium বিজ্ঞপ্তি দিয়ে জানাবে</translation>
 <translation id="3474745554856756813">এটি এই ডিভাইস থেকে <ph name="ITEMS_COUNT" />টি আইটেম মুছে দেবে। আপনার ডেটা পরে পুনরুদ্ধার করার জন্য, Chromium-এ <ph name="USER_EMAIL" /> হিসেবে সাইন-ইন করুন।</translation>
 <translation id="3509308970982693815">দয়া করে সব Chromium উইন্ডো বন্ধ করুন ও আবার চেষ্টা করুন৷</translation>
+<translation id="3527440529060401414">আপনার কম্পিউটারে ক্ষতিকারক সফ্টওয়্যার আছে কিনা তা Chromium চেক করতে পারে</translation>
 <translation id="3575459661164320785">আপনার কম্পিউটারে ক্ষতিকারক সফ্টওয়্যার পাওয়া গেছে। Chromium এটিকে সরিয়ে দিতে পারে, আপনার সেটিংস রিস্টোর করতে পারে এবং বিভিন্ন এক্সটেনশন বন্ধ করে দিতে পারে যাতে আপনার ব্রাউজার আবার স্বাভাবিকভাবে কাজ করে।</translation>
 <translation id="3639635944603682591">এই ডিভাইস থেকে এই ব্যক্তির ব্রাউজিং ডেটা মুছে ফেলা হবে। ডেটা ফিরিয়ে আনতে Chromium-এ <ph name="USER_EMAIL" /> হিসেবে সাইন-ইন করুন।</translation>
 <translation id="364817392622123556">{COUNT,plural, =0{Chromium-এর একটি নতুন আপডেট উপলভ্য আছে এবং আপনি আবার চালু করলেই সেটি প্রয়োগ করা হবে।}=1{Chromium-এর একটি নতুন আপডেট উপলভ্য আছে এবং আপনি আবার চালু করলেই সেটি প্রয়োগ করা হবে। আপনার ছদ্মবেশী উইন্ডো আবার খুলবে না।}one{Chromium-এর একটি নতুন আপডেট উপলভ্য আছে এবং আপনি আবার চালু করলেই সেটি প্রয়োগ করা হবে। আপনার #টি ছদ্মবেশী উইন্ডো আবার খুলবে না।}other{Chromium-এর একটি নতুন আপডেট উপলভ্য আছে এবং আপনি আবার চালু করলেই সেটি প্রয়োগ করা হবে। আপনার #টি ছদ্মবেশী উইন্ডো আবার খুলবে না।}}</translation>
@@ -84,18 +87,21 @@
 <translation id="3945058413678539331">Chromium পাসওয়ার্ড কপি করার চেষ্টা করছে। অনুমতি দিতে আপনার Windows পাসওয়ার্ড টাইপ করুন।</translation>
 <translation id="4036079820698952681"><ph name="BEGIN_LINK" />বর্তমান সেটিংস<ph name="END_LINK" />-এর রিপোর্ট করে Chromium-কে আরও ভালো করে তুলতে সাহায্য করুন</translation>
 <translation id="4050175100176540509">গুরুত্বপূর্ণ নিরাপত্তা উন্নতি এবং নতুন বৈশিষ্ট্যগুলি সর্বশেষ ভার্সনে উপলভ্য।</translation>
+<translation id="4136604564421273381">Chromium আপনার কম্পিউটার থেকে ক্ষতিকারক সফ্টওয়্যার সরিয়ে দিচ্ছে…</translation>
 <translation id="419998258129752635"><ph name="PAGE_TITLE" /> - নেটওয়ার্ক সাইন-ইন - Chromium</translation>
 <translation id="421369550622382712">Chromium-এর জন্য খুব ভালো অ্যাপ্লিকেশান, গেম, এক্সটেনশন এবং থিমসমূহ আবিষ্কার করুন৷</translation>
 <translation id="4216212958613226427">Chromium UI-এ দেখানোর জন্য এই ভাষা ব্যবহার করা হয়</translation>
 <translation id="4230135487732243613">এই অ্যাকাউন্টে আপনার Chromium ডেটা লিঙ্ক করবেন?</translation>
 <translation id="4271805377592243930">Chromium বিষয়ে সাহায্য পান</translation>
 <translation id="4285930937574705105">অনির্দিষ্ট ত্রুটির কারণে ইনস্টলেশন ব্যর্থ৷ বর্তমানে Chromium চালু থাকলেও, দয়া করে এটি বন্ধ করুন এবং আবার চেষ্টা করুন৷</translation>
+<translation id="4352041330999353637">Chromium আপনার কম্পিউটারে কোনও পরিচিত ক্ষতিকারক সফ্টওয়্যার খুঁজে পায়নি। শেষবার চেক করা হয়েছে: গতকাল।</translation>
 <translation id="4407044323746248786">তা স্বত্তেও Chromium ছেড়ে যাবেন?</translation>
 <translation id="4415566066719264597">Chromium-কে ব্যাকগ্রাউন্ডে চলতে দিন</translation>
 <translation id="4423735387467980091">Chromium কাস্টমাইজ ও নিয়ন্ত্রণ করুন</translation>
 <translation id="4544142686420020088">Chromium আপডেট করা যায়নি, কোনও সমস্যা হয়েছে। <ph name="BEGIN_LINK" />Chromium আপডেট করতে না পারার সমস্যা ও আপডেট করা যায়নি এমন সমস্যার সমাধান করুন।<ph name="END_LINK" /></translation>
 <translation id="4567424176335768812">আপনি <ph name="USER_EMAIL_ADDRESS" /> হিসেবে সাইন-ইন করেছেন৷ এখন আপনি আপনার সমস্ত সাইন-ইন করা ডিভাইসে আপনার বুকমার্ক, ইতিহাস এবং অন্যান্য সেটিংস অ্যাক্সেস করতে পারেন৷</translation>
 <translation id="459535195905078186">Chromium অ্যাপ্লিকেশানগুলি</translation>
+<translation id="4595492485953540730">{NUM_MINS,plural, =1{Chromium আপনার কম্পিউটারে কোনও পরিচিত ক্ষতিকারক সফ্টওয়্যার খুঁজে পায়নি। শেষবার চেক করা হয়েছে: ১ মিনিট আগে।}one{Chromium আপনার কম্পিউটারে কোনও পরিচিত ক্ষতিকারক সফ্টওয়্যার খুঁজে পায়নি। শেষবার চেক করা হয়েছে: {NUM_MINS} মিনিট আগে।}other{Chromium আপনার কম্পিউটারে কোনও পরিচিত ক্ষতিকারক সফ্টওয়্যার খুঁজে পায়নি। শেষবার চেক করা হয়েছে: {NUM_MINS} মিনিট আগে।}}</translation>
 <translation id="4677944499843243528">অন্য একটি কম্পিউটারে (<ph name="HOST_NAME" />) প্রোফাইলটি অন্য Chromium প্রক্রিয়া (<ph name="PROCESS_ID" />) দ্বারা ব্যবহৃত হচ্ছে বলে মনে হচ্ছে৷ Chromium প্রোফাইলটিকে লক করেছে যাতে এটি বিকৃত না হয়ে যায়৷ যদি আপনি নিশ্চিত হন যে আর কোনো প্রক্রিয়া এই প্রোফাইলটিকে ব্যবহার করছে না, তবে আপনি প্রোফাইলটিকে আনলক করতে পারেন এবং Chromium কে পুনরায় লঞ্চ করতে পারেন৷</translation>
 <translation id="469338717132742108">Chromium OS বিষয়ে সাহায্য পান</translation>
 <translation id="4708774505295300557">আগে কোনো একজন এই কম্পিউটারে <ph name="ACCOUNT_EMAIL_LAST" /> হিসাবে Chromium-এ সাইন-ইন করেছেন। আপনার তথ্য পৃথক রাখার জন্য অনুগ্রহ করে একটি Chromium ব্যবহারকারী তৈরি করুন।</translation>
@@ -104,6 +110,7 @@
 <translation id="4750035648288509542">প্রায় আপডেট হয়ে গেছে! আপডেট সম্পূর্ণ করতে Chromium আবার চালু করুন। বন্ধ করা একই ছদ্মবেশী উইন্ডো আবার খোলা যায় না।</translation>
 <translation id="4788777615168560705">Chromium আপনার পাসওয়ার্ড চেক করতে পারছে না। ২৪ ঘণ্টা পরে আবার চেষ্টা করুন বা <ph name="BEGIN_LINK" />আপনার Google অ্যাকাউন্টে পাসওয়ার্ড চেক করুন<ph name="END_LINK" />।</translation>
 <translation id="479167709087336770">এটি Google সার্চ-এ যে বানান পরীক্ষা করার টুল ব্যবহার করা হয় সেটিই ব্যবহার করে। আপনি ব্রাউজারে যে টেক্সট লেখেন, সেটি Google-এ পাঠানো হয়। সেটিংস থেকে আপনি এটি পরিবর্তন করতে পারেন।</translation>
+<translation id="487524289568229802">আপনার কম্পিউটারে ক্ষতিকারক সফ্টওয়্যার আছে কিনা তা Chromium চেক করছে…</translation>
 <translation id="4888717733111232871">mDNS ট্রাফিকের অনুমতি দিতে Chromium এর জন্য ইনবাউন্ড নিয়ম।</translation>
 <translation id="4893632094755846570">এটি এই ডিভাইস থেকে আপনার ব্রাউজিং ডেটা স্থায়ীভাবে মুছে দেবে। ডেটা ফিরিয়ে আনতে, Chromium-এ এই ইমেল আইডি ব্যবহার করে সাইন-ইন করুন</translation>
 <translation id="4943838377383847465">Chromium পটভূমিতে চলছে৷</translation>
@@ -166,6 +173,7 @@
 <translation id="6717134281241384636">আপনার প্রোফাইলটি ব্যবহার করা যাবে না কারণ এটি একটি Chromium-এর নতুন ভার্সন৷ কিছু বিষয় অনুপলব্ধ হতে পারে৷ একটি ভিন্ন প্রোফাইল ডিরেক্টরি উল্লেখ করুন অথবা Chromium-এর একটি নতুন ভার্সন ব্যবহার করুন৷</translation>
 <translation id="6734080038664603509">&amp;Chromium আপডেট করুন</translation>
 <translation id="6734291798041940871">Chromium ইতোমধ্যে আপনার কম্পিউটারের সকল ব্যবহারকারীর জন্য ইনস্টল করা হয়েছে।</translation>
+<translation id="6737557815519435616">Chromium আপনার কম্পিউটারে কোনও পরিচিত ক্ষতিকারক সফ্টওয়্যার খুঁজে পায়নি। শেষবার চেক করা হয়েছে: একটু আগে।</translation>
 <translation id="6762551859069255163">অফিস ও ব্যক্তিগত ব্রাউজিং আলাদা রাখতে অথবা একাধিক ব্যবহারকারী এই ডিভাইস ব্যবহার করলে, প্রত্যেকের জন্য Chromium-এ আলাদা প্রোফাইল তৈরি করুন</translation>
 <translation id="6774082503108938489">তোমার অভিভাবক Chromium-এ "সাইট, অ্যাপ ও এক্সটেনশনের অনুমতি" বন্ধ করে দিয়েছেন। এই <ph name="EXTENSION_TYPE_PARAMETER" /> চালু করার অনুমতি নেই।</translation>
 <translation id="6847869444787758381">আপনার পাসওয়ার্ড কখনও চুরি হলে তা Chromium আপনাকে জানিয়ে দেবে</translation>
@@ -175,6 +183,7 @@
 <translation id="6964305034639999644">Chromium ছদ্মবেশী উইন্ডোতে লিঙ্কটি খুলুন</translation>
 <translation id="6990124437352146030">এই সাইটটির জন্য Chromium কে আপনার মাইক্রোফোনে অ্যাক্সেস দিতে হবে</translation>
 <translation id="701244094609242530">Chromium আপনার এক্সটেনশনগুলি চেক করে দেখতে পারছে না। পরে আবার চেষ্টা করুন।</translation>
+<translation id="7028347026395185822">{NUM_HOURS,plural, =1{Chromium আপনার কম্পিউটারে কোনও পরিচিত ক্ষতিকারক সফ্টওয়্যার খুঁজে পায়নি। শেষবার চেক করা হয়েছে: ১ ঘণ্টা আগে।}one{Chromium আপনার কম্পিউটারে কোনও পরিচিত ক্ষতিকারক সফ্টওয়্যার খুঁজে পায়নি। শেষবার চেক করা হয়েছে: {NUM_HOURS} ঘণ্টা আগে।}other{Chromium আপনার কম্পিউটারে কোনও পরিচিত ক্ষতিকারক সফ্টওয়্যার খুঁজে পায়নি। শেষবার চেক করা হয়েছে: {NUM_HOURS} ঘণ্টা আগে।}}</translation>
 <translation id="705851970750939768">Chromium আপডেট করুন</translation>
 <translation id="7066436765290594559">Chromium OS আপনার ডেটা সিঙ্ক করতে পারেনি৷ দয়া করে আপনার সিঙ্ক পাসফ্রেজ আপডেট করুন৷</translation>
 <translation id="7067091210845072982">কোনও ছবিতে যদি প্রয়োজনীয় বিবরণ দেওয়া না থাকে, তাহলে Chromium আপনাকে একটি বিবরণ দেওয়ার চেষ্টা করবে। বিবরণ তৈরির জন্য, Google-এ ছবি পাঠানো হয়।</translation>
@@ -235,6 +244,7 @@
 <translation id="8621669128220841554">অনির্দিষ্ট ত্রুটির কারণে ইনস্টল করা যায়নি৷ অনুগ্রহ করে Chromium আবার ডাউনলোড করুন৷</translation>
 <translation id="8697124171261953979">আপনি Chromium শুরু করলে বা Omnibox থেকে সার্চ করলে কোন পৃষ্ঠাটি দেখানো হবে তাও এটি নিয়ন্ত্রণ করে।</translation>
 <translation id="8704119203788522458">এটি হল আপনার Chromium</translation>
+<translation id="8733034664173984083">Chromium আপনার কম্পিউটারে ক্ষতিকারক সফ্টওয়্যার আছে কিনা চেক করার সময় সমস্যা হয়েছে</translation>
 <translation id="8796602469536043152">এই সাইটটির জন্য Chromium কে আপনার ক্যামেরা এবং মাইক্রোফোনে অ্যাক্সেস দিতে হবে</translation>
 <translation id="8803635938069941624">Chromium OS শর্তাদি</translation>
 <translation id="8821041990367117597">আপনার অ্যাকাউন্ট সাইন-ইন বিবরণ পুরনো হওয়ার কারণে Chromium তা সিঙ্ক করতে পারেনি৷</translation>
diff --git a/chrome/app/resources/chromium_strings_bs.xtb b/chrome/app/resources/chromium_strings_bs.xtb
index 3a696be..93345c1 100644
--- a/chrome/app/resources/chromium_strings_bs.xtb
+++ b/chrome/app/resources/chromium_strings_bs.xtb
@@ -11,6 +11,7 @@
 <translation id="1131805035311359397">Da provjerite jesu li vaše lozinke zaštićene od narušavanja podataka i drugih sigurnosnih problema, <ph name="BEGIN_LINK" />prijavite se u Chromium<ph name="END_LINK" />.</translation>
 <translation id="1185134272377778587">O programu Chromium</translation>
 <translation id="1315551408014407711">Postavite novi Chromium profil</translation>
+<translation id="1357932062193643861">Pitaj kada se otvori Chromium</translation>
 <translation id="1396446129537741364">Chromium pokušava prikazati lozinke.</translation>
 <translation id="1414495520565016063">Prijavili ste se u Chromium!</translation>
 <translation id="151962892725702025">Chromium OS nije mogao sinhronizirati podatke zato što sinhronizacija nije dostupna u vašoj domeni.</translation>
@@ -185,7 +186,7 @@
 <translation id="6863361426438995919">Google Pay (kopirano u Chromium)</translation>
 <translation id="6893813176749746474">Chromium je ažuriran, ali ga niste koristili najmanje 30 dana.</translation>
 <translation id="6964305034639999644">Otvori link u anonim&amp;nom prozoru Chromiuma</translation>
-<translation id="6978145336957848883">Slabe zaporke lako je pogoditi. Neka Chromium <ph name="BEGIN_LINK" />izradi i zapamti snažne zaporke za vas<ph name="END_LINK" />.</translation>
+<translation id="6978145336957848883">Slabe lozinke je lako pogoditi. Dozvolite Chromiumu da <ph name="BEGIN_LINK" />kreira i zapamti jake lozinke za vas<ph name="END_LINK" />.</translation>
 <translation id="6990124437352146030">Chromium treba dopuštenje za pristup mikrofonu za ovu web-lokaciju</translation>
 <translation id="701244094609242530">Chromium ne može provjeravati vaše ekstenzije. Pokušajte ponovo kasnije.</translation>
 <translation id="7028347026395185822">{NUM_HOURS,plural, =1{Chromium nije pronašao nijedan poznati štetni softver na vašem računaru. Posljednja provjera: prije 1 sat.}one{Chromium nije pronašao nijedan poznati štetni softver na vašem računaru. Posljednja provjera: prije {NUM_HOURS} sat.}few{Chromium nije pronašao nijedan poznati štetni softver na vašem računaru. Posljednja provjera: prije {NUM_HOURS} sata.}other{Chromium nije pronašao nijedan poznati štetni softver na vašem računaru. Posljednja provjera: prije {NUM_HOURS} sati.}}</translation>
diff --git a/chrome/app/resources/chromium_strings_cs.xtb b/chrome/app/resources/chromium_strings_cs.xtb
index 729e96a..969bc76 100644
--- a/chrome/app/resources/chromium_strings_cs.xtb
+++ b/chrome/app/resources/chromium_strings_cs.xtb
@@ -185,6 +185,7 @@
 <translation id="6863361426438995919">Google Pay (zkopírováno do prohlížeče Chromium)</translation>
 <translation id="6893813176749746474">Prohlížeč Chromium byl aktualizován, ale minimálně po 30 dnů jste jej nepoužili.</translation>
 <translation id="6964305034639999644">Otevřít odkaz v &amp;anonymním okně prohlížeče Chromium</translation>
+<translation id="6978145336957848883">Slabá hesla lze snadno uhodnout. Chromium vám může <ph name="BEGIN_LINK" />vytvářet a ukládat silná hesla<ph name="END_LINK" />.</translation>
 <translation id="6990124437352146030">Chromium pro tento web potřebuje oprávnění k přístupu k mikrofonu</translation>
 <translation id="701244094609242530">Chromium nemůže zkontrolovat vaše rozšíření. Zkuste to později.</translation>
 <translation id="7028347026395185822">{NUM_HOURS,plural, =1{Prohlížeč Chromium v počítači nenašel žádný známý škodlivý software. Naposledy zkontrolováno: před hodinou.}few{Prohlížeč Chromium v počítači nenašel žádný známý škodlivý software. Naposledy zkontrolováno: před {NUM_HOURS} hodinami.}many{Prohlížeč Chromium v počítači nenašel žádný známý škodlivý software. Naposledy zkontrolováno: před {NUM_HOURS} hodiny.}other{Prohlížeč Chromium v počítači nenašel žádný známý škodlivý software. Naposledy zkontrolováno: před {NUM_HOURS} hodinami.}}</translation>
diff --git a/chrome/app/resources/chromium_strings_da.xtb b/chrome/app/resources/chromium_strings_da.xtb
index 83334087..fbebb71 100644
--- a/chrome/app/resources/chromium_strings_da.xtb
+++ b/chrome/app/resources/chromium_strings_da.xtb
@@ -183,6 +183,7 @@
 <translation id="6863361426438995919">Google Pay (kopieret til Chromium)</translation>
 <translation id="6893813176749746474">Chromium er blevet opdateret, men du har ikke brugt den i 30 dage.</translation>
 <translation id="6964305034639999644">Åbn linket i et Chromium-inko&amp;gnitovindue</translation>
+<translation id="6978145336957848883">Svage adgangskoder er nemme at gætte. Få Chromium <ph name="BEGIN_LINK" />til at oprette og huske stærke adgangskoder for dig<ph name="END_LINK" />.</translation>
 <translation id="6990124437352146030">Chromium skal have tilladelse til at bruge din mikrofon på dette website</translation>
 <translation id="701244094609242530">Chromium kan ikke tjekke dine udvidelser. Prøv igen senere.</translation>
 <translation id="7028347026395185822">{NUM_HOURS,plural, =1{Chromium registrerede ikke nogen kendt skadelig software på din computer. Seneste tjek: For 1 time siden.}one{Chromium registrerede ikke nogen kendt skadelig software på din computer. Seneste tjek: For {NUM_HOURS} time siden.}other{Chromium registrerede ikke nogen kendt skadelig software på din computer. Seneste tjek: For {NUM_HOURS} timer siden.}}</translation>
diff --git a/chrome/app/resources/chromium_strings_el.xtb b/chrome/app/resources/chromium_strings_el.xtb
index 2bd905d..3dac025 100644
--- a/chrome/app/resources/chromium_strings_el.xtb
+++ b/chrome/app/resources/chromium_strings_el.xtb
@@ -183,6 +183,7 @@
 <translation id="6863361426438995919">Google Pay (αντιγράφηκε στο Chromium)</translation>
 <translation id="6893813176749746474">Το Chromium έχει ενημερωθεί, αλλά δεν το έχετε χρησιμοποιήσει για 30 ημέρες τουλάχιστον.</translation>
 <translation id="6964305034639999644">Άνοιγμα συνδέσμου σε Παράθυρο ανών&amp;υμης περιήγησης Chromium</translation>
+<translation id="6978145336957848883">Είναι εύκολο να μαντέψει κανείς τους ασθενείς κωδικούς πρόσβασης. Επιτρέψτε στο Chromium να <ph name="BEGIN_LINK" />δημιουργεί και να απομνημονεύει ισχυρούς κωδικούς πρόσβασης για εσάς<ph name="END_LINK" />.</translation>
 <translation id="6990124437352146030">Το Chromium χρειάζεται άδεια, για να αποκτήσει πρόσβαση στο μικρόφωνο για αυτόν τον ιστότοπο</translation>
 <translation id="701244094609242530">Το Chromium δεν μπορεί να ελέγξει τις επεκτάσεις σας. Δοκιμάστε ξανά αργότερα.</translation>
 <translation id="7028347026395185822">{NUM_HOURS,plural, =1{Το Chromium δεν εντόπισε γνωστό επιβλαβές λογισμικό στον υπολογιστή σας. Τελευταίος έλεγχος: πριν από μία ώρα.}other{Το Chromium δεν εντόπισε γνωστό επιβλαβές λογισμικό στον υπολογιστή σας. Τελευταίος έλεγχος: πριν από {NUM_HOURS} ώρες.}}</translation>
diff --git a/chrome/app/resources/chromium_strings_en-GB.xtb b/chrome/app/resources/chromium_strings_en-GB.xtb
index 14b69980..ec721e3 100644
--- a/chrome/app/resources/chromium_strings_en-GB.xtb
+++ b/chrome/app/resources/chromium_strings_en-GB.xtb
@@ -11,6 +11,7 @@
 <translation id="1131805035311359397">To check if your passwords are safe from data breaches and other security issues, <ph name="BEGIN_LINK" />sign in to Chromium<ph name="END_LINK" />.</translation>
 <translation id="1185134272377778587">About Chromium</translation>
 <translation id="1315551408014407711">Set up your new Chromium profile</translation>
+<translation id="1357932062193643861">Ask when Chromium opens</translation>
 <translation id="1396446129537741364">Chromium is trying to show passwords.</translation>
 <translation id="1414495520565016063">You're signed in to Chromium!</translation>
 <translation id="151962892725702025">Chromium OS could not sync your data because Sync is not available for your domain.</translation>
diff --git a/chrome/app/resources/chromium_strings_et.xtb b/chrome/app/resources/chromium_strings_et.xtb
index d16eb1d..30fe3eb 100644
--- a/chrome/app/resources/chromium_strings_et.xtb
+++ b/chrome/app/resources/chromium_strings_et.xtb
@@ -9,6 +9,7 @@
 <translation id="1131805035311359397">Kui soovite kontrollida, kas teie paroolid on andmetega seotud rikkumiste ja muude turvaprobleemide eest kaitstud, <ph name="BEGIN_LINK" />logige Chromiumi sisse<ph name="END_LINK" />.</translation>
 <translation id="1185134272377778587">Teave Chromiumi kohta</translation>
 <translation id="1315551408014407711">Uue Chromiumi profiili seadistamine</translation>
+<translation id="1357932062193643861">Küsi Chromiumi avamisel</translation>
 <translation id="1396446129537741364">Chromium püüab paroole kuvada.</translation>
 <translation id="1414495520565016063">Olete Chromiumi sisse logitud.</translation>
 <translation id="151962892725702025">Chromium OS ei saanud teie andmeid sünkroonida, sest teie domeenil pole sünkroonimine saadaval.</translation>
@@ -247,7 +248,7 @@
 <translation id="8621669128220841554">Installimine ebaõnnestus tundmatu vea tõttu. Laadige Chromium uuesti alla.</translation>
 <translation id="8697124171261953979">Lisaks juhib see seda, mis leht kuvatakse Chromiumi käivitamisel või omnikastikeses otsingu tegemisel.</translation>
 <translation id="8704119203788522458">See on teie Chromium</translation>
-<translation id="8733034664173984083">Ilmnes viga, kui Chromium otsis teie arvutist kahjuliku tarkvara</translation>
+<translation id="8733034664173984083">Ilmnes viga, kui Chromium otsis teie arvutist kahjulikku tarkvara</translation>
 <translation id="8796602469536043152">Chromium vajab selle saidi puhul luba, et teie kaamerale ja mikrofonile juurde pääseda</translation>
 <translation id="8803635938069941624">Chromium OS-i tingimused</translation>
 <translation id="8821041990367117597">Chromium ei saa andmeid sünkroonida, sest teie konto sisselogimisandmed on aegunud.</translation>
diff --git a/chrome/app/resources/chromium_strings_eu.xtb b/chrome/app/resources/chromium_strings_eu.xtb
index 9f8195d9..e847df9a 100644
--- a/chrome/app/resources/chromium_strings_eu.xtb
+++ b/chrome/app/resources/chromium_strings_eu.xtb
@@ -185,6 +185,7 @@
 <translation id="6863361426438995919">Google Pay (Chromium-en kopiatu da)</translation>
 <translation id="6893813176749746474">Chromium eguneratu da baina ez duzu erabili 30 egunetan gutxienez.</translation>
 <translation id="6964305034639999644">Ireki esteka Chromium-eko &amp;ezkutuko moduko leiho batean</translation>
+<translation id="6978145336957848883">Seguruak ez diren pasahitzak erraz asmatzen dira. Utzi Chromium-i <ph name="BEGIN_LINK" />pasahitz seguruak sortzen eta gogoratzen<ph name="END_LINK" />.</translation>
 <translation id="6990124437352146030">Chromium-ek webgune honen izenean mikrofonoa atzitzeko baimena behar du</translation>
 <translation id="701244094609242530">Chromium-ek ezin ditu egiaztatu luzapenak. Saiatu geroago.</translation>
 <translation id="7028347026395185822">{NUM_HOURS,plural, =1{Chromium-ek ez du aurkitu software kaltegarririk ordenagailuan. Duela ordubete egiaztatu du azkenengoz.}other{Chromium-ek ez du aurkitu software kaltegarririk ordenagailuan. Duela {NUM_HOURS} ordu egiaztatu du azkenengoz.}}</translation>
diff --git a/chrome/app/resources/chromium_strings_fa.xtb b/chrome/app/resources/chromium_strings_fa.xtb
index 25c3a7e..dd7dd29 100644
--- a/chrome/app/resources/chromium_strings_fa.xtb
+++ b/chrome/app/resources/chromium_strings_fa.xtb
@@ -182,6 +182,7 @@
 <translation id="6863361426438995919">‏Google Pay (در Chromium کپی شد)</translation>
 <translation id="6893813176749746474">‏Chromium به‌روز شده است اما حداقل ۳۰ روز از آن استفاده نکرده‌اید.</translation>
 <translation id="6964305034639999644">‏باز کردن پیوند در پنجره &amp;ناشناس Chromium</translation>
+<translation id="6978145336957848883">‏گذرواژه‌های ضعیف را می‌توان به‌راحتی حدس زد. به Chromium اجازه دهید <ph name="BEGIN_LINK" />گذرواژه‌هایی قوی برایتان ایجاد کند و آن‌ها را به‌خاطر بسپارد<ph name="END_LINK" />.</translation>
 <translation id="6990124437352146030">‏Chromium برای این سایت به مجوز دسترسی به میکروفون نیاز دارد</translation>
 <translation id="701244094609242530">‏Chromium نمی‌تواند افزونه‌هایتان را بررسی کند. بعداً دوباره امتحان کنید.</translation>
 <translation id="7028347026395185822">{NUM_HOURS,plural, =1{‏Chromium نرم‌افزار مضر شناخته‌شده‌ای در رایانه‌تان پیدا نکرد. آخرین بررسی: ۱ ساعت قبل.}one{‏Chromium نرم‌افزار مضر شناخته‌شده‌ای در رایانه‌تان پیدا نکرد. آخرین بررسی: {NUM_HOURS} ساعت قبل.}other{‏Chromium نرم‌افزار مضر شناخته‌شده‌ای در رایانه‌تان پیدا نکرد. آخرین بررسی: {NUM_HOURS} ساعت قبل.}}</translation>
diff --git a/chrome/app/resources/chromium_strings_fi.xtb b/chrome/app/resources/chromium_strings_fi.xtb
index a362e19..9bd51f08 100644
--- a/chrome/app/resources/chromium_strings_fi.xtb
+++ b/chrome/app/resources/chromium_strings_fi.xtb
@@ -183,6 +183,7 @@
 <translation id="6863361426438995919">Google Pay (kopioitu Chromiumiin)</translation>
 <translation id="6893813176749746474">Chromium on päivitetty, mutta et ole käyttänyt sitä ainakaan 30 päivään.</translation>
 <translation id="6964305034639999644">Avaa linkki Chromiumin inco&amp;gnito-ikkunassa</translation>
+<translation id="6978145336957848883">Heikko salasana on helppo arvata. Chromium voi <ph name="BEGIN_LINK" />luoda ja muistaa vahvoja salasanoja puolestasi<ph name="END_LINK" />.</translation>
 <translation id="6990124437352146030">Chromium tarvitsee oikeuden käyttää mikrofoniasi tällä sivustolla.</translation>
 <translation id="701244094609242530">Chromium ei voi tarkistaa laajennuksiasi. Yritä myöhemmin uudelleen.</translation>
 <translation id="7028347026395185822">{NUM_HOURS,plural, =1{Chromium ei löytänyt tietokoneeltasi haittaohjelmia. Tarkistettu viimeksi 1 tunti sitten.}other{Chromium ei löytänyt tietokoneeltasi haittaohjelmia. Tarkistettu viimeksi {NUM_HOURS} tuntia sitten}}</translation>
diff --git a/chrome/app/resources/chromium_strings_fil.xtb b/chrome/app/resources/chromium_strings_fil.xtb
index d4f88db..4b43f6a5 100644
--- a/chrome/app/resources/chromium_strings_fil.xtb
+++ b/chrome/app/resources/chromium_strings_fil.xtb
@@ -11,6 +11,7 @@
 <translation id="1131805035311359397">Para makita kung ligtas ang iyong mga password mula sa mga paglabag sa data at iba pang isyu sa seguridad, <ph name="BEGIN_LINK" />mag-sign in sa Chromium<ph name="END_LINK" />.</translation>
 <translation id="1185134272377778587">Tungkol sa Chromium</translation>
 <translation id="1315551408014407711">I-set up ang iyong bagong profile sa Chromium</translation>
+<translation id="1357932062193643861">Itanong kapag binuksan ang Chromium</translation>
 <translation id="1396446129537741364">Sinusubukan ng Chromium na magpakita ng mga password.</translation>
 <translation id="1414495520565016063">Naka-sign in ka sa Chromium!</translation>
 <translation id="151962892725702025">Hindi ma-sync ng Chromium OS ang iyong data dahil hindi available ang Pag-sync para sa iyong domain.</translation>
@@ -185,6 +186,7 @@
 <translation id="6863361426438995919">Google Pay (kinopya sa Chromium)</translation>
 <translation id="6893813176749746474">Na-update na ang Chromium, ngunit hindi mo pa ito nagagamit sa loob ng hindi bababa sa 30 araw.</translation>
 <translation id="6964305034639999644">Buksan ang link sa inco&amp;gnito window ng Chromium</translation>
+<translation id="6978145336957848883">Madaling hulaan ang mahihinang password. Hayaan ang Chromium na <ph name="BEGIN_LINK" />gumawa ng malalakas na password at tandaan ang mga ito para sa iyo<ph name="END_LINK" />.</translation>
 <translation id="6990124437352146030">Kailangan ng Chromium ng pahintulot na i-access ang iyong mikropono para sa site na ito</translation>
 <translation id="701244094609242530">Hindi masuri ng Chromium ang iyong mga extension. Subukan ulit sa ibang pagkakataon.</translation>
 <translation id="7028347026395185822">{NUM_HOURS,plural, =1{Walang nakitang kilalang mapaminsalang software ang Chromium sa iyong computer. Huling nagsuri: 1 oras ang nakalipas.}one{Walang nakitang kilalang mapaminsalang software ang Chromium sa iyong computer. Huling nagsuri: {NUM_HOURS} oras ang nakalipas.}other{Walang nakitang kilalang mapaminsalang software ang Chromium sa iyong computer. Huling nagsuri: {NUM_HOURS} na oras ang nakalipas.}}</translation>
diff --git a/chrome/app/resources/chromium_strings_fr-CA.xtb b/chrome/app/resources/chromium_strings_fr-CA.xtb
index dcb7683e..874a8b58 100644
--- a/chrome/app/resources/chromium_strings_fr-CA.xtb
+++ b/chrome/app/resources/chromium_strings_fr-CA.xtb
@@ -185,6 +185,7 @@
 <translation id="6863361426438995919">Google Pay (copiée dans Chromium)</translation>
 <translation id="6893813176749746474">Chrome a été mis à jour, mais vous ne l'avez pas utilisé depuis au moins 30 jours.</translation>
 <translation id="6964305034639999644">Ouvrir le lien dans une fenêtre de navi&amp;gation privée Chromium</translation>
+<translation id="6978145336957848883">Les mots de passe faibles sont faciles à deviner. Vous pouvez laisser Chromium <ph name="BEGIN_LINK" />créer et mémoriser des mots de passe forts pour vous<ph name="END_LINK" />.</translation>
 <translation id="6990124437352146030">Chromium a besoin de votre autorisation pour accéder à votre micro pour ce site</translation>
 <translation id="701244094609242530">Chromium ne peut pas vérifier vos extensions. Réessayez plus tard.</translation>
 <translation id="7028347026395185822">{NUM_HOURS,plural, =1{Chromium n'a trouvé aucun logiciel nuisible connu sur votre ordinateur. Dernière vérification : il y a 1 heure.}one{Chromium n'a trouvé aucun logiciel nuisible connu sur votre ordinateur. Dernière vérification : il y a {NUM_HOURS} heure.}other{Chromium n'a trouvé aucun logiciel nuisible connu sur votre ordinateur. Dernière vérification : il y a {NUM_HOURS} heures.}}</translation>
diff --git a/chrome/app/resources/chromium_strings_hi.xtb b/chrome/app/resources/chromium_strings_hi.xtb
index c35e7b1..7d4bf7f 100644
--- a/chrome/app/resources/chromium_strings_hi.xtb
+++ b/chrome/app/resources/chromium_strings_hi.xtb
@@ -9,6 +9,7 @@
 <translation id="1131805035311359397">डेटा के गलत इस्तेमाल और सुरक्षा की अन्य समस्याओं से आपके पासवर्ड सुरक्षित हैं या नहीं, इसकी जांच करने के लिए, <ph name="BEGIN_LINK" />क्रोमियम में साइन इन करें<ph name="END_LINK" />.</translation>
 <translation id="1185134272377778587">क्रोमियम के बारे में</translation>
 <translation id="1315551408014407711">क्रोमियम पर अपनी नई प्रोफ़ाइल सेट अप करें</translation>
+<translation id="1357932062193643861">जब क्रोमियम खुले, तब पूछें</translation>
 <translation id="1396446129537741364">क्रोमियम पासवर्ड दिखाने का प्रयास कर रहा है.</translation>
 <translation id="1414495520565016063">आप क्रोमियम में प्रवेश हैं!</translation>
 <translation id="151962892725702025">क्रोमियम OS आपका डेटा समन्वयित नहीं कर सका क्योंकि आपके डोमेन के लिए समन्वयन उपलब्ध नहीं है.</translation>
@@ -183,6 +184,7 @@
 <translation id="6863361426438995919">Google Pay (क्रोमियम पर कॉपी किया गया)</translation>
 <translation id="6893813176749746474">क्रोमियम को अपडेट किया गया है लेकिन आपने इसे कम से कम 30 दिनों से उपयोग नहीं किया है.</translation>
 <translation id="6964305034639999644">क्रोमियम गु&amp;प्त विंडो में लिंक खोलें</translation>
+<translation id="6978145336957848883">कमज़ोर पासवर्ड का अंदाज़ा लगाना आसान होता है. क्रोमियम को <ph name="BEGIN_LINK" />आपके लिए मज़बूत पासवर्ड बनाने और उन्हें याद रखने की अनुमति दें<ph name="END_LINK" />.</translation>
 <translation id="6990124437352146030">क्रोमियम को इस साइट के लिए आपका माइक्रोफ़ोन एक्सेस करने की अनुमति चाहिए</translation>
 <translation id="701244094609242530">क्रोमियम आपके एक्सटेंशन की जांच नहीं कर सकता. बाद में कोशिश करें.</translation>
 <translation id="7028347026395185822">{NUM_HOURS,plural, =1{Chromium को आपके कंप्यूटर पर, नुकसान पहुंचाने वाला कोई ऐसा सॉफ़्टवेयर नहीं मिला जिसके बारे में पहले से जानकारी हो. पिछली जांच: एक घंटा पहले की गई.}one{Chromium को आपके कंप्यूटर पर, नुकसान पहुंचाने वाला कोई ऐसा सॉफ़्टवेयर नहीं मिला जिसके बारे में पहले से जानकारी हो. पिछली जांच: {NUM_HOURS} घंटे पहले की गई.}other{Chromium को आपके कंप्यूटर पर, नुकसान पहुंचाने वाला कोई ऐसा सॉफ़्टवेयर नहीं मिला जिसके बारे में पहले से जानकारी हो. पिछली जांच: {NUM_HOURS} घंटे पहले की गई.}}</translation>
diff --git a/chrome/app/resources/chromium_strings_hu.xtb b/chrome/app/resources/chromium_strings_hu.xtb
index 10002a0c..029d269 100644
--- a/chrome/app/resources/chromium_strings_hu.xtb
+++ b/chrome/app/resources/chromium_strings_hu.xtb
@@ -181,6 +181,7 @@
 <translation id="6863361426438995919">Google Pay (a Chromiumba másolva)</translation>
 <translation id="6893813176749746474">A Chromium frissítése megtörtént, de nem használta a böngészőt legalább 30 napja.</translation>
 <translation id="6964305034639999644">Link megnyitása Chromium-inko&amp;gnitóablakban</translation>
+<translation id="6978145336957848883">A gyenge jelszavakat könnyű kitalálni. Engedélyezze a Chromium számára, hogy <ph name="BEGIN_LINK" /> erős jelszavakat hozzon létre Önnek, és megjegyezze őket<ph name="END_LINK" />.</translation>
 <translation id="6990124437352146030">A Chromiumnak engedélyre van szüksége ahhoz, hogy hozzáférjen a mikrofonhoz ennél a webhelynél</translation>
 <translation id="701244094609242530">A Chromium nem tudja ellenőrizni a bővítményeket. Próbálkozzon később.</translation>
 <translation id="7028347026395185822">{NUM_HOURS,plural, =1{A Chromium nem talált ismert kártékony szoftvert az Ön számítógépén. Legutóbbi keresés: 1 órája.}other{A Chromium nem talált ismert kártékony szoftvert az Ön számítógépén. Legutóbbi keresés: {NUM_HOURS} órája.}}</translation>
diff --git a/chrome/app/resources/chromium_strings_hy.xtb b/chrome/app/resources/chromium_strings_hy.xtb
index 34b85477..0c139d5c 100644
--- a/chrome/app/resources/chromium_strings_hy.xtb
+++ b/chrome/app/resources/chromium_strings_hy.xtb
@@ -185,6 +185,7 @@
 <translation id="6863361426438995919">Google Pay (պատճենվել է Chromium-ում)</translation>
 <translation id="6893813176749746474">Chromium-ը թարմացվել է, սակայն դուք չեք օգտագործել այն առնվազն 30 օր:</translation>
 <translation id="6964305034639999644">Բացել հղումը Chromium-ի ինկ&amp;ոգնիտո պատուհանում</translation>
+<translation id="6978145336957848883">Թույլ գաղտնաբառերը հեշտ է գուշակել։ Թույլատրեք Chromium-ին <ph name="BEGIN_LINK" />գաղտնաբառեր ստեղծել և պահել ձեզ համար<ph name="END_LINK" />։</translation>
 <translation id="6990124437352146030">Chromium-ին այս կայքի համար անհրաժեշտ է ձեր խոսափողն օգտագործելու թույլտվություն</translation>
 <translation id="701244094609242530">Chromium-ը չի կարող ստուգել ձեր ընդլայնումները։ Փորձեք ավելի ուշ։</translation>
 <translation id="7028347026395185822">{NUM_HOURS,plural, =1{Chromium-ը ձեր համակարգչում վնասաբեր ծրագրեր չի հայտնաբերել։ Վերջին անգամ ստուգվել է 1 ժամ առաջ։}one{Chromium-ը ձեր համակարգչում վնասաբեր ծրագրեր չի հայտնաբերել։ Վերջին անգամ ստուգվել է {NUM_HOURS} ժամ առաջ։}other{Chromium-ը ձեր համակարգչում վնասաբեր ծրագրեր չի հայտնաբերել։ Վերջին անգամ ստուգվել է {NUM_HOURS} ժամ առաջ։}}</translation>
diff --git a/chrome/app/resources/chromium_strings_id.xtb b/chrome/app/resources/chromium_strings_id.xtb
index 7827a66a..60685e74 100644
--- a/chrome/app/resources/chromium_strings_id.xtb
+++ b/chrome/app/resources/chromium_strings_id.xtb
@@ -9,6 +9,7 @@
 <translation id="1131805035311359397">Untuk memeriksa apakah sandi Anda aman dari pelanggaran data dan masalah keamanan lainnya, <ph name="BEGIN_LINK" />login ke Chromium<ph name="END_LINK" />.</translation>
 <translation id="1185134272377778587">Tentang Chromium</translation>
 <translation id="1315551408014407711">Siapkan profil Chromium baru Anda</translation>
+<translation id="1357932062193643861">Tanyakan saat Chromium terbuka</translation>
 <translation id="1396446129537741364">Chromium mencoba menampilkan sandi.</translation>
 <translation id="1414495520565016063">Anda sudah masuk ke Chromium!</translation>
 <translation id="151962892725702025">Chromium OS tidak dapat menyinkronkan data Anda karena Sinkronisasi tidak tersedia untuk domain Anda.</translation>
@@ -183,6 +184,7 @@
 <translation id="6863361426438995919">Google Pay (disalin ke Chromium)</translation>
 <translation id="6893813176749746474">Chromium telah diperbarui, tetapi Anda belum menggunakannya selama setidaknya 30 hari.</translation>
 <translation id="6964305034639999644">Buka link di jendela sa&amp;maran Chromium</translation>
+<translation id="6978145336957848883">Sandi yang lemah mudah ditebak. Izinkan Chromium <ph name="BEGIN_LINK" />membuat dan mengingat sandi yang kuat untuk Anda<ph name="END_LINK" />.</translation>
 <translation id="6990124437352146030">Chromium memerlukan izin akses ke mikrofon untuk situs ini</translation>
 <translation id="701244094609242530">Chromium tidak dapat memeriksa ekstensi Anda. Coba lagi nanti.</translation>
 <translation id="7028347026395185822">{NUM_HOURS,plural, =1{Chromium tidak menemukan software berbahaya yang dikenal di komputer Anda. Terakhir diperiksa: 1 jam yang lalu.}other{Chromium tidak menemukan software berbahaya yang dikenal di komputer Anda. Terakhir diperiksa: {NUM_HOURS} jam yang lalu}}</translation>
diff --git a/chrome/app/resources/chromium_strings_is.xtb b/chrome/app/resources/chromium_strings_is.xtb
index 7f36261..c295280 100644
--- a/chrome/app/resources/chromium_strings_is.xtb
+++ b/chrome/app/resources/chromium_strings_is.xtb
@@ -185,6 +185,7 @@
 <translation id="6863361426438995919">Google Pay (afritað í Chromium)</translation>
 <translation id="6893813176749746474">Chromium var uppfært en þú hefur ekki notað það í a.m.k. 30 daga.</translation>
 <translation id="6964305034639999644">Opna tengil í &amp;huliðsglugga í Chromium</translation>
+<translation id="6978145336957848883">Léleg aðgangsorð eru þau sem auðvelt er að giska á. Leyfðu Chromium <ph name="BEGIN_LINK" />að búa til traust aðgangsorð fyrir þig og muna þau<ph name="END_LINK" />.</translation>
 <translation id="6990124437352146030">Chromium þarf leyfi til að nota hljóðnemann á þessu vefsvæði</translation>
 <translation id="701244094609242530">Chromium getur ekki athugað viðbæturnar þínar. Reyndu aftur síðar.</translation>
 <translation id="7028347026395185822">{NUM_HOURS,plural, =1{Chromium fann engan þekktan skaðlegan hugbúnað í tölvunni þinni Síðast athugað: fyrir 1 klukkustund.}one{Chromium fann engan þekktan skaðlegan hugbúnað í tölvunni þinni Síðast athugað: fyrir {NUM_HOURS} klukkustund.}other{Chromium fann engan þekktan skaðlegan hugbúnað í tölvunni þinni Síðast athugað: fyrir {NUM_HOURS} klukkustundum.}}</translation>
diff --git a/chrome/app/resources/chromium_strings_it.xtb b/chrome/app/resources/chromium_strings_it.xtb
index 674d40e..eb05371 100644
--- a/chrome/app/resources/chromium_strings_it.xtb
+++ b/chrome/app/resources/chromium_strings_it.xtb
@@ -183,6 +183,7 @@
 <translation id="6863361426438995919">Google Pay (copiata in Chromium)</translation>
 <translation id="6893813176749746474">Chromium è stato aggiornato ma non lo utilizzi da almeno 30 giorni.</translation>
 <translation id="6964305034639999644">Apri link in una finestra di navigazione in inco&amp;gnito di Chromium</translation>
+<translation id="6978145336957848883">Le password inefficaci sono facili da indovinare. Consenti a Chromium di <ph name="BEGIN_LINK" />creare e memorizzare password efficaci per te<ph name="END_LINK" />.</translation>
 <translation id="6990124437352146030">Per questo sito Chromium ha bisogno dell'autorizzazione ad accedere al microfono</translation>
 <translation id="701244094609242530">Chromium non può controllare le tue estensioni. Riprova più tardi.</translation>
 <translation id="7028347026395185822">{NUM_HOURS,plural, =1{Chromium non ha rilevato software dannoso noto sul computer. Ultima verifica: 1 ora fa.}other{Chromium non ha rilevato software dannoso noto sul computer. Ultima verifica: {NUM_HOURS} ore fa.}}</translation>
diff --git a/chrome/app/resources/chromium_strings_iw.xtb b/chrome/app/resources/chromium_strings_iw.xtb
index 6a38378..3246172 100644
--- a/chrome/app/resources/chromium_strings_iw.xtb
+++ b/chrome/app/resources/chromium_strings_iw.xtb
@@ -160,7 +160,7 @@
 <translation id="6333502561965082103">‏מתבצעת כרגע פעולה אחרת ב-Chromium. נסה שוב מאוחר יותר.</translation>
 <translation id="6334986366598267305">‏קל יותר כעת להשתמש ב-Chromium באמצעות חשבון Google שלך ובמחשבים משותפים.</translation>
 <translation id="6373523479360886564">‏האם אתה בטוח שברצונך להסיר את התקנת Chromium?</translation>
-<translation id="6403826409255603130">‏Chromium הוא דפדפן אינטרנט המפעיל דפי אינטרנט ואפליקציות במהירות הבזק. זהו דפדפן מהיר, יציב וקל לשימוש. תוכל לגלוש באינטרנט בצורה מאובטחת יותר הודות להגנה מפני תוכנות זדוניות ופישינג המובנית ב-Chromium.</translation>
+<translation id="6403826409255603130">‏Chromium הוא דפדפן אינטרנט המפעיל דפי אינטרנט ואפליקציות במהירות הבזק. זהו דפדפן מהיר, יציב וקל לשימוש שמאפשר לך לגלוש באינטרנט בצורה מאובטחת יותר הודות להגנה מפני תוכנות זדוניות ופישינג המובנית ב-Chromium.</translation>
 <translation id="6434250628340475518">‏מערכת Chromium OS</translation>
 <translation id="6457450909262716557">{SECONDS,plural, =1{‏Chromium יבצע אתחול בעוד שנייה אחת}two{‏Chromium יבצע אתחול בעוד # שניות}many{‏Chromium יבצע אתחול בעוד # שניות}other{‏Chromium יבצע אתחול בעוד # שניות}}</translation>
 <translation id="6475912303565314141">‏הגדרה זו גם קובעת איזה דף מוצג כשאתה מפעיל את Chromium.</translation>
@@ -181,6 +181,7 @@
 <translation id="6863361426438995919">‏Google Pay (‏הועתק ל-Chromium)</translation>
 <translation id="6893813176749746474">‏Chromium עודכן, אך לא השתמשת בו לפחות 30 ימים.</translation>
 <translation id="6964305034639999644">‏פתח את הקישור בחלון &amp;גלישה בסתר של Chromium</translation>
+<translation id="6978145336957848883">‏קל לנחש סיסמאות חלשות. באמצעות Chromium אפשר <ph name="BEGIN_LINK" />ליצור ולזכור סיסמאות חזקות<ph name="END_LINK" />.</translation>
 <translation id="6990124437352146030">‏Chromium זקוק להרשאת גישה למיקרופון בשביל האתר הזה</translation>
 <translation id="701244094609242530">‏Chromium לא יכול לבדוק את התוספים שלך. כדאי לנסות שוב מאוחר יותר.</translation>
 <translation id="7028347026395185822">{NUM_HOURS,plural, =1{‏Chromium לא גילה תוכנות מזיקות ידועות במחשב שלך. בדיקה אחרונה: לפני שעה אחת.}two{‏Chromium לא גילה תוכנות מזיקות ידועות במחשב שלך. בדיקה אחרונה: לפני שעתיים ({NUM_HOURS}).}many{‏Chromium לא גילה תוכנות מזיקות ידועות במחשב שלך. בדיקה אחרונה: לפני {NUM_HOURS} שעות.}other{‏Chromium לא גילה תוכנות מזיקות ידועות במחשב שלך. בדיקה אחרונה: לפני {NUM_HOURS} שעות.}}</translation>
diff --git a/chrome/app/resources/chromium_strings_ja.xtb b/chrome/app/resources/chromium_strings_ja.xtb
index 9b73fb32..1cd141f 100644
--- a/chrome/app/resources/chromium_strings_ja.xtb
+++ b/chrome/app/resources/chromium_strings_ja.xtb
@@ -183,6 +183,7 @@
 <translation id="6863361426438995919">Google Pay(Chromium にコピー)</translation>
 <translation id="6893813176749746474">Chromium が更新されましたが、30 日以上使用されていません。</translation>
 <translation id="6964305034639999644">Chromium のシークレット ウインドウでリンクを開く(&amp;G)</translation>
+<translation id="6978145336957848883">脆弱なパスワードは簡単に推測されてしまいます。Chromium で<ph name="BEGIN_LINK" />安全性の高いパスワードを自動生成して保存する<ph name="END_LINK" />ことができます。</translation>
 <translation id="6990124437352146030">このサイトを利用するには、Chromium でマイクの使用を許可する必要があります</translation>
 <translation id="701244094609242530">Chromium で拡張機能を確認できません。しばらくしてからもう一度お試しください。</translation>
 <translation id="7028347026395185822">{NUM_HOURS,plural, =1{お使いのパソコンに既知の有害なソフトウェアは見つかりませんでした。前回の確認: 1 時間前。}other{お使いのパソコンに既知の有害なソフトウェアは見つかりませんでした。前回の確認: {NUM_HOURS} 時間前。}}</translation>
diff --git a/chrome/app/resources/chromium_strings_ka.xtb b/chrome/app/resources/chromium_strings_ka.xtb
index 868c5a9a..c7d8c72 100644
--- a/chrome/app/resources/chromium_strings_ka.xtb
+++ b/chrome/app/resources/chromium_strings_ka.xtb
@@ -11,6 +11,7 @@
 <translation id="1131805035311359397"><ph name="BEGIN_LINK" />შედით Chromium-ში<ph name="END_LINK" />, რომ შეამოწმოთ, შეეხო თუ არა პერსონალურ მონაცემთა გაჟონვის შემთხვევები და უსაფრთხოებასთან დაკავშირებული პრობლემები თქვენს პაროლებს.</translation>
 <translation id="1185134272377778587">Chromium-ის შესახებ</translation>
 <translation id="1315551408014407711">შექმენით ახალი Chromium პროფილი</translation>
+<translation id="1357932062193643861">შეკითხვა Chromium-ის გახსნისას</translation>
 <translation id="1396446129537741364">Chromium ცდილობს პაროლების ჩვენებას.</translation>
 <translation id="1414495520565016063">თქვენ შესული ხართ Chromium-ში!</translation>
 <translation id="151962892725702025">Chromium OS-ის საშუალებით ვერ მოხერხდა თქვენი მონაცემების სინქრონიზაცია, რადგან თქვენს დომენზე სინქრონიზაცია მიუწვდომელია.</translation>
diff --git a/chrome/app/resources/chromium_strings_kk.xtb b/chrome/app/resources/chromium_strings_kk.xtb
index 8fef9e6..40ae32a 100644
--- a/chrome/app/resources/chromium_strings_kk.xtb
+++ b/chrome/app/resources/chromium_strings_kk.xtb
@@ -185,6 +185,7 @@
 <translation id="6863361426438995919">Google Pay (Chromium браузеріне көшірілген)</translation>
 <translation id="6893813176749746474">Chromium жаңартылды, бірақ оны кемінде 30 күн пайдаланбадыңыз.</translation>
 <translation id="6964305034639999644">Сілтемені Chromium инкогнито терезесінде ашу</translation>
+<translation id="6978145336957848883">Құпия сөзіңіз оңай болса, оны табу да оңай. Chromium браузеріне <ph name="BEGIN_LINK" />күрделі құпия сөздер жасауға және сақтауға<ph name="END_LINK" /> мүмкіндік беріңіз.</translation>
 <translation id="6990124437352146030">Chromium браузеріне бұл сайтта микрофонды пайдалану үшін рұқсат керек</translation>
 <translation id="701244094609242530">Chromium сіздің барлық құпия сөзіңізді тексере алмайды. Кейінірек қайталап көріңіз.</translation>
 <translation id="7028347026395185822">{NUM_HOURS,plural, =1{Chromium компьютерден ешқандай белгілі зиянды бағдарламалық құралды таппады. Соңғы тексерілген уақыты: 1 сағат бұрын.}other{Chromium компьютерден ешқандай белгілі зиянды бағдарламалық құралды таппады. Соңғы тексерілген уақыты: {NUM_HOURS} сағат бұрын.}}</translation>
diff --git a/chrome/app/resources/chromium_strings_km.xtb b/chrome/app/resources/chromium_strings_km.xtb
index 435de40a..fa47f06 100644
--- a/chrome/app/resources/chromium_strings_km.xtb
+++ b/chrome/app/resources/chromium_strings_km.xtb
@@ -11,6 +11,7 @@
 <translation id="1131805035311359397">ដើម្បីពិនិត្យមើលថា​តើពាក្យសម្ងាត់​របស់អ្នក​មានសុវត្ថិភាពពី​ការបែកធ្លាយ​ទិន្នន័យ និងបញ្ហាសុវត្ថិភាព​ផ្សេងទៀតឬអត់ សូម​<ph name="BEGIN_LINK" />ចូល Chromium<ph name="END_LINK" />។</translation>
 <translation id="1185134272377778587">អំពី Chromium</translation>
 <translation id="1315551408014407711">រៀបចំ​កម្រងព័ត៌មាន Chromium ថ្មី​របស់អ្នក</translation>
+<translation id="1357932062193643861">សួរ​នៅពេល Chromium បើក</translation>
 <translation id="1396446129537741364">Chromium កំពុងព្យាយាមបង្ហាញពាក្យសម្ងាត់។</translation>
 <translation id="1414495520565016063">អ្នកបានចូលមកកាន់ Chromium!</translation>
 <translation id="151962892725702025">Chromium OS  មិនអាចធ្វើសមកម្មទិន្នន័យរបស់អ្នកទេ ពីព្រោះ សមកម្ម មិនមានសម្រាប់ដែនរបស់អ្នកទេ។</translation>
@@ -186,6 +187,7 @@
 <translation id="6863361426438995919">Google Pay (បាន​ចម្លង​ទៅ Chromium)</translation>
 <translation id="6893813176749746474">Chromium ត្រូវបានធ្វើបច្ចុប្បន្នភាព ប៉ុន្តែអ្នកមិនអាចប្រើវារយៈពេលយ៉ាងហោចណាស់ 30 ថ្ងៃ។</translation>
 <translation id="6964305034639999644">បើក​តំណ​នៅក្នុងវិនដូ​ឯកជន Chromium</translation>
+<translation id="6978145336957848883">ពាក្យសម្ងាត់ខ្សោយ​មានភាពងាយស្រួលក្នុងការ​ទាយដឹង​។ អនុញ្ញាតឱ្យ Chromium <ph name="BEGIN_LINK" />បង្កើត និងចងចាំពាក្យសម្ងាត់ខ្លាំងសម្រាប់អ្នក<ph name="END_LINK" />។</translation>
 <translation id="6990124437352146030">Chromium ត្រូវ​ការ​ការអនុញ្ញាត​ដើម្បី​ចូល​ប្រើ​មីក្រូហ្វូន​របស់អ្នក​សម្រាប់ទំព័រនេះ</translation>
 <translation id="701244094609242530">Chromium មិនអាចពិនិត្យ​កម្មវិធី​បន្ថែម​របស់អ្នកបានទេ។ សូមព្យាយាមម្តងទៀតនៅពេលក្រោយ។</translation>
 <translation id="7028347026395185822">{NUM_HOURS,plural, =1{Chromium រកមិនឃើញកម្មវិធីបង្កគ្រោះថ្នាក់ដែលស្គាល់នៅលើកុំព្យូទ័ររបស់អ្នកទេ។ បាន​ពិនិត្យមើល​លើកចុងក្រោយ៖ 1 ម៉ោងមុន។}other{Chromium រកមិនឃើញកម្មវិធីបង្កគ្រោះថ្នាក់ដែលស្គាល់នៅលើកុំព្យូទ័ររបស់អ្នកទេ។ បាន​ពិនិត្យមើល​លើកចុងក្រោយ៖ {NUM_HOURS} ម៉ោងមុន។}}</translation>
diff --git a/chrome/app/resources/chromium_strings_ko.xtb b/chrome/app/resources/chromium_strings_ko.xtb
index 0003d0ce..d9b8e66 100644
--- a/chrome/app/resources/chromium_strings_ko.xtb
+++ b/chrome/app/resources/chromium_strings_ko.xtb
@@ -11,6 +11,7 @@
 <translation id="1131805035311359397">암호가 정보 유출 및 다른 보안 문제로부터 안전한지 확인하려면 <ph name="BEGIN_LINK" />Chromium에 로그인<ph name="END_LINK" />하세요.</translation>
 <translation id="1185134272377778587">Chromium 정보</translation>
 <translation id="1315551408014407711">새 Chromium 프로필 설정</translation>
+<translation id="1357932062193643861">Chromium이 열릴 때 확인</translation>
 <translation id="1396446129537741364">Chromium이 비밀번호를 표시하려고 합니다.</translation>
 <translation id="1414495520565016063">Chromium에 로그인했습니다.</translation>
 <translation id="151962892725702025">내 도메인에서 동기화를 사용할 수 없으므로 Chromium OS에서 데이터를 동기화하지 못했습니다.</translation>
@@ -185,6 +186,7 @@
 <translation id="6863361426438995919">Google Pay(Chromium에 복사됨)</translation>
 <translation id="6893813176749746474">Chromium이 업데이트되었지만, 최소 30일 동안 사용하지 않았습니다.</translation>
 <translation id="6964305034639999644">Chromium 시크릿 창에서 링크 열기(&amp;G)</translation>
+<translation id="6978145336957848883">취약한 비밀번호는 추측하기 쉽습니다. Chromium에서 <ph name="BEGIN_LINK" />안전한 비밀번호를 생성하고 기억하도록 설정<ph name="END_LINK" />하세요.</translation>
 <translation id="6990124437352146030">이 사이트에서 마이크에 액세스하려면 Chromium에 권한이 필요합니다</translation>
 <translation id="701244094609242530">Chromium에서 확장 프로그램을 확인할 수 없습니다. 나중에 다시 시도하세요.</translation>
 <translation id="7028347026395185822">{NUM_HOURS,plural, =1{Chromium이 컴퓨터에서 알려진 유해 소프트웨어를 발견하지 못했습니다. 1시간 전에 마지막으로 확인했습니다.}other{Chromium이 컴퓨터에서 알려진 유해 소프트웨어를 발견하지 못했습니다. {NUM_HOURS}시간 전에 마지막으로 확인했습니다.}}</translation>
diff --git a/chrome/app/resources/chromium_strings_ky.xtb b/chrome/app/resources/chromium_strings_ky.xtb
index d3abe3b..6b38397 100644
--- a/chrome/app/resources/chromium_strings_ky.xtb
+++ b/chrome/app/resources/chromium_strings_ky.xtb
@@ -185,6 +185,7 @@
 <translation id="6863361426438995919">Google Pay (Chromium'га көчүрүлдү)</translation>
 <translation id="6893813176749746474">Chromium жаңырды, бирок аны 30 күндөн бери колдоно элексиз.</translation>
 <translation id="6964305034639999644">Шилтемени Chromium'дун жашы&amp;руун терезесинде ачуу</translation>
+<translation id="6978145336957848883">Начар сырсөздөрдү билип алуу оңой. Chromium'га <ph name="BEGIN_LINK" />сиз үчүн татаал сырсөздөрдү түзүп, эстеп калууга<ph name="END_LINK" /> уруксат бериңиз.</translation>
 <translation id="6990124437352146030">Бул сайтта иштөө үчүн Chromium микрофонуңузду колдонушу керек</translation>
 <translation id="701244094609242530">Chromium кеңейтүүлөрүңүздү текшере албай жатат. Кийинчерээк кайталаңыз.</translation>
 <translation id="7028347026395185822">{NUM_HOURS,plural, =1{Chromium компьютериңизде белгилүү болгон кооптуу программаны тапкан жок. Акыркы жолу качан текшерилген: 1 саат мурун.}other{Chromium компьютериңизде белгилүү болгон кооптуу программаны тапкан жок. Акыркы жолу качан текшерилген: {NUM_HOURS} саат мурун.}}</translation>
diff --git a/chrome/app/resources/chromium_strings_lo.xtb b/chrome/app/resources/chromium_strings_lo.xtb
index 8d89c0d0..43a799a 100644
--- a/chrome/app/resources/chromium_strings_lo.xtb
+++ b/chrome/app/resources/chromium_strings_lo.xtb
@@ -11,6 +11,7 @@
 <translation id="1131805035311359397">ເພື່ອກວດເບິ່ງວ່າລະຫັດຜ່ານຂອງທ່ານປອດໄພຈາກການລະເມີດຂໍ້ມູນ ແລະ ບັນຫາຄວາມປອດໄພອື່ນຫຼືບໍ່, ກະລຸນາ <ph name="BEGIN_LINK" />ເຂົ້າສູ່ລະບົບ Chromium<ph name="END_LINK" />.</translation>
 <translation id="1185134272377778587">ກ່ຽວ​ກັບ Chromium</translation>
 <translation id="1315551408014407711">ຕັ້ງຄ່າໂປຣໄຟລ໌ Chromium ໃໝ່ຂອງທ່ານ</translation>
+<translation id="1357932062193643861">ຖາມເມື່ອ Chromium ເປີດ</translation>
 <translation id="1396446129537741364">Chromium ກໍາລັງພະຍາຍາມສະແດງລະຫັດຜ່ານ.</translation>
 <translation id="1414495520565016063">ທ່ານ​ລົງຊື່ເຂົ້າ​ໃຊ້ Chromium ແລ້ວ​!</translation>
 <translation id="151962892725702025">Chromium OS ບໍ່​ສາ​ມາດຊິງຄ໌ຂໍ້​ມູນ​ຂອງ​ທ່ານໄດ້ ເພາະວ່າບໍ່ມີການຊິງຄ໌ຢູ່ໃນໂດເມນຂອງທ່ານ.</translation>
diff --git a/chrome/app/resources/chromium_strings_lt.xtb b/chrome/app/resources/chromium_strings_lt.xtb
index 1c2081df..4e2e46e 100644
--- a/chrome/app/resources/chromium_strings_lt.xtb
+++ b/chrome/app/resources/chromium_strings_lt.xtb
@@ -185,6 +185,7 @@
 <translation id="6863361426438995919">„Google Pay“ (nukopijuota į „Chromium“)</translation>
 <translation id="6893813176749746474">„Chromium“ atnaujinta, bet jos nenaudojote mažiausiai 30 dienų.</translation>
 <translation id="6964305034639999644">Atidaryti nuorodą „Chromium“ inko&amp;gnito lange</translation>
+<translation id="6978145336957848883">Nesudėtingus slaptažodžius lengva atspėti. Leiskite „Chromium“ <ph name="BEGIN_LINK" />jums sukurti ir įsiminti sudėtingus slaptažodžius<ph name="END_LINK" />.</translation>
 <translation id="6990124437352146030">„Chromium“ reikia leidimo, kad galėtų naudoti mikrofoną šioje svetainėje</translation>
 <translation id="701244094609242530">„Chromium“ negali patikrinti jūsų plėtinių. Vėliau bandykite dar kartą.</translation>
 <translation id="7028347026395185822">{NUM_HOURS,plural, =1{„Chromium“ kompiuteryje nerado žinomos žalingos programinės įrangos. Paskutinį kartą tikrinta prieš 1 valandą.}one{„Chromium“ kompiuteryje nerado žinomos žalingos programinės įrangos. Paskutinį kartą tikrinta: prieš {NUM_HOURS} valandą.}few{„Chromium“ kompiuteryje nerado žinomos žalingos programinės įrangos. Paskutinį kartą tikrinta: prieš {NUM_HOURS} valandas.}many{„Chromium“ kompiuteryje nerado žinomos žalingos programinės įrangos. Paskutinį kartą tikrinta: prieš {NUM_HOURS} valandos.}other{„Chromium“ kompiuteryje nerado žinomos žalingos programinės įrangos. Paskutinį kartą tikrinta: prieš {NUM_HOURS} valandų.}}</translation>
diff --git a/chrome/app/resources/chromium_strings_lv.xtb b/chrome/app/resources/chromium_strings_lv.xtb
index 80078e0..58de24b 100644
--- a/chrome/app/resources/chromium_strings_lv.xtb
+++ b/chrome/app/resources/chromium_strings_lv.xtb
@@ -183,6 +183,7 @@
 <translation id="6863361426438995919">Google Pay (kopēts pārlūkā Chromium)</translation>
 <translation id="6893813176749746474">Pārlūks Chromium ir atjaunināts, bet jūs neesat to izmantojis vismaz 30 dienas.</translation>
 <translation id="6964305034639999644">Atvērt saiti inko&amp;gnito režīma logā</translation>
+<translation id="6978145336957848883">Nedrošas paroles ir viegli uzminēt. Pārlūkā Chromium <ph name="BEGIN_LINK" />var automātiski veidot un iegaumēt drošas paroles jūsu kontiem<ph name="END_LINK" />.</translation>
 <translation id="6990124437352146030">Pārlūkam Chromium ir nepieciešama atļauja piekļūt jūsu mikrofonam šajā vietnē.</translation>
 <translation id="701244094609242530">Pārlūkprogrammā Chromium nevar pārbaudīt jūsu paplašinājumus. Vēlāk mēģiniet vēlreiz.</translation>
 <translation id="7028347026395185822">{NUM_HOURS,plural, =1{Chromium jūsu datorā neatrada zināmu kaitīgu programmatūru. Pēdējoreiz pārbaudīts: pirms 1 stundas.}zero{Chromium jūsu datorā neatrada zināmu kaitīgu programmatūru. Pēdējoreiz pārbaudīts: pirms {NUM_HOURS} stundām.}one{Chromium jūsu datorā neatrada zināmu kaitīgu programmatūru. Pēdējoreiz pārbaudīts: pirms {NUM_HOURS} stundas.}other{Chromium jūsu datorā neatrada zināmu kaitīgu programmatūru. Pēdējoreiz pārbaudīts: pirms {NUM_HOURS} stundām.}}</translation>
diff --git a/chrome/app/resources/chromium_strings_mn.xtb b/chrome/app/resources/chromium_strings_mn.xtb
index 8e7fef3..0b9c965 100644
--- a/chrome/app/resources/chromium_strings_mn.xtb
+++ b/chrome/app/resources/chromium_strings_mn.xtb
@@ -11,6 +11,7 @@
 <translation id="1131805035311359397">Нууц үгнүүддээ өгөгдлийн зөрчил болон аюулгүй байдлын өөр асуудал байхгүй болохыг шалгахын тулд <ph name="BEGIN_LINK" />Chromium-д нэвтэрнэ үү<ph name="END_LINK" />.</translation>
 <translation id="1185134272377778587">Chromium-ийн тухай</translation>
 <translation id="1315551408014407711">Chromium-н шинэ профайлаа тохируулах</translation>
+<translation id="1357932062193643861">Chromium-г нээх үед асуух</translation>
 <translation id="1396446129537741364">Chromium нь нууц үгийг үзүүлэхээр ачаалж байна.</translation>
 <translation id="1414495520565016063">Та Chromium руу нэвтэрсэн байна!</translation>
 <translation id="151962892725702025">Chromium-ийн үйлдлийн систем нь таны датаг синхрончлох боломжгүй байна. Учир нь таны домайнд Синх хийх боломжгүй.</translation>
diff --git a/chrome/app/resources/chromium_strings_ms.xtb b/chrome/app/resources/chromium_strings_ms.xtb
index c89088f0..c4c90737 100644
--- a/chrome/app/resources/chromium_strings_ms.xtb
+++ b/chrome/app/resources/chromium_strings_ms.xtb
@@ -9,6 +9,7 @@
 <translation id="1131805035311359397">Untuk menyemak sama ada kata laluan anda selamat daripada pelanggaran data dan isu keselamatan lain, <ph name="BEGIN_LINK" />log masuk ke Chromium<ph name="END_LINK" />.</translation>
 <translation id="1185134272377778587">Mengenai Chromium</translation>
 <translation id="1315551408014407711">Sediakan profil Chromium baharu anda</translation>
+<translation id="1357932062193643861">Tanya apabila Chromium dibuka</translation>
 <translation id="1396446129537741364">Chromium sedang cuba memaparkan kata laluan.</translation>
 <translation id="1414495520565016063">Anda log masuk ke Chromium!</translation>
 <translation id="151962892725702025">OS Chromium tidak dapat menyegerakkan data anda kerana Segerak tidak tersedia untuk domain anda.</translation>
@@ -183,6 +184,7 @@
 <translation id="6863361426438995919">Google Pay (disalin ke Chromium)</translation>
 <translation id="6893813176749746474">Chromium telah dikemas kini, tetapi anda belum menggunakannya untuk sekurang-kurangnya 30 hari.</translation>
 <translation id="6964305034639999644">Buka pautan dalam tetingkap inko&amp;gnito Chromium</translation>
+<translation id="6978145336957848883">Kata laluan lemah mudah diteka. Biar Chromium <ph name="BEGIN_LINK" />membuat dan mengingat kata laluan kukuh untuk anda<ph name="END_LINK" />.</translation>
 <translation id="6990124437352146030">Chromium memerlukan kebenaran untuk mengakses mikrofon anda bagi tapak ini</translation>
 <translation id="701244094609242530">Chromium tidak dapat menyemak sambungan anda. Cuba lagi nanti.</translation>
 <translation id="7028347026395185822">{NUM_HOURS,plural, =1{Chromium tidak menemukan perisian berbahaya yang diketahui pada komputer anda. Terakhir disemak: sejam yang lalu.}other{Chromium tidak menemukan perisian berbahaya yang diketahui pada komputer anda. Terakhir disemak: {NUM_HOURS} jam yang lalu.}}</translation>
diff --git a/chrome/app/resources/chromium_strings_my.xtb b/chrome/app/resources/chromium_strings_my.xtb
index d953ceb..20cfb29 100644
--- a/chrome/app/resources/chromium_strings_my.xtb
+++ b/chrome/app/resources/chromium_strings_my.xtb
@@ -11,6 +11,7 @@
 <translation id="1131805035311359397">သင်၏စကားဝှက်များတွင် ဒေတာပေါက်ကြားမှုနှင့် အခြားသော လုံခြုံရေးပြဿနာများ ရှိ၊ မရှိ စစ်ဆေးရန် <ph name="BEGIN_LINK" />Chromium သို့ လက်မှတ်ထိုးဝင်ပါ<ph name="END_LINK" />။</translation>
 <translation id="1185134272377778587">Chromium အကြောင်း</translation>
 <translation id="1315551408014407711">သင်၏ Chromium ပရိုဖိုင်အသစ်ကို စနစ်ထည့်သွင်းပါ</translation>
+<translation id="1357932062193643861">Chromium ပွင့်သောအခါ ခွင့်တောင်းရန်</translation>
 <translation id="1396446129537741364">Chromium က စကားဝှက်များကို ပြရန် ကြိုးစားနေသည်။</translation>
 <translation id="1414495520565016063">သင်သည် Chromium သို့ဝင်ရောက်ပြီးဖြစ်သည်!</translation>
 <translation id="151962892725702025">သင့် ဒိုမိန်း အတွက် စင့်က် မရရှိနိုင်သောကြောင့် Chromium OS သည် သင်၏ ဒေတာကို စင့်က် မလုပ်နိုင်ခဲ့ပါ။</translation>
@@ -187,6 +188,7 @@
 <translation id="6863361426438995919">Google Pay (Chromium သို့ မိတ္တူကူးထားသည်)</translation>
 <translation id="6893813176749746474">Chromium ကို မွမ်းမံပြီးသွားပြီ၊ သို့သော် သင်သည် ၎င်းကို အနည်းဆုံးအားဖြင့် ရက် ၃၀ အတွင်းမှာ မသုံးခဲ့ပါ။</translation>
 <translation id="6964305034639999644">Chromium ရုပ်ဖျက်ဝင်းဒိုးတွင် လင့်ခ်ကို ဖွင့်ရန်</translation>
+<translation id="6978145336957848883">လုံခြုံမှုလျော့နည်းသည့် စကားဝှက်များကို အလွယ်တကူ ခန့်မှန်းနိုင်သည်။ <ph name="BEGIN_LINK" />သင့်အတွက် လုံခြုံမှုမြင့်သည့်စကားဝှက်များ ပြုလုပ်ပြီး မှတ်ထားရန်<ph name="END_LINK" /> Chromium ကို ခွင့်ပြုပါ။</translation>
 <translation id="6990124437352146030">ဤဝဘ်ဆိုက်အတွက် Chromium သည် သင်၏ မိုက်ခရိုဖုန်းကို အသုံးပြုခွင့်ရရန် လိုအပ်ပါသည်</translation>
 <translation id="701244094609242530">Chromium က သင့်နောက်ဆက်တွဲများကို စစ်ဆေး၍မရပါ။ နောက်မှ ထပ်စမ်းကြည့်ပါ။</translation>
 <translation id="7028347026395185822">{NUM_HOURS,plural, =1{Chromium သည် အန္တရာယ်ရှိသည်ဟု သိထားသော မည်သည့်ဆော့ဖ်ဝဲကိုမျှ သင့်ကွန်ပျူတာတွင် ရှာမတွေ့ပါ။ နောက်ဆုံးစစ်ဆေးမှု- ပြီးခဲ့သော 1 နာရီ။}other{Chromium သည် အန္တရာယ်ရှိသည်ဟု သိထားသော မည်သည့်ဆော့ဖ်ဝဲကိုမျှ သင့်ကွန်ပျူတာတွင် ရှာမတွေ့ပါ။ နောက်ဆုံးစစ်ဆေးမှု- ပြီးခဲ့သော {NUM_HOURS} နာရီ။}}</translation>
diff --git a/chrome/app/resources/chromium_strings_nl.xtb b/chrome/app/resources/chromium_strings_nl.xtb
index 095a782a..b2f4931 100644
--- a/chrome/app/resources/chromium_strings_nl.xtb
+++ b/chrome/app/resources/chromium_strings_nl.xtb
@@ -11,6 +11,7 @@
 <translation id="1131805035311359397">Als je wilt checken of je wachtwoorden zijn beveiligd tegen gegevenslekken en andere beveiligingsproblemen, <ph name="BEGIN_LINK" />log je in bij Chromium<ph name="END_LINK" />.</translation>
 <translation id="1185134272377778587">Over Chromium</translation>
 <translation id="1315551408014407711">Je nieuwe Chromium-profiel instellen</translation>
+<translation id="1357932062193643861">Vragen als Chromium wordt geopend</translation>
 <translation id="1396446129537741364">Chromium probeert wachtwoorden weer te geven.</translation>
 <translation id="1414495520565016063">Je bent ingelogd bij Chromium.</translation>
 <translation id="151962892725702025">Chromium OS kan je gegevens niet synchroniseren omdat synchronisatie niet beschikbaar is voor je domein.</translation>
diff --git a/chrome/app/resources/chromium_strings_pt-PT.xtb b/chrome/app/resources/chromium_strings_pt-PT.xtb
index 2c80de2a..212a36d 100644
--- a/chrome/app/resources/chromium_strings_pt-PT.xtb
+++ b/chrome/app/resources/chromium_strings_pt-PT.xtb
@@ -183,6 +183,7 @@
 <translation id="6863361426438995919">Google Pay (copiado para o Chromium)</translation>
 <translation id="6893813176749746474">O Chromium foi atualizado, mas já não o utiliza há, pelo menos, 30 dias.</translation>
 <translation id="6964305034639999644">Abrir link numa janela de nave&amp;gação anónima do Chromium</translation>
+<translation id="6978145336957848883">As palavras-passe fracas são fáceis de adivinhar. Permita que o Chromium <ph name="BEGIN_LINK" />crie e memorize palavra-passes fortes<ph name="END_LINK" />.</translation>
 <translation id="6990124437352146030">O Chromium necessita de autorização de acesso ao microfone para este site.</translation>
 <translation id="701244094609242530">O Chromium não consegue verificar as suas extensões. Tente novamente mais tarde.</translation>
 <translation id="7028347026395185822">{NUM_HOURS,plural, =1{O Chromium não encontrou software prejudicial conhecido no seu computador. Última verificação: há 1 hora.}other{O Chromium não encontrou software prejudicial conhecido no seu computador. Última verificação: há {NUM_HOURS} horas.}}</translation>
diff --git a/chrome/app/resources/chromium_strings_ro.xtb b/chrome/app/resources/chromium_strings_ro.xtb
index e67cb26..25b82ea 100644
--- a/chrome/app/resources/chromium_strings_ro.xtb
+++ b/chrome/app/resources/chromium_strings_ro.xtb
@@ -183,6 +183,7 @@
 <translation id="6863361426438995919">Google Pay (copiat în Chromium)</translation>
 <translation id="6893813176749746474">Chromium a fost actualizat, dar nu l-ați utilizat de cel puțin 30 de zile.</translation>
 <translation id="6964305034639999644">Deschide linkul într-o fereastră Chromium inco&amp;gnito</translation>
+<translation id="6978145336957848883">Parolele slabe sunt ușor de ghicit. Permite browserului Chromium <ph name="BEGIN_LINK" />să creeze și să memoreze parole puternice pentru tine<ph name="END_LINK" />.</translation>
 <translation id="6990124437352146030">Chromium are nevoie de permisiune ca să acceseze microfonul pentru acest site</translation>
 <translation id="701244094609242530">Chromium nu îți poate verifica extensiile. Încearcă din nou mai târziu.</translation>
 <translation id="7028347026395185822">{NUM_HOURS,plural, =1{Chromium nu a găsit software dăunător cunoscut pe computer. Ultima verificare: acum o oră.}few{Chromium nu a găsit software dăunător cunoscut pe computer. Ultima verificare: acum {NUM_HOURS} ore.}other{Chromium nu a găsit software dăunător cunoscut pe computer. Ultima verificare: acum {NUM_HOURS} de ore.}}</translation>
diff --git a/chrome/app/resources/chromium_strings_ru.xtb b/chrome/app/resources/chromium_strings_ru.xtb
index fbeb360..d33bcc7 100644
--- a/chrome/app/resources/chromium_strings_ru.xtb
+++ b/chrome/app/resources/chromium_strings_ru.xtb
@@ -181,6 +181,7 @@
 <translation id="6863361426438995919">Google Pay (скопирована в Chromium)</translation>
 <translation id="6893813176749746474">Chromium был обновлен, однако вы не использовали его в течение последних 30 дней.</translation>
 <translation id="6964305034639999644">Открыть ссылку в режиме инкогнито браузера Chromium</translation>
+<translation id="6978145336957848883">Простые пароли легко подобрать. Разрешите Chromium <ph name="BEGIN_LINK" />создавать и хранить надежные пароли для вас<ph name="END_LINK" />.</translation>
 <translation id="6990124437352146030">Для этого сайта Chromium запрашивает доступ к микрофону.</translation>
 <translation id="701244094609242530">Не удается запустить проверку паролей в Chromium. Повторите попытку позже.</translation>
 <translation id="7028347026395185822">{NUM_HOURS,plural, =1{Браузер Chromium не обнаружил на вашем компьютере вредоносное ПО. Последняя проверка: 1 час назад.}one{Браузер Chromium не обнаружил на вашем компьютере вредоносное ПО. Последняя проверка: {NUM_HOURS} час назад.}few{Браузер Chromium не обнаружил на вашем компьютере вредоносное ПО. Последняя проверка: {NUM_HOURS} часа назад.}many{Браузер Chromium не обнаружил на вашем компьютере вредоносное ПО. Последняя проверка: {NUM_HOURS} часов назад.}other{Браузер Chromium не обнаружил на вашем компьютере вредоносное ПО. Последняя проверка: {NUM_HOURS} часа назад.}}</translation>
diff --git a/chrome/app/resources/chromium_strings_si.xtb b/chrome/app/resources/chromium_strings_si.xtb
index 1bedd8a..3fe8afb7 100644
--- a/chrome/app/resources/chromium_strings_si.xtb
+++ b/chrome/app/resources/chromium_strings_si.xtb
@@ -185,6 +185,7 @@
 <translation id="6863361426438995919">Google Pay (Chromium වෙත පිටපත් කෙරිණි)</translation>
 <translation id="6893813176749746474">Chromium යාවත්කාල වී ඇත. නමුත් ඔබ එය අවම වශයෙන් දින 30ක් වත් භාවිත කර නොමැත.</translation>
 <translation id="6964305034639999644">සබැඳිය Chromium අ&amp;ප්‍රසිද්ධ කවුළුව තුළ විවෘත කරන්න</translation>
+<translation id="6978145336957848883">දුර්වල මුරපද අනුමානය කිරීමට පහසුයි. <ph name="BEGIN_LINK" />ඔබ සඳහා ප්‍රබල මුරපද තැනීමට සහ මතක තබා ගැනීමට<ph name="END_LINK" /> Chromium හට ඉඩ දෙන්න.</translation>
 <translation id="6990124437352146030">Chromium හට මෙම අඩවිය සදහා ඔබේ මයික්‍රෆෝනයට ප්‍රවේශ වීමට අවසර අවශ්‍යයි</translation>
 <translation id="701244094609242530">Chromium හට ඔබේ දිගු පරීක්‍ෂා කළ නොහැක. පසුව නැවත උත්සාහ කරන්න.</translation>
 <translation id="7028347026395185822">{NUM_HOURS,plural, =1{Chromium හට ඔබේ පරිගණකයේ දන්නා හානිකර මෘදුකාංග හමු නොවීය. අවසන් වරට පරීක්ෂා කළේ: පැය 1කට පෙර.}one{Chromium හට ඔබේ පරිගණකයේ දන්නා හානිකර මෘදුකාංග හමු නොවීය. අවසන් වරට පරීක්ෂා කළේ: පැය {NUM_HOURS}කට පෙර.}other{Chromium හට ඔබේ පරිගණකයේ දන්නා හානිකර මෘදුකාංග හමු නොවීය. අවසන් වරට පරීක්ෂා කළේ: පැය {NUM_HOURS}කට පෙර.}}</translation>
diff --git a/chrome/app/resources/chromium_strings_sl.xtb b/chrome/app/resources/chromium_strings_sl.xtb
index 2f6984e..03e2ad5 100644
--- a/chrome/app/resources/chromium_strings_sl.xtb
+++ b/chrome/app/resources/chromium_strings_sl.xtb
@@ -185,6 +185,7 @@
 <translation id="6863361426438995919">Google Pay (kopirano v Chromium)</translation>
 <translation id="6893813176749746474">Chromium je posodobljen, vendar ga niste uporabljali najmanj 30 dni.</translation>
 <translation id="6964305034639999644">Odpri povezavo v Chromiumovem oknu brez bele&amp;ženja zgodovine</translation>
+<translation id="6978145336957848883">Šibka gesla je preprosto ugotoviti. Chromiumu omogočite, da <ph name="BEGIN_LINK" />ustvari zapletena gesla za vas in jih shrani<ph name="END_LINK" />.</translation>
 <translation id="6990124437352146030">Chromium potrebuje dovoljenje za dostop do mikrofona za to spletno mesto</translation>
 <translation id="701244094609242530">Chromium ne more preveriti razširitev. Poskusite pozneje.</translation>
 <translation id="7028347026395185822">{NUM_HOURS,plural, =1{Chromium v računalniku ni odkril škodljive programske opreme. Nazadnje preverjeno: Pred 1 uro.}one{Chromium v računalniku ni odkril škodljive programske opreme. Nazadnje preverjeno: Pred {NUM_HOURS} uro.}two{Chromium v računalniku ni odkril škodljive programske opreme. Nazadnje preverjeno: Pred {NUM_HOURS} urama.}few{Chromium v računalniku ni odkril škodljive programske opreme. Nazadnje preverjeno: Pred {NUM_HOURS} urami.}other{Chromium v računalniku ni odkril škodljive programske opreme. Nazadnje preverjeno: Pred {NUM_HOURS} urami.}}</translation>
diff --git a/chrome/app/resources/chromium_strings_sq.xtb b/chrome/app/resources/chromium_strings_sq.xtb
index 03facbaa..d225a5f 100644
--- a/chrome/app/resources/chromium_strings_sq.xtb
+++ b/chrome/app/resources/chromium_strings_sq.xtb
@@ -11,6 +11,7 @@
 <translation id="1131805035311359397">Për të kontrolluar nëse fjalëkalimet e tua janë të sigurta nga nxjerrjet e paautorizuara të të dhënave dhe probleme të tjera të sigurisë, <ph name="BEGIN_LINK" />identifikohu në Chromium<ph name="END_LINK" />.</translation>
 <translation id="1185134272377778587">Rreth Chromium</translation>
 <translation id="1315551408014407711">Konfiguro profilin tënd të ri të Chromium</translation>
+<translation id="1357932062193643861">Pyet kur të hapet Chromium</translation>
 <translation id="1396446129537741364">Chromium po përpiqet të shfaqë fjalëkalimet.</translation>
 <translation id="1414495520565016063">Je i identifikuar në Chromium!</translation>
 <translation id="151962892725702025">Chromium OS nuk mund të sinkronizonte të dhënat e tua sepse Sinkronizimi nuk mundësohet për domenin tënd.</translation>
@@ -185,6 +186,7 @@
 <translation id="6863361426438995919">Google Pay (kopjuar në Chromium)</translation>
 <translation id="6893813176749746474">Chromium është përditësuar, por nuk e ke përdorur për të paktën 30 ditë.</translation>
 <translation id="6964305034639999644">Hape lidhjen në një dritare të fshe&amp;htë të Chromium</translation>
+<translation id="6978145336957848883">Fjalëkalimet e dobëta mund të gjenden me lehtësi. Lejoje Chromium <ph name="BEGIN_LINK" />të krijojë dhe mbajë mend fjalëkalime të forta për ty<ph name="END_LINK" />.</translation>
 <translation id="6990124437352146030">Chromium ka nevojë për leje për t'u qasur te mikrofoni yt për këtë sajt</translation>
 <translation id="701244094609242530">Chromium nuk mund t'i kontrollojë shtesat e tua. Provo përsëri më vonë.</translation>
 <translation id="7028347026395185822">{NUM_HOURS,plural, =1{Chromium nuk gjeti softuerëve të dëmshëm të njohur në kompjuterin tënd. Kontrolli i fundit: 1 orë më parë.}other{Chromium nuk gjeti softuerëve të dëmshëm të njohur në kompjuterin tënd. Kontrolli i fundit: {NUM_HOURS} orë më parë.}}</translation>
diff --git a/chrome/app/resources/chromium_strings_sv.xtb b/chrome/app/resources/chromium_strings_sv.xtb
index 9d167fb..eb54521 100644
--- a/chrome/app/resources/chromium_strings_sv.xtb
+++ b/chrome/app/resources/chromium_strings_sv.xtb
@@ -185,6 +185,7 @@
 <translation id="6863361426438995919">Google Pay (har kopierats till Chromium)</translation>
 <translation id="6893813176749746474">Chromium har uppdaterats men du har inte använt det på över 30 dagar.</translation>
 <translation id="6964305034639999644">Öppna länken i ett inko&amp;gnitofönster i Chromium.</translation>
+<translation id="6978145336957848883">Svaga lösenord är lätta att lista ut. Låt Chromium <ph name="BEGIN_LINK" />skapa och spara starka lösenord åt dig<ph name="END_LINK" />.</translation>
 <translation id="6990124437352146030">Du behöver ge Chromium behörighet att använda mikrofonen på webbplatsen</translation>
 <translation id="701244094609242530">Chromium kan inte kontrollera dina tillägg. Försök igen senare.</translation>
 <translation id="7028347026395185822">{NUM_HOURS,plural, =1{Chromium har inte upptäckt skadlig programvara på datorn. Senaste genomsökning: 1 timme sedan.}other{Chromium har inte upptäckt skadlig programvara på datorn. Senaste genomsökning: {NUM_HOURS} timmar sedan.}}</translation>
diff --git a/chrome/app/resources/chromium_strings_tr.xtb b/chrome/app/resources/chromium_strings_tr.xtb
index fdbfa6a..9d9566ce 100644
--- a/chrome/app/resources/chromium_strings_tr.xtb
+++ b/chrome/app/resources/chromium_strings_tr.xtb
@@ -181,6 +181,7 @@
 <translation id="6863361426438995919">Google Pay (Chromium'a kopyalandı)</translation>
 <translation id="6893813176749746474">Chromium güncellendi, ancak programı en azından 30 gündür kullanmıyorsunuz.</translation>
 <translation id="6964305034639999644">Bağlantıyı Chromium &amp;gizli penceresinde aç</translation>
+<translation id="6978145336957848883">Zayıf şifrelerin tahmin edilmesi kolaydır. Chromium'un <ph name="BEGIN_LINK" />sizin için güçlü şifreler oluşturup bu şifreleri hatırlamasına<ph name="END_LINK" /> izin verin.</translation>
 <translation id="6990124437352146030">Chromium'un bu sitede mikrofonunuza erişmesi için izin gerekiyor</translation>
 <translation id="701244094609242530">Chromium, uzantılarınızı kontrol edemiyor. Daha sonra tekrar deneyin.</translation>
 <translation id="7028347026395185822">{NUM_HOURS,plural, =1{Chromium, bilgisayarınızda bilinen zararlı yazılım bulamadı. Son kontrol: 1 saat önce.}other{Chromium, bilgisayarınızda bilinen zararlı yazılım bulamadı. Son kontrol: {NUM_HOURS} saat önce.}}</translation>
diff --git a/chrome/app/resources/chromium_strings_vi.xtb b/chrome/app/resources/chromium_strings_vi.xtb
index a3018b14..62d296e 100644
--- a/chrome/app/resources/chromium_strings_vi.xtb
+++ b/chrome/app/resources/chromium_strings_vi.xtb
@@ -183,6 +183,7 @@
 <translation id="6863361426438995919">Google Pay (đã sao chép vào Chromium)</translation>
 <translation id="6893813176749746474">Chromium đã được cập nhật nhưng bạn đã không sử dụng trình duyệt này trong ít nhất 30 ngày.</translation>
 <translation id="6964305034639999644">Mở liên kết trong cửa sổ ẩn danh của Chromium</translation>
+<translation id="6978145336957848883">Mật khẩu yếu thường dễ đoán. Chromium có thể <ph name="BEGIN_LINK" />tạo mật khẩu mạnh và ghi nhớ mật khẩu này cho bạn<ph name="END_LINK" />.</translation>
 <translation id="6990124437352146030">Chromium cần có quyền truy cập vào micrô của bạn cho trang web này</translation>
 <translation id="701244094609242530">Chromium không thể kiểm tra các tiện ích của bạn. Hãy thử lại sau.</translation>
 <translation id="7028347026395185822">{NUM_HOURS,plural, =1{Chromium không tìm thấy phần mềm gây hại đã biết trên máy tính của bạn. Lần kiểm tra gần đây nhất: 1 giờ trước.}other{Chromium không tìm thấy phần mềm gây hại đã biết trên máy tính của bạn. Lần kiểm tra gần đây nhất: {NUM_HOURS} giờ trước.}}</translation>
diff --git a/chrome/app/resources/chromium_strings_zh-HK.xtb b/chrome/app/resources/chromium_strings_zh-HK.xtb
index 8050b8e..b700417d 100644
--- a/chrome/app/resources/chromium_strings_zh-HK.xtb
+++ b/chrome/app/resources/chromium_strings_zh-HK.xtb
@@ -185,6 +185,7 @@
 <translation id="6863361426438995919">Google Pay (已複製至 Chromium)</translation>
 <translation id="6893813176749746474">Chromium 已更新,但您已至少超過 30 天沒有使用 Chromium。</translation>
 <translation id="6964305034639999644">在 Chromium 無痕式視窗中開啟連結(&amp;G)</translation>
+<translation id="6978145336957848883">低強度密碼很容易讓有心人士猜中,請讓 Chromium <ph name="BEGIN_LINK" />為你建立一組高強度密碼,並儲存在 Chromium 中<ph name="END_LINK" />。</translation>
 <translation id="6990124437352146030">Chromium 需要取得權限,才能讓這個網站存取您的麥克風</translation>
 <translation id="701244094609242530">Chromium 無法檢查擴充程式,請稍後再試。</translation>
 <translation id="7028347026395185822">{NUM_HOURS,plural, =1{Chromium 在您的電腦上找不到已知的有害軟件。上次檢查時間:1 小時前。}other{Chromium 在您的電腦上找不到已知的有害軟件。上次檢查時間:{NUM_HOURS} 小時前。}}</translation>
diff --git a/chrome/app/resources/chromium_strings_zh-TW.xtb b/chrome/app/resources/chromium_strings_zh-TW.xtb
index 4cc55c6..138f3dd6 100644
--- a/chrome/app/resources/chromium_strings_zh-TW.xtb
+++ b/chrome/app/resources/chromium_strings_zh-TW.xtb
@@ -183,6 +183,7 @@
 <translation id="6863361426438995919">Google Pay (已複製到 Chromium)</translation>
 <translation id="6893813176749746474">Chromium 已更新,但你至少超過 30 天沒有使用 Chromium 了。</translation>
 <translation id="6964305034639999644">在 Chromium 無痕式視窗中開啟連結(&amp;G)</translation>
+<translation id="6978145336957848883">低強度密碼很容易讓有心人士猜中,請讓 Chromium <ph name="BEGIN_LINK" />為你建立一組高強度密碼,並儲存在 Chromium 中<ph name="END_LINK" />。</translation>
 <translation id="6990124437352146030">Chromium 需要相關權限,才能讓這個網站使用你的麥克風</translation>
 <translation id="701244094609242530">Chromium 無法檢查你的擴充功能,請稍後再試。</translation>
 <translation id="7028347026395185822">{NUM_HOURS,plural, =1{Chromium 並未在電腦上發現任何已知的有害軟體。上次檢測時間:1 小時前。}other{Chromium 並未在電腦上發現任何已知的有害軟體。上次檢測時間:{NUM_HOURS} 小時前。}}</translation>
diff --git a/chrome/app/resources/chromium_strings_zu.xtb b/chrome/app/resources/chromium_strings_zu.xtb
index b71a507..edf9b757 100644
--- a/chrome/app/resources/chromium_strings_zu.xtb
+++ b/chrome/app/resources/chromium_strings_zu.xtb
@@ -185,6 +185,7 @@
 <translation id="6863361426438995919">I-Google Pay (ikopishelwe ku-Chromium)</translation>
 <translation id="6893813176749746474">I-Chromium ibuyekeziwe, kodwa awukakayisebenzisi okungenani izinsuku ezingu-30.</translation>
 <translation id="6964305034639999644">Vula isixhumanisi kuwindi le-Chromium inco&amp;gnito</translation>
+<translation id="6978145336957848883">Amaphasiwedi angaqinile aqageleka kalula. Vumela i-Chromium <ph name="BEGIN_LINK" />ikudalele futhi ikhumbule amaphasiwedi aqinile<ph name="END_LINK" />.</translation>
 <translation id="6990124437352146030">I-Chromium idinga imvume ukuze ifinyelele kumakrofoni yakho yaleli sayithi</translation>
 <translation id="701244094609242530">I-Chromium ayikwazi ukuhlola izandiso zakho. Zama futhi emuva kwesikhathi.</translation>
 <translation id="7028347026395185822">{NUM_HOURS,plural, =1{I-Chromium ayitholanga isofthiwe eyaziwayo enobungozi kukhompuyutha yakho. Kugcinwe ukuhlolwa: Ehoreni eli-1 eledlule}one{I-Chromium ayitholanga isofthiwe eyaziwayo enobungozi kukhompuyutha yakho. Kugcinwe ukuhlolwa: Emahoreni angu-{NUM_HOURS} adlule.}other{I-Chromium ayitholanga isofthiwe eyaziwayo enobungozi kukhompuyutha yakho. Kugcinwe ukuhlolwa: Emahoreni angu-{NUM_HOURS} adlule.}}</translation>
diff --git a/chrome/app/resources/generated_resources_ar.xtb b/chrome/app/resources/generated_resources_ar.xtb
index e84909f4..36449c8 100644
--- a/chrome/app/resources/generated_resources_ar.xtb
+++ b/chrome/app/resources/generated_resources_ar.xtb
@@ -928,6 +928,7 @@
 <translation id="204914487372604757">إنشاء اختصار</translation>
 <translation id="2050339315714019657">رأسي</translation>
 <translation id="2053312383184521053">بيانات حالة الخمول</translation>
+<translation id="2054665754582400095">متى تستخدم جهازك</translation>
 <translation id="2055585478631012616">سيتم تسجيل خروجك من هذه المواقع الإلكترونية، بما في ذلك ضمن علامات التبويب المفتوحة.</translation>
 <translation id="205560151218727633">‏شعار مساعد Google</translation>
 <translation id="2058456167109518507">تم رصد جهاز للاتصال</translation>
@@ -1214,6 +1215,7 @@
 <translation id="2387052489799050037">الانتقال إلى الشاشة الرئيسية</translation>
 <translation id="2387458720915042159">نوع الاتصال بالخادم الوكيل</translation>
 <translation id="2390347491606624519">يُرجى تسجيل الدخول مرة أخرى بسبب تعذُّر الاتصال بالخادم الوكيل</translation>
+<translation id="2390782873446084770">مزامنة الواي فاي</translation>
 <translation id="2391082728065870591">إرسال تقرير بالتعليقات</translation>
 <translation id="2391419135980381625">الخط العادي</translation>
 <translation id="2392163307141705938">لقد وصلت إلى الحدّ الزمني الذي ضبطه أحد الوالدَين لمنتج <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
@@ -1870,6 +1872,7 @@
 <translation id="3157931365184549694">استعادة</translation>
 <translation id="3158033540161634471">إعداد بصمة الإصبع</translation>
 <translation id="3159493096109238499">بيج</translation>
+<translation id="3159978855457658359">تعديل اسم الجهاز</translation>
 <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (مستندة إلى الأجهزة)</translation>
 <translation id="3161522574479303604">كل اللغات</translation>
 <translation id="3162853326462195145">حساب المؤسسة التعليمية</translation>
@@ -3227,6 +3230,7 @@
 <translation id="4761104368405085019">استخدام الميكروفون</translation>
 <translation id="4762718786438001384">مساحة القرص على الجهاز منخفضة للغاية</translation>
 <translation id="4763408175235639573">تم ضبط ملفات تعريف الارتباط التالية عند عرض هذه الصفحة</translation>
+<translation id="4764368918650455114">‏تأكَّد من فتح قفل كلا الجهازَين وقرِّبهما من بعضهما وفعِّل البلوتوث فيهما. وإذا كنت تشارك الملفات مع Chromebook، تأكَّد من تفعيل ميزة "المشاركة عن قرب" (افتح منطقة الحالة من خلال اختيار الوقت، ثم اختَر "المشاركة عن قرب"). <ph name="LINK_BEGIN" />مزيد من المعلومات<ph name="LINK_END" /></translation>
 <translation id="4765582662863429759">‏للسماح لتطبيق "رسائل Android" بترحيل الرسائل النصية من هاتفك إلى جهاز Chromebook</translation>
 <translation id="476598255842811483">لا أحد ما لم تُفعِّل ميزة "المشاركة عن قرب" على جهازك</translation>
 <translation id="4768332406694066911">لديك شهادات تحدد هويتك من هذه المؤسسات</translation>
@@ -3389,6 +3393,7 @@
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">لقد ثبّت مشرفك هذا التطبيق.</translation>
 <translation id="4964455510556214366">الترتيب</translation>
+<translation id="496446150016900060">‏يمكنك مزامنة شبكات Wi-Fi مع هاتفك.</translation>
 <translation id="4965808351167763748">‏هل تريد فعلاً إعداد هذا الجهاز لتشغيل Hangouts Meet؟</translation>
 <translation id="496888482094675990">‏يوفر تطبيق الملفات وصولاً سريعًا إلى الملفات التي حفظتها على Google Drive، أو مساحة التخزين الخارجي، أو جهاز نظام التشغيل Chrome.</translation>
 <translation id="4971412780836297815">فتح عند اكتمال التنزيل</translation>
@@ -3695,6 +3700,7 @@
 <translation id="5341980496415249280">يُرجى الانتظار، جارٍ التعبئة...</translation>
 <translation id="5342091991439452114">يجب أن يتكوَّن رقم التعريف الشخصي من <ph name="MINIMUM" /> من الأرقام على الأقل</translation>
 <translation id="5344036115151554031">‏استعادة نظام التشغيل Linux</translation>
+<translation id="5345916423802287046">تشغيل التطبيق تلقائيًا عند تسجيل الدخول</translation>
 <translation id="5350293332385664455">‏إيقاف "مساعد Google"</translation>
 <translation id="535123479159372765">تم نسخ نص من جهاز آخر.</translation>
 <translation id="5352033265844765294">الطابع الزمني</translation>
@@ -4005,6 +4011,7 @@
 <translation id="5704875434923668958">المزامنة مع</translation>
 <translation id="5705005699929844214">عرض خيارات إمكانية الوصول دائمًا</translation>
 <translation id="5705882733397021510">رجوع</translation>
+<translation id="5707117624115653804">يمكنك تخصيص حجم الشرح ونمطه للتطبيقات والمواقع الإلكترونية المتوافقة مع هذا الإعداد.</translation>
 <translation id="5707185214361380026">فشل تحميل الإضافة من:</translation>
 <translation id="5708171344853220004">‏الاسم الأساسي في Microsoft</translation>
 <translation id="5709557627224531708">‏اختيار Chrome كمتصفِّح تلقائي</translation>
@@ -4168,6 +4175,7 @@
 <translation id="5904614460720589786">تعذّر إعداد <ph name="APP_NAME" /> بسبب مشكلة في الضبط. يُرجى التواصل مع مشرفك. رمز الخطأ: <ph name="ERROR_CODE" />.</translation>
 <translation id="5906655207909574370">أوشك التحديث على الانتهاء! أعِد تشغيل الجهاز لإنهاء التحديث.</translation>
 <translation id="5906732635754427568">ستتم إزالة البيانات المقترنة بهذا التطبيق من هذا الجهاز.</translation>
+<translation id="5908474332780919512">تشغيل التطبيق تلقائيًا عند تسجيل الدخول</translation>
 <translation id="5908695239556627796">سرعة تمرير الماوس</translation>
 <translation id="5908769186679515905">‏حظر المواقع الإلكترونية من تشغيل Flash</translation>
 <translation id="5910363049092958439">حفظ ال&amp;صورة باسم...</translation>
@@ -4708,6 +4716,7 @@
 <translation id="6532527800157340614">تعذّر تسجيل الدخول بسبب عدم استرداد رمز الدخول. يُرجى التحقّق من الاتصال بالشبكة وإعادة المحاولة.</translation>
 <translation id="6532663472409656417">المؤسسة المسجَّلة</translation>
 <translation id="6535331821390304775">السماح دائمًا لموقع <ph name="ORIGIN" /> بفتح روابط من هذا النوع في التطبيق المرتبط</translation>
+<translation id="6537613839935722475">يمكن أن تحتوي الأسماء على الأحرف والأرقام والواصلات (-).</translation>
 <translation id="6538635548667167211">إعداد استخدام البيانات الحالي هو "بيانات شبكة الجوّال"</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />ملاحظة:<ph name="END_BOLD" /> يُوصى بعدم التفعيل إلا إذا كنت تعرف ماذا تريد أو عندما يُطلب منك إجراء ذلك، ذلك أن جمع البيانات قد يقلل من مستوى الأداء.</translation>
 <translation id="6541638731489116978">تم حظر الموقع الإلكتروني هذا من الوصول إلى مستشعرات الحركة.</translation>
@@ -4796,6 +4805,7 @@
 <translation id="6650234781371031356">‏تمّ حفظ كلمة مرور <ph name="WEBSITE" /> على هذا الجهاز وفي حسابك على Google. من أين تريد حذف كلمة المرور؟</translation>
 <translation id="665061930738760572">فتح في &amp;نافذة جديدة</translation>
 <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="6654509035557065241">اختيار الشبكة كمفضَّلة</translation>
 <translation id="6655190889273724601">وضع مطوّر البرامج</translation>
@@ -5399,6 +5409,7 @@
 <translation id="7375235221357833624">{0,plural, =1{تحديث الجهاز خلال ساعة}zero{تحديث الجهاز خلال # ساعة}two{تحديث الجهاز خلال ساعتَين}few{تحديث الجهاز خلال # ساعات}many{تحديث الجهاز خلال # ساعة}other{تحديث الجهاز خلال # ساعة}}</translation>
 <translation id="7376553024552204454">تمييز مؤشر الماوس عندما يتحرك</translation>
 <translation id="7377451353532943397">مواصلة حظر إمكانية الوصول إلى أجهزة الاستشعار</translation>
+<translation id="7378611153938412599">من السهل تخمين كلمات المرور الضعيفة. يُرجى الحرص على إنشاء كلمات مرور قوية. <ph name="BEGIN_LINK" />الاطّلاع على مزيد من نصائح الأمان<ph name="END_LINK" /></translation>
 <translation id="73786666777299047">‏فتح سوق Chrome الإلكتروني</translation>
 <translation id="7378812711085314936">الحصول على اتصال البيانات</translation>
 <translation id="7380622428988553498">يحتوي اسم الجهاز على أحرف غير صالحة.</translation>
@@ -5923,6 +5934,7 @@
 <translation id="7959074893852789871">احتوى الملف على شهادات متعددة، لم يتم استيراد بعضها:</translation>
 <translation id="7961015016161918242">مطلقًا</translation>
 <translation id="7963001036288347286">تسريع لوحة اللمس</translation>
+<translation id="7963608432878156675">هذا الاسم مرئي للأجهزة الأخرى حتى تتمكّن من الاتصال بالبلوتوث والشبكة.</translation>
 <translation id="7963826112438303517">‏يستخدم "مساعد Google" هذه التسجيلات والطلبات المنطوقة لإنشاء نموذج صوتي وتحديثه، حيث يتم تخزينه فقط في أجهزة تُفعِّل Voice Match. يمكن عرض نشاط الصوت في إعدادات "مساعد Google" أو إعادة ضبطه.</translation>
 <translation id="7966241909927244760">&amp;نسخ عنوان الصورة</translation>
 <translation id="7966571622054096916">{COUNT,plural, =1{هناك عنصر واحد في قائمة الإشارات المرجعية.}zero{هناك {COUNT} عنصر في قائمة الإشارات المرجعية.}two{هناك عنصران ({COUNT}) في قائمة الإشارات المرجعية.}few{هناك {COUNT} عناصر في قائمة الإشارات المرجعية.}many{هناك {COUNT} عنصرًا في قائمة الإشارات المرجعية.}other{هناك {COUNT} عنصر في قائمة الإشارات المرجعية.}}</translation>
@@ -6387,6 +6399,7 @@
 <translation id="850875081535031620">لم يتم العثور على أي برامج ضارة</translation>
 <translation id="8509177919508253835">إعادة ضبط مفاتيح الأمان وإنشاء أرقام التعريف الشخصية</translation>
 <translation id="8509646642152301857">تعذّر تنزيل قاموس التدقيق الإملائي.</translation>
+<translation id="8512396579636492893">{COUNT,plural, =0{لم يتم العثور على أي كلمات مرور ضعيفة.}=1{تم العثور على كلمة مرور واحدة ({COUNT}) ضعيفة.}two{تم العثور على كلمتَي مرور ({COUNT}) ضعيفتَين.}few{تم العثور على {COUNT} كلمات مرور ضعيفة.}many{تم العثور على {COUNT} كلمة مرور ضعيفة.}other{تم العثور على {COUNT} كلمة مرور ضعيفة.}}</translation>
 <translation id="8512476990829870887">إنهاء العملية</translation>
 <translation id="851263357009351303">السماح للموقع <ph name="HOST" /> بعرض الصور دومًا</translation>
 <translation id="8513108775083588393">التدوير تلقائي</translation>
diff --git a/chrome/app/resources/generated_resources_az.xtb b/chrome/app/resources/generated_resources_az.xtb
index cfc78d0..7684878 100644
--- a/chrome/app/resources/generated_resources_az.xtb
+++ b/chrome/app/resources/generated_resources_az.xtb
@@ -924,6 +924,7 @@
 <translation id="204914487372604757">Qısayol yaradın</translation>
 <translation id="2050339315714019657">Portret</translation>
 <translation id="2053312383184521053">Fəaliyyətsizlik Vəziyyəti Məlumatı</translation>
+<translation id="2054665754582400095">Mövcudluğunuz</translation>
 <translation id="2055585478631012616">Açıq tablar da daxil olmaqla, bu saytlardan çıxmış olacaqsınız</translation>
 <translation id="205560151218727633">Google assistent loqosu</translation>
 <translation id="2058456167109518507">Cihaz aşkarlandı</translation>
@@ -1210,6 +1211,7 @@
 <translation id="2387052489799050037">Əsas səhifəyə keçin</translation>
 <translation id="2387458720915042159">Proksi bağlantı növü</translation>
 <translation id="2390347491606624519">Proksiyə qoşulmaq olmur, yenidən daxil olun</translation>
+<translation id="2390782873446084770">Wi-Fi Sinxronlaşdırması</translation>
 <translation id="2391082728065870591">Rəy Hesabatını Göndərin</translation>
 <translation id="2391419135980381625">Standart şrift</translation>
 <translation id="2392163307141705938">Valideyniniz tərəfindən <ph name="IDS_SHORT_PRODUCT_NAME" /> üçün təyin edilən limitə çatdınız.</translation>
@@ -1865,6 +1867,7 @@
 <translation id="3157931365184549694">Bərpa edin</translation>
 <translation id="3158033540161634471">Barmaq ayarlayın</translation>
 <translation id="3159493096109238499">Bej</translation>
+<translation id="3159978855457658359">Cihazın adına düzəliş edin</translation>
 <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (avadanlıqla yedəklənmiş)</translation>
 <translation id="3161522574479303604">Bütün dillər</translation>
 <translation id="3162853326462195145">Məktəb hesabı</translation>
@@ -3223,6 +3226,7 @@
 <translation id="4761104368405085019">Mikrofon işlədin</translation>
 <translation id="4762718786438001384">Cihaz disk yaddaşı çox azdır</translation>
 <translation id="4763408175235639573">Bu səhifəyə baxdığınız zaman aşağıdakı kukilər ayarlandı</translation>
+<translation id="4764368918650455114">Hər iki cihazın kiliddən çıxarılmış, bir-birinə yaxın və Bluetooth'un aktiv olmasına əmin olun. Chromebook ilə paylaşırsınızsa, Yaxınlıqda Paylaşımın aktiv olduğuna əmin olun (vaxtı seçərək status sahəsini açın, sonra Yaxınlıqda Paylaşımı seçin). <ph name="LINK_BEGIN" />Ətraflı məlumat<ph name="LINK_END" /></translation>
 <translation id="4765582662863429759">Android Mesajın telefonunuzdan Chromebook'a mesaj ötürməsinə icazə verir</translation>
 <translation id="476598255842811483">Yaxınlıqda Paylaşımı cihazınızda açanadək heç kəs</translation>
 <translation id="4768332406694066911">Bu təşkilatlardan Sizi tanıdacaq sertifikatlarınız var</translation>
@@ -3385,6 +3389,7 @@
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Bu tətbiqi administratorunuz quraşdırıb.</translation>
 <translation id="4964455510556214366">Quruluş</translation>
+<translation id="496446150016900060">Wi-Fi şəbəkələrini telefonunuzla sinxronlaşdırın</translation>
 <translation id="4965808351167763748">Hangouts Görüş istifadə etmək üçün bu cihazı quraşdırmaq istədiyinizə əminsiniz?</translation>
 <translation id="496888482094675990">Fayllar tətbiqi Google Disk, xarici yaddaş və ya Chrome OS cihazınızda saxladığınız fayllara sürətli giriş təmin edir.</translation>
 <translation id="4971412780836297815">Tamamlandıqda açın</translation>
@@ -3691,6 +3696,7 @@
 <translation id="5341980496415249280">Qablaşdırılır...</translation>
 <translation id="5342091991439452114">PIN ən azı <ph name="MINIMUM" /> rəqəmli olmalıdır</translation>
 <translation id="5344036115151554031">Linux bərpa edilir</translation>
+<translation id="5345916423802287046">Daxil olduqda tətbiqi başladın</translation>
 <translation id="5350293332385664455">Google Assistenti deaktiv edin</translation>
 <translation id="535123479159372765">Mətn başqa cihazdan kopyalanıb</translation>
 <translation id="5352033265844765294">Zaman Möhürləməsi</translation>
@@ -4001,6 +4007,7 @@
 <translation id="5704875434923668958">Sinxronizasiya edilir</translation>
 <translation id="5705005699929844214">Həmişə əlçatımlılıq seçimlərini göstərin</translation>
 <translation id="5705882733397021510">Geri qayıdın</translation>
+<translation id="5707117624115653804">Altyazı ölçüsünü və üslubunu bu ayarı dəstəkləyən tətbiqlər və saytlar üçün fərdiləşdirin</translation>
 <translation id="5707185214361380026">Artırma formasını yükləmək alınmadı:</translation>
 <translation id="5708171344853220004">Microsoft İştirakçı Adı</translation>
 <translation id="5709557627224531708">Chrome'u defolt brauzer kimi quraşdırın</translation>
@@ -4164,6 +4171,7 @@
 <translation id="5904614460720589786">Konfiqurasiya xətasına görə <ph name="APP_NAME" /> tətbiqini ayarlamaq mümkün olmadı. Administratorunuz ilə əlaqə saxlayın. Xəta kodu: <ph name="ERROR_CODE" />.</translation>
 <translation id="5906655207909574370">Güncəllənmək üzrədir! Güncəlləməni tamamlamaq üçün cihazı yenidən başladın.</translation>
 <translation id="5906732635754427568">Bu tətbiqlə bağlı data cihazdan silinəcək.</translation>
+<translation id="5908474332780919512">Daxil Olduqda Tətbiqi Başladın</translation>
 <translation id="5908695239556627796">Siçanın sürüşdürmə sürəti</translation>
 <translation id="5908769186679515905">Saytları Fləş işlətməyə qarşı blok edin</translation>
 <translation id="5910363049092958439">Şəklin saxlanma formatı:</translation>
@@ -4701,6 +4709,7 @@
 <translation id="6532527800157340614">Giriş jetonunuzu əldə etmək mümkün olmadığı üçün giriş alınmadı. Şəbəkə bağlantınızı yoxlayın və yenidən cəhd edin.</translation>
 <translation id="6532663472409656417">Müəssisədə Qeydiyyatlı</translation>
 <translation id="6535331821390304775"><ph name="ORIGIN" /> saytına həmişə əlaqədar tətbiqdə bu cür keçidləri açmaq icazəsi verin</translation>
+<translation id="6537613839935722475">Adda hərflər, rəqəmlər və defis (-) ola bilər</translation>
 <translation id="6538635548667167211">Cari data istifadəsi ayarı: Data</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />Qeyd:<ph name="END_BOLD" /> Yalnız nə etdiyinizi bildiyiniz halda aktivləşdirin.</translation>
 <translation id="6541638731489116978">Bu saytın hərəkət sensorlarınıza girişini blok edilib.</translation>
@@ -4789,6 +4798,7 @@
 <translation id="6650234781371031356"><ph name="WEBSITE" /> üçün parolunuz bu cihazda və Google Hesabınızda saxlanılıb. Hansını silmək istəyirsiniz?</translation>
 <translation id="665061930738760572">Yeni pəncərədə açın</translation>
 <translation id="6651237644330755633">Veb sayt tanınması üçün bu sertifikata inanın</translation>
+<translation id="6651495917527016072">Wi-Fi şəbəkələrini telefonunuzla sinxronlaşdırın. <ph name="LINK_BEGIN" />Ətraflı məlumat<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">Chrome <ph name="MS_AD_NAME" /> inteqrasiyası yalnız x86_64 platformalarında dəstəklənir. ARM və ya x86 platforması üzərində hazırlanmış Chromebook'lar bu funksionallığı dəstəkləmir.</translation>
 <translation id="6654509035557065241">Şəbəkə tərcih edin</translation>
 <translation id="6655190889273724601">Developer rejimi</translation>
@@ -5392,6 +5402,7 @@
 <translation id="7375235221357833624">{0,plural, =1{Cihazı 1 saat ərzində güncəlləyin}other{Cihazı # saat ərzində güncəlləyin}}</translation>
 <translation id="7376553024552204454">Hərəkətdə olarkən maus kursorunu vurğulayın</translation>
 <translation id="7377451353532943397">Sensor girişini blok etməyə davam edin</translation>
+<translation id="7378611153938412599">Zəif parolları tapmaq asandır. Güclü parol yaratdığınıza əmin olun. <ph name="BEGIN_LINK" />Daha çox təhlükəsizlik məsləhətinə baxın.<ph name="END_LINK" /></translation>
 <translation id="73786666777299047">Chrome Veb Mağazanı Açın</translation>
 <translation id="7378812711085314936">Data bağlantısı əldə edin</translation>
 <translation id="7380622428988553498">Cihaz adında yanlış simvollar var</translation>
@@ -5916,6 +5927,7 @@
 <translation id="7959074893852789871">Fayl bəziləri import olunmayan çoxsaylı sertifikatlardan ibarətdir:</translation>
 <translation id="7961015016161918242">Heç vaxt</translation>
 <translation id="7963001036288347286">Taçpedin sürəti</translation>
+<translation id="7963608432878156675">Bu ad Bluetooth və şəbəkə bağlantıları olan digər cihazlara görünür</translation>
 <translation id="7963826112438303517">Assistent bu səsyazıları və səsləndirilmiş sorğulardan səs modelinizi yaratmaq və yeniləmək üçün istifadə edir. Səs modeli yalnız Voice Match'in aktiv olduğu cihazlarda saxlanılır. Səs fəaliyyətinə Assistent Ayarlarından baxın və ya hazırlayın.</translation>
 <translation id="7966241909927244760">Şəkil ünvanını kopyalayın</translation>
 <translation id="7966571622054096916">{COUNT,plural, =1{Əlfəcin siyahısında 1 element}other{Əlfəcin siyahısında {COUNT} element}}</translation>
@@ -6378,6 +6390,7 @@
 <translation id="850875081535031620">Zərərli proqram tapılmadı</translation>
 <translation id="8509177919508253835">Təhlükəsizlik açarlarını sıfırlayın və PIN yaradın</translation>
 <translation id="8509646642152301857">Orfoqrafik yoxlama sözlüyünün endirilməsi alınmadı.</translation>
+<translation id="8512396579636492893">{COUNT,plural, =0{Zəif parol tapılmadı}=1{{COUNT} zəif parol tapıldı}other{{COUNT} zəif parol tapıldı}}</translation>
 <translation id="8512476990829870887">Prosesi Bitirin</translation>
 <translation id="851263357009351303"><ph name="HOST" /> şəkilləri göstərməyə hər zaman icazə verin</translation>
 <translation id="8513108775083588393">Avtodönüş</translation>
diff --git a/chrome/app/resources/generated_resources_be.xtb b/chrome/app/resources/generated_resources_be.xtb
index 7844c3b2..91317f1cb 100644
--- a/chrome/app/resources/generated_resources_be.xtb
+++ b/chrome/app/resources/generated_resources_be.xtb
@@ -928,6 +928,7 @@
 <translation id="204914487372604757">Стварыць ярлык</translation>
 <translation id="2050339315714019657">Кніжная</translation>
 <translation id="2053312383184521053">Даныя пра стан бяздзейнасці</translation>
+<translation id="2054665754582400095">Ваша прысутнасць</translation>
 <translation id="2055585478631012616">Будзе выкананы выхад з гэтых сайтаў, у тым ліку на адкрытых укладках</translation>
 <translation id="205560151218727633">Лагатып памочніка Google</translation>
 <translation id="2058456167109518507">Выяўлена прылада</translation>
@@ -1214,6 +1215,7 @@
 <translation id="2387052489799050037">Пераход на галоўны экран</translation>
 <translation id="2387458720915042159">Тып падключэння проксі-сервера</translation>
 <translation id="2390347491606624519">Не ўдаецца падключыцца да проксі-сервера, увайдзіце яшчэ раз</translation>
+<translation id="2390782873446084770">Сінхранізацыя параметраў Wi-Fi</translation>
 <translation id="2391082728065870591">Адправіць справаздачу з водгукам</translation>
 <translation id="2391419135980381625">Стандартны шрыфт</translation>
 <translation id="2392163307141705938">Вы выкарысталі ліміт часу, зададзены вашымі бацькамі для праграмы "<ph name="IDS_SHORT_PRODUCT_NAME" />".</translation>
@@ -1870,6 +1872,7 @@
 <translation id="3157931365184549694">Аднавіць</translation>
 <translation id="3158033540161634471">Наладжванне адбітка пальца</translation>
 <translation id="3159493096109238499">Бэжавы</translation>
+<translation id="3159978855457658359">Змяненне назвы прылады</translation>
 <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (апаратна забяспечаны)</translation>
 <translation id="3161522574479303604">Усе мовы</translation>
 <translation id="3162853326462195145">Навучальны ўліковы запіс</translation>
@@ -3230,6 +3233,7 @@
 <translation id="4761104368405085019">Выкарыстоўваць мікрафон</translation>
 <translation id="4762718786438001384">Крытычна мала месца на дыску прылады</translation>
 <translation id="4763408175235639573">Наступныя файлы cookie былі запісаны, калі вы праглядалі гэту старонку.</translation>
+<translation id="4764368918650455114">Упэўніцеся, што абедзве прылады разблакіраваны, знаходзяцца адна пры адной і на іх уключаны Bluetooth. Пры абагульванні з дапамогай Chromebook упэўніцеся, што ўключана функцыя "Абагульванне паблізу" (адкрыйце панэль стану, націснуўшы на гадзіннік, і выберыце "Абагульванне паблізу"). <ph name="LINK_BEGIN" />Даведацца больш<ph name="LINK_END" /></translation>
 <translation id="4765582662863429759">Дазваляе праграме "Android Паведамленні" перадаваць SMS з тэлефона на Chromebook</translation>
 <translation id="476598255842811483">Ніхто, пакуль вы не адкрыеце на сваёй прыладзе акно функцыі "Абагульванне паблізу"</translation>
 <translation id="4768332406694066911">У вас ёсць сертыфікаты ад гэтых арганізацый, якія ідэнтыфікуюць вас</translation>
@@ -3392,6 +3396,7 @@
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> – <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Праграма ўсталявана адміністратарам.</translation>
 <translation id="4964455510556214366">Размяшчэнне</translation>
+<translation id="496446150016900060">Сінхранізаваць параметры сетак Wi-Fi з вашым тэлефонам</translation>
 <translation id="4965808351167763748">Сапраўды наладзіць на гэтай прыладзе Hangouts Meet?</translation>
 <translation id="496888482094675990">Праграма "Файлы" дазваляе хутка адкрываць файлы, захаваныя на Google Дыску, знешніх сховішчах і прыладах Chrome OS.</translation>
 <translation id="4971412780836297815">Адкрыць пасля спампоўвання</translation>
@@ -3698,6 +3703,7 @@
 <translation id="5341980496415249280">Пачакайце: ідзе запакоўванне...</translation>
 <translation id="5342091991439452114">Мінімальная колькасць лічбаў PIN-кода: <ph name="MINIMUM" /></translation>
 <translation id="5344036115151554031">Ідзе аднаўленне Linux</translation>
+<translation id="5345916423802287046">Запускаць праграму пры ўваходзе</translation>
 <translation id="5350293332385664455">Выключыць Памочніка Google</translation>
 <translation id="535123479159372765">Тэкст скапіраваны з іншай прылады</translation>
 <translation id="5352033265844765294">Меткі часу</translation>
@@ -4007,6 +4013,7 @@
 <translation id="5704875434923668958">Сінхранізавана з</translation>
 <translation id="5705005699929844214">Заўсёды паказваць параметры спецыяльных магчымасцей</translation>
 <translation id="5705882733397021510">Назад</translation>
+<translation id="5707117624115653804">Наладжванне памеру і стылю субцітраў для праграм і сайтаў, якія падтрымліваюць гэту наладу</translation>
 <translation id="5707185214361380026">Не ўдалося загрузіць пашырэнне з наступнай крыніцы:</translation>
 <translation id="5708171344853220004">Галоўнае імя Microsoft</translation>
 <translation id="5709557627224531708">Зрабіць Chrome стандартным браўзерам</translation>
@@ -4170,6 +4177,7 @@
 <translation id="5904614460720589786">Не ўдалося наладзіць праграму <ph name="APP_NAME" /> з-за праблемы канфігурацыі. Звярніцеся да адміністратара. Код памылкі: <ph name="ERROR_CODE" />.</translation>
 <translation id="5906655207909574370">Амаль гатова! Каб завяршыць абнаўленне, перазапусціце прыладу.</translation>
 <translation id="5906732635754427568">Даныя, звязаныя з гэтай праграмай, будуць выдалены з гэтай прылады.</translation>
+<translation id="5908474332780919512">Запускаць праграму пры ўваходзе</translation>
 <translation id="5908695239556627796">Хуткасць прагорткі мышшу</translation>
 <translation id="5908769186679515905">Забараніць сайтам запускаць Flash</translation>
 <translation id="5910363049092958439">За&amp;хаваць відарыс як...</translation>
@@ -4709,6 +4717,7 @@
 <translation id="6532527800157340614">Уваход не выкананы: не ўдалося атрымаць токен доступу. Праверце падключэнне да сеткі і паўтарыце спробу.</translation>
 <translation id="6532663472409656417">Зарэгістравана карпарацыяй</translation>
 <translation id="6535331821390304775">Заўсёды дазваляць сайту <ph name="ORIGIN" /> адкрываць спасылкі гэтага тыпу ў звязанай з імі праграме</translation>
+<translation id="6537613839935722475">У назве можна выкарыстоўваць літары, лічбы і злучкі (-)</translation>
 <translation id="6538635548667167211">Бягучая налада выкарыстання трафіка: перадача даных</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />Заўвага!<ph name="END_BOLD" /> Уключайце гэту наладу толькі тады, калі ведаеце, што робіце, або калі вас папрасілі гэта зрабіць, бо накапленне даных можа знізіць прадукцыйнасць.</translation>
 <translation id="6541638731489116978">Гэтаму сайту быў заблакіраваны доступ да датыкаў руху.</translation>
@@ -4797,6 +4806,7 @@
 <translation id="6650234781371031356">Пароль для сайта <ph name="WEBSITE" /> захаваны на гэтай прыладзе і ва Уліковым запісе Google. Які з іх выдаліць?</translation>
 <translation id="665061930738760572">Адкрыць у &amp;новым акне</translation>
 <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="6654509035557065241">Прыярытэтная сетка</translation>
 <translation id="6655190889273724601">Рэжым распрацоўшчыка</translation>
@@ -5400,6 +5410,7 @@
 <translation id="7375235221357833624">{0,plural, =1{Перазапусціце прыладу на працягу гадзіны}one{Перазапусціце прыладу на працягу # гадзіны}few{Перазапусціце прыладу на працягу # гадзін}many{Перазапусціце прыладу на працягу # гадзін}other{Перазапусціце прыладу на працягу # гадзіны}}</translation>
 <translation id="7376553024552204454">Указваць на курсор мышы, калі ён рухаецца</translation>
 <translation id="7377451353532943397">Працягваць блакіраваць доступ да датчыкаў</translation>
+<translation id="7378611153938412599">Ненадзейныя паролі лёгка адгадаць. Выкарыстоўвайце толькі надзейныя паролі. <ph name="BEGIN_LINK" />Праглядзець іншыя парады па бяспецы.<ph name="END_LINK" /></translation>
 <translation id="73786666777299047">Адкрыць Вэб-краму Chrome</translation>
 <translation id="7378812711085314936">Атрымаць падключэнне для перадачы даных</translation>
 <translation id="7380622428988553498">Назва прылады змяшчае недапушчальныя сімвалы</translation>
@@ -5924,6 +5935,7 @@
 <translation id="7959074893852789871">У файле было некалькі сертыфікатаў, некаторыя з якіх не імпартаваны:</translation>
 <translation id="7961015016161918242">Ніколі</translation>
 <translation id="7963001036288347286">Паскарэнне сэнсарнай панэлі</translation>
+<translation id="7963608432878156675">Гэта назва будзе паказвацца на іншых прыладах пры падключэннях да сеткі і праз Bluetooth</translation>
 <translation id="7963826112438303517">Памочнік выкарыстоўвае гэтыя запісы і галасавыя запыты для стварэння і абнаўлення мадэлі вашага голасу, якая захоўваецца толькі на прыладах, дзе ўключана функцыя Voice Match. Праглядзець дзеянні з голасам і змяніць галасавую мадэль можна ў наладах Памочніка.</translation>
 <translation id="7966241909927244760">&amp;Капіраваць адрас відарыса</translation>
 <translation id="7966571622054096916">{COUNT,plural, =1{1 пункт у спісе закладак}one{{COUNT} пункт у спісе закладак}few{{COUNT} пункты ў спісе закладак}many{{COUNT} пунктаў у спісе закладак}other{{COUNT} пункта ў спісе закладак}}</translation>
@@ -6387,6 +6399,7 @@
 <translation id="850875081535031620">Не знойдзена шкоднага праграмнага забеспячэння</translation>
 <translation id="8509177919508253835">Скід ключоў бяспекі і стварэнне PIN-кодаў</translation>
 <translation id="8509646642152301857">Збой спампоўкі слоўніка праверкі правапісу.</translation>
+<translation id="8512396579636492893">{COUNT,plural, =0{Ненадзейныя паролі не знойдзены}=1{Знойдзены {COUNT} ненадзейны пароль}one{Знойдзены {COUNT} ненадзейны пароль}few{Знойдзена {COUNT} ненадзейныя паролі}many{Знойдзена {COUNT} ненадзейных пароляў}other{Знойдзена {COUNT} ненадзейнага пароля}}</translation>
 <translation id="8512476990829870887">Завяршыць працэс</translation>
 <translation id="851263357009351303">Заўсёды дазваляць відарысы на сайце <ph name="HOST" /></translation>
 <translation id="8513108775083588393">Аўтапаварот</translation>
diff --git a/chrome/app/resources/generated_resources_bg.xtb b/chrome/app/resources/generated_resources_bg.xtb
index 5b0252c..ad96d4b 100644
--- a/chrome/app/resources/generated_resources_bg.xtb
+++ b/chrome/app/resources/generated_resources_bg.xtb
@@ -925,6 +925,7 @@
 <translation id="204914487372604757">Създаване на пряк път</translation>
 <translation id="2050339315714019657">Вертикално</translation>
 <translation id="2053312383184521053">Данни за състоянието на неактивност</translation>
+<translation id="2054665754582400095">Присъствието ви</translation>
 <translation id="2055585478631012616">Ще излезете от профила си в тези сайтове, включително в отворените раздели</translation>
 <translation id="205560151218727633">Лого на Google Асистент</translation>
 <translation id="2058456167109518507">Открито е устройство</translation>
@@ -1211,6 +1212,7 @@
 <translation id="2387052489799050037">Преминаване към началния екран</translation>
 <translation id="2387458720915042159">Тип на връзката през прокси сървър</translation>
 <translation id="2390347491606624519">Не може да се установи връзка с прокси сървъра. Моля, влезте отново</translation>
+<translation id="2390782873446084770">Синхронизиране на Wi-Fi</translation>
 <translation id="2391082728065870591">Изпращане на сигнал с отзиви</translation>
 <translation id="2391419135980381625">Стандартен шрифт</translation>
 <translation id="2392163307141705938">Достигнахте времевия лимит, зададен от родителя ви за <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
@@ -1867,6 +1869,7 @@
 <translation id="3157931365184549694">Възстановяване</translation>
 <translation id="3158033540161634471">Настройте отпечатъка си</translation>
 <translation id="3159493096109238499">бежово</translation>
+<translation id="3159978855457658359">Редактиране на името на устройството</translation>
 <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (с хардуерно съхраняване)</translation>
 <translation id="3161522574479303604">Всички езици</translation>
 <translation id="3162853326462195145">Училищен профил</translation>
@@ -3229,6 +3232,7 @@
 <translation id="4761104368405085019">Използване на микрофона ви</translation>
 <translation id="4762718786438001384">Мястото на диска на устройството е критично малко</translation>
 <translation id="4763408175235639573">Следните „бисквитки“ бяха зададени, когато разгледахте тази страница</translation>
+<translation id="4764368918650455114">Уверете се, че двете устройства са отключени и са близо едно до друго, както и че функцията за Bluetooth е включена. Ако споделяте с Chromebook, не забравяйте да включите „Споделяне наблизо“ (отворете лентата на състоянието, като изберете часа, след което изберете „Споделяне наблизо“). <ph name="LINK_BEGIN" />Научете повече<ph name="LINK_END" /></translation>
 <translation id="4765582662863429759">Позволява на Android Messages да предава SMS съобщенията от телефона ви към вашия Chromebook</translation>
 <translation id="476598255842811483">Никой друг, освен ако не отворите функцията „Споделяне наблизо“ на устройството си</translation>
 <translation id="4768332406694066911">Имате идентифициращи ви сертификати от тези организации</translation>
@@ -3391,6 +3395,7 @@
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> – <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Това приложение е инсталирано от администратора ви.</translation>
 <translation id="4964455510556214366">Подредба</translation>
+<translation id="496446150016900060">Синхронизирайте Wi-Fi мрежите с телефона си</translation>
 <translation id="4965808351167763748">Наистина ли искате да настроите това устройство да изпълнява Hangouts Meet?</translation>
 <translation id="496888482094675990">Приложението Файлове предоставя бърз достъп до файловете, които сте запазили в Google Диск, във външно хранилище или на устройството си с Chrome OS.</translation>
 <translation id="4971412780836297815">Отваряне след приключване</translation>
@@ -3697,6 +3702,7 @@
 <translation id="5341980496415249280">Моля, изчакайте. Пакетирането е в ход...</translation>
 <translation id="5342091991439452114">ПИН кодът трябва да съдържа поне <ph name="MINIMUM" /> цифри</translation>
 <translation id="5344036115151554031">Linux се възстановява</translation>
+<translation id="5345916423802287046">Стартиране на приложението, когато влезете в профила си</translation>
 <translation id="5350293332385664455">Изключване на Google Асистент</translation>
 <translation id="535123479159372765">Текст, копиран от друго устройство</translation>
 <translation id="5352033265844765294">Поставяне на времево клеймо</translation>
@@ -4007,6 +4013,7 @@
 <translation id="5704875434923668958">Синхронизира се със:</translation>
 <translation id="5705005699929844214">Опциите за достъпност да се показват винаги</translation>
 <translation id="5705882733397021510">Назад</translation>
+<translation id="5707117624115653804">Персонализиране на размера и стила на надписите за приложенията и сайтовете, които поддържат тази настройка</translation>
 <translation id="5707185214361380026">Неуспешно зареждане на разширение от:</translation>
 <translation id="5708171344853220004">Основно име от Microsoft</translation>
 <translation id="5709557627224531708">Задаване на Chrome като браузър по подразбиране</translation>
@@ -4170,6 +4177,7 @@
 <translation id="5904614460720589786">Настройването на <ph name="APP_NAME" /> не бе успешно поради проблем с конфигурирането. Моля, обърнете се към администратора си. Код на грешката: <ph name="ERROR_CODE" />.</translation>
 <translation id="5906655207909574370">Актуализирането почти завърши! Остава само да рестартирате устройството си.</translation>
 <translation id="5906732635754427568">Данните, свързани с това приложение, ще бъдат премахнати от устройството.</translation>
+<translation id="5908474332780919512">Стартиране на приложението, когато влезете в профила си</translation>
 <translation id="5908695239556627796">Скорост на превъртане с мишката</translation>
 <translation id="5908769186679515905">Блокиране на изпълняването на Flash от сайтове</translation>
 <translation id="5910363049092958439">&amp;Запазване на изображението като...</translation>
@@ -4709,6 +4717,7 @@
 <translation id="6532527800157340614">Влизането в профила не бе успешно, защото означението ви за достъп не можа да бъде извлечено. Моля, проверете връзката си с мрежата и опитайте отново.</translation>
 <translation id="6532663472409656417">Корпоративно записано</translation>
 <translation id="6535331821390304775">Винаги да се разрешава на <ph name="ORIGIN" /> да отваря връзки от този тип в свързаното приложение</translation>
+<translation id="6537613839935722475">Можете да ползвате букви, цифри и къси тирета (-)</translation>
 <translation id="6538635548667167211">Текущата настройка за преноса на данни е „Данни“</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />Забележка<ph name="END_BOLD" />: Активирайте само ако знаете какви ще са последствията или сте помолени да го направите, тъй като събирането на данни може да намали ефективността.</translation>
 <translation id="6541638731489116978">Достъпът на този сайт до сензорите ви за движение е блокиран.</translation>
@@ -4797,6 +4806,7 @@
 <translation id="6650234781371031356">Паролата ви за <ph name="WEBSITE" /> се съхранява на това устройство и в профила ви в Google. Откъде искате да бъде изтрита?</translation>
 <translation id="665061930738760572">Отваряне в &amp;нов прозорец</translation>
 <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="6654509035557065241">Задаване на предпочитана мрежа</translation>
 <translation id="6655190889273724601">Режим за програмисти</translation>
@@ -5400,6 +5410,7 @@
 <translation id="7375235221357833624">{0,plural, =1{Актуализирайте устройството в рамките на 1 час}other{Актуализирайте устройството в рамките на # часа}}</translation>
 <translation id="7376553024552204454">Открояване на курсора на мишката, когато се движи</translation>
 <translation id="7377451353532943397">Достъпът до сензорите да продължи да се блокира</translation>
+<translation id="7378611153938412599">Ненадеждните пароли са лесни за отгатване. Уверете се, че създаваните от вас са надеждни. <ph name="BEGIN_LINK" />Вижте още съвети за сигурност<ph name="END_LINK" />.</translation>
 <translation id="73786666777299047">Отваряне на уеб магазина на Chrome</translation>
 <translation id="7378812711085314936">Получаване на връзка за пренос на данни</translation>
 <translation id="7380622428988553498">Името на устройството съдържа невалидни знаци</translation>
@@ -5924,6 +5935,7 @@
 <translation id="7959074893852789871">Файлът съдържаше няколко сертификата, някои от които не бяха импортирани:</translation>
 <translation id="7961015016161918242">Никога</translation>
 <translation id="7963001036288347286">Ускоряване на сензорния панел</translation>
+<translation id="7963608432878156675">Това име се вижда от другите устройства при връзки с мрежи и чрез Bluetooth</translation>
 <translation id="7963826112438303517">Асистент използва тези записи и гласовите ви заявки, за да създаде и актуализира гласовия ви модел, който се съхранява само на устройствата, на които сте включили Voice Match. Можете да прегледате гласовата активност или да обучите отново гласовия модел от настройките на Асистент.</translation>
 <translation id="7966241909927244760">К&amp;опиране на адреса на изображението</translation>
 <translation id="7966571622054096916">{COUNT,plural, =1{1 елемент в списъка с отметки}other{{COUNT} елемента в списъка с отметки}}</translation>
@@ -6388,6 +6400,7 @@
 <translation id="850875081535031620">Няма намерен опасен софтуер</translation>
 <translation id="8509177919508253835">Нулиране на ключове за сигурност и създаване на ПИН кодове</translation>
 <translation id="8509646642152301857">Изтеглянето на речника за проверка на правописа не бе успешно.</translation>
+<translation id="8512396579636492893">{COUNT,plural, =0{Няма открити ненадеждни пароли}=1{Открита е {COUNT} ненадеждна парола}other{Открити са {COUNT} ненадеждни пароли}}</translation>
 <translation id="8512476990829870887">Прекратяване на процеса</translation>
 <translation id="851263357009351303">Да се разреши на <ph name="HOST" /> винаги да показва изображения</translation>
 <translation id="8513108775083588393">Автоматично</translation>
diff --git a/chrome/app/resources/generated_resources_bn.xtb b/chrome/app/resources/generated_resources_bn.xtb
index 5e569f35..eb397e6 100644
--- a/chrome/app/resources/generated_resources_bn.xtb
+++ b/chrome/app/resources/generated_resources_bn.xtb
@@ -277,6 +277,7 @@
 <translation id="1313705515580255288">আপনার বুকমার্ক, ইতিহাস এবং অন্যান্য সেটিংস আপনার Google অ্যাকাউন্টে সিঙ্ক হবে৷</translation>
 <translation id="1314565355471455267">Android VPN</translation>
 <translation id="131461803491198646">হোম নেটওয়ার্ক, রোমিং নয়</translation>
+<translation id="1315056510003830387">ফ্ল্যাশ ব্যবহার করার অনুমতি দেওয়া হয়নি</translation>
 <translation id="1316136264406804862">সার্চ করা হচ্ছে...</translation>
 <translation id="1316495628809031177">সিঙ্ক থামানো হয়েছে</translation>
 <translation id="1317637799698924700">ইউএসবি টাইপ-সির সাথে মানানসই মোডে আপনার ডকিং স্টেশন কাজ করবে।</translation>
@@ -335,6 +336,7 @@
 <translation id="1386791642444521222">সিম চালু করুন</translation>
 <translation id="1387519831959169718">নিজের ব্রাউজিং আলাদা রাখতে, <ph name="NEW_USER" />-এর জন্য নতুন প্রোফাইল তৈরি করুন</translation>
 <translation id="138784436342154190">ডিফল্ট শুরুর পৃষ্ঠা পুনরুদ্ধার করবেন?</translation>
+<translation id="1388253969141979417">মাইক্রোফোন ব্যবহার করার অনুমতি দেওয়া হয়েছে</translation>
 <translation id="1388728792929436380">আপডেট সম্পূর্ণ হলে, <ph name="DEVICE_TYPE" /> রিস্টার্ট করা হবে।</translation>
 <translation id="1389342855416376185">সুরক্ষিত কন্টেন্ট ব্লক করুন</translation>
 <translation id="1390548061267426325">নিয়মিত ট্যাব রূপে খুলুন</translation>
@@ -385,6 +387,7 @@
 <translation id="1433811987160647649">অ্যাক্সেস করার আগে জিজ্ঞাসা করুন</translation>
 <translation id="1434696352799406980">এটি আপনার শুরুর পৃষ্ঠা, নতুন ট্যাব পৃষ্ঠা, সার্চ ইঞ্জিন, এবং পিন হওয়া ট্যাবগুলি আবার সেট করবে। এছাড়াও এটি সব কটি এক্সটেনশন বন্ধ করবে এবং কুকিজের মতো অস্থায়ী ডেটা সাফ করবে। আপনার বুকমার্ক, ইতিহাস এবং সংরক্ষিত পাসওয়ার্ডগুলি সাফ করা হবে না।</translation>
 <translation id="1434886155212424586">হোমপেজ হল নতুন ট্যাব পৃষ্ঠা</translation>
+<translation id="1435515966666225466">আপনার কম্পিউটার অ্যাক্সেস করতে প্লাগ-ইন ব্যবহার করার অনুমতি দেওয়া হয়েছে</translation>
 <translation id="1436390408194692385"><ph name="TICKET_TIME_LEFT" /> ব্যবহার করা যাবে</translation>
 <translation id="1436671784520050284">সেট-আপ চালিয়ে যান</translation>
 <translation id="1436784010935106834">সরানো হয়েছে</translation>
@@ -471,6 +474,7 @@
 <translation id="1530838837447122178">মাউস এবং টাচপ্যাড ডিভাইস সেটিংস খুলুন</translation>
 <translation id="1531004739673299060">অ্যাপ্লিকেশান উইন্ডো</translation>
 <translation id="1531275250079031713">'নতুন ওয়াই-ফাই কানেকশন যোগ করুন' ডায়ালগ বক্স খুলুন</translation>
+<translation id="1535228823998016251">জোরে</translation>
 <translation id="1536754031901697553">ডিসকানেক্ট করা হচ্ছে...</translation>
 <translation id="1537254971476575106">ফুলস্ক্রিন ম্যাগনিফায়ার</translation>
 <translation id="15373452373711364">বড় মাউস কার্সার</translation>
@@ -554,6 +558,7 @@
 <translation id="1627408615528139100">আগে থেকেই ডাউনলোড করা আছে</translation>
 <translation id="1628948239858170093">খোলার আগে ফাইল স্ক্যান করতে চান?</translation>
 <translation id="1629314197035607094">পাসওয়ার্ডের মেয়াদ শেষ হয়ে গেছে</translation>
+<translation id="163072119192489970">ডেটা পাওয়া বা পাঠানো শেষ করার অনুমতি দেওয়া হয়েছে</translation>
 <translation id="1630768113285622200">রিস্টার্ট করুন ও চালিয়ে যান</translation>
 <translation id="1632082166874334883">আপনার Google অ্যাকাউন্টে পাসওয়ার্ড স্টোর করা আছে</translation>
 <translation id="1632803087685957583">আপনাকে আপনার কীবোর্ডের পুনরাবৃত্তি হার, শব্দ পূর্বাভাষ, এবং আরও অনেক কিছুর সমন্বয় করতে অনুমতি দেয়</translation>
@@ -751,6 +756,7 @@
 <translation id="1841705068325380214"><ph name="EXTENSION_NAME" /> অক্ষম আছে</translation>
 <translation id="184273675144259287">আপনার Linux অ্যাপ ও ফাইল পুরনো ব্যাক-আপ দিয়ে প্রতিস্থাপিত করুন</translation>
 <translation id="1842766183094193446">আপনি কি ডেমো মোড চালু করতে চান?</translation>
+<translation id="1845727111305721124">সাউন্ড চালানোর অনুমতি দেওয়া হয়েছে</translation>
 <translation id="1846308012215045257"><ph name="PLUGIN_NAME" /> চালানোর জন্য Control-ক্লিক করুন</translation>
 <translation id="1849186935225320012">এই পৃষ্ঠাটির MIDI ডিভাইসগুলির উপর সম্পূর্ণ নিয়ন্ত্রণ আছে৷</translation>
 <translation id="1850508293116537636">&amp;ঘড়ির কাঁটার দিকে ঘোরান</translation>
@@ -775,6 +781,7 @@
 <translation id="187145082678092583">কয়েকটি অ্যাপ</translation>
 <translation id="1871534214638631766">কন্টেন্টের উপর মাউস রেখে ডানদিকে ক্লিক করলে বা দীর্ঘক্ষণ প্রেস করে ধরে রাখলে এর সংশ্লিষ্ট তথ্য দেখানো হয়</translation>
 <translation id="1871615898038944731">আপনার <ph name="DEVICE_TYPE" /> আপ-টু-ডেট আছে</translation>
+<translation id="1874248162548993294">যেকোনও বিজ্ঞাপন দেখানোর অনুমতি দেওয়া হয়েছে</translation>
 <translation id="1874972853365565008">{NUM_TABS,plural, =1{অন্য উইন্ডোতে ট্যাব সরিয়ে নিয়ে যান}one{অন্য উইন্ডোতে ট্যাবগুলি সরিয়ে নিয়ে যান}other{অন্য উইন্ডোতে ট্যাবগুলি সরিয়ে নিয়ে যান}}</translation>
 <translation id="1875386316419689002">এই ট্যাবটি একটি এইচআইডি ডিভাইসে কানেক্ট করা আছে।</translation>
 <translation id="1875387611427697908">এটি কেবলমাত্র <ph name="CHROME_WEB_STORE" /> থেকেই যোগ করা যেতে পারে</translation>
@@ -830,6 +837,7 @@
 <translation id="1931152874660185993">কোনো উপাদান ইনস্টল করা নেই৷</translation>
 <translation id="1932098463447129402">আগে কখনও নয়</translation>
 <translation id="1933809209549026293">দয়া করে একটি মাউস বা কীবোর্ড সংযোগ করুন৷ যদি আপনি একটি ব্লুটুথ ডিভাইস ব্যবহার করে থাকেন তবে এটি যুক্ত করার জন্য তৈরি কিনা নিশ্চিত করুন৷</translation>
+<translation id="1935303383381416800">আপনার লোকেশন দেখার অনুমতি দেওয়া হয়েছে</translation>
 <translation id="1936931585862840749">কতগুলি কপি প্রিন্ট হবে তা নির্দিষ্ট করতে একটি সংখ্যা ব্যবহার করুন (১ থেকে <ph name="MAX_COPIES" />-এর মধ্যে)।</translation>
 <translation id="1937774647013465102">এই ডিভাইস <ph name="ARCHITECTURE_DEVICE" /> হওয়ার ফলে <ph name="ARCHITECTURE_CONTAINER" /> ধরনের কন্টেনার আর্কিটেকচার ইম্পোর্ট করা যাচ্ছে না। আপনি একটি অন্য ডিভাইসে এই কন্টেনার ফিরিয়ে আনার চেষ্টা করতে পারেন অথবা 'ফাইল' অ্যাপ খুলে কন্টেনার ছবির অন্তর্ভুক্ত ফাইল অ্যাক্সেস করতে পারেন।</translation>
 <translation id="1938351510777341717">এক্সটার্নাল কমান্ড</translation>
@@ -947,6 +955,7 @@
 <translation id="2090165459409185032">আপনার অ্যাকাউন্ট তথ্য পুনরুদ্ধার করতে, google.com/accounts/recovery-তে যান</translation>
 <translation id="2090876986345970080">সিস্টেম সুরক্ষা সেটিং</translation>
 <translation id="2091887806945687916">আওয়াজ</translation>
+<translation id="209539936453343974">অভিভাবকীয় নিয়ন্ত্রণ সেট আপ করতে, সন্তানের জন্য অভিভাবকের ম্যানেজ করা একটি Google অ্যাকাউন্ট থাকতে হবে। Family Link অ্যাপের সাহায্যে <ph name="DEVICE_TYPE_PLURAL" /> ডিভাইসে অভিভাবকরা স্ক্রিন ব্যবহারের সময়সীমা সেট আপ করা, ওয়েবসাইটকে অনুমতি দেওয়া বা ব্লক করা ছাড়াও আরও অনেক কিছু রতে পারেন। Google Classroom-এর মতো সাইটে বাচ্চাদের স্কুলের কাজ করতে হলে পরে একটি স্কুল অ্যাকাউন্ট যোগ করা যাবে।</translation>
 <translation id="2096715839409389970">থার্ড-পার্টি কুকিজ মুছুন</translation>
 <translation id="2097372108957554726">নতুন ডিভাইস রেজিস্টার করতে আপনাকে Chrome-এ সাইন-ইন করতে হবে</translation>
 <translation id="2098805196501063469">বাকি পাসওয়ার্ড চেক করুন</translation>
@@ -1096,6 +1105,7 @@
 <translation id="2261323523305321874">আপনার প্রশাসক সিস্টেম জুড়ে কিছু পরিবর্তন করেছে যার ফলে কিছু পুরনো প্রোফাইল বন্ধ করা হয়েছে।</translation>
 <translation id="2262332168014443534">লাইট মোডের সাহায্যে HTTPS সহ সব পৃষ্ঠাতেই দ্রুত ব্রাউজ করতে পারবেন।</translation>
 <translation id="2262477216570151239">পুনরাবৃত্তির আগের বিলম্ব</translation>
+<translation id="2262888617381992508">কপিরাইটের অধীনে সুরক্ষিত কন্টেন্ট চালানোর অনুমতি দেওয়া হয়নি</translation>
 <translation id="2263189956353037928">সাইন-আউট করে আবার সাইন-ইন করুন</translation>
 <translation id="2263371730707937087">স্ক্রিন রিফ্রেশ রেট</translation>
 <translation id="22665427234727190">কোনও সাইট ব্লুটুথ ডিভাইস অ্যাক্সেস করতে চাইলে, একবার জিজ্ঞাসা করে নিন (সাজেস্ট করা হয়েছে)</translation>
@@ -1363,6 +1373,7 @@
 <translation id="2571655996835834626">কুকি, জাভাস্ক্রিপ্ট, প্লাগ-ইন, ভৌগোলিক লোকেশন, মাইক্রোফোন, ক্যামেরার মতো ফিচারগুলিতে ওয়েবসাইটের অ্যাক্সেস নিয়ন্ত্রণ করে যে সেটিংস সেটি পরিবর্তন করুন।</translation>
 <translation id="2572032849266859634"><ph name="VOLUME_NAME" />-এ শুধুমাত্র পাঠযোগ্য অ্যাক্সেস মঞ্জুর করা হয়েছে৷</translation>
 <translation id="2575247648642144396">এই আইকনটি দৃশ্যমান হবে যখন এক্সটেনশন বর্তমান পৃষ্ঠার উপর কাজ করতে পারবে৷ আইকনে ক্লিক করে বা <ph name="EXTENSION_SHORTCUT" /> টিপে এই এক্সটেনশন ব্যবহার করুন৷</translation>
+<translation id="2575441894380764255">ব্যাঘাত সৃষ্টিকারী অথবা বিভ্রান্তিকর বিজ্ঞাপন দেখানোর অনুমতি দেওয়া হয়নি</translation>
 <translation id="257779572837908839">মিটিংয়ের জন্য Chromebox সেট-আপ করুন</translation>
 <translation id="2579232805407578790">সার্ভারে কানেক্ট করা যায়নি। আপনার নেটওয়ার্ক কানেকশন চেক করে আবার চেষ্টা করে দেখুন। যদি সমস্যাটি চলতে থাকে তাহলে আপনার Chromebook রিস্টার্ট করুন। সমস্যার কোড: <ph name="ERROR_CODE" /></translation>
 <translation id="2580889980133367162">একাধিক ফাইল ডাউনলোড করতে <ph name="HOST" />-কে সবসময় অনুমতি দিন</translation>
@@ -1629,6 +1640,7 @@
 <translation id="2880660355386638022">উইন্ডো প্লেসমেন্ট</translation>
 <translation id="2881076733170862447">যখন আপনি এক্সটেনশনে ক্লিক করেন</translation>
 <translation id="2882943222317434580"><ph name="IDS_SHORT_PRODUCT_NAME" /> আবার চালু হবে এবং সাময়িকভাবে রিসেট হবে</translation>
+<translation id="288387288628762616">ফ্ল্যাশ ব্যবহার করার অনুমতি দেওয়া হয়েছে</translation>
 <translation id="2885378588091291677">কার্য পরিচালক</translation>
 <translation id="2885729872133513017">সার্ভারের উত্তর ডিকোড করার সময় সমস্যা হয়েছে।</translation>
 <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation>
@@ -1663,6 +1675,7 @@
 <translation id="2923234477033317484">এই অ্যাকাউন্ট সরিয়ে দিন</translation>
 <translation id="2926085873880284723">ডিফল্ট শর্টকাট ফিরিয়ে আনুন</translation>
 <translation id="2927017729816812676">ক্যাশে সঞ্চয় স্থান</translation>
+<translation id="2928795416630981206">আপনার ক্যামেরার পজিশন ট্র্যাক করার অনুমতি দেওয়া হয়েছে</translation>
 <translation id="2931157624143513983">পৃষ্ঠার প্রিন্টযোগ্য অংশে ফিট করুন</translation>
 <translation id="2932085390869194046">পাসওয়ার্ড প্রস্তাব করুন…</translation>
 <translation id="2932330436172705843"><ph name="PROFILE_DISPLAY_NAME" /> (শিশুদের জন্য অ্যাকাউন্ট)</translation>
@@ -1670,6 +1683,7 @@
 <translation id="2932883381142163287">আপত্তিজনক হিসাবে অভিযোগ করুন</translation>
 <translation id="2933632078076743449">শেষ আপডেট</translation>
 <translation id="2934999512438267372">MIDI ডিভাইসগুলি সম্পূর্ণ নিয়ন্ত্রণের অনুমতি দেওয়া হয়েছে</translation>
+<translation id="2935654492420446828">পরে স্কুল অ্যাকাউন্ট যোগ করুন</translation>
 <translation id="2936851848721175671">ব্যাক-আপ ও ফিরিয়ে আনা</translation>
 <translation id="2938225289965773019"><ph name="PROTOCOL" /> লিঙ্কগুলি খুলুন</translation>
 <translation id="2938845886082362843">আপনার 'নিরাপত্তা কী'-তে সেভ করে রাখা সাইন-ইন ডেটা দেখুন ও মুছুন</translation>
@@ -1773,6 +1787,7 @@
 <translation id="3060379269883947824">'বাছুন ও শুনুন' চালু করুন</translation>
 <translation id="3060952009917586498">ডিভাইসের ভাষা পরিবর্তন করুন। এখন <ph name="LANGUAGE" /> ভাষায় ডিভাইসটি ব্যবহার করছেন।</translation>
 <translation id="3065041951436100775">ট্যাব নষ্ট হওয়ার প্রতিক্রিয়া।</translation>
+<translation id="306535478112428611">আপনার ডিভাইসে ফাইল অথবা ফোল্ডার এডিট করার অনুমতি দেওয়া হয়নি</translation>
 <translation id="3065522099314259755">কীবোর্ড রিপিট করার লেটেন্সি</translation>
 <translation id="3067198179881736288">অ্যাপ ইনস্টল করবেন?</translation>
 <translation id="3067198360141518313">এই প্লাগ-ইনটি চালনা</translation>
@@ -1908,6 +1923,7 @@
 <translation id="324849028894344899"><ph name="WINDOW_TITLE" /> - নেটওয়ার্ক ত্রুটি</translation>
 <translation id="3248902735035392926">নিরাপত্তা বজায় রাখা গুরুত্বপূর্ণ। একটু সময় নিয়ে <ph name="BEGIN_LINK" />এখনই আপনার এক্সটেনশন চেক করুন<ph name="END_LINK" /></translation>
 <translation id="3251759466064201842">&lt;শংসাপত্রের অংশ নয়&gt;</translation>
+<translation id="325238099842880997">আপনার সন্তানকে বিভিন্ন বিষয়ে জানা, খেলা করা ও বাড়িতে স্কুলের কাজ করতে সাহায্য করার জন্য প্রাথমিক ডিজিটাল নিয়মাবলী সেট করুন</translation>
 <translation id="3253225298092156258">উপলভ্য নয়</translation>
 <translation id="3253448572569133955">অপরিচিত অ্যাকাউন্ট</translation>
 <translation id="3254084468305910013">{COUNT,plural, =0{নিরাপত্তা সংক্রান্ত কোনও সমস্যা খুঁজে পাওয়া যায়নি}=1{নিরাপত্তা সংক্রান্ত {COUNT}টি সমস্যা খুঁজে পাওয়া গেছে}one{নিরাপত্তা সংক্রান্ত {COUNT}টি সমস্যা খুঁজে পাওয়া গেছে}other{নিরাপত্তা সংক্রান্ত {COUNT}টি সমস্যা খুঁজে পাওয়া গেছে}}</translation>
@@ -2035,6 +2051,7 @@
 <translation id="3404249063913988450">স্ক্রিন সেভার চালু করুন</translation>
 <translation id="3405664148539009465">হরফগুলি কাস্টমাইজ করুন</translation>
 <translation id="3405763860805964263">...</translation>
+<translation id="3406290648907941085">ভার্চুয়াল রিয়েলিটি ডিভাইস ও ডেটা ব্যবহার করার অনুমতি দেওয়া হয়েছে</translation>
 <translation id="3406396172897554194">ভাষা বা ইনপুট নামের মাধ্যমে খুঁজুন</translation>
 <translation id="3406605057700382950">ও বুকমার্ক বার দেখান</translation>
 <translation id="340671561090997290">{NUM_EXTENSIONS,plural, =1{এই এক্সটেনশনটি বিপজ্জনক হতে পারে}one{এই এক্সটেনশনগুলি বিপজ্জনক হতে পারে}other{এই এক্সটেনশনগুলি বিপজ্জনক হতে পারে}}</translation>
@@ -2199,6 +2216,7 @@
 <translation id="3586806079541226322">এই ফাইল খোলা যাচ্ছে না</translation>
 <translation id="3586931643579894722">বিশদ বিবরণ লুকান</translation>
 <translation id="3587482841069643663">সকল</translation>
+<translation id="3588790464166520201">পেমেন্ট হ্যান্ডলার ইনস্টল করার অনুমতি দেওয়া হয়েছে</translation>
 <translation id="3589766037099229847">নিরাপত্তাহীন কন্টেন্ট ব্লক করা হয়েছে</translation>
 <translation id="3590194807845837023">প্রোফাইল আনলক করুন এবং পুনরায় লঞ্চ করুন</translation>
 <translation id="3590295622232282437">ম্যানেজ করা সেশনে জয়েন করা হচ্ছে।</translation>
@@ -2424,6 +2442,7 @@
 <translation id="3822559385185038546">এই প্রক্সী আপনার প্রশাসক দ্বারা কার্যকরী করা হয়েছে</translation>
 <translation id="3823310065043511710">Linux-এর জন্য কমপক্ষে <ph name="INSTALL_SIZE" />  জায়গা খালি রাখার জন্য সাজেস্ট করা হচ্ছে।</translation>
 <translation id="3824621460022590830">ডিভাইস এনরোলমেন্ট টোকেনটি সঠিক নয়। আপনার ডিভাইসের মালিক বা অ্যাডমিনিস্ট্রেটরের সাথে যোগাযোগ করুন। সমস্যার কোড: <ph name="ERROR_CODE" /></translation>
+<translation id="3826071569074535339">মোশন সেন্সর ব্যবহার করার অনুমতি দেওয়া হয়েছে</translation>
 <translation id="3826440694796503677">আপনার অ্যাডমিনিস্ট্রেটর আরও Google অ্যাকাউন্ট যোগ করার বিকল্প বন্ধ করে দিয়েছে</translation>
 <translation id="3827306204503227641">আনস্যান্ডবক্সড প্লাগ ইনগুলিকে অনুমতি দেওয়া অবিরত রাখুন</translation>
 <translation id="3827774300009121996">&amp;পূর্ণ স্ক্রীণ</translation>
@@ -2476,6 +2495,8 @@
 <translation id="3873423927483480833">পিন দেখুন</translation>
 <translation id="3873915545594852654">ARC++ নিয়ে একটি সমস্যা হয়েছে।</translation>
 <translation id="3874164307099183178">Google Assistant অ্যাপ চালু করুন</translation>
+<translation id="3877075909000773256"><ph name="USER_NAME" />-এর ডিভাইসে 'নিয়ারবাই শেয়ার' সেটিংস, <ph name="USER_EMAIL" /> অ্যাকাউন্টের মাধ্যমে শেয়ার করছেন।</translation>
+<translation id="387771067039689031">আপনার কম্পিউটার অ্যাক্সেস করতে প্লাগ-ইন ব্যবহার করার অনুমতি দেওয়া হয়নি</translation>
 <translation id="3879748587602334249">ডাউনলোড ম্যানেজার</translation>
 <translation id="3881478300875776315">কম লাইন দেখুন</translation>
 <translation id="3882165008614329320">ক্যামেরা বা ফাইলে আগে থেকে থাকা ভিডিও</translation>
@@ -2512,6 +2533,7 @@
 <translation id="3919145445993746351">আপনার সব কম্পিউটারে এক্সটেনশন পেতে, সিঙ্ক চালু করুন</translation>
 <translation id="3920504717067627103">সার্টিফিকেটের নীতিসমূহ</translation>
 <translation id="392089482157167418">ChromeVox (কথ্য প্রতিবার্তা) চালু করুন</translation>
+<translation id="3920909973552939961">পেমেন্ট হ্যান্ডলার ইনস্টল করার অনুমতি দেওয়া হয়নি</translation>
 <translation id="3923184630988645767">ডেটা ব্যবহার</translation>
 <translation id="3923676227229836009">এই পৃষ্ঠাকে ফাইল দেখার অনুমতি দেওয়া হয়েছে</translation>
 <translation id="3924145049010392604">Meta</translation>
@@ -2635,6 +2657,7 @@
 <translation id="4058793769387728514">এখন ডকুমেন্ট চেক করুন</translation>
 <translation id="406070391919917862">পৃষ্ঠভূমি অ্যাপ্লিকেশান</translation>
 <translation id="4061374428807229313">শেয়ার করতে, Files অ্যাপের কোনও ফোল্ডারের উপর রাইট-ক্লিক করুন এবং "Parallels Desktop-এর সাথে শেয়ার করুন" বিকল্পটি বেছে নিন।</translation>
+<translation id="406213378265872299">কাস্টমাইজ করা আচরণ</translation>
 <translation id="4065876735068446555">আপনি যে নেটওয়ার্কটি <ph name="NETWORK_ID" /> ব্যবহার করছেন সেটির জন্য অপনাকে এটির লগ-ইন পৃষ্ঠাতে যেতে হতে পরে৷</translation>
 <translation id="4066207411788646768">আপনার নেটওয়ার্কে থাকা প্রিন্টারগুলি দেখতে ইন্টারনেট কানেকশন চেক করুন</translation>
 <translation id="4068776064906523561">সংরক্ষিত আঙ্গুলের ছাপগুলি</translation>
@@ -2781,6 +2804,7 @@
 <translation id="425573743389990240">ওয়াটে ব্যাটারি ডিসচার্জের হার (ঋণাত্মক মানের অর্থ হল ব্যাটারি চার্জ হচ্ছে)</translation>
 <translation id="4256316378292851214">এইরূপে ভিডিও সংর&amp;ক্ষণ করুন...</translation>
 <translation id="4258348331913189841">ফাইল সিস্টেম</translation>
+<translation id="4259388776256904261">এর জন্য কিছু সময় লাগতে পারে</translation>
 <translation id="4260182282978351200"><ph name="FILE_NAME" /> বিপজ্জনক হতে পারে। স্ক্যান করার জন্য Google-এর উন্নত সুরক্ষা প্রোগ্রামে পাঠাবেন? 'ডাউনলোড বার' ফিচারে যেতে 'Shift'+F6 বোতাম প্রেস করুন।</translation>
 <translation id="4263223596040212967">আপনার কীবোর্ড লে-আউট ভাল করে দেখে নিয়ে আবার চেষ্টা করুন।</translation>
 <translation id="4263757076580287579">প্রিন্টের নিবন্ধন বাতিল করা হয়েছে৷</translation>
@@ -2932,6 +2956,7 @@
 <translation id="4450974146388585462">নির্ণয় করুন</translation>
 <translation id="4451479197788154834">এই ডিভাইসে এবং আপনার Google অ্যাকাউন্টে পাসওয়ার্ড সেভ করা আছে</translation>
 <translation id="4451757071857432900">সাইটে থাকা ব্যাঘাত সৃষ্টিকারী বা বিভ্রান্তিকর বিজ্ঞাপন ব্লক করা হয়েছে (প্রস্তাবিত)</translation>
+<translation id="4453205916657964690">সাবনেট মাস্ক</translation>
 <translation id="4453946976636652378"><ph name="SEARCH_ENGINE_NAME" />-এ সার্চ করুন অথবা ইউআরএল টাইপ করুন</translation>
 <translation id="4459169140545916303"><ph name="DEVICE_LAST_ACTIVATED_TIME" /> দিন আগে ব্যবহার করা হয়েছে</translation>
 <translation id="4460014764210899310">আলাদা করুন</translation>
@@ -2959,6 +2984,7 @@
 <translation id="4481530544597605423">বিযুক্ত করা ডিভাইসগুলি</translation>
 <translation id="4483049906298469269">ডিফল্ট অবস্থায় নেই এমন নেটওয়ার্ক গেটওয়েতে পিং করা যায়নি</translation>
 <translation id="4487489714832036847">গতানুগতিক সফ্টওয়্যারের পরিবর্তে Chromebook কিছু অ্যাপ ব্যবহার করে। প্রোডাক্টিভিটি, বিনোদন ও আরও অনেক কিছুর জন্য অ্যাপ ইনস্টল করুন।</translation>
+<translation id="4488257340342212116">আপনার ক্যামেরা ব্যবহার করার অনুমতি দেওয়া হয়েছে</translation>
 <translation id="4488502501195719518">সব ডেটা মুছবেন?</translation>
 <translation id="449232563137139956">ইলাস্ট্রেশনের জন্য সাইট সাধারণত ছবি দেখায়, যেমন অনলাইন স্টোর অথবা খবরের নিবন্ধ সংক্রান্ত ছবি</translation>
 <translation id="4493468155686877504">সাজেস্ট করা হয়েছে (<ph name="INSTALL_SIZE" />)</translation>
@@ -2991,6 +3017,7 @@
 <translation id="4524832533047962394">অপারেটিং সিস্টেমের এই ভার্সনটি প্রদত্ত নথিভুক্তকরণের মোড সমর্থন করে না। আপনি সর্বাধুনিক ভার্সনটি চালাচ্ছেন কিনা দেখুন।</translation>
 <translation id="4527186207340858212">নতুন অফিস প্রোফাইল তৈরি করতে চান?</translation>
 <translation id="452750746583162491">আপনার সিঙ্ক করা ডেটা পর্যালোচনা করুন</translation>
+<translation id="4527929807707405172">রিভার্স স্ক্রলিং চালু করুন। <ph name="LINK_BEGIN" />আরও জানুন<ph name="LINK_END" /></translation>
 <translation id="4528494169189661126">অনুবাদ সাজেশন</translation>
 <translation id="4530494379350999373">উৎস</translation>
 <translation id="4531924570968473143">এই <ph name="DEVICE_TYPE" /> ডিভাইসে আপনি কাকে যোগ করতে চান?</translation>
@@ -3011,6 +3038,7 @@
 <translation id="4545028762441890696">এটিকে আবার সক্ষম করতে, নতুন অনুমতিগুলি স্বীকার করুন:</translation>
 <translation id="4545759655004063573">অপর্যাপ্ত অনুমতির কারণে সংরক্ষণ করতে পারবেন না৷ দয়া করে অন্য কোনো স্থানে সংরক্ষণ করুন৷</translation>
 <translation id="4546308221697447294">Google Chrome দিয়ে দ্রুত ব্রাউজ করুন</translation>
+<translation id="4546345569117159016">ডানদিকের মাউস বোতাম</translation>
 <translation id="4546692474302123343">Google Assistant-এর ভয়েস ইনপুট</translation>
 <translation id="4547659257713117923">অন্য ডিভাইসগুলি থেকে কোনো ট্যাব নেই</translation>
 <translation id="4547672827276975204">অটোমেটিক সেট হবে</translation>
@@ -3070,6 +3098,7 @@
 <translation id="4608500690299898628">&amp;সন্ধান করুন...</translation>
 <translation id="4608520674724523647">নথিভুক্ত করার সচিত্র বিবরণ</translation>
 <translation id="4608703838363792434"><ph name="FILE_NAME" />-এ সংবেদনশীল কন্টেন্ট আছে</translation>
+<translation id="4609987916561367134">জাভাস্ক্রিপ্ট ব্যবহার করার অনুমতি দেওয়া হয়েছে</translation>
 <translation id="4610162781778310380"><ph name="PLUGIN_NAME" /> এ সমস্যা হয়েছে</translation>
 <translation id="4610637590575890427">আপনি <ph name="SITE" />-এ যাওয়ার কথা বলছেন কি?</translation>
 <translation id="4611114513649582138">ডেটা সংযোগ উপলভ্য নেই৷</translation>
@@ -3181,6 +3210,7 @@
 <translation id="473775607612524610">আপডেট করুন</translation>
 <translation id="473936925429402449">বেছে নেওয়া ও অতিরিক্ত কন্টেন্ট থাকা মোট <ph name="TOTAL_ELEMENTS" />টি এলিমেন্টের মধ্যে <ph name="CURRENT_ELEMENT" /> নম্বর এলিমেন্ট</translation>
 <translation id="4739639199548674512">টিকিট</translation>
+<translation id="4742334355511750246">ছবি দেখানোর অনুমতি দেওয়া হয়নি</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>
@@ -3316,6 +3346,7 @@
 <translation id="4908811072292128752">একসাথে দুটি সাইট ব্রাউজ করতে নতুন ট্যাব খুলুন</translation>
 <translation id="4909038193460299775">এই অ্যাকাউন্টটি <ph name="DOMAIN" /> দ্বারা পরিচালিত হওয়ার কারণে আপনার বুকমার্ক, ইতিহাস, পাসওয়ার্ড এবং অন্যান্য সেটিংস এই ডিভাইস থেকে সাফ করা হবে। অবশ্য, আপনার ডেটা আপনার Google অ্যাকাউন্টে সঞ্চিত থাকবে এবং <ph name="BEGIN_LINK" />Google ড্যাশবোর্ড<ph name="END_LINK" /> থেকে তা পরিচালনা করা যাবে।</translation>
 <translation id="4912643508233590958">নিষ্ক্রিয়তা সময়ের সমাপ্তি</translation>
+<translation id="4915961947098019832">ছবি দেখানোর অনুমতি দেওয়া হয়েছে</translation>
 <translation id="4916542008280060967">সাইটকে <ph name="FILE_NAME" /> এডিট করার অনুমতি দেবেন?</translation>
 <translation id="491691592645955587">একটি সুরক্ষিত ব্রাউজারে স্যুইচ করুন</translation>
 <translation id="4917385247580444890">জোরালো</translation>
@@ -3403,6 +3434,7 @@
 <translation id="5027550639139316293">ইমেল সার্টিফিকেট</translation>
 <translation id="5027562294707732951">এক্সটেনশন যোগ করুন</translation>
 <translation id="5029568752722684782">কপি সাফ করুন</translation>
+<translation id="5033137252639132982">মোশন সেন্সর ব্যবহার করার অনুমতি দেওয়া হয়নি</translation>
 <translation id="5033266061063942743">জ্যামিতিক আকৃতি</translation>
 <translation id="5036662165765606524">কোনো সাইটকে অটোমেটিক একাধিক ফাইল ডাউনলোড করার জন্য মঞ্জুরি দেবেন না</translation>
 <translation id="5037676449506322593">সকল বেছে নিন</translation>
@@ -3452,6 +3484,7 @@
 <translation id="5088172560898466307">সার্ভার হোস্টনাম</translation>
 <translation id="5088534251099454936">RSA এনক্রিপশানের সাথে PKCS #1 SHA-512</translation>
 <translation id="5089810972385038852">রাজ্য</translation>
+<translation id="5090637338841444533">আপনার ক্যামেরার পজিশন ট্র্যাক করার অনুমতি দেওয়া হয়নি</translation>
 <translation id="5094721898978802975">সহযোগী ন্যাটিভ অ্যাপ্লিকেশানগুলির সাথে যোগাযোগ করুন</translation>
 <translation id="5097002363526479830">'<ph name="NAME" />': <ph name="DETAILS" /> নেটওয়ার্কে সংযোগ করা গেল না </translation>
 <translation id="5097649414558628673">টুল: <ph name="PRINT_NAME" /></translation>
@@ -3760,6 +3793,7 @@
 <translation id="5471768120198416576">হ্যালো! আমি হলাম আপনার পাঠ্য থেকে ভাষ্য ভয়েস।</translation>
 <translation id="5472627187093107397">এই সাইটের জন্য সেভ করা পাসওয়ার্ড</translation>
 <translation id="5473333559083690127">নতুন পিন পুনরায় লিখুন</translation>
+<translation id="5481273127572794904">একাধিক ফাইল অটোমেটিক ডাউনলোড করার অনুমতি দেওয়া হয়নি</translation>
 <translation id="5481941284378890518">আশেপাশের প্রিন্টারগুলি যোগ করুন</translation>
 <translation id="5483785310822538350">ফাইল এবং ডিভাইসের অ্যাক্সেস প্রত্যাহার করুন</translation>
 <translation id="5485080380723335835">আপনার <ph name="DEVICE_TYPE" /> নিরাপত্তার জন্য লক করা হয়েছে। চালিয়ে যেতে আপনার পাসওয়ার্ড লিখুন।</translation>
@@ -3781,6 +3815,7 @@
 <translation id="5495466433285976480">আপনি যখন পরবর্তীতে রিস্টার্ট করবেন তখন এটি সমস্ত স্থানীয় ব্যবহারকারী, ফাইল, ডেটা, এবং অন্যান্য সেটিংস সরিয়ে ফেলবে৷ সকল ব্যবহারকারীকে আবার সাইন-ইন করতে হবে৷</translation>
 <translation id="5495597166260341369">ডিসপ্লে চালু রাখুন</translation>
 <translation id="5496587651328244253">সংগঠিত করুন</translation>
+<translation id="5496730470963166430">পপ-আপ পাঠানো ও রিডাইরেক্ট করার অনুমতি দেওয়া হয়নি</translation>
 <translation id="5497251278400702716">এই ফাইল</translation>
 <translation id="5498967291577176373">ইনলাইন সাজেশনের সাহায্যে আরও তাড়াতাড়ি নাম, ঠিকানা বা ফোন নম্বর লিখুন</translation>
 <translation id="5499313591153584299">এই ফাইলটি আপনার কম্পিউটারের জন্য ক্ষতিকারক হতে পারে৷</translation>
@@ -3788,6 +3823,7 @@
 <translation id="5500709606820808700">আজ নিরাপত্তা সংক্রান্ত পরীক্ষা চালানো হয়েছে</translation>
 <translation id="5501809658163361512">{COUNT,plural, =1{<ph name="DEVICE_NAME" /> থেকে <ph name="ATTACHMENTS" /> পাওয়া যায়নি}one{<ph name="DEVICE_NAME" /> থেকে <ph name="ATTACHMENTS" /> পাওয়া যায়নি}other{<ph name="DEVICE_NAME" /> থেকে <ph name="ATTACHMENTS" /> পাওয়া যায়নি}}</translation>
 <translation id="5502500733115278303">Firefox থেকে আমদানি করা</translation>
+<translation id="5502915260472117187">বাচ্চার জন্য ডিভাইস সেট আপ করুন</translation>
 <translation id="5503982651688210506">আপনার ক্যামেরা ব্যবহার করতে এবং সরাতে ও আপনার মাইক্রোফোন ব্যবহার করতে <ph name="HOST" />-কে অনুমতি দেওয়ার বিষয়টি চালিয়ে যান</translation>
 <translation id="5505264765875738116">সাইট আপনাকে বিজ্ঞপ্তি পাঠাতে পারবে না</translation>
 <translation id="5505307013568720083">কালি ফুরিয়ে গেছে</translation>
@@ -3875,6 +3911,7 @@
 <translation id="5596627076506792578">আরও বিকল্পগুলি</translation>
 <translation id="5600706100022181951">আপডেটটি ডাউনলোড করতে <ph name="UPDATE_SIZE_MB" /> এমবি মোবাইল ডেটা খরচ হবে। ডাউনলোড করতে চান?</translation>
 <translation id="5601503069213153581">পিন</translation>
+<translation id="5601823921345337195">MIDI ডিভাইসের সাথে কানেক্ট করার অনুমতি দেওয়া হয়নি</translation>
 <translation id="5602765853043467355">এই ডিভাইসের বুকমার্ক, ইতিহাস, পাসওয়ার্ড এবং আরও অনেক কিছু খালি করুন</translation>
 <translation id="5605623530403479164">অন্যান্য সার্চ ইঞ্জিন</translation>
 <translation id="5605758115928394442">এটি যে আপনি তা কনফার্ম করতে আপনার ফোনে একটি বিজ্ঞপ্তি পাঠানো হয়েছে।</translation>
@@ -3996,6 +4033,7 @@
 <translation id="5747552184818312860">মেয়াদ শেষ হবে</translation>
 <translation id="5747785204778348146">ডেভেলপার - অস্থায়ী</translation>
 <translation id="5747809636523347288"><ph name="URL" /> পে&amp;স্ট করে সেখানে যান</translation>
+<translation id="5754152670305761216">কপিরাইটের অধীনে সুরক্ষিত কন্টেন্ট চালানোর অনুমতি দেওয়া হয়েছে</translation>
 <translation id="5756163054456765343">সহায়তা কেন্দ্র</translation>
 <translation id="5759728514498647443"><ph name="APP_NAME" />-এর মাধ্যমে প্রিন্ট করার জন্য আপনার পাঠানো দস্তাবেজগুলি <ph name="APP_NAME" />-এর মাধ্যমে পড়া যাবে৷</translation>
 <translation id="5763751966069581670">কোনও USB ডিভাইস খুঁজে পাওয়া যায়নি</translation>
@@ -4463,6 +4501,7 @@
 <translation id="6295158916970320988">সমস্ত সাইট</translation>
 <translation id="6295855836753816081">সংরক্ষণ করা হচ্ছে...</translation>
 <translation id="6298962879096096191">Android অ্যাপ ইনস্টল করতে Google Play ব্যবহার করুন</translation>
+<translation id="6300177430812514606">ডেটা পাওয়া বা পাঠানো শেষ করার অনুমতি দেওয়া হয়নি</translation>
 <translation id="630065524203833229">ব&amp;ন্ধ</translation>
 <translation id="6300718114348072351"><ph name="PRINTER_NAME" /> অটোমেটিক কনফিগার করা যাচ্ছে না। প্রিন্টারের উন্নত বিবরণ উল্লেখ করুন। <ph name="LINK_BEGIN" />আরও জানুন<ph name="LINK_END" /></translation>
 <translation id="6301076166764763868">ব্যক্তিগত ব্রাউজিং থেকে <ph name="EXISTING_USER" /> হিসেবে ব্রাউজিংকে আলাদা রাখতে, <ph name="NEW_USER" />-এর জন্য নতুন প্রোফাইল তৈরি করুন</translation>
@@ -4539,6 +4578,7 @@
 <translation id="6390020764191254941">ট্যাবটি নতুন উইন্ডোতে খুলুন</translation>
 <translation id="6390799748543157332">এই উইন্ডোতে আপনি যে পৃষ্ঠাগুলি দেখেন তা ব্রাউজারের ইতিহাসে থাকবে না এবং আপনি খুলে রাখা সব গেস্ট উইন্ডো বন্ধ করার পরে এগুলি কম্পিউটারটিতে কুকিজের মতো অন্যান্য ট্রেসও রেখে যাবে না৷ যদিও আপনার ডাউনলোড করা যেকোনো ফাইল সংরক্ষিত হবে৷</translation>
 <translation id="6393156038355142111">শক্তিশালী পাসওয়ার্ড সাজেস্ট করুন</translation>
+<translation id="6393550101331051049">নিরাপদ নয় এমন কন্টেন্ট দেখানোর অনুমতি দেওয়া হয়েছে</translation>
 <translation id="6395423953133416962"><ph name="BEGIN_LINK1" />সিস্টেমের তথ্য<ph name="END_LINK1" /> এবং <ph name="BEGIN_LINK2" />মেট্রিক্স<ph name="END_LINK2" /> পাঠান</translation>
 <translation id="6396988158856674517">মোশন সেন্সর ব্যবহার করা থেকে সাইটকে ব্লক করুন</translation>
 <translation id="6398715114293939307">Google Play স্টোর সরান</translation>
@@ -4571,6 +4611,7 @@
 <translation id="6425556984042222041">টেক্সট-টু-স্পিচ রেট</translation>
 <translation id="6426200009596957090">ChromeVox এর সেটিংস খুলুন</translation>
 <translation id="642654727595919401"><ph name="DOMAIN" /> আপনাকে নিজের ডেটার ব্যাকআপ নিয়ে ১ সপ্তাহের মধ্যে এই <ph name="DEVICE_TYPE" /> ফেরত দিতে বলছে।<ph name="LINK_BEGIN" />বিস্তারিত দেখুন<ph name="LINK_END" /></translation>
+<translation id="642729974267661262">সাউন্ড চালানোর অনুমতি দেওয়া হয়নি</translation>
 <translation id="6428982734197629783">ছবি প্রসেস করা হচ্ছে</translation>
 <translation id="6429384232893414837">আপডেট করতে সমস্যা হয়েছে</translation>
 <translation id="6430814529589430811">Base64-এনকোডেড ASCII, একক সার্টিফিকেট</translation>
@@ -4599,6 +4640,7 @@
 <translation id="6458701200018867744">আপলোড করা যায়নি (<ph name="WEBRTC_LOG_UPLOAD_TIME" />)।</translation>
 <translation id="6459488832681039634">খোঁজার জন্য নির্বাচন ব্যবহার করুন</translation>
 <translation id="6459799433792303855">অন্য ডিসপ্লেতে সক্রিয় উইন্ডোটি সরিয়ে দেওয়া হয়েছে।</translation>
+<translation id="6460566145397380451">MIDI ডিভাইসের সাথে কানেক্ট করার অনুমতি দেওয়া হয়েছে</translation>
 <translation id="6460601847208524483">পরবর্তী খুঁজুন</translation>
 <translation id="6461170143930046705">নেটওয়ার্ক সার্চ করা হচ্ছে…</translation>
 <translation id="6463795194797719782">&amp;সম্পাদনা</translation>
@@ -4630,6 +4672,7 @@
 <translation id="6499681088828539489">শেয়ার করা নেটওয়ার্কগুলির জন্য প্রক্সির অনুমতি দেবেন না</translation>
 <translation id="650266656685499220">অ্যালবাম তৈরি করতে, Google Photos-এ যান</translation>
 <translation id="6503077044568424649">সর্বাধিক দেখা</translation>
+<translation id="650457560773015827">বাঁদিকের মাউস বোতাম</translation>
 <translation id="6504611359718185067">একটি প্রিন্টার যোগ করার জন্য ইন্টারনেটের সাথে সংযোগ করুন</translation>
 <translation id="6506374932220792071">SHA-256 সহ X9.62 ECDSA স্বাক্ষর</translation>
 <translation id="6508248480704296122"><ph name="NAME_PH" /> সম্পর্কিত</translation>
@@ -4831,6 +4874,7 @@
 <translation id="676560328519657314">Google Pay-তে আপনার পেমেন্টের পদ্ধতি</translation>
 <translation id="6767566652486411142">অন্য ভাষা বেছে নিন...</translation>
 <translation id="6767639283522617719">ডোমেনে যোগ করা যাবে না। প্রতিষ্ঠানের ইউনিটের জন্য সেটিংস সঠিক কিনা ভাল করে দেখে নিন।</translation>
+<translation id="6768034047581882264">নিরাপদ নয় এমন কন্টেন্ট দেখানোর অনুমতি দেওয়া হয়নি</translation>
 <translation id="6769557323306147204"><ph name="ORGANIZATION_NAME" /> আপনাকে এই ডিভাইস আপডেট করতে সাজেস্ট করছে।</translation>
 <translation id="6769712124046837540">প্রিন্টার যোগ করা হচ্ছে...</translation>
 <translation id="6770602306803890733">ওয়েবে আপনার এবং সকলের জন্য নিরাপত্তা আরও উন্নত করুন</translation>
@@ -4922,6 +4966,7 @@
 <translation id="6865313869410766144">স্বতঃপূর্ণ ফর্ম ডেটা</translation>
 <translation id="6865598234501509159">পৃষ্ঠাটি <ph name="LANGUAGE" /> ভাষায় নেই</translation>
 <translation id="6865708901122695652">WebRTC ইভেন্ট লগ (<ph name="WEBRTC_EVENT_LOG_COUNT" />)</translation>
+<translation id="686609795364435700">নীরব</translation>
 <translation id="686664946474413495">রঙের তাপমাত্রা</translation>
 <translation id="6868934826811377550">বিবরণ দেখুন</translation>
 <translation id="6871644448911473373">OCSP প্রতিক্রিয়াকারী: <ph name="LOCATION" /> </translation>
@@ -4971,6 +5016,7 @@
 <translation id="6922745772873733498">প্রিন্ট করতে সঠিক পিনটি লিখুন</translation>
 <translation id="6923132443355966645">স্ক্রল / ক্লিক করুন</translation>
 <translation id="6923633482430812883">মাউন্ট করার সময় সমস্যা হয়েছে। আপনি যে ফাইল সার্ভারে কানেক্ট করছেন সেটি SMBv2 বা তার পরের কোনও ভার্সন সমর্থন করে কিনা দেখুন।</translation>
+<translation id="6929126689972602640">স্কুল অ্যাকাউন্টে অভিভাবকীয় নিয়ন্ত্রণ কাজ করে না। বাড়িতে স্কুলের কাজ করার উদ্দেশ্যে Google Classroom ও অন্যান্য ওয়েবসাইট অ্যাক্সেস করার জন্য স্কুল অ্যাকাউন্ট যোগ করতে, প্রথমে বাচ্চার ব্যক্তিগত অ্যাকাউন্ট দিয়ে সাইন-ইন করুন। পরে আপনি 'ব্যবহারকারী যোগ করুন' বিকল্প থেকে স্কুল অ্যাকাউন্ট যোগ করতে পারবেন।</translation>
 <translation id="6929760895658557216">হ্যালো Google</translation>
 <translation id="6930036377490597025">এক্সটার্নাল নিরাপত্তা কী অথবা বিল্ট-ইন সেন্সর</translation>
 <translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{একটি এক্সটেনশন বাতিল করা হয়েছে}one{#টি এক্সটেনশন বাতিল করা হয়েছে}other{#টি এক্সটেনশন বাতিল করা হয়েছে}}</translation>
@@ -5011,6 +5057,7 @@
 <translation id="6972629891077993081">HID ডিভাইস</translation>
 <translation id="6972754398087986839">শুরু করুন</translation>
 <translation id="6972887130317925583">চুরি হয়ে যাওয়া পাসওয়ার্ড পরিবর্তন করা হয়েছে। <ph name="SETTINGS" /> থেকে যেকোনও সময় আপনার পাসওয়ার্ড চেক করুন।</translation>
+<translation id="697312151395002334">পপ-আপ পাঠানো ও রিডাইরেক্ট করার অনুমতি দেওয়া হয়েছে</translation>
 <translation id="6973611239564315524">Debian 10 (Buster) ভার্সনে আপগ্রেড করার সুবিধা পাওয়া যাচ্ছে</translation>
 <translation id="6974609594866392343">অফলাইন ডেমো মোড</translation>
 <translation id="6977381486153291903">ফার্মওয়ের পুনর্বিবেচনাগুলি</translation>
@@ -5033,6 +5080,7 @@
 <translation id="6995899638241819463">আপনার পাসওয়ার্ড কোনও ডেটা নিরাপত্তা লঙ্ঘনের কারণে সর্বজনীনভাবে প্রকাশ হলে তা আপনাকে জানানো হবে</translation>
 <translation id="6997642619627518301"><ph name="NAME_PH" /> - অ্যাক্টিভিটি লগ</translation>
 <translation id="6997707937646349884">আপনার ডিভাইসে:</translation>
+<translation id="6998093258894828179">কার্ড লুকান</translation>
 <translation id="6998793565256476099">ভিডিও কনফারেন্সিংয়ের জন্য ডিভাইস যোগ করুন</translation>
 <translation id="6999956497249459195">নতুন গ্রুপ</translation>
 <translation id="7000206553895739324"><ph name="PRINTER_NAME" /> কানেক্ট করা হয়েছে, কিন্তু কনফিগার করতে হবে</translation>
@@ -5049,6 +5097,7 @@
 <translation id="7005848115657603926">ভুল পৃষ্ঠা ব্যাপ্তি, <ph name="EXAMPLE_PAGE_RANGE" /> ব্যবহার করুন</translation>
 <translation id="7006634003215061422">নীচের মার্জিন</translation>
 <translation id="7007648447224463482">সবগুলি নতুন উইন্ডোতে খুলুন</translation>
+<translation id="7009709314043432820"><ph name="APP_NAME" /> আপনার ক্যামেরা ব্যবহার করছে</translation>
 <translation id="701080569351381435">উৎস দেখান</translation>
 <translation id="7014174261166285193">ইনস্টলেশান ব্যর্থ হয়েছে৷</translation>
 <translation id="7017004637493394352">আবার "Ok Google" বলুন</translation>
@@ -5068,6 +5117,7 @@
 <translation id="7038632520572155338">অ্যাক্সেস পাল্টান</translation>
 <translation id="7039326228527141150">USB ডিভাইসগুলি <ph name="VENDOR_NAME" /> থেকে অ্যাক্সেস করুন</translation>
 <translation id="7039912931802252762">Microsoft Smart Card Logon</translation>
+<translation id="7039951224110875196">বাচ্চার জন্য Google অ্যাকাউন্ট তৈরি করুন</translation>
 <translation id="7040230719604914234">অপারেটর</translation>
 <translation id="7043108582968290193">হয়ে গেছে! কোনও অসঙ্গত অ্যাপ্লিকেশন খুঁজে পাওয়া যায়নি।</translation>
 <translation id="7044124535091449260">সাইট অ্যাক্সেস সম্পর্কে আরও জানুন</translation>
@@ -5139,6 +5189,7 @@
 <translation id="7121362699166175603">অ্যাড্রেস বারের ইতিহাস এবং অটোকমপ্লিট তথ্য মুছে ফেলে। <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />-এ আপনার Google অ্যাকাউন্টের অন্যান্য ধরনের ব্রাউজিংয়ের ইতিহাস থাকতে পারে।</translation>
 <translation id="7121438501124788993">ডেভেলপার মোড</translation>
 <translation id="7121728544325372695">স্মার্ট ড্যাশ</translation>
+<translation id="7123030151043029868">একাধিক ফাইল অটোমেটিক ডাউনলোড করার অনুমতি দেওয়া হয়েছে</translation>
 <translation id="7123360114020465152">আর সমর্থিত নয়</translation>
 <translation id="7125148293026877011">Crostini মুছুন</translation>
 <translation id="7127980134843952133">ইতিহাস ডাউনলোড করুন</translation>
@@ -5153,6 +5204,7 @@
 <translation id="7136984461011502314"><ph name="PRODUCT_NAME" />-তে আপনাকে স্বাগতম</translation>
 <translation id="7136993520339022828">একটি সমস্যা হয়েছে। অনুগ্রহ করে অন্য একটি ছবি বেছে নিয়ে আবার চেষ্টা করুন।</translation>
 <translation id="713888829801648570">দুঃখিত, আপনি অফলাইনে থাকায় আপনার পাসওয়ার্ড যাচাই করা যায়নি৷</translation>
+<translation id="7139627972753429585"><ph name="APP_NAME" /> আপনার মাইক্রোফোন ব্যবহার করছে</translation>
 <translation id="7140928199327930795">অন্য কোনো উপলব্ধ ডিভাইস নেই৷</translation>
 <translation id="7141105143012495934">আপনার অ্যাকাউন্টের বিশদ বিবরণ পুনরুদ্ধার করতে না পারায় সাইন-ইন ব্যর্থ হয়েছে। অনুগ্রহ করে আপনার প্রশাসকের সাথে যোগাযোগ করুন অথবা আবার চেষ্টা করুন।</translation>
 <translation id="7143207342074048698">সংযুক্ত হচ্ছে</translation>
@@ -5292,6 +5344,7 @@
 <translation id="7324297612904500502">বিটা ফোরাম</translation>
 <translation id="7325209047678309347">প্রিন্টারে কাগজ আটকে গেছে</translation>
 <translation id="7325437708553334317">হাই কনট্রাস্ট এক্সটেনশন</translation>
+<translation id="7326004502692201767">বাচ্চার জন্য এই <ph name="DEVICE_TYPE" /> সেট আপ করুন</translation>
 <translation id="7328699668338161242">আপনার অ্যাসিস্ট্যান্ট ইতিমধ্যেই আপনার ভয়েস চিনতে পারে</translation>
 <translation id="7328867076235380839">এই কম্বিনেশন ব্যবহার করা যাবে না</translation>
 <translation id="7329154610228416156">এটি নিরাপদ নয় এমন একটি URL (<ph name="BLOCKED_URL" />) ব্যবহারের জন্য কনফিগার করা থাকায় সাইন-ইন করা যায়নি। অনুগ্রহ করে আপনার অ্যাডমিনিস্ট্রেটরের সাথে যোগাযোগ করুন।</translation>
@@ -5416,6 +5469,7 @@
 <translation id="7465635034594602553">কিছু সমস্যা হয়েছে। কয়েক মিনিট অপেক্ষা করে আবার <ph name="APP_NAME" /> চালু করুন।</translation>
 <translation id="7465778193084373987">Netscape সার্টিফিকেট রদকরণ ইউআরএল</translation>
 <translation id="7469894403370665791">স্বয়ংক্রিয়ভাবে এই নেটওয়ার্কে সংযোগ করুন</translation>
+<translation id="7470424110735398630">আপনার ক্লিপবোর্ড দেখার অনুমতি দেওয়া হয়েছে</translation>
 <translation id="747114903913869239">সমস্যা: এক্সটেনশন ডিকোড করা যায়নি</translation>
 <translation id="7473891865547856676">না থাক</translation>
 <translation id="747459581954555080">সকল পুনরুদ্ধার করুন</translation>
@@ -5525,6 +5579,7 @@
 <translation id="7607002721634913082">বিরত রয়েছে</translation>
 <translation id="7608810328871051088">Android সেটিংস</translation>
 <translation id="7609148976235050828">ইন্টারনেটে কানেক্ট করে আবার চেষ্টা করুন।</translation>
+<translation id="7612655942094160088">কানেক্টেড ফোন ফিচার চালু করার বোতাম।</translation>
 <translation id="7614260613810441905">কোনও সাইট আপনার ডিভাইসে থাকা ফাইল বা ফোল্ডার এডিট করতে চাইলে অনুমতি নিতে বলুন (সাজেস্ট করা হয়েছে)</translation>
 <translation id="761530003705945209">Google Drive-এ ব্যাক-আপ নিন। যেকোনও সময় সহজেই ডেটা রিস্টোর করুন অথবা অন্য ডিভাইস ব্যবহার করুন। আপনার ব্যাক-আপে অ্যাপ ডেটা থাকে। আপনার ব্যাক-আপ ডেটা Google-এ আপলোড করা হয় এবং আপনার Google অ্যাকাউন্টের পাসওয়ার্ড ব্যবহার করে সেগুলিকে এনক্রিপ্ট করা হয়।</translation>
 <translation id="7615365294369022248">অ্যাকাউন্ট যোগ করার সময় কোনও সমস্যা হয়েছে</translation>
@@ -5643,6 +5698,7 @@
 <translation id="7732111077498238432">নেটওয়ার্কগুলি নীতি নিয়ন্ত্রিত</translation>
 <translation id="7737115349420013392">"<ph name="DEVICE_NAME" />"-এর সাথে পেয়ার করা হয়েছে ...</translation>
 <translation id="7737238973539693982">Linux (বিটা) মুছে ফেলুন</translation>
+<translation id="7737948071472253612">আপনার ক্যামেরা ব্যবহার করার অনুমতি দেওয়া হয়নি</translation>
 <translation id="7740996059027112821">মানক</translation>
 <translation id="7742706086992565332">কিছু ওয়েবসাইট কতটা বড় অথবা ছোট করে দেখা যাবে তা আপনি সেট করতে পারবেন</translation>
 <translation id="774377079771918250">কোথায় সেভ করবেন বেছে নিন</translation>
@@ -5651,6 +5707,7 @@
 <translation id="7750228210027921155">ছবির-মধ্যে-ছবি</translation>
 <translation id="7751260505918304024">সকল দেখান</translation>
 <translation id="7753735457098489144">স্টোরেজের জন্য যথেষ্ট জায়গা নেই বলে ইনস্টল করা যায়নি। জায়গা খালি করতে, ডিভাইসের স্টোরেজ থেকে ফাইল মুছুন।</translation>
+<translation id="7754347746598978109">জাভাস্ক্রিপ্ট ব্যবহার করার অনুমতি দেওয়া হয়নি</translation>
 <translation id="7754704193130578113">প্রতিটি ফাইল ডাউনলোড করার আগে তা কোথায় সংরক্ষণ করতে হবে জিজ্ঞাসা করুন</translation>
 <translation id="7755287808199759310">আপনার পিতামাতা এটি আপনার জন্য অবরোধ মুক্ত করতে পারবেন</translation>
 <translation id="7757592200364144203">ডিভাইসের নাম পরিবর্তন করুন</translation>
@@ -5702,6 +5759,7 @@
 <translation id="7798844538707273832"><ph name="PERMISSION" /> অটোমেটিক ব্লক করা হয়েছে</translation>
 <translation id="7799299114731150374">ওয়ালপেপার সেট করা হয়েছে</translation>
 <translation id="7800518121066352902">ঘড়ির কাঁটার &amp;বিপরীত দিকে ঘোরান</translation>
+<translation id="7802539296536804623">এই পৃষ্ঠাতে কার্ড দেখতে চাই না</translation>
 <translation id="780301667611848630">না থাক</translation>
 <translation id="7804072833593604762">ট্যাব বন্ধ করা হয়েছে</translation>
 <translation id="7805768142964895445">স্থিতি</translation>
@@ -6129,6 +6187,7 @@
 <translation id="826905130698769948">ক্লায়েন্ট সার্টিফিকেটটি সঠিক নয়</translation>
 <translation id="8270242299912238708">পিডিএফ দস্তাবেজগুলি</translation>
 <translation id="827097179112817503">হোম বোতাম দেখান</translation>
+<translation id="8271379370373330993">অভিভাবক, পরের ধাপগুলি আপনাকে সম্পূর্ণ করতে হবে। অ্যাকাউন্ট সেট-আপ করা হয়ে গেলে আপনি সন্তানকে <ph name="DEVICE_TYPE" /> ডিভাইস ফেরত দিতে পারেন।</translation>
 <translation id="8272443605911821513">"আরও টুলগুলির মেনুতে" এক্সটেনশনগুলি ক্লিক করে আপনার এক্সটেনশনগুলি পরিচালনা করুন৷</translation>
 <translation id="8274332263553132018">ফাইল কাস্ট করুন</translation>
 <translation id="8274924778568117936">আপডেটটি সম্পূর্ণ না হওয়া পর্যন্ত <ph name="DEVICE_TYPE" />টি বন্ধ করবেন না। ইনস্টলেশন হয়ে গেলে <ph name="DEVICE_TYPE" />টি নিজে থেকেই রিস্টার্ট হবে।</translation>
@@ -6153,6 +6212,7 @@
 <translation id="8300011035382349091">এই ট্যাবের জন্য বুকমার্ক এডিট করুন</translation>
 <translation id="8300374739238450534">মধ্যরাতের নীল</translation>
 <translation id="8300849813060516376">OTASP ব্যর্থ</translation>
+<translation id="8304383784961451596">তোমাকে এই ডিভাইস ব্যবহার করার অনুমতি দেওয়া হয়নি। সাইন-ইনের জন্য অনুমতি পেতে অ্যাডমিনিস্ট্রেটরের সাথে যোগাযোগ করো অথবা Family Link-এর তত্ত্বাবধানে থাকা কোনও Google অ্যাকাউন্ট দিয়ে সাইন-ইন করো।</translation>
 <translation id="8308179586020895837"><ph name="HOST" /> আপনার ক্যামেরা অ্যাক্সেস  করতে চায় কিনা জিজ্ঞাসা করুন</translation>
 <translation id="830868413617744215">বিটা</translation>
 <translation id="8309458809024885768">সার্টিফিকেট ইতিমধ্যে বিদ্যমান</translation>
@@ -6166,6 +6226,7 @@
 <translation id="8322814362483282060">এই পৃষ্ঠাটিকে আপনার মাইক্রোফোন অ্যাক্সেস করা থেকে অবরুদ্ধ করা হয়েছে৷</translation>
 <translation id="8323167517179506834">URL লিখুন</translation>
 <translation id="8324784016256120271">বিভিন্ন ওয়েবসাইট জুড়ে আপনার ব্রাউজিং অ্যাক্টিভিটি যেমন বিশেষভাবে বেছে নেওয়া বিজ্ঞাপন দেখার জন্য সাইট কুকি ব্যবহার করতে পারবে</translation>
+<translation id="8325413836429495820">আপনার ক্লিপবোর্ড দেখার অনুমতি দেওয়া হয়নি</translation>
 <translation id="8326478304147373412">PKCS #7, সার্টিফিকেট শৃঙ্খল</translation>
 <translation id="8327039559959785305">Linux ফাইল মাউন্ট করার সময় সমস্যা। আবার চেষ্টা করুন।</translation>
 <translation id="8327676037044516220">অনুমতি ও কন্টেন্ট সেটিংস</translation>
@@ -6215,6 +6276,7 @@
 <translation id="8382913212082956454">ও ইমেল অ্যাড্রেস কপি করুন</translation>
 <translation id="8386091599636877289">নীতি খুঁজে পাওয়া যায়নি।</translation>
 <translation id="8386903983509584791">স্ক্যান করা সম্পন্ন হয়েছে</translation>
+<translation id="8387361103813440603">আপনার লোকেশন দেখার অনুমতি দেওয়া হয়নি</translation>
 <translation id="8389416080014625855">এই পৃষ্ঠার QR কোড তৈরি করুন</translation>
 <translation id="8389492867173948260">আপনার দেখা ওয়েবসাইটে আপনার সমস্ত ডেটা পড়ার এবং পরিবর্তন করার জন্য এই এক্সটেনশনটিকে অনুমতি দিন:</translation>
 <translation id="8390449457866780408">সার্ভার অনুপলব্ধ৷</translation>
@@ -6399,6 +6461,7 @@
 <translation id="8621866727807194849">আপনার কম্পিউটারে ক্ষতিকারক সফ্টওয়্যার পাওয়া গেছে। Chrome সেটিকে সরিয়ে দিচ্ছে, সেটিংস রিস্টোর করছে এবং বিভিন্ন এক্সটেনশন বন্ধ করে দিচ্ছে। এর ফলে আপনার ব্রাউজার আবার স্বাভাবিকভাবে কাজ করতে পারবে।</translation>
 <translation id="8621979332865976405">আপনার পুরো স্ক্রিন শেয়ার করুন</translation>
 <translation id="862542460444371744">&amp;এক্সটেনশনস</translation>
+<translation id="8625663000550647058">আপনার মাইক্রোফোন ব্যবহার করার অনুমতি দেওয়া হয়নি</translation>
 <translation id="862727964348362408">সাসপেন্ড</translation>
 <translation id="862750493060684461">CSS ক্যাশে</translation>
 <translation id="8627706565932943526">সিঙ্ক ত্রুটি</translation>
@@ -6479,6 +6542,7 @@
 <translation id="8714838604780058252">পটভূমির গ্রাফিক্স</translation>
 <translation id="8715480913140015283">ব্যাকগ্রাউন্ড ট্যাব আপনার ক্যামেরা ব্যবহার করছে</translation>
 <translation id="8716931980467311658">এই <ph name="DEVICE_TYPE" /> থেকে Linux ফাইল ফোল্ডারের মধ্যে থাকা Linux অ্যাপ এবং সমস্ত ডেটা মুছে ফেলবেন?</translation>
+<translation id="8717145295869185525">ভার্চুয়াল রিয়েলিটি ডিভাইস ও ডেটা ব্যবহার করার অনুমতি দেওয়া হয়নি</translation>
 <translation id="8717864919010420084">লিঙ্কটি কপি করুন</translation>
 <translation id="8719472795285728850">স্ট্রিমে এক্সটেনশনের অ্যাক্টিভিটির উপর লক্ষ্য রাখা হচ্ছে…</translation>
 <translation id="8719653885894320876"><ph name="PLUGIN_NAME" /> ডাউনলোড করা যায়নি</translation>
@@ -6900,6 +6964,7 @@
 <translation id="9179734824669616955">আপনার <ph name="DEVICE_TYPE" />-এ Linux (বিটা) সেট-আপ করুন</translation>
 <translation id="9180281769944411366">এতে কয়েক মিনিট সময় লাগতে পারে। Linux কন্টেনার শুরু করা হচ্ছে।</translation>
 <translation id="9180380851667544951">সাইটটি আপনার স্ক্রিন শেয়ার করতে পারে</translation>
+<translation id="9186963452600581158">আপনার সন্তানের Google অ্যাকাউন্ট ব্যবহার করে সাইন-ইন করুন</translation>
 <translation id="9188732951356337132">ব্যবহার এবং ডায়াগনস্টিক ডেটা পাঠান। এখন এই ডিভাইসটি নিজে থেকেই Google-এ ডায়াগনিস্টিক, ডিভাইস এবং অ্যাপ ব্যবহারের ডেটা পাঠাচ্ছে। এটি আপনার সন্তানকে শনাক্ত করতে ব্যবহার করা হবে না এবং সিস্টেম ও অ্যাপের স্থিতিশীলতা এবং অন্যান্য উন্নতিতে সাহায্য করবে। ব্যবহারকারীদের কিছু সম্মিলিত ডেটা Google অ্যাপ এবং Android ডেভেলপারদের মতো পার্টনারদের কাজে লাগবে। অতিরিক্ত ওয়েব ও অ্যাপ অ্যাক্টিভিটি সেটিংটি আপনার সন্তানের ডিভাইসের জন্য চালু করা থাকলে, এই ডেটা তাদের Google অ্যাকাউন্টে সেভ করা হতে পারে। <ph name="BEGIN_LINK2" />আরও জানুন<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPসেকে + পূর্বে-শেয়ার করা কী</translation>
 <translation id="9198090666959937775">নিরাপত্তা কী হিসেবে আপনার Android ফোন ব্যবহার করুন</translation>
diff --git a/chrome/app/resources/generated_resources_bs.xtb b/chrome/app/resources/generated_resources_bs.xtb
index e68a606..b8aa018 100644
--- a/chrome/app/resources/generated_resources_bs.xtb
+++ b/chrome/app/resources/generated_resources_bs.xtb
@@ -17,6 +17,7 @@
 <translation id="1012794136286421601">Vaši fajlovi na Dokumentima, Tabelama, Slides prezentacijama i Crtežima se trenutno sinhroniziraju. Otvorite aplikaciju Google Disk da im pristupite bez obzira jeste li na mreži ili ne.</translation>
 <translation id="1012876632442809908">USB-C uređaj (prednji priključak)</translation>
 <translation id="1013707859758800957">Dozvoljeno je da se na ovoj stranici pokrene dodatak koji nije u izoliranom okruženju.</translation>
+<translation id="1015041505466489552">TrackPoint</translation>
 <translation id="1015318665228971643">Uređivanje naziva foldera</translation>
 <translation id="1015578595646638936">{NUM_DAYS,plural, =1{Posljednji dan da ažurirate <ph name="DEVICE_TYPE" />}one{Ažurirajte <ph name="DEVICE_TYPE" /> u roku od {NUM_DAYS} dana}few{Ažurirajte <ph name="DEVICE_TYPE" /> u roku od {NUM_DAYS} dana}other{Ažurirajte <ph name="DEVICE_TYPE" /> u roku od {NUM_DAYS} dana}}</translation>
 <translation id="1016566241875885511">Dodatne informacije (nije obavezno)</translation>
@@ -1215,7 +1216,7 @@
 <translation id="2387052489799050037">Odlazak na početnu stranicu</translation>
 <translation id="2387458720915042159">Vrsta veze s proksi serverom</translation>
 <translation id="2390347491606624519">Nije se moguće povezati s proxyijem. Prijavite se ponovo</translation>
-<translation id="2390782873446084770">Wi-Fi sinkronizacija</translation>
+<translation id="2390782873446084770">WiFi sinhronizacija</translation>
 <translation id="2391082728065870591">Pošalji izvještaj o povratnim informacijama</translation>
 <translation id="2391419135980381625">Standardni font</translation>
 <translation id="2392163307141705938">Dostignuto je vremensko ograničenje koje je tvoj roditelj postavio za <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
@@ -3233,7 +3234,7 @@
 <translation id="4761104368405085019">Korištenje vašeg mikrofona</translation>
 <translation id="4762718786438001384">Količina prostora na disku uređaja je kritično mala</translation>
 <translation id="4763408175235639573">Sljedeći kolačići su postavljeni kada ste pregledali ovu stranicu</translation>
-<translation id="4764368918650455114">Provjerite jesu li oba uređaja otključana, blizu jedan drugome te imaju li uključen Bluetooth. Ako dijelite s Chromebookom, provjerite je li Dijeljenje s Android uređajima uključeno (otvorite područje statusa tako što ćete odabrati vrijeme, a zatim odaberite Dijeljenje s Android uređajima). <ph name="LINK_BEGIN" />Saznajte više<ph name="LINK_END" /></translation>
+<translation id="4764368918650455114">Provjerite jesu li oba uređaja otključana, jedan blizu drugoga i je li na njima uključen Bluetooth. Ako dijelite s Chromebookom, provjerite je li na njemu uključeno Dijeljenje u blizini (odaberite vrijeme da otvorite područje statusa, a zatim odaberite Dijeljenje u blizini). <ph name="LINK_BEGIN" />Saznajte više<ph name="LINK_END" /></translation>
 <translation id="4765582662863429759">Omogućava aplikaciji Android Messages da šalje SMS-ove s vašeg telefona na vaš Chromebook</translation>
 <translation id="476598255842811483">Niko osim ako na uređaju ne otvorite Dijeljenje u blizini</translation>
 <translation id="4768332406694066911">Imate potvrde ovih organizacija koje vas identificiraju</translation>
@@ -3396,7 +3397,7 @@
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> – <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Ovu aplikaciju je instalirao vaš administrator.</translation>
 <translation id="4964455510556214366">Uređivanje</translation>
-<translation id="496446150016900060">Sinkronizirajte Wi-Fi mreže s telefonom</translation>
+<translation id="496446150016900060">Sinhroniziranje WiFi mreža s telefonom</translation>
 <translation id="4965808351167763748">Jeste li sigurni da želite postaviti ovaj uređaj da pokreće Hangouts Meet?</translation>
 <translation id="496888482094675990">Aplikacija Files pruža brzi pristup fajlovima sačuvanim na Google Disku, vanjskoj pohrani ili na Chrome OS uređaju.</translation>
 <translation id="4971412780836297815">Otvori kada se završi preuzimanje</translation>
@@ -3703,7 +3704,7 @@
 <translation id="5341980496415249280">Pričekajte, pakiranje je u toku...</translation>
 <translation id="5342091991439452114">Broj znamenki u PIN-u mora biti najmanje <ph name="MINIMUM" /></translation>
 <translation id="5344036115151554031">Vraćanje Linuxa</translation>
-<translation id="5345916423802287046">Pokrenite aplikaciju kad se prijavite</translation>
+<translation id="5345916423802287046">Pokreni aplikaciju prilikom prijave</translation>
 <translation id="5350293332385664455">Isključite Google Asistenta</translation>
 <translation id="535123479159372765">Tekst je kopiran s drugog uređaja</translation>
 <translation id="5352033265844765294">Vremensko označavanje</translation>
@@ -4013,7 +4014,7 @@
 <translation id="5704875434923668958">Sinhroniziranje s korisnikom</translation>
 <translation id="5705005699929844214">Uvijek prikaži opcije pristupačnosti</translation>
 <translation id="5705882733397021510">Natrag</translation>
-<translation id="5707117624115653804">Prilagodite veličinu i stil titlova za aplikacije i web-lokacije koje podržavaju tu postavku</translation>
+<translation id="5707117624115653804">Prilagodite veličinu i stil titlova za aplikacije i web lokacije koje podržavaju ovu postavku</translation>
 <translation id="5707185214361380026">Nije uspjelo učitavanje ekstenzije iz:</translation>
 <translation id="5708171344853220004">Glavni Microsoft naziv</translation>
 <translation id="5709557627224531708">Postavite Chrome kao zadani preglednik</translation>
@@ -4177,7 +4178,7 @@
 <translation id="5904614460720589786">Postavljanje aplikacije <ph name="APP_NAME" /> nije uspjelo zbog problema s konfiguracijom. Kontaktirajte administratora. Kȏd greške: <ph name="ERROR_CODE" />.</translation>
 <translation id="5906655207909574370">Još malo pa je ažurirano! Ponovo pokrenite uređaj da završite ažuriranje.</translation>
 <translation id="5906732635754427568">Podaci koji su povezani s ovom aplikacijom bit će uklonjeni s ovog uređaja.</translation>
-<translation id="5908474332780919512">Pokrenite aplikaciju kad se prijavite</translation>
+<translation id="5908474332780919512">Pokreni aplikaciju prilikom prijave</translation>
 <translation id="5908695239556627796">Brzina klizanja miša</translation>
 <translation id="5908769186679515905">Blokiraj pokretanje Flasha na web lokacijama</translation>
 <translation id="5910363049092958439">Sa&amp;čuvaj sliku kao…</translation>
@@ -4717,7 +4718,7 @@
 <translation id="6532527800157340614">Prijava nije uspjela jer preuzimanje tokena za pristup nije uspjelo. Provjerite mrežnu vezu i pokušajte ponovo.</translation>
 <translation id="6532663472409656417">Uređaj prijavljenog preduzeća</translation>
 <translation id="6535331821390304775">Uvijek dozvolite web lokaciji <ph name="ORIGIN" /> da otvara linkove ove vrste u povezanoj aplikaciji</translation>
-<translation id="6537613839935722475">Naziv može sadržavati slova, brojke i crtice (–)</translation>
+<translation id="6537613839935722475">Naziv može sadržavati slova, brojeve i crtice (-)</translation>
 <translation id="6538635548667167211">Trenutna postavka prijenosa podataka je Prijenos podataka</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />Napomena:<ph name="END_BOLD" /> Omogućite samo ako znate šta radite ili ako je to od vas zatraženo jer prikupljanje podataka može smanjiti performanse.</translation>
 <translation id="6541638731489116978">Ovoj web lokaciji je blokiran pristup vašim senzorima pokreta.</translation>
@@ -4806,7 +4807,7 @@
 <translation id="6650234781371031356">Vaša lozinka za <ph name="WEBSITE" /> je pohranjena na ovom uređaju i na vašem Google računu. Koju verziju lozinke želite izbrisati?</translation>
 <translation id="665061930738760572">Otvori u &amp;novom prozoru</translation>
 <translation id="6651237644330755633">Vjeruj ovoj potvrdi za identifikaciju 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="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="6654509035557065241">Preferirana mreža</translation>
 <translation id="6655190889273724601">Način rada za programere</translation>
@@ -5410,7 +5411,7 @@
 <translation id="7375235221357833624">{0,plural, =1{Ažurirajte uređaj u roku od jednog sata}one{Ažurirajte uređaj u roku od # sata}few{Ažurirajte uređaj u roku od # sata}other{Ažurirajte uređaj u roku od # sati}}</translation>
 <translation id="7376553024552204454">Istakni kursor miša u pokretu</translation>
 <translation id="7377451353532943397">Nastavi blokirati pristup senzoru</translation>
-<translation id="7378611153938412599">Slabe zaporke lako je pogoditi. Neka vaše zaporke obavezno budu snažne. <ph name="BEGIN_LINK" />Pročitajte još sigurnosnih savjeta<ph name="END_LINK" />.</translation>
+<translation id="7378611153938412599">Slabe lozinke je lako pogoditi. Vodite računa da kreirate jake lozinke. <ph name="BEGIN_LINK" />Pogledajte još sigurnosnih savjeta.<ph name="END_LINK" /></translation>
 <translation id="73786666777299047">Otvorite Chrome Web trgovinu</translation>
 <translation id="7378812711085314936">Obezbijedite vezu za prijenos podataka</translation>
 <translation id="7380622428988553498">Naziv uređaja sadrži nevažeće znakove</translation>
@@ -5935,7 +5936,7 @@
 <translation id="7959074893852789871">Fajl je sadržavao nekoliko potvrda, a neke nisu bile uvezene:</translation>
 <translation id="7961015016161918242">Nikada</translation>
 <translation id="7963001036288347286">Ubrzanje dodirne podloge</translation>
-<translation id="7963608432878156675">Ovaj je naziv vidljiv drugim uređajima za povezivanje s Bluetoothom i mrežnom vezom</translation>
+<translation id="7963608432878156675">Ovaj naziv je vidljiv drugim uređajima za Bluetooth i mrežne veze</translation>
 <translation id="7963826112438303517">Asistent koristi te snimke i vaše izgovorene zahtjeve za kreiranje i ažuriranje modela vašeg glasa koji se pohranjuje samo na uređajima na kojim ste uključili Voice Match. Aktivnost glasa možete pregledati ili ponovo uvježbati u Postavkama Asistenta.</translation>
 <translation id="7966241909927244760">K&amp;opiraj adresu slike</translation>
 <translation id="7966571622054096916">{COUNT,plural, =1{1 stavka na listi s oznakama}one{{COUNT} stavka na listi s oznakama}few{{COUNT} stavke na listi s oznakama}other{{COUNT} stavki na listi s oznakama}}</translation>
@@ -6400,7 +6401,7 @@
 <translation id="850875081535031620">Nije pronađen nijedan štetan softver</translation>
 <translation id="8509177919508253835">Poništite sigurnosne ključeve i kreirajte PIN-ove</translation>
 <translation id="8509646642152301857">Preuzimanje rječnika za provjeru pravopisa nije uspjelo.</translation>
-<translation id="8512396579636492893">{COUNT,plural, =0{Nije pronađena nijedna slaba zaporka}=1{Pronađena je {COUNT} slaba zaporka}one{Pronađena je {COUNT} slaba zaporka}few{Pronađene su {COUNT} slabe zaporke}other{Pronađeno je {COUNT} slabih zaporki}}</translation>
+<translation id="8512396579636492893">{COUNT,plural, =0{Nije pronađena nijedna slaba lozinka}=1{Pronađena je {COUNT} slaba lozinka}one{Pronađena je {COUNT} slaba lozinka}few{Pronađene su {COUNT} slabe lozinke}other{Pronađeno je {COUNT} slabih lozinki}}</translation>
 <translation id="8512476990829870887">Završi proces</translation>
 <translation id="851263357009351303">Uvijek dozvoli da <ph name="HOST" /> prikazuje slike</translation>
 <translation id="8513108775083588393">Aut. rotiranje</translation>
diff --git a/chrome/app/resources/generated_resources_ca.xtb b/chrome/app/resources/generated_resources_ca.xtb
index b45dacbb..d63c77b 100644
--- a/chrome/app/resources/generated_resources_ca.xtb
+++ b/chrome/app/resources/generated_resources_ca.xtb
@@ -957,7 +957,7 @@
 <translation id="2090165459409185032">Per recuperar la informació del compte, accediu a: google.com/accounts/recovery</translation>
 <translation id="2090876986345970080">Configuració de seguretat del sistema</translation>
 <translation id="2091887806945687916">So</translation>
-<translation id="209539936453343974">Per configurar els controls parentals, hi ha d'haver un nen amb un Compte de Google gestionat pel pare o per la mare. Els <ph name="DEVICE_TYPE_PLURAL" /> permeten als pares configurar límits de connexió, aprovar o bloquejar llocs web i fer més coses amb l'aplicació Family Link. Si el nen ha de fer treball escolar en llocs web com Google Classroom, es pot afegir un compte de centre educatiu més endavant.</translation>
+<translation id="209539936453343974">Per configurar els controls parentals, el nen ha de tenir un Compte de Google gestionat pel pare o per la mare. Els <ph name="DEVICE_TYPE_PLURAL" /> permeten als pares configurar límits de connexió, aprovar o bloquejar llocs web i fer més coses amb l'aplicació Family Link. Si el nen ha de fer treball escolar en llocs web com Google Classroom, es pot afegir un compte de centre educatiu més endavant.</translation>
 <translation id="2096715839409389970">Esborra les galetes de tercers</translation>
 <translation id="2097372108957554726">Inicieu la sessió a Chrome per registrar dispositius nous</translation>
 <translation id="2098805196501063469">Comprova les altres contrasenyes</translation>
@@ -5599,7 +5599,7 @@
 <translation id="7607002721634913082">En pausa</translation>
 <translation id="7608810328871051088">Preferències d'Android</translation>
 <translation id="7609148976235050828">Connecta't a Internet i torna-ho a provar.</translation>
-<translation id="7612655942094160088">Activa les funcions del telèfon connectat.</translation>
+<translation id="7612655942094160088">Activa la funció de telèfon connectat.</translation>
 <translation id="7614260613810441905">Pregunta'm quan un lloc web vulgui editar els fitxers o les carpetes del dispositiu (opció recomanada)</translation>
 <translation id="761530003705945209">Crea còpies de seguretat a Google Drive. Canvia de dispositiu o restaura'n les dades fàcilment en qualsevol moment. La còpia de seguretat inclou dades d'aplicacions. Les còpies de seguretat es pengen a Google i s'encripten amb la contrasenya del teu Compte de Google.</translation>
 <translation id="7615365294369022248">S'ha produït un error en afegir un compte</translation>
diff --git a/chrome/app/resources/generated_resources_cs.xtb b/chrome/app/resources/generated_resources_cs.xtb
index 5182d98..f0139dc9 100644
--- a/chrome/app/resources/generated_resources_cs.xtb
+++ b/chrome/app/resources/generated_resources_cs.xtb
@@ -928,6 +928,7 @@
 <translation id="204914487372604757">Vytvořit zástupce</translation>
 <translation id="2050339315714019657">Na výšku</translation>
 <translation id="2053312383184521053">Údaje o stavu nečinnosti</translation>
+<translation id="2054665754582400095">Vaše přítomnost</translation>
 <translation id="2055585478631012616">Z těchto webů budete odhlášeni (i na otevřených kartách)</translation>
 <translation id="205560151218727633">Logo Asistenta Google</translation>
 <translation id="2058456167109518507">Bylo zjištěno zařízení</translation>
@@ -1214,6 +1215,7 @@
 <translation id="2387052489799050037">Přechod na plochu</translation>
 <translation id="2387458720915042159">Typ připojení k proxy serveru</translation>
 <translation id="2390347491606624519">Připojení k serveru proxy se nezdařilo, přihlaste se znovu</translation>
+<translation id="2390782873446084770">Synchronizace Wi-Fi</translation>
 <translation id="2391082728065870591">Odeslat zpětnou vazbu</translation>
 <translation id="2391419135980381625">Standardní písmo</translation>
 <translation id="2392163307141705938">Byl vyčerpán časový limit, který pro <ph name="IDS_SHORT_PRODUCT_NAME" /> nastavili rodiče.</translation>
@@ -1869,6 +1871,7 @@
 <translation id="3157931365184549694">Obnovit</translation>
 <translation id="3158033540161634471">Nastavení otisku prstu</translation>
 <translation id="3159493096109238499">Bledě béžová</translation>
+<translation id="3159978855457658359">Úprava názvu zařízení</translation>
 <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (hardwarový)</translation>
 <translation id="3161522574479303604">Všechny jazyky</translation>
 <translation id="3162853326462195145">Školní účet</translation>
@@ -3228,6 +3231,7 @@
 <translation id="4761104368405085019">Používat mikrofon</translation>
 <translation id="4762718786438001384">Na disku zařízení je kriticky málo místa</translation>
 <translation id="4763408175235639573">Při zobrazení této stránky byly nastaveny následující soubory cookie</translation>
+<translation id="4764368918650455114">Obě zařízení musí být odemknutá, blízko u sebe a musí v nich být zapnuto Bluetooth. Pokud sdílíte soubory s Chromebookem, musí v něm být zapnuté sdílení nablízko (výběrem hodin otevřete stavovou oblast a potom vyberte Sdílení nablízko). <ph name="LINK_BEGIN" />Další informace<ph name="LINK_END" /></translation>
 <translation id="4765582662863429759">Povoluje Zprávám pro Android předávat zprávy SMS z telefonu do Chromebooku</translation>
 <translation id="476598255842811483">Nikdo, pokud v zařízení neotevřete sdílení nablízko</translation>
 <translation id="4768332406694066911">Od následujících organizací máte certifikáty, které vás identifikují</translation>
@@ -3390,6 +3394,7 @@
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> – <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Tuto aplikaci nainstaloval administrátor.</translation>
 <translation id="4964455510556214366">Uspořádání</translation>
+<translation id="496446150016900060">Synchronizovat sítě Wi-Fi s vaším telefonem</translation>
 <translation id="4965808351167763748">Opravdu toto zařízení chcete nastavit pro službu Hangouts Meet?</translation>
 <translation id="496888482094675990">Aplikace Soubory umožňuje rychlý přístup k souborům, které jste uložili na Disk Google, externí úložiště nebo zařízení se systémem Chrome OS.</translation>
 <translation id="4971412780836297815">Po dokončení otevřít</translation>
@@ -3696,6 +3701,7 @@
 <translation id="5341980496415249280">Čekejte prosím, probíhá balení...</translation>
 <translation id="5342091991439452114">Minimální počet číslic v kódu PIN: <ph name="MINIMUM" /></translation>
 <translation id="5344036115151554031">Obnovení Linuxu</translation>
+<translation id="5345916423802287046">Spustit aplikaci při přihlášení</translation>
 <translation id="5350293332385664455">Vypnout Asistenta Google</translation>
 <translation id="535123479159372765">Text zkopírovaný z jiného zařízení</translation>
 <translation id="5352033265844765294">Časové razítko</translation>
@@ -4005,6 +4011,7 @@
 <translation id="5704875434923668958">Synchronizace na účet</translation>
 <translation id="5705005699929844214">Vždy zobrazovat možnosti usnadnění přístupu</translation>
 <translation id="5705882733397021510">Zpět</translation>
+<translation id="5707117624115653804">Přizpůsobení velikosti a stylu titulků aplikacím a webům, které toto nastavení podporují</translation>
 <translation id="5707185214361380026">Načtení rozšíření z následujícího umístění se nezdařilo:</translation>
 <translation id="5708171344853220004">Hlavní název Microsoft</translation>
 <translation id="5709557627224531708">Nastavte si Chrome jako výchozí prohlížeč</translation>
@@ -4168,6 +4175,7 @@
 <translation id="5904614460720589786">Nastavení aplikace <ph name="APP_NAME" /> se kvůli problému s konfigurací nezdařilo. Obraťte se na administrátora. Kód chyby: <ph name="ERROR_CODE" />.</translation>
 <translation id="5906655207909574370">Aktualizace je téměř hotova! Dokončíte ji restartováním zařízení.</translation>
 <translation id="5906732635754427568">Data přidružená k této aplikaci z tohoto zařízení budou odstraněna.</translation>
+<translation id="5908474332780919512">Spustit aplikaci při přihlášení</translation>
 <translation id="5908695239556627796">Rychlost posouvání myší</translation>
 <translation id="5908769186679515905">Blokovat spouštění obsahu Flash na webech</translation>
 <translation id="5910363049092958439">Uložit o&amp;brázek jako...</translation>
@@ -4707,6 +4715,7 @@
 <translation id="6532527800157340614">Přihlášení se nezdařilo, protože nebylo možné načíst přístupový token. Zkontrolujte připojení k síti a zkuste to znovu.</translation>
 <translation id="6532663472409656417">Registrováno v podniku</translation>
 <translation id="6535331821390304775">Vždy webu <ph name="ORIGIN" /> povolit otvírání odkazů tohoto typu v přidružené aplikaci</translation>
+<translation id="6537613839935722475">Název smí obsahovat písmena, čísla a spojovníky (-)</translation>
 <translation id="6538635548667167211">Využívání dat je aktuálně nastaveno na možnost Data</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />Poznámka:<ph name="END_BOLD" /> Tuto možnost aktivujte pouze v případě, pokud máte jistotu, že to chcete udělat, nebo pokud jste k tomu byli vyzváni. Shromažďování dat může zhoršit výkon.</translation>
 <translation id="6541638731489116978">Tomuto webu byl zablokován přístup k senzorům pohybu.</translation>
@@ -4795,6 +4804,7 @@
 <translation id="6650234781371031356">Vaše heslo pro web <ph name="WEBSITE" /> je uloženo v zařízení i v účtu Google. Odkud ho chcete smazat?</translation>
 <translation id="665061930738760572">Otevřít v &amp;novém okně</translation>
 <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="6654509035557065241">Preferovat síť</translation>
 <translation id="6655190889273724601">Režim pro vývojáře</translation>
@@ -5398,6 +5408,7 @@
 <translation id="7375235221357833624">{0,plural, =1{Do hodiny zařízení aktualizujte}few{Do # hodin zařízení aktualizujte}many{Do # hodiny zařízení aktualizujte}other{Do # hodin zařízení aktualizujte}}</translation>
 <translation id="7376553024552204454">Zvýraznit ukazatel myši, když se pohybuje.</translation>
 <translation id="7377451353532943397">I nadále blokovat přístup k senzorům</translation>
+<translation id="7378611153938412599">Slabá hesla lze snadno uhodnout. Vždy se snažte vytvářet silná hesla. <ph name="BEGIN_LINK" />Další tipy k zabezpečení<ph name="END_LINK" /></translation>
 <translation id="73786666777299047">Otevřít Internetový obchod Chrome</translation>
 <translation id="7378812711085314936">Získání datového připojení</translation>
 <translation id="7380622428988553498">Název zařízení obsahuje neplatné znaky</translation>
@@ -5922,6 +5933,7 @@
 <translation id="7959074893852789871">Soubor obsahoval více certifikátů, z nichž některé nebyly importovány:</translation>
 <translation id="7961015016161918242">Nikdy</translation>
 <translation id="7963001036288347286">Zrychlení touchpadu</translation>
+<translation id="7963608432878156675">Název je viditelný pro ostatní zařízení při připojení Bluetooth a připojení k síti</translation>
 <translation id="7963826112438303517">Asistent pomocí těchto záznamů a vašich hlasových požadavků vytváří a aktualizuje hlasový model, který se ukládá jen v zařízeních, v nichž máte zapnutou funkci Voice Match. Hlasovou aktivitu můžete zobrazit nebo obnovit v nastavení Asistenta.</translation>
 <translation id="7966241909927244760">K&amp;opírovat adresu obrázku</translation>
 <translation id="7966571622054096916">{COUNT,plural, =1{1 položka v seznamu záložek}few{{COUNT} položky v seznamu záložek}many{{COUNT} položky v seznamu záložek}other{{COUNT} položek v seznamu záložek}}</translation>
@@ -6385,6 +6397,7 @@
 <translation id="850875081535031620">Nebyl nalezen žádný škodlivý software</translation>
 <translation id="8509177919508253835">Resetovat bezpečnostní klíče a vytvořit kódy PIN</translation>
 <translation id="8509646642152301857">Stažení slovníku pro kontrolu pravopisu se nezdařilo.</translation>
+<translation id="8512396579636492893">{COUNT,plural, =0{Nebyla nalezena žádná slabá hesla}=1{Bylo nalezeno {COUNT} slabé heslo}few{Byla nalezena {COUNT} slabá hesla}many{Bylo nalezeno {COUNT} slabého hesla}other{Bylo nalezeno {COUNT} slabých hesel}}</translation>
 <translation id="8512476990829870887">Ukončit proces</translation>
 <translation id="851263357009351303">Vždy povolovat zobrazování obrázků z webu <ph name="HOST" /></translation>
 <translation id="8513108775083588393">Autom. otáčení</translation>
diff --git a/chrome/app/resources/generated_resources_da.xtb b/chrome/app/resources/generated_resources_da.xtb
index 6436df5..f0c2059 100644
--- a/chrome/app/resources/generated_resources_da.xtb
+++ b/chrome/app/resources/generated_resources_da.xtb
@@ -928,6 +928,7 @@
 <translation id="204914487372604757">Opret genvej</translation>
 <translation id="2050339315714019657">Stående</translation>
 <translation id="2053312383184521053">Data for inaktiv tilstand</translation>
+<translation id="2054665754582400095">Din tilstedeværelse</translation>
 <translation id="2055585478631012616">Du logges ud af disse websites, også i åbne faner</translation>
 <translation id="205560151218727633">Google Assistent-logo</translation>
 <translation id="2058456167109518507">Der blev registreret en enhed</translation>
@@ -1214,6 +1215,7 @@
 <translation id="2387052489799050037">Gå til startskærmen</translation>
 <translation id="2387458720915042159">Proxy-forbindelsestype</translation>
 <translation id="2390347491606624519">Der kan ikke oprettes forbindelse til proxyen. Log ind igen.</translation>
+<translation id="2390782873446084770">Wi-Fi-synkronisering</translation>
 <translation id="2391082728065870591">Send feedbackrapport</translation>
 <translation id="2391419135980381625">Standardskriftstørrelse</translation>
 <translation id="2392163307141705938">Du har nået den grænse, din forælder har angivet for <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
@@ -1870,6 +1872,7 @@
 <translation id="3157931365184549694">Gendan</translation>
 <translation id="3158033540161634471">Konfigurer dit fingeraftryk</translation>
 <translation id="3159493096109238499">Beige</translation>
+<translation id="3159978855457658359">Rediger enhedsnavn</translation>
 <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (hardwarebaserede)</translation>
 <translation id="3161522574479303604">Alle sprog</translation>
 <translation id="3162853326462195145">Skolekonto</translation>
@@ -3230,6 +3233,7 @@
 <translation id="4761104368405085019">Bruge din mikrofon</translation>
 <translation id="4762718786438001384">Der er næsten ikke mere diskplads på din enhed</translation>
 <translation id="4763408175235639573">Følgende cookies blev gemt, da du fik vist denne side</translation>
+<translation id="4764368918650455114">Sørg for, at begge enheder er låst op, er i nærheden af hinanden, og at både Bluetooth og placering er aktiveret. Hvis du deler med en Chromebook, skal du sørge for, at "Deling tæt på" er aktiveret (åbn statusområdet ved at vælge klokkeslættet og "Deling tæt på"). <ph name="LINK_BEGIN" />Få flere oplysninger<ph name="LINK_END" /></translation>
 <translation id="4765582662863429759">Tillader, at Android Beskeder videresender sms-beskeder fra din telefon til din Chromebook</translation>
 <translation id="476598255842811483">Ingen, medmindre du åbner "Deling tæt på" på din enhed</translation>
 <translation id="4768332406694066911">Du har certifikater fra disse organisationer, der identificerer dig</translation>
@@ -3392,6 +3396,7 @@
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> – <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Denne app blev installeret af din administrator.</translation>
 <translation id="4964455510556214366">Opstilling</translation>
+<translation id="496446150016900060">Synkroniser Wi-Fi-netværk med din telefon</translation>
 <translation id="4965808351167763748">Er du sikker på, at du vil konfigurere denne enhed til at køre Hangouts Meet?</translation>
 <translation id="496888482094675990">Appen Filer giver hurtig adgang til filer, som du har gemt i Google Drev, på et eksternt lager eller på din Chrome OS-enhed.</translation>
 <translation id="4971412780836297815">Åbn, når den er fuldført</translation>
@@ -3698,6 +3703,7 @@
 <translation id="5341980496415249280">Vent et øjeblik, mens der pakkes...</translation>
 <translation id="5342091991439452114">Pinkoden skal være på mindst <ph name="MINIMUM" /> cifre</translation>
 <translation id="5344036115151554031">Gendanner Linux</translation>
+<translation id="5345916423802287046">Start app, når du logger ind</translation>
 <translation id="5350293332385664455">Slå Google Assistent fra</translation>
 <translation id="535123479159372765">Tekst kopieret fra en anden enhed</translation>
 <translation id="5352033265844765294">Tidsstempling</translation>
@@ -4007,6 +4013,7 @@
 <translation id="5704875434923668958">Der synkroniseres med</translation>
 <translation id="5705005699929844214">Vis altid hjælpefunktioner</translation>
 <translation id="5705882733397021510">Gå tilbage</translation>
+<translation id="5707117624115653804">Tilpas undertekststørrelse og -type for apps og websites, der understøtter denne indstilling</translation>
 <translation id="5707185214361380026">Det var ikke muligt at indlæse udvidelsen fra:</translation>
 <translation id="5708171344853220004">Microsoft-hovednavn</translation>
 <translation id="5709557627224531708">Angiv Chrome som din standardbrowser</translation>
@@ -4170,6 +4177,7 @@
 <translation id="5904614460720589786"><ph name="APP_NAME" /> kunne ikke konfigureres, da der opstod et konfigurationsproblem. Kontakt din administrator. Fejlkode: <ph name="ERROR_CODE" />.</translation>
 <translation id="5906655207909574370">Næsten opdateret. Genstart din enhed for at afslutte opdateringen.</translation>
 <translation id="5906732635754427568">Data, der er knyttet til denne app, bliver fjernet fra enheden.</translation>
+<translation id="5908474332780919512">Start app, når du logger ind</translation>
 <translation id="5908695239556627796">Hastighed for rulning på mus</translation>
 <translation id="5908769186679515905">Bloker websites fra at køre Flash</translation>
 <translation id="5910363049092958439">Ge&amp;m billede som...</translation>
@@ -4710,6 +4718,7 @@
 <translation id="6532527800157340614">Login mislykkedes, fordi dit adgangstoken ikke kunne hentes. Tjek din netværksforbindelse, og prøv igen.</translation>
 <translation id="6532663472409656417">Tilmeldt Enterprise</translation>
 <translation id="6535331821390304775">Tillad altid, at <ph name="ORIGIN" /> åbner links af denne type i den tilknyttede app</translation>
+<translation id="6537613839935722475">Navnet må indeholde bogstaver, tal og bindestreger (-)</translation>
 <translation id="6538635548667167211">Den aktuelle indstilling for dataforbrug er Data</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />Bemærk:<ph name="END_BOLD" /> Aktivér kun, hvis du ved hvad du gør, eller hvis du er blevet bedt om at gøre det, eftersom dataregistrering kan reducere ydeevnen.</translation>
 <translation id="6541638731489116978">Der er blokeret for adgang til dine bevægelsessensorer på dette website.</translation>
@@ -4798,6 +4807,7 @@
 <translation id="6650234781371031356">Din adgangskode til <ph name="WEBSITE" /> er gemt på denne enhed og på din Google-konto. Hvilken en skal slettes?</translation>
 <translation id="665061930738760572">Åbn i &amp;nyt vindue</translation>
 <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="6654509035557065241">Foretræk netværk</translation>
 <translation id="6655190889273724601">Udviklertilstand</translation>
@@ -5401,6 +5411,7 @@
 <translation id="7375235221357833624">{0,plural, =1{Genstart enheden inden for en time}one{Genstart enheden inden for # time}other{Genstart enheden inden for # timer}}</translation>
 <translation id="7376553024552204454">Fremhæv musemarkøren, når den bevæger sig</translation>
 <translation id="7377451353532943397">Fortsæt blokering af adgang til sensorer</translation>
+<translation id="7378611153938412599">Svage adgangskoder er nemme at gætte. Sørg for at oprette en stærk adgangskode. <ph name="BEGIN_LINK" />Se flere sikkerhedstips<ph name="END_LINK" />.</translation>
 <translation id="73786666777299047">Åbn Chrome Webshop</translation>
 <translation id="7378812711085314936">Få dataforbindelse</translation>
 <translation id="7380622428988553498">Enhedsnavnet indeholder ugyldige tegn</translation>
@@ -5924,6 +5935,7 @@
 <translation id="7959074893852789871">Filen indeholdt flere certifikater, hvoraf nogle af dem ikke blev importeret:</translation>
 <translation id="7961015016161918242">Aldrig</translation>
 <translation id="7963001036288347286">Acceleration af touchplade</translation>
+<translation id="7963608432878156675">Dette navn er synligt for andre enheder i forbindelse med Bluetooth- og netværksforbindelser</translation>
 <translation id="7963826112438303517">Assistenten bruger disse optagelser og dine indtalte anmodninger til at oprette og opdatere din stemmemodel, som kun gemmes på enheder, hvor du har aktiveret Voice Match. Se eller genoplær taleaktivitet i indstillingerne for Google Assistent.</translation>
 <translation id="7966241909927244760">K&amp;opiér billedets webadresse</translation>
 <translation id="7966571622054096916">{COUNT,plural, =1{1 element på listen over bogmærker}one{{COUNT} element på listen over bogmærker}other{{COUNT} elementer på listen over bogmærker}}</translation>
@@ -6388,6 +6400,7 @@
 <translation id="850875081535031620">Der blev ikke fundet skadelig software</translation>
 <translation id="8509177919508253835">Nulstil sikkerhedsnøgler, og opret pinkoder</translation>
 <translation id="8509646642152301857">Download af ordbog til stavekontrol mislykkedes.</translation>
+<translation id="8512396579636492893">{COUNT,plural, =0{Der blev ikke fundet nogen svage adgangskoder}=1{Der blev fundet {COUNT} svag adgangskode}one{Der blev fundet {COUNT} svag adgangskode}other{Der blev fundet {COUNT} svage adgangskoder}}</translation>
 <translation id="8512476990829870887">Afslut proces</translation>
 <translation id="851263357009351303">Tillad altid, at <ph name="HOST" /> viser billeder</translation>
 <translation id="8513108775083588393">Autoroter</translation>
diff --git a/chrome/app/resources/generated_resources_el.xtb b/chrome/app/resources/generated_resources_el.xtb
index 73fcc55..61b4f41 100644
--- a/chrome/app/resources/generated_resources_el.xtb
+++ b/chrome/app/resources/generated_resources_el.xtb
@@ -928,6 +928,7 @@
 <translation id="204914487372604757">Δημιουργία συντόμευσης</translation>
 <translation id="2050339315714019657">Κάθετα</translation>
 <translation id="2053312383184521053">Δεδομένα κατάστασης αδράνειας</translation>
+<translation id="2054665754582400095">Η παρουσία σας</translation>
 <translation id="2055585478631012616">Θα αποσυνδεθείτε από αυτούς τους ιστοτόπους, συμπεριλαμβανομένων όσων εμφανίζονται σε ανοικτές καρτέλες</translation>
 <translation id="205560151218727633">Λογότυπο του Βοηθού Google</translation>
 <translation id="2058456167109518507">Εντοπίστηκε συσκευή</translation>
@@ -1214,6 +1215,7 @@
 <translation id="2387052489799050037">Μετάβαση στην αρχική οθόνη</translation>
 <translation id="2387458720915042159">Τύπος σύνδεσης διακομιστή μεσολάβησης</translation>
 <translation id="2390347491606624519">Δεν είναι δυνατή η σύνδεση στον διακομιστή μεσολάβησης, συνδεθείτε ξανά</translation>
+<translation id="2390782873446084770">Συγχρονισμός Wi-Fi</translation>
 <translation id="2391082728065870591">Αποστολή αναφοράς σχολίων</translation>
 <translation id="2391419135980381625">Τυπική γραμματοσειρά</translation>
 <translation id="2392163307141705938">Συμπλήρωσες το χρονικό όριο που έχει θέσει ο γονέας σου για το <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
@@ -1870,6 +1872,7 @@
 <translation id="3157931365184549694">Επαναφορά</translation>
 <translation id="3158033540161634471">Ρύθμιση του δακτυλικού αποτυπώματός σας</translation>
 <translation id="3159493096109238499">Μπεζ</translation>
+<translation id="3159978855457658359">Επεξεργασία ονόματος συσκευής</translation>
 <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (βασιζόμενο σε υλικό)</translation>
 <translation id="3161522574479303604">Όλες οι γλώσσες</translation>
 <translation id="3162853326462195145">Σχολικός λογαριασμός</translation>
@@ -3230,6 +3233,7 @@
 <translation id="4761104368405085019">Χρήση του μικροφώνου σας</translation>
 <translation id="4762718786438001384">Ο ελεύθερος χώρος στον δίσκο της συσκευής είναι οριακός</translation>
 <translation id="4763408175235639573">Όταν είδατε αυτήν τη σελίδα, ορίστηκαν τα ακόλουθα cookie</translation>
+<translation id="4764368918650455114">Βεβαιωθείτε ότι και οι δύο συσκευές είναι ξεκλειδωμένες, βρίσκονται κοντά η μία στην άλλη και έχουν ενεργοποιημένο το Bluetooth. Εάν κάνετε κοινή χρήση με ένα Chromebook, βεβαιωθείτε ότι έχετε ενεργοποιήσει σε αυτό την Κοινοποίηση κοντά (ανοίξτε την περιοχή κατάστασης επιλέγοντας την ώρα και έπειτα επιλέξτε Κοινοποίηση κοντά). <ph name="LINK_BEGIN" />Μάθετε περισσότερα<ph name="LINK_END" /></translation>
 <translation id="4765582662863429759">Επιτρέπει στο Android Messages τη μετάδοση μηνυμάτων κειμένου από το τηλέφωνό σας στο Chromebook</translation>
 <translation id="476598255842811483">Κανένας εκτός και αν ανοίξετε στη συσκευή σας τη λειτουργία Κοινοποίηση κοντά</translation>
 <translation id="4768332406694066911">Διαθέτετε πιστοποιητικά από αυτούς τους οργανισμούς που σας προσδιορίζουν</translation>
@@ -3392,6 +3396,7 @@
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Αυτή η εφαρμογή έχει εγκατασταθεί από τον διαχειριστή σας.</translation>
 <translation id="4964455510556214366">Διάταξη</translation>
+<translation id="496446150016900060">Συγχρονίστε τα δίκτυα Wi-Fi με το τηλέφωνό σας.</translation>
 <translation id="4965808351167763748">Είστε βέβαιοι ότι θέλετε να ρυθμίσετε αυτήν τη συσκευή για εκτέλεση του Hangouts Meet;</translation>
 <translation id="496888482094675990">Η εφαρμογή "Αρχεία" παρέχει γρήγορη πρόσβαση σε αρχεία που έχετε αποθηκεύσει στο Google Drive, σε εξωτερικό χώρο αποθήκευσης ή στη συσκευή σας Chrome OS.</translation>
 <translation id="4971412780836297815">Άνοιγμα κατά την ολοκλήρωση</translation>
@@ -3698,6 +3703,7 @@
 <translation id="5341980496415249280">Περιμένετε, πραγματοποιείται στοίβαξη…</translation>
 <translation id="5342091991439452114">Το PIN πρέπει να αποτελείται από τουλάχιστον <ph name="MINIMUM" /> ψηφία</translation>
 <translation id="5344036115151554031">Επαναφορά Linux</translation>
+<translation id="5345916423802287046">Εκκίνηση εφαρμογής κατά τη σύνδεση</translation>
 <translation id="5350293332385664455">Απενεργοποίηση Βοηθού Google</translation>
 <translation id="535123479159372765">Το κείμενο αντιγράφηκε από άλλη συσκευή</translation>
 <translation id="5352033265844765294">Χρονική σήμανση</translation>
@@ -4008,6 +4014,7 @@
 <translation id="5704875434923668958">Συγχρονισμός με</translation>
 <translation id="5705005699929844214">Να εμφανίζονται πάντα οι επιλογές προσβασιμότητας</translation>
 <translation id="5705882733397021510">Επιστροφή</translation>
+<translation id="5707117624115653804">Προσαρμόστε το μέγεθος και το στιλ των υπότιτλων για εφαρμογές και ιστοτόπους που υποστηρίζουν αυτήν τη ρύθμιση.</translation>
 <translation id="5707185214361380026">Αποτυχία φόρτωσης επέκτασης από:</translation>
 <translation id="5708171344853220004">Microsoft Principal Name</translation>
 <translation id="5709557627224531708">Ορισμός του Chrome ως προεπιλεγμένο πρόγραμμα περιήγησης</translation>
@@ -4171,6 +4178,7 @@
 <translation id="5904614460720589786">Δεν ήταν δυνατή η ρύθμιση της εφαρμογής <ph name="APP_NAME" /> λόγω προβλήματος διαμόρφωσης. Επικοινωνήστε με τον διαχειριστή. Κωδικός σφάλματος: <ph name="ERROR_CODE" />.</translation>
 <translation id="5906655207909574370">Η ενημέρωση σχεδόν ολοκληρώθηκε! Επανεκκινήστε τη συσκευή σας για να ολοκληρωθεί η ενημέρωση.</translation>
 <translation id="5906732635754427568">Τα δεδομένα που σχετίζονται με αυτήν την εφαρμογή θα καταργηθούν από αυτήν τη συσκευή.</translation>
+<translation id="5908474332780919512">Εκκίνηση εφαρμογής κατά τη σύνδεση</translation>
 <translation id="5908695239556627796">Ταχύτητα κύλισης ποντικιού</translation>
 <translation id="5908769186679515905">Αποκλεισμός ιστοτόπων από την εκτέλεση Flash</translation>
 <translation id="5910363049092958439">Απο&amp;θήκευση Εικόνας Ως...</translation>
@@ -4710,6 +4718,7 @@
 <translation id="6532527800157340614">Η σύνδεση απέτυχε επειδή δεν ήταν δυνατή η ανάκτηση του διακριτικού πρόσβασης. Ελέγξτε τη σύνδεση δικτύου σας και δοκιμάστε ξανά.</translation>
 <translation id="6532663472409656417">Εγγεγραμμένη σε επιχείρηση</translation>
 <translation id="6535331821390304775">Να επιτρέπεται πάντα στο <ph name="ORIGIN" /> να ανοίγει συνδέσμους αυτού του είδους στη συσχετισμένη εφαρμογή.</translation>
+<translation id="6537613839935722475">Στα ονόματα μπορείτε να χρησιμοποιείτε γράμματα, αριθμούς και παύλες (-).</translation>
 <translation id="6538635548667167211">Η τρέχουσα ρύθμιση χρήσης δεδομένων είναι Δεδομένα.</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />Σημείωση:<ph name="END_BOLD" /> Ενεργοποιήστε το μόνο εάν γνωρίζετε τι κάνετε ή εάν σας έχει ζητηθεί, καθώς η συλλογή των δεδομένων ενδέχεται να μειώσει την απόδοση.</translation>
 <translation id="6541638731489116978">Έχει αποκλειστεί η πρόσβαση στους αισθητήρες κίνησης από αυτόν τον ιστότοπο.</translation>
@@ -4798,6 +4807,7 @@
 <translation id="6650234781371031356">Ο κωδικός πρόσβασής σας για τον ιστότοπο <ph name="WEBSITE" /> είναι αποθηκευμένος σε αυτήν τη συσκευή και στον Λογαριασμό σας Google. Ποιον θέλετε να διαγράψετε;</translation>
 <translation id="665061930738760572">Άνοιγμα σε &amp;Νέο Παράθυρο</translation>
 <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="6654509035557065241">Προτίμηση δικτύου</translation>
 <translation id="6655190889273724601">Λειτουργία για προγραμματιστές</translation>
@@ -5401,6 +5411,7 @@
 <translation id="7375235221357833624">{0,plural, =1{Ενημέρωση συσκευής εντός μίας ώρας}other{Ενημέρωση συσκευής εντός # ωρών}}</translation>
 <translation id="7376553024552204454">Επισήμανση του δείκτη του ποντικιού όταν κινείται</translation>
 <translation id="7377451353532943397">Να συνεχιστεί ο αποκλεισμός της πρόσβασης στους αισθητήρες</translation>
+<translation id="7378611153938412599">Είναι εύκολο να μαντέψει κανείς τους ασθενείς κωδικούς πρόσβασης. Βεβαιωθείτε ότι δημιουργείτε ισχυρούς κωδικούς πρόσβασης. <ph name="BEGIN_LINK" />Δείτε περισσότερες συμβουλές ασφάλειας.<ph name="END_LINK" /></translation>
 <translation id="73786666777299047">Άνοιγμα του Chrome Web Store</translation>
 <translation id="7378812711085314936">Λήψη σύνδεσης δεδομένων</translation>
 <translation id="7380622428988553498">Το όνομα της συσκευής περιέχει μη έγκυρους χαρακτήρες.</translation>
@@ -5925,6 +5936,7 @@
 <translation id="7959074893852789871">Το αρχείο περιείχε πολλαπλά πιστοποιητικά, κάποια από τα οποία δεν εισάχθηκαν:</translation>
 <translation id="7961015016161918242">Ποτέ</translation>
 <translation id="7963001036288347286">Επιτάχυνση επιφάνειας αφής</translation>
+<translation id="7963608432878156675">Αυτό το όνομα είναι ορατό σε άλλες συσκευές για συνδέσεις Bluetooth και δικτύου.</translation>
 <translation id="7963826112438303517">Ο Βοηθός σας χρησιμοποιεί αυτές τις ηχογραφήσεις και τα εκφωνημένα αιτήματά σας για να δημιουργήσει και να ενημερώσει το φωνητικό μοντέλο σας, το οποίο αποθηκεύεται μόνο σε συσκευές στις οποίες έχετε ενεργοποιήσει το Voice Match. Προβάλετε ή εκπαιδεύστε ξανά τη φωνητική δραστηριότητα στις Ρυθμίσεις Βοηθού.</translation>
 <translation id="7966241909927244760">Α&amp;ντιγραφή της διεύθυνσης εικόνας</translation>
 <translation id="7966571622054096916">{COUNT,plural, =1{1 στοιχείο στη λίστα σελιδοδεικτών}other{{COUNT} στοιχεία στη λίστα σελιδοδεικτών}}</translation>
@@ -6389,6 +6401,7 @@
 <translation id="850875081535031620">Δεν βρέθηκε επιβλαβές λογισμικό</translation>
 <translation id="8509177919508253835">Επαναφορά κλειδιών ασφαλείας και δημιουργία PIN</translation>
 <translation id="8509646642152301857">Η λήψη λεξικού ορθογραφικού ελέγχου απέτυχε.</translation>
+<translation id="8512396579636492893">{COUNT,plural, =0{Δεν βρέθηκαν ασθενείς κωδικοί πρόσβασης.}=1{Βρέθηκε {COUNT} ασθενής κωδικός πρόσβασης.}other{Βρέθηκαν {COUNT} ασθενείς κωδικοί πρόσβασης.}}</translation>
 <translation id="8512476990829870887">Τερματισμός διαδικασίας</translation>
 <translation id="851263357009351303">Να επιτρέπεται πάντα στο <ph name="HOST" /> η εμφάνιση εικόνων</translation>
 <translation id="8513108775083588393">Αυτ. περιστρ.</translation>
diff --git a/chrome/app/resources/generated_resources_en-GB.xtb b/chrome/app/resources/generated_resources_en-GB.xtb
index 04526f0..ec9fcecf 100644
--- a/chrome/app/resources/generated_resources_en-GB.xtb
+++ b/chrome/app/resources/generated_resources_en-GB.xtb
@@ -17,6 +17,7 @@
 <translation id="1012794136286421601">Your Docs, Sheets, Slides and Drawings files are being synced. Open the Google Drive app to access them online or offline.</translation>
 <translation id="1012876632442809908">USB-C device (front port)</translation>
 <translation id="1013707859758800957">An unsandboxed plug-in was allowed to run on this page.</translation>
+<translation id="1015041505466489552">TrackPoint</translation>
 <translation id="1015318665228971643">Edit Folder Name</translation>
 <translation id="1015578595646638936">{NUM_DAYS,plural, =1{Last day to update <ph name="DEVICE_TYPE" />}other{Update <ph name="DEVICE_TYPE" /> within {NUM_DAYS} days}}</translation>
 <translation id="1016566241875885511">Additional info (optional)</translation>
diff --git a/chrome/app/resources/generated_resources_et.xtb b/chrome/app/resources/generated_resources_et.xtb
index d1a4456..95e0b18 100644
--- a/chrome/app/resources/generated_resources_et.xtb
+++ b/chrome/app/resources/generated_resources_et.xtb
@@ -17,6 +17,7 @@
 <translation id="1012794136286421601">Teie rakenduste Dokumendid, Arvutustabelid, Esitlused ja Joonised failid sünkroonitakse. Nendele võrgus või võrguühenduseta juurdepääsemiseks avage Google Drive'i rakendus.</translation>
 <translation id="1012876632442809908">C-tüüpi USB-seade (eesmine port)</translation>
 <translation id="1013707859758800957">Lehel lubati liivakastist eemaldatud pistikprogrammi käitamine.</translation>
+<translation id="1015041505466489552">Näpuhiir</translation>
 <translation id="1015318665228971643">Kausta nime muutmine</translation>
 <translation id="1015578595646638936">{NUM_DAYS,plural, =1{Viimane päev seadme (<ph name="DEVICE_TYPE" />) värskendamiseks}other{Värskendage seadet (<ph name="DEVICE_TYPE" />) {NUM_DAYS} päeva jooksul}}</translation>
 <translation id="1016566241875885511">Lisateave (valikuline)</translation>
diff --git a/chrome/app/resources/generated_resources_eu.xtb b/chrome/app/resources/generated_resources_eu.xtb
index 04a6a80..08c7bc3 100644
--- a/chrome/app/resources/generated_resources_eu.xtb
+++ b/chrome/app/resources/generated_resources_eu.xtb
@@ -928,6 +928,7 @@
 <translation id="204914487372604757">Sortu lasterbidea</translation>
 <translation id="2050339315714019657">Bertikala</translation>
 <translation id="2053312383184521053">Jarduerarik gabeko egoeraren datuak</translation>
+<translation id="2054665754582400095">Zure presentzia</translation>
 <translation id="2055585478631012616">Webgune horietako saioa amaituko da, baita irekita dauden fitxetakoa ere</translation>
 <translation id="205560151218727633">Google-ren Laguntzailea eginbidearen logotipoa</translation>
 <translation id="2058456167109518507">Hautemandako gailua</translation>
@@ -1214,6 +1215,7 @@
 <translation id="2387052489799050037">Joan hasierako pantailara</translation>
 <translation id="2387458720915042159">Proxy konexio mota</translation>
 <translation id="2390347491606624519">Ezin da konektatu proxyra. Hasi saioa berriro.</translation>
+<translation id="2390782873446084770">Wifi-sinkronizazioa</translation>
 <translation id="2391082728065870591">Bidali zerbitzuari buruzko iritzien txostena</translation>
 <translation id="2391419135980381625">Letra estandarra</translation>
 <translation id="2392163307141705938">Iritsi zara gurasoak <ph name="IDS_SHORT_PRODUCT_NAME" /> erabiltzeko ezarritako denbora-mugara.</translation>
@@ -1870,6 +1872,7 @@
 <translation id="3157931365184549694">Leheneratu</translation>
 <translation id="3158033540161634471">Konfiguratu hatz-marka</translation>
 <translation id="3159493096109238499">Beixa</translation>
+<translation id="3159978855457658359">Editatu gailuaren izena</translation>
 <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (hardwarean gordeta)</translation>
 <translation id="3161522574479303604">Hizkuntza guztiak</translation>
 <translation id="3162853326462195145">Ikastetxeko kontua</translation>
@@ -2346,7 +2349,7 @@
 <translation id="3713047097299026954">Segurtasun-giltzan ez dago saioa hasteko daturik</translation>
 <translation id="3714195043138862580">Zerbitzuarekiko duen sarbidea kendu zaio demo gailuari.</translation>
 <translation id="3714633008798122362">web-egutegia</translation>
-<translation id="3715954932774762075">Hizkuntza batean baino gehiagotan dauden aplikazioek eta webguneek hizkuntza onartuen zerrendan agertzen den lehenengo hizkuntza erabiliko dute. Arakatzaileko ezarpenekin sinkronizatuta daude hobespen horiek. <ph name="BEGIN_LINK_LEARN_MORE" />Lortu informazio gehiago<ph name="END_LINK_LEARN_MORE" /></translation>
+<translation id="3715954932774762075">Hizkuntza onartuen zerrendan agertzen den lehenengo hizkuntza erabiliko dute hizkuntza batean baino gehiagotan dauden aplikazioek eta webguneek. Arakatzaileko ezarpenekin sinkronizatuta daude hobespen horiek. <ph name="BEGIN_LINK_LEARN_MORE" />Lortu informazio gehiago<ph name="END_LINK_LEARN_MORE" /></translation>
 <translation id="3719826155360621982">Orri nagusia</translation>
 <translation id="372062398998492895">CUPS</translation>
 <translation id="3721119614952978349">Google eta zu</translation>
@@ -3230,6 +3233,7 @@
 <translation id="4761104368405085019">Erabili mikrofonoa</translation>
 <translation id="4762718786438001384">Oso toki gutxi dago gailuaren diskoan</translation>
 <translation id="4763408175235639573">Cookie hauek ezarri dira orria ikusi duzunean:</translation>
+<translation id="4764368918650455114">Egiaztatu bi gailuak desblokeatuta eta elkarrengandik hurbil daudela, eta Bluetooth-a aktibatuta daukatela. Chromebook batekin edukia partekatzeko asmoa baduzu, egiaztatu Nearby Sharing aktibatuta daukala (hautatu ordua egoeraren eremua irekitzeko, eta, gero, hautatu Nearby Share). <ph name="LINK_BEGIN" />Lortu informazio gehiago<ph name="LINK_END" /></translation>
 <translation id="4765582662863429759">Testu-mezuak telefonotik Chromebook gailura bidaltzea baimentzen dio Android Mezuak aplikazioari</translation>
 <translation id="476598255842811483">Inor ez, Nearby Share zure gailuan ireki ezean</translation>
 <translation id="4768332406694066911">Identifikatzen zaituzten erakunde hauen ziurtagiriak dituzu</translation>
@@ -3392,6 +3396,7 @@
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Administratzaileak instalatu du aplikazio hau.</translation>
 <translation id="4964455510556214366">Antolakuntza</translation>
+<translation id="496446150016900060">Sinkronizatu wifi-sareak telefonoarekin</translation>
 <translation id="4965808351167763748">Ziur gailu hau Hangouts Meet zerbitzuarekin erabiltzeko konfiguratu nahi duzula?</translation>
 <translation id="496888482094675990">Fitxategiak aplikazioarekin, azkar atzituko dituzu Google Drive-n, kanpoko memorian edo Chrome OS gailuan gordeta dituzun fitxategiak.</translation>
 <translation id="4971412780836297815">Ireki amaitzean</translation>
@@ -3698,6 +3703,7 @@
 <translation id="5341980496415249280">Itxaron paketatzeko prozesua osatzen dugun arte…</translation>
 <translation id="5342091991439452114">PIN kodeak <ph name="MINIMUM" /> digitu izan behar ditu gutxienez</translation>
 <translation id="5344036115151554031">Linux leheneratzen</translation>
+<translation id="5345916423802287046">Abiarazi aplikazioa saioa hasten duzunean</translation>
 <translation id="5350293332385664455">Desaktibatu Google-ren Laguntzailea</translation>
 <translation id="535123479159372765">Beste gailu batetik kopiatu da testua</translation>
 <translation id="5352033265844765294">Denbora-zigiluak</translation>
@@ -4007,6 +4013,7 @@
 <translation id="5704875434923668958">Honekin sinkronizatzen:</translation>
 <translation id="5705005699929844214">Erakutsi beti erabilerraztasun-aukerak</translation>
 <translation id="5705882733397021510">Egin atzera</translation>
+<translation id="5707117624115653804">Pertsonalizatu azpitituluen tamaina eta estiloa eginbide hori onartzen duten aplikazio eta webguneetan</translation>
 <translation id="5707185214361380026">Ezin izan da kargatu hemengo luzapena:</translation>
 <translation id="5708171344853220004">Microsoft zuzendariaren izena</translation>
 <translation id="5709557627224531708">Ezarri Chrome arakatzaile lehenetsi gisa</translation>
@@ -4170,6 +4177,7 @@
 <translation id="5904614460720589786">Ezin izan da instalatu <ph name="APP_NAME" /> konfigurazio-arazo batengatik. Jarri administratzailearekin harremanetan. Errore-kodea: <ph name="ERROR_CODE" />.</translation>
 <translation id="5906655207909574370">Ia amaitu dugu! Eguneratzen amaitzeko, berrabiarazi gailua.</translation>
 <translation id="5906732635754427568">Aplikazio honekin erlazionatutako datu guztiak kenduko dira gailu honetatik.</translation>
+<translation id="5908474332780919512">Abiarazi aplikazioa saioa hasten duzunean</translation>
 <translation id="5908695239556627796">Saguarekin gora/behera egiteko abiadura</translation>
 <translation id="5908769186679515905">Ez utzi webguneei Flash abiarazten</translation>
 <translation id="5910363049092958439">Gor&amp;de irudia honela…</translation>
@@ -4709,6 +4717,7 @@
 <translation id="6532527800157340614">Ezin izan da hasi saioa, ezin izan delako eskuratu sarbide-tokena. Egiaztatu sarera konektatuta zaudela eta saiatu berriro.</translation>
 <translation id="6532663472409656417">Enpresan erregistratua</translation>
 <translation id="6535331821390304775">Eman baimena beti <ph name="ORIGIN" /> webguneari halako estekak haiekin erlazionatutako aplikazioan irekitzeko</translation>
+<translation id="6537613839935722475">Izenak hizkiak, zenbakiak eta marratxoak (-) eduki ditzake</translation>
 <translation id="6538635548667167211">Uneko datuen erabileraren ezarpena "Datu-konexioa" da</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />Oharra:<ph name="END_BOLD" /> gaitu aukera zer egiten ari zaren baldin badakizu edo hori egiteko eskatu badizute, datuak biltzeak errendimendua murritz baitezake.</translation>
 <translation id="6541638731489116978">Webgune honi mugimendu-sentsoreak atzitzeko aukera blokeatu zaio.</translation>
@@ -4797,6 +4806,7 @@
 <translation id="6650234781371031356">Gailu honetan eta Google-ko kontuan dago gordeta <ph name="WEBSITE" /> webguneko pasahitza. Nongoa ezabatu nahi duzu?</translation>
 <translation id="665061930738760572">Ireki leiho &amp;berrian</translation>
 <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="6654509035557065241">Sare hobetsia</translation>
 <translation id="6655190889273724601">Garatzaile modua</translation>
@@ -5400,6 +5410,7 @@
 <translation id="7375235221357833624">{0,plural, =1{Eguneratu gailua ordubeteko epean}other{Eguneratu gailua # orduko epean}}</translation>
 <translation id="7376553024552204454">Mugitzen ari denean, nabarmendu saguaren erakuslea</translation>
 <translation id="7377451353532943397">Jarraitu sentsoreetarako sarbidea blokeatzen</translation>
+<translation id="7378611153938412599">Seguruak ez diren pasahitzak erraz asmatzen dira. Ziurtatu pasahitz seguruak sortzen dituzula. <ph name="BEGIN_LINK" />Ikusi segurtasun-aholku gehiago.<ph name="END_LINK" /></translation>
 <translation id="73786666777299047">Ireki Chrome Web Store</translation>
 <translation id="7378812711085314936">Lortu datu-konexioa</translation>
 <translation id="7380622428988553498">Balio ez duten karaktereak ditu gailuaren izenak</translation>
@@ -5924,6 +5935,7 @@
 <translation id="7959074893852789871">Fitxategiak ziurtagiri bat baino gehiago ditu eta horietako batzuk inportatu dira:</translation>
 <translation id="7961015016161918242">Inoiz ez</translation>
 <translation id="7963001036288347286">Ukipen-panelaren erabilera bizkortua</translation>
+<translation id="7963608432878156675">Beste gailu batzuek Bluetooth bidezko edo sareko konexioak ezartzeko ikus dezakete izen hau</translation>
 <translation id="7963826112438303517">Laguntzailea eginbideak grabaketa hauek eta ahozko eskaerak erabiliko ditu ahots-eredua sortzeko eta eguneratzeko, eta eredu hori Voice Match gaitu duzun gailuetan gordeko da. Ikusi edo trebatu berriro ahozko jarduerak Laguntzailea eginbidearen ezarpenetan.</translation>
 <translation id="7966241909927244760">K&amp;opiatu irudiaren helbidea</translation>
 <translation id="7966571622054096916">{COUNT,plural, =1{1 elementu dago laster-marken zerrendan}other{{COUNT} elementu daude laster-marken zerrendan}}</translation>
@@ -6387,6 +6399,7 @@
 <translation id="850875081535031620">Ez da aurkitu software kaltegarririk</translation>
 <translation id="8509177919508253835">Berrezarri segurtasun-giltzak eta sortu PIN kodeak</translation>
 <translation id="8509646642152301857">Ezin izan da deskargatu ortografia-zuzenketarako hiztegia.</translation>
+<translation id="8512396579636492893">{COUNT,plural, =0{Ez da aurkitu segurua ez den pasahitzik}=1{Segurua ez den {COUNT} pasahitz aurkitu da}other{Seguruak ez diren {COUNT} pasahitz aurkitu dira}}</translation>
 <translation id="8512476990829870887">Amaitu prozesua</translation>
 <translation id="851263357009351303">Eman beti irudiak erakusteko baimena <ph name="HOST" /> webguneari</translation>
 <translation id="8513108775083588393">Biratu auto.</translation>
diff --git a/chrome/app/resources/generated_resources_fa.xtb b/chrome/app/resources/generated_resources_fa.xtb
index ac0bdd7..788be3f 100644
--- a/chrome/app/resources/generated_resources_fa.xtb
+++ b/chrome/app/resources/generated_resources_fa.xtb
@@ -925,6 +925,7 @@
 <translation id="204914487372604757">ایجاد میان‌بر</translation>
 <translation id="2050339315714019657">عمودی</translation>
 <translation id="2053312383184521053">داده‌های حالت بیکار</translation>
+<translation id="2054665754582400095">حضور شما</translation>
 <translation id="2055585478631012616">از سیستم این سایت‌ها (ازجمله در برگه‌های باز) خارج خواهید شد</translation>
 <translation id="205560151218727633">‏نشان‌واره «دستیار Google»</translation>
 <translation id="2058456167109518507">دستگاه شناسایی شد</translation>
@@ -1211,6 +1212,7 @@
 <translation id="2387052489799050037">رفتن به صفحه اصلی</translation>
 <translation id="2387458720915042159">نوع اتصال پراکسی</translation>
 <translation id="2390347491606624519">اتصال به پراکسی امکان‌پذیر نیست، لطفاً دوباره به سیستم وارد شوید</translation>
+<translation id="2390782873446084770">‏همگام‌سازی Wi-Fi</translation>
 <translation id="2391082728065870591">ارسال گزارش بازخورد</translation>
 <translation id="2391419135980381625">قلم استاندارد</translation>
 <translation id="2392163307141705938">به حداکثر زمانی که ولی‌تان برای استفاده از <ph name="IDS_SHORT_PRODUCT_NAME" /> تعیین کرده است رسیده‌اید.</translation>
@@ -1867,6 +1869,7 @@
 <translation id="3157931365184549694">بازیابی</translation>
 <translation id="3158033540161634471">ثبت اثرانگشت</translation>
 <translation id="3159493096109238499">بژ</translation>
+<translation id="3159978855457658359">ویرایش نام دستگاه</translation>
 <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (پشتیبان‌گیری‌شده در سخت‌افزار)</translation>
 <translation id="3161522574479303604">همه زبان‌ها</translation>
 <translation id="3162853326462195145">حساب محل تحصیل</translation>
@@ -3227,6 +3230,7 @@
 <translation id="4761104368405085019">استفاده از میکروفون شما</translation>
 <translation id="4762718786438001384">فضای دیسک دستگاه بسیار کم است</translation>
 <translation id="4763408175235639573">وقتی این صفحه را مشاهده کردید، کوکی‌های زیر تنظیم شدند</translation>
+<translation id="4764368918650455114">‏مطمئن شوید قفل هر دو دستگاه باز باشد، نزدیک یکدیگر باشند، و بلوتوث آن‌ها روشن باشد. اگر درحال هم‌رسانی با Chromebook هستید، مطمئن شوید «هم‌رسانی با اطراف» در آن روشن باشد (ناحیه نشانگر وضعیت را با انتخاب کردن زمان باز کنید، سپس «هم‌رسانی با اطراف» را انتخاب کنید). <ph name="LINK_BEGIN" />بیشتر بدانید<ph name="LINK_END" /></translation>
 <translation id="4765582662863429759">‏به «پیام‌های Android» اجازه دهید پیام‌های متنی را از تلفن در Chromebook بازپخش کند</translation>
 <translation id="476598255842811483">هیچ‌کس، مگراینکه «هم‌رسانی با اطراف» را در دستگاهتان باز کنید</translation>
 <translation id="4768332406694066911">گواهی‌هایی از این سازمان‌ها دارید که هویت شما را شناسایی می‌کنند</translation>
@@ -3389,6 +3393,7 @@
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">این برنامه را سرپرست نصب کرده است.</translation>
 <translation id="4964455510556214366">ترتیب</translation>
+<translation id="496446150016900060">‏همگام‌سازی شبکه‌های Wi-Fi با تلفن</translation>
 <translation id="4965808351167763748">‏مطمئن هستید می‌خواهید این دستگاه را برای اجرای Hangouts Meet راه‌اندازی کنید؟</translation>
 <translation id="496888482094675990">‏برنامه Files دسترسی سریع به فایل‌هایی را فراهم می‌کند که در Google Drive، فضای ذخیره خارجی یا دستگاه Chrome OS خودتان ذخیره کرده‌اید.</translation>
 <translation id="4971412780836297815">بعد از اتمام باز شود</translation>
@@ -3695,6 +3700,7 @@
 <translation id="5341980496415249280">لطفاً منتظر بمانید، درحال بسته‌بندی…</translation>
 <translation id="5342091991439452114">پین باید حداقل <ph name="MINIMUM" /> رقم باشد</translation>
 <translation id="5344036115151554031">‏درحال بازیابی Linux</translation>
+<translation id="5345916423802287046">راه‌اندازی برنامه هنگام ورود به سیستم</translation>
 <translation id="5350293332385664455">‏خاموش کردن «دستیار Google»</translation>
 <translation id="535123479159372765">نوشتار از دستگاه دیگری کپی شده است</translation>
 <translation id="5352033265844765294">مهر زمان</translation>
@@ -4004,6 +4010,7 @@
 <translation id="5704875434923668958">درحال همگام‌سازی در</translation>
 <translation id="5705005699929844214">نمایش همیشگی گزینه‌های دسترس‌پذیری</translation>
 <translation id="5705882733397021510">برگشت</translation>
+<translation id="5707117624115653804">سفارشی کردن اندازه و سبک زیرنویس ناشنوایان برای برنامه‌ها و سایت‌هایی که از این تنظیم پشتیبانی می‌کنند</translation>
 <translation id="5707185214361380026">بارگیری برنامه افزودنی از اینجا ناموفق بود:</translation>
 <translation id="5708171344853220004">‏نام اصلی Microsoft</translation>
 <translation id="5709557627224531708">‏تنظیم Chrome به‌عنوان مرورگر پیش‌فرض</translation>
@@ -4167,6 +4174,7 @@
 <translation id="5904614460720589786">به‌دلیل مشکل پیکربندی، <ph name="APP_NAME" /> راه‌اندازی نشد. لطفاً با سرپرست تماس بگیرید. کد خطا: <ph name="ERROR_CODE" />.</translation>
 <translation id="5906655207909574370">تقریباً به‌روز شده است! برای تمام کردن به‌روزرسانی، دستگاهتان را دوباره راه‌اندازی کنید.</translation>
 <translation id="5906732635754427568">داده‌های مرتبط با این برنامه از این دستگاه پاک می‌شوند.</translation>
+<translation id="5908474332780919512">راه‌اندازی برنامه هنگام ورود به سیستم</translation>
 <translation id="5908695239556627796">سرعت پیمایش موشواره</translation>
 <translation id="5908769186679515905">‏اجرای Flash در سایت‌ها مسدود شود</translation>
 <translation id="5910363049092958439">ذ&amp;خیره فایل تصویری به‌عنوان...</translation>
@@ -4706,6 +4714,7 @@
 <translation id="6532527800157340614">ورود به سیستم انجام نشد، زیرا کد دسترسی شما بازیابی نشد. لطفاً اتصال شبکه‌تان را بررسی کنید و دوباره امتحان کنید.</translation>
 <translation id="6532663472409656417">ثبت شرکتی</translation>
 <translation id="6535331821390304775"><ph name="ORIGIN" /> همیشه مجاز باشد این نوع پیوندها را در برنامه مرتبط باز کند</translation>
+<translation id="6537613839935722475">نام می‌تواند حاوی حرف، عدد، و خط تیره (-) باشد</translation>
 <translation id="6538635548667167211">تنظیم کنونی مصرف داده روی «هنگام استفاده از داده» است</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />توجه:<ph name="END_BOLD" /> فقط درصورتی آن را فعال کنید که اطلاع دارید چه کاری انجام می‌دهید یا از شما خواسته شده باشد این کار را انجام دهید، زیرا جمع‌آوری داده‌ها ممکن است عملکرد را کاهش دهد.</translation>
 <translation id="6541638731489116978">دسترسی این سایت به حسگرهای حرکتی مسدود شده است.</translation>
@@ -4794,6 +4803,7 @@
 <translation id="6650234781371031356">‏گذرواژه شما برای <ph name="WEBSITE" /> در این دستگاه و «حساب Google» شما ذخیره شده است. می‌خواهید کدام یک را حذف کنید؟</translation>
 <translation id="665061930738760572">باز کردن در پنجره &amp;جدید</translation>
 <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="6654509035557065241">شبکه انتخابی</translation>
 <translation id="6655190889273724601">حالت برنامه‌نویس</translation>
@@ -5397,6 +5407,7 @@
 <translation id="7375235221357833624">{0,plural, =1{دستگاه را تا یک ساعت دیگر به‌روزرسانی کنید}one{دستگاه را تا # ساعت دیگر به‌روزرسانی کنید}other{دستگاه را تا # ساعت دیگر به‌روزرسانی کنید}}</translation>
 <translation id="7376553024552204454">برجسته کردن نشانگر موشواره هنگامی که حرکت می‌کند</translation>
 <translation id="7377451353532943397">دسترسی به حسگر همچنان مسدود شود</translation>
+<translation id="7378611153938412599">گذرواژه‌های ضعیف را می‌توان به‌راحتی حدس زد. مطمئن شوید گذرواژه‌هایی که ایجاد می‌کنید قوی باشند. <ph name="BEGIN_LINK" />نکته‌های امنیتی بیشتری ببینید.<ph name="END_LINK" /></translation>
 <translation id="73786666777299047">‏باز کردن نت‌بازار Chrome</translation>
 <translation id="7378812711085314936">دریافت اتصال داده</translation>
 <translation id="7380622428988553498">نام دستگاه حاوی نویسه‌های نامعتبر است</translation>
@@ -5921,6 +5932,7 @@
 <translation id="7959074893852789871">این فایل دارای چندین مجوز است، برخی از آن‌ها وارد نشده‌اند:</translation>
 <translation id="7961015016161918242">هرگز</translation>
 <translation id="7963001036288347286">شتاب صفحه لمسی</translation>
+<translation id="7963608432878156675">برای اتصالات شبکه و بلوتوث، این نام به دستگاه‌های دیگر نشان داده می‌شود</translation>
 <translation id="7963826112438303517">‏«دستیار» از این موارد ضبط‌شده و درخواست‌های گفتاری‌تان برای ایجاد و به‌روزرسانی مدل صوتی‌تان استفاده می‌کند؛ این مدل فقط در دستگاه‌هایی ذخیره می‌شود که Voice Match در آن‌ها روشن شده است. برای مشاهده یا آموزش مجدد فعالیت صوتی، به «تنظیمات دستیار» بروید.</translation>
 <translation id="7966241909927244760">کپی آدرس تصویر</translation>
 <translation id="7966571622054096916">{COUNT,plural, =1{۱ مورد در فهرست نشانک}one{{COUNT} مورد در فهرست نشانک}other{{COUNT} مورد در فهرست نشانک}}</translation>
@@ -6385,6 +6397,7 @@
 <translation id="850875081535031620">نرم‌افزار مضری پیدا نشد</translation>
 <translation id="8509177919508253835">بازنشانی کلیدهای امنیتی و ایجاد پین</translation>
 <translation id="8509646642152301857">بارگیری واژه‌نامه بررسی املا انجام نشد.</translation>
+<translation id="8512396579636492893">{COUNT,plural, =0{گذرواژه ضعیفی پیدا نشد}=1{{COUNT} گذرواژه ضعیف پیدا شد}one{{COUNT} گذرواژه ضعیف پیدا شد}other{{COUNT} گذرواژه ضعیف پیدا شد}}</translation>
 <translation id="8512476990829870887">پایان دادن به فرآیند</translation>
 <translation id="851263357009351303">همیشه <ph name="HOST" /> مجاز باشد تصاویر را نشان دهد</translation>
 <translation id="8513108775083588393">چرخش خودکار</translation>
diff --git a/chrome/app/resources/generated_resources_fi.xtb b/chrome/app/resources/generated_resources_fi.xtb
index eefe9c0..dfe32c78 100644
--- a/chrome/app/resources/generated_resources_fi.xtb
+++ b/chrome/app/resources/generated_resources_fi.xtb
@@ -928,6 +928,7 @@
 <translation id="204914487372604757">Luo pikakuvake</translation>
 <translation id="2050339315714019657">Pystysuunta</translation>
 <translation id="2053312383184521053">Tiedot käyttämätön-tilassa</translation>
+<translation id="2054665754582400095">Paikallaolosi</translation>
 <translation id="2055585478631012616">Sinut kirjataan ulos näiltä sivustoilta, myös avoimilta välilehdiltä.</translation>
 <translation id="205560151218727633">Google Assistantin logo</translation>
 <translation id="2058456167109518507">Laite havaittu</translation>
@@ -1214,6 +1215,7 @@
 <translation id="2387052489799050037">Aloitusnäytölle siirtyminen</translation>
 <translation id="2387458720915042159">Välityspalvelinyhteyden tyyppi</translation>
 <translation id="2390347491606624519">Ei yhteyttä välityspalvelimeen, kirjaudu sisään uudelleen</translation>
+<translation id="2390782873446084770">Wi-Fin synkronointi</translation>
 <translation id="2391082728065870591">Lähetä palauteraportti</translation>
 <translation id="2391419135980381625">Perusfontti</translation>
 <translation id="2392163307141705938">Vanhempasi asettama aikaraja (<ph name="IDS_SHORT_PRODUCT_NAME" />) tuli täyteen.</translation>
@@ -1870,6 +1872,7 @@
 <translation id="3157931365184549694">Palauta</translation>
 <translation id="3158033540161634471">Määritä sormenjälki</translation>
 <translation id="3159493096109238499">Beige</translation>
+<translation id="3159978855457658359">Muokkaa laitteen nimeä</translation>
 <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (laitteiston tukema)</translation>
 <translation id="3161522574479303604">Kaikki kielet</translation>
 <translation id="3162853326462195145">Koulutili</translation>
@@ -3227,6 +3230,7 @@
 <translation id="4761104368405085019">Käyttää mikrofonia</translation>
 <translation id="4762718786438001384">Laitteen levytila kriittisellä tasolla</translation>
 <translation id="4763408175235639573">Seuraavat evästeet asetettiin katsellessasi sivua</translation>
+<translation id="4764368918650455114">Varmista, että kumpikaan laite ei ole lukittuna, että ne ovat lähekkäin ja että Bluetooth on päällä. Jos jaat Chromebookilla, varmista että Lähijakaminen on päällä (avaa tila-alue valitsemalla aika ja sitten Lähijakaminen). <ph name="LINK_BEGIN" />Lue lisää<ph name="LINK_END" /></translation>
 <translation id="4765582662863429759">Android Messages saa hakea viestejä puhelimesta Chromebookiin</translation>
 <translation id="476598255842811483">Ei kukaan, ellet avaa Lähijakamista laitteellasi</translation>
 <translation id="4768332406694066911">Sinulla on varmenteita seuraavilta sinut tunnistavilta organisaatioilta</translation>
@@ -3389,6 +3393,7 @@
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> – <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Järjestelmänvalvoja on asentanut tämän sovelluksen.</translation>
 <translation id="4964455510556214366">Asettelu</translation>
+<translation id="496446150016900060">Synkronoi Wi-Fi-verkot puhelimesi kanssa</translation>
 <translation id="4965808351167763748">Haluatko varmasti määrittää tämän laitteen käyttämään Hangouts Meetiä?</translation>
 <translation id="496888482094675990">Tiedostot-sovelluksen kautta pääset käyttämään nopeasti Google Driveen, ulkoiseen tallennustilaan tai Chrome-käyttöjärjestelmälaitteellesi tallennettuja tiedostoja.</translation>
 <translation id="4971412780836297815">Avaa kun valmis</translation>
@@ -3695,6 +3700,7 @@
 <translation id="5341980496415249280">Pakkaus on käynnissä, odota hetki…</translation>
 <translation id="5342091991439452114">PIN-koodissa on oltava vähintään <ph name="MINIMUM" /> numeroa.</translation>
 <translation id="5344036115151554031">Palautetaan Linuxia</translation>
+<translation id="5345916423802287046">Käynnistä sovellus kun kirjaudut sisään</translation>
 <translation id="5350293332385664455">Laita Google Assistant pois päältä</translation>
 <translation id="535123479159372765">Toiselta laitteelta kopioitu teksti</translation>
 <translation id="5352033265844765294">Aikaleimaus</translation>
@@ -4004,6 +4010,7 @@
 <translation id="5704875434923668958">Synkronoidaan kohteeseen</translation>
 <translation id="5705005699929844214">Näytä aina esteettömyysvaihtoehdot</translation>
 <translation id="5705882733397021510">Takaisin</translation>
+<translation id="5707117624115653804">Muokkaa tekstitysten kokoa ja tyyliä sovelluksissa ja sivustoilla, jotka tukevat tätä asetusta</translation>
 <translation id="5707185214361380026">Laajennuksen lataaminen seuraavasta kohteesta epäonnistui:</translation>
 <translation id="5708171344853220004">Microsoftin päänimi</translation>
 <translation id="5709557627224531708">Aseta Chrome oletusselaimeksi</translation>
@@ -4167,6 +4174,7 @@
 <translation id="5904614460720589786"><ph name="APP_NAME" />:n asennus ei onnistunut konfiguraatio-ongelman vuoksi. Ota yhteyttä järjestelmänvalvojaasi. Virhekoodi: <ph name="ERROR_CODE" />.</translation>
 <translation id="5906655207909574370">Melkein ajan tasalla. Viimeistele päivitys käynnistämällä laite uudelleen.</translation>
 <translation id="5906732635754427568">Tähän sovellukseen liittyvät tiedot poistetaan tältä laitteelta.</translation>
+<translation id="5908474332780919512">Käynnistä sovellus kun kirjaudut sisään</translation>
 <translation id="5908695239556627796">Hiiren vieritysnopeus</translation>
 <translation id="5908769186679515905">Estä sivustoja suorittamasta Flashia</translation>
 <translation id="5910363049092958439">T&amp;allenna kuva nimellä...</translation>
@@ -4708,6 +4716,7 @@
 <translation id="6532527800157340614">Sisäänkirjautuminen epäonnistui, koska käyttötunnustasi ei voitu noutaa. Tarkista verkkoyhteys ja yritä uudelleen.</translation>
 <translation id="6532663472409656417">Yritys rekisteröity</translation>
 <translation id="6535331821390304775"><ph name="ORIGIN" /> saa aina avata tällaiset linkit sovelluksessaan</translation>
+<translation id="6537613839935722475">Nimessä voi olla kirjaimia, numeroita ja yhdysmerkkejä (-)</translation>
 <translation id="6538635548667167211">Nykyinen datankäyttöasetus on Data</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />Huomaa:<ph name="END_BOLD" /> Ota tämä asetus käyttöön vain, jos tiedät mitä olet tekemässä tai jos sinua on pyydetty ottamaan asetus käyttöön. Tietojen kerääminen voi heikentää tehokkuutta.</translation>
 <translation id="6541638731489116978">Tältä sivustolta on estetty liiketunnistimien lukemien käyttö.</translation>
@@ -4796,6 +4805,7 @@
 <translation id="6650234781371031356">Salasanasi (<ph name="WEBSITE" />) säilytetään tällä laitteella ja Google-tililläsi. Kumman haluat poistaa?</translation>
 <translation id="665061930738760572">Avaa uudessa ikkunassa</translation>
 <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="6654509035557065241">Valitse ensisijainen verkko</translation>
 <translation id="6655190889273724601">Kehittäjätila</translation>
@@ -5399,6 +5409,7 @@
 <translation id="7375235221357833624">{0,plural, =1{Päivitä laite tunnin kuluessa}other{Päivitä laite # tunnin kuluessa}}</translation>
 <translation id="7376553024552204454">Korosta hiiren osoitinta, kun se liikkuu</translation>
 <translation id="7377451353532943397">Estä edelleen tunnistimien käyttö</translation>
+<translation id="7378611153938412599">Heikko salasana on helppo arvata. Muista käyttää vahvoja salasanoja. <ph name="BEGIN_LINK" />Katso muita tietoturvavinkkejä.<ph name="END_LINK" /></translation>
 <translation id="73786666777299047">Avaa Chrome Web Store</translation>
 <translation id="7378812711085314936">Luo mobiiliyhteys</translation>
 <translation id="7380622428988553498">Laitteen nimi sisältää virheellisiä merkkejä</translation>
@@ -5922,6 +5933,7 @@
 <translation id="7959074893852789871">Tiedostossa oli useita varmenteita, joista kaikkia ei tuotu:</translation>
 <translation id="7961015016161918242">Ei koskaan</translation>
 <translation id="7963001036288347286">Kosketuslevyn nopeuttaminen</translation>
+<translation id="7963608432878156675">Tämä nimi näkyy muille laitteille Bluetooth- ja verkkoyhteyksiä varten</translation>
 <translation id="7963826112438303517">Assistant käyttää näitä tallenteita ja puhuttuja pyyntöjäsi äänimallin luomiseen ja päivittämiseen. Äänimallia säilytetään vain laitteilla, joilla Voice Match on otettu käyttöön. Voit katsella puhetoimintaa tai opettaa sen uudelleen Assistantin asetuksissa.</translation>
 <translation id="7966241909927244760">K&amp;opioi kuvan osoite</translation>
 <translation id="7966571622054096916">{COUNT,plural, =1{Listalla on yksi kirjanmerkki}other{Listalla on {COUNT} kirjanmerkkiä}}</translation>
@@ -6386,6 +6398,7 @@
 <translation id="850875081535031620">Haittaohjelmia ei löytynyt.</translation>
 <translation id="8509177919508253835">Nollaa suojausavaimet ja luo PIN-koodit</translation>
 <translation id="8509646642152301857">Oikeinkirjoituksen tarkistuksen sanakirjan lataus epäonnistui.</translation>
+<translation id="8512396579636492893">{COUNT,plural, =0{Heikkoja salasanoja ei löytynyt}=1{{COUNT} heikko salasana löytyi}other{{COUNT} heikkoa salasanaa löytyi}}</translation>
 <translation id="8512476990829870887">Lopeta prosessi</translation>
 <translation id="851263357009351303">Salli aina sivuston <ph name="HOST" /> näyttää kuvia</translation>
 <translation id="8513108775083588393">Autom. kääntö</translation>
diff --git a/chrome/app/resources/generated_resources_fil.xtb b/chrome/app/resources/generated_resources_fil.xtb
index 8f3a1e8..daff3a80 100644
--- a/chrome/app/resources/generated_resources_fil.xtb
+++ b/chrome/app/resources/generated_resources_fil.xtb
@@ -17,6 +17,7 @@
 <translation id="1012794136286421601">Sini-sync ang iyong mga file ng Docs, Mga Sheet, Slide at Guhit. Buksan ang Google Drive app upang i-access ang mga ito online o offline.</translation>
 <translation id="1012876632442809908">USB-C device (port sa harap)</translation>
 <translation id="1013707859758800957">Pinahintulutang tumakbo sa page na ito ang isang hindi naka-sandbox na plugin.</translation>
+<translation id="1015041505466489552">TrackPoint</translation>
 <translation id="1015318665228971643">I-edit ang Pangalan ng Folder</translation>
 <translation id="1015578595646638936">{NUM_DAYS,plural, =1{Huling araw para i-update ang <ph name="DEVICE_TYPE" />}one{I-update ang <ph name="DEVICE_TYPE" /> sa loob ng {NUM_DAYS} araw}other{I-update ang <ph name="DEVICE_TYPE" /> sa loob ng {NUM_DAYS} na araw}}</translation>
 <translation id="1016566241875885511">Karagdagang impormasyon (opsyonal)</translation>
@@ -928,6 +929,7 @@
 <translation id="204914487372604757">Lumikha ng shortcut sa </translation>
 <translation id="2050339315714019657">Portrait</translation>
 <translation id="2053312383184521053">Data sa Idle na Estado</translation>
+<translation id="2054665754582400095">Ang iyong presensya</translation>
 <translation id="2055585478631012616">Masa-sign out ka sa mga site na ito, pati na rin sa mga nakabukas na tab</translation>
 <translation id="205560151218727633">Logo ng Google Assistant</translation>
 <translation id="2058456167109518507">Na-detect ang device</translation>
@@ -1214,6 +1216,7 @@
 <translation id="2387052489799050037">Pumunta sa Home</translation>
 <translation id="2387458720915042159">Uri ng koneksyon sa proxy</translation>
 <translation id="2390347491606624519">Hindi makakonekta sa proxy, mag-sign in ulit</translation>
+<translation id="2390782873446084770">Wi-Fi Sync</translation>
 <translation id="2391082728065870591">Magpadala ng Ulat ng Feedback</translation>
 <translation id="2391419135980381625">Karaniwang font</translation>
 <translation id="2392163307141705938">Naabot mo na ang limitasyon sa oras na itinakda ng iyong magulang para sa <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
@@ -1870,6 +1873,7 @@
 <translation id="3157931365184549694">Ipanumbalik</translation>
 <translation id="3158033540161634471">I-set up ang iyong fingerprint</translation>
 <translation id="3159493096109238499">Beige</translation>
+<translation id="3159978855457658359">I-edit ang pangalan ng device</translation>
 <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (hardware-backed)</translation>
 <translation id="3161522574479303604">Lahat ng wika</translation>
 <translation id="3162853326462195145">Pampaaralang account</translation>
@@ -3230,6 +3234,7 @@
 <translation id="4761104368405085019">Gamitin ang iyong mikropono</translation>
 <translation id="4762718786438001384">Sobrang kaunti na lang ang espasyo sa disk ng device</translation>
 <translation id="4763408175235639573">Itinakda ang sumusunod na cookies noong tiningnan mo ang page na ito</translation>
+<translation id="4764368918650455114">Tiyaking naka-unlock at magkalapit ang dalawang device, at naka-on ang Bluetooth ng mga ito. Kung nagbabahagi ka sa isang Chromebook, tiyaking naka-on ang Nearby Sharing nito (buksan ang lugar ng status sa pamamagitan ng pagpili sa oras, pagkatapos ay piliin ang Nearby Share). <ph name="LINK_BEGIN" />Matuto pa<ph name="LINK_END" /></translation>
 <translation id="4765582662863429759">Binibigyang-daan ang Android Messages na mag-relay ng mga text mula sa iyong telepono papunta sa Chromebook mo</translation>
 <translation id="476598255842811483">Wala, maliban na lang kung bubuksan mo ang Nearby Share sa iyong device</translation>
 <translation id="4768332406694066911">Mayroon kang mga certificate mula sa mga organisasyong ito na tutukoy sa iyo</translation>
@@ -3392,6 +3397,7 @@
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Na-install ang app na ito ng iyong administrator.</translation>
 <translation id="4964455510556214366">Kaayusan</translation>
+<translation id="496446150016900060">Mag-sync ng mga Wi-Fi network sa iyong telepono</translation>
 <translation id="4965808351167763748">Sigurado ka bang gusto mong i-set up ang device na ito upang patakbuhin ang Hangouts Meet?</translation>
 <translation id="496888482094675990">Nagbibigay ang Files app ng mabilisang access sa mga file na nai-save mo sa Google Drive, external na storage o sa iyong Chrome OS device.</translation>
 <translation id="4971412780836297815">Buksan kapag tapos na</translation>
@@ -3698,6 +3704,7 @@
 <translation id="5341980496415249280">Pakihintay, nagpa-pack...</translation>
 <translation id="5342091991439452114">Hindi dapat bababa sa <ph name="MINIMUM" /> (na) digit ang PIN</translation>
 <translation id="5344036115151554031">Nire-restore ang Linux</translation>
+<translation id="5345916423802287046">Buksan ang app kapag nag-sign in ka</translation>
 <translation id="5350293332385664455">I-off ang Google Assistant</translation>
 <translation id="535123479159372765">Nakopya ang text mula sa isa pang device</translation>
 <translation id="5352033265844765294">Time Stamping</translation>
@@ -4007,6 +4014,7 @@
 <translation id="5704875434923668958">Sini-sync sa</translation>
 <translation id="5705005699929844214">Palaging ipakita ang mga opsyon sa pagiging accessible</translation>
 <translation id="5705882733397021510">Bumalik</translation>
+<translation id="5707117624115653804">I-customize ang laki at istilo ng caption para sa mga app at site na sumusuporta sa setting na ito</translation>
 <translation id="5707185214361380026">Hindi na-load ang extension mula sa:</translation>
 <translation id="5708171344853220004">Microsoft Principal Name</translation>
 <translation id="5709557627224531708">Itakda ang Chrome bilang iyong default na browser</translation>
@@ -4170,6 +4178,7 @@
 <translation id="5904614460720589786">Hindi ma-set up ang <ph name="APP_NAME" /> dahil sa isang problema sa configuration. Makipag-ugnayan sa iyong administrator. Code ng error: <ph name="ERROR_CODE" />.</translation>
 <translation id="5906655207909574370">Halos napapanahon na! I-restart ang iyong device upang tapusin ang pag-a-update.</translation>
 <translation id="5906732635754427568">Aalisin sa device na ito ang data na nauugnay sa app na ito.</translation>
+<translation id="5908474332780919512">Buksan ang App Kapag Nag-sign In Ka</translation>
 <translation id="5908695239556627796">Bilis ng pag-scroll ng mouse</translation>
 <translation id="5908769186679515905">I-block ang mga site sa pagpapatakbo ng Flash</translation>
 <translation id="5910363049092958439">I-sa&amp;ve ang Imahe Bilang...</translation>
@@ -4709,6 +4718,7 @@
 <translation id="6532527800157340614">Hindi nakapag-sign in dahil hindi makuha ang iyong token ng access. Pakisuri ang iyong koneksyon ng network at subukan ulit.</translation>
 <translation id="6532663472409656417">Naka-enroll sa Enterprise</translation>
 <translation id="6535331821390304775">Palaging payagan ang <ph name="ORIGIN" /> na buksan ang ganitong uri ng mga link sa nauugnay na app</translation>
+<translation id="6537613839935722475">Puwedeng gumamit ng mga titik, numero, at hyphen (-) ang pangalan</translation>
 <translation id="6538635548667167211">Data ang kasalukuyang setting ng paggamit ng data</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />Tandaan:<ph name="END_BOLD" /> I-enable lang kung alam mo kung ano ang iyong ginagawa o kung hiniling kang gawin ito, dahil maaaring mabawasan ng pagkolekta ng data ang pagganap.</translation>
 <translation id="6541638731489116978">Na-block ang site na ito sa pag-access sa iyong mga sensor ng paggalaw.</translation>
@@ -4797,6 +4807,7 @@
 <translation id="6650234781371031356">Naka-store sa device na ito at sa iyong Google Account ang password mo para sa <ph name="WEBSITE" />. Alin ang gusto mong i-delete?</translation>
 <translation id="665061930738760572">Buksan sa &amp;Bagong Window</translation>
 <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="6654509035557065241">Magtakda ng gustong network</translation>
 <translation id="6655190889273724601">Developer mode</translation>
@@ -5400,6 +5411,7 @@
 <translation id="7375235221357833624">{0,plural, =1{I-update ang device sa loob ng isang oras}one{I-update ang device sa loob ng # oras}other{I-update ang device sa loob ng # na oras}}</translation>
 <translation id="7376553024552204454">I-highlight ang cursor ng mouse kapag gumagalaw ito</translation>
 <translation id="7377451353532943397">Patuloy na i-block ang access sa sensor</translation>
+<translation id="7378611153938412599">Madaling hulaan ang mahihinang password. Tiyaking malalakas na password ang gagawin mo. <ph name="BEGIN_LINK" />Tumingin pa ng mga tip sa seguridad.<ph name="END_LINK" /></translation>
 <translation id="73786666777299047">Buksan ang Chrome Web Store</translation>
 <translation id="7378812711085314936">Kumuha ng koneksyon ng data</translation>
 <translation id="7380622428988553498">Naglalaman ng mga invalid na character ang pangalan ng device</translation>
@@ -5924,6 +5936,7 @@
 <translation id="7959074893852789871">Naglaman ang file ng maramihang certificate, ilan sa mga ito ang na-import:</translation>
 <translation id="7961015016161918242">Hindi Kailanman</translation>
 <translation id="7963001036288347286">Pag-accelerate ng touchpad</translation>
+<translation id="7963608432878156675">Nakikita ang pangalang ito sa iba pang device para sa Bluetooth at mga koneksyon ng network</translation>
 <translation id="7963826112438303517">Ginagamit ng iyong Assistant ang mga recording na ito at ang mga binigkas mong kahilingan para gawin at i-update ang iyong voice model, na naka-store lang sa mga device kung saan mo na-on ang Voice Match. Tingnan o muling sanayin ang aktibidad ng boses sa Mga Setting ng Assistant.</translation>
 <translation id="7966241909927244760">K&amp;opyahin ang Address ng Larawan</translation>
 <translation id="7966571622054096916">{COUNT,plural, =1{1 item sa listahan ng bookmark}one{{COUNT} item sa listahan ng bookmark}other{{COUNT} na item sa listahan ng bookmark}}</translation>
@@ -6389,6 +6402,7 @@
 <translation id="850875081535031620">Walang nahanap na mapaminsalang software</translation>
 <translation id="8509177919508253835">I-reset ang mga security key at gumawa ng mga PIN</translation>
 <translation id="8509646642152301857">Nabigo ang pag-download ng diksyunaryo ng pang-check ng pagbabaybay.</translation>
+<translation id="8512396579636492893">{COUNT,plural, =0{Walang nakitang mahinang password}=1{Nakakita ng {COUNT} mahinang password}one{Nakakita ng {COUNT} mahihinang password}other{Nakakita ng {COUNT} na mahihinang password}}</translation>
 <translation id="8512476990829870887">Tapusin ang Proseso</translation>
 <translation id="851263357009351303">Palaging hayaan ang <ph name="HOST" /> na magpakita ng mga larawan</translation>
 <translation id="8513108775083588393">I-auto rotate</translation>
diff --git a/chrome/app/resources/generated_resources_fr-CA.xtb b/chrome/app/resources/generated_resources_fr-CA.xtb
index 7edaa8c..3ef865a 100644
--- a/chrome/app/resources/generated_resources_fr-CA.xtb
+++ b/chrome/app/resources/generated_resources_fr-CA.xtb
@@ -928,6 +928,7 @@
 <translation id="204914487372604757">Créer un raccourci</translation>
 <translation id="2050339315714019657">Portrait</translation>
 <translation id="2053312383184521053">Données sur l'état de veille</translation>
+<translation id="2054665754582400095">Votre présence</translation>
 <translation id="2055585478631012616">Vous serez déconnecté de ces sites, y compris dans les onglets ouverts</translation>
 <translation id="205560151218727633">Logo de l'Assistant Google</translation>
 <translation id="2058456167109518507">Appareil détecté</translation>
@@ -1214,6 +1215,7 @@
 <translation id="2387052489799050037">Retour à la page d'accueil</translation>
 <translation id="2387458720915042159">Type de connexion de mandataire</translation>
 <translation id="2390347491606624519">Impossible de se connecter au mandataire, veuillez vous connecter de nouveau</translation>
+<translation id="2390782873446084770">Synchronisation Wi-Fi</translation>
 <translation id="2391082728065870591">Envoyer un rapport de commentaires</translation>
 <translation id="2391419135980381625">Police standard</translation>
 <translation id="2392163307141705938">Tu as atteint la durée autorisée par ton parent pour <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
@@ -1871,6 +1873,7 @@
 <translation id="3157931365184549694">Restaurer</translation>
 <translation id="3158033540161634471">Configurer votre empreinte digitale</translation>
 <translation id="3159493096109238499">Beige</translation>
+<translation id="3159978855457658359">Modifier le nom de l'appareil</translation>
 <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (intégré au matériel)</translation>
 <translation id="3161522574479303604">Toutes les langues</translation>
 <translation id="3162853326462195145">Compte scolaire</translation>
@@ -3231,6 +3234,7 @@
 <translation id="4761104368405085019">Utiliser votre microphone</translation>
 <translation id="4762718786438001384">Vous n'avez presque plus d'espace disque sur votre appareil</translation>
 <translation id="4763408175235639573">Les témoins suivants ont été définis lorsque vous avez consulté cette page</translation>
+<translation id="4764368918650455114">Assurez-vous que les deux appareils sont déverrouillés, à proximité l'un de l'autre, et que le Bluetooth est activé. Si vous effectuez le partage avec un Chromebook, assurez-vous que le partage à proximité est activé sur celui-ci (ouvrez la zone de notifications en sélectionnant l'heure, puis en sélectionnant l'option Partage à proximité). <ph name="LINK_BEGIN" />En savoir plus<ph name="LINK_END" /></translation>
 <translation id="4765582662863429759">Autorise Android Messages à rediriger des messages texte de votre téléphone à votre Chromebook</translation>
 <translation id="476598255842811483">Personne, sauf si vous ouvrez le partage à proximité sur votre appareil</translation>
 <translation id="4768332406694066911">Vous avez des certificats provenant de ces organisations qui vous identifient</translation>
@@ -3393,6 +3397,7 @@
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> – <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Cette application a été installée par votre administrateur.</translation>
 <translation id="4964455510556214366">Organisation</translation>
+<translation id="496446150016900060">Synchroniser les réseaux Wi-Fi avec votre téléphone</translation>
 <translation id="4965808351167763748">Voulez-vous vraiment configurer cet appareil pour exécuter Hangouts Meet?</translation>
 <translation id="496888482094675990">L'application Fichiers permet d'accéder rapidement aux fichiers que vous avez enregistrés sur Google Disque, vos appareils de stockage externe ou votre appareil Chrome OS.</translation>
 <translation id="4971412780836297815">Ouvrir à la fin</translation>
@@ -3699,6 +3704,7 @@
 <translation id="5341980496415249280">Veuillez patienter, emballage en cours…</translation>
 <translation id="5342091991439452114">Le NIP doit comporter au moins <ph name="MINIMUM" /> chiffres</translation>
 <translation id="5344036115151554031">Restauration de Linux en cours…</translation>
+<translation id="5345916423802287046">Démarrer l'application lorsque vous vous connectez</translation>
 <translation id="5350293332385664455">Désactiver l'Assistant Google</translation>
 <translation id="535123479159372765">Texte copié à partir d'un autre appareil</translation>
 <translation id="5352033265844765294">Horodatage</translation>
@@ -4008,6 +4014,7 @@
 <translation id="5704875434923668958">Synchronisation avec</translation>
 <translation id="5705005699929844214">Toujours afficher les options d'accessibilité</translation>
 <translation id="5705882733397021510">Revenir en arrière</translation>
+<translation id="5707117624115653804">Personnalisez la taille et le style des sous-titres pour les applications et les sites qui prennent en charge ce paramètre</translation>
 <translation id="5707185214361380026">Échec du chargement de l'extension de :</translation>
 <translation id="5708171344853220004">Nom Microsoft principal</translation>
 <translation id="5709557627224531708">Définir Chrome comme navigateur par défaut</translation>
@@ -4171,6 +4178,7 @@
 <translation id="5904614460720589786">Impossible de configurer <ph name="APP_NAME" /> en raison d'une erreur de configuration. Veuillez communiquer avec votre administrateur. Code d'erreur : <ph name="ERROR_CODE" />.</translation>
 <translation id="5906655207909574370">La mise à jour est presque terminée! Pour la compléter, veuillez redémarrer votre appareil.</translation>
 <translation id="5906732635754427568">Les données associées à cette application seront supprimées de cet appareil.</translation>
+<translation id="5908474332780919512">Démarrer l'application lorsque vous vous connectez</translation>
 <translation id="5908695239556627796">Vitesse de défilement de la souris</translation>
 <translation id="5908769186679515905">Bloquer l'exécution de Flash par les sites</translation>
 <translation id="5910363049092958439">En&amp;registrer l'image sous...</translation>
@@ -4710,6 +4718,7 @@
 <translation id="6532527800157340614">Échec de la connexion dû à l'impossibilité de récupérer votre jeton d'accès. Veuillez vérifier votre connexion réseau et réessayer.</translation>
 <translation id="6532663472409656417">Inscrit à une entreprise</translation>
 <translation id="6535331821390304775">Toujours autoriser <ph name="ORIGIN" /> à ouvrir les liens de ce type dans l'application connexe</translation>
+<translation id="6537613839935722475">Le nom peut comprendre des lettres, des chiffres et des traits d'union (=)</translation>
 <translation id="6538635548667167211">Le paramètre actuel d'utilisation de données est Données</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />Remarque<ph name="END_BOLD" /> : n'activez cette option que si vous êtes sûr de ce que vous faites ou si vous avez été invité à le faire. En effet, la collecte de données est susceptible de diminuer les performances.</translation>
 <translation id="6541638731489116978">Ce site a été bloqué : il ne peut pas accéder à vos capteurs de mouvement.</translation>
@@ -4798,6 +4807,7 @@
 <translation id="6650234781371031356">Votre mot de passe pour <ph name="WEBSITE" /> est stocké sur cet appareil et dans votre compte Google. Lequel souhaitez-vous supprimer?</translation>
 <translation id="665061930738760572">Ouvrir dans une &amp;nouvelle fenêtre</translation>
 <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="6654509035557065241">Choisir ce réseau par défaut</translation>
 <translation id="6655190889273724601">Mode développeur</translation>
@@ -5401,6 +5411,7 @@
 <translation id="7375235221357833624">{0,plural, =1{Mettre à jour l'appareil d'ici une heure}one{Mettre à jour l'appareil d'ici # heure}other{Mettre à jour l'appareil d'ici # heures}}</translation>
 <translation id="7376553024552204454">Mettre le curseur de la souris en surbrillance lorsque vous le déplacez</translation>
 <translation id="7377451353532943397">Continuer de bloquer l'accès aux capteurs</translation>
+<translation id="7378611153938412599">Les mots de passe faibles sont faciles à deviner. Assurez-vous de créer des mots de passe forts. <ph name="BEGIN_LINK" />Consultez plus d'astuces de sécurité.<ph name="END_LINK" /></translation>
 <translation id="73786666777299047">Ouvrir la boutique en ligne Chrome Web Store</translation>
 <translation id="7378812711085314936">Créer une connexion de données</translation>
 <translation id="7380622428988553498">Le nom de l'appareil contient des caractères incorrects</translation>
@@ -5925,6 +5936,7 @@
 <translation id="7959074893852789871">Le fichier contenait plusieurs certificats, dont certains n'ont pas été importés :</translation>
 <translation id="7961015016161918242">Jamais</translation>
 <translation id="7963001036288347286">Accélération du pavé tactile</translation>
+<translation id="7963608432878156675">Ce nom est visible pour d'autres appareils lors des connexions Bluetooth et réseau</translation>
 <translation id="7963826112438303517">L'Assistant Google utilise ces enregistrements et vos commandes vocales pour créer et actualiser le modèle de votre voix, qui est stocké uniquement sur les appareils sur lesquels vous avez activé la fonction Voice Match. Vous pouvez la réenregistrer ou afficher votre activité vocale dans les paramètres de l'Assistant Google.</translation>
 <translation id="7966241909927244760">C&amp;opier l'adresse de l'image</translation>
 <translation id="7966571622054096916">{COUNT,plural, =1{1 élément dans la liste des favoris}one{{COUNT} élément dans la liste des favoris}other{{COUNT} éléments dans la liste des favoris}}</translation>
@@ -6388,6 +6400,7 @@
 <translation id="850875081535031620">Aucun logiciel nuisible trouvé</translation>
 <translation id="8509177919508253835">Réinitialiser les clés de sécurité et les NIP</translation>
 <translation id="8509646642152301857">Le téléchargement du dictionnaire de vérification orthographique a échoué.</translation>
+<translation id="8512396579636492893">{COUNT,plural, =0{Aucun mot de passe faible trouvé}=1{{COUNT} mot de passe faible trouvé}one{{COUNT} mot de passe faible trouvé}other{{COUNT} mots de passe faibles trouvés}}</translation>
 <translation id="8512476990829870887">Arrêter le processus</translation>
 <translation id="851263357009351303">Toujours autoriser <ph name="HOST" /> à afficher les images</translation>
 <translation id="8513108775083588393">Rotation auto</translation>
diff --git a/chrome/app/resources/generated_resources_hi.xtb b/chrome/app/resources/generated_resources_hi.xtb
index 209a640..739984d 100644
--- a/chrome/app/resources/generated_resources_hi.xtb
+++ b/chrome/app/resources/generated_resources_hi.xtb
@@ -17,6 +17,7 @@
 <translation id="1012794136286421601">आपके दस्तावेज़, शीट, स्लाइड, और ड्रॉइंग फ़ाइलें सिंक की जा रही हैं. उन्हें ऑनलाइन या ऑफ़लाइन एक्सेस करने के लिए Google डिस्क ऐप्लिकेशन खोलें.</translation>
 <translation id="1012876632442809908">USB-C डिवाइस (सामने वाला पोर्ट)</translation>
 <translation id="1013707859758800957">एक सैंडबॉक्‍स नहीं किए गए प्‍लग इन को इस पृष्‍ठ पर चलने दिया गया था.</translation>
+<translation id="1015041505466489552">TrackPoint</translation>
 <translation id="1015318665228971643">फ़ोल्डर के नाम में बदलाव करें</translation>
 <translation id="1015578595646638936">{NUM_DAYS,plural, =1{<ph name="DEVICE_TYPE" /> को अपडेट करने का आखिरी दिन}one{<ph name="DEVICE_TYPE" /> को {NUM_DAYS} दिन में अपडेट करें}other{<ph name="DEVICE_TYPE" /> को {NUM_DAYS} दिनों में अपडेट करें}}</translation>
 <translation id="1016566241875885511">अतिरिक्त जानकारी (वैकल्पिक)</translation>
@@ -928,6 +929,7 @@
 <translation id="204914487372604757">शॉर्टकट बनाएं</translation>
 <translation id="2050339315714019657">पोर्ट्रेट</translation>
 <translation id="2053312383184521053">निष्क्रिय स्थिति डेटा</translation>
+<translation id="2054665754582400095">आपकी मौजूदगी</translation>
 <translation id="2055585478631012616">आपको इन साइटों और खुले हुए टैब से साइन आउट कर दिया जाएगा</translation>
 <translation id="205560151218727633">Google Assistant लोगो</translation>
 <translation id="2058456167109518507">डिवाइस की पहचान हुई</translation>
@@ -1214,6 +1216,7 @@
 <translation id="2387052489799050037">होम पेज पर जाएं</translation>
 <translation id="2387458720915042159">प्रॉक्सी कनेक्शन प्रकार</translation>
 <translation id="2390347491606624519">प्रॉक्सी से कनेक्ट नहीं किया जा सकता, कृपया फिर से साइन इन करें</translation>
+<translation id="2390782873446084770">वाई-फ़ाई सिंक</translation>
 <translation id="2391082728065870591">सुझाव, शिकायत या राय की रिपोर्ट भेजें</translation>
 <translation id="2391419135980381625">मानक फ़ॉन्ट</translation>
 <translation id="2392163307141705938">आप उस समयसीमा तक पहुंच गए हैं जो आपके माता-पिता ने <ph name="IDS_SHORT_PRODUCT_NAME" /> के लिए तय की थी.</translation>
@@ -1870,6 +1873,7 @@
 <translation id="3157931365184549694">वापस लाएं</translation>
 <translation id="3158033540161634471">अपना फ़िंगरप्रिंट सेट अप करें</translation>
 <translation id="3159493096109238499">मटमैला</translation>
+<translation id="3159978855457658359">डिवाइस के नाम में बदलाव करें</translation>
 <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (हार्डवेयर समर्थित)</translation>
 <translation id="3161522574479303604">सभी भाषाएं</translation>
 <translation id="3162853326462195145">स्कूल वाला खाता</translation>
@@ -3229,6 +3233,7 @@
 <translation id="4761104368405085019">अपना माइक्रोफ़ोन उपयोग करें</translation>
 <translation id="4762718786438001384">डिवाइस के डिस्क में बहुत कम स्पेस है</translation>
 <translation id="4763408175235639573">जब आपने इस पेज को देखा था, तब इन कुकी को सेट किया गया था</translation>
+<translation id="4764368918650455114">पक्का करें कि दोनों डिवाइस को अनलॉक किया गया हो और ये एक-दूसरे के पास रखे हों. साथ ही, ब्लूटूथ चालू हो. अगर आप किसी Chromebook के साथ फ़ाइलें शेयर कर रहे हैं, तो पक्का करें कि उसमें, आस-पास शेयर करने की सुविधा चालू हो (समय चुनकर, स्टेटस बताने वाली जगह खोलें और फिर आस-पास शेयर करने की सुविधा चुनें). <ph name="LINK_BEGIN" />ज़्यादा जानें<ph name="LINK_END" /></translation>
 <translation id="4765582662863429759">Android मैसेज को अपने Chromebook से अपने फ़ोन पर लेख भेजने की मंज़ूरी दें</translation>
 <translation id="476598255842811483">जब तक आप आस-पास शेयर करने की सुविधा चालू नहीं करते, तब तक कोई भी आपके डिवाइस के साथ फ़ाइलें शेयर नहीं कर सकता</translation>
 <translation id="4768332406694066911">आपके पास इन संगठनों के प्रमाणपत्र हैं जो आपकी पहचान करते हैं</translation>
@@ -3391,6 +3396,7 @@
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">इस ऐप्लिकेशन को आपके एडमिन ने इंस्टॉल किया है.</translation>
 <translation id="4964455510556214366">व्यवस्था</translation>
+<translation id="496446150016900060">वाई-फ़ाई नेटवर्क को अपने फ़ोन के साथ सिंक करें</translation>
 <translation id="4965808351167763748">क्या आप वाकई Hangouts Meet चलाने के लिए इस डिवाइस को सेट अप करना चाहते हैं?</translation>
 <translation id="496888482094675990">Files ऐप्लिकेशन उन फ़ाइलों के लिए तुरंत एक्सेस देता है जिन्हें आपने Google डिस्क, बाहरी मेमोरी, या अपने Chrome OS डिवाइस पर सेव किया है।</translation>
 <translation id="4971412780836297815">पू्र्ण होने पर खोलें</translation>
@@ -3697,6 +3703,7 @@
 <translation id="5341980496415249280">कृपया इंतज़ार करें, पैक किया जा रहा है...</translation>
 <translation id="5342091991439452114">पिन कम से कम <ph name="MINIMUM" /> अंकों का होना चाहिए</translation>
 <translation id="5344036115151554031">Linux को पहले जैसा किया जा रहा है</translation>
+<translation id="5345916423802287046">साइन इन करने पर ऐप्लिकेशन खोलें</translation>
 <translation id="5350293332385664455">Google Assistant बंद करें</translation>
 <translation id="535123479159372765">दूसरे डिवाइस से टेक्स्ट कॉपी किया गया</translation>
 <translation id="5352033265844765294">समय स्टैंपिंग</translation>
@@ -4006,6 +4013,7 @@
 <translation id="5704875434923668958">इससे सिंक हो रहा है:</translation>
 <translation id="5705005699929844214">सुलभता के विकल्प हमेशा दिखाएं</translation>
 <translation id="5705882733397021510">वापस जाएं</translation>
+<translation id="5707117624115653804">इस सेटिंग के साथ काम करने वाले ऐप्लिकेशन और साइटों के लिए, कैप्शन के साइज़ और स्टाइल को पसंद के मुताबिक बनाएं</translation>
 <translation id="5707185214361380026">इससे एक्सटेंशन लोड करने में विफल:</translation>
 <translation id="5708171344853220004">Microsoft Principal Name</translation>
 <translation id="5709557627224531708">Chrome को अपने डिफ़ॉल्ट ब्राउज़र के तौर पर सेट करें</translation>
@@ -4169,6 +4177,7 @@
 <translation id="5904614460720589786">कॉन्फ़िगर करते समय हुई गड़बड़ी की वजह से <ph name="APP_NAME" /> को सेट अप नहीं किया जा सका. कृपया अपने एडमिन से संपर्क करें. गड़बड़ी कोड: <ph name="ERROR_CODE" />.</translation>
 <translation id="5906655207909574370">करीब अप टू डेट हो गया है! अपडेट करना पूरा करने के लिए अपना डिवाइस फिर से प्रारंभ करें.</translation>
 <translation id="5906732635754427568">इस ऐप्लिकेशन से जुड़े डेटा को इस डिवाइस से हटा दिया जाएगा.</translation>
+<translation id="5908474332780919512">साइन इन करने पर ऐप्लिकेशन खोलें</translation>
 <translation id="5908695239556627796">माउस से स्क्रोल करने की रफ़्तार</translation>
 <translation id="5908769186679515905">साइट को Flash चलाने से रोकें</translation>
 <translation id="5910363049092958439">इमेज को इस रूप में सेव करें...</translation>
@@ -4708,6 +4717,7 @@
 <translation id="6532527800157340614">आपका ऐक्सेस टोकन नहीं मिल पाने की वजह से साइन-इन नहीं किया जा सका. कृपया अपना नेटवर्क कनेक्शन जांचें और फिर से कोशिश करें.</translation>
 <translation id="6532663472409656417">एंटरप्राइज़ दर्ज किया गया है</translation>
 <translation id="6535331821390304775">इस तरह के लिंक को उनसे जुड़े ऐप्लिकेशन में खोलने के लिए, हमेशा <ph name="ORIGIN" /> का इस्तेमाल करें</translation>
+<translation id="6537613839935722475">नाम में अक्षर, अंक, और हाइफ़न (-) शामिल हो सकते हैं</translation>
 <translation id="6538635548667167211">मौजूदा डेटा खर्च सेटिंग के लिए, मोबाइल का डेटा इस्तेमाल होगा</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />ध्यान दें:<ph name="END_BOLD" /> सिर्फ़ तभी चालू करें जब आपको पता हो कि आप क्या कर रहे हैं या अगर आप से ऐसा करने के लिए कहा गया हो, क्योंकि डेटा के संग्रह से परफ़ॉर्मेंस में कमी आ सकती है.</translation>
 <translation id="6541638731489116978">इस साइट को आपके हलचल पकड़ने वाले सेंसर ऐक्सेस करने से रोक दिया गया है.</translation>
@@ -4796,6 +4806,7 @@
 <translation id="6650234781371031356"><ph name="WEBSITE" /> के लिए आपका पासवर्ड इस डिवाइस और आपके Google खाते में सेव हो गया है. आप इनमें से किसे मिटाना चाहते हैं?</translation>
 <translation id="665061930738760572">&amp;नई विंडो में खोलें</translation>
 <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="6654509035557065241">नेटवर्क चुनें</translation>
 <translation id="6655190889273724601">डेवलपर मोड</translation>
@@ -5399,6 +5410,7 @@
 <translation id="7375235221357833624">{0,plural, =1{1 घंटे के अंदर डिवाइस अपडेट करें}one{# घंटे के अंदर डिवाइस अपडेट करें}other{# घंटे के अंदर डिवाइस अपडेट करें}}</translation>
 <translation id="7376553024552204454">माउस कर्सर के हिलने पर उसे हाइलाइट करें</translation>
 <translation id="7377451353532943397">सेंसर का ऐक्सेस ब्लॉक करते रहें</translation>
+<translation id="7378611153938412599">कमज़ोर पासवर्ड का अंदाज़ा लगाना आसान होता है. पक्का करें कि आप मज़बूत पासवर्ड बना रहे हैं. <ph name="BEGIN_LINK" />सुरक्षा से जुड़ी और सलाह देखें.<ph name="END_LINK" /></translation>
 <translation id="73786666777299047">Chrome वेब स्टोर खोलें</translation>
 <translation id="7378812711085314936">डेटा कनेक्शन पाएं</translation>
 <translation id="7380622428988553498">डिवाइस के नाम में अमान्य वर्ण हैं</translation>
@@ -5922,6 +5934,7 @@
 <translation id="7959074893852789871">फ़ाइल में एकाधिक प्रमाणपत्र थे, जिनमें से कुछ को आयात नहीं किया गया था:</translation>
 <translation id="7961015016161918242">कभी नहीं</translation>
 <translation id="7963001036288347286">टचपैड की रफ़्तार</translation>
+<translation id="7963608432878156675">यह नाम अन्य डिवाइस को दिखता है, ताकि ब्लूटूथ और इंटरनेट से कनेक्ट किया जा सके</translation>
 <translation id="7963826112438303517">आपकी Assistant आपकी आवाज़ का नमूना बनाने और उसे अपडेट करने के लिए, इन रिकॉर्डिंग के साथ ही आपके बोले गए अनुरोधों का इस्तेमाल करती है. आवाज़ का नमूना सिर्फ़ उन डिवाइस पर सेव किया जाता है जहां आपने Voice Match को चालू किया हुआ है. Assistant की सेटिंग में जाकर आवाज़ की गतिविधि देखें या उसे फिर से आवाज़ पहचानना सिखाएं.</translation>
 <translation id="7966241909927244760">इमेज के पते को कॉपी करें</translation>
 <translation id="7966571622054096916">{COUNT,plural, =1{बुकमार्क सूची में 1 आइटम है}one{बुकमार्क सूची में {COUNT} आइटम है}other{बुकमार्क सूची में {COUNT} आइटम हैं}}</translation>
@@ -6386,6 +6399,7 @@
 <translation id="850875081535031620">नुकसान पहुंचाने वाला कोई सॉफ़्टवेयर नहीं मिला</translation>
 <translation id="8509177919508253835">सुरक्षा कुंजी रीसेट करें और पिन बनाएं</translation>
 <translation id="8509646642152301857">वर्तनी जाँच शब्दकोश डाउनलोड नहीं हो सका.</translation>
+<translation id="8512396579636492893">{COUNT,plural, =0{कोई कमज़ोर पासवर्ड नहीं मिला}=1{{COUNT} कमज़ोर पासवर्ड मिला}one{{COUNT} कमज़ोर पासवर्ड मिला}other{{COUNT} कमज़ोर पासवर्ड मिले}}</translation>
 <translation id="8512476990829870887">प्रक्रिया खत्म करें</translation>
 <translation id="851263357009351303"><ph name="HOST" /> को हमेशा चित्र दिखाने की अनुमति दें</translation>
 <translation id="8513108775083588393">ऑटो-रोटेट</translation>
diff --git a/chrome/app/resources/generated_resources_hu.xtb b/chrome/app/resources/generated_resources_hu.xtb
index dd48488..fa60781 100644
--- a/chrome/app/resources/generated_resources_hu.xtb
+++ b/chrome/app/resources/generated_resources_hu.xtb
@@ -928,6 +928,7 @@
 <translation id="204914487372604757">Parancsikon létrehozása</translation>
 <translation id="2050339315714019657">Álló</translation>
 <translation id="2053312383184521053">Tétlen állapot adatai</translation>
+<translation id="2054665754582400095">Felhasználói jelenlét</translation>
 <translation id="2055585478631012616">A rendszer kijelentkezteti ezekről a webhelyekről (a megnyitott lapok esetében is)</translation>
 <translation id="205560151218727633">A Google Segéd logója</translation>
 <translation id="2058456167109518507">Eszköz észlelve</translation>
@@ -1214,6 +1215,7 @@
 <translation id="2387052489799050037">Ugrás a kezdőképernyőre</translation>
 <translation id="2387458720915042159">Proxykapcsolat típusa</translation>
 <translation id="2390347491606624519">Nem lehet csatlakozni a proxyhoz, jelentkezzen be újra</translation>
+<translation id="2390782873446084770">Wi-Fi szinkronizálása</translation>
 <translation id="2391082728065870591">Visszajelzési jelentés küldése</translation>
 <translation id="2391419135980381625">Alapértelmezett betűtípus</translation>
 <translation id="2392163307141705938">Elérted az időkorlátot, amelyet szülőd állított be a következőhöz: <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
@@ -1870,6 +1872,7 @@
 <translation id="3157931365184549694">Helyreállítás</translation>
 <translation id="3158033540161634471">Az ujjlenyomat beállítása</translation>
 <translation id="3159493096109238499">Bézs</translation>
+<translation id="3159978855457658359">Eszköznév szerkesztése</translation>
 <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (hardverrel támogatott)</translation>
 <translation id="3161522574479303604">Minden nyelv</translation>
 <translation id="3162853326462195145">Iskolai fiók</translation>
@@ -3229,6 +3232,7 @@
 <translation id="4761104368405085019">Mikrofon használata</translation>
 <translation id="4762718786438001384">Az eszköz lemezterülete nagyon kevés</translation>
 <translation id="4763408175235639573">A következő cookie-k beállítása akkor történt, amikor Ön megtekintette ezt az oldalt</translation>
+<translation id="4764368918650455114">Győződjön meg arról, hogy mindkét eszköz fel van oldva, közel vannak egymáshoz, és be van rajtuk kapcsolva a Bluetooth. Ha Chromebookkal oszt meg tartalmat, ellenőrizze, hogy a Közeli megosztás be van-e kapcsolva rajta (az időpont kijelölésével nyissa meg az állapotsort, majd válassza a Közeli megosztás funkciót). <ph name="LINK_BEGIN" />További információ<ph name="LINK_END" />.</translation>
 <translation id="4765582662863429759">Lehetővé teszi az Android Messages számára, hogy SMS-eket küldjön át a telefonról a Chromebookra</translation>
 <translation id="476598255842811483">Senki, ameddig Ön meg nem nyitja eszközén a Közeli megosztást</translation>
 <translation id="4768332406694066911">Ezektől a szervezetektől olyan tanúsítványai vannak, amelyek azonosítják</translation>
@@ -3391,6 +3395,7 @@
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> – <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Ezt az alkalmazást az Ön adminisztrátora telepítette.</translation>
 <translation id="4964455510556214366">Elrendezés</translation>
+<translation id="496446150016900060">Wi-Fi-hálózatok szinkronizálása a telefonjával</translation>
 <translation id="4965808351167763748">Biztosan beállítja ezt az eszközt a Hangouts Meet futtatására?</translation>
 <translation id="496888482094675990">A Fájlok alkalmazás gyors hozzáférést kínál a Google Drive-on, külső tárolón vagy a Chrome OS-eszközön elmentett fájlokhoz.</translation>
 <translation id="4971412780836297815">Megnyitás, amikor kész</translation>
@@ -3698,6 +3703,7 @@
 <translation id="5341980496415249280">Kérjük, várjon, a csomagolás folyamatban van…</translation>
 <translation id="5342091991439452114">A PIN-kódnak legalább <ph name="MINIMUM" /> számjegyűnek kell lennie</translation>
 <translation id="5344036115151554031">A Linux rendszer visszaállítása folyamatban van</translation>
+<translation id="5345916423802287046">Alkalmazás indítása bejelentkezéskor</translation>
 <translation id="5350293332385664455">A Google Segéd kikapcsolása</translation>
 <translation id="535123479159372765">Szöveg vágólapra másolva másik eszközről</translation>
 <translation id="5352033265844765294">Időbélyegzés</translation>
@@ -4008,6 +4014,7 @@
 <translation id="5704875434923668958">Szinkronizálás a következővel:</translation>
 <translation id="5705005699929844214">Mindig mutassa a kisegítő lehetőségeket</translation>
 <translation id="5705882733397021510">Visszalépés</translation>
+<translation id="5707117624115653804">Személyre szabhatja a felirat méretét és stílusát azokban az alkalmazásokban és webhelyeken, amelyek támogatják ezt a beállítást.</translation>
 <translation id="5707185214361380026">Nem sikerült a bővítmény betöltése innen:</translation>
 <translation id="5708171344853220004">Microsoft elsődleges név</translation>
 <translation id="5709557627224531708">A Chrome beállítása alapértelmezett böngészőként</translation>
@@ -4171,6 +4178,7 @@
 <translation id="5904614460720589786">A(z) <ph name="APP_NAME" /> beállítása konfigurációs probléma miatt nem sikerült. Forduljon a rendszergazdájához. Hibakód: <ph name="ERROR_CODE" />.</translation>
 <translation id="5906655207909574370">Már majdnem naprakész! Indítsa újra az eszközt a frissítés befejezéséhez.</translation>
 <translation id="5906732635754427568">Az alkalmazáshoz kapcsolódó adatok törlődnek erről az eszközről.</translation>
+<translation id="5908474332780919512">Alkalmazás indítása bejelentkezéskor</translation>
 <translation id="5908695239556627796">Egér görgetési sebessége</translation>
 <translation id="5908769186679515905">A Flash futtatásának tiltása a webhelyeken</translation>
 <translation id="5910363049092958439">Ké&amp;p mentése másként...</translation>
@@ -4710,6 +4718,7 @@
 <translation id="6532527800157340614">A bejelentkezés nem sikerült, mert nem lehetett lekérni a hozzáférési tokent. Ellenőrizze a hálózati kapcsolatot, és próbálja újra.</translation>
 <translation id="6532663472409656417">Vállalati regisztráció</translation>
 <translation id="6535331821390304775">Engedélyezze, hogy a(z) <ph name="ORIGIN" /> az ilyen típusú linkeket mindig a társított alkalmazással nyissa meg</translation>
+<translation id="6537613839935722475">A névben betűket, számokat és kötőjeleket (-) használhat</translation>
 <translation id="6538635548667167211">A jelenlegi adathasználati beállítás: Mobiladatok</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />Megjegyzés:<ph name="END_BOLD" /> csak akkor engedélyezze, ha tisztában van a következményekkel, vagy megkérték rá, mivel az adatok gyűjtése csökkentheti a teljesítményt.</translation>
 <translation id="6541638731489116978">Ennél a webhelynél le van tiltva a mozgásérzékelőkhöz való hozzáférés.</translation>
@@ -4798,6 +4807,7 @@
 <translation id="6650234781371031356">A(z) Ön <ph name="WEBSITE" /> webhelyhez tartozó jelszavát ez az eszköz és Google-fiókja is tárolja. Honnan szeretné törölni?</translation>
 <translation id="665061930738760572">Megnyitás új &amp;ablakban</translation>
 <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="6654509035557065241">Hálózat előnyben részesítése</translation>
 <translation id="6655190889273724601">Fejlesztői mód</translation>
@@ -5401,6 +5411,7 @@
 <translation id="7375235221357833624">{0,plural, =1{Egy órán belül frissítse az eszközt}other{# órán belül frissítse az eszközt}}</translation>
 <translation id="7376553024552204454">Az egérmutató kiemelése mozgás közben</translation>
 <translation id="7377451353532943397">Érzékelő-hozzáférés tiltásának fenntartása</translation>
+<translation id="7378611153938412599">A gyenge jelszavakat könnyű kitalálni. Figyeljen arra, hogy erős jelszavakat hozzon létre. <ph name="BEGIN_LINK" />Itt további biztonsági tippeket talál.<ph name="END_LINK" /></translation>
 <translation id="73786666777299047">A Chrome Internetes áruház megnyitása</translation>
 <translation id="7378812711085314936">Adatkapcsolat kérése</translation>
 <translation id="7380622428988553498">Az eszköznév érvénytelen karaktereket tartalmaz</translation>
@@ -5925,6 +5936,7 @@
 <translation id="7959074893852789871">A fájl több tanúsítványt tartalmazott, amelyek közül néhány nincs importálva:</translation>
 <translation id="7961015016161918242">Soha</translation>
 <translation id="7963001036288347286">Érintőpad gyorsítása</translation>
+<translation id="7963608432878156675">Ez a név látható a többi eszköz számára Bluetooth- és hálózati kapcsolatok esetén</translation>
 <translation id="7963826112438303517">Segédje ezeket a felvételeket és az Ön kimondott kéréseit használja a hangminta létrehozására és frissítésére. A hangmintát csak azokon az eszközökön tárolja a rendszer, amelyeken Ön bekapcsolta a Voice Match funkciót. Hangtevékenységeit a Segéd beállításai között tekintheti meg vagy taníthatja be újra.</translation>
 <translation id="7966241909927244760">Képcím más&amp;olása</translation>
 <translation id="7966571622054096916">{COUNT,plural, =1{1 elem a könyvjelzőlistában}other{{COUNT} elem a könyvjelzőlistában}}</translation>
@@ -6389,6 +6401,7 @@
 <translation id="850875081535031620">Nem találtunk kártékony szoftvereket</translation>
 <translation id="8509177919508253835">Biztonsági hardverkulcsok visszaállítása és PIN-kódok létrehozása</translation>
 <translation id="8509646642152301857">A helyesírás-ellenőrző szótár letöltése sikertelen volt.</translation>
+<translation id="8512396579636492893">{COUNT,plural, =0{Nem található gyenge jelszó}=1{{COUNT} gyenge jelszó található}other{{COUNT} gyenge jelszó található}}</translation>
 <translation id="8512476990829870887">Folyamat leállítása</translation>
 <translation id="851263357009351303"><ph name="HOST" /> mindig mutathasson képeket</translation>
 <translation id="8513108775083588393">Autom.forgatás</translation>
diff --git a/chrome/app/resources/generated_resources_hy.xtb b/chrome/app/resources/generated_resources_hy.xtb
index 2bc4c4e..cb54e49b 100644
--- a/chrome/app/resources/generated_resources_hy.xtb
+++ b/chrome/app/resources/generated_resources_hy.xtb
@@ -929,6 +929,7 @@
 <translation id="204914487372604757">Ստեղծել դյուրանցում</translation>
 <translation id="2050339315714019657">Ուղղաձիգ</translation>
 <translation id="2053312383184521053">Անգործուն վիճակի տվյալներ</translation>
+<translation id="2054665754582400095">Տվյալներ ձեր ներկայության մասին</translation>
 <translation id="2055585478631012616">Դուք դուրս կգրվեք հաշվից այս կայքերում և բաց ներդիրներում</translation>
 <translation id="205560151218727633">Google Օգնականի լոգո</translation>
 <translation id="2058456167109518507">Հայտնաբերվել է սարք</translation>
@@ -1215,6 +1216,7 @@
 <translation id="2387052489799050037">Անցնել Գլխավոր էջ</translation>
 <translation id="2387458720915042159">Միջնորդ սերվերի միացման տեսակը</translation>
 <translation id="2390347491606624519">Չհաջողվեց միանալ պրոքսի սերվերին։ Նորից մուտք գործեք։</translation>
+<translation id="2390782873446084770">Wi-Fi համաժամացում</translation>
 <translation id="2391082728065870591">Ուղարկել կարծիքների վերաբերյալ հաշվետվություն</translation>
 <translation id="2391419135980381625">Ստանդարտ տառատեսակ</translation>
 <translation id="2392163307141705938">Դուք սպառել եք ձեր ծնողի կողմից <ph name="IDS_SHORT_PRODUCT_NAME" />-ի համար սահմանված ժամանակը։</translation>
@@ -1871,6 +1873,7 @@
 <translation id="3157931365184549694">Վերականգնել</translation>
 <translation id="3158033540161634471">Մատնահետքի կարգավորում</translation>
 <translation id="3159493096109238499">Բեժ</translation>
+<translation id="3159978855457658359">Փոխել սարքի անվանումը</translation>
 <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (ապարատային աջակցում)</translation>
 <translation id="3161522574479303604">Բոլոր լեզուները</translation>
 <translation id="3162853326462195145">Ուսումնական հաշիվ</translation>
@@ -3231,6 +3234,7 @@
 <translation id="4761104368405085019">Օգտագործել խոսափողը</translation>
 <translation id="4762718786438001384">Սարքի սկավառակում տարածքը ծայրահեղ քիչ է</translation>
 <translation id="4763408175235639573">Այս էջը դիտելիս տեղակայվել են հետևյալ քուքիները</translation>
+<translation id="4764368918650455114">Համոզվեք, որ երկու սարքերն ապակողպված են, միմյանց մոտ են, և սարքերում միացված է Bluetooth-ը։ Chromebook սարքի հետ ֆայլերով կիսվելու դեպքում համոզվեք, որ այնտեղ միացված է «Փոխանակում մոտակա սարքերի հետ» գործառույթը (բացեք վիճակի տարածքը՝ սեղմելով ժամացույցի վրա, ապա ընտրեք «Փոխանակում մոտակա սարքերի հետ»)։ <ph name="LINK_BEGIN" />Իմանալ ավելին<ph name="LINK_END" /></translation>
 <translation id="4765582662863429759">Թույլ է տալիս Android Messages հավելվածին հեռարձակել ձեր հեռախոսի հաղորդագրությունները Chromebook-ին</translation>
 <translation id="476598255842811483">Ոչ ոք, քանի դեռ դուք չեք միացրել «Փոխանակում մոտակա սարքերի հետ» գործառույթը ձեր սարքում</translation>
 <translation id="4768332406694066911">Դուք այս կազմակերպություններից այնպիսի հավաստագրեր ունեք, որոնք ձեզ կարող են նույնականացնել</translation>
@@ -3394,6 +3398,7 @@
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> – <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Այս հավելվածը տեղադրել է ձեր ադմինիստրատորը։</translation>
 <translation id="4964455510556214366">Դասավորորություն</translation>
+<translation id="496446150016900060">Համաժամացնել Wi-Fi ցանցերը ձեր հեռախոսի հետ</translation>
 <translation id="4965808351167763748">Կարգավորե՞լ Hangouts Meet-ն այս սարքում</translation>
 <translation id="496888482094675990">«Ֆայլեր» ծրագիրն ապահովում է արագ մուտք դեպի ֆայլեր, որոնք դուք պահել եք Google Drive-ում, արտաքին հիշողությունում կամ ձեր Chrome OS սարքում:</translation>
 <translation id="4971412780836297815">Բացել ավարտվելուն պես</translation>
@@ -3702,6 +3707,7 @@
 <translation id="5341980496415249280">Սպասեք մինչ սեղմումն ավարտվի...</translation>
 <translation id="5342091991439452114">PIN կոդը պետք է առնվազն <ph name="MINIMUM" /> թիվ պարունակի</translation>
 <translation id="5344036115151554031">Լինուքսի վերականգնում</translation>
+<translation id="5345916423802287046">Գործարկել հավելվածը մուտք գործելիս</translation>
 <translation id="5350293332385664455">Անջատել Google Օգնականը</translation>
 <translation id="535123479159372765">Տեքստը պատճենվեց այլ սարքից</translation>
 <translation id="5352033265844765294">Ժամադրոշմ</translation>
@@ -4011,6 +4017,7 @@
 <translation id="5704875434923668958">Համաժամացում՝</translation>
 <translation id="5705005699929844214">Միշտ ցույց տալ հատուկ գործառույթները</translation>
 <translation id="5705882733397021510">Հետ</translation>
+<translation id="5707117624115653804">Անհատականացնել ենթագրերի չափսը և ոճը այն հավելվածների համար, որոնք աջակցում են այս գործառույթը</translation>
 <translation id="5707185214361380026">Չհաջողվեց բեռնել ընդլայնումը հետևյալից`</translation>
 <translation id="5708171344853220004">Microsoft-ի մասնակցի անունը</translation>
 <translation id="5709557627224531708">Դարձրեք Chrome-ը կանխադրված դիտարկիչ</translation>
@@ -4174,6 +4181,7 @@
 <translation id="5904614460720589786">Կազմաձևման խնդրի պատճառով չհաջողվեց կարգավորել <ph name="APP_NAME" /> հավելվածը։ Դիմեք ձեր ադմինիստրատորին։ Սխալի կոդը՝ <ph name="ERROR_CODE" />։</translation>
 <translation id="5906655207909574370">Գրեթե պատրաստ է: Վերագործարկեք սարքը` թարմացումն ավարտելու համար:</translation>
 <translation id="5906732635754427568">Այս հավելվածին առնչվող տվյալները կհեռացվեն այս սարքից:</translation>
+<translation id="5908474332780919512">Գործարկել հավելվածը մուտք գործելիս</translation>
 <translation id="5908695239556627796">Մկնիկով ոլորման արագությունը</translation>
 <translation id="5908769186679515905">Արգելել կայքերին աշխատեցնել Flash</translation>
 <translation id="5910363049092958439">Պա&amp;հել պատկերը որպես…</translation>
@@ -4713,6 +4721,7 @@
 <translation id="6532527800157340614">Չհաջողվեց մուտք գործել, քանի որ մուտքի թոքենի առբերումը ձախողվեց։ Ստուգեք կապը և նորից փորձեք։</translation>
 <translation id="6532663472409656417">Գրանցված է կորպորատիվ տիրույթում</translation>
 <translation id="6535331821390304775">Միշտ թույլատրել <ph name="ORIGIN" /> կայքին բացել նման տեսակի հղումները համապատասխան հավելվածում</translation>
+<translation id="6537613839935722475">Անվանման մեջ կարող են օգտագործվել տառեր, թվեր և գծիկներ (-)</translation>
 <translation id="6538635548667167211">Տվյալների փոխանցման ընթացիկ կարգավորումը՝ «Բջջային ինտերնետ»</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />Նշում.<ph name="END_BOLD" /> Այս գործառույթը միացնել միայն այն դեպքում, երբ գիտեք թե ինչ եք անում կամ, եթե ձեզ խնդրել են դա անել, քանի որ տվյալների հավաքումը կարող է նվազեցնել կատարողականությունը:</translation>
 <translation id="6541638731489116978">Այս կայքին արգելվել է օգտագործել շարժման տվիչները:</translation>
@@ -4801,6 +4810,7 @@
 <translation id="6650234781371031356"><ph name="WEBSITE" /> կայքի ձեր գաղտնաբառը պահվել է այս սարքում և ձեր Google հաշվում։ Ո՞րն եք ուզում ջնջել։</translation>
 <translation id="665061930738760572">Բացել &amp;նոր պատուհանում</translation>
 <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="6654509035557065241">Ցանցը դարձնել նախընտրած</translation>
 <translation id="6655190889273724601">Մշակողի ռեժիմ</translation>
@@ -5404,6 +5414,7 @@
 <translation id="7375235221357833624">{0,plural, =1{Թարմացրեք սարքը մեկ ժամվա ընթացքում}one{Թարմացրեք սարքը # ժամվա ընթացքում}other{Թարմացրեք սարքը # ժամվա ընթացքում}}</translation>
 <translation id="7376553024552204454">Ընդգծել մկնիկի նշորդը, երբ այն շարժվում է</translation>
 <translation id="7377451353532943397">Միշտ արգելել տվիչների օգտագործումը</translation>
+<translation id="7378611153938412599">Թույլ գաղտնաբառերը հեշտ է գուշակել։ Համոզվեք, որ հուսալի գաղտնաբառեր եք ստեղծում։ <ph name="BEGIN_LINK" />Դիտել հաշվի պաշտպանության այլ խորհուրդներ<ph name="END_LINK" /></translation>
 <translation id="73786666777299047">Բացել Chrome Web Store-ը</translation>
 <translation id="7378812711085314936">Միացեք բջջային ինտերնետին</translation>
 <translation id="7380622428988553498">Սարքի անունն անվավեր նիշեր է պարունակում</translation>
@@ -5927,6 +5938,7 @@
 <translation id="7959074893852789871">Ֆայլը մի քանի վկայագիր ունի, որոնցից մի քանիսը չեն ներմուծվել՝</translation>
 <translation id="7961015016161918242">Երբեք</translation>
 <translation id="7963001036288347286">Հպահարթակի արագացում</translation>
+<translation id="7963608432878156675">Այս անվանումը կցուցադրվի այլ սարքերում ցանցային և Bluetooth միացումների ժամանակ</translation>
 <translation id="7963826112438303517">Այս ձայնագրությունների և ձայնային հրահանգների հիման վրա Օգնականը ստեղծում և թարմացնում է ձեր ձայնի նմուշը, որը պահվում է միայն այն սարքերում, որտեղ միացված է Voice Match գործառույթը։ Օգնականի կարգավորումներում դուք կարող եք դիտել կամ թարմացնել ձայնային հրահանգները:</translation>
 <translation id="7966241909927244760">Պատճենել պատկերի հասցեն</translation>
 <translation id="7966571622054096916">{COUNT,plural, =1{1 տարր էջանիշների ցանկում}one{{COUNT} տարր էջանիշների ցանկում}other{{COUNT} տարր էջանիշների ցանկում}}</translation>
@@ -6390,6 +6402,7 @@
 <translation id="850875081535031620">Վնասաբեր ծրագրեր չեն գտնվել</translation>
 <translation id="8509177919508253835">Վերակայեք անվտանգության բանալիները և ստեղծեք PIN կոդեր</translation>
 <translation id="8509646642152301857">Ուղղագրության ստուգման բառացանկը չհաջողվեց ներբեռնել:</translation>
+<translation id="8512396579636492893">{COUNT,plural, =0{Թույլ գաղտնաբառեր չեն գտնվել}=1{Գտնվել է {COUNT} թույլ գաղտնաբառ}one{Գտնվել է {COUNT} թույլ գաղտնաբառ}other{Գտնվել է {COUNT} թույլ գաղտնաբառ}}</translation>
 <translation id="8512476990829870887">Ավարտել գործընթացը</translation>
 <translation id="851263357009351303">Միշտ թույլատրել <ph name="HOST" />-ին ցուցադրել պատկերները</translation>
 <translation id="8513108775083588393">Ինքնապտտում</translation>
diff --git a/chrome/app/resources/generated_resources_id.xtb b/chrome/app/resources/generated_resources_id.xtb
index 2c6fad4..fd4997b5 100644
--- a/chrome/app/resources/generated_resources_id.xtb
+++ b/chrome/app/resources/generated_resources_id.xtb
@@ -17,6 +17,7 @@
 <translation id="1012794136286421601">File Dokumen, Spreadsheet, Slide, dan Gambar Anda sedang disinkronkan. Buka aplikasi Google Drive untuk mengaksesnya secara offline atau online.</translation>
 <translation id="1012876632442809908">Perangkat USB-C (port depan)</translation>
 <translation id="1013707859758800957">Plugin yang dimasukkan kotak pasir diizinkan untuk dijalankan di halaman ini.</translation>
+<translation id="1015041505466489552">TrackPoint</translation>
 <translation id="1015318665228971643">Edit Nama Folder</translation>
 <translation id="1015578595646638936">{NUM_DAYS,plural, =1{Hari terakhir untuk mengupdate <ph name="DEVICE_TYPE" />}other{Update <ph name="DEVICE_TYPE" /> dalam {NUM_DAYS} hari}}</translation>
 <translation id="1016566241875885511">Info tambahan (opsional)</translation>
@@ -928,6 +929,7 @@
 <translation id="204914487372604757">Buat pintasan</translation>
 <translation id="2050339315714019657">Potret</translation>
 <translation id="2053312383184521053">Data Status Menganggur</translation>
+<translation id="2054665754582400095">Kehadiran Anda</translation>
 <translation id="2055585478631012616">Anda akan logout dari semua situs tersebut, termasuk di tab yang terbuka</translation>
 <translation id="205560151218727633">Logo Asisten Google</translation>
 <translation id="2058456167109518507">Perangkat terdeteksi</translation>
@@ -1214,6 +1216,7 @@
 <translation id="2387052489799050037">Ke Layar Utama</translation>
 <translation id="2387458720915042159">Jenis sambungan proxy</translation>
 <translation id="2390347491606624519">Tidak dapat terhubung ke proxy, harap login lagi</translation>
+<translation id="2390782873446084770">Wi-Fi Sync</translation>
 <translation id="2391082728065870591">Kirim Laporan Masukan</translation>
 <translation id="2391419135980381625">Font standar</translation>
 <translation id="2392163307141705938">Kamu sudah mencapai batas waktu yang ditetapkan orang tuamu untuk <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
@@ -1870,6 +1873,7 @@
 <translation id="3157931365184549694">Pulihkan</translation>
 <translation id="3158033540161634471">Siapkan sidik jari Anda</translation>
 <translation id="3159493096109238499">Beige</translation>
+<translation id="3159978855457658359">Edit nama perangkat</translation>
 <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (dilindungi hardware)</translation>
 <translation id="3161522574479303604">Semua bahasa</translation>
 <translation id="3162853326462195145">Akun sekolah</translation>
@@ -3230,6 +3234,7 @@
 <translation id="4761104368405085019">Menggunakan mikrofon Anda</translation>
 <translation id="4762718786438001384">Ruang disk perangkat hampir habis</translation>
 <translation id="4763408175235639573">Cookie berikut disetel saat Anda melihat halaman ini</translation>
+<translation id="4764368918650455114">Pastikan kedua perangkat tidak terkunci, berdekatan, serta mengaktifkan Bluetooth. Jika Anda berbagi dengan Chromebook, pastikan Chromebook mengaktifkan fitur Berbagi Langsung (buka area status dengan memilih waktu, lalu pilih Berbagi Langsung). <ph name="LINK_BEGIN" />Pelajari lebih lanjut<ph name="LINK_END" /></translation>
 <translation id="4765582662863429759">Mengizinkan Android Message mengirim teks dari ponsel Anda ke Chromebook Anda</translation>
 <translation id="476598255842811483">Tidak ada kecuali Anda membuka fitur Berbagi Langsung di perangkat Anda</translation>
 <translation id="4768332406694066911">Anda memiliki sertifikat dari organisasi ini yang mengenali Anda</translation>
@@ -3392,6 +3397,7 @@
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Aplikasi ini telah diinstal oleh administrator Anda.</translation>
 <translation id="4964455510556214366">Pengaturan</translation>
+<translation id="496446150016900060">Menyinkronkan jaringan Wi-Fi dengan ponsel</translation>
 <translation id="4965808351167763748">Yakin ingin menyiapkan perangkat ini untuk menjalankan Hangouts Meet?</translation>
 <translation id="496888482094675990">Aplikasi File memberikan akses cepat ke file yang telah Anda simpan di Google Drive, perangkat eksternal, atau perangkat Chrome OS.</translation>
 <translation id="4971412780836297815">Buka setelah selesai</translation>
@@ -3698,6 +3704,7 @@
 <translation id="5341980496415249280">Harap tunggu, sedang mengemas...</translation>
 <translation id="5342091991439452114">PIN minimal harus <ph name="MINIMUM" /> digit</translation>
 <translation id="5344036115151554031">Memulihkan Linux</translation>
+<translation id="5345916423802287046">Mulai aplikasi saat login</translation>
 <translation id="5350293332385664455">Nonaktifkan Asisten Google</translation>
 <translation id="535123479159372765">Teks disalin dari perangkat lain</translation>
 <translation id="5352033265844765294">Penyetempelan Waktu</translation>
@@ -4007,6 +4014,7 @@
 <translation id="5704875434923668958">Menyinkronkan ke</translation>
 <translation id="5705005699929844214">Selalu tampilkan opsi aksesibilitas</translation>
 <translation id="5705882733397021510">Kembali</translation>
+<translation id="5707117624115653804">Menyesuaikan ukuran dan gaya teks untuk aplikasi dan situs yang mendukung setelan ini</translation>
 <translation id="5707185214361380026">Gagal memuat ekstensi dari:</translation>
 <translation id="5708171344853220004">Microsoft Principal Name</translation>
 <translation id="5709557627224531708">Setel Chrome sebagai browser default Anda</translation>
@@ -4170,6 +4178,7 @@
 <translation id="5904614460720589786">Tidak dapat menyiapkan <ph name="APP_NAME" /> karena ada masalah konfigurasi. Harap hubungi administrator Anda. Kode error: <ph name="ERROR_CODE" />.</translation>
 <translation id="5906655207909574370">Hampir selesai diperbarui! Mulai ulang perangkat untuk menyelesaikan pembaruan.</translation>
 <translation id="5906732635754427568">Data yang dikaitkan dengan aplikasi ini akan dihapus dari perangkat ini.</translation>
+<translation id="5908474332780919512">Mulai Aplikasi Saat Login</translation>
 <translation id="5908695239556627796">Kecepatan scroll mouse</translation>
 <translation id="5908769186679515905">Blokir situs agar tidak menjalankan Flash</translation>
 <translation id="5910363049092958439">Sim&amp;pan Gambar Sebagai...</translation>
@@ -4709,6 +4718,7 @@
 <translation id="6532527800157340614">Login gagal karena token akses Anda tidak dapat diambil. Periksa koneksi jaringan Anda dan coba lagi.</translation>
 <translation id="6532663472409656417">Terdaftar sebagai Perusahaan</translation>
 <translation id="6535331821390304775">Selalu izinkan <ph name="ORIGIN" /> untuk membuka link jenis ini di aplikasi terkait</translation>
+<translation id="6537613839935722475">Nama dapat menggunakan huruf, angka, dan tanda hubung (-)</translation>
 <translation id="6538635548667167211">Setelan penggunaan data saat ini adalah Data seluler</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />Catatan:<ph name="END_BOLD" /> Hanya aktif jika Anda tahu sedang melakukan apa atau jika ditanyai untuk melakukan hal tersebut, karena koleksi data dapat mengurangi kinerja.</translation>
 <translation id="6541638731489116978">Situs ini telah diblokir agar tidak dapat mengakses sensor gerakan.</translation>
@@ -4797,6 +4807,7 @@
 <translation id="6650234781371031356">Sandi Anda untuk <ph name="WEBSITE" /> disimpan di perangkat ini dan Akun Google Anda. Mana yang ingin Anda hapus?</translation>
 <translation id="665061930738760572">Buka di &amp;Jendela Baru</translation>
 <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="6654509035557065241">Jadikan jaringan pilihan</translation>
 <translation id="6655190889273724601">Mode developer</translation>
@@ -5400,6 +5411,7 @@
 <translation id="7375235221357833624">{0,plural, =1{Update perangkat dalam 1 jam}other{Update perangkat dalam # jam}}</translation>
 <translation id="7376553024552204454">Sorot kursor mouse saat kursor berpindah</translation>
 <translation id="7377451353532943397">Terus blokir akses sensor</translation>
+<translation id="7378611153938412599">Sandi yang lemah mudah ditebak. Pastikan Anda membuat sandi yang kuat. <ph name="BEGIN_LINK" />Lihat tips keamanan lainnya<ph name="END_LINK" />.</translation>
 <translation id="73786666777299047">Buka Chrome Webstore</translation>
 <translation id="7378812711085314936">Dapatkan koneksi data</translation>
 <translation id="7380622428988553498">Nama perangkat berisi karakter yang tidak valid</translation>
@@ -5924,6 +5936,7 @@
 <translation id="7959074893852789871">File berisi beberapa sertifikat, beberapa di antaranya tidak diimpor.</translation>
 <translation id="7961015016161918242">Jangan pernah</translation>
 <translation id="7963001036288347286">Akselerasi touchpad</translation>
+<translation id="7963608432878156675">Nama ini akan terlihat oleh perangkat lainnya untuk Bluetooth dan koneksi jaringan</translation>
 <translation id="7963826112438303517">Asisten menggunakan rekaman ini dan permintaan lisan Anda untuk membuat dan memperbarui model suara Anda, yang disimpan hanya pada perangkat dengan Voice Match yang telah diaktifkan. Lihat atau latih ulang aktivitas suara di Setelan Asisten.</translation>
 <translation id="7966241909927244760">S&amp;alin Alamat Gambar</translation>
 <translation id="7966571622054096916">{COUNT,plural, =1{1 item di daftar bookmark}other{{COUNT} item di daftar bookmark}}</translation>
@@ -6388,6 +6401,7 @@
 <translation id="850875081535031620">Software berbahaya tidak ditemukan</translation>
 <translation id="8509177919508253835">Reset kunci keamanan dan buat PIN</translation>
 <translation id="8509646642152301857">Download kamus periksa ejaan gagal.</translation>
+<translation id="8512396579636492893">{COUNT,plural, =0{Tidak ditemukan sandi yang lemah}=1{{COUNT} sandi lemah ditemukan}other{{COUNT} sandi lemah ditemukan}}</translation>
 <translation id="8512476990829870887">Akhiri Proses</translation>
 <translation id="851263357009351303">Selalu izinkan <ph name="HOST" /> menampilkan gambar</translation>
 <translation id="8513108775083588393">Putar otomatis</translation>
diff --git a/chrome/app/resources/generated_resources_is.xtb b/chrome/app/resources/generated_resources_is.xtb
index ddff00b..8f082ba 100644
--- a/chrome/app/resources/generated_resources_is.xtb
+++ b/chrome/app/resources/generated_resources_is.xtb
@@ -928,6 +928,7 @@
 <translation id="204914487372604757">Búa til flýtileið</translation>
 <translation id="2050339315714019657">Skammsnið</translation>
 <translation id="2053312383184521053">Gögn aðgerðaleysis</translation>
+<translation id="2054665754582400095">Viðvera þín</translation>
 <translation id="2055585478631012616">Þú verður skráð(ur) út af þessum vefsvæðum, þar á meðal í opnum flipum</translation>
 <translation id="205560151218727633">Merki Google hjálparans</translation>
 <translation id="2058456167109518507">Tæki fannst</translation>
@@ -1214,6 +1215,7 @@
 <translation id="2387052489799050037">Fara á heimaskjá</translation>
 <translation id="2387458720915042159">Gerð tengingar staðgengilsþjóns</translation>
 <translation id="2390347491606624519">Ekki næst tenging við staðgengilsþjón, skráðu þig inn aftur</translation>
+<translation id="2390782873446084770">Wi-Fi samstilling</translation>
 <translation id="2391082728065870591">Senda ábendingaskýrslu</translation>
 <translation id="2391419135980381625">Venjulegt letur</translation>
 <translation id="2392163307141705938">Þú hefur náð tímamörkum sem foreldri þitt stillti fyrir <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
@@ -1870,6 +1872,7 @@
 <translation id="3157931365184549694">Endurheimta</translation>
 <translation id="3158033540161634471">Skráðu fingrafarið þitt</translation>
 <translation id="3159493096109238499">Drapplitaður</translation>
+<translation id="3159978855457658359">Breyta heiti tækis</translation>
 <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (byggist á vélbúnaði)</translation>
 <translation id="3161522574479303604">Öll tungumál</translation>
 <translation id="3162853326462195145">Skólareikningur</translation>
@@ -3230,6 +3233,7 @@
 <translation id="4761104368405085019">Nota hljóðnemann</translation>
 <translation id="4762718786438001384">Allt of lítið geymslupláss er eftir á tækinu</translation>
 <translation id="4763408175235639573">Eftirfarandi fótspor voru vistuð þegar þú skoðaðir þessa síðu</translation>
+<translation id="4764368918650455114">Gakktu úr skugga um að hvorugt tækið sé læst, settu þau nálægt hvort öðru og hafðu kveikt á Bluetooth. Ef þú deilir með Chromebook skaltu tryggja að kveikt sé á nærdeilingu í henni (opnaðu stöðusvæðið með því að velja tíma og síðan nærdeilingu). <ph name="LINK_BEGIN" />Frekari upplýsingar<ph name="LINK_END" /></translation>
 <translation id="4765582662863429759">Leyfir Android Messages að áframsenda skilaboð úr símanum þínum í Chromebook tækið þitt</translation>
 <translation id="476598255842811483">Enginn nema þú opnir nærdeilingu í tækinu þínu</translation>
 <translation id="4768332406694066911">Þú ert með vottorð frá þessum notendaskipunum sem auðkenna þig</translation>
@@ -3392,6 +3396,7 @@
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> – <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Kerfisstjórinn þinn setti þetta forrit upp.</translation>
 <translation id="4964455510556214366">Fyrirkomulag</translation>
+<translation id="496446150016900060">Samstilla Wi-Fi net við símann þinn</translation>
 <translation id="4965808351167763748">Ertu viss um að þú viljir setja upp keyrslu á Hangouts Meet í tækinu?</translation>
 <translation id="496888482094675990">Forritið Skrár býður upp á skjótan aðgang að skrám sem þú hefur vistað á Google Drive, í ytri geymslu eða á Chrome OS tæki.</translation>
 <translation id="4971412780836297815">Opna að þessu loknu</translation>
@@ -3698,6 +3703,7 @@
 <translation id="5341980496415249280">Augnablik, pakkar...</translation>
 <translation id="5342091991439452114">PIN-númerið má ekki vera styttra en <ph name="MINIMUM" /> tölustafir</translation>
 <translation id="5344036115151554031">Endurheimtir Linux</translation>
+<translation id="5345916423802287046">Ræsa forrit þegar þú skráir þig inn</translation>
 <translation id="5350293332385664455">Slökkva á Google hjálpara</translation>
 <translation id="535123479159372765">Texti afritaður úr öðru tæki</translation>
 <translation id="5352033265844765294">Tímastimplun</translation>
@@ -4007,6 +4013,7 @@
 <translation id="5704875434923668958">Samstillir við</translation>
 <translation id="5705005699929844214">Sýna alltaf aðgengisvalkosti</translation>
 <translation id="5705882733397021510">Til baka</translation>
+<translation id="5707117624115653804">Sérstilla stærð skjátexta og stíl fyrir forrit og svæði sem styðja þessa stillingu</translation>
 <translation id="5707185214361380026">Mistókst að hlaða viðbót frá:</translation>
 <translation id="5708171344853220004">Microsoft-aðalnefni</translation>
 <translation id="5709557627224531708">Stilltu Chrome sem sjálfgefinn vafra</translation>
@@ -4170,6 +4177,7 @@
 <translation id="5904614460720589786">Ekki tókst að setja <ph name="APP_NAME" /> upp vegna stillingarvandamáls. Hafðu samband við kerfisstjórann. Villukóði: <ph name="ERROR_CODE" />.</translation>
 <translation id="5906655207909574370">Uppfærslan er næstum tilbúin! Endurræstu tækið til að ljúka uppfærslunni.</translation>
 <translation id="5906732635754427568">Gögn sem tengjast þessu forriti verða fjarlægð úr tækinu.</translation>
+<translation id="5908474332780919512">Ræsa forrit þegar þú skráir þig inn</translation>
 <translation id="5908695239556627796">Flettihraði músar</translation>
 <translation id="5908769186679515905">Loka fyrir að vefsvæði noti Flash</translation>
 <translation id="5910363049092958439">&amp;Vista mynd sem...</translation>
@@ -4709,6 +4717,7 @@
 <translation id="6532527800157340614">Innskráning mistókst vegna þess að ekki var hægt að sækja aðgangslykilinn þinn. Athugaðu nettenginguna og reyndu aftur.</translation>
 <translation id="6532663472409656417">Skráð hjá fyrirtæki</translation>
 <translation id="6535331821390304775">Leyfa <ph name="ORIGIN" /> alltaf að opna tengla af þessari tegund í tengdu forriti</translation>
+<translation id="6537613839935722475">Hægt er að nota stafi, tölustafi og bandstrik í heitum (-)</translation>
 <translation id="6538635548667167211">Núverandi stilling gagnanotkunar er „Gögn“</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />Athugaðu:<ph name="END_BOLD" /> Kveiktu aðeins á þessu ef þú veist hvað þú ert að gera eða ef þér hefur verið sagt að gera þetta, þar sem gagnasöfnun kann að draga úr afköstum.</translation>
 <translation id="6541638731489116978">Lokað hefur verið á aðgang þessa vefsvæðis að hreyfiskynjurum þínum.</translation>
@@ -4797,6 +4806,7 @@
 <translation id="6650234781371031356">Aðgangsorðið fyrir <ph name="WEBSITE" /> er vistað í þessu tæki og á Google reikningnum þínum. Hvoru þeirra viltu eyða?</translation>
 <translation id="665061930738760572">Opna í &amp;nýjum glugga</translation>
 <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="6654509035557065241">Kjósa net</translation>
 <translation id="6655190889273724601">Forritarastilling</translation>
@@ -5400,6 +5410,7 @@
 <translation id="7375235221357833624">{0,plural, =1{Uppfæra tæki innan klukkustundar}one{Uppfæra tæki innan # klukkustundar}other{Uppfæra tæki innan # klukkustunda}}</translation>
 <translation id="7376553024552204454">Auðkenna músarbendilinn þegar hann hreyfist</translation>
 <translation id="7377451353532943397">Halda áfram að loka á aðgang að skynjurum</translation>
+<translation id="7378611153938412599">Léleg aðgangsorð eru þau sem auðvelt er að giska á. Passaðu að búa til traust aðgangsorð. <ph name="BEGIN_LINK" />Sjá fleiri öryggisábendingar.<ph name="END_LINK" /></translation>
 <translation id="73786666777299047">Opna vefverslun Chrome</translation>
 <translation id="7378812711085314936">Koma á gagnatengingu</translation>
 <translation id="7380622428988553498">Heiti tækis inniheldur ógilda stafi</translation>
@@ -5924,6 +5935,7 @@
 <translation id="7959074893852789871">Skráin innihélt mörg vottorð en sum þeirra voru ekki flutt inn:</translation>
 <translation id="7961015016161918242">Aldrei</translation>
 <translation id="7963001036288347286">Hröðun snertiflatar</translation>
+<translation id="7963608432878156675">Þetta heiti er sýnilegt öðrum tækjum til að koma á Bluetooth-tengingu og nettengingum</translation>
 <translation id="7963826112438303517">Hjálparinn notar þessar upptökur og raddbeiðnir þínar til að búa til og uppfæra raddlíkanið þitt, sem aðeins er geymt í tækjum sem eru með Voice Match uppsett. Skoðaðu eða endurgerðu raddvirkni í stillingum hjálparans.</translation>
 <translation id="7966241909927244760">A&amp;frita slóð myndar</translation>
 <translation id="7966571622054096916">{COUNT,plural, =1{1 atriði á bókamerkjalista}one{{COUNT} atriði á bókamerkjalista}other{{COUNT} atriði á bókamerkjalista}}</translation>
@@ -6387,6 +6399,7 @@
 <translation id="850875081535031620">Enginn skaðlegur hugbúnaður fannst</translation>
 <translation id="8509177919508253835">Endurstilla öryggislykla og búa til PIN-númer</translation>
 <translation id="8509646642152301857">Mistókst að sækja orðabók fyrir ritvilluleit.</translation>
+<translation id="8512396579636492893">{COUNT,plural, =0{Engin léleg aðgangsorð fundust}=1{{COUNT} lélegt aðgangsorð fannst}one{{COUNT} lélegt aðgangsorð fannst}other{{COUNT} léleg aðgangsorð fundust}}</translation>
 <translation id="8512476990829870887">Ljúka ferli</translation>
 <translation id="851263357009351303">Leyfa <ph name="HOST" /> alltaf að sýna myndir</translation>
 <translation id="8513108775083588393">Snýst sjálft</translation>
diff --git a/chrome/app/resources/generated_resources_it.xtb b/chrome/app/resources/generated_resources_it.xtb
index a101bf8..e031293 100644
--- a/chrome/app/resources/generated_resources_it.xtb
+++ b/chrome/app/resources/generated_resources_it.xtb
@@ -928,6 +928,7 @@
 <translation id="204914487372604757">Crea scorciatoia</translation>
 <translation id="2050339315714019657">Verticale</translation>
 <translation id="2053312383184521053">Dati sullo stato di inattività</translation>
+<translation id="2054665754582400095">La tua presenza</translation>
 <translation id="2055585478631012616">Uscirai da questi siti (schede aperte incluse)</translation>
 <translation id="205560151218727633">Logo dell'Assistente Google</translation>
 <translation id="2058456167109518507">Dispositivo rilevato</translation>
@@ -1214,6 +1215,7 @@
 <translation id="2387052489799050037">Vai alla schermata Home</translation>
 <translation id="2387458720915042159">Tipo di connessione proxy</translation>
 <translation id="2390347491606624519">Impossibile connettersi al proxy, accedi di nuovo</translation>
+<translation id="2390782873446084770">Sync Wi-Fi</translation>
 <translation id="2391082728065870591">Invia rapporto di feedback</translation>
 <translation id="2391419135980381625">Carattere standard</translation>
 <translation id="2392163307141705938">Hai raggiunto il tempo massimo impostato dal genitore per <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
@@ -1869,6 +1871,7 @@
 <translation id="3157931365184549694">Ripristina</translation>
 <translation id="3158033540161634471">Imposta la tua impronta</translation>
 <translation id="3159493096109238499">Beige</translation>
+<translation id="3159978855457658359">Modifica nome del dispositivo</translation>
 <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (con supporto hardware)</translation>
 <translation id="3161522574479303604">Tutte le lingue</translation>
 <translation id="3162853326462195145">Account della scuola</translation>
@@ -3229,6 +3232,7 @@
 <translation id="4761104368405085019">Utilizzare il microfono</translation>
 <translation id="4762718786438001384">Lo spazio sul disco del dispositivo sta per esaurirsi</translation>
 <translation id="4763408175235639573">Durante la visualizzazione della pagina sono stati impostati i seguenti cookie</translation>
+<translation id="4764368918650455114">Assicurati che entrambi i dispositivi siano sbloccati e vicini, nonché che il Bluetooth sia attivo. Se vuoi attivare la condivisione con un Chromebook, assicurati che su tale dispositivo sia attiva la funzionalità Condivisione nelle vicinanze (apri l'area di stato selezionando l'ora, quindi seleziona Condivisione nelle vicinanze). <ph name="LINK_BEGIN" />Ulteriori informazioni<ph name="LINK_END" /></translation>
 <translation id="4765582662863429759">Consenti ad Android Messaggi di trasmettere gli SMS dal telefono al Chromebook</translation>
 <translation id="476598255842811483">Nessuno, a meno che non attivi la funzionalità Condivisione nelle vicinanze sul tuo dispositivo</translation>
 <translation id="4768332406694066911">Hai certificati da queste organizzazioni che ti identificano</translation>
@@ -3391,6 +3395,7 @@
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Questa app è stata installata dall'amministratore.</translation>
 <translation id="4964455510556214366">Disposizione</translation>
+<translation id="496446150016900060">Sincronizzare le reti Wi-Fi con il tuo telefono</translation>
 <translation id="4965808351167763748">Vuoi configurare questo dispositivo in modo da poter eseguire Hangouts Meet?</translation>
 <translation id="496888482094675990">L'app File consente di accedere rapidamente ai file salvati in Google Drive, nella memoria esterna o sul tuo dispositivo Chrome OS.</translation>
 <translation id="4971412780836297815">Apri al termine</translation>
@@ -3697,6 +3702,7 @@
 <translation id="5341980496415249280">Attendi, compressione in corso…</translation>
 <translation id="5342091991439452114">Il PIN deve contenere almeno <ph name="MINIMUM" /> cifre</translation>
 <translation id="5344036115151554031">Ripristino di Linux</translation>
+<translation id="5345916423802287046">Avvia app all'accesso</translation>
 <translation id="5350293332385664455">Disattivare l'Assistente Google</translation>
 <translation id="535123479159372765">Testo copiato da un altro dispositivo</translation>
 <translation id="5352033265844765294">Timestamp</translation>
@@ -4006,6 +4012,7 @@
 <translation id="5704875434923668958">Sincronizzazione con</translation>
 <translation id="5705005699929844214">Mostrare sempre le opzioni di accessibilità</translation>
 <translation id="5705882733397021510">Indietro</translation>
+<translation id="5707117624115653804">Personalizza dimensioni e stile dei sottotitoli per app e siti che supportano questa impostazione</translation>
 <translation id="5707185214361380026">Impossibile caricare l'estensione da:</translation>
 <translation id="5708171344853220004">Nome entità Microsoft</translation>
 <translation id="5709557627224531708">Imposta Chrome come browser predefinito</translation>
@@ -4169,6 +4176,7 @@
 <translation id="5904614460720589786">Impossibile installare <ph name="APP_NAME" /> a causa di un problema di configurazione. Contatta l'amministratore. Codice di errore: <ph name="ERROR_CODE" />.</translation>
 <translation id="5906655207909574370">Aggiornamento quasi completato. Riavvia il dispositivo per terminare l'aggiornamento.</translation>
 <translation id="5906732635754427568">I dati associati a questa app verranno rimossi dal dispositivo.</translation>
+<translation id="5908474332780919512">Avvia app all'accesso</translation>
 <translation id="5908695239556627796">Velocità di scorrimento del mouse</translation>
 <translation id="5908769186679515905">Impedisci ai siti di eseguire Flash</translation>
 <translation id="5910363049092958439">Sal&amp;va immagine con nome...</translation>
@@ -4708,6 +4716,7 @@
 <translation id="6532527800157340614">Impossibile accedere perché non è stato possibile recuperare il token di accesso. Controlla la connessione di rete e riprova.</translation>
 <translation id="6532663472409656417">Dispositivo aziendale registrato</translation>
 <translation id="6535331821390304775">Consenti sempre a <ph name="ORIGIN" /> di aprire link di questo tipo nell'app associata</translation>
+<translation id="6537613839935722475">Il nome può contenere lettere, numeri e trattini (-)</translation>
 <translation id="6538635548667167211">Impostazione di utilizzo dei dati corrente: Dati mobili</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />Nota.<ph name="END_BOLD" /> Attiva questa opzione soltanto se sei sicuro di ciò che fai o se ti è stato chiesto di farlo perché la raccolta di dati potrebbe peggiorare il rendimento.</translation>
 <translation id="6541638731489116978">A questo sito è stato impedito l'accesso ai sensori di movimento.</translation>
@@ -4796,6 +4805,7 @@
 <translation id="6650234781371031356">La password per il sito <ph name="WEBSITE" /> è memorizzata su questo dispositivo e nel tuo Account Google. Quale vuoi eliminare?</translation>
 <translation id="665061930738760572">Apri in &amp;un'altra finestra</translation>
 <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="6654509035557065241">Preferenza rete</translation>
 <translation id="6655190889273724601">Modalità sviluppatore</translation>
@@ -5399,6 +5409,7 @@
 <translation id="7375235221357833624">{0,plural, =1{Aggiorna il dispositivo entro un'ora}other{Aggiorna il dispositivo entro # ore}}</translation>
 <translation id="7376553024552204454">Evidenzia il puntatore del mouse durante lo spostamento</translation>
 <translation id="7377451353532943397">Continua a impedire l'accesso ai sensori</translation>
+<translation id="7378611153938412599">Le password inefficaci sono facili da indovinare. Assicurati di creare password efficaci. <ph name="BEGIN_LINK" />Leggi altri suggerimenti per la sicurezza.<ph name="END_LINK" /></translation>
 <translation id="73786666777299047">Apri Chrome Web Store</translation>
 <translation id="7378812711085314936">Ricevi connessione dati</translation>
 <translation id="7380622428988553498">Il nome del dispositivo contiene caratteri non validi</translation>
@@ -5923,6 +5934,7 @@
 <translation id="7959074893852789871">Il file conteneva più certificati, alcuni dei quali non sono stati importati:</translation>
 <translation id="7961015016161918242">Mai</translation>
 <translation id="7963001036288347286">Accelerazione del touchpad</translation>
+<translation id="7963608432878156675">Questo nome è visibile ad altri dispositivi per le connessioni di rete e Bluetooth</translation>
 <translation id="7963826112438303517">L'assistente usa queste registrazioni e le tue richieste vocali per creare e aggiornare il tuo modello vocale, che viene memorizzato soltanto sui dispositivi in cui hai attivato Voice Match. Visualizza o reimposta l'attività vocale nelle Impostazioni dell'assistente.</translation>
 <translation id="7966241909927244760">C&amp;opia l'indirizzo dell'immagine</translation>
 <translation id="7966571622054096916">{COUNT,plural, =1{1 elemento nell'elenco dei preferiti}other{{COUNT} elementi nell'elenco dei preferiti}}</translation>
@@ -6386,6 +6398,7 @@
 <translation id="850875081535031620">Nessun software dannoso trovato</translation>
 <translation id="8509177919508253835">Reimposta i token di sicurezza e crea PIN</translation>
 <translation id="8509646642152301857">Download del dizionario per il controllo ortografico non riuscito.</translation>
+<translation id="8512396579636492893">{COUNT,plural, =0{Nessuna password inefficace trovata}=1{È stata trovata {COUNT} password inefficace}other{Sono state trovate {COUNT} password inefficaci}}</translation>
 <translation id="8512476990829870887">Termina processo</translation>
 <translation id="851263357009351303">Consenti sempre la visualizzazione di immagini in <ph name="HOST" /></translation>
 <translation id="8513108775083588393">Rotazione aut.</translation>
diff --git a/chrome/app/resources/generated_resources_iw.xtb b/chrome/app/resources/generated_resources_iw.xtb
index 6644c1e..d43d77f 100644
--- a/chrome/app/resources/generated_resources_iw.xtb
+++ b/chrome/app/resources/generated_resources_iw.xtb
@@ -925,6 +925,7 @@
 <translation id="204914487372604757">צור קיצור דרך</translation>
 <translation id="2050339315714019657">לאורך</translation>
 <translation id="2053312383184521053">נתוני מצב של חוסר פעילות</translation>
+<translation id="2054665754582400095">הנוכחות שלך אונליין</translation>
 <translation id="2055585478631012616">המערכת תוציא אותך מהאתרים האלה, כולל בכרטיסיות הפתוחות</translation>
 <translation id="205560151218727633">‏הלוגו של Google Assistant</translation>
 <translation id="2058456167109518507">אותר מכשיר</translation>
@@ -1211,6 +1212,7 @@
 <translation id="2387052489799050037">מעבר לדף הבית</translation>
 <translation id="2387458720915042159">‏סוג חיבור לשרת proxy</translation>
 <translation id="2390347491606624519">‏לא ניתן להתחבר לשרת proxy, יש להיכנס שוב</translation>
+<translation id="2390782873446084770">‏סנכרון Wi-Fi</translation>
 <translation id="2391082728065870591">שליחת דוח המשוב</translation>
 <translation id="2391419135980381625">גופן רגיל</translation>
 <translation id="2392163307141705938">נגמר הזמן שההורים הקצו לך ב-<ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
@@ -1655,7 +1657,7 @@
 <translation id="289695669188700754">מזהה מפתח: <ph name="KEY_ID" /></translation>
 <translation id="2897878306272793870">האם אתה בטוח שברצונך לפתוח כרטיסיות <ph name="TAB_COUNT" />?</translation>
 <translation id="290105521672621980">הקובץ דורש תכונות שאינן נתמכות</translation>
-<translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> לא הצליח לתקשר עם המדפסת הזו. ודא שהמדפסת מחוברת ונסה שוב.</translation>
+<translation id="2902127500170292085"><ph name="EXTENSION_NAME" /> לא הצליח לתקשר עם המדפסת הזו. יש לוודא שהמדפסת מחוברת ולנסות שוב.</translation>
 <translation id="2902312830803030883">פעולות נוספות</translation>
 <translation id="2903457445916429186">פתיחת הפריטים הנבחרים</translation>
 <translation id="2903882649406874750">יש לחסום תמיד את הגישה של <ph name="HOST" /> אל החיישנים</translation>
@@ -1868,6 +1870,7 @@
 <translation id="3157931365184549694">שחזר</translation>
 <translation id="3158033540161634471">הגדרת טביעת האצבע</translation>
 <translation id="3159493096109238499">בז'</translation>
+<translation id="3159978855457658359">עריכת שם המכשיר</translation>
 <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (בגיבוי חומרה)</translation>
 <translation id="3161522574479303604">כל השפות</translation>
 <translation id="3162853326462195145">חשבון בית ספרי</translation>
@@ -3132,7 +3135,7 @@
 <translation id="4636930964841734540">מידע</translation>
 <translation id="4637083375689622795">פעולות נוספות, <ph name="EMAIL" /></translation>
 <translation id="4638930039313743000">‏הפעלה של ניפוי באגים באמצעות ADB</translation>
-<translation id="4641539339823703554">‏Chrome לא הצליח להגדיר את שעת המערכת. בדוק את השעה המצוינת בהמשך ותקן אותה במקרה הצורך.</translation>
+<translation id="4641539339823703554">‏Chrome לא הצליח להגדיר את שעת המערכת. יש לבדוק את השעה המצוינת בהמשך ולתקן אותה במקרה הצורך.</translation>
 <translation id="4643612240819915418">&amp;פתיחת סרטון בכרטיסייה חדשה</translation>
 <translation id="4645551927492192497">{NUM_DAYS,plural, =1{‏לפי הדרישה של <ph name="DOMAIN" />, עליך להתחבר היום לרשת Wi-Fi כדי להוריד עדכון. ניתן גם לבצע את ההורדה דרך חיבור עם חיוב לפי שימוש בנתונים (עשויים לחול חיובים).}two{‏לפי דרישת <ph name="DOMAIN" />, עליך להתחבר ל-Wi-Fi ולהוריד עדכון לפני המועד האחרון. ניתן גם לבצע את ההורדה דרך חיבור עם חיוב לפי שימוש בנתונים (עשויים לחול חיובים).}many{‏לפי דרישת <ph name="DOMAIN" />, עליך להתחבר ל-Wi-Fi ולהוריד עדכון לפני המועד האחרון. ניתן גם לבצע את ההורדה דרך חיבור עם חיוב לפי שימוש בנתונים (עשויים לחול חיובים).}other{‏לפי דרישת <ph name="DOMAIN" />, עליך להתחבר ל-Wi-Fi ולהוריד עדכון לפני המועד האחרון. ניתן גם לבצע את ההורדה דרך חיבור עם חיוב לפי שימוש בנתונים (עשויים לחול חיובים).}}</translation>
 <translation id="4645676300727003670">&amp;שמור</translation>
@@ -3228,6 +3231,7 @@
 <translation id="4761104368405085019">להשתמש במיקרופון</translation>
 <translation id="4762718786438001384">שטח האחסון בדיסק כמעט נגמר</translation>
 <translation id="4763408175235639573">‏קובצי ה-Cookie הבאים הוגדרו כשהצגת את הדף הזה</translation>
+<translation id="4764368918650455114">‏יש לוודא ששני המכשירים אינם נעולים, שהם קרובים זה לזה ושבשניהם מופעל Bluetooth. אם השיתוף נעשה עם Chromebook, יש לוודא שהתכונה 'שיתוף בקרבת מקום' פועלת (פותחים את אזור הסטטוס על ידי בחירה בזמן, ולאחר מכן בוחרים 'שיתוף בקרבת מקום'). <ph name="LINK_BEGIN" />מידע נוסף<ph name="LINK_END" /></translation>
 <translation id="4765582662863429759">‏מאפשר ל-Android Messages להעביר הודעות טקסט מהטלפון אל ה-Chromebook</translation>
 <translation id="476598255842811483">אף אחד, אלא אם התכונה 'שיתוף בקרבת מקום' מופעלת במכשיר שלך</translation>
 <translation id="4768332406694066911">יש לך אישורים מארגונים אלה שמזהים אותך</translation>
@@ -3390,6 +3394,7 @@
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">האפליקציה הזו הותקנה על ידי מנהל המערכת.</translation>
 <translation id="4964455510556214366">סידור</translation>
+<translation id="496446150016900060">‏סנכרון של רשתות Wi-Fi עם הטלפון שלך</translation>
 <translation id="4965808351167763748">‏בחרת להגדיר שהמכשיר הזה יפעיל את Hangouts Meet. להמשיך?</translation>
 <translation id="496888482094675990">‏היישום 'קבצים' מספק גישה מהירה לקבצים ששמרת ב-Google Drive, באחסון חיצוני או במכשיר שלך עם מערכת הפעלה של Chrome.</translation>
 <translation id="4971412780836297815">פתח בסיום</translation>
@@ -3696,6 +3701,7 @@
 <translation id="5341980496415249280">האריזה מתבצעת...</translation>
 <translation id="5342091991439452114">‏ה-PIN חייב להיות באורך <ph name="MINIMUM" /> ספרות לפחות</translation>
 <translation id="5344036115151554031">‏שחזור Linux</translation>
+<translation id="5345916423802287046">הפעלת האפליקציה בזמן הכניסה</translation>
 <translation id="5350293332385664455">‏כיבוי של Google Assistant</translation>
 <translation id="535123479159372765">הטקסט הועתק ממכשיר אחר</translation>
 <translation id="5352033265844765294">הטבעת חותמת זמן</translation>
@@ -3901,7 +3907,7 @@
 <translation id="5584088138253955452">לשמור את שם המשתמש?</translation>
 <translation id="5584915726528712820">‏<ph name="BEGIN_PARAGRAPH1" />זהו מידע כללי לגבי המכשיר שלך ועל אופן השימוש שלך בו (כמו רמת טעינת הסוללה, פעילות במערכת ובאפליקציות ושגיאות). הנתונים ישמשו כדי לשפר את Android. כמו כן, חלק מהמידע שיצטבר יעזור ל-Google ולשותפיה, כמו מפתחי Android, לשפר את האפליקציות והמוצרים שלהם.<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />כיבוי התכונה הזו לא משפיע על יכולת המכשיר לשלוח את המידע הנחוץ לשירותים חיוניים, כמו עדכוני מערכת ואבטחה.<ph name="END_PARAGRAPH2" />
-    <ph name="BEGIN_PARAGRAPH3" />הבעלים יכול לשלוט בתכונה הזו דרך 'הגדרות' &gt; 'מתקדם' &gt; 'שליחה אוטומטית של נתוני אבחון ושימוש אל Google'.<ph name="END_PARAGRAPH3" />
+    <ph name="BEGIN_PARAGRAPH3" />הבעלים יכולים לשלוט בתכונה הזו דרך 'הגדרות' &gt; 'מתקדם' &gt; 'שליחה אוטומטית של נתוני אבחון ושימוש אל Google'.<ph name="END_PARAGRAPH3" />
     <ph name="BEGIN_PARAGRAPH4" />אם ההגדרה הנוספת של פעילות באינטרנט ובאפליקציות מופעלת, ייתכן שהנתונים האלה יישמרו בחשבון Google שלך. את הנתונים אפשר להציג, למחוק ולשנות דרך הגדרות החשבון בכתובת account.google.com.<ph name="END_PARAGRAPH4" /></translation>
 <translation id="5585019845078534178">כרטיסיות</translation>
 <translation id="5585118885427931890">לא ניתן ליצור תיקיית סימניות.</translation>
@@ -3933,7 +3939,7 @@
 <translation id="561698261642843490">‏סגירת Firefox</translation>
 <translation id="5618333180342767515">(פעולה זו עשויה להימשך מספר דקות)</translation>
 <translation id="56197088284879152">יש צוואר בקבוק בחיבור למכשיר המרוחק: "<ph name="DEVICE_NAME" />".</translation>
-<translation id="5620568081365989559">‏DevTools מבקש גישה מלאה אל <ph name="FOLDER_PATH" />. ודא שאינך חושף מידע רגיש.</translation>
+<translation id="5620568081365989559">‏DevTools מבקש גישה מלאה אל <ph name="FOLDER_PATH" />. יש להקפיד שלא לחשוף מידע רגיש.</translation>
 <translation id="5620612546311710611">נתונים סטטיסטיים של שימוש</translation>
 <translation id="5620655347161642930">ייצוא סיסמאות...</translation>
 <translation id="5621137386706841383">התהליך עשוי להימשך עד 30 דקות.</translation>
@@ -4005,6 +4011,7 @@
 <translation id="5704875434923668958">מתבצע סנכרון עם</translation>
 <translation id="5705005699929844214">להציג תמיד אפשרויות נגישוּת</translation>
 <translation id="5705882733397021510">חזרה</translation>
+<translation id="5707117624115653804">אפשר להתאים אישית את הגודל והסגנון של הכיתוב לאפליקציות ולאתרים שתומכים בהגדרה הזו</translation>
 <translation id="5707185214361380026">כשל בטעינת תוסף מ:</translation>
 <translation id="5708171344853220004">‏שם ראשי של Microsoft</translation>
 <translation id="5709557627224531708">‏הגדרת Chrome כדפדפן ברירת המחדל</translation>
@@ -4168,10 +4175,11 @@
 <translation id="5904614460720589786">לא ניתן להתקין את האפליקציה <ph name="APP_NAME" /> עקב בעיה בהגדרות. יש לפנות למנהל המערכת. קוד שגיאה: <ph name="ERROR_CODE" />.</translation>
 <translation id="5906655207909574370">העדכון כמעט הושלם! הפעל מחדש את המכשיר כדי לסיים את העדכון.</translation>
 <translation id="5906732635754427568">המערכת תסיר מהמכשיר הזה נתונים המשויכים לאפליקציה הזו.</translation>
+<translation id="5908474332780919512">הפעלת האפליקציה בזמן הכניסה</translation>
 <translation id="5908695239556627796">מהירות גלילת העכבר</translation>
 <translation id="5908769186679515905">‏חסימת הפעלה של Flash על-ידי אתרים</translation>
 <translation id="5910363049092958439">שמ&amp;ירת תמונה בשם...</translation>
-<translation id="5910726859585389579"><ph name="DEVICE_TYPE" /> במצב לא מקוון</translation>
+<translation id="5910726859585389579"><ph name="DEVICE_TYPE" /> אופליין</translation>
 <translation id="5911533659001334206">מציג קיצורי הדרך</translation>
 <translation id="5914724413750400082">מודולוס (<ph name="MODULUS_NUM_BITS" /> ביטים):
   <ph name="MODULUS_HEX_DUMP" />
@@ -4684,7 +4692,7 @@
 <translation id="6508248480704296122">קשור אל <ph name="NAME_PH" /></translation>
 <translation id="6508261954199872201">יישום: <ph name="APP_NAME" /></translation>
 <translation id="6509207748479174212">רישיון מדיה</translation>
-<translation id="6513247462497316522">‏Google Chrome ישתמש בנתונים לנייד אם אתה לא מחובר לרשת אחרת.</translation>
+<translation id="6513247462497316522">‏Google Chrome ישתמש בחבילת הגלישה אם אין לך חיבור לרשת אחרת.</translation>
 <translation id="6514010653036109809">מכשיר זמין:</translation>
 <translation id="6514565641373682518">דף זה השבית את סמן העכבר שלך.</translation>
 <translation id="6518014396551869914">הע&amp;תקת תמונה</translation>
@@ -4707,6 +4715,7 @@
 <translation id="6532527800157340614">הכניסה נכשלה כי לא ניתן היה לאחזר את אסימון הגישה שלך. יש לבדוק את החיבור לרשת ולנסות שוב.</translation>
 <translation id="6532663472409656417">רשום בארגון</translation>
 <translation id="6535331821390304775">תמיד יש לאפשר ל-<ph name="ORIGIN" /> לפתוח קישורים מהסוג הזה באפליקציה המשויכת להם</translation>
+<translation id="6537613839935722475">שם יכול לכלול אותיות, מספרים ומקפים (-)</translation>
 <translation id="6538635548667167211">ההגדרה הנוכחית של השימוש בחבילת הגלישה היא 'נתונים'</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />הערה:<ph name="END_BOLD" /> הפעל אפשרות זו רק אם אתה בטוח בכך, או אם התבקשת לעשות זאת, משום שאיסוף נתונים עלול לפגוע בביצועים.</translation>
 <translation id="6541638731489116978">גישת האתר לחיישני תנועה נחסמה.</translation>
@@ -4795,6 +4804,7 @@
 <translation id="6650234781371031356">‏הסיסמה שלך באתר <ph name="WEBSITE" /> שמורה גם במכשיר הזה וגם בחשבון Google שלך. איזו מבין שתי הגרסאות ברצונך למחוק?</translation>
 <translation id="665061930738760572">פתח ב&amp;חלון חדש</translation>
 <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="6654509035557065241">העדפת רשת זו</translation>
 <translation id="6655190889273724601">מצב פיתוח</translation>
@@ -5398,6 +5408,7 @@
 <translation id="7375235221357833624">{0,plural, =1{יש לעדכן את המכשיר בתוך שעה אחת}two{יש לעדכן את המכשיר בתוך # שעות}many{יש לעדכן את המכשיר בתוך # שעות}other{יש לעדכן את המכשיר בתוך # שעות}}</translation>
 <translation id="7376553024552204454">הדגש את סמן העכבר כשהסמן בתנועה</translation>
 <translation id="7377451353532943397">המשך חסימת הגישה לחיישנים</translation>
+<translation id="7378611153938412599">קל לנחש סיסמאות חלשות. חשוב להגדיר סיסמאות חזקות. <ph name="BEGIN_LINK" />לטיפים נוספים לגבי אבטחה.<ph name="END_LINK" /></translation>
 <translation id="73786666777299047">‏פתח את חנות האינטרנט של Chrome</translation>
 <translation id="7378812711085314936">קבל חיבור נתונים</translation>
 <translation id="7380622428988553498">שם המכשיר מכיל תווים לא חוקיים</translation>
@@ -5921,6 +5932,7 @@
 <translation id="7959074893852789871">הקובץ הכיל אישורים מרובים, חלקם לא יובאו:</translation>
 <translation id="7961015016161918242">אף פעם</translation>
 <translation id="7963001036288347286">האצת לוח מגע</translation>
+<translation id="7963608432878156675">‏השם הזה יוצג למכשירים אחרים בזמן החיבור לרשת או ל-Bluetooth</translation>
 <translation id="7963826112438303517">‏ה-Assistant משתמש בהקלטות האלה ובבקשות קוליות כדי ליצור ולעדכן את תבנית הקול שלך. התבנית נשמרת רק במכשירים שבהם התכונה Voice Match מופעלת. אפשר להציג את הפעילות הקולית או לשמור אותה דרך ההגדרות של Assistant.</translation>
 <translation id="7966241909927244760">העתק כתובת &amp;תמונה</translation>
 <translation id="7966571622054096916">{COUNT,plural, =1{פריט אחד ברשימת הסימניות}two{{COUNT} פריטים ברשימת הסימניות}many{{COUNT} פריטים ברשימת הסימניות}other{{COUNT} פריטים ברשימת הסימניות}}</translation>
@@ -5971,7 +5983,7 @@
 <translation id="8012647001091218357">לא הצלחנו ליצור קשר עם ההורים שלך. נסה שוב מאוחר יותר.</translation>
 <translation id="8013993649590906847">‏אם אין לתמונה תיאור מועיל, Chrome ינסה לספק לך תיאור. כדי ליצור תיאורים, התמונות נשלחות אל Google.</translation>
 <translation id="8014154204619229810">המעדכן פועל כעת. רענן בעוד דקה כדי לבדוק שנית.</translation>
-<translation id="8014206674403687691">‏<ph name="IDS_SHORT_PRODUCT_NAME" /> אינו יכול לחזור לגרסה המותקנת הקודמת. נסה לבצע שוב Powerwash למכשיר.</translation>
+<translation id="8014206674403687691">‏<ph name="IDS_SHORT_PRODUCT_NAME" /> אינו יכול לחזור לגרסה המותקנת הקודמת. יש לנסות לבצע שוב Powerwash למכשיר.</translation>
 <translation id="8015163965024115122">נגמר הזמן שהוגדר על-ידי ההורים שלך באפליקציות <ph name="IDS_SHORT_PRODUCT_NAME" /> או <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
 <translation id="8016266267177410919">אחסון זמני</translation>
 <translation id="8017176852978888182">‏ספריות משותפות של Linux</translation>
@@ -6193,7 +6205,7 @@
 <translation id="8267539814046467575">הוספת מדפסת</translation>
 <translation id="8267961145111171918">‏<ph name="BEGIN_PARAGRAPH1" />זהו מידע כללי על המכשיר ועל אופן השימוש בו (כמו רמת טעינת הסוללה, פעילות במערכת ובאפליקציות ושגיאות). הנתונים ישמשו כדי לשפר את Android. כמו כן, חלק מהמידע שיצטבר יעזור ל-Google ולשותפיה, כמו מפתחי Android, לשפר את האפליקציות והמוצרים שלהם.<ph name="END_PARAGRAPH1" />
 <ph name="BEGIN_PARAGRAPH2" />כיבוי תכונה זו לא ישפיע על יכולת המכשיר לשלוח את המידע הנדרש לשירותים חיוניים, כמו עדכוני מערכת ואבטחה.<ph name="END_PARAGRAPH2" />
-<ph name="BEGIN_PARAGRAPH3" />הבעלים יכול לשלוט בתכונה הזו דרך 'הגדרות' &gt; 'מתקדם' &gt; 'שליחה אוטומטית של נתוני אבחון ושימוש אל Google'.<ph name="END_PARAGRAPH3" />
+<ph name="BEGIN_PARAGRAPH3" />הבעלים יכולים לשלוט בתכונה הזו דרך 'הגדרות' &gt; 'מתקדם' &gt; 'שליחה אוטומטית של נתוני אבחון ושימוש אל Google'.<ph name="END_PARAGRAPH3" />
 <ph name="BEGIN_PARAGRAPH4" />אם הופעלה הגדרה נוספת של 'פעילות באינטרנט ובאפליקציות' בחשבון של הילד/ה, ייתכן שהנתונים האלה יישמרו בחשבון Google שלו/ה. אפשר לקרוא מידע נוסף על ההגדרות האלה ואופן השינוי שלהם בכתובת families.google.com.<ph name="END_PARAGRAPH4" /></translation>
 <translation id="826905130698769948">אישור לקוח לא חוקי</translation>
 <translation id="8270242299912238708">‏מסמכי PDF</translation>
@@ -6387,6 +6399,7 @@
 <translation id="850875081535031620">לא נמצאו תוכנות מזיקות</translation>
 <translation id="8509177919508253835">איפוס מפתחות האבטחה ויצירת קודי אימות</translation>
 <translation id="8509646642152301857">הורדת המילון לבדיקת איות נכשלה.</translation>
+<translation id="8512396579636492893">{COUNT,plural, =0{לא נמצאו סיסמאות חלשות}=1{נמצאה סיסמה חלשה אחת ({COUNT})}two{נמצאו {COUNT} סיסמאות חלשות}many{נמצאו {COUNT} סיסמאות חלשות}other{נמצאו {COUNT} סיסמאות חלשות}}</translation>
 <translation id="8512476990829870887">סיים תהליך</translation>
 <translation id="851263357009351303">אפשר ל-<ph name="HOST" /> להציג תמונות תמיד</translation>
 <translation id="8513108775083588393">סיבוב אוטומטי</translation>
diff --git a/chrome/app/resources/generated_resources_ja.xtb b/chrome/app/resources/generated_resources_ja.xtb
index 8dc42ff..9c311f9 100644
--- a/chrome/app/resources/generated_resources_ja.xtb
+++ b/chrome/app/resources/generated_resources_ja.xtb
@@ -927,6 +927,7 @@
 <translation id="204914487372604757">ショートカットを作成</translation>
 <translation id="2050339315714019657">縦</translation>
 <translation id="2053312383184521053">アイドル状態のデータ</translation>
+<translation id="2054665754582400095">ユーザーのアクティブ状態</translation>
 <translation id="2055585478631012616">開いているすべてのタブで、これらのサイトからログアウトします</translation>
 <translation id="205560151218727633">Google アシスタントのロゴ</translation>
 <translation id="2058456167109518507">デバイスが検出されました</translation>
@@ -1211,6 +1212,7 @@
 <translation id="2387052489799050037">ホームに移動</translation>
 <translation id="2387458720915042159">プロキシ接続タイプ</translation>
 <translation id="2390347491606624519">プロキシに接続できません。もう一度ログインしてください</translation>
+<translation id="2390782873446084770">Wi-Fi 同期</translation>
 <translation id="2391082728065870591">フィードバック レポートを送信</translation>
 <translation id="2391419135980381625">標準フォント</translation>
 <translation id="2392163307141705938">保護者が設定した <ph name="IDS_SHORT_PRODUCT_NAME" /> の利用時間の上限に達しました。</translation>
@@ -1867,6 +1869,7 @@
 <translation id="3157931365184549694">復元</translation>
 <translation id="3158033540161634471">指紋の設定</translation>
 <translation id="3159493096109238499">ベージュ</translation>
+<translation id="3159978855457658359">デバイス名を編集</translation>
 <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />](ハードウェアにより保護を強化)</translation>
 <translation id="3161522574479303604">すべての言語</translation>
 <translation id="3162853326462195145">学校用アカウント</translation>
@@ -3225,6 +3228,7 @@
 <translation id="4761104368405085019">マイクを使用する</translation>
 <translation id="4762718786438001384">デバイスのディスク空き領域が非常に少なくなっています</translation>
 <translation id="4763408175235639573">このページを表示したときに以下の Cookie が設定されました</translation>
+<translation id="4764368918650455114">両方のデバイスでロックが解除されていること、お互いが近くにあること、Bluetooth が有効になっていることを確認してください。Chromebook でファイルを共有する場合は、Chromebook でニアバイシェアが有効になっていることも確認してください(時刻を選択してステータス領域を開き、ニアバイシェアを選択します)。<ph name="LINK_BEGIN" />詳細<ph name="LINK_END" /></translation>
 <translation id="4765582662863429759">スマートフォンから Chromebook へのテキストの伝達を Android メッセージに許可します</translation>
 <translation id="476598255842811483">あなたのデバイスでニアバイシェアを開かない場合、誰とも共有しません</translation>
 <translation id="4768332406694066911">次の機関から発行された、あなたを識別する証明書があります</translation>
@@ -3387,6 +3391,7 @@
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">このアプリは管理者によってインストールされています。</translation>
 <translation id="4964455510556214366">配置</translation>
+<translation id="496446150016900060">Wi-Fi ネットワークをスマートフォンと同期する</translation>
 <translation id="4965808351167763748">このデバイスでハングアウト Meet を実行するように設定してもよろしいですか?</translation>
 <translation id="496888482094675990">ファイル アプリを使えば、Google ドライブ、外部ストレージ、Chrome OS デバイスに保存したファイルにすぐにアクセスできます。</translation>
 <translation id="4971412780836297815">完了後に開く</translation>
@@ -3693,6 +3698,7 @@
 <translation id="5341980496415249280">圧縮しています。しばらくお待ちください...</translation>
 <translation id="5342091991439452114">PIN は <ph name="MINIMUM" /> 桁以上で指定してください</translation>
 <translation id="5344036115151554031">Linux を復元しています</translation>
+<translation id="5345916423802287046">ログイン時にアプリを開く</translation>
 <translation id="5350293332385664455">Google アシスタントをオフにする</translation>
 <translation id="535123479159372765">他のデバイスからテキストがコピーされました</translation>
 <translation id="5352033265844765294">タイム スタンプ</translation>
@@ -4000,6 +4006,7 @@
 <translation id="5704875434923668958">同期しています:</translation>
 <translation id="5705005699929844214">ユーザー補助オプションを常に表示</translation>
 <translation id="5705882733397021510">戻る</translation>
+<translation id="5707117624115653804">字幕のサイズとスタイルをカスタマイズして、この設定をサポートしているアプリやサイトに適用します</translation>
 <translation id="5707185214361380026">次の場所から拡張機能を読み込むことができませんでした:</translation>
 <translation id="5708171344853220004">Microsoft プリンシパル名</translation>
 <translation id="5709557627224531708">Chrome を既定のブラウザに設定する</translation>
@@ -4162,6 +4169,7 @@
 <translation id="5904614460720589786">設定に問題があったため、<ph name="APP_NAME" /> をセットアップできませんでした。管理者にお問い合わせください。エラーコード: <ph name="ERROR_CODE" />。</translation>
 <translation id="5906655207909574370">デバイスを再起動して更新を完了してください。</translation>
 <translation id="5906732635754427568">このアプリに関連付けられているデータはこのデバイスから削除されます。</translation>
+<translation id="5908474332780919512">ログイン時にアプリを開く</translation>
 <translation id="5908695239556627796">マウスのスクロール速度</translation>
 <translation id="5908769186679515905">サイトでの Flash の実行をブロックする</translation>
 <translation id="5910363049092958439">名前を付けて画像を保存(&amp;V)...</translation>
@@ -4701,6 +4709,7 @@
 <translation id="6532527800157340614">アクセス トークンを取得できなかったため、ログインできませんでした。ネットワーク接続を確認してからもう一度お試しください。</translation>
 <translation id="6532663472409656417">企業登録済み</translation>
 <translation id="6535331821390304775"><ph name="ORIGIN" /> でのこのタイプのリンクは常に関連付けられたアプリで開く</translation>
+<translation id="6537613839935722475">名前には文字、数字、ハイフン(-)を使用できます</translation>
 <translation id="6538635548667167211">現在のデータ使用設定は「データ」です</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />注:<ph name="END_BOLD" /> データの収集によりパフォーマンスが低下する場合があるため、意図的に行う場合、または指示された場合のみ有効にしてください。</translation>
 <translation id="6541638731489116978">このサイトではモーション センサーへのアクセスがブロックされています。</translation>
@@ -4789,6 +4798,7 @@
 <translation id="6650234781371031356"><ph name="WEBSITE" /> のパスワードはこのデバイスと Google アカウントに保存されています。どちらのパスワードを削除しますか?</translation>
 <translation id="665061930738760572">新しいウィンドウで開く(&amp;N)</translation>
 <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="6654509035557065241">優先するネットワーク</translation>
 <translation id="6655190889273724601">デベロッパー モード</translation>
@@ -5391,6 +5401,7 @@
 <translation id="7375235221357833624">{0,plural, =1{1 時間以内にデバイスを更新してください}other{# 時間以内にデバイスを更新してください}}</translation>
 <translation id="7376553024552204454">移動時にマウスカーソルを強調表示する</translation>
 <translation id="7377451353532943397">センサーへのアクセスを引き続きブロックする</translation>
+<translation id="7378611153938412599">脆弱なパスワードは簡単に推測されてしまいます。安全なパスワードを作成してください。<ph name="BEGIN_LINK" />セキュリティに関する他のヒントを見る<ph name="END_LINK" /></translation>
 <translation id="73786666777299047">Chrome ウェブストアを開きます</translation>
 <translation id="7378812711085314936">データ接続を行う</translation>
 <translation id="7380622428988553498">デバイス名に無効な文字が含まれています</translation>
@@ -5914,6 +5925,7 @@
 <translation id="7959074893852789871">ファイルに含まれる複数の証明書のうち、一部をインポートできませんでした:</translation>
 <translation id="7961015016161918242">使用しない</translation>
 <translation id="7963001036288347286">タッチパッド アクセラレーション</translation>
+<translation id="7963608432878156675">この名前は、他のデバイスの Bluetooth やネットワーク接続で表示されます</translation>
 <translation id="7963826112438303517">アシスタントによって、これらの録音データと音声によるリクエストからお客様の音声モデルが作成、更新されます。この音声モデルは、Voice Match をオンにしているデバイスにのみ保存されます。音声認識の確認や再認識は、[アシスタントの設定] で行います。</translation>
 <translation id="7966241909927244760">画像アドレスをコピー(&amp;C)</translation>
 <translation id="7966571622054096916">{COUNT,plural, =1{ブックマーク リストに 1 個のアイテムがあります}other{ブックマーク リストに {COUNT} 個のアイテムがあります}}</translation>
@@ -6376,6 +6388,7 @@
 <translation id="850875081535031620">有害なソフトウェアは見つかりませんでした</translation>
 <translation id="8509177919508253835">セキュリティ キーをリセットして PIN を作成します</translation>
 <translation id="8509646642152301857">スペルチェック辞書をダウンロードできませんでした。</translation>
+<translation id="8512396579636492893">{COUNT,plural, =0{脆弱なパスワードは検出されませんでした}=1{脆弱なパスワードが {COUNT} 件検出されました}other{脆弱なパスワードが {COUNT} 件検出されました}}</translation>
 <translation id="8512476990829870887">プロセスを終了</translation>
 <translation id="851263357009351303"><ph name="HOST" /> の画像を常に表示する</translation>
 <translation id="8513108775083588393">自動回転</translation>
diff --git a/chrome/app/resources/generated_resources_ka.xtb b/chrome/app/resources/generated_resources_ka.xtb
index c0f4f8a..519b4373 100644
--- a/chrome/app/resources/generated_resources_ka.xtb
+++ b/chrome/app/resources/generated_resources_ka.xtb
@@ -17,6 +17,7 @@
 <translation id="1012794136286421601">მიმდინარეობს თქვენი დოკუმენტების, ფურცლების, სლაიდების და ნახატების ფაილების სინქრონიზაცია. გახსენით Google Drive პროგრამა, რათა მიიღოთ წვდომა მათზე ონლაინში ან ოფლაინში.</translation>
 <translation id="1012876632442809908">USB-C მოწყობილობა (წინა პორტი)</translation>
 <translation id="1013707859758800957">დაცულ გარემოში არმყოფ დანამატს ამ გვერდზე გაშვების უფლება მიეცა.</translation>
+<translation id="1015041505466489552">TrackPoint</translation>
 <translation id="1015318665228971643">საქაღალდის სახელის რედაქტირება</translation>
 <translation id="1015578595646638936">{NUM_DAYS,plural, =1{დღეს <ph name="DEVICE_TYPE" />-ის განახლების ბოლო დღეა}other{განაახლეთ <ph name="DEVICE_TYPE" /> {NUM_DAYS} დღის განმავლობაში}}</translation>
 <translation id="1016566241875885511">დამატებითი ინფორმაცია (არასავალდებულო)</translation>
diff --git a/chrome/app/resources/generated_resources_kk.xtb b/chrome/app/resources/generated_resources_kk.xtb
index 546da0a..2a20ef2 100644
--- a/chrome/app/resources/generated_resources_kk.xtb
+++ b/chrome/app/resources/generated_resources_kk.xtb
@@ -925,6 +925,7 @@
 <translation id="204914487372604757">Таңбаша жасау</translation>
 <translation id="2050339315714019657">Портреттік</translation>
 <translation id="2053312383184521053">Әрекетсіз күй деректері</translation>
+<translation id="2054665754582400095">Бар болу деректері</translation>
 <translation id="2055585478631012616">Осы сайттардан, оның ішінде ашық қойындылардан шығып кетесіз.</translation>
 <translation id="205560151218727633">Google Assistant логотипі</translation>
 <translation id="2058456167109518507">Құрылғы анықталды</translation>
@@ -953,7 +954,7 @@
 <translation id="2090165459409185032">Есептік жазба ақпаратын қалпына келтіру үшін мына сілтемеге өтіңіз: google.com/accounts/recovery</translation>
 <translation id="2090876986345970080">Жүйелік қауіпсіздік параметрі</translation>
 <translation id="2091887806945687916">Дыбыс</translation>
-<translation id="209539936453343974">Ата-ана бақылауын орнату үшін балада ата-анасы басқаратын Google есептік жазбасы болуы қажет. <ph name="DEVICE_TYPE_PLURAL" /> құрылғылары ата-анаға Family Link қолданбасы арқылы пайдалану уақытын шектеуге, веб-сайттарды мақұлдауға не бөгеуге және тағы басқа әрекеттерді орындауға мүмкіндік береді. Егер балаға Google Classroom сияқты сайттарда сынып жұмыстарын жасау керек болса, мектеп есептік жазбасын кейінірек қосуға болады.</translation>
+<translation id="209539936453343974">Ата-ана бақылауын орнату үшін балада ата-анасы басқаратын Google есептік жазбасы болуы қажет. <ph name="DEVICE_TYPE_PLURAL" /> құрылғылары ата-анаға Family Link қолданбасы арқылы пайдалану уақытын шектеуге, веб-сайттарды мақұлдауға не бөгеуге және тағы басқа әрекеттерді орындауға мүмкіндік береді. Егер балаға Google Classroom сияқты сайттарда оқу жұмыстарын жасау керек болса, мектеп есептік жазбасын кейінірек қосуға болады.</translation>
 <translation id="2096715839409389970">Бөгде сайттардың cookie файлдарын тазалау</translation>
 <translation id="2097372108957554726">Жаңа құрылғыларды тіркеу үшін Chrome жүйесіне кіру қажет</translation>
 <translation id="2098805196501063469">Қалған құпия сөздерді тексеру</translation>
@@ -1211,6 +1212,7 @@
 <translation id="2387052489799050037">Негізгі экранға өту</translation>
 <translation id="2387458720915042159">Прокси-сервер байланысының түрі</translation>
 <translation id="2390347491606624519">Прокси-серверге қосылу мүмкін емес, қайта кіріңіз</translation>
+<translation id="2390782873446084770">Wi-Fi деректерін синхрондау</translation>
 <translation id="2391082728065870591">Пікірлер есебін жіберу</translation>
 <translation id="2391419135980381625">Стандартты қаріп</translation>
 <translation id="2392163307141705938"><ph name="IDS_SHORT_PRODUCT_NAME" /> үшін ата-анаңыз белгілеген уақыт шектеуіне жеттіңіз.</translation>
@@ -1867,6 +1869,7 @@
 <translation id="3157931365184549694">Қалпына келтіру</translation>
 <translation id="3158033540161634471">Саусақ ізін реттеңіз</translation>
 <translation id="3159493096109238499">Қоңыр сарғыш</translation>
+<translation id="3159978855457658359">Құрылғы атауын өзгерту</translation>
 <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (жабдық қолдауы бар)</translation>
 <translation id="3161522574479303604">Барлық тілдер</translation>
 <translation id="3162853326462195145">Оқу есептік жазбасы</translation>
@@ -1924,7 +1927,7 @@
 <translation id="324849028894344899"><ph name="WINDOW_TITLE" /> – желі қатесі</translation>
 <translation id="3248902735035392926">Қауіпсіздік маңызды. Сәл уақытыңызды бөліп, <ph name="BEGIN_LINK" />кеңейтімдерді тексеріңіз<ph name="END_LINK" />.</translation>
 <translation id="3251759466064201842">&lt;Сертификаттың бөлігі емес&gt;</translation>
-<translation id="325238099842880997">Балалардың ойнауына, желіні шарлауына және сынып жұмыстарына көмектесу үшін цифрлық құрылғыларды пайдаланудың негізгі ережелерін белгілеңіз.</translation>
+<translation id="325238099842880997">Балалардың ойнауына, желіні шарлауына және оқу жұмыстарына көмектесу үшін цифрлық құрылғыларды пайдаланудың негізгі ережелерін белгілеңіз.</translation>
 <translation id="3253225298092156258">Қолжетімді емес</translation>
 <translation id="3253448572569133955">Белгісіз есептік жазба</translation>
 <translation id="3254084468305910013">{COUNT,plural, =0{Қауіпсіздік мәселесі табылмады.}=1{{COUNT} қауіпсіздік мәселесі табылды.}other{{COUNT} қауіпсіздік мәселесі табылды.}}</translation>
@@ -3227,6 +3230,7 @@
 <translation id="4761104368405085019">Микрофоныңызды пайдалану</translation>
 <translation id="4762718786438001384">Құрылғы дискінде бос орын тым аз қалды</translation>
 <translation id="4763408175235639573">Осы бетті ашқанда, мына cookie файлдары орнатылды</translation>
+<translation id="4764368918650455114">Екі құрылғының да құлпы ашық, бір-біріне жақын және Bluetooth функциялары қосулы екеніне көз жеткізіңіз. Егер Chromebook құрылғысымен бөлісетін болсаңыз, Nearby Share қосулы (уақытты таңдау арқылы күй аумағын ашып, Nearby Share функциясын таңдаңыз) екеніне көз жеткізіңіз. <ph name="LINK_BEGIN" />Толығырақ<ph name="LINK_END" /></translation>
 <translation id="4765582662863429759">Android Messages қолданбасына хабарларды телефоннан Chromebook құрылғысына жіберуге мүмкіндік береді</translation>
 <translation id="476598255842811483">Құрылғыда Nearby Share ашылмаса, ешкім</translation>
 <translation id="4768332406694066911">Осы ұйымдардан алынған және сізді анықтайтын сертификаттар бар</translation>
@@ -3389,6 +3393,7 @@
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Бұл қолданбаны әкімшіңіз орнатты.</translation>
 <translation id="4964455510556214366">Реттеу</translation>
+<translation id="496446150016900060">Wi-Fi желілерін телефонмен синхрондау</translation>
 <translation id="4965808351167763748">Шынымен бұл құрылғыны Hangouts Meet қызметін іске қосу үшін реттегіңіз келе ме?</translation>
 <translation id="496888482094675990">Файлдар қолданбасы Google Drive қызметінде, сыртқы жадта немесе Chrome OS құрылғысында сақталған файлдарыңызға жылдам кіру мүмкіндігін береді.</translation>
 <translation id="4971412780836297815">Аяқталғанда ашу</translation>
@@ -3695,6 +3700,7 @@
 <translation id="5341980496415249280">Күте тұрыңыз, қысылуда...</translation>
 <translation id="5342091991439452114">PIN коды кемінде <ph name="MINIMUM" /> таңбадан құралуы керек</translation>
 <translation id="5344036115151554031">Linux қалпына келтірілуде</translation>
+<translation id="5345916423802287046">Есептік жазбаға кірген кезде, қолданбаны іске қосу</translation>
 <translation id="5350293332385664455">Google Assistant қызметін өшіру</translation>
 <translation id="535123479159372765">Мәтін басқа құрылғыдан көшірілді</translation>
 <translation id="5352033265844765294">Уақыт белгілеу</translation>
@@ -4004,6 +4010,7 @@
 <translation id="5704875434923668958">Синхрондалуда:</translation>
 <translation id="5705005699929844214">Арнайы мүмкіндіктер опцияларын әрдайым көрсету</translation>
 <translation id="5705882733397021510">Артқа</translation>
+<translation id="5707117624115653804">Осы параметрді қолдайтын қолданбалар мен сайттар үшін субтитрлер өлшемін және стильді реттеңіз.</translation>
 <translation id="5707185214361380026">Келесіден кеңейтімді жүктеу сәтсіз аяқталды:</translation>
 <translation id="5708171344853220004">Microsoft Principal Name</translation>
 <translation id="5709557627224531708">Chrome браузерін әдепкі етіп орнатыңыз</translation>
@@ -4167,6 +4174,7 @@
 <translation id="5904614460720589786">Конфигурациядағы қатеге байланысты <ph name="APP_NAME" /> орнатылмады. Әкімшіге хабарласыңыз. Қате коды: <ph name="ERROR_CODE" />.</translation>
 <translation id="5906655207909574370">Сәл қалды. Жаңартуды аяқтау үшін құрылғыны қайта іске қосыңыз.</translation>
 <translation id="5906732635754427568">Бұл қолданбамен байланыстырылған деректер бұл құрылғыдан өшіріледі.</translation>
+<translation id="5908474332780919512">Есептік жазбаға кірген кезде, қолданбаны іске қосу</translation>
 <translation id="5908695239556627796">Тінтуірді айналдыру жылдамдығы</translation>
 <translation id="5908769186679515905">Сайттарда Flash қолданбасының іске қосылуын бөгеу</translation>
 <translation id="5910363049092958439">Кескінді басқаша са&amp;қтау…</translation>
@@ -4706,6 +4714,7 @@
 <translation id="6532527800157340614">Кіру токенін алу мүмкін болмағандықтан, жүйеге кіре алмадыңыз. Желі байланысын тексеріп, қайталап көріңіз.</translation>
 <translation id="6532663472409656417">Кәсіпорында тіркелген</translation>
 <translation id="6535331821390304775"><ph name="ORIGIN" /> бетіне осындай сілтемелерді байланыстырылған қолданбада әрдайым ашуға рұқсат етілсін</translation>
+<translation id="6537613839935722475">Атауда әріптерді, сандарды және сызықшаларды (-) пайдалануға болады.</translation>
 <translation id="6538635548667167211">Қазіргі дерек трафигінің параметрі: "Мобильдік интернет"</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />Ескертпе:<ph name="END_BOLD" /> не істеп жатқаныңызды білсеңіз немесе сізден орындауды сұраған болса ғана қосыңыз, себебі деректерді жинақтау өнімділікті нашарлатуы мүмкін.</translation>
 <translation id="6541638731489116978">Бұл сайттың қозғалыс датчиктеріңізді пайдалануына тыйым салынды.</translation>
@@ -4794,6 +4803,7 @@
 <translation id="6650234781371031356"><ph name="WEBSITE" /> сайтының құпия сөзі осы құрылғыда және Google есептік жазбасында сақталған. Қайсысын жойғыңыз келеді?</translation>
 <translation id="665061930738760572">&amp;Жаңа терезеде ашу</translation>
 <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="6654509035557065241">Қалаған желіні таңдау</translation>
 <translation id="6655190889273724601">Әзірлеуші режимі</translation>
@@ -5021,7 +5031,7 @@
 <translation id="6922745772873733498">Басып шығару үшін PIN кодыңызды енгізіңіз.</translation>
 <translation id="6923132443355966645">Айналдыру/Басу</translation>
 <translation id="6923633482430812883">Қате шықты. Сіз жалғанып жатқан файл сервері SMBv2 немесе кейінгі нұсқасын қолдайтынын тексеріңіз.</translation>
-<translation id="6929126689972602640">Мектеп есептік жазбалары үшін ата-ана бақылауына қолдау көрсетілмейді. Google Classroom және басқа да сынып жұмыстарын үйде істеуге арналған веб-сайттарды пайдалануға мектеп есептік жазбасын қосу үшін алдымен баланың жеке есептік жазбасымен кіріңіз. Мектеп есептік жазбасын кейін параметрлерден қоса аласыз.</translation>
+<translation id="6929126689972602640">Мектеп есептік жазбалары үшін ата-ана бақылауына қолдау көрсетілмейді. Google Classroom және басқа да оқу жұмыстарын үйде істеуге арналған веб-сайттарды пайдалануға мектеп есептік жазбасын қосу үшін алдымен баланың жеке есептік жазбасымен кіріңіз. Мектеп есептік жазбасын кейін параметрлерден қоса аласыз.</translation>
 <translation id="6929760895658557216">Ok Google</translation>
 <translation id="6930036377490597025">Сыртқы қауіпсіздік кілті немесе орнатылған датчик</translation>
 <translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{Кеңейтім қабылданбады}other{# кеңейтім қабылданбады}}</translation>
@@ -5397,6 +5407,7 @@
 <translation id="7375235221357833624">{0,plural, =1{Құрылғыны 1 сағат ішінде жаңарту керек}other{Құрылғыны # сағат ішінде жаңарту керек}}</translation>
 <translation id="7376553024552204454">Тінтуір курсорын қозғалыс барысында бөлектеу</translation>
 <translation id="7377451353532943397">Датчиктерді пайдалануға тыйым салуды тоқтатпау</translation>
+<translation id="7378611153938412599">Құпия сөзіңіз оңай болса, оны табу да оңай. Күрделі құпия сөз орнатыңыз. <ph name="BEGIN_LINK" />Қауіпсіздікке қатысты басқа кеңестерді де көріңіз.<ph name="END_LINK" /></translation>
 <translation id="73786666777299047">Chrome Web Store қызметін ашу</translation>
 <translation id="7378812711085314936">Деректер қосылымына қол жеткізу</translation>
 <translation id="7380622428988553498">Құрылғы атауында жарамсыз таңбалар бар.</translation>
@@ -5921,6 +5932,7 @@
 <translation id="7959074893852789871">Файлда кейбіреулері импортталмаған көптеген сертификаттар бар:</translation>
 <translation id="7961015016161918242">Ешқашан</translation>
 <translation id="7963001036288347286">Сенсорлық тақтаны жылдамдату</translation>
+<translation id="7963608432878156675">Бұл атау Bluetooth және желі байланыстары үшін басқа құрылғыларға көрінеді.</translation>
 <translation id="7963826112438303517">Жазбалар мен дауыстық сұраулар негізінде Assistant қолданбасы дауысыңыздың үлгісін жасайды және жаңартады, ол Voice Match функциясы қосулы құрылғыларда ғана сақталады. Дауыс пәрмендерін көргіңіз не қайта жазғыңыз келсе, Assistant параметрлеріне өтіңіз.</translation>
 <translation id="7966241909927244760">Кескін мекенжайын к&amp;өшіру</translation>
 <translation id="7966571622054096916">{COUNT,plural, =1{Бетбелгілер тізімінде 1 элемент бар.}other{Бетбелгілер тізімінде {COUNT} элемент бар.}}</translation>
@@ -6384,6 +6396,7 @@
 <translation id="850875081535031620">Зиянды бағдарлама табылған жоқ</translation>
 <translation id="8509177919508253835">Қауіпсіздік кілтін бастапқы күйге қайтару және PIN кодтарын жасау</translation>
 <translation id="8509646642152301857">Емлені тексеру сөздігін жүктеу сәтсіз аяқталды.</translation>
+<translation id="8512396579636492893">{COUNT,plural, =0{Ешқандай оңай құпия сөз табылмады.}=1{{COUNT} оңай құпия сөз табылды.}other{{COUNT} оңай құпия сөз табылды.}}</translation>
 <translation id="8512476990829870887">Процесті аяқтау</translation>
 <translation id="851263357009351303"><ph name="HOST" /> хостына кескіндерді әрқашан көрсету мүмкіндігін беру</translation>
 <translation id="8513108775083588393">Автоматты бұру</translation>
diff --git a/chrome/app/resources/generated_resources_km.xtb b/chrome/app/resources/generated_resources_km.xtb
index 437880e..95bca39 100644
--- a/chrome/app/resources/generated_resources_km.xtb
+++ b/chrome/app/resources/generated_resources_km.xtb
@@ -17,6 +17,7 @@
 <translation id="1012794136286421601">ឯកសារ តារាងបញ្ជី ស្លាយ៍ និងឯកសារគំនូររបស់អ្នកកំពុងត្រូវបានធ្វើសមកម្ម។ បើកកម្មវិធី Google Drive ដើម្បីចូលប្រើពួកវានៅលើអ៊ីនធឺណិត ឬនៅក្រៅបណ្តាញ។</translation>
 <translation id="1012876632442809908">ឧបករណ៍ USB-C (រន្ធខាងមុខ)</translation>
 <translation id="1013707859758800957">កម្មវិធីជំនួយដែលមិនបានសេនបក់ត្រូវបានអនុញ្ញាតឲ្យដំណើរការនៅលើទំព័រនេះ។</translation>
+<translation id="1015041505466489552">TrackPoint</translation>
 <translation id="1015318665228971643">កែសម្រួលឈ្មោះថត</translation>
 <translation id="1015578595646638936">{NUM_DAYS,plural, =1{ថ្ងៃចុងក្រោយដែលត្រូវដំឡើងកំណែ <ph name="DEVICE_TYPE" />}other{ដំឡើងកំណែ <ph name="DEVICE_TYPE" /> ​ក្នុងរយៈពេល {NUM_DAYS} ថ្ងៃ}}</translation>
 <translation id="1016566241875885511">ព័ត៌មានបន្ថែម (ស្រេចចិត្ត)</translation>
@@ -928,6 +929,7 @@
 <translation id="204914487372604757">បង្កើតផ្លូវកាត់</translation>
 <translation id="2050339315714019657">បញ្ឈរ</translation>
 <translation id="2053312383184521053">ទិន្នន័យក្នុងស្ថានភាពទុកចោល</translation>
+<translation id="2054665754582400095">​វត្តមានរបស់អ្នក</translation>
 <translation id="2055585478631012616">អ្នក​នឹង​ត្រូវ​នាំចេញ​ពី​គេហទំព័រ​ទាំងនេះ រួមទាំង​នៅក្នុង​ផ្ទាំង​បើក​ផងដែរ</translation>
 <translation id="205560151218727633">រូបសញ្ញា Google ជំនួយការ</translation>
 <translation id="2058456167109518507">បាន​រកឃើញ​ឧបករណ៍</translation>
@@ -1214,6 +1216,7 @@
 <translation id="2387052489799050037">ចូលទំព័រ​ដើម</translation>
 <translation id="2387458720915042159">ប្រភេទ​នៃការ​តភ្ជាប់​ប្រូកស៊ី</translation>
 <translation id="2390347491606624519">មិនអាចភ្ជាប់ទៅប្រូកស៊ីបានទេ សូមចូលម្ដងទៀត</translation>
+<translation id="2390782873446084770">Wi-Fi Sync</translation>
 <translation id="2391082728065870591">ផ្ញើ​របាយការណ៍អំពីមតិកែលម្អ</translation>
 <translation id="2391419135980381625">ពុម្ពអក្សរបទដ្ឋាន</translation>
 <translation id="2392163307141705938">អ្នកបានឈានដល់រយៈពេលកំណត់​ ដែលមាតាបិតារបស់អ្នក​បានកំណត់សម្រាប់ <ph name="IDS_SHORT_PRODUCT_NAME" /> ហើយ។</translation>
@@ -1870,6 +1873,7 @@
 <translation id="3157931365184549694">ស្តារ</translation>
 <translation id="3158033540161634471">រៀបចំស្នាម​ម្រាមដៃរបស់អ្នក</translation>
 <translation id="3159493096109238499">ព្រហូត</translation>
+<translation id="3159978855457658359">កែឈ្មោះ​ឧបករណ៍</translation>
 <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (នៅក្នុង​ផ្នែក​រឹង)</translation>
 <translation id="3161522574479303604">ភាសាទាំងអស់</translation>
 <translation id="3162853326462195145">គណនីសាលារៀន</translation>
@@ -3230,6 +3234,7 @@
 <translation id="4761104368405085019">ប្រើម៉ៃក្រូហ្វូនរបស់អ្នក</translation>
 <translation id="4762718786438001384">ទំហំផ្ទុកក្នុងឧបករណ៍សល់តិចណាស់</translation>
 <translation id="4763408175235639573">ខូគីខាងក្រោមត្រូវបានកំណត់ នៅពេលដែលអ្នកបានមើលទំព័រនេះ</translation>
+<translation id="4764368918650455114">សូមប្រាកដថា​ឧបករណ៍​ទាំងពីរ​មិនជាប់សោ នៅជិតគ្នា និងបានបើក​ប៊្លូធូស​។ ប្រសិនបើអ្នកកំពុងចែករំលែកជាមួយ Chromebook សូមប្រាកដថា វាបានបើកការ​ចែករំលែកនៅ​ជិត (បើកតំបន់ស្ថានភាពដោយជ្រើសរើសពេលវេលា រួចជ្រើសរើសការ​ចែករំលែកនៅ​ជិត)។ <ph name="LINK_BEGIN" />ស្វែងយល់បន្ថែម<ph name="LINK_END" /></translation>
 <translation id="4765582662863429759">អនុញ្ញាត​ឱ្យកម្មវិធី Android Messages បញ្ជូន​សារបន្ត​ពីទូរសព្ទទៅ​ Chromebook របស់អ្នក</translation>
 <translation id="476598255842811483">នរណាក៏មិនបានដែរ ប្រសិនបើអ្នកមិនបើកការ​ចែករំលែកនៅ​ជិតលើឧបករណ៍របស់អ្នក</translation>
 <translation id="4768332406694066911">អ្នកមានវិញ្ញាបនបត្រពីស្ថាប័នទាំងនេះដែលកំណត់អត្តសញ្ញាណរបស់អ្នក៖</translation>
@@ -3392,6 +3397,7 @@
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">អ្នកគ្រប់គ្រង​របស់អ្នក​បានដំឡើង​កម្មវិធីនេះ។</translation>
 <translation id="4964455510556214366">ការរៀបចំ</translation>
+<translation id="496446150016900060">ធ្វើ​សម​កាល​កម្មបណ្ដាញ Wi-Fi ជាមួយទូរសព្ទរបស់អ្នក</translation>
 <translation id="4965808351167763748">តើអ្នក​ប្រាកដថា​ចង់​រៀបចំឧបករណ៍នេះ ដើម្បីដំណើរការ Hangouts Meet ដែរទេ?</translation>
 <translation id="496888482094675990">កម្មវិធីឯកសារផ្តល់ការចូលប្រើយ៉ាងរហ័សទៅឯកសារដែលអ្នកបានរក្សាទុកនៅក្នុង Google Drive ឧបករណ៍ផ្ទុកទិន្នន័យខាងក្រៅ ឬឧបករណ៍ Chrome OS របស់អ្នក។</translation>
 <translation id="4971412780836297815">បើកនៅពេលរួចរាល់</translation>
@@ -3698,6 +3704,7 @@
 <translation id="5341980496415249280">សូមរង់ចាំ កំពុងវេចខ្ចប់...</translation>
 <translation id="5342091991439452114">កូដ PIN ត្រូវ​មាន​លេខ​យ៉ាង​ហោច <ph name="MINIMUM" /> ខ្ទង់</translation>
 <translation id="5344036115151554031">កំពុងស្ដារ Linux</translation>
+<translation id="5345916423802287046">ចាប់ផ្ដើមកម្មវិធី នៅពេលអ្នកចូល</translation>
 <translation id="5350293332385664455">បិទ Google ជំនួយការ</translation>
 <translation id="535123479159372765">អត្ថបទដែលបានចម្លង​ពីឧបករណ៍ផ្សេងទៀត</translation>
 <translation id="5352033265844765294">ការបិទតែមពេលវេលា</translation>
@@ -4008,6 +4015,7 @@
 <translation id="5704875434923668958">កំពុង​ធ្វើសម​កាលកម្ម​ទៅ</translation>
 <translation id="5705005699929844214">បង្ហាញ​ជម្រើស​ភាពងាយស្រួល​ជានិច្ច</translation>
 <translation id="5705882733397021510">ថយក្រោយ</translation>
+<translation id="5707117624115653804">ប្ដូររចនាប័ទ្ម និងទំហំអក្សររត់តាមបំណង សម្រាប់កម្មវិធី និងគេហទំព័រដែលអាចប្រើការកំណត់នេះ</translation>
 <translation id="5707185214361380026">បានបរាជ័យក្នុងការដំណើរការកម្មវិធីបន្ថែមពី៖</translation>
 <translation id="5708171344853220004">Microsoft Principal Name</translation>
 <translation id="5709557627224531708">កំណត់ Chrome ជាកម្មវិធីរុករកតាមអ៊ីនធឺណិត​លំនាំដើម​របស់អ្នក</translation>
@@ -4171,6 +4179,7 @@
 <translation id="5904614460720589786">មិនអាចរៀបចំ <ph name="APP_NAME" /> បានទេ ដោយសារ​មានបញ្ហា​ក្នុងការកំណត់រចនាសម្ព័ន្ធ។ សូមទាក់ទង​អ្នកគ្រប់គ្រង​របស់អ្នក។ លេខ​កូដ​បញ្ហា៖ <ph name="ERROR_CODE" />។</translation>
 <translation id="5906655207909574370">ការអាប់ដេតជិតបញ្ចប់ហើយ! ចាប់ផ្តើមឧបករណ៍របស់អ្នកឡើងវិញដើម្បីបញ្ចប់ការអាប់ដេត។</translation>
 <translation id="5906732635754427568">ទិន្នន័យ​ដែល​ពាក់ព័ន្ធ​ជាមួយ​កម្មវិធីនេះ​នឹងត្រូវ​បាន​លុបចេញ​ពីឧបករណ៍​នេះ។</translation>
+<translation id="5908474332780919512">ចាប់ផ្ដើមកម្មវិធី នៅពេលអ្នកចូល</translation>
 <translation id="5908695239556627796">ល្បឿនរំកិលកណ្តុរ</translation>
 <translation id="5908769186679515905">រារាំងគេហទំព័រមិនឲ្យដំណើរការ Flash</translation>
 <translation id="5910363049092958439">រក្សាទុករូបភាពជា...</translation>
@@ -4710,6 +4719,7 @@
 <translation id="6532527800157340614">ការចូលគណនីមិន​បានសម្រេចទេ ដោយសារមិនអាចទាញយកទិន្នន័យ​ចូលរបស់អ្នក។ សូម​ពិនិត្យ​មើល​ការ​តភ្ជាប់​បណ្ដាញ​របស់​អ្នក​ រួច​ព្យាយាម​ម្ដង​ទៀត​។</translation>
 <translation id="6532663472409656417">បានចុះឈ្មោះ​សហគ្រាស</translation>
 <translation id="6535331821390304775">អនុញ្ញាតឱ្យ <ph name="ORIGIN" /> បើកតំណប្រភេទនេះនៅក្នុងកម្មវិធីដែលពាក់ព័ន្ធជានិច្ច</translation>
+<translation id="6537613839935722475">ឈ្មោះអាចប្រើអក្សរ លេខ និងសហសញ្ញា (-)</translation>
 <translation id="6538635548667167211">ការកំណត់​ការប្រើទិន្នន័យ​បច្ចុប្បន្នគឺ​ "ទិន្នន័យទូរសព្ទចល័ត"</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />ចំណាំ៖<ph name="END_BOLD" /> បើកដំណើរការ ប្រសិនបើអ្នកដឹងថាអ្នកកំពុងធ្វើអ្វី ឬប្រសិនបើអ្នកត្រូវបានសួរឲ្យធ្វើដូច្នេះប៉ុណ្ណោះ ដោយសារការប្រមូលទិន្នន័យអាចធ្វើឲ្យប្រតិបត្តិការយឺត។</translation>
 <translation id="6541638731489116978">គេហទំព័រ​នេះត្រូវបាន​ទប់ស្កាត់​មិនឱ្យចូលប្រើ​ឧបករណ៍​ចាប់​ចលនា​របស់អ្នក។​</translation>
@@ -4798,6 +4808,7 @@
 <translation id="6650234781371031356">ពាក្យសម្ងាត់របស់អ្នកសម្រាប់ <ph name="WEBSITE" /> ត្រូវបានរក្សាទុកនៅលើឧបករណ៍នេះ និងនៅក្នុងគណនី Google របស់អ្នក។ តើអ្នកចង់លុបពាក្យសម្ងាត់មួយណា?</translation>
 <translation id="665061930738760572">បើកនៅក្នុងផ្ទាំងថ្មី</translation>
 <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="6654509035557065241">កំណត់​បណ្ដាញ​ជាអាទិភាព</translation>
 <translation id="6655190889273724601">របៀបអ្នកអភិវឌ្ឈន៍កម្មវិធី</translation>
@@ -5401,6 +5412,7 @@
 <translation id="7375235221357833624">{0,plural, =1{ដំឡើងកំណែ​ឧបករណ៍​ក្នុងរយៈពេល​មួយ​ម៉ោង​ទៀត}other{ដំឡើងកំណែ​ឧបករណ៍​ក្នុងរយៈពេល # ម៉ោង​ទៀត}}</translation>
 <translation id="7376553024552204454">ហាយឡាយ៍ទស្សន៍ទ្រនិចកណ្តុរនៅពេលវារំកិល</translation>
 <translation id="7377451353532943397">បន្ត​ទប់ស្កាត់​ការចូលប្រើឧបករណ៍ចាប់​សញ្ញា</translation>
+<translation id="7378611153938412599">ពាក្យសម្ងាត់ខ្សោយ​មានភាពងាយស្រួលក្នុងការ​ទាយដឹង​។ សូមប្រាកដថា​អ្នកកំពុង​បង្កើត​ពាក្យសម្ងាត់ខ្លាំង​។ <ph name="BEGIN_LINK" />មើលគន្លឹះ​សុវត្ថិភាព​ច្រើនទៀត។<ph name="END_LINK" /></translation>
 <translation id="73786666777299047">បើក Chrome Web Store</translation>
 <translation id="7378812711085314936">ទទួលយកការតភ្ជាប់ទិន្នន័យ</translation>
 <translation id="7380622428988553498">ឈ្មោះឧបករណ៍​មានតួអក្សរ​មិនត្រឹមត្រូវ</translation>
@@ -5925,6 +5937,7 @@
 <translation id="7959074893852789871">ឯកសារបានផ្ទុកវិញ្ញាបនប័ត្រច្រើន ហើយពួកវាមួយចំនួនមិនត្រូវបាននាំចូលទេ៖</translation>
 <translation id="7961015016161918242">មិនដែល</translation>
 <translation id="7963001036288347286">ការបង្កើន​ល្បឿន​ផ្ទាំងប៉ះ</translation>
+<translation id="7963608432878156675">ឧបករណ៍ផ្សេងទៀតអាចមើលឃើញឈ្មោះនេះសម្រាប់ការតភ្ជាប់បណ្ដាញ និងប៊្លូធូស</translation>
 <translation id="7963826112438303517">ជំនួយការ​របស់អ្នកប្រើ​ការថតសំឡេង​ទាំងនេះ និងសំណើដែលបាននិយាយ​របស់អ្នក ដើម្បីបង្កើត និងធ្វើបច្ចុប្បន្នភាព​គំរូសំឡេងរបស់អ្នក​ដែលត្រូវ​បានរក្សាទុកនៅលើ​ឧបករណ៍ដែលអ្នក​បានបើកកម្មវិធី Voice Match ប៉ុណ្ណោះ។ មើល ឬបង្ហាត់សកម្មភាពសំឡេង​ឡើងវិញនៅក្នុង​ការកំណត់ជំនួយការ។</translation>
 <translation id="7966241909927244760">ថតចម្លងអាសយដ្ឋានរូបភាព</translation>
 <translation id="7966571622054096916">{COUNT,plural, =1{ធាតុ 1 នៅក្នុងបញ្ជីចំណាំ}other{ធាតុ {COUNT} នៅក្នុងបញ្ជីចំណាំ}}</translation>
@@ -6388,6 +6401,7 @@
 <translation id="850875081535031620">រកមិន​ឃើញ​កម្មវិធី​គ្រោះថ្នាក់ទេ</translation>
 <translation id="8509177919508253835">កំណត់​សោសុវត្ថិភាព​ឡើងវិញ និង​បង្កើត​កូដ PIN</translation>
 <translation id="8509646642152301857">ការទាញយកវចនានុក្រមពិនិត្យការប្រកបបានបរាជ័យ។</translation>
+<translation id="8512396579636492893">{COUNT,plural, =0{រកមិនឃើញ​ពាក្យសម្ងាត់​ខ្សោយទេ}=1{បានរកឃើញពាក្យសម្ងាត់​ខ្សោយ {COUNT}}other{បានរកឃើញពាក្យសម្ងាត់​ខ្សោយ {COUNT}}}</translation>
 <translation id="8512476990829870887">បញ្ចប់ដំណើរការ</translation>
 <translation id="851263357009351303">អនុញ្ញាតឲ្យ <ph name="HOST" /> បង្ហាញរូបភាពជានិច្ច</translation>
 <translation id="8513108775083588393">បង្វិល​ស្វ័យ​ប្រវត្តិ</translation>
@@ -6861,7 +6875,7 @@
 <translation id="9039014462651733343">{NUM_ATTEMPTS,plural, =1{អ្នកអាច​បញ្ចូលបានតែម្ដង​ទៀតប៉ុណ្ណោះ។}other{អ្នកអាចបញ្ចូលបានតែ # ដងទៀតប៉ុណ្ណោះ។}}</translation>
 <translation id="9039663905644212491">PEAP</translation>
 <translation id="9040661932550800571">ធ្វើបច្ចុប្បន្នភាព​ពាក្យសម្ងាត់​សម្រាប់ <ph name="ORIGIN" />?</translation>
-<translation id="9041049756004505730">អាចមើលឃើញអក្សរ​រត់ក្នុងពេលជាក់ស្ដែង សូមចុច ⌘ + ជម្រើស + ព្រួញឡើងលើ ឬព្រួញចុះក្រោម ដើម្បីរំកិលការផ្ដោត</translation>
+<translation id="9041049756004505730">អាចមើលឃើញអក្សរ​រត់ក្នុងពេលជាក់ស្ដែង សូមចុច ⌘ + Option + ព្រួញឡើងលើ ឬព្រួញចុះក្រោម ដើម្បីរំកិលការផ្ដោត</translation>
 <translation id="9041692268811217999">ការចូល​ប្រើ​ឯកសារមូលដ្ឋាន​នៅលើ​ម៉ាស៊ីន​របស់អ្នក​ត្រូវបានបិទ​ដោយ​អ្នកគ្រប់គ្រង​របស់អ្នក</translation>
 <translation id="904224458472510106">ប្រតិបត្តិការនេះ​មិនអាច​ត្រឡប់វិញ​បានទេ</translation>
 <translation id="9042893549633094279">ភាពឯកជន និងសុវត្ថិភាព</translation>
diff --git a/chrome/app/resources/generated_resources_ko.xtb b/chrome/app/resources/generated_resources_ko.xtb
index a61e315..50623872 100644
--- a/chrome/app/resources/generated_resources_ko.xtb
+++ b/chrome/app/resources/generated_resources_ko.xtb
@@ -17,6 +17,7 @@
 <translation id="1012794136286421601">문서, 스프레드시트, 프레젠테이션, 드로잉 파일을 동기화하는 중입니다. Google 드라이브 앱을 열어 온라인이든 오프라인이든 관계없이 파일에 액세스할 수 있습니다.</translation>
 <translation id="1012876632442809908">USB-C 기기(전면 포트)</translation>
 <translation id="1013707859758800957">이 페이지에서 샌드박스 처리되지 않은 플러그인 실행을 허용했습니다.</translation>
+<translation id="1015041505466489552">TrackPoint</translation>
 <translation id="1015318665228971643">폴더 이름 수정</translation>
 <translation id="1015578595646638936">{NUM_DAYS,plural, =1{<ph name="DEVICE_TYPE" /> 업데이트 기한 마지막 날}other{<ph name="DEVICE_TYPE" /> 기기를 {NUM_DAYS}일 이내로 업데이트하세요}}</translation>
 <translation id="1016566241875885511">추가 정보(선택사항)</translation>
@@ -928,6 +929,7 @@
 <translation id="204914487372604757">바로가기 만들기</translation>
 <translation id="2050339315714019657">세로 방향</translation>
 <translation id="2053312383184521053">유휴 상태 데이터</translation>
+<translation id="2054665754582400095">활동</translation>
 <translation id="2055585478631012616">열려 있는 탭을 포함하여 이러한 사이트에서 로그아웃됩니다.</translation>
 <translation id="205560151218727633">Google 어시스턴트 로고</translation>
 <translation id="2058456167109518507">기기가 검색됨</translation>
@@ -956,7 +958,7 @@
 <translation id="2090165459409185032">계정 정보를 복구하려면 google.com/accounts/recovery 페이지로 이동하세요.</translation>
 <translation id="2090876986345970080">시스템 보안 설정</translation>
 <translation id="2091887806945687916">소리</translation>
-<translation id="209539936453343974">자녀 보호 기능을 설정하려면 자녀에게 부모가 관리하는 Google 계정이 있어야 합니다. 부모님은 <ph name="DEVICE_TYPE_PLURAL" />에서 Family Link 앱을 사용해 기기 사용 시간 한도를 설정하고, 웹사이트를 승인하거나 차단하는 등의 작업을 할 수 있습니다. 자녀가 Google 클래스룸과 같은 사이트에서 학교 과제를 해야 하는 경우 나중에 학교 계정을 추가하면 됩니다.</translation>
+<translation id="209539936453343974">자녀 보호 기능을 설정하려면 부모가 관리하는 자녀의 Google 계정이 있어야 합니다. 부모님은 <ph name="DEVICE_TYPE_PLURAL" />에서 Family Link 앱을 사용해 기기 사용 시간 한도를 설정하고, 웹사이트를 승인하거나 차단하는 등의 작업을 할 수 있습니다. 자녀가 Google 클래스룸과 같은 사이트에서 학교 과제를 해야 하는 경우 나중에 학교 계정을 추가하면 됩니다.</translation>
 <translation id="2096715839409389970">타사 쿠키 삭제</translation>
 <translation id="2097372108957554726">새 기기를 등록하려면 Chrome에 로그인하세요.</translation>
 <translation id="2098805196501063469">나머지 비밀번호 확인</translation>
@@ -1214,6 +1216,7 @@
 <translation id="2387052489799050037">홈으로 이동</translation>
 <translation id="2387458720915042159">프록시 연결 유형</translation>
 <translation id="2390347491606624519">프록시에 연결할 수 없음: 다시 로그인해 주세요</translation>
+<translation id="2390782873446084770">Wi-Fi 동기화</translation>
 <translation id="2391082728065870591">의견 보고서 보내기</translation>
 <translation id="2391419135980381625">표준 글꼴</translation>
 <translation id="2392163307141705938">부모님이 설정한 <ph name="IDS_SHORT_PRODUCT_NAME" /> 사용 제한 시간에 도달했습니다.</translation>
@@ -1687,7 +1690,7 @@
 <translation id="2932883381142163287">악용사례 신고</translation>
 <translation id="2933632078076743449">최종 업데이트</translation>
 <translation id="2934999512438267372">MIDI 기기 전체 제어 허용됨</translation>
-<translation id="2935654492420446828">나중에 학교 계정 추가하기</translation>
+<translation id="2935654492420446828">학교 계정 나중에 추가하기</translation>
 <translation id="2936851848721175671">백업 및 복원</translation>
 <translation id="2938225289965773019"><ph name="PROTOCOL" /> 링크 열기</translation>
 <translation id="2938845886082362843">보안 키에 저장된 로그인 데이터를 확인하고 삭제합니다.</translation>
@@ -1870,6 +1873,7 @@
 <translation id="3157931365184549694">복구</translation>
 <translation id="3158033540161634471">지문 설정</translation>
 <translation id="3159493096109238499">베이지</translation>
+<translation id="3159978855457658359">기기 이름 수정</translation>
 <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />](하드웨어에 백업됨)</translation>
 <translation id="3161522574479303604">모든 언어</translation>
 <translation id="3162853326462195145">학교 계정</translation>
@@ -3228,6 +3232,7 @@
 <translation id="4761104368405085019">마이크 사용</translation>
 <translation id="4762718786438001384">기기에 디스크 저장 공간 매우 부족</translation>
 <translation id="4763408175235639573">페이지를 열었을 때 다음 쿠키가 설정됨</translation>
+<translation id="4764368918650455114">두 기기가 모두 잠금 해제되어 있고 서로 가까이에 있으며 블루투스가 사용 설정되어 있어야 합니다. Chromebook과 공유하는 경우 Chromebook의 Nearby Share가 사용 설정되어 있는지 확인하세요. 시간, Nearby Share를 차례로 선택한 후 상태 영역에서 확인할 수 있습니다. <ph name="LINK_BEGIN" />자세히 알아보기<ph name="LINK_END" /></translation>
 <translation id="4765582662863429759">Android 메시지가 휴대전화의 문자 메시지를 Chromebook으로 전달하도록 허용합니다.</translation>
 <translation id="476598255842811483">기기에서 Nearby Share를 실행하지 않으면 아무도 공유할 수 없음</translation>
 <translation id="4768332406694066911">다음 기관에 사용자의 신원을 확인하는 인증서가 있습니다.</translation>
@@ -3390,6 +3395,7 @@
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">이 앱은 관리자가 설치했습니다.</translation>
 <translation id="4964455510556214366">배열</translation>
+<translation id="496446150016900060">휴대전화와 Wi-Fi 네트워크 동기화</translation>
 <translation id="4965808351167763748">이 기기를 설정하여 행아웃 Meet를 실행하시겠습니까?</translation>
 <translation id="496888482094675990">파일 앱을 사용하면 Google 드라이브, 외부 저장소, Chrome OS 기기에 저장한 파일에 신속하게 액세스할 수 있습니다.</translation>
 <translation id="4971412780836297815">완료되면 열기</translation>
@@ -3696,6 +3702,7 @@
 <translation id="5341980496415249280">잠시 기다려 주세요. 압축 중입니다...</translation>
 <translation id="5342091991439452114">PIN은 <ph name="MINIMUM" />자리 이상이어야 합니다.</translation>
 <translation id="5344036115151554031">Linux 복원 중</translation>
+<translation id="5345916423802287046">로그인 시 앱 실행</translation>
 <translation id="5350293332385664455">Google 어시스턴트 사용 중지</translation>
 <translation id="535123479159372765">다른 기기에서 텍스트가 복사됨</translation>
 <translation id="5352033265844765294">시간 기록</translation>
@@ -4005,6 +4012,7 @@
 <translation id="5704875434923668958">다음에 동기화</translation>
 <translation id="5705005699929844214">항상 접근성 옵션 표시</translation>
 <translation id="5705882733397021510">뒤로</translation>
+<translation id="5707117624115653804">이 설정을 지원하는 앱과 사이트에 적용할 자막 크기와 스타일을 맞춤설정합니다.</translation>
 <translation id="5707185214361380026">다음 위치에서 확장 프로그램을 로드하지 못했습니다.</translation>
 <translation id="5708171344853220004">Microsoft Principal Name</translation>
 <translation id="5709557627224531708">Chrome을 기본 브라우저로 설정</translation>
@@ -4168,6 +4176,7 @@
 <translation id="5904614460720589786">구성 문제로 인해 <ph name="APP_NAME" /> 앱을 설정할 수 없습니다. 관리자에게 문의하세요. 오류 코드: <ph name="ERROR_CODE" /></translation>
 <translation id="5906655207909574370">업데이트가 거의 완료되었습니다. 업데이트를 완료하려면 기기를 다시 시작하세요.</translation>
 <translation id="5906732635754427568">이 앱과 관련된 데이터가 이 기기에서 삭제됩니다.</translation>
+<translation id="5908474332780919512">로그인 시 앱 실행</translation>
 <translation id="5908695239556627796">마우스 스크롤 속도</translation>
 <translation id="5908769186679515905">사이트에서 Flash를 실행하지 못하도록 차단</translation>
 <translation id="5910363049092958439">이미지를 다른 이름으로 저장(&amp;V)...</translation>
@@ -4707,6 +4716,7 @@
 <translation id="6532527800157340614">액세스 토큰을 검색할 수 없어 로그인에 실패했습니다. 네트워크 연결을 확인한 다음 다시 시도해 보세요.</translation>
 <translation id="6532663472409656417">기업 등록됨</translation>
 <translation id="6535331821390304775">항상 <ph name="ORIGIN" />에서 연결된 앱에 있는 이 유형의 링크를 열도록 허용</translation>
+<translation id="6537613839935722475">이름에는 문자, 숫자, 하이픈(-)을 사용할 수 있습니다.</translation>
 <translation id="6538635548667167211">현재 데이터 사용 설정은 데이터입니다</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />참고:<ph name="END_BOLD" /> 데이터 수집으로 인해 성능이 감소할 수 있으므로 확신이 있는 경우 또는 요청을 받은 경우에만 사용하도록 설정합니다.</translation>
 <translation id="6541638731489116978">움직임 감지 센서 액세스가 차단된 사이트입니다.</translation>
@@ -4795,6 +4805,7 @@
 <translation id="6650234781371031356"><ph name="WEBSITE" />의 비밀번호가 이 기기와 Google 계정에 저장되어 있습니다. 어디에서 삭제하시겠습니까?</translation>
 <translation id="665061930738760572">새 창에서 열기(&amp;N)</translation>
 <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="6654509035557065241">선호 네트워크 설정</translation>
 <translation id="6655190889273724601">개발자 모드</translation>
@@ -5022,7 +5033,7 @@
 <translation id="6922745772873733498">인쇄하려면 PIN을 입력하세요.</translation>
 <translation id="6923132443355966645">스크롤/클릭</translation>
 <translation id="6923633482430812883">공유를 마운트하는 중 오류가 발생했습니다. 연결하려는 파일 서버가 SMBv2 이상을 지원하는지 확인하세요.</translation>
-<translation id="6929126689972602640">학교 계정에서는 자녀 보호 기능이 지원되지 않습니다. 집에서 학교 과제를 위해 Google 클래스룸 및 다른 웹사이트에 액세스할 수 있는 학교 계정을 추가하려면 먼저 자녀의 개인 계정으로 로그인하세요. 나중에 설정에서 학교 계정을 추가할 수 있습니다.</translation>
+<translation id="6929126689972602640">학교 계정에서는 자녀 보호 기능이 지원되지 않습니다. 집에서 학교 과제를 위해 Google 클래스룸 및 다른 웹사이트에 액세스할 수 있는 학교 계정을 추가하려면 먼저 자녀의 개인 계정으로 로그인하세요. 설정에서 학교 계정을 나중에 추가할 수 있습니다.</translation>
 <translation id="6929760895658557216">Ok Google</translation>
 <translation id="6930036377490597025">외장 보안 키 또는 내장 센서</translation>
 <translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{확장 프로그램 1개 거부됨}other{확장 프로그램 #개 거부됨}}</translation>
@@ -5398,6 +5409,7 @@
 <translation id="7375235221357833624">{0,plural, =1{1시간 내 기기 업데이트}other{#시간 내 기기 업데이트}}</translation>
 <translation id="7376553024552204454">이동 시 마우스 커서 강조표시</translation>
 <translation id="7377451353532943397">계속해서 센서 액세스 차단</translation>
+<translation id="7378611153938412599">취약한 비밀번호는 추측하기 쉽습니다. 안전한 비밀번호를 설정하세요. <ph name="BEGIN_LINK" />보안 도움말 더보기<ph name="END_LINK" /></translation>
 <translation id="73786666777299047">Chrome 웹 스토어 열기</translation>
 <translation id="7378812711085314936">데이터 연결 가져오기</translation>
 <translation id="7380622428988553498">기기 이름에 잘못된 문자가 포함되어 있습니다.</translation>
@@ -5922,6 +5934,7 @@
 <translation id="7959074893852789871">파일에 여러 인증서가 있지만 그 중 일부를 가져올 수 없습니다.</translation>
 <translation id="7961015016161918242">사용하지 않음</translation>
 <translation id="7963001036288347286">터치패드 가속</translation>
+<translation id="7963608432878156675">블루투스와 네트워크 연결 시 다른 기기에 표시되는 이름입니다.</translation>
 <translation id="7963826112438303517">어시스턴트는 녹음된 음성 및 요청을 사용하여 음성 모델을 만들고 업데이트하며, 이 음성 모델은 Voice Match가 사용 설정된 기기에만 저장됩니다. 어시스턴트 설정에서 음성 활동을 확인하거나 다시 학습시키세요.</translation>
 <translation id="7966241909927244760">이미지 주소 복사(&amp;O)</translation>
 <translation id="7966571622054096916">{COUNT,plural, =1{북마크 목록의 항목 1개}other{북마크 목록의 항목 {COUNT}개}}</translation>
@@ -6386,6 +6399,7 @@
 <translation id="850875081535031620">유해한 소프트웨어가 발견되지 않음</translation>
 <translation id="8509177919508253835">보안 키를 재설정하고 PIN 생성</translation>
 <translation id="8509646642152301857">맞춤법 검사 사전을 다운로드하지 못했습니다.</translation>
+<translation id="8512396579636492893">{COUNT,plural, =0{취약한 비밀번호가 발견되지 않음}=1{취약한 비밀번호 {COUNT}개 발견}other{취약한 비밀번호 {COUNT}개 발견}}</translation>
 <translation id="8512476990829870887">프로세스 종료</translation>
 <translation id="851263357009351303"><ph name="HOST" />에서 이미지 표시 항상 허용</translation>
 <translation id="8513108775083588393">자동 회전</translation>
diff --git a/chrome/app/resources/generated_resources_ky.xtb b/chrome/app/resources/generated_resources_ky.xtb
index 9a14041d..1343348 100644
--- a/chrome/app/resources/generated_resources_ky.xtb
+++ b/chrome/app/resources/generated_resources_ky.xtb
@@ -928,6 +928,7 @@
 <translation id="204914487372604757">Кыска жол түзүү</translation>
 <translation id="2050339315714019657">Тигинен</translation>
 <translation id="2053312383184521053">Сенек абалындагы дайындар</translation>
+<translation id="2054665754582400095">Сайтта же сайтта эместигиңиз</translation>
 <translation id="2055585478631012616">Сиз бул сайттардан, анын ичинде ачылып турган өтмөктөрдөн чыгарыласыз</translation>
 <translation id="205560151218727633">Google Жардамчынын логотиби</translation>
 <translation id="2058456167109518507">Түзмөк табылды</translation>
@@ -1214,6 +1215,7 @@
 <translation id="2387052489799050037">Башкы бетке өтүү</translation>
 <translation id="2387458720915042159">Проксинин туташуу түрү</translation>
 <translation id="2390347491606624519">Проксиге туташкан жок. Кайра кирип көрүңүз</translation>
+<translation id="2390782873446084770">Wi-Fi Sync</translation>
 <translation id="2391082728065870591">Жооп пикир баяндамасын жөнөтүү</translation>
 <translation id="2391419135980381625">Стандарттуу арип</translation>
 <translation id="2392163307141705938">Ата-энең <ph name="IDS_SHORT_PRODUCT_NAME" /> колдонмосуна койгон чекке жеттиң.</translation>
@@ -1870,6 +1872,7 @@
 <translation id="3157931365184549694">Калыбына келтирүү</translation>
 <translation id="3158033540161634471">Манжа изин жөндөө</translation>
 <translation id="3159493096109238499">Саргыч боз</translation>
+<translation id="3159978855457658359">Түзмөктүн аталышын өзгөртүү</translation>
 <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (аппараттык камсыздоонун камдык көчүрмөсү сакталды)</translation>
 <translation id="3161522574479303604">Бардык тилдер</translation>
 <translation id="3162853326462195145">Мектептин аккаунту</translation>
@@ -3230,6 +3233,7 @@
 <translation id="4761104368405085019">Микрофонуңузду колдонуңуз</translation>
 <translation id="4762718786438001384">Түзмөктүн дискинде бош орун өтө аз</translation>
 <translation id="4763408175235639573">Бул барак каралганда төмөнкү кукилер коюлган</translation>
+<translation id="4764368918650455114">Эки түзмөктүн тең кулпусу ачылып, бири-бирине жакын жайгашып, Bluetooth күйүп турушу керек. Chromebook менен бөлүшүп жатсаңыз, андагы Nearby Sharing күйүк экенин текшериңиз (убакытты тандоо менен статус аймагын ачып, Nearby Share функциясын тандаңыз). <ph name="LINK_BEGIN" />Кеңири маалымат<ph name="LINK_END" /></translation>
 <translation id="4765582662863429759">Android жазышууларындагы билдирүүлөрдү телефонуңуздан Chromebook'уңузга өткөрүп берип турат</translation>
 <translation id="476598255842811483">Түзмөгүңүздө Nearby Share ачылмайынча эч ким көрбөйт</translation>
 <translation id="4768332406694066911">Сизде ушул уюмдардын сиздин аныктыгыңызды текшерген тастыктамалары бар</translation>
@@ -3392,6 +3396,7 @@
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Бул колдонмону администраторуңуз орноткон.</translation>
 <translation id="4964455510556214366">Жайгаштыруу</translation>
+<translation id="496446150016900060">Wi-Fi тармактарын телефонуңуз менен шайкештириңиз</translation>
 <translation id="4965808351167763748">Бул түзмөктү Hangouts Meet үчүн колдонгуңуз келеби?</translation>
 <translation id="496888482094675990">Файлдар колдонмосу Google Drive'да, тышкы сактагычта же Chrome OS түзмөгүңүздө сакталган файлдарды ыкчам колдонуу мүмкүнчүлүгүн берет.</translation>
 <translation id="4971412780836297815">Бүткөндө ачуу</translation>
@@ -3698,6 +3703,7 @@
 <translation id="5341980496415249280">Күтө туруңуз, таңгакталууда…</translation>
 <translation id="5342091991439452114">PIN код кеминде <ph name="MINIMUM" /> орундуу сандан турушу керек</translation>
 <translation id="5344036115151554031">Linux калыбына келтирилүүдө</translation>
+<translation id="5345916423802287046">Киргенде колдонмо ачылсын</translation>
 <translation id="5350293332385664455">Google Жардамчыны өчүрүү</translation>
 <translation id="535123479159372765">Текст башка түзмөктөн көчүрүлдү</translation>
 <translation id="5352033265844765294">Убакыт мөөрү</translation>
@@ -4007,6 +4013,7 @@
 <translation id="5704875434923668958">Төмөнкү менен шайкештирилүүдө:</translation>
 <translation id="5705005699929844214">Атайын мүмкүнчүлүктөрдүн параметрлери дайыма көрсөтүлсүн</translation>
 <translation id="5705882733397021510">Артка кайтуу</translation>
+<translation id="5707117624115653804">Бул жөндөө иштеген колдонмолордо жана сайттарда коштомо жазуулардын өлчөмүн жана стилин ыңгайлаштыруу</translation>
 <translation id="5707185214361380026">Төмөнкүдөн кеңейтүү жүктөлбөй калды:</translation>
 <translation id="5708171344853220004">Microsoft Негизги аты</translation>
 <translation id="5709557627224531708">Chrome'ду демейки серепчи катары белгилөө</translation>
@@ -4170,6 +4177,7 @@
 <translation id="5904614460720589786">Конфигурациялоо маселесинен улам <ph name="APP_NAME" /> жөндөлгөн жок. Администраторуңузга кайрылыңыз. Ката коду: <ph name="ERROR_CODE" />.</translation>
 <translation id="5906655207909574370">Жаңырганы калды! Жаңыртууну аягына чыгаруу үчүн түзмөгүңүздү өчүрүп күйгүзүңүз.</translation>
 <translation id="5906732635754427568">Бул колдонмого байланыштуу дайындар бул түзмөктөн өчүрүлөт.</translation>
+<translation id="5908474332780919512">Киргенде колдонмо ачылсын</translation>
 <translation id="5908695239556627796">Чычканды ылдамдаткыч</translation>
 <translation id="5908769186679515905">Сайттарда Flash'ти иштетүү бөгөттөлсүн</translation>
 <translation id="5910363049092958439">Сүрөттү төмөнкүдөй сак&amp;тоо…</translation>
@@ -4709,6 +4717,7 @@
 <translation id="6532527800157340614">Кирүү мүмкүнчүлүгүнүн токени алынбагандыктан аккаунтка кирген жоксуз. Тармактык туташууңузду текшерип, дагы бир жолу аракет кылыңыз.</translation>
 <translation id="6532663472409656417">Ишкана катталды</translation>
 <translation id="6535331821390304775"><ph name="ORIGIN" /> сайтына ушуга окшош шилтемелерди байланышкан колдонмолордо ачуусуна дайыма уруксат бериңиз</translation>
+<translation id="6537613839935722475">Аталышта тамгаларды, сандарды жана дефистерди (-) колдонууга болот</translation>
 <translation id="6538635548667167211">Учурда дайын-даректердин өткөрүлүшү "Мобилдик Интернет аркылуу" деп коюлган</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />Эскертүү:<ph name="END_BOLD" /> Дайындар топтолгондо иш тутуму бир кыйла жай иштеп калат, эмне кылыш керек экендигин так билсеңиз же сизден ошондой аракет суралганда гана иштетиңиз.</translation>
 <translation id="6541638731489116978">Бул сайттын кыймыл сенсорлорун колдонуу мүмкүнчүлүгү бөгөттөлгөн.</translation>
@@ -4797,6 +4806,7 @@
 <translation id="6650234781371031356"><ph name="WEBSITE" /> сырсөзүңүз ушул түзмөктө жана Google аккаунтуңузда сакталды. Кайсынысын өчүрөсүз?</translation>
 <translation id="665061930738760572">&amp;Жаңы терезеде ачуу</translation>
 <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="6654509035557065241">Тармакты тандоо</translation>
 <translation id="6655190889273724601">Иштеп чыгуучу режими</translation>
@@ -5400,6 +5410,7 @@
 <translation id="7375235221357833624">{0,plural, =1{Түзмөктү бир сааттын ичинде жаңыртыңыз}other{Түзмөктү # сааттын ичинде жаңыртыңыз}}</translation>
 <translation id="7376553024552204454">Чычкан курсору жылып жатканда баса белгиленсин</translation>
 <translation id="7377451353532943397">Сенсорду колдонуу мүмкүнчүлүгү бөгөттөлө берсин</translation>
+<translation id="7378611153938412599">Начар сырсөздөрдү билип алуу оңой. Татаал сырсөздөрдү түзүңүз. <ph name="BEGIN_LINK" />Дагы башка коопсуздук кеңештерин алуу.<ph name="END_LINK" /></translation>
 <translation id="73786666777299047">Chrome Интернет дүкөнүн ачуу</translation>
 <translation id="7378812711085314936">Мобилдик туташууну орнотуу</translation>
 <translation id="7380622428988553498">Түзмөктүн аталышында жараксыз символдор бар</translation>
@@ -5924,6 +5935,7 @@
 <translation id="7959074893852789871">Файлда бир нече тастыктама камтылган, алардын айрымдары импорттолгон жок:</translation>
 <translation id="7961015016161918242">Эч качан</translation>
 <translation id="7963001036288347286">Тийме тактасынын ылдамдаткычы</translation>
+<translation id="7963608432878156675">Бул аталыш Bluetooth аркылуу жана тармакка туташууда көрүнөт</translation>
 <translation id="7963826112438303517">Жардамчыңыз ушул жаздырууларды жана оозеки сурамдарды колдонуп, үнүңүздүн үлгүсүн түзүп жана жаңыртып турат. Ал үлгү Voice Match'ти күйгүзгөн түзмөктөрүңүздө гана сакталат. Үндүн үлгүсүн угуу же кайра жаздыруу үчүн, Жардамчынын жөндөөлөрүнө өтүңүз.</translation>
 <translation id="7966241909927244760">С&amp;үрөт дарегин көчүрүү</translation>
 <translation id="7966571622054096916">{COUNT,plural, =1{Кыстармалар тизмесинде 1 элемент бар}other{Кыстармалар тизмесинде {COUNT} элемент бар}}</translation>
@@ -6387,6 +6399,7 @@
 <translation id="850875081535031620">Зыянкеч программа табылган жок</translation>
 <translation id="8509177919508253835">Коопсуздук ачкычтарын баштапкы абалга келтирүү жана PIN код түзүү</translation>
 <translation id="8509646642152301857">Орфографиялык сөздүк жүктөлүп алынбай калды.</translation>
+<translation id="8512396579636492893">{COUNT,plural, =0{Начар сырсөздөр табылган жок}=1{{COUNT} начар сырсөз табылды}other{{COUNT} начар сырсөз табылды}}</translation>
 <translation id="8512476990829870887">Процессти бүтүрүү</translation>
 <translation id="851263357009351303">Сүрөттөрдү көрсөтүү үчүн, <ph name="HOST" /> ар дайыма уруксат берилсин</translation>
 <translation id="8513108775083588393">Авто буруу</translation>
diff --git a/chrome/app/resources/generated_resources_lo.xtb b/chrome/app/resources/generated_resources_lo.xtb
index 6fb2b24..8876c89 100644
--- a/chrome/app/resources/generated_resources_lo.xtb
+++ b/chrome/app/resources/generated_resources_lo.xtb
@@ -17,6 +17,7 @@
 <translation id="1012794136286421601">ໄຟລ໌ເອກະສານ, ແຜ່ນ, ສະໄລດ໌, ແລະແຜ່ນແຕ້ມຂອງທ່ານກໍາລັງຖືກຊິງຄ໌. ເປີດແອັບ Google Drive ເພື່ອເຂົ້າຫາພວກມັນອອນລາຍນ໌ ຫຼືອອຟລາຍນ໌.</translation>
 <translation id="1012876632442809908">ອຸ​ປະ​ກອນ USB-C (ຜອດດ້ານໜ້າ)</translation>
 <translation id="1013707859758800957">ປ​ລັກ​ອິນ​ທີ່​ບໍ່​ແມ່ນ​ແຊນບັອກໄດ້​ຮັບ​ອະ​ນຸ​ຍາດ​ໃຫ້​ແລ່ນ​ຢູ່​ເທິງ​ໜ້າ​ນີ້.</translation>
+<translation id="1015041505466489552">TrackPoint</translation>
 <translation id="1015318665228971643">ແກ້ໄຂຊື່ໂຟນເດີ</translation>
 <translation id="1015578595646638936">{NUM_DAYS,plural, =1{ມື້ສຸດທ້າຍໃນການອັບເດດ <ph name="DEVICE_TYPE" />}other{ອັບເດດ <ph name="DEVICE_TYPE" /> ພາຍໃນ {NUM_DAYS} ມື້}}</translation>
 <translation id="1016566241875885511">ຂໍ້ມູນເພີ່ມເຕີມ (ເລືອກໄດ້)</translation>
diff --git a/chrome/app/resources/generated_resources_lt.xtb b/chrome/app/resources/generated_resources_lt.xtb
index ec6fe01..04dc16e 100644
--- a/chrome/app/resources/generated_resources_lt.xtb
+++ b/chrome/app/resources/generated_resources_lt.xtb
@@ -928,6 +928,7 @@
 <translation id="204914487372604757">Kurti spartųjį klavišą</translation>
 <translation id="2050339315714019657">Stačias</translation>
 <translation id="2053312383184521053">Neveikos būsenos duomenys</translation>
+<translation id="2054665754582400095">Jūsų veiklos duomenys</translation>
 <translation id="2055585478631012616">Būsite atjungti nuo šių svetainių, įskaitant atidarytus skirtukus</translation>
 <translation id="205560151218727633">„Google“ padėjėjo logotipas</translation>
 <translation id="2058456167109518507">Įrenginys aptiktas</translation>
@@ -1214,6 +1215,7 @@
 <translation id="2387052489799050037">Eikite į pagrindinį ekraną</translation>
 <translation id="2387458720915042159">Tarpinio serverio ryšio tipas</translation>
 <translation id="2390347491606624519">Nepavyko prisijungti prie tarpinio serverio, prisijunkite dar kartą</translation>
+<translation id="2390782873446084770">„Wi-Fi“ sinchronizavimas</translation>
 <translation id="2391082728065870591">Siųsti atsiliepimo ataskaitą</translation>
 <translation id="2391419135980381625">Standartinis šriftas</translation>
 <translation id="2392163307141705938">Pasiekėte laiko apribojimą, kurį vienas iš tėvų nustatė „<ph name="IDS_SHORT_PRODUCT_NAME" />“.</translation>
@@ -1870,6 +1872,7 @@
 <translation id="3157931365184549694">Atkurti</translation>
 <translation id="3158033540161634471">Piršto antspaudo nustatymas</translation>
 <translation id="3159493096109238499">Smėlio spalva</translation>
+<translation id="3159978855457658359">Įrenginio pavadinimo redagavimas</translation>
 <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (atsarginė kopija sukurta aparatinėje įrangoje)</translation>
 <translation id="3161522574479303604">Visos kalbos</translation>
 <translation id="3162853326462195145">Mokyklos paskyra</translation>
@@ -3230,6 +3233,7 @@
 <translation id="4761104368405085019">Naudoti mikrofoną</translation>
 <translation id="4762718786438001384">Labai mažai vietos įrenginio diske</translation>
 <translation id="4763408175235639573">Kai peržiūrėjote šį puslapį, buvo nustatyti toliau nurodyti slapukai</translation>
+<translation id="4764368918650455114">Įsitikinkite, kad abu įrenginiai yra atrakinti, vienas šalia kito ir juose įjungtas „Bluetooth“ ryšys. Bendrindami su „Chromebook“ įsitikinkite, kad jame įjungta Bendrinimo netoliese funkcija (pasirinkdami laiką atidarykite būsenos sritį, tada pasirinkite „Bendrinimas netoliese“). <ph name="LINK_BEGIN" />Sužinokite daugiau<ph name="LINK_END" /></translation>
 <translation id="4765582662863429759">Leidžiama „Android Messages“ perduoti tekstus iš telefono į „Chromebook“</translation>
 <translation id="476598255842811483">Niekas, nebent savo įrenginyje atidarote Bendrinimo netoliese funkciją</translation>
 <translation id="4768332406694066911">Turite jus identifikuojančius sertifikatus iš šių organizacijų</translation>
@@ -3392,6 +3396,7 @@
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> – <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Šią programą įdiegė administratorius.</translation>
 <translation id="4964455510556214366">Išdėstymas</translation>
+<translation id="496446150016900060">Sinchronizuokite „Wi-Fi“ tinklus su telefonu</translation>
 <translation id="4965808351167763748">Ar tikrai norite nustatyti šį įrenginį, kad būtų galima paleisti „Hangout Meet“?</translation>
 <translation id="496888482094675990">Naudodami programą „Failai“ greitai pasieksite „Google“ diske, išorinėje atmintinėje ar „Chrome“ OS įrenginyje išsaugotus failus.</translation>
 <translation id="4971412780836297815">Baigus atidaryti</translation>
@@ -3698,6 +3703,7 @@
 <translation id="5341980496415249280">Palaukite, pakuojama...</translation>
 <translation id="5342091991439452114">PIN kodą turi sudaryti bent <ph name="MINIMUM" /> skaitm.</translation>
 <translation id="5344036115151554031">Atkuriama „Linux“</translation>
+<translation id="5345916423802287046">Paleisti programą, kai prisijungiate</translation>
 <translation id="5350293332385664455">Išjungti „Google“ padėjėją</translation>
 <translation id="535123479159372765">Tekstas nukopijuotas iš kito įrenginio</translation>
 <translation id="5352033265844765294">Laiko žymėjimas</translation>
@@ -4008,6 +4014,7 @@
 <translation id="5704875434923668958">Sinchronizuojama su</translation>
 <translation id="5705005699929844214">Visada rodyti pasiekiamumo parinktis</translation>
 <translation id="5705882733397021510">Atgal</translation>
+<translation id="5707117624115653804">Tinkinkite subtitrų dydį ir stilių šį nustatymą palaikančiose programose ir svetainėse</translation>
 <translation id="5707185214361380026">Nepavyko įkelti plėtinio iš:</translation>
 <translation id="5708171344853220004">Pagrindinis „Microsoft“ pavadinimas</translation>
 <translation id="5709557627224531708">Nustatyti „Chrome“ kaip numatytąją naršyklę</translation>
@@ -4171,6 +4178,7 @@
 <translation id="5904614460720589786">Nepavyko nustatyti programos „<ph name="APP_NAME" />“ dėl konfigūravimo problemos. Susisiekite su administratoriumi. Klaidos kodas: <ph name="ERROR_CODE" />.</translation>
 <translation id="5906655207909574370">Beveik įdiegta naujausia versija! Paleiskite įrenginį iš naujo, kad būtų užbaigtas naujinimas.</translation>
 <translation id="5906732635754427568">Su šia programa susieti duomenys bus pašalinti iš šio įrenginio.</translation>
+<translation id="5908474332780919512">Paleisti programą, kai prisijungiate</translation>
 <translation id="5908695239556627796">Slinkimo pele sparta</translation>
 <translation id="5908769186679515905">Užblokuoti svetaines, kad nebūtų galima vykdyti „Flash“</translation>
 <translation id="5910363049092958439">Iš&amp;saugoti vaizdą kaip...</translation>
@@ -4710,6 +4718,7 @@
 <translation id="6532527800157340614">Nepavyko prisijungti, nes nepavyko gauti jūsų prieigos kodo. Patikrinkite tinklo ryšį ir bandykite dar kartą.</translation>
 <translation id="6532663472409656417">Užregistruota įmonėje</translation>
 <translation id="6535331821390304775">Visada leisti <ph name="ORIGIN" /> atidaryti šio tipo nuorodas naudojant susietą programą</translation>
+<translation id="6537613839935722475">Pavadinimą gali sudaryti raidės, skaičiai ir brūkšneliai (-)</translation>
 <translation id="6538635548667167211">Dabartinis duomenų naudojimo nustatymas yra „Duomenys“</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />Pastaba:<ph name="END_BOLD" /> įgalinkite, tik jei žinote, ką darote, arba jei jūsų paprašė tai atlikti, nes renkant duomenis gali sumažėti našumas.</translation>
 <translation id="6541638731489116978">Ši svetainė užblokuota, kad nepasiektų judesio jutiklių.</translation>
@@ -4798,6 +4807,7 @@
 <translation id="6650234781371031356">Svetainės <ph name="WEBSITE" /> slaptažodis saugomas šiame įrenginyje ir „Google“ paskyroje. Kurį norite ištrinti?</translation>
 <translation id="665061930738760572">Atidaryti &amp;naujame lange</translation>
 <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="6654509035557065241">Rinktis tinklą</translation>
 <translation id="6655190889273724601">Kūrėjo režimas</translation>
@@ -5401,6 +5411,7 @@
 <translation id="7375235221357833624">{0,plural, =1{Įrenginio atnaujinimas po valandos}one{Įrenginio atnaujinimas po # valandos}few{Įrenginio atnaujinimas po # valandų}many{Įrenginio atnaujinimas po # valandos}other{Įrenginio atnaujinimas po # valandų}}</translation>
 <translation id="7376553024552204454">Paryškinti pelės žymeklį, kai jis juda</translation>
 <translation id="7377451353532943397">Toliau blokuoti prieigą prie jutiklio</translation>
+<translation id="7378611153938412599">Nesudėtingus slaptažodžius lengva atspėti. Įsitikinkite, kad kuriate sudėtingus slaptažodžius. <ph name="BEGIN_LINK" />Žr. daugiau saugos patarimų.<ph name="END_LINK" /></translation>
 <translation id="73786666777299047">Atidarykite „Chrome“ internetinę parduotuvę</translation>
 <translation id="7378812711085314936">Gauti duomenų ryšį</translation>
 <translation id="7380622428988553498">Įrenginio pavadinime yra netinkamų simbolių</translation>
@@ -5925,6 +5936,7 @@
 <translation id="7959074893852789871">Faile buvo keli sertifikatai; kai kurie iš jų nebuvo importuoti:</translation>
 <translation id="7961015016161918242">Niekada</translation>
 <translation id="7963001036288347286">Jutiklinės dalies spartinimas</translation>
+<translation id="7963608432878156675">Šis pavadinimas matomas kitiems įrenginiams naudojant „Bluetooth“ ir tinklo ryšius</translation>
 <translation id="7963826112438303517">Šiuos įrašus ir jūsų sakomas užklausas „Google Assistant“ naudoja jūsų balso modeliui kurti ir atnaujinti, kuris saugomas tik tuose įrenginiuose, kuriuose įjungėte funkciją „Voice Match“. Peržiūrėkite arba iš naujo nustatykite balso veiklą „Google Assistant“ skiltyje „Nustatymai“.</translation>
 <translation id="7966241909927244760">K&amp;opijuoti vaizdo adresą</translation>
 <translation id="7966571622054096916">{COUNT,plural, =1{1 elementas žymių sąraše}one{{COUNT} elementas žymių sąraše}few{{COUNT} elementai žymių sąraše}many{{COUNT} elemento žymių sąraše}other{{COUNT} elementų žymių sąraše}}</translation>
@@ -6389,6 +6401,7 @@
 <translation id="850875081535031620">Neaptikta kenkėjiškos programinės įrangos</translation>
 <translation id="8509177919508253835">Iš naujo nustatomas saugos raktas ir sukuriami PIN kodai</translation>
 <translation id="8509646642152301857">Atsisiunčiant rašybos tikrinimo žodyną įvyko klaida.</translation>
+<translation id="8512396579636492893">{COUNT,plural, =0{Nerasta nesudėtingų slaptažodžių}=1{Rastas {COUNT} nesudėtingas slaptažodis}one{Rastas {COUNT} nesudėtingas slaptažodis}few{Rasti {COUNT} nesudėtingi slaptažodžiai}many{Rasta {COUNT} nesudėtingo slaptažodžio}other{Rasta {COUNT} nesudėtingų slaptažodžių}}</translation>
 <translation id="8512476990829870887">Baigti procesą</translation>
 <translation id="851263357009351303">Visada leisti <ph name="HOST" /> rodyti vaizdus</translation>
 <translation id="8513108775083588393">Auto. pasukti</translation>
diff --git a/chrome/app/resources/generated_resources_lv.xtb b/chrome/app/resources/generated_resources_lv.xtb
index ff8830e4..9fc18de 100644
--- a/chrome/app/resources/generated_resources_lv.xtb
+++ b/chrome/app/resources/generated_resources_lv.xtb
@@ -928,6 +928,7 @@
 <translation id="204914487372604757">Izveidot saīsni</translation>
 <translation id="2050339315714019657">Portrets</translation>
 <translation id="2053312383184521053">Dati par neaktīvu stāvokli</translation>
+<translation id="2054665754582400095">Jūsu klātbūtne</translation>
 <translation id="2055585478631012616">Jūs tiksiet izrakstīts no šīm vietnēm, tostarp atvērtajās cilnēs</translation>
 <translation id="205560151218727633">Google asistenta logotips</translation>
 <translation id="2058456167109518507">Atrastā ierīce</translation>
@@ -1214,6 +1215,7 @@
 <translation id="2387052489799050037">Pāriešana uz sākuma ekrānu</translation>
 <translation id="2387458720915042159">Starpniekservera savienojuma veids</translation>
 <translation id="2390347491606624519">Nevar izveidot savienojumu ar starpniekserveri. Lūdzu, pierakstieties vēlreiz.</translation>
+<translation id="2390782873446084770">Wi-Fi sinhronizācija</translation>
 <translation id="2391082728065870591">Sūtīt atsauksmju pārskatu</translation>
 <translation id="2391419135980381625">Standarta fonts</translation>
 <translation id="2392163307141705938">Ir sasniegts laika ierobežojums, ko jūsu vecāki iestatīja lietotnes <ph name="IDS_SHORT_PRODUCT_NAME" /> izmantošanai.</translation>
@@ -1870,6 +1872,7 @@
 <translation id="3157931365184549694">Atjaunot</translation>
 <translation id="3158033540161634471">Iestatiet pirksta nospiedumu</translation>
 <translation id="3159493096109238499">Bēša</translation>
+<translation id="3159978855457658359">Ierīces nosaukuma rediģēšana</translation>
 <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (ar krātuvi aparatūrā)</translation>
 <translation id="3161522574479303604">Visas valodas</translation>
 <translation id="3162853326462195145">Skolas konts</translation>
@@ -3230,6 +3233,7 @@
 <translation id="4761104368405085019">Izmantot jūsu mikrofonu</translation>
 <translation id="4762718786438001384">Ierīces diskā gandrīz nav vietas</translation>
 <translation id="4763408175235639573">Kamēr aplūkojāt šo lapu, tika iestatīti tālāk norādītie sīkfaili.</translation>
+<translation id="4764368918650455114">Abām ierīcēm ir jābūt atbloķētām un jāatrodas blakus, turklāt tajās jābūt ieslēgtai tehnoloģijai Bluetooth. Ja vēlaties veikt kopīgošanu ar Chromebook datoru, datorā jāieslēdz funkcija Kopīgošana tuvumā (atveriet statusa apgabalu, atlasot laiku, un pēc tam atlasiet vienumu Kopīgošana tuvumā). <ph name="LINK_BEGIN" />Uzzināt vairāk<ph name="LINK_END" /></translation>
 <translation id="4765582662863429759">Ļauj lietotnei Android ziņojumi pārraidīt īsziņas no jūsu tālruņa uz Chromebook datoru</translation>
 <translation id="476598255842811483">Neviens, ja jūsu ierīcē nav atvērta funkcija “Kopīgošana tuvumā”</translation>
 <translation id="4768332406694066911">Jums ir sertifikāti no šīm organizācijām, kas jūs identificē</translation>
@@ -3392,6 +3396,7 @@
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> — <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Šo lietotni instalēja administrators.</translation>
 <translation id="4964455510556214366">Izkārtojums</translation>
+<translation id="496446150016900060">Wi-Fi tīkli tiks sinhronizēti ar jūsu tālruni.</translation>
 <translation id="4965808351167763748">Vai tiešām vēlaties iestatīt šo ierīci darbam ar Hangouts Meet?</translation>
 <translation id="496888482094675990">Izmantojot lietotni Faili, varat ērti piekļūt failiem, kas saglabāti Google diskā, ārējā krātuvē vai Chrome OS ierīcē.</translation>
 <translation id="4971412780836297815">Atvērt, kad pabeigta</translation>
@@ -3698,6 +3703,7 @@
 <translation id="5341980496415249280">Lūdzu, uzgaidiet, notiek pakotnes izveide...</translation>
 <translation id="5342091991439452114">PIN kodā ir jābūt vismaz <ph name="MINIMUM" /> cipariem.</translation>
 <translation id="5344036115151554031">Linux atjaunošana</translation>
+<translation id="5345916423802287046">Palaist lietotni pierakstoties</translation>
 <translation id="5350293332385664455">Google asistenta izslēgšana</translation>
 <translation id="535123479159372765">Teksts nokopēts no citas ierīces</translation>
 <translation id="5352033265844765294">Laikspiedola uzlikšana</translation>
@@ -4007,6 +4013,7 @@
 <translation id="5704875434923668958">Notiek sinhronizēšana ar</translation>
 <translation id="5705005699929844214">Vienmēr rādīt pieejamības iespējas</translation>
 <translation id="5705882733397021510">Atpakaļ</translation>
+<translation id="5707117624115653804">Pielāgojiet subtitru lielumu un stilu lietotnēs un vietnēs, kurās tiek atbalstīts šis iestatījums</translation>
 <translation id="5707185214361380026">Neizdevās ielādēt paplašinājumu no:</translation>
 <translation id="5708171344853220004">Microsoft pamatnosaukums</translation>
 <translation id="5709557627224531708">Chrome iestatīšana par noklusējuma pārlūku</translation>
@@ -4170,6 +4177,7 @@
 <translation id="5904614460720589786">Konfigurācijas problēmas dēļ nevarēja iestatīt lietotni <ph name="APP_NAME" />. Lūdzu, sazinieties ar administratoru. Kļūdas kods: <ph name="ERROR_CODE" />.</translation>
 <translation id="5906655207909574370">Atjaunināšana ir gandrīz pabeigta. Restartējiet ierīci, lai pabeigtu atjaunināšanu.</translation>
 <translation id="5906732635754427568">Ar šo lietotni saistītie dati tiks noņemti no šīs ierīces.</translation>
+<translation id="5908474332780919512">Palaist lietotni pierakstoties</translation>
 <translation id="5908695239556627796">Peles ritināšanas ātrums</translation>
 <translation id="5908769186679515905">Bloķēt Flash aktivizēšanu vietnēs</translation>
 <translation id="5910363049092958439">Saglabāt attēlu &amp;kā...</translation>
@@ -4709,6 +4717,7 @@
 <translation id="6532527800157340614">Neizdevās pierakstīties, jo nevarēja izgūt piekļuves pilnvaru. Lūdzu, pārbaudiet tīkla savienojumu un mēģiniet vēlreiz.</translation>
 <translation id="6532663472409656417">Reģistrēja uzņēmums</translation>
 <translation id="6535331821390304775">Vienmēr atļaut vietnei <ph name="ORIGIN" /> atvērt šī veida saites saistītajā lietotnē</translation>
+<translation id="6537613839935722475">Nosaukumā var izmantot burtus, ciparus un defises (-)</translation>
 <translation id="6538635548667167211">Pašreizējais datu lietojuma iestatījums ir “Dati”.</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />Piezīme<ph name="END_BOLD" />. Iespējojiet tikai tad, ja esat pārliecināts par savu rīcību vai kāds jums lūdzis šādi rīkoties, jo datu apkopošana var mazināt veiktspēju.</translation>
 <translation id="6541638731489116978">Šīs vietnes piekļuve jūsu kustību sensoriem ir bloķēta.</translation>
@@ -4797,6 +4806,7 @@
 <translation id="6650234781371031356">Parole vietnei <ph name="WEBSITE" /> ir saglabāta šajā ierīcē un jūsu Google kontā. Kuru paroli vēlaties dzēst?</translation>
 <translation id="665061930738760572">Atvērt &amp;jaunā logā</translation>
 <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="6654509035557065241">Vēlamā tīkla iestatīšana</translation>
 <translation id="6655190889273724601">Izstrādātāja režīms</translation>
@@ -5400,6 +5410,7 @@
 <translation id="7375235221357833624">{0,plural, =1{Ierīce jāatjaunina stundas laikā}zero{Ierīce jāatjaunina # stundu laikā}one{Ierīce jāatjaunina # stundas laikā}other{Ierīce jāatjaunina # stundu laikā}}</translation>
 <translation id="7376553024552204454">Izcelt peles kursoru, kad tas tiek kustināts</translation>
 <translation id="7377451353532943397">Turpināt bloķēt piekļuvi sensoriem</translation>
+<translation id="7378611153938412599">Nedrošas paroles ir viegli uzminēt. Noteikti izveidojiet drošas paroles. <ph name="BEGIN_LINK" />Skatiet vairāk drošības padomu.<ph name="END_LINK" /></translation>
 <translation id="73786666777299047">Atveriet Chrome interneta veikalu</translation>
 <translation id="7378812711085314936">Izmantot datu savienojumu</translation>
 <translation id="7380622428988553498">Ierīces nosaukumā ir nederīgas rakstzīmes</translation>
@@ -5923,6 +5934,7 @@
 <translation id="7959074893852789871">Failā bija iekļauti vairāki sertifikāti, no kuriem daži netika importēti:</translation>
 <translation id="7961015016161918242">Nekad</translation>
 <translation id="7963001036288347286">Skārienpaliktņa darbības paātrināšana</translation>
+<translation id="7963608432878156675">Šis nosaukums ir redzams citām ierīcēm, iestatot Bluetooth un tīkla savienojumus</translation>
 <translation id="7963826112438303517">Jūsu Asistents izmanto šos ierakstus un jūsu izrunātos pieprasījumus, lai izveidotu un atjauninātu jūsu balss modeli, kas tiek glabāts tikai ierīcēs, kurās esat ieslēdzis funkciju Voice Match. Skatiet vai pārveidojiet balss darbību Asistenta iestatījumos.</translation>
 <translation id="7966241909927244760">Kopēt attēla adresi</translation>
 <translation id="7966571622054096916">{COUNT,plural, =1{Grāmatzīmju sarakstā ir viens vienums}zero{Grāmatzīmju sarakstā ir {COUNT} vienumu}one{Grāmatzīmju sarakstā ir {COUNT} vienums}other{Grāmatzīmju sarakstā ir {COUNT} vienumi}}</translation>
@@ -6387,6 +6399,7 @@
 <translation id="850875081535031620">Netika atrasta neviena kaitīga programmatūra.</translation>
 <translation id="8509177919508253835">Atiestatiet drošības atslēgas un izveidojiet PIN kodus</translation>
 <translation id="8509646642152301857">Pareizrakstības pārbaudes vārdnīcas lejupielāde neizdevās.</translation>
+<translation id="8512396579636492893">{COUNT,plural, =0{Netika atrasta neviena nedroša parole}=1{Tika atrasta {COUNT} nedroša parole}zero{Tika atrastas {COUNT} nedrošas paroles}one{Tika atrasta {COUNT} nedroša parole}other{Tika atrastas {COUNT} nedrošas paroles}}</translation>
 <translation id="8512476990829870887">Pārtraukt procesu</translation>
 <translation id="851263357009351303">Vienmēr atļaut vietnei <ph name="HOST" /> rādīt attēlus</translation>
 <translation id="8513108775083588393">Pagriezt aut.</translation>
diff --git a/chrome/app/resources/generated_resources_mn.xtb b/chrome/app/resources/generated_resources_mn.xtb
index c3717aa..dd8daa6b 100644
--- a/chrome/app/resources/generated_resources_mn.xtb
+++ b/chrome/app/resources/generated_resources_mn.xtb
@@ -17,6 +17,7 @@
 <translation id="1012794136286421601">Таны Баримтууд, Хуудаснууд, Слайдууд болон Зурган файлуудыг sync хийж байна. Тэдэн рүү онлайн эсвэл оффлайн хэлбэрээр нэвтрэхийн тулд Google Drive аппликейшныг нээгээрэй.</translation>
 <translation id="1012876632442809908">USB-C төхөөрөмж (урд талын порт)</translation>
 <translation id="1013707859758800957">Хамгаалалтгүй нэмэлт өргөтгөлийг энэ хуудсан дээр ажиллуулахыг зөвшөөрсөн байна.</translation>
+<translation id="1015041505466489552">TrackPoint</translation>
 <translation id="1015318665228971643">Фолдерын нэрийг засах</translation>
 <translation id="1015578595646638936">{NUM_DAYS,plural, =1{<ph name="DEVICE_TYPE" />-г шинэчлэх сүүлийн өдөр}other{<ph name="DEVICE_TYPE" />-г {NUM_DAYS} хоногийн дотор шинэчлэх}}</translation>
 <translation id="1016566241875885511">Нэмэлт мэдээлэл (заавал биш)</translation>
diff --git a/chrome/app/resources/generated_resources_ms.xtb b/chrome/app/resources/generated_resources_ms.xtb
index dd1f57c..5fc00c1 100644
--- a/chrome/app/resources/generated_resources_ms.xtb
+++ b/chrome/app/resources/generated_resources_ms.xtb
@@ -17,6 +17,7 @@
 <translation id="1012794136286421601">Fail Dokumen, Helaian, Slaid dan Lukisan anda sedang disegerakkan. Buka apl Google Drive untuk mengakses fail dalam talian atau luar talian.</translation>
 <translation id="1012876632442809908">Peranti USB-C (port depan)</translation>
 <translation id="1013707859758800957">Pemalam tanpa kotak pasir telah dibenarkan untuk dijalankan di halaman ini.</translation>
+<translation id="1015041505466489552">TrackPoint</translation>
 <translation id="1015318665228971643">Edit Nama Folder</translation>
 <translation id="1015578595646638936">{NUM_DAYS,plural, =1{Hari terakhir untuk mengemas kini <ph name="DEVICE_TYPE" />}other{Kemas kini <ph name="DEVICE_TYPE" /> dalam masa {NUM_DAYS} hari}}</translation>
 <translation id="1016566241875885511">Maklumat tambahan (pilihan)</translation>
@@ -928,6 +929,7 @@
 <translation id="204914487372604757">Cipta pintasan</translation>
 <translation id="2050339315714019657">Potret</translation>
 <translation id="2053312383184521053">Data Keadaan Melahu</translation>
+<translation id="2054665754582400095">Kehadiran anda</translation>
 <translation id="2055585478631012616">Anda akan dilog keluar daripada tapak ini, termasuk dalam tab yang terbuka</translation>
 <translation id="205560151218727633">Logo Google Assistant</translation>
 <translation id="2058456167109518507">Peranti dikesan</translation>
@@ -1214,6 +1216,7 @@
 <translation id="2387052489799050037">Pergi ke Skrin Utama</translation>
 <translation id="2387458720915042159">Jenis sambungan proksi</translation>
 <translation id="2390347491606624519">Tidak dapat menyambung kepada proksi, sila log masuk semula</translation>
+<translation id="2390782873446084770">Penyegerakan Wi-Fi</translation>
 <translation id="2391082728065870591">Hantar Laporan Maklum balas</translation>
 <translation id="2391419135980381625">Fon standard</translation>
 <translation id="2392163307141705938">Anda telah mencapai had masa yang telah ditetapkan oleh ibu/bapa anda untuk <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
@@ -1870,6 +1873,7 @@
 <translation id="3157931365184549694">Pulihkan</translation>
 <translation id="3158033540161634471">Sediakan cap jari anda</translation>
 <translation id="3159493096109238499">Kuning Air</translation>
+<translation id="3159978855457658359">Edit nama peranti</translation>
 <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (disokong perkakasan)</translation>
 <translation id="3161522574479303604">Semua bahasa</translation>
 <translation id="3162853326462195145">Akaun sekolah</translation>
@@ -3230,6 +3234,7 @@
 <translation id="4761104368405085019">Gunakan mikrofon anda</translation>
 <translation id="4762718786438001384">Ruang cakera peranti terlalu rendah</translation>
 <translation id="4763408175235639573">Kuki berikut ditetapkan apabila anda melihat halaman ini</translation>
+<translation id="4764368918650455114">Pastikan kedua-dua peranti dibuka dikunci, berada berhampiran satu sama lain dan Bluetooth telah dihidupkan. Jika anda membuat perkongsian dengan Chromebook, pastikan Kongsi Berdekatan dihidupkan (buka ruang status dengan memilih masa, kemudian pilih Kongsi Berdekatan). <ph name="LINK_BEGIN" />Ketahui lebih lanjut<ph name="LINK_END" /></translation>
 <translation id="4765582662863429759">Membenarkan Android Messages menyampaikan teks daripada telefon ke Chromebook anda</translation>
 <translation id="476598255842811483">Tiada orang melainkan anda membuka Kongsi Berdekatan pada peranti anda</translation>
 <translation id="4768332406694066911">Anda mempunyai sijil daripada organisasi ini yang mengenal pasti anda</translation>
@@ -3392,6 +3397,7 @@
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Apl ini telah dipasang oleh pentadbir anda.</translation>
 <translation id="4964455510556214366">Susunan</translation>
+<translation id="496446150016900060">Segerakkan rangkaian Wi-Fi dengan telefon anda</translation>
 <translation id="4965808351167763748">Adakah anda pasti ingin menyediakan peranti ini untuk menjalankan Hangout Meet?</translation>
 <translation id="496888482094675990">Apl Fail memberikan akses pantas kepada fail yang telah anda simpan di Google Drive, storan luaran atau peranti OS Chrome anda.</translation>
 <translation id="4971412780836297815">Buka apabila selesai</translation>
@@ -3698,6 +3704,7 @@
 <translation id="5341980496415249280">Sila tunggu, membungkus...</translation>
 <translation id="5342091991439452114">PIN mestilah sekurang-kurangnya <ph name="MINIMUM" /> digit</translation>
 <translation id="5344036115151554031">Memulihkan Linux</translation>
+<translation id="5345916423802287046">Mulakan apl apabila anda log masuk</translation>
 <translation id="5350293332385664455">Matikan Google Assistant</translation>
 <translation id="535123479159372765">Teks disalin daripada peranti lain</translation>
 <translation id="5352033265844765294">Pengecopan Masa</translation>
@@ -4007,6 +4014,7 @@
 <translation id="5704875434923668958">Menyegerak ke</translation>
 <translation id="5705005699929844214">Sentiasa paparkan pilihan kebolehaksesan</translation>
 <translation id="5705882733397021510">Kembali</translation>
+<translation id="5707117624115653804">Sesuaikan saiz dan gaya sari kata untuk apl dan tapak yang menyokong tetapan ini</translation>
 <translation id="5707185214361380026">Gagal memuatkan sambungan daripada:</translation>
 <translation id="5708171344853220004">Nama Utama Microsoft</translation>
 <translation id="5709557627224531708">Tetapkan Chrome sebagai penyemak imbas lalai anda</translation>
@@ -4170,6 +4178,7 @@
 <translation id="5904614460720589786">Tidak dapat menyediakan <ph name="APP_NAME" /> kerana terdapat masalah konfigurasi. Sila hubungi pentadbir anda. Kod ralat: <ph name="ERROR_CODE" />.</translation>
 <translation id="5906655207909574370">Hampir terkini! Mulakan semula peranti anda untuk menyelesaikan kemas kini.</translation>
 <translation id="5906732635754427568">Data yang berkaitan dengan apl ini akan dialih keluar daripada peranti ini.</translation>
+<translation id="5908474332780919512">Mulakan Apl Apabila Anda Log Masuk</translation>
 <translation id="5908695239556627796">Kelajuan penatalan tetikus</translation>
 <translation id="5908769186679515905">Sekat tapak daripada menjalankan Flash</translation>
 <translation id="5910363049092958439">Si&amp;mpan Imej Sebagai...</translation>
@@ -4709,6 +4718,7 @@
 <translation id="6532527800157340614">Log masuk gagal kerana token akses anda tidak boleh didapatkan kembali. Sila semak sambungan rangkaian dan cuba lagi.</translation>
 <translation id="6532663472409656417">Perusahaan Didaftarkan</translation>
 <translation id="6535331821390304775">Sentiasa benarkan <ph name="ORIGIN" /> membuka pautan jenis ini dalam apl yang berkaitan</translation>
+<translation id="6537613839935722475">Nama boleh menggunakan huruf, nombor dan tanda sempang (-)</translation>
 <translation id="6538635548667167211">Tetapan penggunaan data semasa ialah Data</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />Perhatian:<ph name="END_BOLD" /> Dayakan hanya jika anda pasti akan perkara yang anda lakukan atau jika anda telah diminta melakukan sedemikian, kerana pengumpulan data boleh mengurangkan prestasi.</translation>
 <translation id="6541638731489116978">Tapak ini telah disekat daripada mengakses penderia gerakan anda.</translation>
@@ -4797,6 +4807,7 @@
 <translation id="6650234781371031356">Kata laluan anda untuk <ph name="WEBSITE" /> yang disimpan pada peranti ini dan dalam Akaun Google anda. Yang mana satu mahu anda padamkan?</translation>
 <translation id="665061930738760572">Buka dalam &amp;Tetingkap Baharu</translation>
 <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="6654509035557065241">Utamakan rangkaian</translation>
 <translation id="6655190889273724601">Mod pembangun</translation>
@@ -5400,6 +5411,7 @@
 <translation id="7375235221357833624">{0,plural, =1{Kemas kini peranti dalam masa sejam}other{Kemas kini peranti dalam masa # jam}}</translation>
 <translation id="7376553024552204454">Serlahkan kursor tetikus semasa kursor bergerak</translation>
 <translation id="7377451353532943397">Teruskan menyekat akses penderia</translation>
+<translation id="7378611153938412599">Kata laluan lemah mudah diteka. Pastikan anda membuat kata laluan kukuh. <ph name="BEGIN_LINK" />Lihat pelbagai lagi petua keselamatan.<ph name="END_LINK" /></translation>
 <translation id="73786666777299047">Buka Gedung Web Chrome</translation>
 <translation id="7378812711085314936">Dapatkan sambungan data</translation>
 <translation id="7380622428988553498">Nama peranti mengandungi aksara tidak sah</translation>
@@ -5924,6 +5936,7 @@
 <translation id="7959074893852789871">Fail mengandungi berbilang sijil, beberapa daripadanya tidak diimport:</translation>
 <translation id="7961015016161918242">Tidak sama sekali</translation>
 <translation id="7963001036288347286">Pemecutan pad sentuh</translation>
+<translation id="7963608432878156675">Nama ini dapat dilihat oleh peranti lain untuk sambungan Bluetooth dan rangkaian</translation>
 <translation id="7963826112438303517">Assistant menggunakan rakaman ini dan permintaan lisan anda untuk membuat dan mengemas kini model suara anda, yang hanya disimpan pada peranti yang telah dihidupkan ciri Voice Matchnya. Lihat atau latih semula aktiviti suara dalam Tetapan Assistant.</translation>
 <translation id="7966241909927244760">S&amp;alin Alamat Imej</translation>
 <translation id="7966571622054096916">{COUNT,plural, =1{1 item dalam senarai penanda halaman}other{{COUNT} item dalam senarai penanda halaman}}</translation>
@@ -6224,7 +6237,7 @@
 <translation id="8300011035382349091">Edit penanda halaman untuk tab ini</translation>
 <translation id="8300374739238450534">Biru malam</translation>
 <translation id="8300849813060516376">OTASP gagal</translation>
-<translation id="8304383784961451596">Anda tidak akan dibenarkan untuk menggunakan peranti ini. Sila hubungi pentadbir untuk mendapatkan kebenaran log masuk atau log masuk dengan akaun Google yang diawasi oleh Family Link.</translation>
+<translation id="8304383784961451596">Anda tidak akan dibenarkan untuk menggunakan peranti ini. Sila hubungi pentadbir untuk mendapatkan kebenaran log masuk atau log masuk menggunakan akaun Google yang diawasi oleh Family Link.</translation>
 <translation id="8308179586020895837">Tanya jika <ph name="HOST" /> mahu mengakses kamera anda</translation>
 <translation id="830868413617744215">Beta</translation>
 <translation id="8309458809024885768">Sijil sudah wujud</translation>
@@ -6389,6 +6402,7 @@
 <translation id="850875081535031620">Tiada perisian berbahaya ditemui</translation>
 <translation id="8509177919508253835">Tetapkan semula kunci keselamatan dan buat PIN</translation>
 <translation id="8509646642152301857">Muat turun kamus semakan ejaan gagal.</translation>
+<translation id="8512396579636492893">{COUNT,plural, =0{Tiada kata laluan lemah ditemukan}=1{{COUNT} kata laluan lemah ditemukan}other{{COUNT} kata laluan lemah ditemukan}}</translation>
 <translation id="8512476990829870887">Tamatkan Proses</translation>
 <translation id="851263357009351303">Sentiasa benarkan <ph name="HOST" /> untuk memaparkan imej</translation>
 <translation id="8513108775083588393">Autoputar</translation>
diff --git a/chrome/app/resources/generated_resources_my.xtb b/chrome/app/resources/generated_resources_my.xtb
index f8d045c0..907c7618 100644
--- a/chrome/app/resources/generated_resources_my.xtb
+++ b/chrome/app/resources/generated_resources_my.xtb
@@ -17,6 +17,7 @@
 <translation id="1012794136286421601">သင်၏ စာတမ်းများ၊ စာရွက်များ၊ ဆလိုက်များ၊ နှင့် ဆွဲပုံ ဖိုင်များကို စင့်က် လုပ်ပေးနေသည်။ ၎င်းတို့ကို အွန်လိုင်း သို့မဟုတ် အော့ဖ်လိုင်း ရယူသုံးရန် Google ဒရိုက်ဗ် အက်ပ်ကို ဖွင့်ပါ။</translation>
 <translation id="1012876632442809908">USB-C ကိရိယာ (အရှေ့ပိုင်း ပို့တ်)</translation>
 <translation id="1013707859758800957">Unsandboxed ပလတ်အင်တစ်ခုအား ဤစာမျက်နှာတွင် ဖွင့်ရန် ခွင့်ပြုထား၏။</translation>
+<translation id="1015041505466489552">TrackPoint</translation>
 <translation id="1015318665228971643">ဖိုင်တွဲအမည်ကို တည်းဖြတ်ခြင်း</translation>
 <translation id="1015578595646638936">{NUM_DAYS,plural, =1{<ph name="DEVICE_TYPE" /> ကို အပ်ဒိတ်လုပ်ရန် နောက်ဆုံးရက်}other{<ph name="DEVICE_TYPE" /> ကို {NUM_DAYS} ရက်အတွင်း အပ်ဒိတ်လုပ်ပါ}}</translation>
 <translation id="1016566241875885511">ထပ်ဆောင်းအချက်အလက်များ (မဖြည့်လည်းရ)</translation>
@@ -929,6 +930,7 @@
 <translation id="204914487372604757">ဖြတ်လမ်း ဖန်တီးရန်</translation>
 <translation id="2050339315714019657">ဒေါင်လိုက်</translation>
 <translation id="2053312383184521053">မလှုပ်မရှား အခြေအနေ ဒေတာ</translation>
+<translation id="2054665754582400095">သင်ရှိနေမှု</translation>
 <translation id="2055585478631012616">ဖွင့်ထားသော တဘ်များအပါအဝင် ဤဝဘ်ဆိုက်များမှ သင် ထွက်သွားပါမည်</translation>
 <translation id="205560151218727633">Google assistant တံဆိပ်</translation>
 <translation id="2058456167109518507">စက်ပစ္စည်း တွေ့ရှိထားသည်</translation>
@@ -1215,6 +1217,7 @@
 <translation id="2387052489799050037">'ပင်မ စာမျက်နှာ' သို့သွားခြင်း</translation>
 <translation id="2387458720915042159">ပရောက်စီ ချိတ်ဆက်မှု အမျိုးအစား</translation>
 <translation id="2390347491606624519">ပရောက်စီနှင့် ချိတ်ဆက်၍မရပါ၊ ထပ်ပြီး လက်မှတ်ထိုးဝင်ပါ</translation>
+<translation id="2390782873446084770">Wi-Fi စင့်ခ်</translation>
 <translation id="2391082728065870591">တုံ့ပြန်ချက် အစီရင်ခံစာ ပို့ရန်</translation>
 <translation id="2391419135980381625">စံ​ေ</translation>
 <translation id="2392163307141705938"><ph name="IDS_SHORT_PRODUCT_NAME" /> အတွက် သင့်မိဘသတ်မှတ်ထားသော အချိန်ကန့်သတ်ချက် ပြည့်သွားပြီ။</translation>
@@ -1871,6 +1874,7 @@
 <translation id="3157931365184549694">ပြန်လည်ဖေါ်ထုတ်ရန်</translation>
 <translation id="3158033540161634471">သင်၏ လက်ဗွေကို စနစ်ထည့်သွင်းခြင်း</translation>
 <translation id="3159493096109238499">ဝါညိုနု</translation>
+<translation id="3159978855457658359">ကိရိယာအမည် တည်းဖြတ်ပါ</translation>
 <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (စက်ပစ္စည်းကို အသုံးပြုထားသည်)</translation>
 <translation id="3161522574479303604">ဘာသာစကားများ အားလုံး</translation>
 <translation id="3162853326462195145">ကျောင်းအကောင့်</translation>
@@ -3230,6 +3234,7 @@
 <translation id="4761104368405085019">သင့်မိုက်ခရိုဖုန်းကို အသုံးပြုရန်</translation>
 <translation id="4762718786438001384">စက်ပစ္စည်း၏ သိုလှောင်ခန်းအလွန်နည်းနေပါသည်</translation>
 <translation id="4763408175235639573">ဤစာမျက်နှာကို သင်ကြည့်ခဲ့ချိန်၌ အောက်ပါကွတ်ကီးများကို သတ်မှတ်ထားပါသည်</translation>
+<translation id="4764368918650455114">စက်နှစ်ခုလုံးပွင့်နေပြီး အတူကပ်ထားကာ ဘလူးတုသ်ဖွင့်ထားကြောင်း သေချာပါစေ။ Chromebook ဖြင့် မျှဝေနေပါက ၎င်းတွင် 'အနီးတစ်ဝိုက် မျှဝေခြင်း' ဖွင့်ထားကြောင်း သေချာပါစေ (အချိန်ရွေးချယ်ပြီး အခြေအနေပြနေရာကို ဖွင့်ပါ၊ ထို့နောက် 'အနီးတစ်ဝိုက် မျှဝေခြင်း' ကိုရွေးပါ)။ <ph name="LINK_BEGIN" />ပိုမိုလေ့လာရန်<ph name="LINK_END" /></translation>
 <translation id="4765582662863429759">သင့်ဖုန်းမှ သင်၏ Chromebook သို့ စာတိုမက်ဆေ့ဂျ်များ ထပ်ဆင့်ပို့ရန် Android Messages ကို ခွင့်ပြုပါ</translation>
 <translation id="476598255842811483">သင်၏စက်တွင် 'အနီးတစ်ဝိုက် မျှဝေခြင်း' ကို မဖွင့်လျှင် သင့်စက်ကို မည်သူမျှ မမျှဝေနိုင်ပါ</translation>
 <translation id="4768332406694066911">ဤအဖွဲ့အစည်းများမှနေ၍ သင်၏ အထောက်အထား အသိအမှတ်ပြုလက်မှတ်များ သင့်ထံတွင်ရှိပါသည်</translation>
@@ -3392,6 +3397,7 @@
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">ဤအက်ပ်ကို သင်၏စီမံခန့်ခွဲသူက ထည့်သွင်းထားပါသည်။</translation>
 <translation id="4964455510556214366">အစီအစဉ်</translation>
+<translation id="496446150016900060">သင့်ဖုန်းဖြင့် Wi-Fi ကွန်ရက်များကို စင့်ခ်လုပ်နိုင်သည်</translation>
 <translation id="4965808351167763748">Hangouts Meet ကို ဖွင့်ရန်အတွက် ဤစက်ပစ္စည်းကို စနစ်ထည့်သွင်းလိုသည်မှာ သေချာပါသလား။</translation>
 <translation id="496888482094675990">ဖိုင်များ အက်ပ်သည် သင်က Google ဒရိုက်ဗ်၊ ပြင်ပ သိုလှောင်ခန်း၊ သို့မဟုတ် သင်၏ Chrome OS ကိရိယာမှာ သိမ်းဆည်းထားသည့် ဖိုင်များကို လျင်မြန်စွာ ရယူသုံးခွင့် စီမံပေးသည်။</translation>
 <translation id="4971412780836297815">လုပ်ပြီးလျှင် ဖွင့်ပါ</translation>
@@ -3698,6 +3704,7 @@
 <translation id="5341980496415249280">ခေတ္တစောင့်ပါ၊ ထုပ်ပိုးနေသည်...</translation>
 <translation id="5342091991439452114">ပင်နံပါတ်သည် အနည်းဆုံးဂဏန်း <ph name="MINIMUM" /> လုံးရှိရပါမည်</translation>
 <translation id="5344036115151554031">Linux ကို ပြန်ယူနေသည်</translation>
+<translation id="5345916423802287046">သင်လက်မှတ်ထိုးဝင်သောအခါ အက်ပ်စတင်ရန်</translation>
 <translation id="5350293332385664455">Google Assistant ပိတ်ရန်</translation>
 <translation id="535123479159372765">အခြားစက်မှ မိတ္တူကူးထားသည့် စာသား</translation>
 <translation id="5352033265844765294">အချိန် တံဆိပ်ထုနေ</translation>
@@ -4008,6 +4015,7 @@
 <translation id="5704875434923668958">စင့်ခ်လုပ်နေသည့်အကောင့်</translation>
 <translation id="5705005699929844214">အများသုံးစွဲနိုင်မှု ရွေးစရာများ အမြဲပြရန်</translation>
 <translation id="5705882733397021510">နောက်ပြန်သွားရန်</translation>
+<translation id="5707117624115653804">ဤဆက်တင်ကိုပံ့ပိုးသော အက်ပ်နှင့် ဝဘ်ဆိုက်များအတွက် စာတန်းအရွယ်အစားနှင့် ပုံစံကို စိတ်ကြိုက်ပြုလုပ်ပေးသည်</translation>
 <translation id="5707185214361380026">မှ အိတ်စတန်းရှင်း ဖွင့်ခြင်း မအောင်မြင်ပါ:</translation>
 <translation id="5708171344853220004">Microsoft Principal Name</translation>
 <translation id="5709557627224531708">Chromium ကို သင်၏မူရင်းဘရောင်ဇာအဖြစ် သတ်မှတ်ပါ</translation>
@@ -4171,6 +4179,7 @@
 <translation id="5904614460720589786">စီစဉ်သတ်မှတ်မှု ပြဿနာကြောင့် <ph name="APP_NAME" /> ကို စနစ်ထည့်သွင်း၍မရပါ။ သင့်စီမံခန့်ခွဲသူထံ ဆက်သွယ်ပါ။ အမှားကုဒ်- <ph name="ERROR_CODE" />။</translation>
 <translation id="5906655207909574370">အပ်ဒိတ်ပြီးရန် အနည်းငယ်သာလိုပါသည်။ အပ်ဒိတ်လုပ်ခြင်းကို အဆုံးသတ်ရန် သင့်စက်ပစ္စည်းကို ပြန်ဖွင့်ပါ။</translation>
 <translation id="5906732635754427568">ဤအက်ပ်နှင့်ဆက်စပ်သည့် ဒေတာကို ဤစက်ပစ္စည်းထဲမှ ဖယ်ရှားပါမည်။</translation>
+<translation id="5908474332780919512">သင်လက်မှတ်ထိုးဝင်သောအခါ အက်ပ်စတင်ရန်</translation>
 <translation id="5908695239556627796">မောက်စ်လှိမ့်သည့် မြန်နှုန်း</translation>
 <translation id="5908769186679515905">ဆိုက်များအား Flash ကို ဖွင့်ခြင်းမှ ပိတ်ဆို့ပါ</translation>
 <translation id="5910363049092958439">ပုံ&amp;ကို အဖြစ် သိမ်းရန်...</translation>
@@ -4707,6 +4716,7 @@
 <translation id="6532527800157340614">တိုကင်ကို မရယူနိုင်သည့်အတွက် လက်မှတ်ထိုးဝင်၍မရပါ။ သင့်ကွန်ရက်ချိတ်ဆက်မှုကို စစ်ဆေးပြီး ထပ်စမ်းကြည့်ပါ။</translation>
 <translation id="6532663472409656417">လုပ်ငန်း အမည်စာရင်းသွင်းထားသည်</translation>
 <translation id="6535331821390304775">ဆက်စပ်နေသည့် အက်ပ်တွင် ဤလင့်ခ်အမျိုးအစားများ ဖွင့်ရန်အတွက် <ph name="ORIGIN" /> ကို အမြဲခွင့်ပြုရန်</translation>
+<translation id="6537613839935722475">အမည်တွင် စာလုံးများ၊ နံပါတ်များနှင့် တုံးတိုများ (-) သုံးနိုင်သည်</translation>
 <translation id="6538635548667167211">လက်ရှိဒေတာသုံးစွဲမှုဆက်တင်သည် ဒေတာဖြစ်သည်</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />မှတ်ချက်:<ph name="END_BOLD" /> ဒေတာစုဆောင်းခြင်းသည် စွမ်းဆောင်ရည်ကျဆင်းစေသောကြောင့် သင့်ကိုလုပ်ခိုင်းသောကြောင့် သို့မဟုတ် သင်ဘာလုပ်နေသည်ကို သိလျှင်သာ ဖွင့်ပါ။</translation>
 <translation id="6541638731489116978">ဤဝဘ်ဆိုက်အား သင်၏လှုပ်ရှားမှု အာရုံခံစနစ်များ အသုံးပြုခွင့်ကို တားမြစ်ထားသည်။</translation>
@@ -4795,6 +4805,7 @@
 <translation id="6650234781371031356"><ph name="WEBSITE" /> အတွက် သင့်စကားဝှက်ကို ဤစက်ပစ္စည်းနှင့် သင့် Google အကောင့်တွင် သိမ်းထားသည်။ ဘယ်တစ်ခုကို သင်ဖျက်လိုပါသလဲ။</translation>
 <translation id="665061930738760572">ဝင်ဒိုးအသစ် ထဲမှာ &amp;ဖွင့်ရန်</translation>
 <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="6654509035557065241">ဦးစားပေး ကွန်ရက်</translation>
 <translation id="6655190889273724601">ပြုစုသူ မုဒ်</translation>
@@ -5398,6 +5409,7 @@
 <translation id="7375235221357833624">{0,plural, =1{စက်ကို တစ်နာရီအတွင်း အပ်ဒိတ်လုပ်ပါ}other{စက်ကို # နာရီအတွင်း အပ်ဒိတ်လုပ်ပါ}}</translation>
 <translation id="7376553024552204454">မြှားရွေ့လျားနေသည့်အချိန်တွင် ၎င်းကိုထင်ရှားအောင်ပြုလုပ်ပါ</translation>
 <translation id="7377451353532943397">အာရုံခံကိရိယာ အသုံးပြုခွင့်ကို ဆက်လက်ပိတ်ထားရန်</translation>
+<translation id="7378611153938412599">လုံခြုံမှုလျော့နည်းသည့် စကားဝှက်များကို အလွယ်တကူ ခန့်မှန်းနိုင်သည်။ လုံခြုံမှုမြင့်သည့် စကားဝှက်များကို သတ်မှတ်ပါ။ <ph name="BEGIN_LINK" />နောက်ထပ် လုံခြုံရေးအကြံပြုချက်များ ကြည့်ရန်။<ph name="END_LINK" /></translation>
 <translation id="73786666777299047">Chrome Web စတိုးကို ဖွင့်ရန်</translation>
 <translation id="7378812711085314936">ဒေတာချိတ်ဆက်မှု ရယူပါ</translation>
 <translation id="7380622428988553498">စက်အမည်တွင် မမှန်ကန်သော အက္ခရာများပါဝင်သည်</translation>
@@ -5922,6 +5934,7 @@
 <translation id="7959074893852789871">ဖိုင်ထဲမှာ လက်မှတ် အများအပြား ပါဝင်ပြီ အချို့ကို မတင်သွင်းခဲ့ပါ:</translation>
 <translation id="7961015016161918242">ဘယ်သောအခါမှ</translation>
 <translation id="7963001036288347286">တာ့ချ်ပက် အရှိန်မြှင့်ရန်</translation>
+<translation id="7963608432878156675">ဘလူးတုသ်နှင့် ကွန်ရက်ချိတ်ဆက်မှုများအတွက် အခြားစက်များက ဤအမည်ကို မြင်နိုင်သည်</translation>
 <translation id="7963826112438303517">သင်၏ Assistant က ဤအသံသွင်းထားမှုများနှင့် သင့်စကားပြော တောင်းဆိုချက်များကို အသုံးပြုပြီး သင်၏ အသံမော်ဒယ်ကို ပြုလုပ်ပါသည်။ ၎င်းကို သင် Voice Match ဖွင့်ထားသော ကိရိယာများတွင်သာ သိမ်းထားပါသည်။ 'Assistant ဆက်တင်များ' တွင် အသံလုပ်ဆောင်ချက်ကို ကြည့်ရှုခြင်း (သို့) ပြန်လေ့ကျင့်ပေးခြင်းတို့ ပြုလုပ်ပါ။</translation>
 <translation id="7966241909927244760">ပုံ၏ လိပ်စာကို မိ&amp;တ္တူ ကူးပါ</translation>
 <translation id="7966571622054096916">{COUNT,plural, =1{လိပ်စာစာရင်းထဲတွင် 1 ခုရှိသည်}other{လိပ်စာစာရင်းထဲတွင် {COUNT} ခုရှိသည်}}</translation>
@@ -6385,6 +6398,7 @@
 <translation id="850875081535031620">အန္တရာယ်ရှိသည့် ဆော့ဖ်ဝဲကို မတွေ့ပါ</translation>
 <translation id="8509177919508253835">လုံခြုံရေးကီးများ ပြင်ဆင်သတ်မှတ်ပြီး ပင်နံပါတ်များ ပြုလုပ်ပါ</translation>
 <translation id="8509646642152301857">စာလုံးပေါင်း စစ်ကြည့်ရေး အဘိဓာန် ဒေါင်းလုဒ် လုပ်မရခဲ့ပါ။</translation>
+<translation id="8512396579636492893">{COUNT,plural, =0{လုံခြုံမှုလျော့နည်းသည့် စကားဝှက် မရှိပါ}=1{လုံခြုံမှုလျော့နည်းသည့် စကားဝှက် {COUNT} ခု တွေ့သည်}other{လုံခြုံမှုလျော့နည်းသည့် စကားဝှက် {COUNT} ခု တွေ့သည်}}</translation>
 <translation id="8512476990829870887">လုပ်ငန်းစဉ် အဆုံးသတ်ရန်</translation>
 <translation id="851263357009351303">ပုံများပြရန် <ph name="HOST" /> ကိုအမြဲတမ်း ခွင့်ပြုမည်</translation>
 <translation id="8513108775083588393">အော်တို-လှည့်</translation>
diff --git a/chrome/app/resources/generated_resources_ne.xtb b/chrome/app/resources/generated_resources_ne.xtb
index 326b5fe..8b16bc6 100644
--- a/chrome/app/resources/generated_resources_ne.xtb
+++ b/chrome/app/resources/generated_resources_ne.xtb
@@ -275,7 +275,7 @@
 <translation id="1313705515580255288">तपाइँका पृष्ठमञ्जूषाहरू, इतिहास, र अन्य सेटिङहरू तपाइँको Google खातामा समक्रमण गरिनेछन्।</translation>
 <translation id="1314565355471455267">Android VPN</translation>
 <translation id="131461803491198646">गृह सञ्जाल, रोम गरिरहेको छैन</translation>
-<translation id="1315056510003830387">Flash प्रयोग गर्न अनुमति नदिइएका साइटहरू</translation>
+<translation id="1315056510003830387">Flash प्रयोग गर्ने अनुमति नदिइएका साइटहरू</translation>
 <translation id="1316136264406804862">खोज्दै...</translation>
 <translation id="1316495628809031177">सिंक पज गरिएको छ</translation>
 <translation id="1317637799698924700">तपाईंको डकिङ स्टेसन USB Type-C सँग मिल्दो मोडमा काम गर्ने छ।</translation>
@@ -334,7 +334,7 @@
 <translation id="1386791642444521222">SIM कार्ड सक्रिय पार्नुहोस्</translation>
 <translation id="1387519831959169718">आफूले व्यक्तिगत रूपमा गर्ने ब्राउजिङ अलग गर्न तपाईं <ph name="NEW_USER" /> का लागि एउटा नयाँ प्रोफाइल बनाउन सक्नुहुन्छ</translation>
 <translation id="138784436342154190">पूर्वनिर्धारित सुरुवात पृष्ठलाई पुनर्स्थापना गर्ने हो?</translation>
-<translation id="1388253969141979417">तपाईंको माइक्रोफोन प्रयोग गर्न अनुमति दिइएका साइटहरू</translation>
+<translation id="1388253969141979417">तपाईंको माइक्रोफोन प्रयोग गर्ने अनुमति दिइएका साइटहरू</translation>
 <translation id="1388728792929436380">अपडेट पूरा भएपछि <ph name="DEVICE_TYPE" /> रिस्टार्ट हुने छ।</translation>
 <translation id="1389342855416376185">संरक्षित सामग्री ब्लक गर्नुहोस्</translation>
 <translation id="1390548061267426325">नियमित ट्याबको रूपमा खोल्नुहोस्</translation>
@@ -385,7 +385,7 @@
 <translation id="1433811987160647649">पहुँच राख्नु अघि सोध्नुहोस्</translation>
 <translation id="1434696352799406980">यसले तपाईँको सुरूवात पृष्ठ, नयाँ ट्याब पृष्ठ, सर्च इन्जिन र पिन गरिएको ट्याबहरू रिसेट गर्ने छ। यसले सबै विस्तारहरू असक्षम गर्ने छ र कुकीहरू जस्ता अस्थायी डेटा खाली गर्ने छ। तपाईँको पुस्तक चिन्ह, इतिहास र सुरक्षित गरिएका पासवर्डहरू खाली हुने छैनन्।</translation>
 <translation id="1434886155212424586">नयाँ ट्याब पृष्ठ गृहपृष्ठ हो</translation>
-<translation id="1435515966666225466">तपाईंको कम्प्युटर चलाउनका निम्ति कुनै प्लगइन प्रयोग गर्न अनुमति दिइएका साइटहरू</translation>
+<translation id="1435515966666225466">तपाईंको कम्प्युटर चलाउनका निम्ति कुनै प्लगइन प्रयोग गर्ने अनुमति दिइएका साइटहरू</translation>
 <translation id="1436390408194692385"><ph name="TICKET_TIME_LEFT" /> का लागि मान्य छ</translation>
 <translation id="1436671784520050284">सेटअप जारी राख्नुहोस्</translation>
 <translation id="1436784010935106834">हटाइयो</translation>
@@ -752,7 +752,7 @@
 <translation id="1841705068325380214"><ph name="EXTENSION_NAME" /> लाई असक्षम पारियो</translation>
 <translation id="184273675144259287">अघिल्लो ब्याकअपबाट आफ्ना Linux सम्बन्धी एप र फाइलहरू प्रतिस्थापन गर्नुहोस्</translation>
 <translation id="1842766183094193446">तपाईंले डेमो मोड सक्षम पार्न चाहनुभएकै हो?</translation>
-<translation id="1845727111305721124">ध्वनि प्ले गर्न अनुमति दिइएका साइटहरू</translation>
+<translation id="1845727111305721124">ध्वनि प्ले गर्ने अनुमति दिइएका साइटहरू</translation>
 <translation id="1846308012215045257"><ph name="PLUGIN_NAME" /> चालु गर्न कन्ट्रोल-क्लिक गर्नुहोस्</translation>
 <translation id="1849186935225320012">यस पृष्ठसँग MIDI  यन्त्रहरूको पूर्ण नियन्त्रण छ।</translation>
 <translation id="1850508293116537636">&amp;घडीको दिशामा घुमाउनुहोस्</translation>
@@ -777,7 +777,7 @@
 <translation id="187145082678092583">अझ थोरै एपहरू</translation>
 <translation id="1871534214638631766">प्रयोगकर्ताले राइट क्लिक गर्दा वा सामग्रीमा केही बेरसम्म थिचिरहँदा त्यससँग सम्बन्धित जानकारी देखाइयोस्</translation>
 <translation id="1871615898038944731">तपाईंको <ph name="DEVICE_TYPE" /> अद्यावधिक छ</translation>
-<translation id="1874248162548993294">जुनसुकै विज्ञापनहरू देखाउन अनुमति दिइएका साइटहरू</translation>
+<translation id="1874248162548993294">जुनसुकै विज्ञापनहरू देखाउने अनुमति दिइएका साइटहरू</translation>
 <translation id="1874972853365565008">{NUM_TABS,plural, =1{ट्याब सारेर अर्को विन्डोमा लैजानुहोस्}other{ट्याबहरू सारेर अर्को विन्डोमा लैजानुहोस्}}</translation>
 <translation id="1875386316419689002">यो ट्याब कुनै HID यन्त्रमा जोडिएको छ।</translation>
 <translation id="1875387611427697908">यसलाई <ph name="CHROME_WEB_STORE" /> बाट मात्रै थप्न सकिन्छ</translation>
@@ -833,7 +833,7 @@
 <translation id="1931152874660185993">अवयवहरू स्थापित छैनन्।</translation>
 <translation id="1932098463447129402">यसभन्दा अघि होइन</translation>
 <translation id="1933809209549026293">कृपया माउस वा कीबोर्ड जडान गर्नुहोस्। यदि तपाईं ब्लुटूथ यन्त्र प्रयोग गरिरहनु भएको छ भने, यो जोडिनका लागि तयार छ भनि सुनिश्चित गर्नुहोस्।</translation>
-<translation id="1935303383381416800">तपाईंको स्थान हेर्न अनुमति दिइएका साइटहरू</translation>
+<translation id="1935303383381416800">तपाईंको स्थान हेर्ने अनुमति दिइएका साइटहरू</translation>
 <translation id="1936931585862840749">प्रिन्ट गर्नु पर्ने प्रतिको सङ्ख्या तोक्न (१ देखि <ph name="MAX_COPIES" /> सम्मको) कुनै सङ्ख्या प्रयोग गर्नुहोस्।</translation>
 <translation id="1937774647013465102">यस यन्त्रमार्फत <ph name="ARCHITECTURE_DEVICE" />प्रकारको कन्टेनरसम्बन्धी वास्तुकला <ph name="ARCHITECTURE_CONTAINER" /> आयात गर्न सकिएन। तपाईं यो कन्टेनरलाई फरक यन्त्रमा पुनर्स्थापना गरी हेर्न सक्नुहुन्छ अथवा तपाईं Files अनुप्रयोगमार्फत खोलेर यस कन्टेनरसम्बन्धी छविभित्रका फाइलहरूमाथि पहुँच राख्न सक्नुहुन्छ।</translation>
 <translation id="1938351510777341717">बाह्य आदेश</translation>
@@ -1101,7 +1101,7 @@
 <translation id="2261323523305321874">तपाईंको प्रशासकले गर्नुभएको प्रणालीव्यापी परिवर्तनले केही पुराना प्रोफाइलहरूलाई असक्षम पार्छ।</translation>
 <translation id="2262332168014443534">लाइट मोडले अब HTTPS लगायत सबै पृष्ठहरू ब्राउज गर्ने कार्यलाई अझ छिटो बनाउँछ।</translation>
 <translation id="2262477216570151239">दोहोर्याउनु अघिको ढिलाइ</translation>
-<translation id="2262888617381992508">संरक्षित सामग्री प्ले गर्न अनुमति नदिइएका साइटहरू</translation>
+<translation id="2262888617381992508">संरक्षित सामग्री प्ले गर्ने अनुमति नदिइएका साइटहरू</translation>
 <translation id="2263189956353037928">साइन आउट गरेर फेरि साइन इन गर्नुहोस्‌</translation>
 <translation id="2263371730707937087">स्क्रिन रिफ्रेस हुने दर</translation>
 <translation id="22665427234727190">कुनै साइटले ब्लुटुथ यन्त्रहरूमाथि पहुँच राख्न खोज्दा चलाउन दिने कि नदिने भनी मलाई सोधियोस् (सिफारिस गरिएको)</translation>
@@ -1637,7 +1637,7 @@
 <translation id="2880660355386638022">विन्डो रहने स्थान</translation>
 <translation id="2881076733170862447">तपाईंले विस्तारमा क्लिक गर्दा</translation>
 <translation id="2882943222317434580"><ph name="IDS_SHORT_PRODUCT_NAME" /> रिस्टार्ट हुनेछ र क्षण भरमा रिसेट गर्दछ</translation>
-<translation id="288387288628762616">Flash प्रयोग गर्न अनुमति दिइएका साइटहरू</translation>
+<translation id="288387288628762616">Flash प्रयोग गर्ने अनुमति दिइएका साइटहरू</translation>
 <translation id="2885378588091291677">कार्य व्यवस्थापक</translation>
 <translation id="2885729872133513017">सर्भरको जवाफ डिकोडिङ गर्ने क्रममा कुनै समस्या भयो।</translation>
 <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation>
@@ -1921,7 +1921,7 @@
 <translation id="324849028894344899"><ph name="WINDOW_TITLE" /> - नेटवर्क सम्बन्धी त्रुटि</translation>
 <translation id="3248902735035392926">सुरक्षासम्बन्धी विषयहरू केही क्षण निकालेर <ph name="BEGIN_LINK" />अहिले नै आफ्ना एक्स्टेन्सनहरू जाँच्नुहोस्<ph name="END_LINK" /></translation>
 <translation id="3251759466064201842">&lt;प्रमाणपत्रको भाग होइन&gt;</translation>
-<translation id="325238099842880997">बालबालिकालाई घरमा खेल्न, नयाँ कुरा सिक्न र विद्यालयको कार्य गर्न सघाउन आधारभूत डिजिटल नियमहरू सेट गर्नुहोस्</translation>
+<translation id="325238099842880997">बालबालिकालाई घरमा खेल्न, नयाँ कुरा सिक्न र विद्यालयको कार्य गर्न सघाउन आधारभूत डिजिटल नियमहरू बनाउनुहोस्</translation>
 <translation id="3253225298092156258">उपलब्ध छैन</translation>
 <translation id="3253448572569133955">अज्ञात खाता</translation>
 <translation id="3254084468305910013">{COUNT,plural, =0{सुरक्षासम्बन्धी कुनै पनि समस्या फेला परेन}=1{सुरक्षासम्बन्धी {COUNT} समस्या फेला पर्‍यो}other{सुरक्षासम्बन्धी {COUNT} वटा समस्या फेला परे}}</translation>
@@ -2049,7 +2049,7 @@
 <translation id="3404249063913988450">स्क्रिन सेभर सक्षम पार्नुहोस्</translation>
 <translation id="3405664148539009465">फन्टहरूलाई आफू अनुकूल गर्नुहोस्</translation>
 <translation id="3405763860805964263">...</translation>
-<translation id="3406290648907941085">भर्चुअल रियालिटी चल्ने यन्त्र र तिनमा भएका डेटा प्रयोग गर्न अनुमति दिइएका साइटहरू</translation>
+<translation id="3406290648907941085">भर्चुअल रियालिटी चल्ने यन्त्र र तिनमा भएका डेटा प्रयोग गर्ने अनुमति दिइएका साइटहरू</translation>
 <translation id="3406396172897554194">भाषा वा इनपुट विधिको नामअनुसार खोज्नुहोस्</translation>
 <translation id="3406605057700382950">बुकमार्क पट्टी देखाउनुहोस्</translation>
 <translation id="340671561090997290">{NUM_EXTENSIONS,plural, =1{यो एक्स्टेन्सन खतरनाक हुन सक्छ}other{यी एक्स्टेन्सनहरू खतरनाक हुन सक्छन्}}</translation>
@@ -2440,7 +2440,7 @@
 <translation id="3822559385185038546">यो प्रोक्सी तपाईंका प्रशासकद्वारा लागू गरिएको हो</translation>
 <translation id="3823310065043511710">Linux प्रयोग गर्न कम्तीमा पनि <ph name="INSTALL_SIZE" /> ठाउँ खाली राख्न सिफारिस गरिन्छ।</translation>
 <translation id="3824621460022590830">यन्त्र दर्ता गर्न प्रयोग गरिने टोकन अवैध छ। कृपया आफ्नो यन्त्रका मालिक वा एड्मिनसँग सम्पर्क गर्नुहोस्। त्रुटिको कोड: <ph name="ERROR_CODE" />।</translation>
-<translation id="3826071569074535339">मोसन सेन्सरहरू प्रयोग गर्न अनुमति दिइएका साइटहरू</translation>
+<translation id="3826071569074535339">मोसन सेन्सरहरू प्रयोग गर्ने अनुमति दिइएका साइटहरू</translation>
 <translation id="3826440694796503677">तपाईंका व्यवस्थापकले योभन्दा बढी Google खाताहरू थप्ने सुविधा असक्षम पार्नुभएको छ</translation>
 <translation id="3827306204503227641">स्यान्डबक्स हटाइएका प्लगइनहरूलाई अनुमति जारी राख्नुहोस्</translation>
 <translation id="3827774300009121996">&amp;पूर्ण स्क्रिन</translation>
@@ -2494,7 +2494,7 @@
 <translation id="3873915545594852654">ARC++ सम्बन्धी कुनै समस्या भयो।</translation>
 <translation id="3874164307099183178">Google सहायक सक्रिय गर्नुहोस्</translation>
 <translation id="3877075909000773256"><ph name="USER_NAME" /> को यन्त्रमा <ph name="USER_EMAIL" /> खाता प्रयोग गरी नजिकैका यन्त्रसँग सेयर गर्ने सुविधाका सेटिङ।</translation>
-<translation id="387771067039689031">तपाईंको कम्प्युटर चलाउनका निम्ति कुनै प्लगइन प्रयोग गर्न अनुमति नदिइएका साइटहरू</translation>
+<translation id="387771067039689031">तपाईंको कम्प्युटर चलाउनका निम्ति कुनै प्लगइन प्रयोग गर्ने अनुमति नदिइएका साइटहरू</translation>
 <translation id="3879748587602334249">डाउनलोड म्यानेजर</translation>
 <translation id="3881478300875776315">कम हरफ देखाउनुहोस्</translation>
 <translation id="3882165008614329320">क्यामेरा वा फाइलको विद्यमान भिडियो</translation>
@@ -2531,7 +2531,7 @@
 <translation id="3919145445993746351">आफ्ना सबै कम्प्युटरमा विस्तारहरू प्राप्त गर्न सिंक गर्ने सुविधा सक्रिय गर्नुहोस्</translation>
 <translation id="3920504717067627103">प्रमाणपत्र नीतिहरू</translation>
 <translation id="392089482157167418">ChromeVox सक्षम गर्नुहोस् (बोलिएको पृष्ठपोषण)</translation>
-<translation id="3920909973552939961">भुक्तानी ह्यान्ड्लरहरू इन्स्टल गर्न अनुमति नदिइएका साइटहरू</translation>
+<translation id="3920909973552939961">भुक्तानी ह्यान्ड्लरहरू इन्स्टल गर्ने अनुमति नदिइएका साइटहरू</translation>
 <translation id="3923184630988645767">डेटा प्रयोग</translation>
 <translation id="3923676227229836009">यो पृष्ठलाई फाइलहरू हेर्ने अनुमति छ</translation>
 <translation id="3924145049010392604">मेटा</translation>
@@ -2982,7 +2982,7 @@
 <translation id="4481530544597605423">जोडा हटाइएका यन्त्रहरू</translation>
 <translation id="4483049906298469269">नेटवर्कको पूर्वनिर्धारित गेटवेका रूपमा सेट नगरिएको यस गेटवेलाई पिङ गर्न सकिएन</translation>
 <translation id="4487489714832036847">Chromebook मा परम्परागत सफ्टवेयरको साटो एपहरू प्रयोग गरिन्छ। उत्पादकत्व, मनोरञ्जन तथा थप कुराहरूका लागि एपहरू प्राप्त गर्नुहोस्।</translation>
-<translation id="4488257340342212116">तपाईंको क्यामेरा प्रयोग गर्न अनुमति दिइएका साइटहरू</translation>
+<translation id="4488257340342212116">तपाईंको क्यामेरा प्रयोग गर्ने अनुमति दिइएका साइटहरू</translation>
 <translation id="4488502501195719518">सबै डेटा खाली गर्ने हो?</translation>
 <translation id="449232563137139956">साइटहरूले अनलाइन स्टोर वा समाचारमूलक लेखमा फोटो देखाउने जस्ता प्रयोजनका लागि चित्रण उपलब्ध गराउन सामान्यतया फोटोहरू देखाउँछन्</translation>
 <translation id="4493468155686877504">सिफारिस गरिएको (<ph name="INSTALL_SIZE" />)</translation>
@@ -3096,7 +3096,7 @@
 <translation id="4608500690299898628">&amp;फेला पार्नुहोस्...</translation>
 <translation id="4608520674724523647">दर्ताको सफल चित्रण</translation>
 <translation id="4608703838363792434"><ph name="FILE_NAME" /> मा संवेदनशील सामग्री छ</translation>
-<translation id="4609987916561367134">JavaScript प्रयोग गर्न अनुमति दिइएका साइटहरू</translation>
+<translation id="4609987916561367134">JavaScript प्रयोग गर्नेे अनुमति दिइएका साइटहरू</translation>
 <translation id="4610162781778310380"><ph name="PLUGIN_NAME" /> मा त्रुटि भएको छ</translation>
 <translation id="4610637590575890427">के तपाईं <ph name="SITE" /> मा जान चाहनुहुन्छ?</translation>
 <translation id="4611114513649582138">डेटा जडान उपलब्ध छ</translation>
@@ -3208,7 +3208,7 @@
 <translation id="473775607612524610">अपडेट गर्नुहोस्</translation>
 <translation id="473936925429402449">चयन गरियो, <ph name="TOTAL_ELEMENTS" /> वटा थप सामग्रीमध्ये <ph name="CURRENT_ELEMENT" /> औँ सामग्री</translation>
 <translation id="4739639199548674512">टिकटहरू</translation>
-<translation id="4742334355511750246">फोटोहरू देखाउन अनुमति नदिइएका साइटहरू</translation>
+<translation id="4742334355511750246">फोटोहरू देखाउने अनुमति नदिइएका साइटहरू</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>
@@ -3432,7 +3432,7 @@
 <translation id="5027550639139316293">इमेल प्रमाणपत्र</translation>
 <translation id="5027562294707732951">विस्तार थप्नुहोस्</translation>
 <translation id="5029568752722684782">प्रतिलिपि हटाउनुहोस्</translation>
-<translation id="5033137252639132982">मोसन सेन्सरहरू प्रयोग गर्न अनुमति नदिइएका साइटहरू</translation>
+<translation id="5033137252639132982">मोसन सेन्सरहरू प्रयोग गर्ने अनुमति नदिइएका साइटहरू</translation>
 <translation id="5033266061063942743">ज्यामितीय आकृतिहरू</translation>
 <translation id="5036662165765606524">कुनैपनि साइटलाई स्वचालित रूपमा धेरै फाइलहरू डाउनलोड गर्ने अनुमति नदिनुहोस्</translation>
 <translation id="5037676449506322593">सबै चयन गर्नुहोस्</translation>
@@ -3482,7 +3482,7 @@
 <translation id="5088172560898466307">सर्भरको होस्टनाम</translation>
 <translation id="5088534251099454936">RSA को साथमा PKCS #1 SHA-512 गुप्तलेखन</translation>
 <translation id="5089810972385038852">राज्य</translation>
-<translation id="5090637338841444533">तपाईंको क्यामेराको स्थिति ट्र्याक गर्न अनुमति नदिइएका साइटहरू</translation>
+<translation id="5090637338841444533">तपाईंको क्यामेराको स्थिति ट्र्याक गर्ने अनुमति नदिइएका साइटहरू</translation>
 <translation id="5094721898978802975">सहयोगी मुल अनुप्रयोगहरूसँग सञ्चार गर्नुहोस्</translation>
 <translation id="5097002363526479830">नेटवर्क '<ph name="NAME" />' मा जडान हुन असफल भयो: <ph name="DETAILS" /></translation>
 <translation id="5097649414558628673">टुल: <ph name="PRINT_NAME" /></translation>
@@ -3813,7 +3813,7 @@
 <translation id="5495466433285976480">यसले तपाईंको अर्को पुन: सुरुवात पछि सबै स्थानीय प्रयोगकर्ताहरू, फाइलहरू, डाटा, र अन्य सेटिङहरू हटाउनेछ। सबै प्रयोगकर्ताहरूलाई पुन: साइन इन गर्न आवश्यक हुनेछ।</translation>
 <translation id="5495597166260341369">प्रदर्शन सक्रिय राख्नुहोस्</translation>
 <translation id="5496587651328244253">सुव्यवस्थित गर्नुहोस्</translation>
-<translation id="5496730470963166430">पप-अपहरू पठाउन वा रिडिरेक्टहरू प्रयोग गर्न अनुमति नदिइएका साइटहरू</translation>
+<translation id="5496730470963166430">पप-अपहरू पठाउन वा रिडिरेक्टहरू प्रयोग गर्नेे अनुमति नदिइएका साइटहरू</translation>
 <translation id="5497251278400702716">यो फाइल</translation>
 <translation id="5498967291577176373">तपाईंको नाम, ठेगाना वा फोन नम्बर स्वतः टाइप गरिदिने सुविधाको सहयोगले गरेर अझ छिटो लेख्नुहोस्</translation>
 <translation id="5499313591153584299">यो फाइल तपाईंको कम्प्युटरका लागि हानिकारक हुन सक्छ।</translation>
@@ -4030,7 +4030,7 @@
 <translation id="5747552184818312860">म्याद सकिन्छ</translation>
 <translation id="5747785204778348146">विकासकर्ता - अस्थिर</translation>
 <translation id="5747809636523347288">टाँस्नुहोस् र <ph name="URL" /> मा जानुहोस्</translation>
-<translation id="5754152670305761216">संरक्षित सामग्री प्ले गर्न अनुमति दिइएका साइटहरू</translation>
+<translation id="5754152670305761216">संरक्षित सामग्री प्ले गर्ने अनुमति दिइएका साइटहरू</translation>
 <translation id="5756163054456765343">मद्द&amp;त केन्द्र</translation>
 <translation id="5759728514498647443">तपाईँले प्रिन्टमा <ph name="APP_NAME" /> मार्फत पठाउने कागजातहरू <ph name="APP_NAME" /> द्वारा पढ्न सकिन्छ।</translation>
 <translation id="5763751966069581670">कुनै USB यन्त्र भेटिएन</translation>
@@ -4635,7 +4635,7 @@
 <translation id="6458701200018867744">अपलोड गर्न सकिएन (<ph name="WEBRTC_LOG_UPLOAD_TIME" />)।</translation>
 <translation id="6459488832681039634">पत्ता लगाउन छनोट प्रयोग गर्नुहोस्</translation>
 <translation id="6459799433792303855">सक्रिय विन्डोलाई अर्को प्रदर्शनमा सारियो।</translation>
-<translation id="6460566145397380451">MIDI यन्त्रहरूमा कनेक्ट गर्न अनुमति दिइएका साइटहरू</translation>
+<translation id="6460566145397380451">MIDI यन्त्रहरूमा कनेक्ट गर्ने अनुमति दिइएका साइटहरू</translation>
 <translation id="6460601847208524483">अर्को फेला पार्नुहोस्</translation>
 <translation id="6461170143930046705">नेटवर्कहरू खोज्दै...</translation>
 <translation id="6463795194797719782">&amp;सम्पादन</translation>
@@ -5011,7 +5011,7 @@
 <translation id="6922745772873733498">प्रिन्ट गर्नका लागि पिन प्रविष्ट गर्नुहोस्</translation>
 <translation id="6923132443355966645">स्क्रोल गर्नुहोस् / क्लिक गर्नुहोस्</translation>
 <translation id="6923633482430812883">आदान प्रदान माउन्ट गर्ने क्रममा त्रुटि भयो। आफूले जडान गर्न खोजिरहेको फाइल सर्भरले SMBv2 वा सोभन्दा नवीनतम संस्करण समर्थन गर्छ भन्ने कुरा जाँच गर्नुहोस्।</translation>
-<translation id="6929126689972602640">अभिभावकीय नियन्त्रणहरू विद्यालयका खाताहरूमा प्रयोग गर्न मिल्दैनन्। घरमा विद्यालयको कार्य गर्न सघाउने Google कक्षा र अन्य वेबसाइटहरू प्रयोग गर्नका निम्ति विद्यालयको खाता हाल्नु पर्छ। विद्यालयको खाता हाल्न सर्वप्रथम यी बच्चाको व्यक्तिगत खाता प्रयोग गरी साइन इन गर्नुहोस्। तपाईं पछि सेटअप गर्ने क्रममा विद्यालयको खाता हाल्न सक्नुहुन्छ।</translation>
+<translation id="6929126689972602640">अभिभावकीय नियन्त्रणहरू विद्यालयका खाताहरूमा प्रयोग गर्ने मिल्दैनन्। घरमा विद्यालयको कार्य गर्न सघाउन Google Classroom र अन्य वेबसाइटहरू प्रयोग गर्नका निम्ति विद्यालयको खाता हाल्नु पर्छ। विद्यालयको खाता हाल्न सर्वप्रथम सम्बन्धित बच्चाको व्यक्तिगत खाता प्रयोग गरी साइन इन गर्नुहोस्। तपाईं पछि सेटअप गर्ने क्रममा विद्यालयको खाता हाल्न सक्नुहुन्छ।</translation>
 <translation id="6929760895658557216">Okay Google</translation>
 <translation id="6930036377490597025">बाह्य सुरक्षा साँचो वा अन्तर्निर्मित सेन्सर</translation>
 <translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{एउटा एक्स्टेन्सन अस्वीकार गरिएको छ}other{# वटा एक्स्टेन्सन अस्वीकार गरिएको छ}}</translation>
@@ -5052,7 +5052,7 @@
 <translation id="6972629891077993081">HID यन्त्रहरू</translation>
 <translation id="6972754398087986839">सुरु गर्नुहोस्</translation>
 <translation id="6972887130317925583">अरूले देखेको पासवर्ड सफलतापूर्वक परिवर्तन गरियो। जुनसुकै बेला <ph name="SETTINGS" /> मा गई आफ्ना पासवर्डहरू जाँच्नुहोस्।</translation>
-<translation id="697312151395002334">पप-अपहरू पठाउन र रिडिरेक्टहरू प्रयोग गर्न अनुमति दिइएका साइटहरू</translation>
+<translation id="697312151395002334">पप-अपहरू पठाउन र रिडिरेक्टहरू प्रयोग गर्ने अनुमति दिइएका साइटहरू</translation>
 <translation id="6973611239564315524">Debian 10 (Buster) मा स्तरोन्नति गर्ने सुविधा उपलब्ध छ</translation>
 <translation id="6974609594866392343">अफलाइन डेमो मोड</translation>
 <translation id="6977381486153291903">फर्मवेयरको पुनरावृत्ति</translation>
@@ -5464,7 +5464,7 @@
 <translation id="7465635034594602553">केही चिज गडबड भयो। कृपया केही बेर प्रतीक्षा गरी <ph name="APP_NAME" /> फेरि चलाउनुहोस्।</translation>
 <translation id="7465778193084373987">नेटस्केप प्रमाणपत्र रिभोकेसन युआरएल</translation>
 <translation id="7469894403370665791">यो नेटवर्कमा स्वचालित रूपमा जडान गर्नुहोस्</translation>
-<translation id="7470424110735398630">तपाईंको क्लिपबोर्ड हेर्न अनुमति दिइएका साइटहरू</translation>
+<translation id="7470424110735398630">तपाईंको क्लिपबोर्ड हेर्ने अनुमति दिइएका साइटहरू</translation>
 <translation id="747114903913869239">त्रुटि: विस्तार डिकोड गर्न असक्षम भयो</translation>
 <translation id="7473891865547856676">पर्दैन, धन्यवाद</translation>
 <translation id="747459581954555080">सबैलाई पुनर्स्थापना गर्नुहोस्</translation>
@@ -5693,7 +5693,7 @@
 <translation id="7732111077498238432">नेटवर्क नीतिद्वारा नियन्त्रित छ</translation>
 <translation id="7737115349420013392">"<ph name="DEVICE_NAME" />" सँग जोडा बनाउँदै ...</translation>
 <translation id="7737238973539693982">Linux (बिटा) मेटनुहोस्</translation>
-<translation id="7737948071472253612">तपाईंको क्यामेरा प्रयोग गर्न अनुमति नदिइएका साइटहरू</translation>
+<translation id="7737948071472253612">तपाईंको क्यामेरा प्रयोग गर्ने अनुमति नदिइएका साइटहरू</translation>
 <translation id="7740996059027112821">मानक</translation>
 <translation id="7742706086992565332">तपाईं निश्चित वेबसाइटहरूमा कति मात्रामा जुम इन वा जुम आउट गर्ने भन्ने कुरा सेट गर्न सक्नुहुन्छ</translation>
 <translation id="774377079771918250">सुरक्षित गर्ने स्थान छनौट गर्नुहोस्</translation>
@@ -5702,7 +5702,7 @@
 <translation id="7750228210027921155">Picture in picture</translation>
 <translation id="7751260505918304024">सबै देखाउनुहोस्</translation>
 <translation id="7753735457098489144">पर्याप्त भण्डारण स्थान नभएका कारण स्थापना गर्न सकिएन। ठाउँ खाली गर्न यन्त्रको भण्डारणबाट फाइलहरू मेटाउनुहोस्।</translation>
-<translation id="7754347746598978109">JavaScript प्रयोग गर्न अनुमति नदिइएका साइटहरू</translation>
+<translation id="7754347746598978109">JavaScript प्रयोग गर्नेे अनुमति नदिइएका साइटहरू</translation>
 <translation id="7754704193130578113">डाउनलोड गर्नुभन्दा पहिले प्रत्येक फाइललाई कहाँ बचत गर्ने भनेर सोध्नुहोस्</translation>
 <translation id="7755287808199759310">तपाईंको अभिभावकले तपाईंको रोक हटाउन सक्नुहुन्छ</translation>
 <translation id="7757592200364144203">यन्त्रको नाम बदल्नुहोस्</translation>
@@ -6208,7 +6208,7 @@
 <translation id="8300011035382349091">यस ट्याबको पुस्तक चिन्ह सम्पादन गर्नुहोस्</translation>
 <translation id="8300374739238450534">Midnight Blue</translation>
 <translation id="8300849813060516376">OTASP असफल</translation>
-<translation id="8304383784961451596">तपाईंलाई यो यन्त्र प्रयोग गर्ने अधिकार दिइएको छैन। कृपया साइन इन गर्ने अनुमति प्राप्त गर्न एड्मिनसँग सम्पर्क गर्नुहोस् वा Family Link मार्फत सुपरिवेक्षण गरिएको Google खातामा साइन इन गर्नुहोस्।</translation>
+<translation id="8304383784961451596">तपाईंलाई यो यन्त्र प्रयोग गर्नेे अधिकार दिइएको छैन। कृपया साइन इन गर्ने अनुमति प्राप्त गर्न एड्मिनसँग सम्पर्क गर्नुहोस् वा Family Link मार्फत सुपरिवेक्षण गरिएको Google खाता प्रयोग गरी साइन इन गर्नुहोस्।</translation>
 <translation id="8308179586020895837">Ask if <ph name="HOST" /> wants to access your camera</translation>
 <translation id="830868413617744215">बेटा</translation>
 <translation id="8309458809024885768">सर्टिफिकेट पहिले नै विद्यमान छ</translation>
@@ -6272,7 +6272,7 @@
 <translation id="8382913212082956454">&amp;इमेल ठेगानाको प्रतिलिपी बनाउनुहोस्</translation>
 <translation id="8386091599636877289">नीति फेला परेन।</translation>
 <translation id="8386903983509584791">स्क्यान कार्य पूरा भयो</translation>
-<translation id="8387361103813440603">तपाईंको स्थान हेर्न अनुमति नदिइएका साइटहरू</translation>
+<translation id="8387361103813440603">तपाईंको स्थान हेर्ने अनुमति नदिइएका साइटहरू</translation>
 <translation id="8389416080014625855">यो पृष्ठको लागि QR कोड सिर्जना गर्नुहोस्</translation>
 <translation id="8389492867173948260">यो विस्तारलाई तपाईं जाने वेबसाइटहरूको तपाईंका सबै डेटा पढ्न र परिवर्तन गर्न दिनुहोस्।</translation>
 <translation id="8390449457866780408">सर्भर उपलब्ध छैन।</translation>
@@ -6457,7 +6457,7 @@
 <translation id="8621866727807194849">तपाईंको कम्प्युटरमा हानिकारक सफ्टवेयर छ। Chrome ले उक्त हानिकारक सफ्टवेयरलाई हटाउँदै छ, तपाईंका सेटिङहरूलाई पुनर्स्थापना गर्दै छ र विस्तारहरू असक्षम पार्दै छ। यसो गरेपछि तपाईंको ब्राउजरले फेरि सामान्य रूपमा काम गर्न सक्ने छ।</translation>
 <translation id="8621979332865976405">आफ्नो पूरै स्क्रिन सेयर गर्नुहोस्</translation>
 <translation id="862542460444371744">&amp;विस्तारहरू</translation>
-<translation id="8625663000550647058">तपाईंको माइक्रोफोन प्रयोग गर्न अनुमति नदिइएका साइटहरू</translation>
+<translation id="8625663000550647058">तपाईंको माइक्रोफोन प्रयोग गर्ने अनुमति नदिइएका साइटहरू</translation>
 <translation id="862727964348362408">निलम्बित</translation>
 <translation id="862750493060684461">CSS क्यास</translation>
 <translation id="8627706565932943526">समक्रमण त्रुटि</translation>
@@ -6538,7 +6538,7 @@
 <translation id="8714838604780058252">पृष्ठभूमि ग्राफिकहरू</translation>
 <translation id="8715480913140015283">पृष्ठभूमि ट्याबले तपाईंको क्यामेरा प्रयोग गर्दै छ</translation>
 <translation id="8716931980467311658"><ph name="DEVICE_TYPE" /> बाट आफ्नो Linux फाइलका फोल्डरहरूमा रहेका सबै Linux एप र डेटा मेट्ने हो?</translation>
-<translation id="8717145295869185525">भर्चुअल रियालिटी चल्ने यन्त्र र तिनमा भएका डेटा प्रयोग गर्न अनुमति नदिइएका साइटहरू</translation>
+<translation id="8717145295869185525">भर्चुअल रियालिटी चल्ने यन्त्र र तिनमा भएका डेटा प्रयोग गर्ने अनुमति नदिइएका साइटहरू</translation>
 <translation id="8717864919010420084">लिंक प्रतिलिपि गर्नुहोस्</translation>
 <translation id="8719472795285728850">विस्तारसम्बन्धी क्रियाकलापका लागि स्ट्रिम सुन्दै...</translation>
 <translation id="8719653885894320876"><ph name="PLUGIN_NAME" /> डाउनलोड असफल भयो</translation>
diff --git a/chrome/app/resources/generated_resources_nl.xtb b/chrome/app/resources/generated_resources_nl.xtb
index e73897a..bb7eb9e 100644
--- a/chrome/app/resources/generated_resources_nl.xtb
+++ b/chrome/app/resources/generated_resources_nl.xtb
@@ -17,6 +17,7 @@
 <translation id="1012794136286421601">Je bestanden van Google Documenten, Spreadsheets, Presentaties en Tekeningen worden gesynchroniseerd. Open de Google Drive-app om ze online of offline te openen.</translation>
 <translation id="1012876632442809908">USB-C-apparaat (poort aan voorkant)</translation>
 <translation id="1013707859758800957">Het uitvoeren van een plug-in zonder sandbox is toegestaan op deze pagina.</translation>
+<translation id="1015041505466489552">TrackPoint</translation>
 <translation id="1015318665228971643">Mapnaam bewerken</translation>
 <translation id="1015578595646638936">{NUM_DAYS,plural, =1{Laatste dag om <ph name="DEVICE_TYPE" /> te updaten}other{Update <ph name="DEVICE_TYPE" /> binnen {NUM_DAYS} dagen}}</translation>
 <translation id="1016566241875885511">Aanvullende informatie (optioneel)</translation>
diff --git a/chrome/app/resources/generated_resources_pt-PT.xtb b/chrome/app/resources/generated_resources_pt-PT.xtb
index 9e742a1..4b2ba5c 100644
--- a/chrome/app/resources/generated_resources_pt-PT.xtb
+++ b/chrome/app/resources/generated_resources_pt-PT.xtb
@@ -928,6 +928,7 @@
 <translation id="204914487372604757">Criar atalho</translation>
 <translation id="2050339315714019657">Vertical</translation>
 <translation id="2053312383184521053">Dados do estado inativo</translation>
+<translation id="2054665754582400095">A sua presença</translation>
 <translation id="2055585478631012616">A sua sessão nestes sites será terminada, incluindo em separadores abertos.</translation>
 <translation id="205560151218727633">Logótipo do Assistente Google</translation>
 <translation id="2058456167109518507">Dispositivo detetado</translation>
@@ -1214,6 +1215,7 @@
 <translation id="2387052489799050037">Aceda à Página inicial</translation>
 <translation id="2387458720915042159">Tipo de ligação proxy</translation>
 <translation id="2390347491606624519">Não é possível estabelecer ligação ao proxy, inicie sessão novamente</translation>
+<translation id="2390782873446084770">Sync Wi-Fi</translation>
 <translation id="2391082728065870591">Enviar relatório de feedback</translation>
 <translation id="2391419135980381625">Tipo de letra padrão</translation>
 <translation id="2392163307141705938">Atingiste o limite de tempo que o teu Pai ou Mãe definiu para o <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
@@ -1870,6 +1872,7 @@
 <translation id="3157931365184549694">Restaurar</translation>
 <translation id="3158033540161634471">Configurar a sua impressão digital</translation>
 <translation id="3159493096109238499">Bege</translation>
+<translation id="3159978855457658359">Edite o nome do dispositivo</translation>
 <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (suportado por hardware)</translation>
 <translation id="3161522574479303604">Todos os idiomas</translation>
 <translation id="3162853326462195145">Conta escolar</translation>
@@ -3230,6 +3233,7 @@
 <translation id="4761104368405085019">Utilizar o seu microfone</translation>
 <translation id="4762718786438001384">Espaço em disco do dispositivo criticamente baixo</translation>
 <translation id="4763408175235639573">Foram definidos os seguintes cookies quando viu esta página</translation>
+<translation id="4764368918650455114">Certifique-se de que ambos os dispositivos estão desbloqueados, próximos um do outro e têm o Bluetooth ativado. Se estiver a partilhar com um Chromebook, certifique-se de que tem a funcionalidade Partilhar com Nearby ativada (selecione a hora para abrir a área de estado e, em seguida, selecione Partilhar com Nearby). <ph name="LINK_BEGIN" />Saiba mais<ph name="LINK_END" /></translation>
 <translation id="4765582662863429759">Permite às Mensagens Android retransmitir as mensagens de texto do telemóvel para o Chromebook.</translation>
 <translation id="476598255842811483">Ninguém, exceto se abrir a funcionalidade Partilhar com Nearby no seu dispositivo.</translation>
 <translation id="4768332406694066911">Tem certificados destas entidades que o identificam</translation>
@@ -3392,6 +3396,7 @@
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> – <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Esta aplicação foi instalada pelo seu administrador.</translation>
 <translation id="4964455510556214366">Disposição</translation>
+<translation id="496446150016900060">Sincronizar redes Wi-Fi com o seu telemóvel.</translation>
 <translation id="4965808351167763748">Tem a certeza de que pretende configurar este dispositivo para executar o Hangouts Meet?</translation>
 <translation id="496888482094675990">A aplicação Ficheiros fornece um acesso rápido aos ficheiros que guardou no Google Drive, no armazenamento externo ou no dispositivo Chrome OS.</translation>
 <translation id="4971412780836297815">Abrir quando estiver concluído</translation>
@@ -3698,6 +3703,7 @@
 <translation id="5341980496415249280">Aguarde, a acondicionar...</translation>
 <translation id="5342091991439452114">O PIN deve ter pelo menos <ph name="MINIMUM" /> dígitos</translation>
 <translation id="5344036115151554031">A restaurar o Linux…</translation>
+<translation id="5345916423802287046">Iniciar app quando inicia sessão</translation>
 <translation id="5350293332385664455">Desativar Assistente Google</translation>
 <translation id="535123479159372765">Texto copiado de outro dispositivo</translation>
 <translation id="5352033265844765294">Carimbo de data/hora</translation>
@@ -4008,6 +4014,7 @@
 <translation id="5704875434923668958">A sincronizar com…</translation>
 <translation id="5705005699929844214">Mostrar sempre opções de acessibilidade</translation>
 <translation id="5705882733397021510">Voltar</translation>
+<translation id="5707117624115653804">Personalize o tamanho e o estilo das legendas para apps e sites que suportam esta definição.</translation>
 <translation id="5707185214361380026">Falha ao carregar a extensão de:</translation>
 <translation id="5708171344853220004">Nome principal Microsoft</translation>
 <translation id="5709557627224531708">Definir o Chrome como o navegador predefinido</translation>
@@ -4171,6 +4178,7 @@
 <translation id="5904614460720589786">Não foi possível configurar a app <ph name="APP_NAME" /> devido a um problema na configuração. Contacte o seu administrador. Código de erro: <ph name="ERROR_CODE" />.</translation>
 <translation id="5906655207909574370">Quase atualizado! Reinicie o dispositivo para concluir a atualização.</translation>
 <translation id="5906732635754427568">Os dados associados a esta aplicação serão removidos deste dispositivo.</translation>
+<translation id="5908474332780919512">Iniciar app quando inicia sessão</translation>
 <translation id="5908695239556627796">Velocidade de deslocação do rato</translation>
 <translation id="5908769186679515905">Impedir que os sites executem o Flash</translation>
 <translation id="5910363049092958439">Guard&amp;ar Imagem Como...</translation>
@@ -4710,6 +4718,7 @@
 <translation id="6532527800157340614">O início de sessão falhou porque não foi possível obter a sua chave de acesso. Verifique a sua ligação de rede e tente novamente.</translation>
 <translation id="6532663472409656417">Inscrito pela empresa</translation>
 <translation id="6535331821390304775">Permitir sempre que <ph name="ORIGIN" /> abra links deste tipo na app associada</translation>
+<translation id="6537613839935722475">O nome pode incluir letras, números e hífenes (-)</translation>
 <translation id="6538635548667167211">A definição de utilização de dados atual é Dados.</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />Nota:<ph name="END_BOLD" /> Ative apenas se tiver a certeza do que está a fazer ou se tal lhe tiver sido solicitado, dado que a recolha de dados pode diminuir o desempenho.</translation>
 <translation id="6541638731489116978">Este site foi impedido de aceder aos sensores de movimentos.</translation>
@@ -4798,6 +4807,7 @@
 <translation id="6650234781371031356">A sua palavra-passe para <ph name="WEBSITE" /> está armazenada neste dispositivo e na sua Conta Google. Qual pretende eliminar?</translation>
 <translation id="665061930738760572">Abrir numa &amp;Nova Janela</translation>
 <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="6654509035557065241">Predefinir rede</translation>
 <translation id="6655190889273724601">Modo de programador</translation>
@@ -5401,6 +5411,7 @@
 <translation id="7375235221357833624">{0,plural, =1{Atualize o dispositivo dentro de uma hora}other{Atualize o dispositivo dentro de # horas}}</translation>
 <translation id="7376553024552204454">Realçar o cursor do rato ao ser movido</translation>
 <translation id="7377451353532943397">Continuar a impedir o acesso aos sensores</translation>
+<translation id="7378611153938412599">As palavras-passe fracas são fáceis de adivinhar. Certifique-se de que cria palavras-passe fortes. <ph name="BEGIN_LINK" />Veja mais sugestões de segurança.<ph name="END_LINK" /></translation>
 <translation id="73786666777299047">Abrir a Web Store do Chrome</translation>
 <translation id="7378812711085314936">Obter ligação de dados</translation>
 <translation id="7380622428988553498">O nome do dispositivo contém carateres inválidos.</translation>
@@ -5925,6 +5936,7 @@
 <translation id="7959074893852789871">O ficheiro continha vários certificados, sendo que alguns deles não foram importados:</translation>
 <translation id="7961015016161918242">Nunca</translation>
 <translation id="7963001036288347286">Aceleração do touchpad</translation>
+<translation id="7963608432878156675">Este nome está visível para outros dispositivos para ligações de rede e Bluetooth</translation>
 <translation id="7963826112438303517">O Assistente utiliza estas gravações e os seus pedidos orais para criar e atualizar o seu modelo de voz, o qual apenas é armazenado nos dispositivos em que tiver ativado o Voice Match. Veja ou repita a atividade de voz nas Definições do Assistente.</translation>
 <translation id="7966241909927244760">C&amp;opiar Endereço da imagem</translation>
 <translation id="7966571622054096916">{COUNT,plural, =1{1 item na lista de marcadores}other{{COUNT} itens na lista de marcadores}}</translation>
@@ -6388,6 +6400,7 @@
 <translation id="850875081535031620">Não foi encontrado software prejudicial.</translation>
 <translation id="8509177919508253835">Reponha chaves de segurança e crie PINs</translation>
 <translation id="8509646642152301857">Falha na transferência do dicionário de verificação ortográfica.</translation>
+<translation id="8512396579636492893">{COUNT,plural, =0{Não foram encontradas palavras-passe fracas.}=1{{COUNT} palavra-passe fraca encontrada.}other{{COUNT} palavra-passes fracas encontradas.}}</translation>
 <translation id="8512476990829870887">Terminar Processo</translation>
 <translation id="851263357009351303">Permitir sempre que o site <ph name="HOST" /> mostre imagens</translation>
 <translation id="8513108775083588393">Rotação auto.</translation>
diff --git a/chrome/app/resources/generated_resources_ro.xtb b/chrome/app/resources/generated_resources_ro.xtb
index 39a97de..66b02fe 100644
--- a/chrome/app/resources/generated_resources_ro.xtb
+++ b/chrome/app/resources/generated_resources_ro.xtb
@@ -928,6 +928,7 @@
 <translation id="204914487372604757">Creează o comandă rapidă</translation>
 <translation id="2050339315714019657">Portret</translation>
 <translation id="2053312383184521053">Date pentru starea inactivă</translation>
+<translation id="2054665754582400095">Prezența ta</translation>
 <translation id="2055585478631012616">Te vei deconecta de la site-uri, inclusiv din filele deschise</translation>
 <translation id="205560151218727633">Sigla Asistentului Google</translation>
 <translation id="2058456167109518507">S-a detectat un dispozitiv</translation>
@@ -1214,6 +1215,7 @@
 <translation id="2387052489799050037">Accesează ecranul de pornire</translation>
 <translation id="2387458720915042159">Tip de conexiune prin proxy</translation>
 <translation id="2390347491606624519">Nu se poate conecta la proxy. Conectează-te din nou.</translation>
+<translation id="2390782873446084770">Sincronizare Wi-Fi</translation>
 <translation id="2391082728065870591">Trimite un raport de feedback</translation>
 <translation id="2391419135980381625">Font standard</translation>
 <translation id="2392163307141705938">Ai atins limita de timp setată de părintele tău pentru <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
@@ -1870,6 +1872,7 @@
 <translation id="3157931365184549694">Restabilește</translation>
 <translation id="3158033540161634471">Adaugă amprenta</translation>
 <translation id="3159493096109238499">Bej</translation>
+<translation id="3159978855457658359">Modifică numele dispozitivului</translation>
 <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (stocat pe hardware)</translation>
 <translation id="3161522574479303604">Toate limbile</translation>
 <translation id="3162853326462195145">Contul de la școală</translation>
@@ -3230,6 +3233,7 @@
 <translation id="4761104368405085019">Utilizează microfonul</translation>
 <translation id="4762718786438001384">Spațiul de pe hard diskul dispozitivului este foarte redus</translation>
 <translation id="4763408175235639573">La afișarea paginii au fost setate următoarele cookie-uri</translation>
+<translation id="4764368918650455114">Asigură-te că ambele dispozitive sunt deblocate, apropiate unul de celălalt și au activată conexiunea Bluetooth. Dacă trimiți fișiere unui Chromebook, asigură-te că are funcția Nearby Share deschisă (deschide zona de stare selectând ora, apoi selectează Nearby Share). <ph name="LINK_BEGIN" />Află mai multe<ph name="LINK_END" /></translation>
 <translation id="4765582662863429759">Permite Android Messages să retransmită mesaje text din telefonul tău în Chromebook</translation>
 <translation id="476598255842811483">Nimeni, dacă nu deschizi Nearby Share pe dispozitiv</translation>
 <translation id="4768332406694066911">Ai certificate de la aceste organizații care te identifică</translation>
@@ -3392,6 +3396,7 @@
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> – <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Aplicația a fost instalată de administrator.</translation>
 <translation id="4964455510556214366">Aranjare</translation>
+<translation id="496446150016900060">să sincronizeze rețele Wi-Fi cu telefonul tău;</translation>
 <translation id="4965808351167763748">Sigur dorești să configurezi acest dispozitiv pentru a rula Hangouts Meet?</translation>
 <translation id="496888482094675990">Aplicația Fișiere oferă acces rapid la fișierele pe care le-ai salvat în Google Drive, în spațiul de stocare extern sau pe dispozitivul cu sistem de operare Chrome.</translation>
 <translation id="4971412780836297815">Deschide când s-a finalizat</translation>
@@ -3698,6 +3703,7 @@
 <translation id="5341980496415249280">Așteaptă, se împachetează...</translation>
 <translation id="5342091991439452114">Codul PIN trebuie să conțină minimum <ph name="MINIMUM" /> cifre</translation>
 <translation id="5344036115151554031">Se restabilește Linux</translation>
+<translation id="5345916423802287046">Pornește aplicația când te conectezi</translation>
 <translation id="5350293332385664455">Dezactivează Asistentul Google</translation>
 <translation id="535123479159372765">Text copiat de pe alt dispozitiv</translation>
 <translation id="5352033265844765294">Marcare temporală</translation>
@@ -4007,6 +4013,7 @@
 <translation id="5704875434923668958">Se sincronizează cu</translation>
 <translation id="5705005699929844214">Afișează întotdeauna opțiunile de accesibilitate</translation>
 <translation id="5705882733397021510">Înapoi</translation>
+<translation id="5707117624115653804">Personalizează dimensiunea și stilul subtitrărilor pentru aplicațiile și site-urile care acceptă această setare</translation>
 <translation id="5707185214361380026">Nu s-a încărcat extensia de la:</translation>
 <translation id="5708171344853220004">Nume unic Microsoft</translation>
 <translation id="5709557627224531708">Setează Chrome ca browser prestabilit</translation>
@@ -4170,6 +4177,7 @@
 <translation id="5904614460720589786"><ph name="APP_NAME" /> nu s-a instalat din cauza unei probleme de configurație. Contactează administratorul. Cod de eroare: <ph name="ERROR_CODE" />.</translation>
 <translation id="5906655207909574370">Aproape actualizat! Repornește dispozitivul pentru a finaliza actualizarea.</translation>
 <translation id="5906732635754427568">Datele asociate acestei aplicații vor fi eliminate de pe dispozitiv.</translation>
+<translation id="5908474332780919512">Pornește aplicația când te conectezi</translation>
 <translation id="5908695239556627796">Viteza de derulare a mouse-ului</translation>
 <translation id="5908769186679515905">Nu permite site-urilor să ruleze Flash</translation>
 <translation id="5910363049092958439">Sal&amp;vează imaginea ca...</translation>
@@ -4709,6 +4717,7 @@
 <translation id="6532527800157340614">Conectarea nu a reușit, deoarece indicativul de acces nu a putut fi preluat. Verifică starea conexiunii la rețea și încearcă din nou.</translation>
 <translation id="6532663472409656417">Înregistrat de întreprindere</translation>
 <translation id="6535331821390304775">Permite întotdeauna ca <ph name="ORIGIN" /> să deschidă acest tip de linkuri în aplicația asociată</translation>
+<translation id="6537613839935722475">Numele poate conține litere, cifre și cratime (-)</translation>
 <translation id="6538635548667167211">Setarea actuală pentru utilizarea datelor este „Date”</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />Notă:<ph name="END_BOLD" /> activați culegerea datelor numai dacă înțelegeți consecințele acțiunii sau dacă vi s-a solicitat să o activați, deoarece aceasta ar putea reduce performanța.</translation>
 <translation id="6541638731489116978">Site-ul nu are permisiunea de a accesa senzorii de mișcare.</translation>
@@ -4797,6 +4806,7 @@
 <translation id="6650234781371031356">Parola pentru <ph name="WEBSITE" /> este stocată pe acest dispozitiv și în Contul tău Google. De unde vrei să o ștergi?</translation>
 <translation id="665061930738760572">Deschideți într-o &amp;fereastră nouă</translation>
 <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="6654509035557065241">Prefer această rețea</translation>
 <translation id="6655190889273724601">Mod pentru dezvoltatori</translation>
@@ -5400,6 +5410,7 @@
 <translation id="7375235221357833624">{0,plural, =1{Actualizează dispozitivul într-o oră}few{Actualizează dispozitivul în # ore}other{Actualizează dispozitivul în # de ore}}</translation>
 <translation id="7376553024552204454">Evidențiază cursorul mouse-ului când se mișcă</translation>
 <translation id="7377451353532943397">Blochează în continuare accesul la senzori</translation>
+<translation id="7378611153938412599">Parolele slabe sunt ușor de ghicit. Creează parole puternice. <ph name="BEGIN_LINK" />Vezi mai multe sfaturi de securitate.<ph name="END_LINK" /></translation>
 <translation id="73786666777299047">Deschide Magazinul web Chrome</translation>
 <translation id="7378812711085314936">Obține o conexiune de date</translation>
 <translation id="7380622428988553498">Numele dispozitivului conține caractere nevalide</translation>
@@ -5924,6 +5935,7 @@
 <translation id="7959074893852789871">Fișierul a conținut mai multe certificate, unele dintre acestea nefiind importate:</translation>
 <translation id="7961015016161918242">Niciodată</translation>
 <translation id="7963001036288347286">Accelerarea touchpadului</translation>
+<translation id="7963608432878156675">Acest nume este vizibil pentru alte dispozitive pentru conexiuni Bluetooth și la rețea</translation>
 <translation id="7963826112438303517">Asistentul folosește aceste înregistrări și cererile rostite ca să îți creeze și să îți actualizeze modelul vocal stocat doar pe dispozitivele pe care ai activat Voice Match. Vizualizează sau resetează activitatea vocală în Setările Asistentului.</translation>
 <translation id="7966241909927244760">C&amp;opiază adresa imaginii</translation>
 <translation id="7966571622054096916">{COUNT,plural, =1{Un element în lista de marcaje}few{{COUNT} elemente în lista de marcaje}other{{COUNT} de elemente în lista de marcaje}}</translation>
@@ -6388,6 +6400,7 @@
 <translation id="850875081535031620">Nu s-a găsit software dăunător</translation>
 <translation id="8509177919508253835">Resetează cheile de securitate și creează coduri PIN</translation>
 <translation id="8509646642152301857">Descărcarea dicționarului de verificare ortografică nu a reușit.</translation>
+<translation id="8512396579636492893">{COUNT,plural, =0{Nu s-au găsit parole slabe}=1{S-a găsit {COUNT} parolă slabă}few{S-au găsit {COUNT} parole slabe}other{S-au găsit {COUNT} de parole slabe}}</translation>
 <translation id="8512476990829870887">Opriți procesul</translation>
 <translation id="851263357009351303">Permite întotdeauna afișarea de imagini de la <ph name="HOST" /></translation>
 <translation id="8513108775083588393">Rotire autom.</translation>
diff --git a/chrome/app/resources/generated_resources_ru.xtb b/chrome/app/resources/generated_resources_ru.xtb
index 317431f..9a92247 100644
--- a/chrome/app/resources/generated_resources_ru.xtb
+++ b/chrome/app/resources/generated_resources_ru.xtb
@@ -927,6 +927,7 @@
 <translation id="204914487372604757">Создать ярлык</translation>
 <translation id="2050339315714019657">Книжная</translation>
 <translation id="2053312383184521053">Данные о состоянии бездействия</translation>
+<translation id="2054665754582400095">Ваше присутствие</translation>
 <translation id="2055585478631012616">Вы автоматически выйдете из аккаунта на этих сайтах (в том числе на открытых вкладках).</translation>
 <translation id="205560151218727633">Логотип Google Ассистента</translation>
 <translation id="2058456167109518507">Обнаружено устройство</translation>
@@ -1213,6 +1214,7 @@
 <translation id="2387052489799050037">Переход на главный экран</translation>
 <translation id="2387458720915042159">Тип подключения через прокси-сервер</translation>
 <translation id="2390347491606624519">Не удалось подключиться к прокси-серверу, войдите снова</translation>
+<translation id="2390782873446084770">Синхронизация Wi-Fi</translation>
 <translation id="2391082728065870591">Отправить отзыв с отчетом</translation>
 <translation id="2391419135980381625">Стандартный шрифт</translation>
 <translation id="2392163307141705938">Время, установленное родителями для приложения "<ph name="IDS_SHORT_PRODUCT_NAME" />", истекло.</translation>
@@ -1868,6 +1870,7 @@
 <translation id="3157931365184549694">Восстановить</translation>
 <translation id="3158033540161634471">Добавьте отпечаток пальца</translation>
 <translation id="3159493096109238499">Бежевый</translation>
+<translation id="3159978855457658359">Измените название устройства</translation>
 <translation id="3160842278951476457"><ph name="ISSUED_BY" /> (<ph name="ISSUED_TO" />). Поддерживается аппаратным обеспечением.</translation>
 <translation id="3161522574479303604">Все языки</translation>
 <translation id="3162853326462195145">Учебный аккаунт</translation>
@@ -3228,6 +3231,7 @@
 <translation id="4761104368405085019">Использование микрофона</translation>
 <translation id="4762718786438001384">Свободное пространство почти закончилось</translation>
 <translation id="4763408175235639573">При посещении этой страницы на вашем компьютере были сохранены следующие файлы cookie:</translation>
+<translation id="4764368918650455114">Оба устройства должны быть разблокированы и находиться рядом, также на них должна быть включена технология Bluetooth. Если вы делитесь файлами и ссылками с устройством Chromebook, убедитесь, что на нем включена функция "Обмен с окружением" (откройте панель состояния, нажав на часы, и выберите "Обмен с окружением"). <ph name="LINK_BEGIN" />Подробнее…<ph name="LINK_END" /></translation>
 <translation id="4765582662863429759">Позволяет приложению "Android Сообщения" ретранслировать сообщения с вашего телефона на Chromebook</translation>
 <translation id="476598255842811483">Никто, если на вашем устройстве закрыто окно "Обмен с окружением"</translation>
 <translation id="4768332406694066911">У вас есть идентифицирующие вас сертификаты этих организаций</translation>
@@ -3390,6 +3394,7 @@
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> (<ph name="PROFILE_NAME" />)</translation>
 <translation id="496185450405387901">Это приложение установлено администратором</translation>
 <translation id="4964455510556214366">Расположение</translation>
+<translation id="496446150016900060">Синхронизировать сети Wi-Fi с телефоном.</translation>
 <translation id="4965808351167763748">Использовать это устройство для запуска Hangouts Meet?</translation>
 <translation id="496888482094675990">С помощью приложения "Файлы" можно быстро открыть документы с Google Диска, устройства под управлением Chrome OS или из внешнего хранилища.</translation>
 <translation id="4971412780836297815">Открыть по завершении</translation>
@@ -3696,6 +3701,7 @@
 <translation id="5341980496415249280">Выполняется сжатие…</translation>
 <translation id="5342091991439452114">PIN-код должен содержать не менее <ph name="MINIMUM" /> знаков</translation>
 <translation id="5344036115151554031">Восстановление Linux</translation>
+<translation id="5345916423802287046">Запускать при входе</translation>
 <translation id="5350293332385664455">Выключить Google Ассистента</translation>
 <translation id="535123479159372765">Текст скопирован с другого устройства</translation>
 <translation id="5352033265844765294">Штамп времени</translation>
@@ -4005,6 +4011,7 @@
 <translation id="5704875434923668958">Синхронизация:</translation>
 <translation id="5705005699929844214">Всегда показывать специальные возможности</translation>
 <translation id="5705882733397021510">Назад</translation>
+<translation id="5707117624115653804">Настраивать размер и стиль субтитров для приложений и сайтов, которые поддерживают эту функцию</translation>
 <translation id="5707185214361380026">Не удалось загрузить расширение из:</translation>
 <translation id="5708171344853220004">Имя участника Microsoft</translation>
 <translation id="5709557627224531708">Сделайте Google Chrome браузером по умолчанию</translation>
@@ -4168,6 +4175,7 @@
 <translation id="5904614460720589786">Не удалось настроить <ph name="APP_NAME" /> из-за проблем с конфигурацией. Обратитесь к администратору. Код ошибки: <ph name="ERROR_CODE" />.</translation>
 <translation id="5906655207909574370">Чтобы завершить обновление, перезапустите устройство.</translation>
 <translation id="5906732635754427568">Данные, связанные с этим приложением, будут удалены с устройства.</translation>
+<translation id="5908474332780919512">Запускать при входе</translation>
 <translation id="5908695239556627796">Скорость прокрутки (для мыши)</translation>
 <translation id="5908769186679515905">Блокировать Flash на сайтах</translation>
 <translation id="5910363049092958439">Сохранить изображение как...</translation>
@@ -4707,6 +4715,7 @@
 <translation id="6532527800157340614">При выполнении входа произошла ошибка: не удалось получить токен доступа. Проверьте подключение к сети и повторите попытку.</translation>
 <translation id="6532663472409656417">Зарегистрировано в корпоративном домене</translation>
 <translation id="6535331821390304775">Всегда разрешать сайту <ph name="ORIGIN" /> открывать ссылки этого типа в связанном приложении</translation>
+<translation id="6537613839935722475">Допускаются буквы, цифры и дефисы.</translation>
 <translation id="6538635548667167211">Выбран режим передачи данных "Wi-Fi и мобильный Интернет"</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />Примечание.<ph name="END_BOLD" /> Данную функцию следует включать только при необходимости, поскольку сбор данных может замедлить работу системы.</translation>
 <translation id="6541638731489116978">Этому сайту закрыт доступ к датчикам движения.</translation>
@@ -4795,6 +4804,7 @@
 <translation id="6650234781371031356">Пароль для сайта <ph name="WEBSITE" /> сохранен на этом устройстве и в вашем аккаунте Google. Откуда вы хотите его удалить?</translation>
 <translation id="665061930738760572">Открыть в &amp;новом окне</translation>
 <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="6654509035557065241">Выбрать предпочитаемую сеть</translation>
 <translation id="6655190889273724601">Режим разработчика</translation>
@@ -5398,6 +5408,7 @@
 <translation id="7375235221357833624">{0,plural, =1{Перезагрузите устройство в течение 1 часа}one{Перезагрузите устройство в течение # часа}few{Перезагрузите устройство в течение # часов}many{Перезагрузите устройство в течение # часов}other{Перезагрузите устройство в течение # часа}}</translation>
 <translation id="7376553024552204454">Выделять курсор, когда он движется</translation>
 <translation id="7377451353532943397">Всегда запрещать использовать датчики</translation>
+<translation id="7378611153938412599">Простые пароли легко подобрать. Устанавливайте надежные пароли. Больше советов по безопасности можно найти <ph name="BEGIN_LINK" />здесь<ph name="END_LINK" />.</translation>
 <translation id="73786666777299047">Открыть Интернет-магазин Chrome</translation>
 <translation id="7378812711085314936">Подключаться к точкам доступа</translation>
 <translation id="7380622428988553498">Имя устройства содержит недопустимые символы.</translation>
@@ -5922,6 +5933,7 @@
 <translation id="7959074893852789871">Файл содержал несколько сертификатов, некоторые из которых не были импортированы:</translation>
 <translation id="7961015016161918242">Нет</translation>
 <translation id="7963001036288347286">Ускорение сенсорной панели</translation>
+<translation id="7963608432878156675">Это название будет показано на других устройствах при сетевых и Bluetooth-подключениях.</translation>
 <translation id="7963826112438303517">На основе этих записей и голосовых запросов Ассистент создает и обновляет образец вашего голоса, который хранится только на устройствах, где включена функция Voice Match. Посмотреть или перезаписать голосовые команды можно в настройках Ассистента.</translation>
 <translation id="7966241909927244760">&amp;Копировать URL картинки</translation>
 <translation id="7966571622054096916">{COUNT,plural, =1{1 объект в списке закладок}one{{COUNT} объект в списке закладок}few{{COUNT} объекта в списке закладок}many{{COUNT} объектов в списке закладок}other{{COUNT} объекта в списке закладок}}</translation>
@@ -6385,6 +6397,7 @@
 <translation id="850875081535031620">Вредоносных программ не найдено.</translation>
 <translation id="8509177919508253835">Сбросьте настройки электронных ключей и задайте PIN-коды.</translation>
 <translation id="8509646642152301857">Не удалось скачать словарь проверки правописания</translation>
+<translation id="8512396579636492893">{COUNT,plural, =0{Нет простых паролей}=1{Найден {COUNT} простой пароль}one{Найден {COUNT} простой пароль}few{Найдено {COUNT} простых пароля}many{Найдено {COUNT} простых паролей}other{Найдено {COUNT} простого пароля}}</translation>
 <translation id="8512476990829870887">Завершить процесс</translation>
 <translation id="851263357009351303">Всегда показывать изображения с сайта <ph name="HOST" /></translation>
 <translation id="8513108775083588393">Автоповорот</translation>
diff --git a/chrome/app/resources/generated_resources_si.xtb b/chrome/app/resources/generated_resources_si.xtb
index 8dde7f93..3cecafd 100644
--- a/chrome/app/resources/generated_resources_si.xtb
+++ b/chrome/app/resources/generated_resources_si.xtb
@@ -925,6 +925,7 @@
 <translation id="204914487372604757">කෙටිමඟ තනන්න</translation>
 <translation id="2050339315714019657">සිරස්</translation>
 <translation id="2053312383184521053">නිහඬ තත්වයේ දත්ත</translation>
+<translation id="2054665754582400095">ඔබගේ සිටීම</translation>
 <translation id="2055585478631012616">ඔබ විවෘත පටිති ඇතුළුව මෙම වෙබ් අඩවිවලින් වරනු ලැබේ</translation>
 <translation id="205560151218727633">Google සහායක ලාංඡනය</translation>
 <translation id="2058456167109518507">උපාංගය අනාවරණය කර ඇත</translation>
@@ -1211,6 +1212,7 @@
 <translation id="2387052489799050037">මුල් පිටුවට යන්න</translation>
 <translation id="2387458720915042159">ප්‍රොක්සි සබැඳුම් වර්ගය</translation>
 <translation id="2390347491606624519">ප්‍රොක්සි වෙත සම්බන්ධ විය නොහැකි ය, කරුණාකර නැවත පුරන්න</translation>
+<translation id="2390782873446084770">Wi-Fi සමමුහුර්තකරණය</translation>
 <translation id="2391082728065870591">ප්‍රතිපෝෂණ වාර්තාව යවන්න</translation>
 <translation id="2391419135980381625">සම්මත ‍අකුරු වර්ගය</translation>
 <translation id="2392163307141705938">ඔබ ඔබේ මාපියන් <ph name="IDS_SHORT_PRODUCT_NAME" /> සඳහා සකසා ඇති කාල සීමාවට ළඟා විය.</translation>
@@ -1867,6 +1869,7 @@
 <translation id="3157931365184549694">ප්‍රතිසාධනය</translation>
 <translation id="3158033540161634471">ඔබගේ ඇඟිලි සලකුණ පිහිටුවන්න</translation>
 <translation id="3159493096109238499">ළා දුඹුරු වැලි</translation>
+<translation id="3159978855457658359">උපාංග නම සංස්කරණය කරන්න</translation>
 <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (දෘඨාංග-පිටුබලය සහිත)</translation>
 <translation id="3161522574479303604">සියලු භාෂා</translation>
 <translation id="3162853326462195145">පාසල් ගිණුම</translation>
@@ -3228,6 +3231,7 @@
 <translation id="4761104368405085019">මයික්‍රොෙෆෝනය භාවිතා කරන්න</translation>
 <translation id="4762718786438001384">උපාංග තැටි ඉඩ දරුණු ලෙස අඩුය</translation>
 <translation id="4763408175235639573">ඔබ මෙම පිටුව බැලූ විට පහත කුකී සකසන ලදී</translation>
+<translation id="4764368918650455114">උපාංග දෙකම අගුලු හැර, එකිනෙකට ළංව සහ බ්ලූටූත් ක්‍රියාත්මක කර ඇති බව සහතික කර ගන්න. ඔබ Chromebook එකක් සමග බෙදා ගන්නේ නම්, එය ළඟ බෙදා ගැනීම ක්‍රියාත්මක කර ඇති බවට සහතික කර ගන්න (වේලාව තේරීමෙන් තත්ත්ව ප්‍රදේශය විවෘත කරන්න, ඉන්පසු ළඟ බෙදා ගැනීම තෝරන්න). <ph name="LINK_BEGIN" />තව දැන ගන්න<ph name="LINK_END" /></translation>
 <translation id="4765582662863429759">Android පණිවුඩවලට ඔබේ දුරකථනයෙන් ඔබේ Chromebook වෙත පාඨ පිළියැවීමට අවසර දෙයි</translation>
 <translation id="476598255842811483">ඔබ ඔබගේ උපාංගයෙහි ළඟ බෙදා ගැනීම විවෘත කරන්නේ නම් මිස කිසිවෙකුට නොහැකිය</translation>
 <translation id="4768332406694066911">ඔබව හඳුනා ගන්නා මෙම සංවිධාන වෙතින් වන සහතික ඔබට තිබේ</translation>
@@ -3390,6 +3394,7 @@
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">මෙම යෙදුම ඔබේ පරිපාලකයා විසින් ස්ථාපන කරනු ලැබ ඇත.</translation>
 <translation id="4964455510556214366">සැලසුම</translation>
+<translation id="496446150016900060">ඔබේ දුරකථනය සමග Wi-Fi ජාල සමුමුහුර්ත කරන්න</translation>
 <translation id="4965808351167763748">ඔබට මෙම උපාංගය Hangouts Meet ධාවනය කිරීමට පිහිටුවීමට අවශ්‍ය බව ඔබට විශ්වාසද?</translation>
 <translation id="496888482094675990">ගොනු යෙදුම, Google ධාවකය, බාහිර ගබඩාව, හෝ ඔබගේ Chrome OS උපාංගය මත ඔබ සුරැක ඇති ගොනු වෙත ඉක්මන් ප්‍රවේශය සපයයි.</translation>
 <translation id="4971412780836297815">අවසන් විට විවෘත කරන්න</translation>
@@ -3696,6 +3701,7 @@
 <translation id="5341980496415249280">රැඳී සිටින්න, ඇසුරුම් කරමින්...</translation>
 <translation id="5342091991439452114">PIN එකෙහි අඩුම ගණනේ අංක <ph name="MINIMUM" />ක් වත් තිබිය යුතුය</translation>
 <translation id="5344036115151554031">ලිනක්ස් ප්‍රතිසාධන කිරීම</translation>
+<translation id="5345916423802287046">ඔබ පිරූ විට යෙදුම ආරම්භ කරන්න</translation>
 <translation id="5350293332385664455">Google සහකරු අක්‍රිය කරන්න</translation>
 <translation id="535123479159372765">අනෙකුත් උපාංගයෙන් පිටපත් කළ පාඨය</translation>
 <translation id="5352033265844765294">කාල මුද්‍රා තැබීම</translation>
@@ -4006,6 +4012,7 @@
 <translation id="5704875434923668958">සමමුහුර්ත කරමින්</translation>
 <translation id="5705005699929844214">ප්‍රවේශ්‍යතා විකල්ප සැම විටම පෙන්වන්න</translation>
 <translation id="5705882733397021510">ආපසු යන්න</translation>
+<translation id="5707117624115653804">මෙම සැකසීමට සහාය දක්වන යෙදුම් සහ අඩවි සඳහා සිරස්තල තරම සහ මෝස්තරය අභිරුචිකරණය කරන්න</translation>
 <translation id="5707185214361380026">මෙතැනින් දිගුව ලබාගත නොහැක:</translation>
 <translation id="5708171344853220004">Microsoft Principal Name</translation>
 <translation id="5709557627224531708">Chrome ඔබේ පෙරනිමි බ්‍රවුසරය ලෙස සකසන්න</translation>
@@ -4169,6 +4176,7 @@
 <translation id="5904614460720589786">වින්‍යාස ගැටලුවක් හේතුවෙන් <ph name="APP_NAME" /> සැකසීමට නොහැකි විය. ඔබගේ පරිපාලක සම්බන්ධ කර ගන්න. දෝෂ කේතය: <ph name="ERROR_CODE" />.</translation>
 <translation id="5906655207909574370">බොහෝ දුරට යාවත්කාලීනයි! යාවත්කාලීනය අවසන් කිරීමට ඔබේ උපාංගය යළි අරඹන්න.</translation>
 <translation id="5906732635754427568">මෙම යෙදුම සමඟ සම්බන්ධ දත්ත මෙම උපාංගයෙන් ඉවත් කරනු ඇත.</translation>
+<translation id="5908474332780919512">ඔබ පිරූ විට යෙදුම ආරම්භ කරන්න</translation>
 <translation id="5908695239556627796">මූසික අනුචලන වේගය</translation>
 <translation id="5908769186679515905">ෆ්ලෑෂ් ධාවනය වීමෙන් අඩවි අවහිර කරන්න</translation>
 <translation id="5910363049092958439">රූපය ලෙස සුරකින්න... (&amp;v)</translation>
@@ -4706,6 +4714,7 @@
 <translation id="6532527800157340614">ඔබේ ප්‍රවේශ ටෝකනය ලබා ගත නොහැකි බැවින් පුරනය අසමත් විය. ඔබගේ අන්තර්ජාල සම්බන්ධතාව පරීක්‍ෂා කර නැවත උත්සාහ කරන්න.</translation>
 <translation id="6532663472409656417">ව්‍යවසාය ලියාපදිංචි කළා</translation>
 <translation id="6535331821390304775">සැම විටම <ph name="ORIGIN" /> හට මෙම වර්ගයේ සබැඳි සම්බන්ධිත යෙදුම තුළ විවෘත කිරීමට ඉඩ දෙන්න</translation>
+<translation id="6537613839935722475">නමට අකුරු, ඉලක්කම් සහ කෙටි ඉරි (-) භාවිත කළ හැකිය</translation>
 <translation id="6538635548667167211">වත්මන් දත්ත භාවිත සැකසීම දත්තය</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />සටහන:<ph name="END_BOLD" /> දත්ත රැස්කිරීමෙන් ක්‍රියාකාරීත්වය දුර්වල විය හැකි බැවින් ඔබ කරන දේ ඔබ දන්නේ නම් ‍හෝ ඔබගෙන් මෙසේ කරන්න යැයි ඉල්ලා ඇත්නම් පමණක් සබල කරන්න.</translation>
 <translation id="6541638731489116978">මෙම වෙබ් අඩවිය ඔබේ චලන සංවේදක වෙත ප්‍රවේශ වීමෙන් අවහිර කරනු ලැබ ඇත.</translation>
@@ -4794,6 +4803,7 @@
 <translation id="6650234781371031356"><ph name="WEBSITE" /> සඳහා ඔබේ මුරපදය මෙම උපාංගයේ සහ ඔබේ Google ගිණුම තුළ ගබඩා කෙරේ. ඔබට මැකීමට අවශ්‍ය කුමක්ද?</translation>
 <translation id="665061930738760572">&amp;නව කවුළුවකින් විවෘත කරන්න</translation>
 <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="6654509035557065241">ජාල මනාපය</translation>
 <translation id="6655190889273724601">සංවර්ධක ප්‍රකාරය</translation>
@@ -5397,6 +5407,7 @@
 <translation id="7375235221357833624">{0,plural, =1{උපාංගය පැයක් තුළ යාවත්කාලීන කරන්න}one{උපාංගය පැය # ක් තුළ යාවත්කාලීන කරන්න}other{උපාංගය පැය # ක් තුළ යාවත්කාලීන කරන්න}}</translation>
 <translation id="7376553024552204454">චලනය වන විට මූසිකයේ කර්සරය උද්දීපනය කරන්න</translation>
 <translation id="7377451353532943397">සංවේදක ප්‍රවේශය දිගටම අවහිර කරන්න</translation>
+<translation id="7378611153938412599">දුර්වල මුරපද අනුමානය කිරීමට පහසුයි. ඔබ ප්‍රබල මුරපද තනන බව සහතික කර ගන්න. <ph name="BEGIN_LINK" />තවත් ආරක්ෂක ඉඟි බලන්න.<ph name="END_LINK" /></translation>
 <translation id="73786666777299047">Chrome Web Store විවෘත කරන්න</translation>
 <translation id="7378812711085314936">දත්ත සම්බන්ධතාව ලබා ගන්න</translation>
 <translation id="7380622428988553498">උපාංග නමෙහි වලංගු නොවන අනුලකුණු අඩංගු වේ</translation>
@@ -5920,6 +5931,7 @@
 <translation id="7959074893852789871">ගොනුවේ බොහෝ සහතික අඩංගු වේ, එයින් සමහරක් ආනයනය නොකරන ලදී:</translation>
 <translation id="7961015016161918242">කිසිවිට එපා</translation>
 <translation id="7963001036288347286">ස්පර්ශ පුවරු ත්වරණය</translation>
+<translation id="7963608432878156675">මෙම නම බ්ලූටූත් සහ ජාල සම්බන්ධතා සඳහා වෙනත් උපාංගවලට දැකිය හැකිය</translation>
 <translation id="7963826112438303517">ඔබ Voice Match සක්‍රීය කර ඇති උපාංග තුළ පමණක් ගබඩා කෙරෙන ඔබේ හඬ මාදිලිය නිර්මාණ කිරීමටත් යාවත්කාලීන කිරීමටත් ඔබේ සහකරු මෙම පටිගත කිරීම් සහ කථන ඉල්ලීම් භාවිත කරයි. සහකරු සැකසීම් තුළ හඬ ක්‍රියාකාරකම බලන්න හෝ යළි පුහුණු කරන්න.</translation>
 <translation id="7966241909927244760">පින්තූර ලිපිනය පිටපත් කරන්න</translation>
 <translation id="7966571622054096916">{COUNT,plural, =1{පිටුසන් ලැයිස්තුවේ අයිතම 1කි}one{පිටුසන් ලැයිස්තුවේ අයිතම {COUNT}කි}other{පිටුසන් ලැයිස්තුවේ අයිතම {COUNT}කි}}</translation>
@@ -6383,6 +6395,7 @@
 <translation id="850875081535031620">හානිකර මෘදුකාංගයක් හමු නොවිණි</translation>
 <translation id="8509177919508253835">ආරක්‍ෂක යතුරු යළි සකසා රහස් අංක සාදන්න</translation>
 <translation id="8509646642152301857">අක්ෂර වින්‍යාස ශබ්දකෝෂය බාගත කිරීම අසාර්ථකයි.</translation>
+<translation id="8512396579636492893">{COUNT,plural, =0{දුර්වල මුරපද හමු නොවිය}=1{දුර්වල මුරපද {COUNT}ක් හමු විය}one{දුර්වල මුරපද {COUNT}ක් හමු විය}other{දුර්වල මුරපද {COUNT}ක් හමු විය}}</translation>
 <translation id="8512476990829870887">ක්‍රියාවලිය අවසන් කරන්න</translation>
 <translation id="851263357009351303">සැමවිට <ph name="HOST" /> ට රූප පෙන්වීමට ඉඩ දෙන්න</translation>
 <translation id="8513108775083588393">ස්වයංක්‍රීය කරකැවීම</translation>
diff --git a/chrome/app/resources/generated_resources_sl.xtb b/chrome/app/resources/generated_resources_sl.xtb
index e3ec167a..57207c8 100644
--- a/chrome/app/resources/generated_resources_sl.xtb
+++ b/chrome/app/resources/generated_resources_sl.xtb
@@ -928,6 +928,7 @@
 <translation id="204914487372604757">Ustvari bližnjico</translation>
 <translation id="2050339315714019657">Pokončno</translation>
 <translation id="2053312383184521053">Podatki o stanju nedejavnosti</translation>
+<translation id="2054665754582400095">Vaša prisotnost</translation>
 <translation id="2055585478631012616">Odjavljeni boste s teh spletnih mest, vključno s tistimi na odprtih zavihkih</translation>
 <translation id="205560151218727633">Logotip Pomočnika Google</translation>
 <translation id="2058456167109518507">Zaznana je bila naprava</translation>
@@ -1214,6 +1215,7 @@
 <translation id="2387052489799050037">Na začetno stran</translation>
 <translation id="2387458720915042159">Vrsta povezave strežnika proxy</translation>
 <translation id="2390347491606624519">S strežnikom proxy se ni mogoče povezati, znova se prijavite</translation>
+<translation id="2390782873446084770">Sinhronizacija poverilnic za Wi-Fi</translation>
 <translation id="2391082728065870591">Pošiljanje poročila s povratnimi informacijami</translation>
 <translation id="2391419135980381625">Standardna pisava</translation>
 <translation id="2392163307141705938">Dosegel(-la) si časovno omejitev, ki jo je starš nastavil za izdelek <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
@@ -1870,6 +1872,7 @@
 <translation id="3157931365184549694">Obnovi</translation>
 <translation id="3158033540161634471">Nastavite prstni odtis</translation>
 <translation id="3159493096109238499">Bež</translation>
+<translation id="3159978855457658359">Urejanje imena naprave</translation>
 <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (podprto s strojno opremo)</translation>
 <translation id="3161522574479303604">Vsi jeziki</translation>
 <translation id="3162853326462195145">Šolski račun</translation>
@@ -3230,6 +3233,7 @@
 <translation id="4761104368405085019">Uporabite mikrofon</translation>
 <translation id="4762718786438001384">V napravi kritično primanjkuje prostora na disku</translation>
 <translation id="4763408175235639573">Ko ste si ogledovali to stran, so bili poslani ti piškotki</translation>
+<translation id="4764368918650455114">Prepričajte se, da sta obe napravi odklenjeni, blizu druga druge ter imata vklopljen Bluetooth. Če delite s Chromebookom, mora biti v njem vklopljena funkcija Deljenje v bližini (odprite območje stanja tako, da izberete uro, nato izberite Deljenje v bližini). <ph name="LINK_BEGIN" />Več o tem<ph name="LINK_END" /></translation>
 <translation id="4765582662863429759">Aplikaciji Android Messages omogoča posredovanje sporočil SMS iz telefona v Chromebook</translation>
 <translation id="476598255842811483">Nihče, dokler v napravi ne odprete funkcije Deljenje v bližini</translation>
 <translation id="4768332406694066911">Imate potrdila teh organizacij, ki vas identificirajo</translation>
@@ -3392,6 +3396,7 @@
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> – <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Aplikacijo je namestil skrbnik.</translation>
 <translation id="4964455510556214366">Razvrstitev</translation>
+<translation id="496446150016900060">Sinhroniziranje omrežij Wi-Fi s telefonom.</translation>
 <translation id="4965808351167763748">Ali res želite nastaviti to napravo za zagon storitve Hangouts Meet?</translation>
 <translation id="496888482094675990">Aplikacija Datoteke omogoča hiter dostop do datotek, ki ste jih shranili v Googlu Drive, v zunanji shrambi ali v napravi s sistemom Chrome OS.</translation>
 <translation id="4971412780836297815">Odpri, ko je končano</translation>
@@ -3698,6 +3703,7 @@
 <translation id="5341980496415249280">Počakajte, poteka pakiranje …</translation>
 <translation id="5342091991439452114">Koda PIN mora imeti vsaj toliko števk: <ph name="MINIMUM" /></translation>
 <translation id="5344036115151554031">Obnavljanje Linuxa</translation>
+<translation id="5345916423802287046">Zaženi aplikacijo ob prijavi</translation>
 <translation id="5350293332385664455">Izklop Pomočnika Google</translation>
 <translation id="535123479159372765">Besedilo je kopirano iz druge naprave</translation>
 <translation id="5352033265844765294">Časovno žigosanje</translation>
@@ -4009,6 +4015,7 @@
 <translation id="5704875434923668958">Sinhronizacija z:</translation>
 <translation id="5705005699929844214">Možnosti funkcij za ljudi s posebnimi potrebami so vedno prikazane</translation>
 <translation id="5705882733397021510">Nazaj</translation>
+<translation id="5707117624115653804">Prilagajanje velikosti in sloga podnapisov za aplikacije in spletna mesta, ki podpirajo to nastavitev.</translation>
 <translation id="5707185214361380026">Ni bilo mogoče naložiti razširitve z mesta:</translation>
 <translation id="5708171344853220004">Microsoftovo glavno ime</translation>
 <translation id="5709557627224531708">Nastavite Chrome kot privzeti brskalnik</translation>
@@ -4172,6 +4179,7 @@
 <translation id="5904614460720589786">Aplikacije <ph name="APP_NAME" /> ni bilo mogoče nastaviti zaradi težave s konfiguracijo. Obrnite se na skrbnika. Koda napake: <ph name="ERROR_CODE" />.</translation>
 <translation id="5906655207909574370">Samo še malo. Znova zaženite napravo, da dokončate posodobitev.</translation>
 <translation id="5906732635754427568">Podatki, povezani s to aplikacijo, bodo odstranjeni iz te naprave.</translation>
+<translation id="5908474332780919512">Zaženi aplikacijo ob prijavi</translation>
 <translation id="5908695239556627796">Hitrost drsenja z miško</translation>
 <translation id="5908769186679515905">Mestom prepreči izvajanje Flasha</translation>
 <translation id="5910363049092958439">Sh&amp;rani sliko kot ...</translation>
@@ -4711,6 +4719,7 @@
 <translation id="6532527800157340614">Prijava ni uspela, ker ni bilo mogoče pridobiti žetona za dostop. Preverite omrežno povezavo in poskusite znova.</translation>
 <translation id="6532663472409656417">Včlanjeno v poslovnem okolju</translation>
 <translation id="6535331821390304775">Vedno dovoli, da <ph name="ORIGIN" /> odpre povezave te vrste v povezani aplikaciji</translation>
+<translation id="6537613839935722475">Za ime se lahko uporabijo črke, številke in vezaji (-).</translation>
 <translation id="6538635548667167211">Trenutna nastavitev za preneseno količino podatkov je »Prenos podatkov«</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />Opomba:<ph name="END_BOLD" /> Omogočite samo, če veste, kaj delate, ali če je bilo to zahtevano od vas, ker lahko zbiranje podatkov zmanjša učinkovitost delovanja.</translation>
 <translation id="6541638731489116978">Temu spletnemu mestu je preprečen dostop do tipal gibanja.</translation>
@@ -4799,6 +4808,7 @@
 <translation id="6650234781371031356">Geslo za spletno mesto <ph name="WEBSITE" /> je shranjeno v tej napravi in računu Google. Katero želite izbrisati?</translation>
 <translation id="665061930738760572">Odpri v &amp;novem oknu</translation>
 <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="6654509035557065241">Prednostno omrežje</translation>
 <translation id="6655190889273724601">Način za razvijalce</translation>
@@ -5402,6 +5412,7 @@
 <translation id="7375235221357833624">{0,plural, =1{Posodobite napravo v eni uri}one{Posodobite napravo v # uri}two{Posodobite napravo v # urah}few{Posodobite napravo v # urah}other{Posodobite napravo v # urah}}</translation>
 <translation id="7376553024552204454">Označitev miškinega kazalca med premikanjem</translation>
 <translation id="7377451353532943397">Še naprej preprečuj dostop do tipal</translation>
+<translation id="7378611153938412599">Šibka gesla je preprosto ugotoviti. Ustvarite zapletena gesla. <ph name="BEGIN_LINK" />Oglejte si več varnostnih nasvetov.<ph name="END_LINK" /></translation>
 <translation id="73786666777299047">Odpiranje Spletne trgovine Chrome</translation>
 <translation id="7378812711085314936">Uporaba podatkovne povezave</translation>
 <translation id="7380622428988553498">Ime naprave vsebuje neveljavne znake.</translation>
@@ -5926,6 +5937,7 @@
 <translation id="7959074893852789871">Datoteka je vsebovala več potrdil in nekatera niso bila uvožena:</translation>
 <translation id="7961015016161918242">Nikoli</translation>
 <translation id="7963001036288347286">Pospeševanje sledilne ploščice</translation>
+<translation id="7963608432878156675">To ime je vidno drugim napravam za povezave Bluetooth in omrežne povezave.</translation>
 <translation id="7963826112438303517">Pomočnik uporablja te posnetke in izgovorjene zahteve za ustvarjanje in posodabljanje glasovnega modela, ki je shranjen samo v napravah, v katerih ste vklopili Voice Match. Glasovno dejavnost si lahko ogledate ali jo znova usposobite v nastavitvah Pomočnika.</translation>
 <translation id="7966241909927244760">Kopiraj naslov slike</translation>
 <translation id="7966571622054096916">{COUNT,plural, =1{1 element na seznamu zaznamkov}one{{COUNT} element na seznamu zaznamkov}two{{COUNT} elementa na seznamu zaznamkov}few{{COUNT} elementi na seznamu zaznamkov}other{{COUNT} elementov na seznamu zaznamkov}}</translation>
@@ -6390,6 +6402,7 @@
 <translation id="850875081535031620">Najdena ni bila nobena škodljiva programska oprema</translation>
 <translation id="8509177919508253835">Ponastavitev varnostnih ključev in ustvarjanje kod PIN</translation>
 <translation id="8509646642152301857">Prenos slovarja za preverjanje črkovanja ni uspel.</translation>
+<translation id="8512396579636492893">{COUNT,plural, =0{Najdeno ni bilo nobeno šibko geslo.}=1{Najdeno je bilo {COUNT} šibko geslo.}one{Najdeno je bilo {COUNT} šibko geslo.}two{Najdeni sta bili {COUNT} šibki gesli.}few{Najdena so bila {COUNT} šibka gesla.}other{Najdenih je bilo {COUNT} šibkih gesel.}}</translation>
 <translation id="8512476990829870887">Končaj proces</translation>
 <translation id="851263357009351303">Vedno dovoli mestu <ph name="HOST" />, da pokaže slike</translation>
 <translation id="8513108775083588393">Samodej. zasuk</translation>
diff --git a/chrome/app/resources/generated_resources_sq.xtb b/chrome/app/resources/generated_resources_sq.xtb
index 617eee22..dec91e3b 100644
--- a/chrome/app/resources/generated_resources_sq.xtb
+++ b/chrome/app/resources/generated_resources_sq.xtb
@@ -17,6 +17,7 @@
 <translation id="1012794136286421601">Skedarët e dokumenteve, fletëllogaritëset dhe vizatimeve po sinkronizohen. Hap aplikacionin "Disku i Google" për të pasur qasje te to në linjë ose jashtë linje.</translation>
 <translation id="1012876632442809908">Pajisja USB-C (porta përpara)</translation>
 <translation id="1013707859758800957">Një përbërës shtesë i pakufizuar u lejua të ekzekutohet në këtë faqe.</translation>
+<translation id="1015041505466489552">TrackPoint</translation>
 <translation id="1015318665228971643">Redakto emrin e dosjes</translation>
 <translation id="1015578595646638936">{NUM_DAYS,plural, =1{Dita e fundit për të përditësuar pajisjen <ph name="DEVICE_TYPE" />}other{Përditësoje pajisjen <ph name="DEVICE_TYPE" /> brenda {NUM_DAYS} ditësh}}</translation>
 <translation id="1016566241875885511">Informacione shtesë (opsionale)</translation>
@@ -925,6 +926,7 @@
 <translation id="204914487372604757">Krijo shkurtore</translation>
 <translation id="2050339315714019657">Portret (vertikal</translation>
 <translation id="2053312383184521053">Të dhënat e gjendjes së qetë</translation>
+<translation id="2054665754582400095">Prania jote</translation>
 <translation id="2055585478631012616">Do të nxirresh nga këto sajte, duke përfshirë edhe në skedat e hapura</translation>
 <translation id="205560151218727633">Logoja e asistentit të Google</translation>
 <translation id="2058456167109518507">U diktua pajisje</translation>
@@ -1211,6 +1213,7 @@
 <translation id="2387052489799050037">Shko tek ekrani bazë</translation>
 <translation id="2387458720915042159">Lloji i lidhjes së përfaqësuesit</translation>
 <translation id="2390347491606624519">Nuk mund të lidhet me përfaqësuesin. Identifikohu përsëri</translation>
+<translation id="2390782873446084770">Sinkronizimi i Wi-Fi</translation>
 <translation id="2391082728065870591">Dërgo raportin e komenteve</translation>
 <translation id="2391419135980381625">Stili standard i shkrimit</translation>
 <translation id="2392163307141705938">Ke arritur kufirin kohor që ka caktuar prindi yt për <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
@@ -1867,6 +1870,7 @@
 <translation id="3157931365184549694">Restauro</translation>
 <translation id="3158033540161634471">Konfiguro gjurmën e gishtit</translation>
 <translation id="3159493096109238499">Bezhë</translation>
+<translation id="3159978855457658359">Modifiko emrin e pajisjes</translation>
 <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (mbështetu nga hardueri)</translation>
 <translation id="3161522574479303604">Të gjitha gjuhët</translation>
 <translation id="3162853326462195145">Llogaria e shkollës</translation>
@@ -3227,6 +3231,7 @@
 <translation id="4761104368405085019">Përdor mikrofonin</translation>
 <translation id="4762718786438001384">Hapësira e diskut të pajisjes është jashtëzakonisht e ulët</translation>
 <translation id="4763408175235639573">Kukit e mëposhtme u vendosën kur vizitove këtë faqe</translation>
+<translation id="4764368918650455114">Sigurohu që të dyja pajisjet të jenë të shkyçura, pranë njëra-tjetrës, si dhe të kenë të aktivizuar Bluetooth-in. Nëse po ndan me një Chromebook, sigurohu që të ketë "Ndarjen në afërsi" të aktivizuar (hap zonën e statusit duke zgjedhur orën dhe më pas zgjidh "Ndarjen në afërsi"). <ph name="LINK_BEGIN" />Mëso më shumë<ph name="LINK_END" /></translation>
 <translation id="4765582662863429759">Lejon që "Mesazhet në Android" të ridrejtojnë mesazhet me tekst nga telefoni te pajisja jote Chromebook</translation>
 <translation id="476598255842811483">Askush në rast se nuk hap "Ndarjen në afërsi" në pajisjen tënde</translation>
 <translation id="4768332406694066911">Ke certifikata nga këto organizata që të identifikojnë</translation>
@@ -3389,6 +3394,7 @@
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Ky aplikacion është instaluar nga administratori yt.</translation>
 <translation id="4964455510556214366">Sistemimi</translation>
+<translation id="496446150016900060">Sinkronizo rrjetet Wi-Fi me telefonin tënd</translation>
 <translation id="4965808351167763748">Je i sigurt që dëshiron ta konfigurosh këtë pajisje për të ekzekutuar Hangouts Meet?</translation>
 <translation id="496888482094675990">Aplikacioni "Skedarët" siguron qasje të shpejtë te skedarët që ke ruajtur në "Diskun e Google", në hapësirën e jashtme ruajtëse ose në pajisjen tënde të sistemit operativ Chrome.</translation>
 <translation id="4971412780836297815">Hape kur të përfundojë</translation>
@@ -3695,6 +3701,7 @@
 <translation id="5341980496415249280">Prit, pasi po paketohet...</translation>
 <translation id="5342091991439452114">Kodi PIN duhet të ketë të paktën <ph name="MINIMUM" /> shifra</translation>
 <translation id="5344036115151554031">Linux po restaurohet</translation>
+<translation id="5345916423802287046">Nis aplikacionin kur identifikohesh</translation>
 <translation id="5350293332385664455">Çaktivizo "Asistentin e Google"</translation>
 <translation id="535123479159372765">Teksti u kopjua nga pajisja tjetër</translation>
 <translation id="5352033265844765294">Stampimi i orës</translation>
@@ -4004,6 +4011,7 @@
 <translation id="5704875434923668958">Po sinkronizohet në</translation>
 <translation id="5705005699929844214">Shfaq gjithmonë opsionet e qasshmërisë</translation>
 <translation id="5705882733397021510">Kthehu prapa</translation>
+<translation id="5707117624115653804">Personalizo madhësinë dhe stilin për aplikacionet dhe sajtet që e mbështesin këtë cilësim.</translation>
 <translation id="5707185214361380026">Dështoi në ngarkimin e shtesës nga:</translation>
 <translation id="5708171344853220004">Microsoft Principal Name</translation>
 <translation id="5709557627224531708">Caktoje Chrome si shfletuesin tënd të parazgjedhur</translation>
@@ -4167,6 +4175,7 @@
 <translation id="5904614460720589786"><ph name="APP_NAME" /> nuk mund të konfigurohej për shkak të një problemi në konfigurim. Kontakto me administratorin tënd. Kodi i gabimit: <ph name="ERROR_CODE" />.</translation>
 <translation id="5906655207909574370">Pothuajse i përditësuar! Rinise pajisjen për të përfunduar përditësimin.</translation>
 <translation id="5906732635754427568">Të dhënat e lidhura me këtë aplikacion do të hiqen nga kjo pajisje.</translation>
+<translation id="5908474332780919512">Nis aplikacionin kur identifikohesh</translation>
 <translation id="5908695239556627796">Shpejtësia e lëvizjes së miut</translation>
 <translation id="5908769186679515905">Blloko sajtet që të mos ekzekutojnë Flash</translation>
 <translation id="5910363049092958439">Ru&amp;aje imazhin si...</translation>
@@ -4706,6 +4715,7 @@
 <translation id="6532527800157340614">Identifikimi dështoi sepse kodi i qasjes nuk mund të merrej. Kontrollo lidhjen e rrjetit dhe provo përsëri.</translation>
 <translation id="6532663472409656417">E regjistruar për ndërmarrjen</translation>
 <translation id="6535331821390304775">Lejo gjithmonë që <ph name="ORIGIN" /> të hapë lidhjet e këtij lloji në aplikacionin përkatës</translation>
+<translation id="6537613839935722475">Emri mund të përdorë shkronja, numra dhe viza ndarëse (-)</translation>
 <translation id="6538635548667167211">Cilësimi aktual i përdorimit të të dhënave është "Të dhënat"</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />Shënim.<ph name="END_BOLD" /> Aktivizoje vetëm nëse e di e çfarë po bën ose nëse të është kërkuar ta bësh këtë, sepse grumbullimi të dhënave mund të ulë rendimentin.</translation>
 <translation id="6541638731489116978">Kjo faqe nuk lejohet të t'i hapë sensorët e lëvizjes.</translation>
@@ -4794,6 +4804,7 @@
 <translation id="6650234781371031356">Fjalëkalimi yt për <ph name="WEBSITE" /> është ruajtur në këtë pajisje dhe në "Llogarinë tënde të Google". Cilin dëshiron të fshish?</translation>
 <translation id="665061930738760572">Hape në dritare &amp;të re</translation>
 <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="6654509035557065241">Rrjeti i preferuar</translation>
 <translation id="6655190889273724601">Modaliteti i zhvilluesit</translation>
@@ -5397,6 +5408,7 @@
 <translation id="7375235221357833624">{0,plural, =1{Përditëso pajisjen brenda një ore}other{Përditëso pajisjen brenda # orësh}}</translation>
 <translation id="7376553024552204454">Thekso kursorin e miut kur është në lëvizje</translation>
 <translation id="7377451353532943397">Vazhdo të bllokosh qasjen te sensorët</translation>
+<translation id="7378611153938412599">Fjalëkalimet e dobëta mund të gjenden me lehtësi. Sigurohu që po krijon fjalëkalime të forta. <ph name="BEGIN_LINK" />Shiko më shumë këshilla sigurie.<ph name="END_LINK" /></translation>
 <translation id="73786666777299047">Hap "Dyqanin e uebit të Chrome"</translation>
 <translation id="7378812711085314936">Merr lidhjen e të dhënave</translation>
 <translation id="7380622428988553498">Emri i pajisjes përmban karaktere të pavlefshme</translation>
@@ -5920,6 +5932,7 @@
 <translation id="7959074893852789871">Skedari përmbante shumë certifikata, disa prej të cilave nuk u importuan:</translation>
 <translation id="7961015016161918242">Asnjëherë</translation>
 <translation id="7963001036288347286">Përshpejtimi i bllokut të prekjes</translation>
+<translation id="7963608432878156675">Ky emër është i dukshëm për pajisjet e tjera për lidhjet me Bluetooth dhe të rrjetit</translation>
 <translation id="7963826112438303517">"Asistenti" yt i përdor këto regjistrime dhe kërkesat e tua me zë për të krijuar dhe përditësuar modelin e zërit tënd, i cili ruhet vetëm në pajisjet ku ke aktivizuar Voice Match. Shiko ose trajno përsëri aktivitetin e zërit te "Cilësimet" e "Asistentit".</translation>
 <translation id="7966241909927244760">K&amp;opjo adresën e imazhit</translation>
 <translation id="7966571622054096916">{COUNT,plural, =1{1 artikull në listën e faqeshënuesve}other{{COUNT} artikuj në listën e faqeshënuesve}}</translation>
@@ -6383,6 +6396,7 @@
 <translation id="850875081535031620">Nuk u gjet asnjë softuer i dëmshëm</translation>
 <translation id="8509177919508253835">Rivendos çelësat e sigurisë dhe krijo kodet PIN</translation>
 <translation id="8509646642152301857">Dështoi shkarkimi i fjalorit të kontrollit të drejtshkrimit.</translation>
+<translation id="8512396579636492893">{COUNT,plural, =0{Nuk u gjet asnjë fjalëkalim i dobët}=1{U gjet {COUNT} fjalëkalim i dobët}other{U gjetën {COUNT} fjalëkalime të dobëta}}</translation>
 <translation id="8512476990829870887">Përfundo procesin</translation>
 <translation id="851263357009351303">Lejo gjithmonë që <ph name="HOST" /> të shfaqë imazhet</translation>
 <translation id="8513108775083588393">Autorrotullim</translation>
diff --git a/chrome/app/resources/generated_resources_sr-Latn.xtb b/chrome/app/resources/generated_resources_sr-Latn.xtb
index 6e21a962..98cca85f 100644
--- a/chrome/app/resources/generated_resources_sr-Latn.xtb
+++ b/chrome/app/resources/generated_resources_sr-Latn.xtb
@@ -6911,7 +6911,7 @@
 <translation id="9088446193279799727">Konfigurisanje Linux-a nije uspelo. Povežite se na internet i probajte ponovo.</translation>
 <translation id="9088917181875854783">Potvrdite da se ovaj pristupni kôd prikazuje na uređaju „<ph name="DEVICE_NAME" />“:</translation>
 <translation id="9089416786594320554">Metodi unosa</translation>
-<translation id="909108997331068008"><ph name="EXISTING_USER" /> je pomoću profila već prijavljen(a) na <ph name="NEW_USER" /></translation>
+<translation id="909108997331068008">Profil <ph name="EXISTING_USER" /> je već prijavljen na <ph name="NEW_USER" /></translation>
 <translation id="9093429538970210897">Preporučuje se da napravite rezervne kopije u slučaju da nadogradnja ne može da se dovrši. Kad nadogradnja počne, Linux (beta) će se isključiti. Sačuvajte otvorene datoteke pre nego što nastavite.</translation>
 <translation id="9094033019050270033">Ažuriraj lozinku</translation>
 <translation id="9094038138851891550">Korisničko ime je nevažeće</translation>
diff --git a/chrome/app/resources/generated_resources_sr.xtb b/chrome/app/resources/generated_resources_sr.xtb
index 0461682..94a71189 100644
--- a/chrome/app/resources/generated_resources_sr.xtb
+++ b/chrome/app/resources/generated_resources_sr.xtb
@@ -6911,7 +6911,7 @@
 <translation id="9088446193279799727">Конфигурисање Linux-а није успело. Повежите се на интернет и пробајте поново.</translation>
 <translation id="9088917181875854783">Потврдите да се овај приступни кôд приказује на уређају „<ph name="DEVICE_NAME" />“:</translation>
 <translation id="9089416786594320554">Методи уноса</translation>
-<translation id="909108997331068008"><ph name="EXISTING_USER" /> је помоћу профила већ пријављен(а) на <ph name="NEW_USER" /></translation>
+<translation id="909108997331068008">Профил <ph name="EXISTING_USER" /> је већ пријављен на <ph name="NEW_USER" /></translation>
 <translation id="9093429538970210897">Препоручује се да направите резервне копије у случају да надоградња не може да се доврши. Кад надоградња почне, Linux (бета) ће се искључити. Сачувајте отворене датотеке пре него што наставите.</translation>
 <translation id="9094033019050270033">Ажурирај лозинку</translation>
 <translation id="9094038138851891550">Корисничко име је неважеће</translation>
diff --git a/chrome/app/resources/generated_resources_sv.xtb b/chrome/app/resources/generated_resources_sv.xtb
index 621c6d3f..a77c4d45 100644
--- a/chrome/app/resources/generated_resources_sv.xtb
+++ b/chrome/app/resources/generated_resources_sv.xtb
@@ -928,6 +928,7 @@
 <translation id="204914487372604757">Skapa genväg</translation>
 <translation id="2050339315714019657">Stående</translation>
 <translation id="2053312383184521053">Data om läget inaktiv</translation>
+<translation id="2054665754582400095">Din närvaro</translation>
 <translation id="2055585478631012616">Du loggas ut från webbplatserna i fråga, även på öppna flikar</translation>
 <translation id="205560151218727633">Logotyp för Google Assistent</translation>
 <translation id="2058456167109518507">En enhet har upptäckts</translation>
@@ -1214,6 +1215,7 @@
 <translation id="2387052489799050037">Öppna startskärmen</translation>
 <translation id="2387458720915042159">Proxyanslutningstyp</translation>
 <translation id="2390347491606624519">Det gick inte att ansluta till proxyservern. Logga in igen.</translation>
+<translation id="2390782873446084770">Wi-Fi-synkronisering</translation>
 <translation id="2391082728065870591">Skicka feedbackrapport</translation>
 <translation id="2391419135980381625">Standardteckensnitt</translation>
 <translation id="2392163307141705938">Du har nått gränsen som din förälder har ställt in för <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
@@ -1870,6 +1872,7 @@
 <translation id="3157931365184549694">Återställ</translation>
 <translation id="3158033540161634471">Konfigurera fingeravtryck</translation>
 <translation id="3159493096109238499">Beige</translation>
+<translation id="3159978855457658359">Redigera enhetsnamn</translation>
 <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (med maskinvarustöd)</translation>
 <translation id="3161522574479303604">Alla språk</translation>
 <translation id="3162853326462195145">Skolkonto</translation>
@@ -3230,6 +3233,7 @@
 <translation id="4761104368405085019">Använd mikrofonen</translation>
 <translation id="4762718786438001384">Mycket ont om diskutrymme på enheten</translation>
 <translation id="4763408175235639573">Följande cookies sparades när du visade denna sida</translation>
+<translation id="4764368918650455114">Se till att båda enheterna är upplåsta, att de är nära varandra och att Bluetooth är aktiverat. Om du delar med en Chromebook kontrollerar du att Närdelning har aktiverats (öppna statusfältet genom att välja klockan och välj sedan Närdelning). <ph name="LINK_BEGIN" />Läs mer<ph name="LINK_END" /></translation>
 <translation id="4765582662863429759">Tillåter Android Messages att dirigera sms från mobilen till Chromebook</translation>
 <translation id="476598255842811483">Ingen, såvida du inte öppnar Närdelning på enheten</translation>
 <translation id="4768332406694066911">Du har certifikat från dessa organisationer som identifierar dig</translation>
@@ -3392,6 +3396,7 @@
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> – <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Den här appen har installerats av administratören.</translation>
 <translation id="4964455510556214366">Ordning</translation>
+<translation id="496446150016900060">Synkronisera Wi-Fi-nätverk med telefonen</translation>
 <translation id="4965808351167763748">Vill du konfigurera den här enheten för Hangouts Meet?</translation>
 <translation id="496888482094675990">Med appen Filer kommer du snabbt åt filer som du har sparat på Google Drive, externa lagringsenheter eller din Chrome OS-enhet.</translation>
 <translation id="4971412780836297815">Öppna när nedladdningen är klar</translation>
@@ -3698,6 +3703,7 @@
 <translation id="5341980496415249280">Komprimering pågår, vänta …</translation>
 <translation id="5342091991439452114">Pinkoden måste bestå av minst <ph name="MINIMUM" /> siffror</translation>
 <translation id="5344036115151554031">Återställer Linux</translation>
+<translation id="5345916423802287046">Starta appen när du loggar in</translation>
 <translation id="5350293332385664455">Inaktivera Google Assistent</translation>
 <translation id="535123479159372765">Text kopierad från en annan enhet</translation>
 <translation id="5352033265844765294">Tidsstämpling</translation>
@@ -4007,6 +4013,7 @@
 <translation id="5704875434923668958">Synkroniserar till</translation>
 <translation id="5705005699929844214">Visa alltid tillgänglighetsalternativen</translation>
 <translation id="5705882733397021510">Tillbaka</translation>
+<translation id="5707117624115653804">Anpassa storlek och format på textningen för appar och webbplatser som har stöd för inställningen</translation>
 <translation id="5707185214361380026">Det gick inte att läsa in tillägget från:</translation>
 <translation id="5708171344853220004">Huvudnamn för Microsoft</translation>
 <translation id="5709557627224531708">Ange Chrome som standardwebbläsare</translation>
@@ -4170,6 +4177,7 @@
 <translation id="5904614460720589786">Det gick inte att installera <ph name="APP_NAME" /> på grund av ett konfigurationsproblem. Kontakta administratören. Felkod: <ph name="ERROR_CODE" />.</translation>
 <translation id="5906655207909574370">Uppdateringen är nästan klar! Slutför den genom att starta om enheten.</translation>
 <translation id="5906732635754427568">Data kopplad till den här appen tas bort från enheten.</translation>
+<translation id="5908474332780919512">Starta appen när du loggar in</translation>
 <translation id="5908695239556627796">Scrollningshastighet för musen</translation>
 <translation id="5908769186679515905">Blockera webbplatser från att köra Flash</translation>
 <translation id="5910363049092958439">S&amp;para bild som...</translation>
@@ -4709,6 +4717,7 @@
 <translation id="6532527800157340614">Inloggningen misslyckades eftersom det inte gick att hämta din åtkomsttoken. Kontrollera nätverksanslutningen och försök igen.</translation>
 <translation id="6532663472409656417">Med företagsregistrering</translation>
 <translation id="6535331821390304775">Tillåt alltid att <ph name="ORIGIN" /> öppnar den här typen av länkar i den kopplade appen</translation>
+<translation id="6537613839935722475">Namnet kan innehålla bokstäver, siffror och bindestreck (-)</translation>
 <translation id="6538635548667167211">Den aktuella inställningen för dataanvändning är Data</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />Obs!<ph name="END_BOLD" /> Aktivera endast om du vet vad du gör eller om du har blivit ombedd att göra det eftersom insamling av data kan försämra resultatet.</translation>
 <translation id="6541638731489116978">Den här webbplatsen har blockerats från att använda enhetens rörelsesensorer.</translation>
@@ -4797,6 +4806,7 @@
 <translation id="6650234781371031356">Ditt lösenord på <ph name="WEBSITE" /> har sparats på den här enheten och i Google-kontot. Vilket vill du radera?</translation>
 <translation id="665061930738760572">Öppna i &amp;nytt fönster</translation>
 <translation id="6651237644330755633">Lita på detta certifikat för identifiering av webbplatser</translation>
+<translation id="6651495917527016072">Synkronisera Wi-Fi-nätverk med telefonen. <ph name="LINK_BEGIN" />Läs mer<ph name="LINK_END" /></translation>
 <translation id="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="6654509035557065241">Föredraget nätverk</translation>
 <translation id="6655190889273724601">Programmerarläge</translation>
@@ -5400,6 +5410,7 @@
 <translation id="7375235221357833624">{0,plural, =1{Uppdatera enheten inom en timme}other{Uppdatera enheten inom # timmar}}</translation>
 <translation id="7376553024552204454">Markera muspekaren när den är i rörelse</translation>
 <translation id="7377451353532943397">Fortsätt att blockera sensoråtkomst</translation>
+<translation id="7378611153938412599">Svaga lösenord är lätta att lista ut. Använd alltid starka lösenord. <ph name="BEGIN_LINK" />Här hittar du fler säkerhetstips.<ph name="END_LINK" /></translation>
 <translation id="73786666777299047">Öppna Chrome Web Store</translation>
 <translation id="7378812711085314936">Dela dataanslutning</translation>
 <translation id="7380622428988553498">Enhetsnamnet innehåller ogiltiga tecken</translation>
@@ -5924,6 +5935,7 @@
 <translation id="7959074893852789871">Filen innehöll flera certifikat och några av dem importerades inte:</translation>
 <translation id="7961015016161918242">Aldrig</translation>
 <translation id="7963001036288347286">Acceleration för styrplattan</translation>
+<translation id="7963608432878156675">Det här namnet visas för andra enheter för Bluetooth- och nätverksanslutningar</translation>
 <translation id="7963826112438303517">Assistenten använder dessa inspelningar och allt du ber den om för att skapa och uppdatera din röstmodell, som bara lagras på enheter där du har aktiverat Voice Match. Visa eller lär om röstaktiviteter i inställningarna för Assistenten.</translation>
 <translation id="7966241909927244760">K&amp;opiera bildadress</translation>
 <translation id="7966571622054096916">{COUNT,plural, =1{1 objekt i listan med bokmärken}other{{COUNT} objekt i listan med bokmärken}}</translation>
@@ -6388,6 +6400,7 @@
 <translation id="850875081535031620">Ingen skadlig programvara hittades</translation>
 <translation id="8509177919508253835">Återställ säkerhetsnycklar och skapa pinkoder</translation>
 <translation id="8509646642152301857">Det gick inte att ladda ned ordlistan för stavningskontrollen.</translation>
+<translation id="8512396579636492893">{COUNT,plural, =0{Inga svaga lösenord hittades}=1{{COUNT} svagt lösenord hittades}other{{COUNT} svaga lösenord hittades}}</translation>
 <translation id="8512476990829870887">Avsluta process</translation>
 <translation id="851263357009351303">Tillåt alltid att <ph name="HOST" /> visar bilder</translation>
 <translation id="8513108775083588393">Rotera automatiskt</translation>
diff --git a/chrome/app/resources/generated_resources_tr.xtb b/chrome/app/resources/generated_resources_tr.xtb
index baa7889..1da2352 100644
--- a/chrome/app/resources/generated_resources_tr.xtb
+++ b/chrome/app/resources/generated_resources_tr.xtb
@@ -928,6 +928,7 @@
 <translation id="204914487372604757">Kısayol oluştur </translation>
 <translation id="2050339315714019657">Dikey</translation>
 <translation id="2053312383184521053">Boşta Kalma Durumu Verileri</translation>
+<translation id="2054665754582400095">Bir yerde olduğunuza dair bilgi</translation>
 <translation id="2055585478631012616">Açık sekmeler dahil olmak üzere bu sitelerdeki oturumunuzu kapatacaksınız</translation>
 <translation id="205560151218727633">Google Asistan logosu</translation>
 <translation id="2058456167109518507">Cihaz algılandı</translation>
@@ -1214,6 +1215,7 @@
 <translation id="2387052489799050037">Ana sayfaya git</translation>
 <translation id="2387458720915042159">Proxy bağlantısı türü</translation>
 <translation id="2390347491606624519">Proxy'ye bağlanılamıyor, lütfen tekrar oturum açın</translation>
+<translation id="2390782873446084770">Wi-Fi Senkronizasyonu</translation>
 <translation id="2391082728065870591">Geri Bildirim Raporu Gönder</translation>
 <translation id="2391419135980381625">Standart yazı tipi</translation>
 <translation id="2392163307141705938">Ebeveyninizin <ph name="IDS_SHORT_PRODUCT_NAME" /> için belirlediği süre sınırına ulaştınız.</translation>
@@ -1870,6 +1872,7 @@
 <translation id="3157931365184549694">Geri yükle</translation>
 <translation id="3158033540161634471">Parmak izinizi kurun</translation>
 <translation id="3159493096109238499">Bej</translation>
+<translation id="3159978855457658359">Cihaz adını düzenleyin</translation>
 <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (donanım destekli)</translation>
 <translation id="3161522574479303604">Tüm diller</translation>
 <translation id="3162853326462195145">Okul hesabı</translation>
@@ -3230,6 +3233,7 @@
 <translation id="4761104368405085019">Mikrofonunuzu kullanma</translation>
 <translation id="4762718786438001384">Cihazdaki boş disk alanı kritik düzeyde</translation>
 <translation id="4763408175235639573">Bu sayfayı görüntülediğinizde aşağıdaki çerezler ayarlandı</translation>
+<translation id="4764368918650455114">Her iki cihazın da kilidinin açık ve birbirine yakın olduğundan, Bluetooth ayarlarının etkin olduğundan emin olun. Bir Chromebook ile paylaşıyorsanız Yakındakilerle Paylaş özelliğinin açık olduğundan emin olun (saati seçerek durum alanını açıp Yakındakilerle Paylaş'ı seçin). <ph name="LINK_BEGIN" />Daha fazla bilgi<ph name="LINK_END" /></translation>
 <translation id="4765582662863429759">Android Mesajlar'ın telefonunuzdan Chromebook'unuza kısa mesaj aktarmasını sağlar</translation>
 <translation id="476598255842811483">Cihazınızda Yakındakilerle Paylaş özelliğini açmadığınız sürece hiç kimse</translation>
 <translation id="4768332406694066911">Sizi tanımlayan şu kuruluşlardan sertifikalarınız var</translation>
@@ -3392,6 +3396,7 @@
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Bu uygulama, yöneticiniz tarafından yüklendi.</translation>
 <translation id="4964455510556214366">Düzenleme</translation>
+<translation id="496446150016900060">Kablosuz ağları telefonunuzla senkronize edin</translation>
 <translation id="4965808351167763748">Bu cihazı Hangouts Meet'i çalıştırmak üzere ayarlamak istediğinizden emin misiniz?</translation>
 <translation id="496888482094675990">Dosyalar uygulaması; Google Drive'a, harici depolama birimine veya Chrome OS cihazınıza kaydettiğiniz dosyalara hızlı bir şekilde erişebilmenizi sağlar.</translation>
 <translation id="4971412780836297815">İşlem tamamlandığında aç</translation>
@@ -3698,6 +3703,7 @@
 <translation id="5341980496415249280">Lütfen bekleyin, paketleniyor...</translation>
 <translation id="5342091991439452114">PIN en az <ph name="MINIMUM" /> basamaklı olmalıdır</translation>
 <translation id="5344036115151554031">Linux'u geri yükleme</translation>
+<translation id="5345916423802287046">Oturum açtığımda uygulamayı başlat</translation>
 <translation id="5350293332385664455">Google Asistan'ı kapat</translation>
 <translation id="535123479159372765">Metin diğer cihazdan kopyalandı</translation>
 <translation id="5352033265844765294">Zaman Damgası</translation>
@@ -4008,6 +4014,7 @@
 <translation id="5704875434923668958">Şu hesapla senkronize ediliyor:</translation>
 <translation id="5705005699929844214">Her zaman erişilebilirlik seçeneklerini göster</translation>
 <translation id="5705882733397021510">Geri Git</translation>
+<translation id="5707117624115653804">Bu ayarı destekleyen uygulamalar ve siteler için altyazıların hem boyutunu hem de stilini özelleştirin</translation>
 <translation id="5707185214361380026">Uzantı şuradan yüklenemedi:</translation>
 <translation id="5708171344853220004">Microsoft Asıl Adı</translation>
 <translation id="5709557627224531708">Chrome'u varsayılan tarayıcınız olarak ayarlama</translation>
@@ -4171,6 +4178,7 @@
 <translation id="5904614460720589786">Yapılandırma sorunu nedeniyle <ph name="APP_NAME" /> kurulumu yapılamadı. Lütfen yöneticinizle görüşün. Hata kodu: <ph name="ERROR_CODE" />.</translation>
 <translation id="5906655207909574370">Az kaldı! Güncellemeyi tamamlamak için cihazınızı yeniden başlatın.</translation>
 <translation id="5906732635754427568">Bu uygulamayla ilişkili veriler bu cihazdan kaldırılacak.</translation>
+<translation id="5908474332780919512">Oturum Açtığımda Uygulamayı Başlat</translation>
 <translation id="5908695239556627796">Fare kaydırma hızı</translation>
 <translation id="5908769186679515905">Sitelerin Flash çalıştırmasını engelle</translation>
 <translation id="5910363049092958439">Resmi Farklı Ka&amp;ydet...</translation>
@@ -4710,6 +4718,7 @@
 <translation id="6532527800157340614">Erişim jetonu alınamadığından oturum açılamadı. Lütfen ağ bağlantınızı kontrol edin ve tekrar deneyin.</translation>
 <translation id="6532663472409656417">Kurumsal Olarak Kayıtlı</translation>
 <translation id="6535331821390304775">Bu tür bağlantıları ilişkilendirilmiş uygulamada açması için <ph name="ORIGIN" /> sitesine her zaman izin ver</translation>
+<translation id="6537613839935722475">Ad harf, sayı ve kısa çizgi (-) içerebilir</translation>
 <translation id="6538635548667167211">Mevcut veri kullanımı, Mobil Veri olarak ayarlı</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />Not:<ph name="END_BOLD" /> Veri toplama işlemi performansı düşürebileceğinden sadece etkinleştirmenin sonuçlarını biliyorsanız veya etkinleştirmeniz istenmişse bunu yapın.</translation>
 <translation id="6541638731489116978">Bu sitenin, hareket sensörlerinize erişimi engellenmiştir.</translation>
@@ -4798,6 +4807,7 @@
 <translation id="6650234781371031356"><ph name="WEBSITE" /> için şifreniz hem bu cihazda hem de Google Hesabınızda saklanıyor. Hangisini silmek istiyorsunuz?</translation>
 <translation id="665061930738760572">&amp;Yeni Pencerede Aç</translation>
 <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="6654509035557065241">Ağı tercih et</translation>
 <translation id="6655190889273724601">Geliştirici modu</translation>
@@ -5401,6 +5411,7 @@
 <translation id="7375235221357833624">{0,plural, =1{Cihazı bir saat içinde güncelleyin}other{Cihazı # saat içinde güncelleyin}}</translation>
 <translation id="7376553024552204454">Hareket ederken fare imlecini vurgula</translation>
 <translation id="7377451353532943397">Sensör erişimini engellemeye devam et</translation>
+<translation id="7378611153938412599">Zayıf şifrelerin tahmin edilmesi kolaydır. Güçlü şifreler oluşturduğunuzdan emin olun. <ph name="BEGIN_LINK" />Güvenlikle ilgili daha fazla ipucu görün.<ph name="END_LINK" /></translation>
 <translation id="73786666777299047">Chrome Web Mağazası'nı açın</translation>
 <translation id="7378812711085314936">Veri bağlantısını al</translation>
 <translation id="7380622428988553498">Cihaz adı geçersiz karakterler içeriyor</translation>
@@ -5924,6 +5935,7 @@
 <translation id="7959074893852789871">Dosya birden çok sertifika içeriyordu, bunların bazıları içe aktarılmadı:</translation>
 <translation id="7961015016161918242">Hiçbir Zaman</translation>
 <translation id="7963001036288347286">Dokunmatik alan hızlandırması</translation>
+<translation id="7963608432878156675">Bu ad, Bluetooth ve ağ bağlantıları için diğer cihazlar tarafından görülebilir.</translation>
 <translation id="7963826112438303517">Asistanınız bu kayıtları ve sesli isteklerinizi ses modelinizi oluşturmak ve güncellemek için kullanır. Ses modeliniz yalnızca Voice Match özelliğini etkinleştirdiğiniz cihazlarda saklanır. Konuşma etkinliğini Asistan Ayarları'ndan görüntüleyebilir veya yeniden eğitebilirsiniz.</translation>
 <translation id="7966241909927244760">Resim Adresini K&amp;opyala</translation>
 <translation id="7966571622054096916">{COUNT,plural, =1{Yer işareti listesinde 1 öğe var}other{Yer işareti listesinde {COUNT} öğe var}}</translation>
@@ -6388,6 +6400,7 @@
 <translation id="850875081535031620">Zararlı yazılım bulunmadı</translation>
 <translation id="8509177919508253835">Güvenlik anahtarlarını sıfırla ve PIN'leri oluştur</translation>
 <translation id="8509646642152301857">Yazım denetimi sözlüğü indirilemedi.</translation>
+<translation id="8512396579636492893">{COUNT,plural, =0{Zayıf şifre bulunmadı}=1{{COUNT} zayıf şifre bulundu}other{{COUNT} zayıf şifre bulundu}}</translation>
 <translation id="8512476990829870887">İşlemi Bitir</translation>
 <translation id="851263357009351303"><ph name="HOST" /> sitesindeki resimlerin gösterilmesine her zaman izin ver</translation>
 <translation id="8513108775083588393">Oto. döndür</translation>
diff --git a/chrome/app/resources/generated_resources_ur.xtb b/chrome/app/resources/generated_resources_ur.xtb
index a7abd02a..36a0409 100644
--- a/chrome/app/resources/generated_resources_ur.xtb
+++ b/chrome/app/resources/generated_resources_ur.xtb
@@ -3046,7 +3046,7 @@
 <translation id="4545028762441890696">اسے دوبارہ فعال کرنے کے لیے، نئی اجازتیں قبول کریں:</translation>
 <translation id="4545759655004063573">ناکافی اجازتوں کے سبب محفوظ نہیں کیا جا سکتا ہے۔ براہ کرم دوسرے مقام میں محفوظ کریں۔</translation>
 <translation id="4546308221697447294">‏Google Chrome کے ساتھ تیزی سے براؤز کریں</translation>
-<translation id="4546345569117159016">دائیں جانب کا بٹن</translation>
+<translation id="4546345569117159016">دایاں بٹن</translation>
 <translation id="4546692474302123343">‏Google اسسٹنٹ صوتی ان پٹ</translation>
 <translation id="4547659257713117923">دوسرے آلات سے کوئی ٹیبز نہیں ہیں</translation>
 <translation id="4547672827276975204">خودکار طور پر سیٹ کریں</translation>
@@ -4681,7 +4681,7 @@
 <translation id="6499681088828539489">مشترکہ نیٹ ورکس کیلئے پراکسیز کی اجازت نہ دیں</translation>
 <translation id="650266656685499220">‏البمز تخلیق کرنے کے لیے Google تصاویر پر جائیں</translation>
 <translation id="6503077044568424649">سب سے زیادہ ملاحظہ کردہ</translation>
-<translation id="650457560773015827">بائیں جانب کا بٹن</translation>
+<translation id="650457560773015827">بایاں بٹن</translation>
 <translation id="6504611359718185067">ایک پرنٹر شامل کرنے کیلئے انٹرنیٹ سے منسلک ہوں</translation>
 <translation id="6506374932220792071">‏SHA-256 کے ساتھ X9.62 ECDSA دستخط</translation>
 <translation id="6508248480704296122"><ph name="NAME_PH" /> سے متعلق</translation>
@@ -5106,7 +5106,7 @@
 <translation id="7005848115657603926">غلط صفحہ کی رینج، <ph name="EXAMPLE_PAGE_RANGE" /> استعمال کریں</translation>
 <translation id="7006634003215061422">زیریں مارجن</translation>
 <translation id="7007648447224463482">سبھی کو نئی ونڈو میں کھولیں</translation>
-<translation id="7009709314043432820"><ph name="APP_NAME" /> آپ کا کیمرا استعمال کر رہا ہے</translation>
+<translation id="7009709314043432820"><ph name="APP_NAME" /> ایپ آپ کا کیمرا استعمال کر رہی ہے</translation>
 <translation id="701080569351381435">ماخذ دیکھیں</translation>
 <translation id="7014174261166285193">انسٹالیشن ناکام ہو گیا۔</translation>
 <translation id="7017004637493394352">‏"Ok Google" دوبارہ بولیں</translation>
@@ -5213,7 +5213,7 @@
 <translation id="7136984461011502314"><ph name="PRODUCT_NAME" /> میں خوش آمدید</translation>
 <translation id="7136993520339022828">ایک خرابی ہے۔ براہ کرم دیگر تصاویر کا انتخاب کر کے دوبارہ کوشش کریں۔</translation>
 <translation id="713888829801648570">معذرت، آپ کے پاس ورڈ کی توثیق نہیں کی جا سکی کیونکہ آپ آف لائن ہیں۔</translation>
-<translation id="7139627972753429585"><ph name="APP_NAME" /> آپ کا مائیکروفون استعمال کر رہا ہے</translation>
+<translation id="7139627972753429585"><ph name="APP_NAME" /> ایپ آپ کا مائیکروفون استعمال کر رہی ہے</translation>
 <translation id="7140928199327930795">کوئی دیگر دستیاب آلات نہیں ہیں۔</translation>
 <translation id="7141105143012495934">سائن ان ناکام ہو گیا کیونکہ آپ کے اکاؤنٹ کی تفصیلات کی بازیافت نہيں ہو سکی۔ براہ کرم اپنے منتظم سے رابطہ کریں یا دوبارہ کوشش کریں۔</translation>
 <translation id="7143207342074048698">منسلک ہو رہا ہے</translation>
@@ -5589,7 +5589,7 @@
 <translation id="7607002721634913082">موقوف</translation>
 <translation id="7608810328871051088">‏Android کی ترجیحات</translation>
 <translation id="7609148976235050828">براہ کرم انٹر نیٹ سے منسلک ہوں اور دوبارہ کوشش کریں۔</translation>
-<translation id="7612655942094160088">منسلک کردہ فون کی خصوصیات فعال ہے۔</translation>
+<translation id="7612655942094160088">منسلک کردہ فون کی خصوصیات فعال کریں۔</translation>
 <translation id="7614260613810441905">آپ کے آلہ پر جب کوئی سائٹ فائلز یا فولڈرز میں ترمیم کرنا چاہے تو پوچھیں (تجویز کردہ)</translation>
 <translation id="761530003705945209">‏Google Drive میں بیک اپ لیں۔ آسانی سے اپنا ڈیٹا بحال کریں یا کسی بھی وقت آلہ کو سوئچ کریں۔ آپ کے بیک اپ میں ایپ کا ڈیٹا شامل ہے۔ آپ کے بیک اپس کو Google پر اپ لوڈ کیا جاتا ہے اور آپ کے Google اکاؤنٹ کا پاس ورڈ استعمال کر کے انہیں مرموز کیا جاتا ہے۔</translation>
 <translation id="7615365294369022248">اکاؤنٹ کو شامل کرتے وقت ایک خرابی پیش آ گئی</translation>
@@ -6239,7 +6239,7 @@
 <translation id="8322814362483282060">اس صفحہ کو آپ کے مائیکروفون تک رسائی حاصل کرنے سے مسدود کر دیا گیا ہے۔</translation>
 <translation id="8323167517179506834">‏URL ٹائپ کریں</translation>
 <translation id="8324784016256120271">سائٹس کوکیز کے ذریعے مختلف سائٹس پر، مثال کے طور پر، اشتہارات کو ذاتی نوعیت کا بنانے کے لیے آپ کی براؤزنگ کی سرگرمی دیکھ سکتی ہیں</translation>
-<translation id="8325413836429495820">اپنے کلپ بورڈ کو دیکھنے کی اجازت نہیں ہے</translation>
+<translation id="8325413836429495820">آپ کے کلپ بورڈ کو دیکھنے کی اجازت نہیں ہے</translation>
 <translation id="8326478304147373412">‏PKCS #7، سرٹیفیکیٹ چین</translation>
 <translation id="8327039559959785305">‏Linux فائلز کو ماؤنٹ کرنے میں خرابی پیش آ گئی۔ براہ کرم دوبارہ کوشش کریں۔</translation>
 <translation id="8327676037044516220">اجازتیں اور مواد کی ترتیبات</translation>
diff --git a/chrome/app/resources/generated_resources_vi.xtb b/chrome/app/resources/generated_resources_vi.xtb
index 79c46ce..71fed5187 100644
--- a/chrome/app/resources/generated_resources_vi.xtb
+++ b/chrome/app/resources/generated_resources_vi.xtb
@@ -928,6 +928,7 @@
 <translation id="204914487372604757">Tạo lối tắt</translation>
 <translation id="2050339315714019657">Khổ dọc</translation>
 <translation id="2053312383184521053">Dữ liệu ở trạng thái không hoạt động</translation>
+<translation id="2054665754582400095">Sự hiện diện của bạn</translation>
 <translation id="2055585478631012616">Bạn sẽ bị đăng xuất khỏi những trang web này, bao gồm cả các thẻ đang mở</translation>
 <translation id="205560151218727633">Biểu trưng Trợ lý Google</translation>
 <translation id="2058456167109518507">Đã phát hiện thiết bị</translation>
@@ -1214,6 +1215,7 @@
 <translation id="2387052489799050037">Chuyển đến Màn hình chính</translation>
 <translation id="2387458720915042159">Loại kết nối proxy</translation>
 <translation id="2390347491606624519">Không thể kết nối với proxy, vui lòng đăng nhập lại</translation>
+<translation id="2390782873446084770">Đồng bộ hóa Wi-Fi</translation>
 <translation id="2391082728065870591">Gửi báo cáo phản hồi</translation>
 <translation id="2391419135980381625">Phông chữ tiêu chuẩn</translation>
 <translation id="2392163307141705938">Bạn đã đạt đến giới hạn thời gian sử dụng <ph name="IDS_SHORT_PRODUCT_NAME" /> do cha mẹ đặt ra.</translation>
@@ -1870,6 +1872,7 @@
 <translation id="3157931365184549694">Khôi phục</translation>
 <translation id="3158033540161634471">Thiết lập vân tay</translation>
 <translation id="3159493096109238499">Màu be</translation>
+<translation id="3159978855457658359">Chỉnh sửa tên thiết bị</translation>
 <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (dựa trên phần cứng)</translation>
 <translation id="3161522574479303604">Tất cả ngôn ngữ</translation>
 <translation id="3162853326462195145">Tài khoản trường học</translation>
@@ -3230,6 +3233,7 @@
 <translation id="4761104368405085019">Sử dụng micrô của bạn</translation>
 <translation id="4762718786438001384">Dung lượng đĩa của thiết bị quá thấp</translation>
 <translation id="4763408175235639573">Các cookie sau đã được cài đặt khi bạn xem trang này</translation>
+<translation id="4764368918650455114">Hãy đảm bảo cả hai thiết bị đều đã mở khóa, ở gần nhau và bật Bluetooth. Nếu bạn đang chia sẻ với Chromebook, hãy đảm bảo thiết bị này đã bật tính năng Chia sẻ lân cận (mở khu vực trạng thái bằng cách chọn giờ, sau đó chọn tính năng Chia sẻ lân cận). <ph name="LINK_BEGIN" />Tìm hiểu thêm<ph name="LINK_END" /></translation>
 <translation id="4765582662863429759">Cho phép Android Messages chuyển tiếp tin nhắn văn bản từ điện thoại sang Chromebook</translation>
 <translation id="476598255842811483">Không người nào cả, trừ phi bạn mở tính năng Chia sẻ lân cận trên thiết bị của mình</translation>
 <translation id="4768332406694066911">Bạn có các chứng chỉ từ những tổ chức nhận dạng bạn sau đây</translation>
@@ -3392,6 +3396,7 @@
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Quản trị viên của bạn đã cài đặt ứng dụng này.</translation>
 <translation id="4964455510556214366">Sắp xếp</translation>
+<translation id="496446150016900060">Đồng bộ hóa các mạng Wi-Fi với điện thoại của bạn</translation>
 <translation id="4965808351167763748">Bạn có chắc chắn muốn thiết lập thiết bị này để chạy Hangouts Meet không?</translation>
 <translation id="496888482094675990">Ứng dụng Tệp cho phép truy cập nhanh các tệp mà bạn đã lưu trên Google Drive, bộ nhớ ngoài hoặc thiết bị Chrome OS của bạn.</translation>
 <translation id="4971412780836297815">Mở khi hoàn tất</translation>
@@ -3698,6 +3703,7 @@
 <translation id="5341980496415249280">Vui lòng đợi, đang đóng gói...</translation>
 <translation id="5342091991439452114">Mã PIN phải có ít nhất <ph name="MINIMUM" /> chữ số</translation>
 <translation id="5344036115151554031">Đang khôi phục Linux</translation>
+<translation id="5345916423802287046">Mở ứng dụng khi bạn đăng nhập</translation>
 <translation id="5350293332385664455">Tắt Trợ lý Google</translation>
 <translation id="535123479159372765">Văn bản được sao chép từ thiết bị khác</translation>
 <translation id="5352033265844765294">Dấu Thời gian</translation>
@@ -4007,6 +4013,7 @@
 <translation id="5704875434923668958">Đồng bộ hóa với</translation>
 <translation id="5705005699929844214">Luôn hiện các tùy chọn hỗ trợ tiếp cận</translation>
 <translation id="5705882733397021510">Quay lại</translation>
+<translation id="5707117624115653804">Tùy chỉnh kích cỡ và kiểu chú thích cho những ứng dụng và trang web hỗ trợ tùy chọn cài đặt này</translation>
 <translation id="5707185214361380026">Không tải được tiện ích từ:</translation>
 <translation id="5708171344853220004">Tên Chính của Microsoft</translation>
 <translation id="5709557627224531708">Đặt Chrome làm trình duyệt mặc định</translation>
@@ -4170,6 +4177,7 @@
 <translation id="5904614460720589786">Không thiết lập được <ph name="APP_NAME" /> do sự cố cấu hình. Vui lòng liên hệ với quản trị viên. Mã lỗi: <ph name="ERROR_CODE" />.</translation>
 <translation id="5906655207909574370">Gần được cập nhật! Hãy khởi động lại thiết bị của bạn để hoàn tất cập nhật.</translation>
 <translation id="5906732635754427568">Dữ liệu được liên kết với ứng dụng này sẽ bị xóa khỏi thiết bị này.</translation>
+<translation id="5908474332780919512">Mở ứng dụng khi bạn đăng nhập</translation>
 <translation id="5908695239556627796">Tốc độ cuộn chuột</translation>
 <translation id="5908769186679515905">Chặn trang web chạy Flash</translation>
 <translation id="5910363049092958439">Lưu &amp;Hình ảnh Dưới dạng...</translation>
@@ -4513,7 +4521,7 @@
 <translation id="630065524203833229">T&amp;hoát</translation>
 <translation id="6300718114348072351">Không thể tự động định cấu hình cho <ph name="PRINTER_NAME" />. Vui lòng chỉ định các tùy chọn cài đặt nâng cao cho máy in. <ph name="LINK_BEGIN" />Tìm hiểu thêm<ph name="LINK_END" /></translation>
 <translation id="6301076166764763868">Để tách biệt giữa hoạt động duyệt web cá nhân và hoạt động duyệt web của <ph name="EXISTING_USER" />, hãy tạo một hồ sơ mới cho <ph name="NEW_USER" /></translation>
-<translation id="630292539633944562">Nội dung đề xuất thông tin cá nhân</translation>
+<translation id="630292539633944562">Thông tin cá nhân đề xuất</translation>
 <translation id="6305607932814307878">Chính sách toàn cầu:</translation>
 <translation id="6307990684951724544">Hệ thống đang bận</translation>
 <translation id="6308077700132376815">Chặn hình ảnh</translation>
@@ -4709,6 +4717,7 @@
 <translation id="6532527800157340614">Không đăng nhập được do không thể lấy mã truy cập. Vui lòng kiểm tra kết nối mạng rồi thử lại.</translation>
 <translation id="6532663472409656417">Do doanh nghiệp đăng ký</translation>
 <translation id="6535331821390304775">Luôn cho phép <ph name="ORIGIN" /> mở loại đường liên kết này trong ứng dụng liên kết</translation>
+<translation id="6537613839935722475">Tên có thể chứa chữ cái, số và dấu gạch nối (-)</translation>
 <translation id="6538635548667167211">Chế độ sử dụng dữ liệu hiện tại là Dữ liệu</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />Lưu ý:<ph name="END_BOLD" /> Chỉ bật nếu bạn biết mình đang làm gì hoặc nếu bạn đã được yêu cầu bật vì việc thu thập dữ liệu có thể giảm hiệu suất hoạt động.</translation>
 <translation id="6541638731489116978">Trang web này đã bị chặn sử dụng cảm biến chuyển động.</translation>
@@ -4797,6 +4806,7 @@
 <translation id="6650234781371031356">Mật khẩu bạn dùng cho <ph name="WEBSITE" /> được lưu trữ trên thiết bị này và trong Tài khoản Google của bạn. Bạn muốn xóa bản nào?</translation>
 <translation id="665061930738760572">Mở trong cửa sổ &amp;mới</translation>
 <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="6654509035557065241">Đặt mạng ưu tiên</translation>
 <translation id="6655190889273724601">Chế độ dành cho nhà phát triển</translation>
@@ -5400,6 +5410,7 @@
 <translation id="7375235221357833624">{0,plural, =1{Cập nhật thiết bị trong vòng một giờ}other{Cập nhật thiết bị trong vòng # giờ}}</translation>
 <translation id="7376553024552204454">Đánh dấu con trỏ chuột khi đang di chuyển</translation>
 <translation id="7377451353532943397">Tiếp tục chặn quyền sử dụng cảm biến</translation>
+<translation id="7378611153938412599">Mật khẩu yếu thường dễ đoán. Hãy nhớ tạo mật khẩu mạnh. <ph name="BEGIN_LINK" />Xem các mẹo bảo mật khác.<ph name="END_LINK" /></translation>
 <translation id="73786666777299047">Mở cửa hàng Chrome trực tuyến</translation>
 <translation id="7378812711085314936">Nhận kết nối dữ liệu</translation>
 <translation id="7380622428988553498">Tên thiết bị chứa các ký tự không hợp lệ</translation>
@@ -5924,6 +5935,7 @@
 <translation id="7959074893852789871">Tệp có chứa nhiều chứng chỉ, một vài chứng chỉ trong đó chưa được nhập:</translation>
 <translation id="7961015016161918242">Không bao giờ</translation>
 <translation id="7963001036288347286">Tăng tốc bàn di chuột</translation>
+<translation id="7963608432878156675">Tên này hiển thị với những thiết bị khác khi kết nối mạng và Bluetooth</translation>
 <translation id="7963826112438303517">Trợ lý sử dụng những bản ghi âm này cũng như các lệnh thoại để tạo và cập nhật mẫu giọng nói của bạn. Mẫu này chỉ được lưu trữ trên các thiết bị đã bật tính năng Voice Match. Bạn có thể xem hoặc đào tạo lại hoạt động bằng giọng nói trong mục Cài đặt Trợ lý.</translation>
 <translation id="7966241909927244760">S&amp;ao chép địa chỉ hình ảnh</translation>
 <translation id="7966571622054096916">{COUNT,plural, =1{1 mục trong danh sách dấu trang}other{{COUNT} mục trong danh sách dấu trang}}</translation>
@@ -6388,6 +6400,7 @@
 <translation id="850875081535031620">Không tìm thấy phần mềm độc hại nào</translation>
 <translation id="8509177919508253835">Đặt lại khóa bảo mật và tạo mã PIN</translation>
 <translation id="8509646642152301857">Tải xuống từ điển kiểm tra lỗi chính tả không thành công.</translation>
+<translation id="8512396579636492893">{COUNT,plural, =0{Không phát hiện thấy mật khẩu yếu}=1{Phát hiện thấy {COUNT} mật khẩu yếu}other{Phát hiện thấy {COUNT} mật khẩu yếu}}</translation>
 <translation id="8512476990829870887">Kết thúc quá trình</translation>
 <translation id="851263357009351303">Luôn cho phép <ph name="HOST" /> hiển thị hình ảnh</translation>
 <translation id="8513108775083588393">Tự động xoay</translation>
diff --git a/chrome/app/resources/generated_resources_zh-CN.xtb b/chrome/app/resources/generated_resources_zh-CN.xtb
index e38c69c..84672eab 100644
--- a/chrome/app/resources/generated_resources_zh-CN.xtb
+++ b/chrome/app/resources/generated_resources_zh-CN.xtb
@@ -953,7 +953,7 @@
 <translation id="2090165459409185032">要恢复您的帐号信息,请访问 google.com/accounts/recovery</translation>
 <translation id="2090876986345970080">系统安全设置</translation>
 <translation id="2091887806945687916">声音</translation>
-<translation id="209539936453343974">如果您要设置家长控制,孩子必须有一个由家长管理的 Google 帐号。通过 <ph name="DEVICE_TYPE_PLURAL" />,家长可以使用 Family Link 应用来设定设备使用时限、允许/禁止访问网站以及执行其他操作。家长还可于需要时添加学校帐号,以方便孩子在 Google 课堂等网站上完成学校作业。</translation>
+<translation id="209539936453343974">如果您要设置家长控制功能,孩子必须有一个由家长管理的 Google 帐号。通过 <ph name="DEVICE_TYPE_PLURAL" />,家长可以使用 Family Link 应用来设定设备使用时限、允许/禁止访问网站以及执行其他操作。家长还可于需要时添加学校帐号,以方便孩子在 Google 课堂等网站上完成学校作业。</translation>
 <translation id="2096715839409389970">清除第三方 Cookie</translation>
 <translation id="2097372108957554726">您需要登录 Chrome 才能注册新设备</translation>
 <translation id="2098805196501063469">检查其余的密码</translation>
@@ -2342,7 +2342,7 @@
 <translation id="3713047097299026954">此安全密钥不含任何登录数据</translation>
 <translation id="3714195043138862580">此演示设备目前处于“已取消配置”状态。</translation>
 <translation id="3714633008798122362">网络日历</translation>
-<translation id="3715954932774762075">支持多种语言的应用和网站将会使用此列表中第一种受支持的语言。这些偏好设置会与您的浏览器设置同步。<ph name="BEGIN_LINK_LEARN_MORE" />了解详情<ph name="END_LINK_LEARN_MORE" /></translation>
+<translation id="3715954932774762075">支持多种语言的应用和网站将会使用此列表中第一项受支持的语言。这些偏好设置会与您的浏览器设置同步。<ph name="BEGIN_LINK_LEARN_MORE" />了解详情<ph name="END_LINK_LEARN_MORE" /></translation>
 <translation id="3719826155360621982">首页</translation>
 <translation id="372062398998492895">CUPS</translation>
 <translation id="3721119614952978349">您与 Google</translation>
@@ -2503,7 +2503,7 @@
 <translation id="3882165008614329320">来自摄像头或文件的现有视频</translation>
 <translation id="3886446263141354045">系统已将您想访问此网站的请求发送给<ph name="NAME" /></translation>
 <translation id="3888550877729210209">使用“<ph name="LOCK_SCREEN_APP_NAME" />”创建记事</translation>
-<translation id="3890064827463908288">您需要开启 Chrome 同步才能使用 Wi-Fi 同步</translation>
+<translation id="3890064827463908288">您需要开启 Chrome 同步才能使用 Wi-Fi 同步功能</translation>
 <translation id="3892414795099177503">添加 OpenVPN / L2TP…</translation>
 <translation id="3893536212201235195">读取和更改您的无障碍设置</translation>
 <translation id="3893630138897523026">ChromeVox(语音反馈)</translation>
@@ -3774,7 +3774,7 @@
 <translation id="5449588825071916739">为所有标签页添加书签</translation>
 <translation id="5449716055534515760">关闭窗口(&amp;D)</translation>
 <translation id="5452974209916053028">当前的无痕式会话:<ph name="RECENT_PERMISSIONS_CHANGE_SENTENCE_START" />、<ph name="RECENT_PERMISSIONS_CHANGE_1" />、<ph name="RECENT_PERMISSIONS_CHANGE_2" /></translation>
-<translation id="5454005855577728171">“实时字幕”气泡沿水平方向移动了 <ph name="POSITION_ON_SCREEN_FROM_LEFT" />%,沿垂直方向移动了 <ph name="POSITION_ON_SCREEN_FROM_TOP" />%</translation>
+<translation id="5454005855577728171">“实时字幕”气泡向右移动了 <ph name="POSITION_ON_SCREEN_FROM_LEFT" />%,向下移动了 <ph name="POSITION_ON_SCREEN_FROM_TOP" />%</translation>
 <translation id="5454166040603940656">提供方:<ph name="PROVIDER" /></translation>
 <translation id="5457113250005438886">无效</translation>
 <translation id="5457459357461771897">读取和删除您计算机上的照片、音乐和其他媒体</translation>
@@ -5019,7 +5019,7 @@
 <translation id="6922745772873733498">请输入 PIN 码以进行打印</translation>
 <translation id="6923132443355966645">滚动/点击</translation>
 <translation id="6923633482430812883">装载共享时出错。请检查您要连接的文件服务器是否支持 SMBv2 或更高版本。</translation>
-<translation id="6929126689972602640">学校帐号不支持家长控制。如果您想添加学校帐号,让孩子能够访问 Google 课堂及其他网站以在家中完成学校作业,请先使用孩子的个人帐号登录。您可于需要时再在设置中添加学校帐号。</translation>
+<translation id="6929126689972602640">学校帐号不支持家长控制功能。如果您想添加学校帐号,让孩子能够访问 Google 课堂及其他网站以在家中完成学校作业,请先使用孩子的个人帐号登录。您可于需要时再在设置中添加学校帐号。</translation>
 <translation id="6929760895658557216">Okay Google</translation>
 <translation id="6930036377490597025">外部安全密钥或内置传感器</translation>
 <translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{有 1 个扩展程序已被拒}other{有 # 个扩展程序已被拒}}</translation>
@@ -5583,7 +5583,7 @@
 <translation id="7607002721634913082">已暂停</translation>
 <translation id="7608810328871051088">Android 偏好设置</translation>
 <translation id="7609148976235050828">请连接到互联网,然后重试。</translation>
-<translation id="7612655942094160088">启用已连接的手机功能。</translation>
+<translation id="7612655942094160088">启用与已连接的手机相关的功能。</translation>
 <translation id="7614260613810441905">在网站想要修改您设备上的文件或文件夹时先询问您(推荐)</translation>
 <translation id="761530003705945209">备份到 Google 云端硬盘。您随时可以轻松地恢复数据或更换设备。您的备份内容包含应用数据。您的备份内容将上传到 Google 并使用您的 Google 帐号密码进行加密。</translation>
 <translation id="7615365294369022248">添加帐号时出错</translation>
@@ -5764,7 +5764,7 @@
 <translation id="7798844538707273832">已自动禁用<ph name="PERMISSION" /></translation>
 <translation id="7799299114731150374">已成功设置壁纸</translation>
 <translation id="7800518121066352902">逆时针旋转(&amp;O)</translation>
-<translation id="7802539296536804623">不在本页上显示卡片</translation>
+<translation id="7802539296536804623">不在此页上显示卡片</translation>
 <translation id="780301667611848630">不用了,谢谢</translation>
 <translation id="7804072833593604762">已关闭标签页</translation>
 <translation id="7805768142964895445">状态</translation>
@@ -7068,6 +7068,6 @@
 <translation id="994289308992179865">循环(&amp;L)</translation>
 <translation id="995782501881226248">YouTube</translation>
 <translation id="996250603853062861">正在建立安全连接...</translation>
-<translation id="99731366405731005">您需要开启 <ph name="LINK1_BEGIN" />Chrome 同步<ph name="LINK1_END" />才能使用 Wi-Fi 同步。<ph name="LINK2_BEGIN" />了解详情<ph name="LINK2_END" /></translation>
+<translation id="99731366405731005">您需要开启 <ph name="LINK1_BEGIN" />Chrome 同步<ph name="LINK1_END" />才能使用 Wi-Fi 同步功能。<ph name="LINK2_BEGIN" />了解详情<ph name="LINK2_END" /></translation>
 <translation id="998747458861718449">检查(&amp;N)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/app/resources/generated_resources_zh-HK.xtb b/chrome/app/resources/generated_resources_zh-HK.xtb
index 3c420e54..e897f0b8 100644
--- a/chrome/app/resources/generated_resources_zh-HK.xtb
+++ b/chrome/app/resources/generated_resources_zh-HK.xtb
@@ -928,6 +928,7 @@
 <translation id="204914487372604757">建立捷徑</translation>
 <translation id="2050339315714019657">直向</translation>
 <translation id="2053312383184521053">閒置狀態數據</translation>
+<translation id="2054665754582400095">你的使用狀態</translation>
 <translation id="2055585478631012616">您將會從這些網站 (包括已開啟的分頁) 登出</translation>
 <translation id="205560151218727633">「Google 助理」標誌</translation>
 <translation id="2058456167109518507">偵測到的裝置</translation>
@@ -1214,6 +1215,7 @@
 <translation id="2387052489799050037">前往主畫面</translation>
 <translation id="2387458720915042159">Proxy 連接類型</translation>
 <translation id="2390347491606624519">無法連線至 Proxy,請重新登入</translation>
+<translation id="2390782873446084770">Wi-Fi 同步處理</translation>
 <translation id="2391082728065870591">傳送意見反映報告</translation>
 <translation id="2391419135980381625">標準字型</translation>
 <translation id="2392163307141705938">您已達到家長為 <ph name="IDS_SHORT_PRODUCT_NAME" /> 設定的使用時間限制。</translation>
@@ -1869,6 +1871,7 @@
 <translation id="3157931365184549694">還原</translation>
 <translation id="3158033540161634471">設定指紋</translation>
 <translation id="3159493096109238499">米黃色</translation>
+<translation id="3159978855457658359">編輯裝置名稱</translation>
 <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (硬件憑證支援)</translation>
 <translation id="3161522574479303604">所有語言</translation>
 <translation id="3162853326462195145">學校帳戶</translation>
@@ -3229,6 +3232,7 @@
 <translation id="4761104368405085019">使用您的麥克風</translation>
 <translation id="4762718786438001384">裝置磁碟的儲存空間嚴重不足</translation>
 <translation id="4763408175235639573">系統在您瀏覽此網頁時已設定下列 Cookie</translation>
+<translation id="4764368918650455114">請確認兩部裝置都已解鎖且彼此相鄰,並已開啟藍牙功能。如果要與 Chromebook 分享內容,請確認該 Chromebook 已開啟鄰近分享功能 (按一下電腦右下角顯示的時間欄位就能開啟狀態區,接著可以從中選取鄰近分享)。<ph name="LINK_BEGIN" />瞭解詳情<ph name="LINK_END" /></translation>
 <translation id="4765582662863429759">允許「Android 訊息」由您的手機轉送短訊至 Chromebook</translation>
 <translation id="476598255842811483">除非您在裝置上開啟「咫尺共享」,否則沒有人可與您分享內容</translation>
 <translation id="4768332406694066911">您具備下列組織的識別憑證</translation>
@@ -3391,6 +3395,7 @@
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">您的管理員已安裝此應用程式。</translation>
 <translation id="4964455510556214366">排列方式</translation>
+<translation id="496446150016900060">將 Wi-Fi 網路同步至你的手機</translation>
 <translation id="4965808351167763748">您確定要設定此裝置以執行 Hangouts Meet 嗎?</translation>
 <translation id="496888482094675990">「檔案」應用程式可供快速存取您存放在「Google 雲端硬碟」、外部儲存空間或 Chrome 作業系統裝置中的檔案。</translation>
 <translation id="4971412780836297815">完成後開啟</translation>
@@ -3697,6 +3702,7 @@
 <translation id="5341980496415249280">正在封裝,請稍候…</translation>
 <translation id="5342091991439452114">PIN 必須至少有 <ph name="MINIMUM" /> 位數字</translation>
 <translation id="5344036115151554031">正在還原 Linux</translation>
+<translation id="5345916423802287046">當你登入時啟動應用程式</translation>
 <translation id="5350293332385664455">關閉「Google 助理」</translation>
 <translation id="535123479159372765">從其他裝置複製的文字</translation>
 <translation id="5352033265844765294">時間戳記</translation>
@@ -4006,6 +4012,7 @@
 <translation id="5704875434923668958">同步至</translation>
 <translation id="5705005699929844214">一律顯示無障礙功能選項</translation>
 <translation id="5705882733397021510">返回</translation>
+<translation id="5707117624115653804">針對支援這項設定的應用程式和網站,自訂字幕大小和風格</translation>
 <translation id="5707185214361380026">無法載入下列來源的擴充功能:</translation>
 <translation id="5708171344853220004">Microsoft 主要名稱</translation>
 <translation id="5709557627224531708">將 Chrome 設為預設瀏覽器</translation>
@@ -4169,6 +4176,7 @@
 <translation id="5904614460720589786">設定發生問題,因此無法設定 <ph name="APP_NAME" />。請聯絡您的管理員。錯誤代碼:<ph name="ERROR_CODE" />。</translation>
 <translation id="5906655207909574370">即將更新至最新版本!重新啟動您的裝置即可完成更新程序。</translation>
 <translation id="5906732635754427568">系統會從裝置中移除與此應用程式相關的資料。</translation>
+<translation id="5908474332780919512">當你登入時啟動應用程式</translation>
 <translation id="5908695239556627796">滑鼠捲動速度</translation>
 <translation id="5908769186679515905">禁止網站執行 Flash</translation>
 <translation id="5910363049092958439">另存圖片為(&amp;V)…</translation>
@@ -4708,6 +4716,7 @@
 <translation id="6532527800157340614">無法擷取您的存取憑證,因此無法登入。請檢查您的網絡連線,然後再試一次。</translation>
 <translation id="6532663472409656417">已註冊企業</translation>
 <translation id="6535331821390304775">永遠允許 <ph name="ORIGIN" /> 使用相關聯的應用程式開啟這類連結</translation>
+<translation id="6537613839935722475">名稱可以包含字母、數字和連字號 (-)</translation>
 <translation id="6538635548667167211">目前嘅數據用量設定係「用流動數據」</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />注意:<ph name="END_BOLD" />除非您瞭解這項功能的用途或是收到相關指示,否則請不要啟用這項功能,因為收集數據可能會導致系統效能降低。</translation>
 <translation id="6541638731489116978">此網站被禁止存取您的動作感應器。</translation>
@@ -4796,6 +4805,7 @@
 <translation id="6650234781371031356">您已將 <ph name="WEBSITE" /> 的密碼儲存在此裝置和 Google 帳戶中。您要刪除哪一個密碼?</translation>
 <translation id="665061930738760572">在新視窗中開啟(&amp;N)</translation>
 <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="6654509035557065241">偏好網絡</translation>
 <translation id="6655190889273724601">開發人員模式</translation>
@@ -5399,6 +5409,7 @@
 <translation id="7375235221357833624">{0,plural, =1{請在 1 小時內更新裝置}other{請在 # 小時內更新裝置}}</translation>
 <translation id="7376553024552204454">移動滑鼠時突顯滑鼠游標</translation>
 <translation id="7377451353532943397">繼續封鎖感應器存取權</translation>
+<translation id="7378611153938412599">低強度密碼很容易讓有心人士猜中,請務必建立高強度密碼。<ph name="BEGIN_LINK" />查看更多安全性提示。<ph name="END_LINK" /></translation>
 <translation id="73786666777299047">開啟 Chrome 網上應用程式商店</translation>
 <translation id="7378812711085314936">獲取數據連線</translation>
 <translation id="7380622428988553498">裝置名稱包含無效字元</translation>
@@ -5923,6 +5934,7 @@
 <translation id="7959074893852789871">檔案含有多個憑證,但某些無法匯入:</translation>
 <translation id="7961015016161918242">從來沒有</translation>
 <translation id="7963001036288347286">觸控板加速</translation>
+<translation id="7963608432878156675">這個名稱會向其他使用藍牙和網路連線的裝置顯示</translation>
 <translation id="7963826112438303517">「Google 助理」會使用這些錄音檔案和您的語音要求來建立及更新您的語音模型;語音模型只會儲存在已啟用 Voice Match 的裝置上。您可在「Google 助理」設定中查看或重新調校語音活動。</translation>
 <translation id="7966241909927244760">複製圖片位址(&amp;O)</translation>
 <translation id="7966571622054096916">{COUNT,plural, =1{書籤清單入面有 1 個項目}other{書籤清單入面有 {COUNT} 個項目}}</translation>
@@ -6386,6 +6398,7 @@
 <translation id="850875081535031620">未發現任何有害軟件</translation>
 <translation id="8509177919508253835">重設安全密鑰並建立 PIN</translation>
 <translation id="8509646642152301857">拼字檢查字典下載失敗。</translation>
+<translation id="8512396579636492893">{COUNT,plural, =0{未發現任何低強度密碼}=1{發現 {COUNT} 組低強度密碼}other{發現 {COUNT} 組低強度密碼}}</translation>
 <translation id="8512476990829870887">結束處理程序</translation>
 <translation id="851263357009351303">永遠允許 <ph name="HOST" /> 顯示圖片</translation>
 <translation id="8513108775083588393">自動旋轉</translation>
diff --git a/chrome/app/resources/generated_resources_zh-TW.xtb b/chrome/app/resources/generated_resources_zh-TW.xtb
index 727fdd89..4de83f3 100644
--- a/chrome/app/resources/generated_resources_zh-TW.xtb
+++ b/chrome/app/resources/generated_resources_zh-TW.xtb
@@ -928,6 +928,7 @@
 <translation id="204914487372604757">建立捷徑</translation>
 <translation id="2050339315714019657">直向</translation>
 <translation id="2053312383184521053">閒置狀態資料</translation>
+<translation id="2054665754582400095">你的使用狀態</translation>
 <translation id="2055585478631012616">系統會將你登出這些網站 (這項操作會套用到所有已開啟的分頁)。</translation>
 <translation id="205560151218727633">Google 助理標誌</translation>
 <translation id="2058456167109518507">偵測到裝置</translation>
@@ -1214,6 +1215,7 @@
 <translation id="2387052489799050037">前往主畫面</translation>
 <translation id="2387458720915042159">Proxy 連線類型</translation>
 <translation id="2390347491606624519">無法連線至 Proxy,請再次登入</translation>
+<translation id="2390782873446084770">Wi-Fi 同步處理</translation>
 <translation id="2391082728065870591">傳送意見回饋報告</translation>
 <translation id="2391419135980381625">標準字型</translation>
 <translation id="2392163307141705938">你已達到貴家長為 <ph name="IDS_SHORT_PRODUCT_NAME" /> 設定的使用時間限制。</translation>
@@ -1869,6 +1871,7 @@
 <translation id="3157931365184549694">還原</translation>
 <translation id="3158033540161634471">設定指紋</translation>
 <translation id="3159493096109238499">米色</translation>
+<translation id="3159978855457658359">編輯裝置名稱</translation>
 <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (使用硬體加密金鑰)</translation>
 <translation id="3161522574479303604">所有語言</translation>
 <translation id="3162853326462195145">學校帳戶</translation>
@@ -2506,7 +2509,7 @@
 <translation id="3882165008614329320">相機或檔案中的現有影片</translation>
 <translation id="3886446263141354045">你想存取這個網站的要求已傳送給<ph name="NAME" /></translation>
 <translation id="3888550877729210209">使用「<ph name="LOCK_SCREEN_APP_NAME" />」寫筆記</translation>
-<translation id="3890064827463908288">開啟 Chrome 同步功能以使用 Wi-Fi 同步功能</translation>
+<translation id="3890064827463908288">開啟 Chrome 同步功能以使用 Wi-Fi 同步處理</translation>
 <translation id="3892414795099177503">新增 OpenVPN/L2TP...</translation>
 <translation id="3893536212201235195">讀取及變更你的無障礙設定</translation>
 <translation id="3893630138897523026">ChromeVox (互動朗讀)</translation>
@@ -3228,6 +3231,7 @@
 <translation id="4761104368405085019">使用你的麥克風</translation>
 <translation id="4762718786438001384">裝置磁碟空間嚴重不足</translation>
 <translation id="4763408175235639573">系統在你瀏覽這個網頁時設定了下列 Cookie</translation>
+<translation id="4764368918650455114">請確認兩部裝置都已解鎖且彼此相鄰,並已開啟藍牙功能。如果要與 Chromebook 分享內容,請確認該 Chromebook 已開啟鄰近分享功能 (按一下電腦右下角顯示的時間欄位就能開啟狀態區,接著可以從中選取鄰近分享)。<ph name="LINK_BEGIN" />瞭解詳情<ph name="LINK_END" /></translation>
 <translation id="4765582662863429759">允許 Android 訊息將簡訊內容從手機轉送到 Chromebook</translation>
 <translation id="476598255842811483">除非你在裝置上開啟鄰近分享功能,否則沒有人可與你分享內容</translation>
 <translation id="4768332406694066911">您有這些機構核發給您的憑證</translation>
@@ -3390,6 +3394,7 @@
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">你的系統管理員已安裝此應用程式。</translation>
 <translation id="4964455510556214366">排列</translation>
+<translation id="496446150016900060">將 Wi-Fi 網路同步至你的手機</translation>
 <translation id="4965808351167763748">你確定要設定這個裝置以執行 Hangouts Meet 嗎?</translation>
 <translation id="496888482094675990">「檔案」應用程式可供快速存取你存放在 Google 雲端硬碟、外部儲存空間或 Chrome 作業系統裝置中的檔案。</translation>
 <translation id="4971412780836297815">完成後開啟</translation>
@@ -3696,6 +3701,7 @@
 <translation id="5341980496415249280">封裝中,請稍候...</translation>
 <translation id="5342091991439452114">PIN 至少需有 <ph name="MINIMUM" /> 碼</translation>
 <translation id="5344036115151554031">正在還原 Linux</translation>
+<translation id="5345916423802287046">當你登入時啟動應用程式</translation>
 <translation id="5350293332385664455">關閉 Google 助理</translation>
 <translation id="535123479159372765">從其他裝置複製的文字</translation>
 <translation id="5352033265844765294">時間戳記</translation>
@@ -3777,7 +3783,7 @@
 <translation id="5449588825071916739">將所有分頁加入書籤</translation>
 <translation id="5449716055534515760">關閉視窗(&amp;D)</translation>
 <translation id="5452974209916053028">目前的無痕模式工作階段:<ph name="RECENT_PERMISSIONS_CHANGE_SENTENCE_START" />、<ph name="RECENT_PERMISSIONS_CHANGE_1" />、<ph name="RECENT_PERMISSIONS_CHANGE_2" /></translation>
-<translation id="5454005855577728171">已將說明文字對話框橫移至 <ph name="POSITION_ON_SCREEN_FROM_LEFT" />%、下移至 <ph name="POSITION_ON_SCREEN_FROM_TOP" />%</translation>
+<translation id="5454005855577728171">已將即時字幕方塊橫移至 <ph name="POSITION_ON_SCREEN_FROM_LEFT" />%、下移至 <ph name="POSITION_ON_SCREEN_FROM_TOP" />%</translation>
 <translation id="5454166040603940656">提供者:<ph name="PROVIDER" /></translation>
 <translation id="5457113250005438886">無效</translation>
 <translation id="5457459357461771897">讀取及刪除你電腦中的相片、音樂及其他媒體</translation>
@@ -3921,7 +3927,7 @@
 <translation id="5602765853043467355">清除這個裝置的書籤、歷史記錄、密碼和其他設定</translation>
 <translation id="5605623530403479164">其他搜尋引擎</translation>
 <translation id="5605758115928394442">為了確認你的身分,系統已傳送通知到你的手機。</translation>
-<translation id="560834977503641186">Wi-Fi 同步功能,瞭解詳情</translation>
+<translation id="560834977503641186">Wi-Fi 同步處理,瞭解詳情</translation>
 <translation id="5608580678041221894">輕觸下列按鍵可調整或移動裁剪區域</translation>
 <translation id="5609231933459083978">這似乎是無效的應用程式。</translation>
 <translation id="5610038042047936818">切換至相機模式</translation>
@@ -4005,6 +4011,7 @@
 <translation id="5704875434923668958">同步到</translation>
 <translation id="5705005699929844214">一律顯示無障礙功能選項</translation>
 <translation id="5705882733397021510">返回</translation>
+<translation id="5707117624115653804">針對支援這項設定的應用程式和網站,自訂字幕大小和風格</translation>
 <translation id="5707185214361380026">無法載入下列來源的擴充功能:</translation>
 <translation id="5708171344853220004">Microsoft 主要名稱</translation>
 <translation id="5709557627224531708">將 Chrome 設為預設網路瀏覽器</translation>
@@ -4168,6 +4175,7 @@
 <translation id="5904614460720589786">配置作業發生問題,因此無法設定「<ph name="APP_NAME" />」。請與系統管理員聯絡。錯誤代碼:<ph name="ERROR_CODE" />。</translation>
 <translation id="5906655207909574370">即將更新為最新版本!重新啟動您的裝置即可完成更新程序。</translation>
 <translation id="5906732635754427568">與這個應用程式相關聯的資料會從這個裝置上移除。</translation>
+<translation id="5908474332780919512">當你登入時啟動應用程式</translation>
 <translation id="5908695239556627796">滑鼠捲動速度</translation>
 <translation id="5908769186679515905">禁止網站執行 Flash</translation>
 <translation id="5910363049092958439">另存圖片(&amp;V)...</translation>
@@ -4707,6 +4715,7 @@
 <translation id="6532527800157340614">無法擷取你的存取憑證,因此登入失敗。請檢查網路連線,然後再試一次。</translation>
 <translation id="6532663472409656417">已註冊企業</translation>
 <translation id="6535331821390304775">一律允許 <ph name="ORIGIN" /> 使用相關聯的應用程式開啟這類連結</translation>
+<translation id="6537613839935722475">名稱可以包含字母、數字和連字號 (-)</translation>
 <translation id="6538635548667167211">目前的數據用量設定是使用行動數據</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />注意:<ph name="END_BOLD" />除非你瞭解這項功能的用途或是收到相關指示,否則請不要啟用這項功能,因為收集資料可能會導致系統效能降低。</translation>
 <translation id="6541638731489116978">這個網站無法存取你的動作感應器。</translation>
@@ -4795,6 +4804,7 @@
 <translation id="6650234781371031356">你已將 <ph name="WEBSITE" /> 的密碼儲存在這部裝置上和 Google 帳戶中。你要從哪個位置刪除密碼?</translation>
 <translation id="665061930738760572">在新視窗中開啟(&amp;N)</translation>
 <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="6654509035557065241">偏好網路</translation>
 <translation id="6655190889273724601">開發人員模式</translation>
@@ -5398,6 +5408,7 @@
 <translation id="7375235221357833624">{0,plural, =1{請在 1 小時內更新裝置}other{請在 # 小時內更新裝置}}</translation>
 <translation id="7376553024552204454">滑鼠游標移動時醒目顯示</translation>
 <translation id="7377451353532943397">繼續禁止存取感應器</translation>
+<translation id="7378611153938412599">低強度密碼很容易讓有心人士猜中,請務必建立高強度密碼。<ph name="BEGIN_LINK" />查看更多安全性提示。<ph name="END_LINK" /></translation>
 <translation id="73786666777299047">開啟 Chrome 線上應用程式商店</translation>
 <translation id="7378812711085314936">取得數據連線</translation>
 <translation id="7380622428988553498">裝置名稱包含無效字元</translation>
@@ -5922,6 +5933,7 @@
 <translation id="7959074893852789871">檔案含有多個憑證,但某些無法匯入:</translation>
 <translation id="7961015016161918242">一律不要</translation>
 <translation id="7963001036288347286">觸控板加速</translation>
+<translation id="7963608432878156675">這個名稱會向其他使用藍牙和網路連線的裝置顯示</translation>
 <translation id="7963826112438303517">Google 助理會使用這些錄音檔案和你的語音要求,建立及更新你的語音模型;語音模型只會儲存在已啟用 Voice Match 的裝置上。你可在 Google 助理設定頁面中查看或重新調校語音活動。</translation>
 <translation id="7966241909927244760">複製圖片位址(&amp;O)</translation>
 <translation id="7966571622054096916">{COUNT,plural, =1{書籤清單中有 1 個項目}other{書籤清單中有 {COUNT} 個項目}}</translation>
@@ -6385,6 +6397,7 @@
 <translation id="850875081535031620">未發現有害軟體</translation>
 <translation id="8509177919508253835">重設安全金鑰並建立 PIN 碼</translation>
 <translation id="8509646642152301857">拼字檢查字典下載失敗。</translation>
+<translation id="8512396579636492893">{COUNT,plural, =0{未發現任何低強度密碼}=1{發現 {COUNT} 組低強度密碼}other{發現 {COUNT} 組低強度密碼}}</translation>
 <translation id="8512476990829870887">結束處理程序</translation>
 <translation id="851263357009351303">永遠允許 <ph name="HOST" /> 顯示圖片</translation>
 <translation id="8513108775083588393">自動旋轉</translation>
@@ -7071,6 +7084,6 @@
 <translation id="994289308992179865">循環播放(&amp;L)</translation>
 <translation id="995782501881226248">YouTube</translation>
 <translation id="996250603853062861">正在建立安全連線...</translation>
-<translation id="99731366405731005">開啟 <ph name="LINK1_BEGIN" />Chrome 同步功能<ph name="LINK1_END" />以使用 Wi-Fi 同步功能。<ph name="LINK2_BEGIN" />瞭解詳情<ph name="LINK2_END" /></translation>
+<translation id="99731366405731005">開啟 <ph name="LINK1_BEGIN" />Chrome 同步功能<ph name="LINK1_END" />以使用 Wi-Fi 同步處理。<ph name="LINK2_BEGIN" />瞭解詳情<ph name="LINK2_END" /></translation>
 <translation id="998747458861718449">檢查(&amp;N)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/app/resources/generated_resources_zu.xtb b/chrome/app/resources/generated_resources_zu.xtb
index 3f21084..97e62204 100644
--- a/chrome/app/resources/generated_resources_zu.xtb
+++ b/chrome/app/resources/generated_resources_zu.xtb
@@ -926,6 +926,7 @@
 <translation id="204914487372604757">Dala isinqamuleli</translation>
 <translation id="2050339315714019657">Ukuma ngobude</translation>
 <translation id="2053312383184521053">Idatha yesimo sokungenzi lutho</translation>
+<translation id="2054665754582400095">Ubukhona bakho</translation>
 <translation id="2055585478631012616">Uzokhishwa kulawa masayithi, kufaka phakathi kumathebhu avuliwe</translation>
 <translation id="205560151218727633">Ilogo yomsizi we-Google</translation>
 <translation id="2058456167109518507">Idivayisi itholakele</translation>
@@ -1212,6 +1213,7 @@
 <translation id="2387052489799050037">Iya Ekhaya</translation>
 <translation id="2387458720915042159">Uhlobo loxhumo lommeleli</translation>
 <translation id="2390347491606624519">Ayikwazi ukuxhuma kummeleli, sicela ungene ngemvume futhi</translation>
+<translation id="2390782873446084770">Ukuxhumana ne-Wi-Fi</translation>
 <translation id="2391082728065870591">Thumela Umbiko Wempendulo</translation>
 <translation id="2391419135980381625">Ifonti ejwayelekile</translation>
 <translation id="2392163307141705938">Ufinyelele umkhawulo wesikhathi sakho esisethelwe umzali se-<ph name="IDS_SHORT_PRODUCT_NAME" />.</translation>
@@ -1868,6 +1870,7 @@
 <translation id="3157931365184549694">Buyisela</translation>
 <translation id="3158033540161634471">Setha izigxivizo zakho zeminwe</translation>
 <translation id="3159493096109238499">I-Beige</translation>
+<translation id="3159978855457658359">Hlela igama ledivayisi</translation>
 <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (yenziwe isipele sezingxenyekazi zekhompuyutha)</translation>
 <translation id="3161522574479303604">Zonke izilimi</translation>
 <translation id="3162853326462195145">I-akhawunti yesikole</translation>
@@ -3227,6 +3230,7 @@
 <translation id="4761104368405085019">Sebenzisa imakrofoni yakho</translation>
 <translation id="4762718786438001384">Isikhala sediski yedivayisi sincane kakhulu</translation>
 <translation id="4763408175235639573">Amakhukhi alandelayo athunyelwe ngenkathi ubuka leli khasi</translation>
+<translation id="4764368918650455114">Qiniseka ukuthi womabili amadivayisi avuliwe, asondelene, futhi avulwe i-Bluetooth. Uma wabelana nge-Chromebook, qiniseka ukuthi Inokuthumela Eduze okuvuliwe (vula indawo yesimo ngokukhetha isikhathi, bese ukhetha Ukuthumela Eduze). <ph name="LINK_BEGIN" />Funda kabanzi<ph name="LINK_END" /></translation>
 <translation id="4765582662863429759">Ivumela i-Android Messages ukwethemba imibhalo kusuka efonini yakho kuya ku-Chromebook yakho</translation>
 <translation id="476598255842811483">Akekho omunye umuntu ngaphandle kokuthi uvule Ukuthumela Eduze kudivayisi yakho</translation>
 <translation id="4768332406694066911">Unezitifiketi ezivela kulezi zinhlangano ezikukhombayo</translation>
@@ -3389,6 +3393,7 @@
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Lolu hlelo lokusebenza lufakwe umlawuli wakho.</translation>
 <translation id="4964455510556214366">Ukuhlelwa</translation>
+<translation id="496446150016900060">Vumelanisa amanethiwekhi e-Wi-Fi nefoni yakho</translation>
 <translation id="4965808351167763748">Ingabe uqinisekile ukuthi ufuna ukusetha le divayisi ukuthi isebenzise i-Hangouts Meet?</translation>
 <translation id="496888482094675990">Uhlelo lokusebenza lamafayela linikeza ukufinyelela okusheshayo kumafayela owalondoloze ku-Google Drayivu, isitoreji sangaphandle, noma idivayisi yakho ye-Chrome OS.</translation>
 <translation id="4971412780836297815">Vula uma kuqediwe</translation>
@@ -3697,6 +3702,7 @@
 <translation id="5341980496415249280">SIcela ulinde, iyapakisha...</translation>
 <translation id="5342091991439452114">Iphinikhodi kufanele okungenani kube yizinombolo ezingu-<ph name="MINIMUM" /></translation>
 <translation id="5344036115151554031">Ukubuyisela i-Linux</translation>
+<translation id="5345916423802287046">Qala uhlelo lokusebenza uma ungena ngemvume</translation>
 <translation id="5350293332385664455">Vala Umsizi we-Google</translation>
 <translation id="535123479159372765">Umbhalo ukopishwe kusuka kwenye idivayisi</translation>
 <translation id="5352033265844765294">Ukwenza isitempa sesikhathi</translation>
@@ -4007,6 +4013,7 @@
 <translation id="5704875434923668958">Vumelanisa ku-</translation>
 <translation id="5705005699929844214">Njalo nje bonisa izinketho zokufinyeleleka</translation>
 <translation id="5705882733397021510">Emuva</translation>
+<translation id="5707117624115653804">Yenza ngendlela oyifisayo usayizi wegama-ncazo nesitayela sezinhlelo zakho zokusebenza namasayithi asekela leli sethingi</translation>
 <translation id="5707185214361380026">Yehlulekile ukulayisha isandiso kusuka ku-:</translation>
 <translation id="5708171344853220004">Igama lothisha nhloko we-Microsoft</translation>
 <translation id="5709557627224531708">Setha i-Chrome njengesiphequluli sakho esizenzakalelayo</translation>
@@ -4170,6 +4177,7 @@
 <translation id="5904614460720589786">Ayikwazanga ukusetha i-<ph name="APP_NAME" /> ngenxa yenkinga yokulungiselela. Sicela uxhumane nomlawuli wakho. Ikhodi yephutha: <ph name="ERROR_CODE" />.</translation>
 <translation id="5906655207909574370">Kucishe isesikhathini! Qala kabusha idivayisi yakho ukuze uqedele ukubuyekeza.</translation>
 <translation id="5906732635754427568">Idatha ephathelaniswe nalolu hlelo lokusebenza izosuswa kule divayisi.</translation>
+<translation id="5908474332780919512">Qala Uhlelo Lokusebenza Uma Ungena Ngemvume</translation>
 <translation id="5908695239556627796">Isivinini sokuskrola segundane</translation>
 <translation id="5908769186679515905">Vimbela amasayithi kusukela ekuqaliseni i-Flash</translation>
 <translation id="5910363049092958439">Londoloza isithombe njenge...</translation>
@@ -4709,6 +4717,7 @@
 <translation id="6532527800157340614">Ukungena ngemvume kwehlulekile ngoba ithokheni yakho yokufinyelela ayikwazanga ukubuyiswa. Sicela uhlole ukuxhumana kwenethiwekhi yakho bese uyazama futhi.</translation>
 <translation id="6532663472409656417">Ibhizinisi libhaliswe</translation>
 <translation id="6535331821390304775">Njalo vumela i-<ph name="ORIGIN" /> ukuvula izixhumanisi zalolu hlobo kuhlelo lokusebenza oluhlobene</translation>
+<translation id="6537613839935722475">Igama lingasebenzisa izinhlamvu, izinombolo, namahayifeni (-)</translation>
 <translation id="6538635548667167211">Isethingi lokusetshenziswa kwedatha kwamanje Liyidatha</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />Yazi:<ph name="END_BOLD" /> Nika amandla kuphela uma wazi ukuthi wenzani noma uma uceliwe ukwenza njalo, njengoba ukuqoqwa kwedatha kungehlisa ukusebenza.</translation>
 <translation id="6541638731489116978">Leli sayithi livinjelwe kusukela ekufinyeleleni kuzinzwa zakho zokunyakaza.</translation>
@@ -4797,6 +4806,7 @@
 <translation id="6650234781371031356">Iphasiwedi yakho ye-<ph name="WEBSITE" /> igcinwe kule divayisi futhi naku-akhawunti yakho ye-Google. Iyiphi ofuna ukuyisusa?</translation>
 <translation id="665061930738760572">Vula kuwindi &amp;elisha</translation>
 <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="6654509035557065241">Ncamela inethiwekhi</translation>
 <translation id="6655190889273724601">Imodi yonjiniyela</translation>
@@ -5400,6 +5410,7 @@
 <translation id="7375235221357833624">{0,plural, =1{Buyekeza idivayisi phakathi nehora}one{Buyekeza idivayisi phakathi namahora angu-#}other{Buyekeza idivayisi phakathi namahora angu-#}}</translation>
 <translation id="7376553024552204454">Gqamisa isikhombisi segundane uma sinyakaza</translation>
 <translation id="7377451353532943397">Qhubeka uvimbele ukufinyelela kwenzwa</translation>
+<translation id="7378611153938412599">Amaphasiwedi angaqinile aqageleka kalula. Qiniseka ukuthi udala iphasiwedi eqinile. <ph name="BEGIN_LINK" />Bona amathiphu amaningi okuvikeleka.<ph name="END_LINK" /></translation>
 <translation id="73786666777299047">Vula isitolo sewebhu se-Chrome</translation>
 <translation id="7378812711085314936">Thola uxhumo lwedatha</translation>
 <translation id="7380622428988553498">Igama ledivayisi liqukethe izinhlamvu ezingavumelekile</translation>
@@ -5924,6 +5935,7 @@
 <translation id="7959074893852789871">Ifayela beliqukethe izitifiketi eziningi, ezinye zazo ezingazange zingeniswe:</translation>
 <translation id="7961015016161918242">Ngeke</translation>
 <translation id="7963001036288347286">Ukusheshisa iphedi yokuthinta</translation>
+<translation id="7963608432878156675">Leli gama libonakala kwamanye amadivayisi e-Bluetooth kanye nakumaxhumo enethiwekhi</translation>
 <translation id="7963826112438303517">Umsizi wakho usebenzisa lokhu kurekhoda nesicelo sakho esikhulunywayo ukudala nokubuyekeza imodeli yezwi lakho, okulondolozwa kuphela kumadivayisi lapho uvule khona i-Voice Match. Buka noma phinda uqeqeshe umsebenzi wezwi kuzilungiselelo zomsizi.</translation>
 <translation id="7966241909927244760">K&amp;opisha ikheli lesithombe</translation>
 <translation id="7966571622054096916">{COUNT,plural, =1{into e-1 kuhlu lwebhukhimakhi}one{izinto ezingu-{COUNT} kuhlu lwebhukhimakhi}other{izinto ezingu-{COUNT} kuhlu lwebhukhimakhi}}</translation>
@@ -6387,6 +6399,7 @@
 <translation id="850875081535031620">Alikho isofthiwe elinobungozi elitholakele</translation>
 <translation id="8509177919508253835">Setha kabusha okhiye bokuqinisekisa ubunikazi uphinde udale amaphinikhodi</translation>
 <translation id="8509646642152301857">Ukulandwa kokuhlolwa kokupelwa kwesichazamazwi kuhlulekile.</translation>
+<translation id="8512396579636492893">{COUNT,plural, =0{Akutholakalanga amaphasiwedi angaqinile}=1{Kutholakele iphasiwedi engu-{COUNT} engaqinile}one{Kutholakele amaphasiwedi angu-{COUNT} angaqinile}other{Kutholakele amaphasiwedi angu-{COUNT} angaqinile}}</translation>
 <translation id="8512476990829870887">Qeda inqubo</translation>
 <translation id="851263357009351303">Hlala uvumela i-<ph name="HOST" /> ukuthi ibonise izithombe</translation>
 <translation id="8513108775083588393">I-auto-rotate</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ar.xtb b/chrome/app/resources/google_chrome_strings_ar.xtb
index 5728bb5..c9a4071 100644
--- a/chrome/app/resources/google_chrome_strings_ar.xtb
+++ b/chrome/app/resources/google_chrome_strings_ar.xtb
@@ -77,6 +77,7 @@
 <translation id="2871893339301912279">‏تم تسجيل دخولك إلى Chrome!</translation>
 <translation id="2885378588091291677">إدارة المهام</translation>
 <translation id="2888126860611144412">‏لمحة عن Chrome</translation>
+<translation id="2926676257163822632">‏من السهل تخمين كلمات المرور الضعيفة. يمكنك السماح لمتصفِّح Chrome <ph name="BEGIN_LINK" />بإنشاء كلمات مرور قوية وتذكُّرها لك<ph name="END_LINK" />.</translation>
 <translation id="2929907241665500097">‏تعذّر تحديث Chrome بسبب حدوث خطأ. <ph name="BEGIN_LINK" />حلّ مشاكل تحديث Chrome وتعذُّر التحديثات<ph name="END_LINK" /></translation>
 <translation id="2969728957078202736">‏<ph name="PAGE_TITLE" /> - Chrome - تسجيل الدخول إلى الشبكة</translation>
 <translation id="3037838751736561277">‏Google Chrome في وضع الخلفية.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_az.xtb b/chrome/app/resources/google_chrome_strings_az.xtb
index 2f01a38a..77a1113 100644
--- a/chrome/app/resources/google_chrome_strings_az.xtb
+++ b/chrome/app/resources/google_chrome_strings_az.xtb
@@ -77,6 +77,7 @@
 <translation id="2871893339301912279">Chrome'a daxil olmusunuz!</translation>
 <translation id="2885378588091291677">Tapşırıq Meneceri</translation>
 <translation id="2888126860611144412">Chrome haqqında</translation>
+<translation id="2926676257163822632">Zəif parolları tapmaq asandır. Chrome'un <ph name="BEGIN_LINK" />sizin üçün güclü parollar yaratmasına və yadda saxlamasına<ph name="END_LINK" /> imkan verin.</translation>
 <translation id="2929907241665500097">Chrome güncəllənmədi, xəta baş verdi. <ph name="BEGIN_LINK" />Chrome'un güncəllənmə problemlərini və alınmayan güncəllənmələri həll edin.<ph name="END_LINK" /></translation>
 <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> - Şəbəkəyə Giriş - Chrome</translation>
 <translation id="3037838751736561277">Google Chrome arxa fon rejimindədir.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_be.xtb b/chrome/app/resources/google_chrome_strings_be.xtb
index 130e6a4b..8b36e72 100644
--- a/chrome/app/resources/google_chrome_strings_be.xtb
+++ b/chrome/app/resources/google_chrome_strings_be.xtb
@@ -79,6 +79,7 @@
 <translation id="2871893339301912279">Вы ўвайшлі ў Chrome!</translation>
 <translation id="2885378588091291677">Менеджар заданняў</translation>
 <translation id="2888126860611144412">Пра браўзер Chrome</translation>
+<translation id="2926676257163822632">Ненадзейныя паролі лёгка адгадаць. Дазвольце Chrome <ph name="BEGIN_LINK" />ствараць для вас надзейныя паролі і запамінаць іх<ph name="END_LINK" />.</translation>
 <translation id="2929907241665500097">Chrome не абнавіўся. Нешта пайшло не так. <ph name="BEGIN_LINK" />Выправіце праблемы з абнаўленнем Chrome і памылкі абнаўлення.<ph name="END_LINK" /></translation>
 <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> – Уваход у сетку – Chrome</translation>
 <translation id="3037838751736561277">Google Chrome працуе ў фонавым рэжыме.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_bg.xtb b/chrome/app/resources/google_chrome_strings_bg.xtb
index ef96823..cc10779 100644
--- a/chrome/app/resources/google_chrome_strings_bg.xtb
+++ b/chrome/app/resources/google_chrome_strings_bg.xtb
@@ -77,6 +77,7 @@
 <translation id="2871893339301912279">Влязохте в Chrome!</translation>
 <translation id="2885378588091291677">Диспечер на задачите</translation>
 <translation id="2888126860611144412">Всичко за Chrome</translation>
+<translation id="2926676257163822632">Ненадеждните пароли са лесни за отгатване. Използвайте Chrome <ph name="BEGIN_LINK" />за създаване и запомняне на надеждни пароли за профилите ви<ph name="END_LINK" />.</translation>
 <translation id="2929907241665500097">Chrome не се актуализира, защото нещо се обърка. <ph name="BEGIN_LINK" />Отстранете проблеми с актуализирането на Chrome и неуспешни актуализации<ph name="END_LINK" />.</translation>
 <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> – Вход в мрежата – Chrome</translation>
 <translation id="3037838751736561277">Google Chrome работи на заден план.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_bn.xtb b/chrome/app/resources/google_chrome_strings_bn.xtb
index dd180cb..e1c8cbb 100644
--- a/chrome/app/resources/google_chrome_strings_bn.xtb
+++ b/chrome/app/resources/google_chrome_strings_bn.xtb
@@ -6,6 +6,7 @@
 <translation id="1051826050538111504">আপনার কম্পিউটারে ক্ষতিকারক সফ্টওয়্যার পাওয়া গেছে। Chrome এটিকে সরিয়ে দিতে পারে, আপনার সেটিংস রিস্টোর করতে পারে এবং বিভিন্ন এক্সটেনশন বন্ধ করে দিতে পারে যাতে আপনার ব্রাউজার আবার স্বাভাবিকভাবে কাজ করে।</translation>
 <translation id="1065672644894730302">আপনার অভিরুচিগুলি পড়া যাবে না৷ কিছু বৈশিষ্ট্য অনুপলব্ধ থাকতে পারে ও অভিরুচিগুলিতে করা পরিবর্তনগুলি সংরক্ষিত হবে না৷</translation>
 <translation id="1088300314857992706"><ph name="USER_EMAIL_ADDRESS" /> পূর্বে Chrome ব্যবহার করছিলেন</translation>
+<translation id="1088654056000736875">Chrome আপনার কম্পিউটার থেকে ক্ষতিকারক সফ্টওয়্যার সরিয়ে দিচ্ছে…</translation>
 <translation id="1097330777386562916">Chrome বন্ধ করার সময় কুকি ও সাইটের ডেটা মুছে দিন</translation>
 <translation id="110877069173485804">এটি হল আপনার Chrome</translation>
 <translation id="1125124144982679672">Chrome কে ব্যবহার করছেন?</translation>
@@ -16,6 +17,7 @@
 <translation id="1355000804395496115">অফিস ও ব্যক্তিগত ব্রাউজিং আলাদা রাখতে অথবা একাধিক ব্যবহারকারী এই ডিভাইস ব্যবহার করলে, প্রত্যেকের জন্য Chrome-এ আলাদা প্রোফাইল তৈরি করুন</translation>
 <translation id="137466361146087520">Google Chrome বিটা</translation>
 <translation id="1399397803214730675">এই কম্পিউটারটিতে ইতিমধ্যে Google Chrome-এর অতি সাম্প্রতিক ভার্সন রয়েছে৷ যদি সফ্টওয়্যারটি কাজ না করে তবে দয়া করে Google Chrome আনইনস্টল করুন এবং এটি আবার ডাউনলোড করুন৷</translation>
+<translation id="140541193409212341">Chrome আপনার কম্পিউটারে ক্ষতিকারক সফ্টওয়্যার আছে কিনা চেক করার সময় সমস্যা হয়েছে</translation>
 <translation id="1434626383986940139">Chrome Canary অ্যাপ্লিকেশানগুলি</translation>
 <translation id="1513277449617685876">ব্যক্তিগত ব্রাউজিং থেকে <ph name="NEW_USER" /> হিসেবে ব্রাউজিংকে আলাদা রাখতে Chrome-এ নতুন প্রোফাইল তৈরি করুন</translation>
 <translation id="1553358976309200471">Chrome আপডেট করুন</translation>
@@ -57,6 +59,7 @@
 <translation id="2429317896000329049">আপনার ডোমেনে সিঙ্ক উপলভ্য না থাকার কারণে Google Chrome সিঙ্ক করতে পারেনি৷</translation>
 <translation id="2467438592969358367">Google Chrome আপনার পাসওয়ার্ড এক্সপোর্ট করতে চাইছে। অনুমতি দিতে Windows এর পাসওয়ার্ড টাইপ করুন।</translation>
 <translation id="2485422356828889247">আনইনস্টল</translation>
+<translation id="252502352004572774">আপনার কম্পিউটারে ক্ষতিকারক সফ্টওয়্যার আছে কিনা তা Chrome চেক করছে…</translation>
 <translation id="2534507159460261402">Google Pay (Chrome এ কপি করা হয়েছে)</translation>
 <translation id="2580411288591421699">বর্তমানে Google Chrome-এর যে ভার্সনটি চলছে সেটি ইনস্টল করা যায় না৷ অনুগ্রহ করে Google Chrome বন্ধ করুন এবং আবার চেষ্টা করুন৷</translation>
 <translation id="2586406160782125153">এটি এই ডিভাইস থেকে আপনার ব্রাউজিং ডেটা মুছে দেবে। আপনার ডেটা পরে পুনরুদ্ধার করার জন্য, Chrome-এ <ph name="USER_EMAIL" /> হিসেবে সাইন-ইন করুন।</translation>
@@ -111,10 +114,12 @@
 <translation id="4050175100176540509">গুরুত্বপূর্ণ নিরাপত্তা উন্নতি এবং নতুন বৈশিষ্ট্যগুলি সর্বশেষ ভার্সনে উপলভ্য।</translation>
 <translation id="4053720452172726777">Google Chrome কাস্টমাইজ ও নিয়ন্ত্রণ করুন</translation>
 <translation id="4110895483821904099">আপনার নতুন Chrome প্রোফাইল সেট আপ করুন</translation>
+<translation id="4127976662406264741">{NUM_MINS,plural, =1{Chrome আপনার কম্পিউটারে কোনও পরিচিত ক্ষতিকারক সফ্টওয়্যার খুঁজে পায়নি। শেষবার চেক করা হয়েছে: ১ মিনিট আগে।}one{Chrome আপনার কম্পিউটারে কোনও পরিচিত ক্ষতিকারক সফ্টওয়্যার খুঁজে পায়নি। শেষবার চেক করা হয়েছে: {NUM_MINS} মিনিট আগে।}other{Chrome আপনার কম্পিউটারে কোনও পরিচিত ক্ষতিকারক সফ্টওয়্যার খুঁজে পায়নি। শেষবার চেক করা হয়েছে: {NUM_MINS} মিনিট আগে।}}</translation>
 <translation id="4143243756087420366">Chrome এর নাম এবং ছবি</translation>
 <translation id="4147555960264124640">আপনি একটি পরিচালিত অ্যাকাউন্টের মাধ্যমে সাইন-ইন করছেন এবং এর অ্যাডমিনিস্ট্রেটরকে আপনার Google Chrome প্রোফাইলের উপরে নিয়ন্ত্রণ দিচ্ছেন৷ আপনার Chrome ডেটা, যেমন অ্যাপগুলি, বুকমার্কগুলি, ইতিহাস, পাসওয়ার্ডগুলি এবং অন্যান্য সেটিংস <ph name="USER_NAME" /> এতে স্থায়ীভাবে সম্পৃক্ত হবে৷ আপনি Google অ্যাকাউন্টের ড্যাশবোর্ডের মাধ্যমে এই ডেটাগুলি মুছতে পারবেন, কিন্তু আপনি অন্য একটি অ্যাকাউন্টের সাথে এই ডেটা সংশ্লিষ্ট করতে পারবেন না৷ <ph name="LEARN_MORE" /></translation>
 <translation id="4149882025268051530">ইনস্টলারটি আর্কাইভ আনকমপ্রেস করা যায়নি৷ অনুগ্রহ করে আবার Google Chrome ডাউনলোড করুন৷</translation>
 <translation id="4191857738314598978">{0,plural, =1{Chrome এক দিনের মধ্যে আবার লঞ্চ করুন}one{Chrome # দিনের মধ্যে আবার লঞ্চ করুন}other{Chrome # দিনের মধ্যে আবার লঞ্চ করুন}}</translation>
+<translation id="4205362703535890467">Chrome আপনার কম্পিউটারে কোনও পরিচিত ক্ষতিকারক সফ্টওয়্যার খুঁজে পায়নি। শেষবার চেক করা হয়েছে: গতকাল।</translation>
 <translation id="4205939740494406371">Chrome আপনার পাসওয়ার্ড চেক করতে পারছে না। ২৪ ঘণ্টা পরে আবার চেষ্টা করুন বা <ph name="BEGIN_LINK" />আপনার Google অ্যাকাউন্টে পাসওয়ার্ড চেক করুন<ph name="END_LINK" />।</translation>
 <translation id="424864128008805179">Chrome থেকে সাইন-আউট করবেন?</translation>
 <translation id="4251615635259297716">এই অ্যাকাউন্টে আপনার Chrome ডেটা লিঙ্ক করবেন?</translation>
@@ -143,6 +148,7 @@
 <translation id="4754614261631455953">Google Chrome Canary (mDNS-In)</translation>
 <translation id="4771048833395599659">এই ফাইলটি বিপজ্জনক হতে পারে, তাই Chrome এটিকে অবরুদ্ধ করেছে।</translation>
 <translation id="479167709087336770">এটি Google সার্চ-এ যে বানান পরীক্ষা করার টুল ব্যবহার করা হয় সেটিই ব্যবহার করে। আপনি ব্রাউজারে যে টেক্সট লেখেন, সেটি Google-এ পাঠানো হয়। সেটিংস থেকে আপনি এটি পরিবর্তন করতে পারেন।</translation>
+<translation id="4831688036548685548">Chrome আপনার কম্পিউটারে কোনও পরিচিত ক্ষতিকারক সফ্টওয়্যার খুঁজে পায়নি। শেষবার চেক করা হয়েছে: একটু আগে।</translation>
 <translation id="4891791193823137474">Google Chrome-কে ব্যাকগ্রাউন্ডে চলতে দিন</translation>
 <translation id="4895437082222824641">নতুন Chrome ট্যাবে লিঙ্ক খুলুন</translation>
 <translation id="4953650215774548573">আপনার ডিফল্ট ব্রাউজার হিসাবে Google Chrome-কে সেট করুন</translation>
@@ -158,6 +164,7 @@
 <translation id="532046782124376502">সতর্কতা: Google Chrome কোনও এক্সটেনশনকে আপনার ব্রাউজিং ইতিহাস রেকর্ড করা থেকে আটকাতে পারে না। ছদ্মবেশী মোডে এই এক্সটেনশনটি বন্ধ করার জন্য এই বিকল্পটি বন্ধ করুন।</translation>
 <translation id="5386244825306882791">আপনি Chrome শুরু করলে বা Omnibox থেকে সার্চ করলে কোন পৃষ্ঠাটি দেখানো হবে তাও এটি নিয়ন্ত্রণ করে।</translation>
 <translation id="5394833366792865639">একটি Chrome ট্যাব শেয়ার করুন</translation>
+<translation id="5409605318138185493">{NUM_DAYS,plural, =1{Chrome আপনার কম্পিউটারে কোনও পরিচিত ক্ষতিকারক সফ্টওয়্যার খুঁজে পায়নি। শেষবার চেক করা হয়েছে: ১ দিন আগে।}one{Chrome আপনার কম্পিউটারে কোনও পরিচিত ক্ষতিকারক সফ্টওয়্যার খুঁজে পায়নি। শেষবার চেক করা হয়েছে: {NUM_DAYS} দিন আগে।}other{Chrome আপনার কম্পিউটারে কোনও পরিচিত ক্ষতিকারক সফ্টওয়্যার খুঁজে পায়নি। শেষবার চেক করা হয়েছে: {NUM_DAYS} দিন আগে।}}</translation>
 <translation id="5430073640787465221">আপনার পছন্দের ফাইল ক্ষতিকর অথবা ভুল৷\n\nGoogle Chrome আপনার সেটিংস পুনরুদ্ধার করতে পারছে না৷</translation>
 <translation id="556024056938947818">Google Chrome পাসওয়ার্ডগুলি দেখানোর চেষ্টা করছে৷</translation>
 <translation id="5566025111015594046">Google Chrome (mDNS-In)</translation>
@@ -193,6 +200,7 @@
 <translation id="6750954913813541382">বানান ভুল ঠিক করতে, আপনি ব্রাউজারে যে টেক্সট লেখেন Chrome সেটি Google-এ পাঠায়</translation>
 <translation id="677276454032249905">তা স্বত্তেও Chrome বন্ধ করতে চান?</translation>
 <translation id="683440813066116847">mDNS ট্রাফিকের অনুমতি দিতে Google Chrome Canary এর জন্য ইনবাউন্ড নিয়ম।</translation>
+<translation id="6861451385429799394"><ph name="BEGIN_LINK" />আপনার অ্যাডমিনিস্ট্রেটর<ph name="END_LINK" /> Chrome-এর পক্ষ থেকে ক্ষতিকারক সফ্টওয়্যার চেক করার বিকল্পটি বন্ধ করে দিয়েছেন</translation>
 <translation id="6885412569789873916">Chrome বিটা অ্যাপ</translation>
 <translation id="6943584222992551122">ডিভাইসটি থেকে এই ব্যক্তির ব্রাউজিং ডেটা মুছে ফেলা হবে। ডেটা ফিরিয়ে আনতে Chrome-এ <ph name="USER_EMAIL" /> হিসেবে সাইন-ইন করুন।</translation>
 <translation id="6967962315388095737">mDNS ট্রাফিকের অনুমতি দিতে Google Chrome বিটার জন্য ইনবাউন্ড নিয়ম।</translation>
@@ -264,6 +272,7 @@
 <translation id="8834965163890861871">Google Chrome আপনার পাসওয়ার্ড এডিট করার অনুমতি চাইছে। অনুমতি দিতে আপনার Windows পাসওয়ার্ড টাইপ করুন।</translation>
 <translation id="884296878221830158">আপনি Chrome শুরু করলে বা হোম বোতামটি ক্লিক করলে কোন পৃষ্ঠাটি দেখানো হবে তাও এটি নিয়ন্ত্রণ করে।</translation>
 <translation id="8862326446509486874">সিস্টেম-স্তরীয় ইনস্টলের জন্য আপনার কাছে যথাযথ অধিকারগুলি নেই৷ অ্যাডমিনিস্ট্রেটর হিসেবে আবার ইনস্টলারটি চালানোর চেষ্টা করুন৷</translation>
+<translation id="8907906903932240086">আপনার কম্পিউটারে ক্ষতিকারক সফ্টওয়্যার আছে কিনা তা Chrome চেক করতে পারে</translation>
 <translation id="8914504000324227558">Chrome আবার লঞ্চ করুন</translation>
 <translation id="8922193594870374009"><ph name="ORIGIN" /> থেকে আপনার Android ফোনে একটি নম্বর পাঠাতে, উভয় ডিভাইসের Chrome-এ সাইন-ইন করুন।</translation>
 <translation id="8999208279178790196">{0,plural, =0{Chrome-এর একটি আপডেট উপলভ্য আছে}=1{Chrome-এর একটি আপডেট উপলভ্য আছে}one{Chrome-এর একটি আপডেট # দিন ধরে উপলভ্য আছে}other{Chrome-এর একটি আপডেট # দিন ধরে উপলভ্য আছে}}</translation>
@@ -271,6 +280,7 @@
 <translation id="9067395829937117663">Google Chrome এর জন্য Windows 7 বা উচ্চতর সংস্করণ প্রয়োজন।</translation>
 <translation id="911206726377975832">আপনার ব্রাউজিং ডেটাও মুছে দেবেন?</translation>
 <translation id="9138603949443464873">আপনার পরিবর্তনগুলি প্রয়োগ করতে, Chrome রিলঞ্চ করুন</translation>
+<translation id="9155112650704618965">{NUM_HOURS,plural, =1{Chrome আপনার কম্পিউটারে কোনও পরিচিত ক্ষতিকারক সফ্টওয়্যার খুঁজে পায়নি। শেষবার চেক করা হয়েছে: ১ ঘণ্টা আগে।}one{Chrome আপনার কম্পিউটারে কোনও পরিচিত ক্ষতিকারক সফ্টওয়্যার খুঁজে পায়নি। শেষবার চেক করা হয়েছে: {NUM_HOURS} ঘণ্টা আগে।}other{Chrome আপনার কম্পিউটারে কোনও পরিচিত ক্ষতিকারক সফ্টওয়্যার খুঁজে পায়নি। শেষবার চেক করা হয়েছে: {NUM_HOURS} ঘণ্টা আগে।}}</translation>
 <translation id="919706545465235479">সিঙ্ক শুরু করতে Chrome আপডেট করুন</translation>
 <translation id="989369509083708165">Google Chrome আপনার ডিফল্ট ব্রাউজার</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/app/resources/google_chrome_strings_bs.xtb b/chrome/app/resources/google_chrome_strings_bs.xtb
index 345d035..fafa5fe 100644
--- a/chrome/app/resources/google_chrome_strings_bs.xtb
+++ b/chrome/app/resources/google_chrome_strings_bs.xtb
@@ -79,9 +79,10 @@
 <translation id="2871893339301912279">Prijavili ste se u Chrome!</translation>
 <translation id="2885378588091291677">Upravitelj zadataka</translation>
 <translation id="2888126860611144412">O Chromeu</translation>
-<translation id="2926676257163822632">Slabe zaporke lako je pogoditi. Neka Chrome <ph name="BEGIN_LINK" />izradi i zapamti snažne zaporke za vas<ph name="END_LINK" />.</translation>
+<translation id="2926676257163822632">Slabe lozinke je lako pogoditi. Dozvolite Chromeu da <ph name="BEGIN_LINK" />kreira i zapamti jake lozinke za vas<ph name="END_LINK" />.</translation>
 <translation id="2929907241665500097">Ažuriranje Chromea nije uspjelo. Nešto nije uredu. <ph name="BEGIN_LINK" />Ispravite probleme s ažuriranjem Chromea i neuspjela ažuriranja.<ph name="END_LINK" /></translation>
 <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> – prijava na mrežu – Chrome</translation>
+<translation id="298099161970687941">Pitaj kada se otvori Chrome</translation>
 <translation id="3037838751736561277">Google Chrome radi u pozadinskom načinu rada.</translation>
 <translation id="3059710691562604940">Sigurno pregledanje je isključeno. Chrome preporučuje da ga uključite.</translation>
 <translation id="3065168410429928842">Chromeova kartica</translation>
diff --git a/chrome/app/resources/google_chrome_strings_cs.xtb b/chrome/app/resources/google_chrome_strings_cs.xtb
index e9bd61d..cb75aa15 100644
--- a/chrome/app/resources/google_chrome_strings_cs.xtb
+++ b/chrome/app/resources/google_chrome_strings_cs.xtb
@@ -79,6 +79,7 @@
 <translation id="2871893339301912279">Nyní jste přihlášeni do Chromu.</translation>
 <translation id="2885378588091291677">Správce úloh</translation>
 <translation id="2888126860611144412">O aplikaci Chrome</translation>
+<translation id="2926676257163822632">Slabá hesla lze snadno uhodnout. Chrome vám může <ph name="BEGIN_LINK" />vytvářet a ukládat silná hesla<ph name="END_LINK" />.</translation>
 <translation id="2929907241665500097">Prohlížeč Chrome se neaktualizoval, něco se pokazilo. <ph name="BEGIN_LINK" />Vyřešte problémy se stahováním aktualizací Chromu a neúspěšnými aktualizacemi.<ph name="END_LINK" /></translation>
 <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> – přihlášení k síti – Chrome</translation>
 <translation id="3037838751736561277">Google Chrome je v režimu na pozadí.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_da.xtb b/chrome/app/resources/google_chrome_strings_da.xtb
index cc9e059..08495ca 100644
--- a/chrome/app/resources/google_chrome_strings_da.xtb
+++ b/chrome/app/resources/google_chrome_strings_da.xtb
@@ -75,6 +75,7 @@
 <translation id="2871893339301912279">Du er logget ind på Chrome.</translation>
 <translation id="2885378588091291677">Jobliste</translation>
 <translation id="2888126860611144412">Om Chrome</translation>
+<translation id="2926676257163822632">Svage adgangskoder er nemme at gætte. Få Chrome <ph name="BEGIN_LINK" />til at oprette og huske stærke adgangskoder for dig<ph name="END_LINK" />.</translation>
 <translation id="2929907241665500097">Chrome blev ikke opdateret, da der opstod en fejl. <ph name="BEGIN_LINK" />Løs problemer med opdatering af Chrome og mislykkede opdateringer.<ph name="END_LINK" /></translation>
 <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> – Login på netværk – Chrome</translation>
 <translation id="3037838751736561277">Google Chrome kører i baggrunden.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_el.xtb b/chrome/app/resources/google_chrome_strings_el.xtb
index d9edca7..a0d7de9 100644
--- a/chrome/app/resources/google_chrome_strings_el.xtb
+++ b/chrome/app/resources/google_chrome_strings_el.xtb
@@ -77,6 +77,7 @@
 <translation id="2871893339301912279">Έχετε συνδεθεί στο Chrome!</translation>
 <translation id="2885378588091291677">Διαχείριση εργασιών</translation>
 <translation id="2888126860611144412">Σχετικά με το Chrome</translation>
+<translation id="2926676257163822632">Είναι εύκολο να μαντέψει κανείς τους ασθενείς κωδικούς πρόσβασης. Επιτρέψτε στο Chrome να <ph name="BEGIN_LINK" />δημιουργεί και να απομνημονεύει ισχυρούς κωδικούς πρόσβασης για εσάς<ph name="END_LINK" />.</translation>
 <translation id="2929907241665500097">Δεν έγινε ενημέρωση του Chrome, παρουσιάστηκε κάποιο σφάλμα. <ph name="BEGIN_LINK" />Επιδιορθώστε τα προβλήματα ενημέρωσης και αποτυχημένων ενημερώσεων του Chrome.<ph name="END_LINK" /></translation>
 <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> - Σύνδεση δικτύου - Chrome</translation>
 <translation id="3037838751736561277">Το Google Chrome εκτελείται στο παρασκήνιο.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_en-GB.xtb b/chrome/app/resources/google_chrome_strings_en-GB.xtb
index fd095e7..c9b8364 100644
--- a/chrome/app/resources/google_chrome_strings_en-GB.xtb
+++ b/chrome/app/resources/google_chrome_strings_en-GB.xtb
@@ -82,6 +82,7 @@
 <translation id="2926676257163822632">Weak passwords are easy to guess. Let Chrome <ph name="BEGIN_LINK" />create and remember strong passwords for you<ph name="END_LINK" />.</translation>
 <translation id="2929907241665500097">Chrome didn't update. Something went wrong. <ph name="BEGIN_LINK" />Fix Chrome update problems and failed updates.<ph name="END_LINK" /></translation>
 <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> – Network sign-in – Chrome</translation>
+<translation id="298099161970687941">Ask when Chrome opens</translation>
 <translation id="3037838751736561277">Google Chrome is in background mode.</translation>
 <translation id="3059710691562604940">Safe Browsing is off. Chrome recommends turning it on.</translation>
 <translation id="3065168410429928842">Chrome Tab</translation>
diff --git a/chrome/app/resources/google_chrome_strings_et.xtb b/chrome/app/resources/google_chrome_strings_et.xtb
index 4bc3ca6..1beb9e0 100644
--- a/chrome/app/resources/google_chrome_strings_et.xtb
+++ b/chrome/app/resources/google_chrome_strings_et.xtb
@@ -17,7 +17,7 @@
 <translation id="1355000804395496115">Kasutage Chrome'is eri profiile seda seadet kasutavate inimeste jaoks või selleks, et eristada isiklikku ja töö tarbeks sirvimist</translation>
 <translation id="137466361146087520">Google Chrome'i beetaversioon</translation>
 <translation id="1399397803214730675">Selles arvutis on juba Google Chrome'i uuem versioon. Kui tarkvara ei tööta, desinstallige Google Chrome ja proovige uuesti.</translation>
-<translation id="140541193409212341">Ilmnes viga, kui Chrome otsis teie arvutist kahjuliku tarkvara</translation>
+<translation id="140541193409212341">Ilmnes viga, kui Chrome otsis teie arvutist kahjulikku tarkvara</translation>
 <translation id="1434626383986940139">Chrome Canary rakendused</translation>
 <translation id="1513277449617685876">Isikliku ja kasutaja <ph name="NEW_USER" /> sirvimise eristamiseks looge Chrome'is uus profiil</translation>
 <translation id="1553358976309200471">Värskenda Chrome'i</translation>
@@ -80,6 +80,7 @@
 <translation id="2926676257163822632">Nõrku paroole on lihtne ära arvata. Laske Chrome'il <ph name="BEGIN_LINK" />teie jaoks luua ja meelde jätta tugevaid paroole<ph name="END_LINK" />.</translation>
 <translation id="2929907241665500097">Chrome'i ei värskendatud, midagi läks valesti. <ph name="BEGIN_LINK" />Lahendage Chrome'i värskendamisprobleemid ja parandage ebaõnnestunud värskendused.<ph name="END_LINK" /></translation>
 <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> – võrku sisselogimine – Chrome</translation>
+<translation id="298099161970687941">Küsi Chrome'i avamisel</translation>
 <translation id="3037838751736561277">Google Chrome on taustarežiimis.</translation>
 <translation id="3059710691562604940">Google'i ohutu sirvimine on välja lülitatud. Chrome soovitab selle sisse lülitada.</translation>
 <translation id="3065168410429928842">Chrome'i vaheleht</translation>
diff --git a/chrome/app/resources/google_chrome_strings_eu.xtb b/chrome/app/resources/google_chrome_strings_eu.xtb
index 9a2b092..954b8300 100644
--- a/chrome/app/resources/google_chrome_strings_eu.xtb
+++ b/chrome/app/resources/google_chrome_strings_eu.xtb
@@ -79,6 +79,7 @@
 <translation id="2871893339301912279">Chrome-n saioa hasi duzu.</translation>
 <translation id="2885378588091291677">Zereginen kudeatzailea</translation>
 <translation id="2888126860611144412">Chrome-ri buruz</translation>
+<translation id="2926676257163822632">Seguruak ez diren pasahitzak erraz asmatzen dira. Utzi Chrome-ri <ph name="BEGIN_LINK" />pasahitz seguruak sortzen eta gogoratzen<ph name="END_LINK" />.</translation>
 <translation id="2929907241665500097">Chrome ez da eguneratu arazoren bat izan delako. <ph name="BEGIN_LINK" />Konpondu Chrome eguneratzeko arazoak eta huts egindako eguneratzeak.<ph name="END_LINK" /></translation>
 <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> - Hasi saioa sarean - Chrome</translation>
 <translation id="3037838751736561277">Google Chrome atzeko planoko moduan dago.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_fa.xtb b/chrome/app/resources/google_chrome_strings_fa.xtb
index 37c2413..b07316cf 100644
--- a/chrome/app/resources/google_chrome_strings_fa.xtb
+++ b/chrome/app/resources/google_chrome_strings_fa.xtb
@@ -75,6 +75,7 @@
 <translation id="2871893339301912279">‏شما در حال حاضر وارد سیستم Chrome شده‌اید!</translation>
 <translation id="2885378588091291677">مدیر فعالیت‌ها</translation>
 <translation id="2888126860611144412">‏درباره Chrome</translation>
+<translation id="2926676257163822632">‏گذرواژه‌های ضعیف را می‌توان به‌راحتی حدس زد. به Chrome اجازه دهید <ph name="BEGIN_LINK" />گذرواژه‌هایی قوی برایتان ایجاد کند و آن‌ها را به‌خاطر بسپارد<ph name="END_LINK" />.</translation>
 <translation id="2929907241665500097">‏Chrome به‌روزرسانی نشد؛ مشکلی پیش آمد. <ph name="BEGIN_LINK" />مشکلات به‌روزرسانی Chrome و به‌روزرسانی‌های ناموفق را برطرف کنید.<ph name="END_LINK" /></translation>
 <translation id="2969728957078202736">‏<ph name="PAGE_TITLE" /> - ورود به سیستم شبکه - Chrome</translation>
 <translation id="3037838751736561277">‏Google Chrome در حالت پس‌زمینه است.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_fi.xtb b/chrome/app/resources/google_chrome_strings_fi.xtb
index a961eb43..0cf0fc3 100644
--- a/chrome/app/resources/google_chrome_strings_fi.xtb
+++ b/chrome/app/resources/google_chrome_strings_fi.xtb
@@ -75,6 +75,7 @@
 <translation id="2871893339301912279">Olet kirjautunut Chromeen!</translation>
 <translation id="2885378588091291677">Tehtävänhallinta</translation>
 <translation id="2888126860611144412">Tietoja Chromesta</translation>
+<translation id="2926676257163822632">Heikko salasana on helppo arvata. Chrome voi <ph name="BEGIN_LINK" />luoda ja muistaa vahvoja salasanoja puolestasi<ph name="END_LINK" />.</translation>
 <translation id="2929907241665500097">Chromea ei päivitetty, vaan jotain meni pieleen. <ph name="BEGIN_LINK" />Korjaa Chromen päivitysongelmat ja epäonnistuneet päivitykset<ph name="END_LINK" />.</translation>
 <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> – Kirjautuminen verkkoon – Chrome</translation>
 <translation id="3037838751736561277">Google Chrome on käynnissä taustalla.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_fil.xtb b/chrome/app/resources/google_chrome_strings_fil.xtb
index 45f0e2a8..d6c9afa7 100644
--- a/chrome/app/resources/google_chrome_strings_fil.xtb
+++ b/chrome/app/resources/google_chrome_strings_fil.xtb
@@ -79,8 +79,10 @@
 <translation id="2871893339301912279">Naka-sign in ka sa Chrome!</translation>
 <translation id="2885378588091291677">Task Manager</translation>
 <translation id="2888126860611144412">Tungkol sa Chrome</translation>
+<translation id="2926676257163822632">Madaling hulaan ang mahihinang password. Hayaan ang Chrome na <ph name="BEGIN_LINK" />gumawa ng malalakas na password at tandaan ang mga ito para sa iyo<ph name="END_LINK" />.</translation>
 <translation id="2929907241665500097">Hindi na-update ang Chrome, nagkaproblema. <ph name="BEGIN_LINK" />Ayusin ang mga problema sa pag-update ng Chrome at ang mga hindi naisagawang pag-update dito.<ph name="END_LINK" /></translation>
 <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> - Pag-sign in sa Network - Chrome</translation>
+<translation id="298099161970687941">Itanong kapag binuksan ang Chrome</translation>
 <translation id="3037838751736561277">Nasa background mode ang Google Chrome.</translation>
 <translation id="3059710691562604940">Naka-off ang Ligtas na Pag-browse. Inirerekomenda ng Chrome na i-on ito.</translation>
 <translation id="3065168410429928842">Tab ng Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_fr-CA.xtb b/chrome/app/resources/google_chrome_strings_fr-CA.xtb
index 372ead7..bcf32f6 100644
--- a/chrome/app/resources/google_chrome_strings_fr-CA.xtb
+++ b/chrome/app/resources/google_chrome_strings_fr-CA.xtb
@@ -79,6 +79,7 @@
 <translation id="2871893339301912279">Vous êtes connecté à Google Chrome!</translation>
 <translation id="2885378588091291677">Moniteur d'activité</translation>
 <translation id="2888126860611144412">À propos de Google Chrome</translation>
+<translation id="2926676257163822632">Les mots de passe faibles sont faciles à deviner. Vous pouvez laisser Chrome <ph name="BEGIN_LINK" />créer et mémoriser des mots de passe forts pour vous<ph name="END_LINK" />.</translation>
 <translation id="2929907241665500097">La mise à jour de Chrome n'a pas été installée. Une erreur s'est produite. <ph name="BEGIN_LINK" />Découvrez comment résoudre les problèmes de mise à jour de Chrome.<ph name="END_LINK" /></translation>
 <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> – Connexion au réseau – Chrome</translation>
 <translation id="3037838751736561277">Google Chrome fonctionne en mode arrière-plan.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_hi.xtb b/chrome/app/resources/google_chrome_strings_hi.xtb
index 26ab8f30..8c1162c 100644
--- a/chrome/app/resources/google_chrome_strings_hi.xtb
+++ b/chrome/app/resources/google_chrome_strings_hi.xtb
@@ -75,8 +75,10 @@
 <translation id="2871893339301912279">आप Chrome में प्रवेश हैं.</translation>
 <translation id="2885378588091291677">काम का प्रबंधक</translation>
 <translation id="2888126860611144412">Chrome के बारे में</translation>
+<translation id="2926676257163822632">कमज़ोर पासवर्ड का अंदाज़ा लगाना आसान होता है. Chrome को <ph name="BEGIN_LINK" />आपके लिए मज़बूत पासवर्ड बनाने और उन्हें याद रखने की अनुमति दें<ph name="END_LINK" />.</translation>
 <translation id="2929907241665500097">किसी गड़बड़ी की वजह से Chrome अपडेट नहीं हुआ. <ph name="BEGIN_LINK" />Chrome को अपडेट करने से जुड़ी समस्याएं और नहीं हो पाने वाले अपडेट ठीक करें.<ph name="END_LINK" /></translation>
 <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> - नेटवर्क में Chrome से साइन-इन करें</translation>
+<translation id="298099161970687941">जब Chrome खुले, तब पूछें</translation>
 <translation id="3037838751736561277">Google Chrome पृष्ठभूमि मोड में है.</translation>
 <translation id="3059710691562604940">सुरक्षित ब्राउज़िंग की सुविधा बंद है. Chrome इसे चालू करने का सुझाव देता है.</translation>
 <translation id="3065168410429928842">Chrome टैब</translation>
diff --git a/chrome/app/resources/google_chrome_strings_hu.xtb b/chrome/app/resources/google_chrome_strings_hu.xtb
index 8839aa06..8cd80b0 100644
--- a/chrome/app/resources/google_chrome_strings_hu.xtb
+++ b/chrome/app/resources/google_chrome_strings_hu.xtb
@@ -75,6 +75,7 @@
 <translation id="2871893339301912279">Bejelentkezett a Chrome-ba.</translation>
 <translation id="2885378588091291677">Feladatkezelő</translation>
 <translation id="2888126860611144412">A Chrome névjegye</translation>
+<translation id="2926676257163822632">A gyenge jelszavakat könnyű kitalálni. Engedélyezze a Chrome számára, hogy <ph name="BEGIN_LINK" /> erős jelszavakat hozzon létre Önnek, és megjegyezze őket<ph name="END_LINK" />.</translation>
 <translation id="2929907241665500097">Ismeretlen hiba történt, ezért a Chrome nem frissült. <ph name="BEGIN_LINK" />A Chrome frissítési problémáinak megoldása.<ph name="END_LINK" /></translation>
 <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> – Hálózati bejelentkezés – Chrome</translation>
 <translation id="3037838751736561277">A Google Chrome háttérmódban van.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_hy.xtb b/chrome/app/resources/google_chrome_strings_hy.xtb
index 8257cad..35fb39c 100644
--- a/chrome/app/resources/google_chrome_strings_hy.xtb
+++ b/chrome/app/resources/google_chrome_strings_hy.xtb
@@ -77,6 +77,7 @@
 <translation id="2871893339301912279">Դուք մուտք եք գործել Chrome:</translation>
 <translation id="2885378588091291677">Task Manager</translation>
 <translation id="2888126860611144412">Chrome-ի մասին</translation>
+<translation id="2926676257163822632">Թույլ գաղտնաբառերը հեշտ է գուշակել։ Թույլատրեք Chrome-ին <ph name="BEGIN_LINK" />գաղտնաբառեր ստեղծել և պահել ձեզ համար<ph name="END_LINK" />։</translation>
 <translation id="2929907241665500097">Անհայտ սխալի պատճառով չհաջողվեց թարմացնել Chrome-ը։ <ph name="BEGIN_LINK" />Շտկել Chrome-ի թարմացման հետ կապված խնդիրները<ph name="END_LINK" /></translation>
 <translation id="2969728957078202736"><ph name="PAGE_TITLE" />– Ցանցի մուտք – Chrome</translation>
 <translation id="3037838751736561277">Google Chrome-ն աշխատում է ֆոնային ռեժիմում:</translation>
diff --git a/chrome/app/resources/google_chrome_strings_id.xtb b/chrome/app/resources/google_chrome_strings_id.xtb
index dd86ede..8a31e5d 100644
--- a/chrome/app/resources/google_chrome_strings_id.xtb
+++ b/chrome/app/resources/google_chrome_strings_id.xtb
@@ -75,8 +75,10 @@
 <translation id="2871893339301912279">Anda sudah masuk ke Chrome!</translation>
 <translation id="2885378588091291677">Pengelola Tugas</translation>
 <translation id="2888126860611144412">Tentang Chrome</translation>
+<translation id="2926676257163822632">Sandi yang lemah mudah ditebak. Izinkan Chrome <ph name="BEGIN_LINK" />membuat dan mengingat sandi yang kuat untuk Anda<ph name="END_LINK" />.</translation>
 <translation id="2929907241665500097">Chrome tidak dapat diupdate, terjadi error. <ph name="BEGIN_LINK" />Perbaiki masalah update Chrome dan update yang gagal.<ph name="END_LINK" /></translation>
 <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> - Login Jaringan - Chrome</translation>
+<translation id="298099161970687941">Tanyakan saat Chrome terbuka</translation>
 <translation id="3037838751736561277">Google Chrome berjalan di mode latar belakang.</translation>
 <translation id="3059710691562604940">Safe Browsing nonaktif. Chrome merekomendasikan untuk mengaktifkannya.</translation>
 <translation id="3065168410429928842">Tab Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_is.xtb b/chrome/app/resources/google_chrome_strings_is.xtb
index 67ed3448..1b6264d6 100644
--- a/chrome/app/resources/google_chrome_strings_is.xtb
+++ b/chrome/app/resources/google_chrome_strings_is.xtb
@@ -79,6 +79,7 @@
 <translation id="2871893339301912279">Þú ert skráð(ur) inn á Chrome!</translation>
 <translation id="2885378588091291677">Verkstjórn</translation>
 <translation id="2888126860611144412">Um Chrome</translation>
+<translation id="2926676257163822632">Léleg aðgangsorð eru þau sem auðvelt er að giska á. Leyfðu Chrome <ph name="BEGIN_LINK" />að búa til traust aðgangsorð fyrir þig og muna þau<ph name="END_LINK" />.</translation>
 <translation id="2929907241665500097">Chrome uppfærðist ekki, eitthvað fór úrskeiðis. <ph name="BEGIN_LINK" />Lagaðu uppfærsluvandamál Chrome og uppfærslur sem mistókust.<ph name="END_LINK" /></translation>
 <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> – innskráning á net – Chrome</translation>
 <translation id="3037838751736561277">Google Chrome er í bakgrunnsstillingu.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_it.xtb b/chrome/app/resources/google_chrome_strings_it.xtb
index 65fd5c6c..32b6c65 100644
--- a/chrome/app/resources/google_chrome_strings_it.xtb
+++ b/chrome/app/resources/google_chrome_strings_it.xtb
@@ -75,6 +75,7 @@
 <translation id="2871893339301912279">Hai eseguito l'accesso a Chrome.</translation>
 <translation id="2885378588091291677">Task Manager</translation>
 <translation id="2888126860611144412">Informazioni su Chrome</translation>
+<translation id="2926676257163822632">Le password inefficaci sono facili da indovinare. Consenti a Chrome di <ph name="BEGIN_LINK" />creare e memorizzare password efficaci per te<ph name="END_LINK" />.</translation>
 <translation id="2929907241665500097">Si è verificato un errore: Chrome non si è aggiornato. <ph name="BEGIN_LINK" />Risolvi i problemi di aggiornamento e gli aggiornamenti non riusciti di Chrome.<ph name="END_LINK" /></translation>
 <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> - Accesso rete - Chrome</translation>
 <translation id="3037838751736561277">Google Chrome è in modalità background.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_iw.xtb b/chrome/app/resources/google_chrome_strings_iw.xtb
index b0cc5af..6d56b09 100644
--- a/chrome/app/resources/google_chrome_strings_iw.xtb
+++ b/chrome/app/resources/google_chrome_strings_iw.xtb
@@ -75,6 +75,7 @@
 <translation id="2871893339301912279">‏נכנסת ל-Chrome!</translation>
 <translation id="2885378588091291677">מנהל המשימות</translation>
 <translation id="2888126860611144412">‏מידע כללי על Chrome</translation>
+<translation id="2926676257163822632">‏קל לנחש סיסמאות חלשות. באמצעות Chrome אפשר <ph name="BEGIN_LINK" />ליצור ולזכור סיסמאות חזקות<ph name="END_LINK" />.</translation>
 <translation id="2929907241665500097">‏Chrome לא התעדכן, משהו השתבש. <ph name="BEGIN_LINK" />לטיפול בבעיות בעדכון של Chrome ובעדכונים שנכשלו<ph name="END_LINK" /></translation>
 <translation id="2969728957078202736">‏<ph name="PAGE_TITLE" /> – כניסה לרשת – Chrome</translation>
 <translation id="3037838751736561277">‏Google Chrome נמצא במצב רקע.</translation>
@@ -243,7 +244,7 @@
 <translation id="8013993649590906847">‏אם אין לתמונה תיאור מועיל, Chrome ינסה לספק לך תיאור. כדי ליצור תיאורים, התמונות נשלחות אל Google.</translation>
 <translation id="8129812357326543296">‏מידע על Google Chrome&amp;</translation>
 <translation id="8255190535488645436">‏Google Chrome משתמש במצלמה ובמיקרופון שלך.</translation>
-<translation id="8286862437124483331">‏Google Chrome מנסה להציג סיסמאות. הקלד את הסיסמה שלך ל-Windows כדי לאפשר זאת.</translation>
+<translation id="8286862437124483331">‏Google Chrome מנסה להציג סיסמאות. יש להקליד את הסיסמה שלך ל-Windows כדי לאפשר זאת.</translation>
 <translation id="828798499196665338">‏אחד מההורים השבית ב-Chrome את ההגדרה "הרשאות לאתרים, אפליקציות ותוספים". לא ניתן להפעיל את <ph name="EXTENSION_TYPE_PARAMETER" />.</translation>
 <translation id="8290100596633877290">‏אופס! Google Chrome קרס. להפעיל מחדש עכשיו?</translation>
 <translation id="8342675569599923794">‏Chrome‏ חסם את הקובץ הזה כי הוא מסוכן.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ja.xtb b/chrome/app/resources/google_chrome_strings_ja.xtb
index 920ba80c..e462a4d0 100644
--- a/chrome/app/resources/google_chrome_strings_ja.xtb
+++ b/chrome/app/resources/google_chrome_strings_ja.xtb
@@ -75,6 +75,7 @@
 <translation id="2871893339301912279">Chrome にログインしました</translation>
 <translation id="2885378588091291677">タスク マネージャ</translation>
 <translation id="2888126860611144412">Chrome について</translation>
+<translation id="2926676257163822632">脆弱なパスワードは簡単に推測されてしまいます。Chrome で<ph name="BEGIN_LINK" />安全性の高いパスワードを自動生成して保存する<ph name="END_LINK" />ことができます。</translation>
 <translation id="2929907241665500097">エラーが発生したため、Chrome が更新されませんでした。<ph name="BEGIN_LINK" />Chrome の更新に関する問題を解決してください。<ph name="END_LINK" /></translation>
 <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> - ネットワークにログイン - Chrome</translation>
 <translation id="3037838751736561277">Google Chrome はバックグラウンド モードです。</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ka.xtb b/chrome/app/resources/google_chrome_strings_ka.xtb
index 792ff07..102883f 100644
--- a/chrome/app/resources/google_chrome_strings_ka.xtb
+++ b/chrome/app/resources/google_chrome_strings_ka.xtb
@@ -82,6 +82,7 @@
 <translation id="2926676257163822632">სუსტი პაროლები ადვილი გამოსაცნობია, ამიტომ მიეცით საშუალება Chrome-ს, <ph name="BEGIN_LINK" />თქვენთვის შექმნას და დაიმახსოვროს ძლიერი პაროლები<ph name="END_LINK" />.</translation>
 <translation id="2929907241665500097">Chrome-ის განახლება ვერ მოხერხდა შეფერხების გამო. <ph name="BEGIN_LINK" />შეასწორეთ Chrome-ის განახლებასთან დაკავშირებული პრობლემები და განუხორციელებელი განახლებები.<ph name="END_LINK" /></translation>
 <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> — ქსელში შესვლა — Chrome</translation>
+<translation id="298099161970687941">შეკითხვა Chrome-ის გახსნისას</translation>
 <translation id="3037838751736561277">Google Chrome ფონურ რეჟიმშია.</translation>
 <translation id="3059710691562604940">Safe Browsing გამორთულია. Chrome გირჩევთ მის ჩართვას.</translation>
 <translation id="3065168410429928842">Chrome-ის ჩანართი</translation>
diff --git a/chrome/app/resources/google_chrome_strings_kk.xtb b/chrome/app/resources/google_chrome_strings_kk.xtb
index 20015be..fc0e8d6 100644
--- a/chrome/app/resources/google_chrome_strings_kk.xtb
+++ b/chrome/app/resources/google_chrome_strings_kk.xtb
@@ -79,6 +79,7 @@
 <translation id="2871893339301912279">Chrome жүйесіне кірдіңіз!</translation>
 <translation id="2885378588091291677">Тапсырмалар реттегіші</translation>
 <translation id="2888126860611144412">Chrome туралы</translation>
+<translation id="2926676257163822632">Құпия сөзіңіз оңай болса, оны табу да оңай. Chrome браузеріне <ph name="BEGIN_LINK" />күрделі құпия сөздер жасауға және сақтауға<ph name="END_LINK" /> мүмкіндік беріңіз.</translation>
 <translation id="2929907241665500097">Chrome жаңартылған жоқ. Бірдеңе дұрыс болмады. <ph name="BEGIN_LINK" />Chrome браузеріндегі жаңартуға қатысты мәселелерді түзетіңіз.<ph name="END_LINK" /></translation>
 <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> – Желіге кіру – Chrome</translation>
 <translation id="3037838751736561277">Google Chrome фондық режимде.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_km.xtb b/chrome/app/resources/google_chrome_strings_km.xtb
index 29eb86a1..ff6fca3 100644
--- a/chrome/app/resources/google_chrome_strings_km.xtb
+++ b/chrome/app/resources/google_chrome_strings_km.xtb
@@ -79,8 +79,10 @@
 <translation id="2871893339301912279">អ្នកបានចូលមកកាន់ Chrome!</translation>
 <translation id="2885378588091291677">កម្មវិធីគ្រប់គ្រងភារកិច្ច</translation>
 <translation id="2888126860611144412">អំពី Chrome</translation>
+<translation id="2926676257163822632">ពាក្យសម្ងាត់ខ្សោយ​មានភាពងាយស្រួលក្នុងការ​ទាយដឹង​។ អនុញ្ញាតឱ្យ Chrome <ph name="BEGIN_LINK" />បង្កើត និងចងចាំពាក្យសម្ងាត់ខ្លាំងសម្រាប់អ្នក<ph name="END_LINK" />។</translation>
 <translation id="2929907241665500097">Chrome មិន​បានដំឡើងកំណែទេ មានអ្វីមួយខុសប្រក្រតី។ <ph name="BEGIN_LINK" />សូមដោះស្រាយបញ្ហា​នៃការដំឡើងកំណែ Chrome និងការដំឡើងកំណែដែលមិនបានសម្រេចផ្សេងៗ។<ph name="END_LINK" /></translation>
 <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> - ការចូលបណ្ដាញ - Chrome</translation>
+<translation id="298099161970687941">សួរ​នៅពេល Chrome បើក</translation>
 <translation id="3037838751736561277">Google Chrome នៅក្នុងរបៀបផ្ទៃខាងក្រោយ។</translation>
 <translation id="3059710691562604940">បានបិទមុខងាររុករក​ដោយសុវត្ថិភាព​។ Chrome ណែនាំឱ្យបើក​មុខងារនេះ។</translation>
 <translation id="3065168410429928842">ផ្ទាំង Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ko.xtb b/chrome/app/resources/google_chrome_strings_ko.xtb
index fac9931d..1224a170 100644
--- a/chrome/app/resources/google_chrome_strings_ko.xtb
+++ b/chrome/app/resources/google_chrome_strings_ko.xtb
@@ -79,8 +79,10 @@
 <translation id="2871893339301912279">Chrome에 로그인되어 있습니다.</translation>
 <translation id="2885378588091291677">작업 관리자</translation>
 <translation id="2888126860611144412">Chrome 정보</translation>
+<translation id="2926676257163822632">취약한 비밀번호는 추측하기 쉽습니다. Chrome에서 <ph name="BEGIN_LINK" />안전한 비밀번호를 생성하고 기억하도록 설정<ph name="END_LINK" />하세요.</translation>
 <translation id="2929907241665500097">문제가 발생하여 Chromium을 업데이트할 수 없습니다. <ph name="BEGIN_LINK" />Chrome 업데이트 문제 및 업데이트 실패 문제 해결하기<ph name="END_LINK" /></translation>
 <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> - 네트워크 로그인 - Chrome</translation>
+<translation id="298099161970687941">Chrome이 열릴 때 확인</translation>
 <translation id="3037838751736561277">Chrome이 백그라운드 모드로 실행 중입니다.</translation>
 <translation id="3059710691562604940">세이프 브라우징이 사용 중지되어 있습니다. 사용 설정하는 것이 좋습니다.</translation>
 <translation id="3065168410429928842">Chrome 탭</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ky.xtb b/chrome/app/resources/google_chrome_strings_ky.xtb
index cdd49f3..7dc29d5 100644
--- a/chrome/app/resources/google_chrome_strings_ky.xtb
+++ b/chrome/app/resources/google_chrome_strings_ky.xtb
@@ -79,6 +79,7 @@
 <translation id="2871893339301912279">Chrome'го кирдиңиз!</translation>
 <translation id="2885378588091291677">Тапшырмаларды башкаргыч</translation>
 <translation id="2888126860611144412">Chrome тууралуу</translation>
+<translation id="2926676257163822632">Начар сырсөздөрдү билип алуу оңой. Chrome'го <ph name="BEGIN_LINK" />сиз үчүн татаал сырсөздөрдү түзүп, эстеп калууга<ph name="END_LINK" /> уруксат бериңиз.</translation>
 <translation id="2929907241665500097">Chrome жаңырган жок. Бир жерден ката кетти. <ph name="BEGIN_LINK" />Chrome'догу жаңыртуу маселелерин оңдоңуз.<ph name="END_LINK" /></translation>
 <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> – Тармакка кирүү – Chrome</translation>
 <translation id="3037838751736561277">Google Chrome фондук режимде.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_lo.xtb b/chrome/app/resources/google_chrome_strings_lo.xtb
index 1f43d9f..57080ec 100644
--- a/chrome/app/resources/google_chrome_strings_lo.xtb
+++ b/chrome/app/resources/google_chrome_strings_lo.xtb
@@ -82,6 +82,7 @@
 <translation id="2926676257163822632">ລະຫັດຜ່ານງ່າຍແມ່ນລະຫັດຜ່ານທີ່ເດົາໄດ້ງ່າຍ. ອະນຸຍາດໃຫ້ Chrome <ph name="BEGIN_LINK" />ສ້າງ ແລະ ຈື່ລະຫັດຜ່ານຍາກສຳລັບທ່ານ<ph name="END_LINK" />.</translation>
 <translation id="2929907241665500097">Chrome ບໍ່ອັບເດດ, ມີບາງຢ່າງຜິດພາດ. <ph name="BEGIN_LINK" />ແກ້ໄຂບັນຫາການອັບເດດ Chrome ແລະ ການອັບເດດທີ່ບໍ່ສຳເລັດ.<ph name="END_LINK" /></translation>
 <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> - ການເຂົ້າສູ່ລະບົບເຄືອຂ່າຍ - Chrome</translation>
+<translation id="298099161970687941">ຖາມເມື່ອ Chrome ເປີດ</translation>
 <translation id="3037838751736561277">Google Chrome ຢູ່ໃນໂໝດພື້ນຫຼັງ.</translation>
 <translation id="3059710691562604940">Safe Browsing ປິດຢູ່. Chrome ແນະນຳໃຫ້ເປີດມັນ.</translation>
 <translation id="3065168410429928842">ແຖບ Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_lt.xtb b/chrome/app/resources/google_chrome_strings_lt.xtb
index 26d16f723..307ed595 100644
--- a/chrome/app/resources/google_chrome_strings_lt.xtb
+++ b/chrome/app/resources/google_chrome_strings_lt.xtb
@@ -79,6 +79,7 @@
 <translation id="2871893339301912279">Esate prisijungę prie „Chrome“.</translation>
 <translation id="2885378588091291677">Užduočių tvarkytuvė</translation>
 <translation id="2888126860611144412">Apie „Chrome“</translation>
+<translation id="2926676257163822632">Nesudėtingus slaptažodžius lengva atspėti. Leiskite „Chrome“ <ph name="BEGIN_LINK" />jums sukurti ir įsiminti sudėtingus slaptažodžius<ph name="END_LINK" />.</translation>
 <translation id="2929907241665500097">Nepavyko atnaujinti „Chrome“, įvyko klaida. <ph name="BEGIN_LINK" />Pašalinkite „Chrome“ naujinimo problemas ir naujinių klaidas.<ph name="END_LINK" /></translation>
 <translation id="2969728957078202736">„<ph name="PAGE_TITLE" />“ – prisijungimas prie tinklo – „Chrome“</translation>
 <translation id="3037838751736561277">„Google Chrome“ veikia fono režimu.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_lv.xtb b/chrome/app/resources/google_chrome_strings_lv.xtb
index 1edcec9..5f6625f 100644
--- a/chrome/app/resources/google_chrome_strings_lv.xtb
+++ b/chrome/app/resources/google_chrome_strings_lv.xtb
@@ -77,6 +77,7 @@
 <translation id="2871893339301912279">Esat pierakstījies pārlūkā Chrome!</translation>
 <translation id="2885378588091291677">Uzdevumu pārvaldnieks</translation>
 <translation id="2888126860611144412">Par Chrome</translation>
+<translation id="2926676257163822632">Nedrošas paroles ir viegli uzminēt. Pārlūkā Chrome <ph name="BEGIN_LINK" />var automātiski veidot un iegaumēt drošas paroles jūsu kontiem<ph name="END_LINK" />.</translation>
 <translation id="2929907241665500097">Pārlūkprogramma Chrome netika atjaunināta. Radās problēma. <ph name="BEGIN_LINK" />Novērsiet Chrome atjaunināšanas problēmas.<ph name="END_LINK" /></translation>
 <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> — pierakstīšanās tīklā — Chrome</translation>
 <translation id="3037838751736561277">Google Chrome darbojas fona režīmā.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_mn.xtb b/chrome/app/resources/google_chrome_strings_mn.xtb
index 31e221f..6fb2af5b 100644
--- a/chrome/app/resources/google_chrome_strings_mn.xtb
+++ b/chrome/app/resources/google_chrome_strings_mn.xtb
@@ -82,6 +82,7 @@
 <translation id="2926676257163822632">Сул нууц үгийг таахад хялбар байдаг. Chrome-д <ph name="BEGIN_LINK" />танд зориулан сайн нууц үг үүсгэж, санах<ph name="END_LINK" /> боломж олгоорой.</translation>
 <translation id="2929907241665500097">Chrome-г шинэчлээгүй, ямар нэг алдаа гарлаа. <ph name="BEGIN_LINK" />Chrome-г шинэчлэхтэй холбоотой асуудлууд болон амжилтгүй болсон шинэчлэлтүүдийг засна уу.<ph name="END_LINK" /></translation>
 <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> - Сүлжээнд нэвтрэх - Chrome</translation>
+<translation id="298099161970687941">Chrome-г нээх үед асуух</translation>
 <translation id="3037838751736561277">Google Chrome нь суурь горимд байна.</translation>
 <translation id="3059710691562604940">Аюулгүй үзэх онцлог унтраалттай байна. Chrome түүнийг асаахыг зөвлөж байна.</translation>
 <translation id="3065168410429928842">Chrome-н чихтэй хуудас</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ms.xtb b/chrome/app/resources/google_chrome_strings_ms.xtb
index fcb61e9..7186a46e 100644
--- a/chrome/app/resources/google_chrome_strings_ms.xtb
+++ b/chrome/app/resources/google_chrome_strings_ms.xtb
@@ -75,8 +75,10 @@
 <translation id="2871893339301912279">Anda kini telah log masuk ke Chrome!</translation>
 <translation id="2885378588091291677">Pengurus Tugas</translation>
 <translation id="2888126860611144412">Perihal Chrome</translation>
+<translation id="2926676257163822632">Kata laluan lemah mudah diteka. Biar Chrome <ph name="BEGIN_LINK" />membuat dan mengingat kata laluan kukuh untuk anda<ph name="END_LINK" />.</translation>
 <translation id="2929907241665500097">Chrome tidak dikemas kini, kesilapan telah berlaku. <ph name="BEGIN_LINK" />Selesaikan masalah kemas kini dan kegagalan kemas kini Chrome.<ph name="END_LINK" /></translation>
 <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> - Log Masuk Rangkaian - Chrome</translation>
+<translation id="298099161970687941">Tanya apabila Chrome dibuka</translation>
 <translation id="3037838751736561277">Google Chrome dalam mod latar belakang.</translation>
 <translation id="3059710691562604940">Penyemakan Imbas Selamat dimatikan. Chrome mengesyorkan agar ciri ini dihidupkan.</translation>
 <translation id="3065168410429928842">Tab Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_my.xtb b/chrome/app/resources/google_chrome_strings_my.xtb
index c65f451..b81091a 100644
--- a/chrome/app/resources/google_chrome_strings_my.xtb
+++ b/chrome/app/resources/google_chrome_strings_my.xtb
@@ -79,8 +79,10 @@
 <translation id="2871893339301912279">Chrome သို့သင် ဝင်ရောက်ပြီးဖြစ်သည်။</translation>
 <translation id="2885378588091291677">အလုပ် မန်နေဂျာ</translation>
 <translation id="2888126860611144412">Chrome အကြောင်း</translation>
+<translation id="2926676257163822632">လုံခြုံမှုလျော့နည်းသည့် စကားဝှက်များကို အလွယ်တကူ ခန့်မှန်းနိုင်သည်။ <ph name="BEGIN_LINK" />သင့်အတွက် လုံခြုံမှုမြင့်သည့်စကားဝှက်များ ပြုလုပ်ပြီး မှတ်ထားရန်<ph name="END_LINK" /> Chrome ကို ခွင့်ပြုပါ။</translation>
 <translation id="2929907241665500097">Chrome အပ်ဒိတ်လုပ်၍ မရပါ၊ တစ်ခုခု မှားသွားသည်။ <ph name="BEGIN_LINK" />Chrome အပ်ဒိတ်ပြဿနာများနှင့် လုပ်၍မရသော အပ်ဒိတ်များကို ပြင်ဆင်ပါ။<ph name="END_LINK" /></translation>
 <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> - ကွန်ရက် လက်မှတ်ထိုးဝင်ခြင်း - Chrome</translation>
+<translation id="298099161970687941">Chrome ပွင့်သောအခါ ခွင့်တောင်းရန်</translation>
 <translation id="3037838751736561277">Google Chrome သည် နောက်ခံ မုဒ်ထဲမျာ ရှိနေသည်။</translation>
 <translation id="3059710691562604940">'လုံခြုံစွာ ကြည့်ရှုခြင်း' ပိတ်ထားသည်။ ၎င်းကိုဖွင့်ရန် Chrome က အကြံပြုပါသည်။</translation>
 <translation id="3065168410429928842">Chrome တဘ်</translation>
diff --git a/chrome/app/resources/google_chrome_strings_nl.xtb b/chrome/app/resources/google_chrome_strings_nl.xtb
index a13ae12c..7bd798a 100644
--- a/chrome/app/resources/google_chrome_strings_nl.xtb
+++ b/chrome/app/resources/google_chrome_strings_nl.xtb
@@ -82,6 +82,7 @@
 <translation id="2926676257163822632">Zwakke wachtwoorden zijn makkelijk te raden. Laat Chrome <ph name="BEGIN_LINK" />sterke wachtwoorden voor je instellen en onthouden<ph name="END_LINK" />.</translation>
 <translation id="2929907241665500097">Chrome is niet geüpdatet. Er is een fout opgetreden. <ph name="BEGIN_LINK" />Updateproblemen en mislukte updates voor Chrome verhelpen<ph name="END_LINK" /></translation>
 <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> - Inloggen bij netwerk - Chrome</translation>
+<translation id="298099161970687941">Vragen als Chrome wordt geopend</translation>
 <translation id="3037838751736561277">Google Chrome bevindt zich in de achtergrondmodus.</translation>
 <translation id="3059710691562604940">Safe Browsing is uitgeschakeld. Chrome raadt je aan deze functie in te schakelen.</translation>
 <translation id="3065168410429928842">Chrome-tabblad</translation>
diff --git a/chrome/app/resources/google_chrome_strings_pt-PT.xtb b/chrome/app/resources/google_chrome_strings_pt-PT.xtb
index 70570c99..9ff18572 100644
--- a/chrome/app/resources/google_chrome_strings_pt-PT.xtb
+++ b/chrome/app/resources/google_chrome_strings_pt-PT.xtb
@@ -75,6 +75,7 @@
 <translation id="2871893339301912279">Tem sessão iniciada no Chrome!</translation>
 <translation id="2885378588091291677">Gestor de tarefas</translation>
 <translation id="2888126860611144412">Acerca do Chrome</translation>
+<translation id="2926676257163822632">As palavras-passe fracas são fáceis de adivinhar. Permita que o Chrome <ph name="BEGIN_LINK" />crie e memorize palavra-passes fortes<ph name="END_LINK" />.</translation>
 <translation id="2929907241665500097">O Chrome não foi atualizado. Ocorreu um erro. <ph name="BEGIN_LINK" />Corrija problemas de atualização do Chrome e falhas nas atualizações<ph name="END_LINK" />.</translation>
 <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> – Início de sessão na rede – Chrome</translation>
 <translation id="3037838751736561277">O Google Chrome está no modo em segundo plano.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ro.xtb b/chrome/app/resources/google_chrome_strings_ro.xtb
index 4b4df4b..c063a92 100644
--- a/chrome/app/resources/google_chrome_strings_ro.xtb
+++ b/chrome/app/resources/google_chrome_strings_ro.xtb
@@ -75,6 +75,7 @@
 <translation id="2871893339301912279">V-ați conectat la Chrome!</translation>
 <translation id="2885378588091291677">Manager de activități</translation>
 <translation id="2888126860611144412">Despre Chrome</translation>
+<translation id="2926676257163822632">Parolele slabe sunt ușor de ghicit. Permite browserului Chrome <ph name="BEGIN_LINK" />să creeze și să memoreze parole puternice pentru tine<ph name="END_LINK" />.</translation>
 <translation id="2929907241665500097">Chrome nu s-a actualizat. A apărut o eroare. <ph name="BEGIN_LINK" />Remediază problemele de actualizare și actualizările nereușite în Chrome.<ph name="END_LINK" /></translation>
 <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> – conectare la rețea – Chrome</translation>
 <translation id="3037838751736561277">Google Chrome este în modul fundal.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ru.xtb b/chrome/app/resources/google_chrome_strings_ru.xtb
index 88ef4730..761d0a2 100644
--- a/chrome/app/resources/google_chrome_strings_ru.xtb
+++ b/chrome/app/resources/google_chrome_strings_ru.xtb
@@ -75,6 +75,7 @@
 <translation id="2871893339301912279">Добро пожаловать в Chrome!</translation>
 <translation id="2885378588091291677">Диспетчер задач</translation>
 <translation id="2888126860611144412">О браузере Chrome</translation>
+<translation id="2926676257163822632">Простые пароли легко подобрать. Разрешите Chrome <ph name="BEGIN_LINK" />создавать и хранить надежные пароли для вас<ph name="END_LINK" />.</translation>
 <translation id="2929907241665500097">Не удалось обновить Chrome. <ph name="BEGIN_LINK" />Выяснить причины неполадок и устранить их<ph name="END_LINK" /></translation>
 <translation id="2969728957078202736">"<ph name="PAGE_TITLE" />" – вход в сеть – Chrome</translation>
 <translation id="3037838751736561277">Google Chrome работает в фоновом режиме</translation>
diff --git a/chrome/app/resources/google_chrome_strings_si.xtb b/chrome/app/resources/google_chrome_strings_si.xtb
index 6df7dcab..7649240 100644
--- a/chrome/app/resources/google_chrome_strings_si.xtb
+++ b/chrome/app/resources/google_chrome_strings_si.xtb
@@ -79,6 +79,7 @@
 <translation id="2871893339301912279">ඔබ Chromeට සයින් ඉන් වී ඇත!</translation>
 <translation id="2885378588091291677">කාර්ය කළමණාකරු</translation>
 <translation id="2888126860611144412">Chrome ගැන</translation>
+<translation id="2926676257163822632">දුර්වල මුරපද අනුමානය කිරීමට පහසුයි. <ph name="BEGIN_LINK" />ඔබ සඳහා ප්‍රබල මුරපද තැනීමට සහ මතක තබා ගැනීමට<ph name="END_LINK" /> Chrome හට ඉඩ දෙන්න.</translation>
 <translation id="2929907241665500097">Chrome යාවත්කාලීන නොවිය, යම් දෙයක් වැරදිණි. <ph name="BEGIN_LINK" />Chrome යාවත්කාලීන ගැටලු සහ අසමත් වූ යාවත්කාලීන නිරාකරණ කරන්න.<ph name="END_LINK" /></translation>
 <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> - ජාල පුරනය - Chrome</translation>
 <translation id="3037838751736561277">Google Chrome පසුබිම් ප්‍රකාරය තුළ ඇත.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sl.xtb b/chrome/app/resources/google_chrome_strings_sl.xtb
index 4fea611..c3371e7 100644
--- a/chrome/app/resources/google_chrome_strings_sl.xtb
+++ b/chrome/app/resources/google_chrome_strings_sl.xtb
@@ -79,6 +79,7 @@
 <translation id="2871893339301912279">Zdaj ste prijavljeni v Chrome.</translation>
 <translation id="2885378588091291677">Upravitelj opravil</translation>
 <translation id="2888126860611144412">O brskalniku Chrome</translation>
+<translation id="2926676257163822632">Šibka gesla je preprosto ugotoviti. Chromu omogočite, da <ph name="BEGIN_LINK" />ustvari zapletena gesla za vas in jih shrani<ph name="END_LINK" />.</translation>
 <translation id="2929907241665500097">Chrome se ni posodobil, prišlo je do napake. <ph name="BEGIN_LINK" />Odpravite težave s posodobitvijo Chroma in neuspelimi posodobitvami Chroma.<ph name="END_LINK" /></translation>
 <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> – Prijava v omrežje – Chrome</translation>
 <translation id="3037838751736561277">Google Chrome se izvaja v ozadju.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sq.xtb b/chrome/app/resources/google_chrome_strings_sq.xtb
index d845515..27ecfbb 100644
--- a/chrome/app/resources/google_chrome_strings_sq.xtb
+++ b/chrome/app/resources/google_chrome_strings_sq.xtb
@@ -79,8 +79,10 @@
 <translation id="2871893339301912279">Je i identifikuar në Chrome!</translation>
 <translation id="2885378588091291677">Menaxheri i detyrave</translation>
 <translation id="2888126860611144412">Rreth Chrome</translation>
+<translation id="2926676257163822632">Fjalëkalimet e dobëta mund të gjenden me lehtësi. Lejoje Chrome <ph name="BEGIN_LINK" />të krijojë dhe mbajë mend fjalëkalime të forta për ty<ph name="END_LINK" />.</translation>
 <translation id="2929907241665500097">Chrome nuk u përditësua. Ndodhi një gabim. <ph name="BEGIN_LINK" />Rregullo problemet e përditësimit të Chrome dhe përditësimet e dështuara.<ph name="END_LINK" /></translation>
 <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> - identifikimi në rrjet - Chrome</translation>
+<translation id="298099161970687941">Pyet kur të hapet Chrome</translation>
 <translation id="3037838751736561277">Google Chrome është në modalitetin e sfondit.</translation>
 <translation id="3059710691562604940">"Shfletimi i sigurt" është joaktiv. Chrome rekomandon aktivizimin e tij.</translation>
 <translation id="3065168410429928842">Skeda Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sv.xtb b/chrome/app/resources/google_chrome_strings_sv.xtb
index fbd64d5..d8d7aae 100644
--- a/chrome/app/resources/google_chrome_strings_sv.xtb
+++ b/chrome/app/resources/google_chrome_strings_sv.xtb
@@ -79,6 +79,7 @@
 <translation id="2871893339301912279">Du är inloggad i Chrome.</translation>
 <translation id="2885378588091291677">Aktivitetshanteraren</translation>
 <translation id="2888126860611144412">Om Chrome</translation>
+<translation id="2926676257163822632">Svaga lösenord är lätta att lista ut. Låt Chrome <ph name="BEGIN_LINK" />skapa och spara starka lösenord åt dig<ph name="END_LINK" />.</translation>
 <translation id="2929907241665500097">Ett fel uppstod och Chrome uppdaterades inte. <ph name="BEGIN_LINK" />Åtgärda uppdateringsproblem och misslyckade uppdateringar i Chrome.<ph name="END_LINK" /></translation>
 <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> – nätverksinloggning – Chrome</translation>
 <translation id="3037838751736561277">Google Chrome körs i bakgrundsläge.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_tr.xtb b/chrome/app/resources/google_chrome_strings_tr.xtb
index 2531a9e..e7b1790 100644
--- a/chrome/app/resources/google_chrome_strings_tr.xtb
+++ b/chrome/app/resources/google_chrome_strings_tr.xtb
@@ -75,6 +75,7 @@
 <translation id="2871893339301912279">Chrome'da oturum açtınız!</translation>
 <translation id="2885378588091291677">Görev Yöneticisi</translation>
 <translation id="2888126860611144412">Chrome hakkında</translation>
+<translation id="2926676257163822632">Zayıf şifrelerin tahmin edilmesi kolaydır. Chrome'un <ph name="BEGIN_LINK" />sizin için güçlü şifre oluşturup bu şifreleri hatırlamasına<ph name="END_LINK" /> izin verin.</translation>
 <translation id="2929907241665500097">Chrome güncellenmedi. Bir sorun oluştu. <ph name="BEGIN_LINK" />Chrome güncelleme sorunlarını ve başarısız güncellemeleri düzeltin.<ph name="END_LINK" /></translation>
 <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> - Ağda Oturum Açın - Chrome</translation>
 <translation id="3037838751736561277">Google Chrome arka plan modunda.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_vi.xtb b/chrome/app/resources/google_chrome_strings_vi.xtb
index 1b9ab64f..b7c13fa 100644
--- a/chrome/app/resources/google_chrome_strings_vi.xtb
+++ b/chrome/app/resources/google_chrome_strings_vi.xtb
@@ -77,6 +77,7 @@
 <translation id="2871893339301912279">Bạn đã đăng nhập vào Chrome!</translation>
 <translation id="2885378588091291677">Trình quản lý tác vụ</translation>
 <translation id="2888126860611144412">Giới thiệu về Chrome</translation>
+<translation id="2926676257163822632">Mật khẩu yếu thường dễ đoán. Chrome có thể <ph name="BEGIN_LINK" />tạo mật khẩu mạnh và ghi nhớ mật khẩu này cho bạn<ph name="END_LINK" />.</translation>
 <translation id="2929907241665500097">Đã xảy ra lỗi nên Chrome chưa cập nhật được. <ph name="BEGIN_LINK" />Hãy khắc phục các vấn đề cập nhật và các bản cập nhật không thành công của Chrome.<ph name="END_LINK" /></translation>
 <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> – Đăng nhập vào mạng – Chrome</translation>
 <translation id="3037838751736561277">Google Chrome đang chạy trong nền.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_zh-HK.xtb b/chrome/app/resources/google_chrome_strings_zh-HK.xtb
index cd9e90d5..1e502ca 100644
--- a/chrome/app/resources/google_chrome_strings_zh-HK.xtb
+++ b/chrome/app/resources/google_chrome_strings_zh-HK.xtb
@@ -79,6 +79,7 @@
 <translation id="2871893339301912279">您已登入 Chrome!</translation>
 <translation id="2885378588091291677">工作管理員</translation>
 <translation id="2888126860611144412">關於 Chrome</translation>
+<translation id="2926676257163822632">低強度密碼很容易讓有心人士猜中,請讓 Chrome <ph name="BEGIN_LINK" />為你建立一組高強度密碼,並儲存在 Chrome 中<ph name="END_LINK" />。</translation>
 <translation id="2929907241665500097">發生錯誤,Chrome 未能更新。<ph name="BEGIN_LINK" />請修正 Chrome 更新問題與更新失敗問題。<ph name="END_LINK" /></translation>
 <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> - 網絡登入 - Chrome</translation>
 <translation id="3037838751736561277">Google Chrome 正在背景模式中執行。</translation>
diff --git a/chrome/app/resources/google_chrome_strings_zh-TW.xtb b/chrome/app/resources/google_chrome_strings_zh-TW.xtb
index 47f67f9..1f4dd88 100644
--- a/chrome/app/resources/google_chrome_strings_zh-TW.xtb
+++ b/chrome/app/resources/google_chrome_strings_zh-TW.xtb
@@ -75,6 +75,7 @@
 <translation id="2871893339301912279">你已登入 Chrome!</translation>
 <translation id="2885378588091291677">工作管理員</translation>
 <translation id="2888126860611144412">關於 Chrome</translation>
+<translation id="2926676257163822632">低強度密碼很容易讓有心人士猜中,請讓 Chrome <ph name="BEGIN_LINK" />為你建立一組高強度密碼,並儲存在 Chrome 中<ph name="END_LINK" />。</translation>
 <translation id="2929907241665500097">發生錯誤,Chrome 未能更新。<ph name="BEGIN_LINK" />請修正 Chrome 更新問題與更新失敗項目。<ph name="END_LINK" /></translation>
 <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> - 網路登入 - Chrome</translation>
 <translation id="3037838751736561277">Google Chrome 正在背景模式中執行。</translation>
diff --git a/chrome/app/resources/google_chrome_strings_zu.xtb b/chrome/app/resources/google_chrome_strings_zu.xtb
index 3115aee..43f39d30 100644
--- a/chrome/app/resources/google_chrome_strings_zu.xtb
+++ b/chrome/app/resources/google_chrome_strings_zu.xtb
@@ -79,6 +79,7 @@
 <translation id="2871893339301912279">Ungene ngemvume ku-Chrome!</translation>
 <translation id="2885378588091291677">Isiphathi somsebenzi</translation>
 <translation id="2888126860611144412">Mayelana ne-Chrome</translation>
+<translation id="2926676257163822632">Amaphasiwedi angaqinile aqageleka kalula. Vumela i-Chrome <ph name="BEGIN_LINK" />ikudalele futhi ikhumbule amaphasiwedi aqinile<ph name="END_LINK" />.</translation>
 <translation id="2929907241665500097">I-Chrome ayibuyekezekanga, kunokuthile okungahambanga kahle. <ph name="BEGIN_LINK" />Lungisa izinkinga zokubuyekaza kwe-Chrome nezibuyekezo ezihlulekile.<ph name="END_LINK" /></translation>
 <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> - Inethiwekhi Yokungena ngemvume - i-Chrome</translation>
 <translation id="3037838751736561277">I-Google Chrome ikumodi yangemuva.</translation>
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index bba5414..8e70000 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -3812,6 +3812,10 @@
                                                               # to extensions
                                                               # section ?
       "speech/extension_api/tts_extension_api_constants.h",
+      "speech/speech_recognition_client_browser_interface.cc",
+      "speech/speech_recognition_client_browser_interface.h",
+      "speech/speech_recognition_client_browser_interface_factory.cc",
+      "speech/speech_recognition_client_browser_interface_factory.h",
       "speech/speech_recognition_service.cc",
       "speech/speech_recognition_service.h",
       "speech/speech_recognition_service_factory.cc",
diff --git a/chrome/browser/android/autofill_assistant/lite_service_bridge.cc b/chrome/browser/android/autofill_assistant/lite_service_bridge.cc
index 7bfd29ea..38ba8f0 100644
--- a/chrome/browser/android/autofill_assistant/lite_service_bridge.cc
+++ b/chrome/browser/android/autofill_assistant/lite_service_bridge.cc
@@ -11,7 +11,6 @@
 #include "components/autofill_assistant/browser/service/api_key_fetcher.h"
 #include "components/autofill_assistant/browser/service/lite_service.h"
 #include "components/autofill_assistant/browser/service/server_url_fetcher.h"
-#include "components/autofill_assistant/browser/service/service_impl.h"
 #include "content/public/browser/web_contents.h"
 
 namespace autofill_assistant {
@@ -48,17 +47,15 @@
   }
 
   ServerUrlFetcher url_fetcher{ServerUrlFetcher::GetDefaultServerUrl()};
-  auto request_sender = std::make_unique<ServiceRequestSender>(
-      web_contents->GetBrowserContext(), /* access_token_fetcher = */ nullptr,
-      std::make_unique<NativeURLLoaderFactory>(),
-      ApiKeyFetcher().GetAPIKey(chrome::GetChannel()),
-      /* auth_enabled = */ false, /* disable_auth_if_no_access_token = */ true);
-
   return reinterpret_cast<jlong>(new LiteService(
-      std::make_unique<ServiceImpl>(std::move(request_sender),
-                                    url_fetcher.GetSupportsScriptEndpoint(),
-                                    url_fetcher.GetNextActionsEndpoint(),
-                                    std::make_unique<EmptyClientContext>()),
+      std::make_unique<ServiceRequestSender>(
+          web_contents->GetBrowserContext(),
+          /* access_token_fetcher = */ nullptr,
+          std::make_unique<NativeURLLoaderFactory>(),
+          ApiKeyFetcher().GetAPIKey(chrome::GetChannel()),
+          /* auth_enabled = */ false,
+          /* disable_auth_if_no_access_token = */ true),
+      url_fetcher.GetNextActionsEndpoint(),
       base::android::ConvertJavaStringToUTF8(env, jtrigger_script_path),
       base::BindOnce(&OnFinished, base::android::ScopedJavaGlobalRef<jobject>(
                                       java_lite_service)),
diff --git a/chrome/browser/android/tab_android.cc b/chrome/browser/android/tab_android.cc
index 07da3b63..cf33a44 100644
--- a/chrome/browser/android/tab_android.cc
+++ b/chrome/browser/android/tab_android.cc
@@ -231,6 +231,14 @@
   return Java_TabImpl_isHidden(env, weak_java_tab_.get(env));
 }
 
+void TabAndroid::AddObserver(Observer* observer) {
+  observers_.AddObserver(observer);
+}
+
+void TabAndroid::RemoveObserver(Observer* observer) {
+  observers_.RemoveObserver(observer);
+}
+
 void TabAndroid::Destroy(JNIEnv* env, const JavaParamRef<jobject>& obj) {
   delete this;
 }
@@ -274,6 +282,9 @@
 
   // Shows a warning notification for dangerous flags in about:flags.
   chrome::ShowBadFlagsPrompt(web_contents());
+
+  for (Observer& observer : observers_)
+    observer.OnInitWebContents(this);
 }
 
 void TabAndroid::UpdateDelegates(
diff --git a/chrome/browser/android/tab_android.h b/chrome/browser/android/tab_android.h
index 9226bda..24652e2 100644
--- a/chrome/browser/android/tab_android.h
+++ b/chrome/browser/android/tab_android.h
@@ -14,6 +14,7 @@
 #include "base/android/scoped_java_ref.h"
 #include "base/callback_forward.h"
 #include "base/macros.h"
+#include "base/observer_list.h"
 #include "base/strings/string16.h"
 #include "base/supports_user_data.h"
 #include "chrome/browser/sync/glue/synced_tab_delegate_android.h"
@@ -49,6 +50,12 @@
     FULL_PRERENDERED_PAGE_LOAD = 3,
   };
 
+  class Observer : public base::CheckedObserver {
+   public:
+    // Called when WebContents is initialized.
+    virtual void OnInitWebContents(TabAndroid* tab) = 0;
+  };
+
   // Convenience method to retrieve the Tab associated with the passed
   // WebContents.  Can return NULL.
   static TabAndroid* FromWebContents(const content::WebContents* web_contents);
@@ -107,6 +114,12 @@
   bool IsCustomTab();
   bool IsHidden();
 
+  // Observers -----------------------------------------------------------------
+
+  // Adds/Removes an Observer.
+  void AddObserver(Observer* observer);
+  void RemoveObserver(Observer* observer);
+
   // Methods called from Java via JNI -----------------------------------------
 
   void Destroy(JNIEnv* env, const base::android::JavaParamRef<jobject>& obj);
@@ -179,6 +192,8 @@
   scoped_refptr<content::DevToolsAgentHost> devtools_host_;
   std::unique_ptr<browser_sync::SyncedTabDelegateAndroid> synced_tab_delegate_;
 
+  base::ObserverList<Observer> observers_;
+
   DISALLOW_COPY_AND_ASSIGN(TabAndroid);
 };
 
diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
index e9b31cd..3548ec3 100644
--- a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
+++ b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
@@ -72,9 +72,12 @@
 
 #if defined(OS_ANDROID)
 class AutocompleteClientTabAndroidUserData
-    : public TabAndroidUserData<AutocompleteClientTabAndroidUserData> {
+    : public TabAndroidUserData<AutocompleteClientTabAndroidUserData>,
+      public TabAndroid::Observer {
  public:
-  ~AutocompleteClientTabAndroidUserData() override = default;
+  ~AutocompleteClientTabAndroidUserData() override {
+    tab_->RemoveObserver(this);
+  }
 
   const GURL& GetStrippedURL() { return stripped_url_; }
 
@@ -89,10 +92,19 @@
     }
   }
 
+  // TabAndroid::Observer implementation
+  void OnInitWebContents(TabAndroid* tab) override {
+    tab->RemoveUserData(UserDataKey());
+  }
+
  private:
-  explicit AutocompleteClientTabAndroidUserData(TabAndroid* tab) {}
+  explicit AutocompleteClientTabAndroidUserData(TabAndroid* tab) : tab_(tab) {
+    DCHECK(tab);
+    tab->AddObserver(this);
+  }
   friend class TabAndroidUserData<AutocompleteClientTabAndroidUserData>;
 
+  TabAndroid* tab_;
   bool initialized_ = false;
   GURL stripped_url_;
 
@@ -505,8 +517,6 @@
       } else {
         // Browser did not load the tab yet after Chrome started. To avoid
         // reloading WebContents, we just compare URLs.
-        // TODO(crbug.com/1138729): Delete user data after WebContents is
-        // initialized.
         AutocompleteClientTabAndroidUserData::CreateForTabAndroid(tab);
         AutocompleteClientTabAndroidUserData* user_data =
             AutocompleteClientTabAndroidUserData::FromTabAndroid(tab);
diff --git a/chrome/browser/autofill/autofill_browsertest.cc b/chrome/browser/autofill/autofill_browsertest.cc
index 60e0fe26..bd93553a 100644
--- a/chrome/browser/autofill/autofill_browsertest.cc
+++ b/chrome/browser/autofill/autofill_browsertest.cc
@@ -35,6 +35,7 @@
 #include "components/autofill/core/browser/autofill_test_utils.h"
 #include "components/autofill/core/browser/data_model/autofill_profile.h"
 #include "components/autofill/core/browser/data_model/credit_card.h"
+#include "components/autofill/core/browser/pattern_provider/pattern_configuration_parser.h"
 #include "components/autofill/core/browser/personal_data_manager.h"
 #include "components/autofill/core/browser/personal_data_manager_observer.h"
 #include "components/autofill/core/browser/validation.h"
@@ -116,6 +117,11 @@
     // Don't want Keychain coming up on Mac.
     test::DisableSystemServices(browser()->profile()->GetPrefs());
 
+    // Load the MatchingPattern definitions.
+    base::RunLoop run_loop;
+    field_type_parsing::PopulateFromResourceBundle(run_loop.QuitClosure());
+    run_loop.Run();
+
     ASSERT_TRUE(embedded_test_server()->Start());
   }
 
diff --git a/chrome/browser/autofill/autofill_interactive_uitest.cc b/chrome/browser/autofill/autofill_interactive_uitest.cc
index 7dd45b7..7b14269 100644
--- a/chrome/browser/autofill/autofill_interactive_uitest.cc
+++ b/chrome/browser/autofill/autofill_interactive_uitest.cc
@@ -52,6 +52,7 @@
 #include "components/autofill/core/browser/autofill_manager_test_delegate.h"
 #include "components/autofill/core/browser/autofill_test_utils.h"
 #include "components/autofill/core/browser/data_model/autofill_profile.h"
+#include "components/autofill/core/browser/pattern_provider/pattern_configuration_parser.h"
 #include "components/autofill/core/browser/validation.h"
 #include "components/autofill/core/common/autofill_features.h"
 #include "components/autofill/core/common/autofill_util.h"
@@ -311,6 +312,11 @@
     LOG(ERROR)
         << "crbug/967588: embedded_test_server started accepting connections";
 
+    // Load the MatchingPattern definitions.
+    base::RunLoop run_loop;
+    field_type_parsing::PopulateFromResourceBundle(run_loop.QuitClosure());
+    run_loop.Run();
+
     // By default, all SSL cert checks are valid. Can be overriden in tests if
     // needed.
     cert_verifier_.mock_cert_verifier()->set_default_result(net::OK);
diff --git a/chrome/browser/autofill/form_structure_browsertest.cc b/chrome/browser/autofill/form_structure_browsertest.cc
index 1b73a08..c1d9e96 100644
--- a/chrome/browser/autofill/form_structure_browsertest.cc
+++ b/chrome/browser/autofill/form_structure_browsertest.cc
@@ -28,6 +28,7 @@
 #include "components/autofill/core/browser/autofill_manager.h"
 #include "components/autofill/core/browser/data_driven_test.h"
 #include "components/autofill/core/browser/form_structure.h"
+#include "components/autofill/core/browser/pattern_provider/pattern_configuration_parser.h"
 #include "components/autofill/core/common/autofill_features.h"
 #include "components/autofill/core/common/renderer_id.h"
 #include "content/public/common/content_switches.h"
@@ -177,6 +178,11 @@
 void FormStructureBrowserTest::SetUpOnMainThread() {
   InProcessBrowserTest::SetUpOnMainThread();
 
+  // Load the MatchingPattern definitions.
+  base::RunLoop run_loop;
+  field_type_parsing::PopulateFromResourceBundle(run_loop.QuitClosure());
+  run_loop.Run();
+
   embedded_test_server()->RegisterRequestHandler(base::BindRepeating(
       &FormStructureBrowserTest::HandleRequest, base::Unretained(this)));
   ASSERT_TRUE(embedded_test_server()->Start());
diff --git a/chrome/browser/browser_about_handler.cc b/chrome/browser/browser_about_handler.cc
index 4299abf1..ba0c5c3f 100644
--- a/chrome/browser/browser_about_handler.cc
+++ b/chrome/browser/browser_about_handler.cc
@@ -17,63 +17,39 @@
 #include "chrome/browser/ui/browser_dialogs.h"
 #include "chrome/common/chrome_switches.h"
 #include "chrome/common/url_constants.h"
-#include "components/url_formatter/url_fixer.h"
 #include "content/public/common/content_features.h"
 #include "extensions/buildflags/buildflags.h"
 
-bool FixupBrowserAboutURL(GURL* url,
-                          content::BrowserContext* browser_context) {
-  // Ensure that any cleanup done by FixupURL happens before the rewriting
-  // phase that determines the virtual URL, by including it in an initial
-  // URLHandler.  This prevents minor changes from producing a virtual URL,
-  // which could lead to a URL spoof.
-  *url = url_formatter::FixupURL(url->possibly_invalid_spec(), std::string());
-  return true;
-}
-
-bool WillHandleBrowserAboutURL(GURL* url,
-                               content::BrowserContext* browser_context) {
-  // TODO(msw): Eliminate "about:*" constants and literals from code and tests,
-  //            then hopefully we can remove this forced fixup.
-  FixupBrowserAboutURL(url, browser_context);
-
-  // Check that about: URLs are fixed up to chrome: by url_formatter::FixupURL.
+bool HandleChromeAboutAndChromeSyncRewrite(
+    GURL* url,
+    content::BrowserContext* browser_context) {
+  // Check that about: URLs are either
+  // 1) fixed up to chrome: (by url_formatter::FixupURL applied to
+  //    browser-initiated navigations)
+  // or
+  // 2) blocked (by content::RenderProcessHostImpl::FilterURL applied to
+  //    renderer-initiated navigations)
   DCHECK(url->IsAboutBlank() || url->IsAboutSrcdoc() ||
          !url->SchemeIs(url::kAboutScheme));
 
-  // Only handle chrome://foo/, url_formatter::FixupURL translates about:foo.
+  // Only handle chrome: URLs.
   if (!url->SchemeIs(content::kChromeUIScheme))
     return false;
 
   std::string host(url->host());
-  std::string path;
-
-  // Do not handle chrome://settings rewrites, they are handled in the
-  // HandleWebUI handler.
-  if (host == chrome::kChromeUISettingsHost)
-    return false;
-
-  // Do not handle chrome://help.
-  if (host == chrome::kChromeUIHelpHost)
-    return false;  // Handled in the HandleWebUI handler.
-
-  // Replace about with chrome-urls.
-  if (host == chrome::kChromeUIAboutHost)
+  if (host == chrome::kChromeUIAboutHost) {
+    // Replace chrome://about with chrome://chrome-urls.
     host = chrome::kChromeUIChromeURLsHost;
-
-  if (host == chrome::kChromeUISyncHost) {
-    // Replace sync with sync-internals (for legacy reasons).
+  } else if (host == chrome::kChromeUISyncHost) {
+    // Replace chrome://sync with chrome://sync-internals (for legacy reasons).
     host = chrome::kChromeUISyncInternalsHost;
-  } else if (host == chrome::kChromeUIHistoryHost) {
-    // Redirect chrome://history.
-    path = url->path();
   }
 
-  GURL::Replacements replacements;
-  replacements.SetHostStr(host);
-  if (!path.empty())
-    replacements.SetPathStr(path);
-  *url = url->ReplaceComponents(replacements);
+  if (host != url->host()) {
+    GURL::Replacements replacements;
+    replacements.SetHostStr(host);
+    *url = url->ReplaceComponents(replacements);
+  }
 
   // Having re-written the URL, make the chrome: handler process it.
   return false;
diff --git a/chrome/browser/browser_about_handler.h b/chrome/browser/browser_about_handler.h
index 2bbe5a8..5be7ae7b 100644
--- a/chrome/browser/browser_about_handler.h
+++ b/chrome/browser/browser_about_handler.h
@@ -11,20 +11,11 @@
 class BrowserContext;
 }
 
-// A preliminary URLHandler that performs cleanup on the URL before it is
-// rewritten.  Changes that happen here will not lead to a virtual URL.
-bool FixupBrowserAboutURL(GURL* url, content::BrowserContext* browser_context);
-
-// Returns true if the given URL will be handled by the browser about handler.
-// Nowadays, these go through the webui, so the return is always false.
-// Either way, |url| will be processed by url_formatter::FixupURL, which
-// replaces the about: scheme with chrome:// for all about:foo URLs except
-// "about:blank".
-// Some |url| host values will be replaced with their respective redirects.
-//
-// This is used by BrowserURLHandler.
-bool WillHandleBrowserAboutURL(GURL* url,
-                               content::BrowserContext* browser_context);
+// Rewrites chrome://about -> chrome://chrome-urls and chrome://sync ->
+// chrome://sync-internals.  Used with content::BrowserURLHandler.
+bool HandleChromeAboutAndChromeSyncRewrite(
+    GURL* url,
+    content::BrowserContext* browser_context);
 
 // We have a few magic commands that don't cause navigations, but rather pop up
 // dialogs. This function handles those cases, and returns true if so. In this
diff --git a/chrome/browser/browser_about_handler_unittest.cc b/chrome/browser/browser_about_handler_unittest.cc
index 86b8dc3..f0a170b 100644
--- a/chrome/browser/browser_about_handler_unittest.cc
+++ b/chrome/browser/browser_about_handler_unittest.cc
@@ -34,13 +34,13 @@
 
 class BrowserAboutHandlerTest : public testing::Test {
  protected:
-  void TestWillHandleBrowserAboutURL(
+  void TestHandleChromeAboutAndChromeSyncRewrite(
       const std::vector<AboutURLTestCase>& test_cases) {
     TestingProfile profile;
 
     for (const auto& test_case : test_cases) {
       GURL url(test_case.test_url);
-      WillHandleBrowserAboutURL(&url, &profile);
+      HandleChromeAboutAndChromeSyncRewrite(&url, &profile);
       EXPECT_EQ(test_case.expected_url, url);
     }
   }
@@ -49,7 +49,7 @@
   content::BrowserTaskEnvironment task_environment_;
 };
 
-TEST_F(BrowserAboutHandlerTest, WillHandleBrowserAboutURL) {
+TEST_F(BrowserAboutHandlerTest, HandleChromeAboutAndChromeSyncRewrite) {
   std::string chrome_prefix(content::kChromeUIScheme);
   chrome_prefix.append(url::kStandardSchemeSeparator);
   std::vector<AboutURLTestCase> test_cases(
@@ -69,26 +69,27 @@
            GURL(chrome_prefix + "host/path?query#ref"),
            GURL(chrome_prefix + "host/path?query#ref"),
        }});
-  TestWillHandleBrowserAboutURL(test_cases);
+  TestHandleChromeAboutAndChromeSyncRewrite(test_cases);
 }
 
-TEST_F(BrowserAboutHandlerTest, WillHandleBrowserAboutURLForMDSettings) {
+TEST_F(BrowserAboutHandlerTest,
+       HandleChromeAboutAndChromeSyncRewriteForMDSettings) {
   std::string chrome_prefix(content::kChromeUIScheme);
   chrome_prefix.append(url::kStandardSchemeSeparator);
   std::vector<AboutURLTestCase> test_cases(
       {{GURL(chrome_prefix + chrome::kChromeUISettingsHost),
         GURL(chrome_prefix + chrome::kChromeUISettingsHost)}});
-  TestWillHandleBrowserAboutURL(test_cases);
+  TestHandleChromeAboutAndChromeSyncRewrite(test_cases);
 }
 
-TEST_F(BrowserAboutHandlerTest, WillHandleBrowserAboutURLForHistory) {
+TEST_F(BrowserAboutHandlerTest,
+       HandleChromeAboutAndChromeSyncRewriteForHistory) {
   GURL::Replacements replace_foo_query;
   replace_foo_query.SetQueryStr("foo");
   GURL history_foo_url(
       GURL(chrome::kChromeUIHistoryURL).ReplaceComponents(replace_foo_query));
-  TestWillHandleBrowserAboutURL(std::vector<AboutURLTestCase>({
-      {GURL("about:history"), GURL(chrome::kChromeUIHistoryURL)},
-      {GURL(chrome::kChromeUIHistoryURL), GURL(chrome::kChromeUIHistoryURL)},
+  TestHandleChromeAboutAndChromeSyncRewrite(std::vector<AboutURLTestCase>({
+      {GURL("chrome:history"), GURL(chrome::kChromeUIHistoryURL)},
       {GURL(chrome::kChromeUIHistoryURL), GURL(chrome::kChromeUIHistoryURL)},
       {history_foo_url, history_foo_url},
   }));
@@ -100,18 +101,19 @@
 TEST_F(BrowserAboutHandlerTest, NoVirtualURLForFixup) {
   GURL url("view-source:http://.foo");
 
-  // Fixup will remove the dot and add a slash.
-  GURL fixed_url("view-source:http://foo/");
-
+  // No "fixing" of the URL is expected at the content::NavigationEntry layer.
+  // We should only "fix" strings from the user (e.g. URLs from the Omnibox).
+  //
   // Rewriters will remove the view-source prefix and expect it to stay in the
   // virtual URL.
-  GURL rewritten_url("http://foo/");
+  GURL expected_virtual_url = url;
+  GURL expected_url("http://.foo/");
 
   TestingProfile profile;
   std::unique_ptr<NavigationEntry> entry(
       NavigationController::CreateNavigationEntry(
           url, Referrer(), base::nullopt, ui::PAGE_TRANSITION_RELOAD, false,
           std::string(), &profile, nullptr /* blob_url_loader_factory */));
-  EXPECT_EQ(fixed_url, entry->GetVirtualURL());
-  EXPECT_EQ(rewritten_url, entry->GetURL());
+  EXPECT_EQ(expected_virtual_url, entry->GetVirtualURL());
+  EXPECT_EQ(expected_url, entry->GetURL());
 }
diff --git a/chrome/browser/chrome_browser_interface_binders.cc b/chrome/browser/chrome_browser_interface_binders.cc
index b27224a..0a8a486 100644
--- a/chrome/browser/chrome_browser_interface_binders.cc
+++ b/chrome/browser/chrome_browser_interface_binders.cc
@@ -110,10 +110,13 @@
 #include "chrome/browser/promo_browser_command/promo_browser_command.mojom.h"
 #include "chrome/browser/search/ntp_features.h"
 #include "chrome/browser/search/shopping_tasks/shopping_tasks.mojom.h"
+#include "chrome/browser/speech/speech_recognition_client_browser_interface.h"
+#include "chrome/browser/speech/speech_recognition_client_browser_interface_factory.h"
 #include "chrome/browser/speech/speech_recognition_service.h"
 #include "chrome/browser/speech/speech_recognition_service_factory.h"
 #include "chrome/browser/ui/webui/downloads/downloads.mojom.h"
 #include "chrome/browser/ui/webui/downloads/downloads_ui.h"
+#include "mojo/public/cpp/bindings/self_owned_receiver.h"
 #if !defined(OFFICIAL_BUILD)
 #include "chrome/browser/ui/webui/new_tab_page/foo/foo.mojom.h"  // nogncheck crbug.com/1125897
 #endif
@@ -409,14 +412,25 @@
     mojo::PendingReceiver<media::mojom::SpeechRecognitionContext> receiver) {
   Profile* profile = Profile::FromBrowserContext(
       frame_host->GetProcess()->GetBrowserContext());
-  PrefService* profile_prefs = profile->GetPrefs();
-  if (profile_prefs->GetBoolean(prefs::kLiveCaptionEnabled) &&
-      base::FeatureList::IsEnabled(media::kLiveCaption)) {
+  if (base::FeatureList::IsEnabled(media::kLiveCaption)) {
     SpeechRecognitionServiceFactory::GetForProfile(profile)->Create(
         std::move(receiver));
   }
 }
 
+void BindSpeechRecognitionClientBrowserInterfaceHandler(
+    content::RenderFrameHost* frame_host,
+    mojo::PendingReceiver<media::mojom::SpeechRecognitionClientBrowserInterface>
+        receiver) {
+  if (base::FeatureList::IsEnabled(media::kLiveCaption)) {
+    Profile* profile = Profile::FromBrowserContext(
+        frame_host->GetProcess()->GetBrowserContext());
+
+    SpeechRecognitionClientBrowserInterfaceFactory::GetForProfile(profile)
+        ->BindReceiver(std::move(receiver));
+  }
+}
+
 void BindCaptionContextHandler(
     content::RenderFrameHost* frame_host,
     mojo::PendingReceiver<chrome::mojom::CaptionHost> receiver) {
@@ -561,6 +575,8 @@
 #if !defined(OS_ANDROID)
   map->Add<media::mojom::SpeechRecognitionContext>(
       base::BindRepeating(&BindSpeechRecognitionContextHandler));
+  map->Add<media::mojom::SpeechRecognitionClientBrowserInterface>(
+      base::BindRepeating(&BindSpeechRecognitionClientBrowserInterfaceHandler));
   map->Add<chrome::mojom::CaptionHost>(
       base::BindRepeating(&BindCaptionContextHandler));
 #endif
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
index ec6b054..44be095 100644
--- a/chrome/browser/chrome_content_browser_client.cc
+++ b/chrome/browser/chrome_content_browser_client.cc
@@ -3521,11 +3521,8 @@
   for (size_t i = 0; i < extra_parts_.size(); ++i)
     extra_parts_[i]->BrowserURLHandlerCreated(handler);
 
-  // about: handler. Must come before chrome: handler, since it will
-  // rewrite about: urls to chrome: URLs and then expect chrome: to
-  // actually handle them.  Also relies on a preliminary fixup phase.
-  handler->SetFixupHandler(&FixupBrowserAboutURL);
-  handler->AddHandlerPair(&WillHandleBrowserAboutURL,
+  // Handler to rewrite chrome://about and chrome://sync URLs.
+  handler->AddHandlerPair(&HandleChromeAboutAndChromeSyncRewrite,
                           BrowserURLHandler::null_handler());
 
 #if defined(OS_ANDROID)
diff --git a/chrome/browser/chrome_navigation_browsertest.cc b/chrome/browser/chrome_navigation_browsertest.cc
index f38289fd..e0bfd07 100644
--- a/chrome/browser/chrome_navigation_browsertest.cc
+++ b/chrome/browser/chrome_navigation_browsertest.cc
@@ -347,36 +347,15 @@
   TestCtrlClick("test-anchor-with-subframe-target");
 }
 
-class ChromeNavigationPortMappedBrowserTest : public InProcessBrowserTest {
- public:
-  ChromeNavigationPortMappedBrowserTest() {}
-  ~ChromeNavigationPortMappedBrowserTest() override {}
-
-  void SetUpCommandLine(base::CommandLine* command_line) override {
-    ASSERT_TRUE(embedded_test_server()->Start());
-
-    // Use the command line parameter for the host resolver, so URLs without
-    // explicit port numbers can be mapped under the hood to the port number
-    // the |embedded_test_server| uses. It is required to test with potentially
-    // malformed URLs.
-    std::string port =
-        base::NumberToString(embedded_test_server()->host_port_pair().port());
-    command_line->AppendSwitchASCII(
-        "host-resolver-rules",
-        "MAP * 127.0.0.1:" + port + ", EXCLUDE 127.0.0.1*");
-  }
-
- private:
-  DISALLOW_COPY_AND_ASSIGN(ChromeNavigationPortMappedBrowserTest);
-};
-
 // Test to verify that spoofing a URL via a redirect from a slightly malformed
 // URL doesn't work.  See also https://crbug.com/657720.
-IN_PROC_BROWSER_TEST_F(ChromeNavigationPortMappedBrowserTest,
+IN_PROC_BROWSER_TEST_F(ChromeNavigationBrowserTest,
                        ContextMenuNavigationToInvalidUrl) {
   GURL initial_url = embedded_test_server()->GetURL("/title1.html");
   GURL new_tab_url(
       "www.foo.com::/server-redirect?http%3A%2F%2Fbar.com%2Ftitle2.html");
+  EXPECT_TRUE(new_tab_url.is_valid());
+  EXPECT_EQ("www.foo.com", new_tab_url.scheme());
 
   // Navigate to an initial page, to ensure we have a committed document
   // from which to perform a context menu initiated navigation.
@@ -397,21 +376,41 @@
   menu.Init();
   menu.ExecuteCommand(IDC_CONTENT_CONTEXT_OPENLINKNEWTAB, 0);
 
-  // Wait for the new tab to be created and for loading to stop.
+  // Wait for the new tab to be created.
   tab_add.Wait();
   int index_of_new_tab = browser()->tab_strip_model()->count() - 1;
   content::WebContents* new_web_contents =
       browser()->tab_strip_model()->GetWebContentsAt(index_of_new_tab);
-  EXPECT_TRUE(WaitForLoadStop(new_web_contents));
 
-  // Verify that the final URL after the redirects gets committed.
-  EXPECT_EQ(GURL("http://bar.com/title2.html"),
-            new_web_contents->GetLastCommittedURL());
+  // Verify that the load fails (because of the wrong "scheme" - www.foo.com is
+  // not a real scheme).
+  EXPECT_FALSE(WaitForLoadStop(new_web_contents));
+
+  // Verify that the invalid URL was not committed.
+  content::NavigationController& navigation_controller =
+      new_web_contents->GetController();
+  EXPECT_EQ(nullptr, navigation_controller.GetLastCommittedEntry());
+  EXPECT_EQ(0, navigation_controller.GetEntryCount());
+
+  // Verify that the pending entry is still present, even though the navigation
+  // has failed and didn't commit.  We preserve the pending entry if it is a
+  // valid URL in an unmodified blank tab.
+  content::NavigationEntry* pending_entry =
+      navigation_controller.GetPendingEntry();
+  ASSERT_NE(nullptr, pending_entry);
+  EXPECT_EQ(new_tab_url, pending_entry->GetURL());
+
+  // Verify that the pending entry is not shown anymore, after
+  // WebContentsImpl::DidAccessInitialDocument detects that the initial, empty
+  // document was accessed.
+  EXPECT_EQ(pending_entry, navigation_controller.GetVisibleEntry());
+  EXPECT_TRUE(content::ExecuteScript(new_web_contents, "window.x=3"));
+  EXPECT_NE(pending_entry, navigation_controller.GetVisibleEntry());
 }
 
-// Ensure that a failed navigation in a new tab will not leave an invalid
-// visible URL, which may be formatted in an unsafe way in the omnibox.
-// See https://crbug.com/850824.
+// Ensure that URL transformations do not let a webpage populate the Omnibox
+// with a javascript: URL.  See https://crbug.com/850824 and
+// https://crbug.com/1116280.
 IN_PROC_BROWSER_TEST_F(ChromeNavigationBrowserTest,
                        ClearInvalidPendingURLOnFail) {
   GURL initial_url = embedded_test_server()->GetURL(
@@ -424,12 +423,15 @@
 
   const char* kTestUrls[] = {
       // https://crbug.com/850824
-      "a.a:@javascript:foo()",
+      "o.o:@javascript:foo()",
 
       // https://crbug.com/1116280
       "o.o:@javascript::://foo.com%0Aalert(document.domain)"};
   for (const char* kTestUrl : kTestUrls) {
     SCOPED_TRACE(testing::Message() << "kTestUrl = " << kTestUrl);
+    GURL test_url(kTestUrl);
+    EXPECT_TRUE(test_url.is_valid());
+    EXPECT_EQ("o.o", test_url.scheme());
 
     // Set the test URL.
     const char kUrlSettingTemplate[] = R"(
@@ -449,11 +451,8 @@
     // The load in the new window should fail.
     EXPECT_FALSE(WaitForLoadStop(new_contents));
 
-    // Ensure that there is no pending entry or visible URL.
-    EXPECT_EQ(nullptr, new_contents->GetController().GetPendingEntry());
-    EXPECT_EQ(GURL(), new_contents->GetVisibleURL());
-
     // Ensure that the omnibox doesn't start with javascript: scheme.
+    EXPECT_EQ(test_url, new_contents->GetVisibleURL());
     OmniboxView* omnibox_view =
         browser()->window()->GetLocationBar()->GetOmniboxView();
     std::string omnibox_text = base::UTF16ToASCII(omnibox_view->GetText());
diff --git a/chrome/browser/chromeos/BUILD.gn b/chrome/browser/chromeos/BUILD.gn
index 1278b58..abecefa 100644
--- a/chrome/browser/chromeos/BUILD.gn
+++ b/chrome/browser/chromeos/BUILD.gn
@@ -3780,7 +3780,10 @@
     # broken.
     "../../common/extensions/api/file_browser_handlers/file_browser_handler_manifest_unittest.cc",
     "../../common/extensions/api/file_system_provider/file_system_provider_handler_unittest.cc",
-    "../ui/views/frame/immersive_mode_controller_ash_unittest.cc",
+
+    # TODO(crbug.com/1113900): Consider making this test available on lacros
+    # builds as well.
+    "../ui/views/frame/immersive_mode_controller_chromeos_unittest.cc",
     "../ui/views/select_file_dialog_extension_unittest.cc",
     "../ui/webui/chromeos/login/l10n_util_test_util.cc",
     "../ui/webui/chromeos/login/l10n_util_test_util.h",
diff --git a/chrome/browser/chromeos/accessibility/spoken_feedback_browsertest.cc b/chrome/browser/chromeos/accessibility/spoken_feedback_browsertest.cc
index 3692fb68..f815120a 100644
--- a/chrome/browser/chromeos/accessibility/spoken_feedback_browsertest.cc
+++ b/chrome/browser/chromeos/accessibility/spoken_feedback_browsertest.cc
@@ -23,7 +23,12 @@
 #include "build/build_config.h"
 #include "chrome/app/chrome_command_ids.h"
 #include "chrome/browser/chromeos/accessibility/accessibility_manager.h"
+#include "chrome/browser/chromeos/login/screens/sync_consent_screen.h"
+#include "chrome/browser/chromeos/login/test/device_state_mixin.h"
+#include "chrome/browser/chromeos/login/test/login_manager_mixin.h"
 #include "chrome/browser/chromeos/login/test/oobe_base_test.h"
+#include "chrome/browser/chromeos/profiles/profile_helper.h"
+#include "chrome/browser/profiles/profile_manager.h"
 #include "chrome/browser/ui/ash/launcher/chrome_launcher_controller.h"
 #include "chrome/browser/ui/aura/accessibility/automation_manager_aura.h"
 #include "chrome/browser/ui/browser.h"
@@ -33,6 +38,7 @@
 #include "chrome/common/extensions/extension_constants.h"
 #include "chrome/test/base/interactive_test_utils.h"
 #include "chrome/test/base/ui_test_utils.h"
+#include "chromeos/constants/chromeos_features.h"
 #include "chromeos/constants/chromeos_switches.h"
 #include "components/user_manager/user_names.h"
 #include "content/public/browser/browser_task_traits.h"
@@ -936,13 +942,7 @@
   DISALLOW_COPY_AND_ASSIGN(OobeSpokenFeedbackTest);
 };
 
-#if defined(MEMORY_SANITIZER)
-// Times out under MSan: https://crbug.com/1071693
-#define MAYBE_SpokenFeedbackInOobe DISABLED_SpokenFeedbackInOobe
-#else
-#define MAYBE_SpokenFeedbackInOobe SpokenFeedbackInOobe
-#endif
-IN_PROC_BROWSER_TEST_F(OobeSpokenFeedbackTest, MAYBE_SpokenFeedbackInOobe) {
+IN_PROC_BROWSER_TEST_F(OobeSpokenFeedbackTest, SpokenFeedbackInOobe) {
   ui_controls::EnableUIControls();
   ASSERT_FALSE(AccessibilityManager::Get()->IsSpokenFeedbackEnabled());
   AccessibilityManager::Get()->EnableSpokenFeedback(true);
@@ -960,4 +960,45 @@
   sm_.Replay();
 }
 
+class SigninToUserProfileSwitchTest : public OobeSpokenFeedbackTest {
+ public:
+  // OobeSpokenFeedbackTest:
+  void SetUpCommandLine(base::CommandLine* command_line) override {
+    OobeSpokenFeedbackTest::SetUpCommandLine(command_line);
+    // Force the help app to launch in the background.
+    command_line->AppendSwitch(switches::kForceFirstRunUI);
+  }
+
+ protected:
+  LoginManagerMixin login_manager_{&mixin_host_};
+  DeviceStateMixin device_state_{
+      &mixin_host_, DeviceStateMixin::State::OOBE_COMPLETED_UNOWNED};
+};
+
+// Verifies that spoken feedback correctly handles profile switch (signin ->
+// user) and announces the sync consent screen correctly.
+IN_PROC_BROWSER_TEST_F(SigninToUserProfileSwitchTest, LoginAsNewUser) {
+  // Force sync screen.
+  auto reset = SyncConsentScreen::ForceBrandedBuildForTesting(true);
+  AccessibilityManager::Get()->EnableSpokenFeedback(true);
+  sm_.ExpectSpeechPattern("*");
+
+  sm_.Call([this]() {
+    ASSERT_EQ(chromeos::AccessibilityManager::Get()->profile(),
+              ProfileHelper::GetSigninProfile());
+    login_manager_.LoginAsNewRegularUser();
+  });
+
+  std::string button_title =
+      features::IsSplitSettingsSyncEnabled() ? "Got it" : "Accept and continue";
+  sm_.ExpectSpeech(button_title);
+
+  // Check that profile switched to the active user.
+  sm_.Call([]() {
+    ASSERT_EQ(chromeos::AccessibilityManager::Get()->profile(),
+              ProfileManager::GetActiveUserProfile());
+  });
+  sm_.Replay();
+}
+
 }  // namespace chromeos
diff --git a/chrome/browser/chromeos/crosapi/browser_util.cc b/chrome/browser/chromeos/crosapi/browser_util.cc
index b53ada1..6a4eaa2aa 100644
--- a/chrome/browser/chromeos/crosapi/browser_util.cc
+++ b/chrome/browser/chromeos/crosapi/browser_util.cc
@@ -70,7 +70,7 @@
   auto params = mojom::LacrosInitParams::New();
   params->ash_chrome_service_version =
       crosapi::mojom::AshChromeService::Version_;
-  params->ash_metrics_enabled_has_value = true;
+  params->deprecated_ash_metrics_enabled_has_value = true;
   params->ash_metrics_enabled = g_browser_process->local_state()->GetBoolean(
       metrics::prefs::kMetricsReportingEnabled);
 
diff --git a/chrome/browser/chromeos/login/existing_user_controller.cc b/chrome/browser/chromeos/login/existing_user_controller.cc
index 9164dde..882ab2b 100644
--- a/chrome/browser/chromeos/login/existing_user_controller.cc
+++ b/chrome/browser/chromeos/login/existing_user_controller.cc
@@ -640,8 +640,10 @@
     }
   }
   if (min_delta < base::TimeDelta::Max()) {
-    DCHECK(!screen_refresh_timer_->IsRunning());
-    // Schedule update task
+    // Schedule update task. If the timer was already running (which is possible
+    // when device settings get updated and we are re-running
+    // UpdateLoginDisplay) we will restart screen_refresh_timer_ with a new
+    // timeout value.
     screen_refresh_timer_->Start(
         FROM_HERE, min_delta,
         base::BindOnce(&ExistingUserController::
diff --git a/chrome/browser/chromeos/login/oobe_interactive_ui_test.cc b/chrome/browser/chromeos/login/oobe_interactive_ui_test.cc
index f7eb55e..43555561 100644
--- a/chrome/browser/chromeos/login/oobe_interactive_ui_test.cc
+++ b/chrome/browser/chromeos/login/oobe_interactive_ui_test.cc
@@ -193,16 +193,6 @@
   test::OobeJS().ExpectVisible("fingerprint-setup");
   test::OobeJS().ExpectVisiblePath({"fingerprint-setup", "setupFingerprint"});
 
-  test::OobeJS().CreateFocusWaiter({"fingerprint-setup", "next"})->Wait();
-
-  test::OobeJS().TapOnPath({"fingerprint-setup", "next"});
-  test::OobeJS().ExpectHiddenPath({"fingerprint-setup", "setupFingerprint"});
-  LOG(INFO) << "OobeInteractiveUITest: Waiting for fingerprint setup "
-               "to switch to placeFinger.";
-  test::OobeJS()
-      .CreateVisibilityWaiter(true, {"fingerprint-setup", "placeFinger"})
-      ->Wait();
-
   EXPECT_FALSE(ash::LoginScreenTestApi::IsShutdownButtonShown());
   EXPECT_FALSE(ash::LoginScreenTestApi::IsGuestButtonShown());
   EXPECT_FALSE(ash::LoginScreenTestApi::IsAddUserButtonShown());
diff --git a/chrome/browser/chromeos/login/screens/fingerprint_setup_browsertest.cc b/chrome/browser/chromeos/login/screens/fingerprint_setup_browsertest.cc
index b76820c..bb5816bc 100644
--- a/chrome/browser/chromeos/login/screens/fingerprint_setup_browsertest.cc
+++ b/chrome/browser/chromeos/login/screens/fingerprint_setup_browsertest.cc
@@ -23,16 +23,12 @@
 
 const test::UIPath kFingerprintScreen = {"fingerprint-setup"};
 const test::UIPath kStartPage = {"fingerprint-setup", "setupFingerprint"};
-const test::UIPath kFingerprintPositionPage = {"fingerprint-setup",
-                                               "placeFinger"};
 const test::UIPath kProgressPage = {"fingerprint-setup",
                                     "startFingerprintEnroll"};
 const test::UIPath kFingerprintArc = {"fingerprint-setup", "arc"};
 const test::UIPath kScanningAnimation = {"fingerprint-setup", "arc",
                                          "scanningAnimation"};
 const test::UIPath kDoneButton = {"fingerprint-setup", "done"};
-const test::UIPath kDoItLaterButton = {"fingerprint-setup", "setupLater"};
-const test::UIPath kNextButtonOnStart = {"fingerprint-setup", "next"};
 const test::UIPath kSkipButtonOnStart = {"fingerprint-setup", "skipStart"};
 const test::UIPath kSkipButtonOnProgress = {"fingerprint-setup",
                                             "skipProgress"};
@@ -127,9 +123,6 @@
         "OOBE.StepCompletionTimeByExitReason.Fingerprint-setup.Skipped",
         result == Result::SKIPPED);
     histogram_tester_.ExpectTotalCount(
-        "OOBE.StepCompletionTimeByExitReason.Fingerprint-setup.DoItLater",
-        result == Result::DO_IT_LATER);
-    histogram_tester_.ExpectTotalCount(
         "OOBE.StepCompletionTime.Fingerprint-setup",
         result != Result::NOT_APPLICABLE);
   }
@@ -220,6 +213,7 @@
 IN_PROC_BROWSER_TEST_F(FingerprintSetupTest, FingerprintSetupCancel) {
   ShowFingerprintScreen();
 
+  test::OobeJS().CreateVisibilityWaiter(true, kStartPage)->Wait();
   test::OobeJS().TapOnPath(kSkipButtonOnStart);
 
   WaitForScreenExit();
@@ -229,34 +223,4 @@
                   static_cast<int>(UserAction::kSetupSkipped), 1)));
 }
 
-IN_PROC_BROWSER_TEST_F(FingerprintSetupTest, FingerprintSetupNext) {
-  ShowFingerprintScreen();
-
-  test::OobeJS().TapOnPath(kNextButtonOnStart);
-
-  test::OobeJS().CreateVisibilityWaiter(true, kFingerprintPositionPage)->Wait();
-
-  test::OobeJS().ExpectHiddenPath(kStartPage);
-
-  EXPECT_THAT(GetAllRecordedUserActions(),
-              ElementsAre(base::Bucket(
-                  static_cast<int>(UserAction::kShowSensorLocation), 1)));
-}
-
-IN_PROC_BROWSER_TEST_F(FingerprintSetupTest, FingerprintSetupLater) {
-  ShowFingerprintScreen();
-
-  test::OobeJS().TapOnPath(kNextButtonOnStart);
-  test::OobeJS().CreateVisibilityWaiter(true, kFingerprintPositionPage)->Wait();
-  test::OobeJS().TapOnPath(kDoItLaterButton);
-
-  WaitForScreenExit();
-  ExpectResult(FingerprintSetupScreen::Result::DO_IT_LATER);
-  EXPECT_THAT(
-      GetAllRecordedUserActions(),
-      ElementsAre(
-          base::Bucket(static_cast<int>(UserAction::kDoItLater), 1),
-          base::Bucket(static_cast<int>(UserAction::kShowSensorLocation), 1)));
-}
-
 }  // namespace chromeos
diff --git a/chrome/browser/chromeos/login/screens/fingerprint_setup_screen.cc b/chrome/browser/chromeos/login/screens/fingerprint_setup_screen.cc
index 74851657..902a313 100644
--- a/chrome/browser/chromeos/login/screens/fingerprint_setup_screen.cc
+++ b/chrome/browser/chromeos/login/screens/fingerprint_setup_screen.cc
@@ -22,9 +22,7 @@
 
 constexpr char kUserActionSetupDone[] = "setup-done";
 constexpr char kUserActionSetupSkipped[] = "setup-skipped";
-constexpr char kUserActionDoItLater[] = "do-it-later";
 constexpr char kUserActionAddAnotherFinger[] = "add-another-finger";
-constexpr char kUserActionShowSensorLocation[] = "show-sensor-location";
 
 struct FingerprintSetupUserAction {
   const char* name_;
@@ -35,11 +33,8 @@
     {kUserActionSetupDone, FingerprintSetupScreen::UserAction::kSetupDone},
     {kUserActionSetupSkipped,
      FingerprintSetupScreen::UserAction::kSetupSkipped},
-    {kUserActionDoItLater, FingerprintSetupScreen::UserAction::kDoItLater},
     {kUserActionAddAnotherFinger,
      FingerprintSetupScreen::UserAction::kAddAnotherFinger},
-    {kUserActionShowSensorLocation,
-     FingerprintSetupScreen::UserAction::kShowSensorLocation},
 };
 
 void RecordFingerprintSetupUserAction(
@@ -97,8 +92,6 @@
       return "Done";
     case Result::SKIPPED:
       return "Skipped";
-    case Result::DO_IT_LATER:
-      return "DoItLater";
     case Result::NOT_APPLICABLE:
       return BaseScreen::kNotApplicable;
   }
@@ -162,8 +155,6 @@
     exit_callback_.Run(Result::DONE);
   } else if (action_id == kUserActionSetupSkipped) {
     exit_callback_.Run(Result::SKIPPED);
-  } else if (action_id == kUserActionDoItLater) {
-    exit_callback_.Run(Result::DO_IT_LATER);
   } else if (action_id == kUserActionAddAnotherFinger) {
     StartAddingFinger();
   }
diff --git a/chrome/browser/chromeos/login/screens/fingerprint_setup_screen.h b/chrome/browser/chromeos/login/screens/fingerprint_setup_screen.h
index 35b1f38c..611cc96 100644
--- a/chrome/browser/chromeos/login/screens/fingerprint_setup_screen.h
+++ b/chrome/browser/chromeos/login/screens/fingerprint_setup_screen.h
@@ -25,7 +25,7 @@
 class FingerprintSetupScreen : public BaseScreen,
                                public device::mojom::FingerprintObserver {
  public:
-  enum class Result { DONE, SKIPPED, DO_IT_LATER, NOT_APPLICABLE };
+  enum class Result { DONE, SKIPPED, NOT_APPLICABLE };
 
   // This enum is tied directly to a UMA enum defined in
   // //tools/metrics/histograms/enums.xml, and should always reflect it (do not
@@ -34,10 +34,10 @@
   enum class UserAction {
     kSetupDone = 0,
     kSetupSkipped = 1,
-    kDoItLater = 2,
+    // kDoItLater_obsolete = 2,
     kAddAnotherFinger = 3,
-    kShowSensorLocation = 4,
-    kMaxValue = kShowSensorLocation
+    kShowSensorLocation_obsolete = 4, // need to be kept for `kMaxValue`
+    kMaxValue = kShowSensorLocation_obsolete
   };
 
   static std::string GetResultString(Result result);
diff --git a/chrome/browser/chromeos/login/test/oobe_screens_utils.cc b/chrome/browser/chromeos/login/test/oobe_screens_utils.cc
index 43ce072..401071ab 100644
--- a/chrome/browser/chromeos/login/test/oobe_screens_utils.cc
+++ b/chrome/browser/chromeos/login/test/oobe_screens_utils.cc
@@ -91,11 +91,11 @@
 }
 
 void ExitFingerprintPinSetupScreen() {
-  test::OobeJS().ExpectVisiblePath({"fingerprint-setup", "placeFinger"});
+  test::OobeJS().ExpectVisiblePath({"fingerprint-setup", "setupFingerprint"});
   // This might be the last step in flow. Synchronous execute gets stuck as
   // WebContents may be destroyed in the process. So it may never return.
   // So we use ExecuteAsync() here.
-  test::OobeJS().ExecuteAsync("$('fingerprint-setup').$.setupLater.click()");
+  test::OobeJS().ExecuteAsync("$('fingerprint-setup').$.skipStart.click()");
   LOG(INFO) << "OobeInteractiveUITest: Waiting for fingerprint setup screen "
                "to close.";
   WaitForExit(FingerprintSetupScreenView::kScreenId);
diff --git a/chrome/browser/chromeos/printing/cups_printers_manager.cc b/chrome/browser/chromeos/printing/cups_printers_manager.cc
index aa1f05e..92dd089 100644
--- a/chrome/browser/chromeos/printing/cups_printers_manager.cc
+++ b/chrome/browser/chromeos/printing/cups_printers_manager.cc
@@ -264,11 +264,21 @@
   void OnActiveNetworksChanged(
       std::vector<chromeos::network_config::mojom::NetworkStatePropertiesPtr>
           networks) override {
+    if (!HasNetworkDisconnected(networks)) {
+      // We only update the discovered list if we disconnected from our previous
+      // default network.
+      return;
+    }
+
     PRINTER_LOG(DEBUG) << "Network change.  Refresh printers list.";
+
     // Clear the network detected printers when the active network changes.
     // This ensures that connecting to a new network will give us only newly
     // detected printers.
     ClearNetworkDetectedPrinters();
+
+    // Notify observers that the printer list has changed.
+    RebuildDetectedLists();
   }
 
   void OnNetworkStateChanged(
@@ -603,6 +613,33 @@
     }
   }
 
+  // Returns true if we've disconnected from our current network. Updates
+  // the current active network. This method is not reentrant.
+  bool HasNetworkDisconnected(
+      const std::vector<
+          chromeos::network_config::mojom::NetworkStatePropertiesPtr>&
+          networks) {
+    // An empty current_network indicates that we're not connected to a valid
+    // network right now.
+    std::string current_network;
+    if (!networks.empty()) {
+      // The first network is the default network which receives mDNS
+      // multicasts.
+      current_network = networks.front()->guid;
+    }
+
+    // If we attach to a network after being disconnected, we do not want to
+    // forcibly clear our detected list.  It is either already empty or contains
+    // valid entries because we missed the original connection event.
+    bool network_disconnected =
+        !active_network_.empty() && current_network != active_network_;
+
+    // Ensure that we don't register network state updates as network changes.
+    active_network_ = std::move(current_network);
+
+    return network_disconnected;
+  }
+
   // Record in UMA the appropriate event with a setup attempt for a printer is
   // abandoned.
   void RecordSetupAbandoned(const Printer& printer) override {
@@ -710,6 +747,9 @@
   // is initialized and configured correctly.
   bool enterprise_printers_are_ready_ = false;
 
+  // GUID of the current default network.
+  std::string active_network_;
+
   // Tracks PpdReference resolution. Also stores USB manufacturer string if
   // available.
   PpdResolutionTracker ppd_resolution_tracker_;
diff --git a/chrome/browser/chromeos/scanning/scanning_type_converters.cc b/chrome/browser/chromeos/scanning/scanning_type_converters.cc
index 2c2d27e33..a7d2568 100644
--- a/chrome/browser/chromeos/scanning/scanning_type_converters.cc
+++ b/chrome/browser/chromeos/scanning/scanning_type_converters.cc
@@ -13,6 +13,45 @@
 
 namespace mojo_ipc = chromeos::scanning::mojom;
 
+// POD struct for page size dimensions in mm.
+struct PageSize {
+  int width;
+  int height;
+};
+
+// ISO A4: 210 x 297 mm.
+constexpr PageSize kIsoA4PageSize = {
+    210,
+    297,
+};
+
+// NA Letter: 216 x 279 mm.
+constexpr PageSize kNaLetterPageSize = {
+    216,
+    279,
+};
+
+// Returns true if |area| is large enough to support |page_size|.
+bool AreaSupportsPageSize(const lorgnette::ScannableArea& area,
+                          const PageSize& page_size) {
+  return area.width() >= page_size.width && area.height() >= page_size.height;
+}
+
+// Returns the page sizes the given |area| supports.
+std::vector<mojo_ipc::PageSize> GetSupportedPageSizes(
+    const lorgnette::ScannableArea& area) {
+  std::vector<mojo_ipc::PageSize> page_sizes;
+  page_sizes.reserve(3);
+  page_sizes.push_back(mojo_ipc::PageSize::kMax);
+  if (AreaSupportsPageSize(area, kIsoA4PageSize))
+    page_sizes.push_back(mojo_ipc::PageSize::kIsoA4);
+
+  if (AreaSupportsPageSize(area, kNaLetterPageSize))
+    page_sizes.push_back(mojo_ipc::PageSize::kNaLetter);
+
+  return page_sizes;
+}
+
 }  // namespace
 
 template <>
@@ -77,7 +116,8 @@
   mojo_caps.sources.reserve(lorgnette_caps.sources().size());
   for (const auto& source : lorgnette_caps.sources()) {
     mojo_caps.sources.push_back(mojo_ipc::ScanSource::New(
-        mojo::ConvertTo<mojo_ipc::SourceType>(source.type()), source.name()));
+        mojo::ConvertTo<mojo_ipc::SourceType>(source.type()), source.name(),
+        GetSupportedPageSizes(source.area())));
   }
 
   mojo_caps.color_modes.reserve(lorgnette_caps.color_modes().size());
diff --git a/chrome/browser/chromeos/scanning/scanning_type_converters_unittest.cc b/chrome/browser/chromeos/scanning/scanning_type_converters_unittest.cc
index cfbb648..266962d 100644
--- a/chrome/browser/chromeos/scanning/scanning_type_converters_unittest.cc
+++ b/chrome/browser/chromeos/scanning/scanning_type_converters_unittest.cc
@@ -6,12 +6,15 @@
 
 #include "chromeos/components/scanning/mojom/scanning.mojom.h"
 #include "chromeos/dbus/lorgnette/lorgnette_service.pb.h"
+#include "testing/gmock/include/gmock/gmock-matchers.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace chromeos {
 
 namespace {
 
+using ::testing::ElementsAreArray;
+
 namespace mojo_ipc = scanning::mojom;
 
 // POD struct for ScannerCapabilitiesTest.
@@ -31,6 +34,11 @@
 // Document source name used for tests.
 constexpr char kDocumentSourceName[] = "Test Name";
 
+// Scannable area dimensions used for tests. These are large enough to ensure
+// every page size is supported by the scanner.
+constexpr int kScanAreaWidthMm = 500;
+constexpr int kScanAreaHeightMm = 750;
+
 // Resolutions used for tests.
 constexpr uint32_t kFirstResolution = 75;
 constexpr uint32_t kSecondResolution = 300;
@@ -41,6 +49,8 @@
   lorgnette::DocumentSource source;
   source.set_type(source_type);
   source.set_name(kDocumentSourceName);
+  source.mutable_area()->set_width(kScanAreaWidthMm);
+  source.mutable_area()->set_height(kScanAreaHeightMm);
   return source;
 }
 
@@ -96,6 +106,10 @@
   ASSERT_EQ(mojo_caps->sources.size(), 1u);
   EXPECT_EQ(mojo_caps->sources[0]->type, params().mojom_source_type);
   EXPECT_EQ(mojo_caps->sources[0]->name, kDocumentSourceName);
+  EXPECT_THAT(
+      mojo_caps->sources[0]->page_sizes,
+      ElementsAreArray({mojo_ipc::PageSize::kMax, mojo_ipc::PageSize::kIsoA4,
+                        mojo_ipc::PageSize::kNaLetter}));
   ASSERT_EQ(mojo_caps->color_modes.size(), 1u);
   EXPECT_EQ(mojo_caps->color_modes[0], params().mojom_color_mode);
   ASSERT_EQ(mojo_caps->resolutions.size(), 2u);
diff --git a/chrome/browser/engagement/site_engagement_service_unittest.cc b/chrome/browser/engagement/site_engagement_service_unittest.cc
index 09a9743..bb1fbb1b 100644
--- a/chrome/browser/engagement/site_engagement_service_unittest.cc
+++ b/chrome/browser/engagement/site_engagement_service_unittest.cc
@@ -470,8 +470,8 @@
   // The https and http versions of www.google.com should be separate.
   GURL url1("ftp://www.google.com/");
   GURL url2("file://blah");
-  GURL url3("chrome://");
-  GURL url4("about://config");
+  GURL url3("chrome://version/");
+  GURL url4("chrome://config");
 
   NavigateAndCommit(url1);
   service->HandleUserInput(web_contents(),
diff --git a/chrome/browser/extensions/api/extension_action/browser_action_interactive_test.cc b/chrome/browser/extensions/api/extension_action/browser_action_interactive_test.cc
index a6c30ff..f1e3b70c 100644
--- a/chrome/browser/extensions/api/extension_action/browser_action_interactive_test.cc
+++ b/chrome/browser/extensions/api/extension_action/browser_action_interactive_test.cc
@@ -240,7 +240,7 @@
         content::NotificationService::AllSources());
     // Open a new window.
     new_browser = chrome::FindBrowserWithWebContents(browser()->OpenURL(
-        content::OpenURLParams(GURL("about:"), content::Referrer(),
+        content::OpenURLParams(GURL("about:blank"), content::Referrer(),
                                WindowOpenDisposition::NEW_WINDOW,
                                ui::PAGE_TRANSITION_TYPED, false)));
     // Hide all the buttons to test that it opens even when the browser action
@@ -522,9 +522,9 @@
   EXPECT_EQ(TRUE, ::IsWindow(browser_hwnd));
 
   // Create a new browser window to prevent the message loop from terminating.
-  browser()->OpenURL(content::OpenURLParams(GURL("about:"), content::Referrer(),
-                                            WindowOpenDisposition::NEW_WINDOW,
-                                            ui::PAGE_TRANSITION_TYPED, false));
+  browser()->OpenURL(content::OpenURLParams(
+      GURL("chrome://version"), content::Referrer(),
+      WindowOpenDisposition::NEW_WINDOW, ui::PAGE_TRANSITION_TYPED, false));
 
   // Forcibly closing the browser HWND should not cause a crash.
   EXPECT_EQ(TRUE, ::CloseWindow(browser_hwnd));
diff --git a/chrome/browser/extensions/api/feedback_private/feedback_browsertest.cc b/chrome/browser/extensions/api/feedback_private/feedback_browsertest.cc
index 32b30e7..b93c0800 100644
--- a/chrome/browser/extensions/api/feedback_private/feedback_browsertest.cc
+++ b/chrome/browser/extensions/api/feedback_private/feedback_browsertest.cc
@@ -287,7 +287,7 @@
 IN_PROC_BROWSER_TEST_F(FeedbackTest, DISABLED_GetTargetTabUrl) {
   const std::pair<std::string, std::string> test_cases[] = {
       {"https://www.google.com/", "https://www.google.com/"},
-      {"about://version/", chrome::kChromeUIVersionURL},
+      {"chrome://version/", chrome::kChromeUIVersionURL},
       {chrome::kChromeUIBookmarksURL, chrome::kChromeUIBookmarksURL},
   };
 
diff --git a/chrome/browser/first_run/first_run_internal_lacros.cc b/chrome/browser/first_run/first_run_internal_lacros.cc
index 877ff1f..2895f7d 100644
--- a/chrome/browser/first_run/first_run_internal_lacros.cc
+++ b/chrome/browser/first_run/first_run_internal_lacros.cc
@@ -4,8 +4,6 @@
 
 #include "chrome/browser/first_run/first_run_internal.h"
 
-#include "build/branding_buildflags.h"
-#include "chrome/browser/first_run/first_run_dialog.h"
 #include "chrome/browser/metrics/metrics_reporting_state.h"
 #include "chromeos/crosapi/mojom/crosapi.mojom.h"
 #include "chromeos/lacros/lacros_chrome_service_impl.h"
@@ -16,18 +14,6 @@
 void DoPostImportPlatformSpecificTasks(Profile* profile) {
   const crosapi::mojom::LacrosInitParams* init_params =
       chromeos::LacrosChromeServiceImpl::Get()->init_params();
-  // For old versions of ash that don't send the metrics state, always show
-  // the first run dialog. We don't worry about policy control because lacros
-  // doesn't support that yet, and this code will be removed before policy
-  // support is added.
-  // TODO(https://crbug.com/1131164): Remove after M87 beta, when all supported
-  // ash versions will set |ash_metrics_enabled| true or false.
-  if (!init_params->ash_metrics_enabled_has_value) {
-#if BUILDFLAG(GOOGLE_CHROME_BRANDING)
-    ShowFirstRunDialog(profile);
-#endif
-    return;
-  }
   // Lacros skips the first run dialog because Chrome is the default browser on
   // Chrome OS and metrics consent is chosen during the Chrome OS out of box
   // setup experience. Lacros inherits first-run metrics consent from ash over
diff --git a/chrome/browser/nearby_sharing/contacts/fake_nearby_share_contact_manager.cc b/chrome/browser/nearby_sharing/contacts/fake_nearby_share_contact_manager.cc
index 0629d0e..84b19a56 100644
--- a/chrome/browser/nearby_sharing/contacts/fake_nearby_share_contact_manager.cc
+++ b/chrome/browser/nearby_sharing/contacts/fake_nearby_share_contact_manager.cc
@@ -12,10 +12,12 @@
 FakeNearbyShareContactManager::Factory::CreateInstance(
     PrefService* pref_service,
     NearbyShareClientFactory* http_client_factory,
-    NearbyShareLocalDeviceDataManager* local_device_data_manager) {
+    NearbyShareLocalDeviceDataManager* local_device_data_manager,
+    const std::string& profile_user_name) {
   latest_pref_service_ = pref_service;
   latest_http_client_factory_ = http_client_factory;
   latest_local_device_data_manager_ = local_device_data_manager;
+  latest_profile_user_name_ = profile_user_name;
 
   auto instance = std::make_unique<FakeNearbyShareContactManager>();
   instances_.push_back(instance.get());
diff --git a/chrome/browser/nearby_sharing/contacts/fake_nearby_share_contact_manager.h b/chrome/browser/nearby_sharing/contacts/fake_nearby_share_contact_manager.h
index a6183df..ffa47a7 100644
--- a/chrome/browser/nearby_sharing/contacts/fake_nearby_share_contact_manager.h
+++ b/chrome/browser/nearby_sharing/contacts/fake_nearby_share_contact_manager.h
@@ -51,18 +51,24 @@
       return latest_local_device_data_manager_;
     }
 
+    std::string latest_profile_user_name() const {
+      return latest_profile_user_name_;
+    }
+
    private:
     // NearbyShareContactManagerImpl::Factory:
     std::unique_ptr<NearbyShareContactManager> CreateInstance(
         PrefService* pref_service,
         NearbyShareClientFactory* http_client_factory,
-        NearbyShareLocalDeviceDataManager* local_device_data_manager) override;
+        NearbyShareLocalDeviceDataManager* local_device_data_manager,
+        const std::string& profile_user_name) override;
 
     std::vector<FakeNearbyShareContactManager*> instances_;
     PrefService* latest_pref_service_ = nullptr;
     NearbyShareClientFactory* latest_http_client_factory_ = nullptr;
     NearbyShareLocalDeviceDataManager* latest_local_device_data_manager_ =
         nullptr;
+    std::string latest_profile_user_name_;
   };
 
   FakeNearbyShareContactManager();
diff --git a/chrome/browser/nearby_sharing/contacts/nearby_share_contact_manager_impl.cc b/chrome/browser/nearby_sharing/contacts/nearby_share_contact_manager_impl.cc
index 34681844..2b48e247 100644
--- a/chrome/browser/nearby_sharing/contacts/nearby_share_contact_manager_impl.cc
+++ b/chrome/browser/nearby_sharing/contacts/nearby_share_contact_manager_impl.cc
@@ -61,6 +61,15 @@
   return contacts;
 }
 
+nearbyshare::proto::Contact CreateLocalContact(
+    const std::string& profile_user_name) {
+  nearbyshare::proto::Contact contact;
+  contact.mutable_identifier()->set_account_name(profile_user_name);
+  // Always consider your own account a selected contact.
+  contact.set_is_selected(true);
+  return contact;
+}
+
 // Creates a hex-encoded hash of the contact data, implicitly including the
 // allowlist, to be sent to the Nearby Share server. This hash is persisted and
 // used to detect any changes to the user's contact list or allowlist since the
@@ -138,13 +147,16 @@
 NearbyShareContactManagerImpl::Factory::Create(
     PrefService* pref_service,
     NearbyShareClientFactory* http_client_factory,
-    NearbyShareLocalDeviceDataManager* local_device_data_manager) {
+    NearbyShareLocalDeviceDataManager* local_device_data_manager,
+    const std::string& profile_user_name) {
   if (test_factory_) {
     return test_factory_->CreateInstance(pref_service, http_client_factory,
-                                         local_device_data_manager);
+                                         local_device_data_manager,
+                                         profile_user_name);
   }
   return base::WrapUnique(new NearbyShareContactManagerImpl(
-      pref_service, http_client_factory, local_device_data_manager));
+      pref_service, http_client_factory, local_device_data_manager,
+      profile_user_name));
 }
 
 // static
@@ -158,10 +170,12 @@
 NearbyShareContactManagerImpl::NearbyShareContactManagerImpl(
     PrefService* pref_service,
     NearbyShareClientFactory* http_client_factory,
-    NearbyShareLocalDeviceDataManager* local_device_data_manager)
+    NearbyShareLocalDeviceDataManager* local_device_data_manager,
+    const std::string& profile_user_name)
     : pref_service_(pref_service),
       http_client_factory_(http_client_factory),
       local_device_data_manager_(local_device_data_manager),
+      profile_user_name_(profile_user_name),
       contact_download_and_upload_scheduler_(
           NearbyShareSchedulerFactory::CreatePeriodicScheduler(
               kContactDownloadPeriod,
@@ -250,10 +264,20 @@
   NotifyContactsDownloaded(allowed_contact_ids, contacts);
   NotifyMojoObserverContactsDownloaded(allowed_contact_ids, contacts);
 
-  // Only request a contacts upload if the contact list or allowlist has changed
-  // since the last successful upload.
   std::vector<nearbyshare::proto::Contact> contacts_to_upload =
       ContactRecordsToContacts(GetAllowedContacts(), contacts);
+
+  // Enable cross-device self-share by adding your account to the list of
+  // contacts. It is also marked as a selected contact.
+  if (profile_user_name_.empty()) {
+    NS_LOG(WARNING) << __func__ << ": Profile user name is empty; could not "
+                    << "add self to list of contacts to upload.";
+  } else {
+    contacts_to_upload.push_back(CreateLocalContact(profile_user_name_));
+  }
+
+  // Only request a contacts upload if the contact list or allowlist has changed
+  // since the last successful upload.
   std::string contact_upload_hash = ComputeHash(contacts_to_upload);
   if (contact_upload_hash ==
       pref_service_->GetString(
diff --git a/chrome/browser/nearby_sharing/contacts/nearby_share_contact_manager_impl.h b/chrome/browser/nearby_sharing/contacts/nearby_share_contact_manager_impl.h
index f614083..e3a6d539 100644
--- a/chrome/browser/nearby_sharing/contacts/nearby_share_contact_manager_impl.h
+++ b/chrome/browser/nearby_sharing/contacts/nearby_share_contact_manager_impl.h
@@ -36,7 +36,7 @@
 // uploaded contact data, and after every contacts download, a subsequent upload
 // request is made if we detect that the contact list or allowlist has changed
 // since the last successful upload.
-
+//
 // In addition to supporting on-demand contact downloads, this implementation
 // periodically checks in with the Nearby Share server to see if the user's
 // contact list has changed since the last upload.
@@ -47,7 +47,8 @@
     static std::unique_ptr<NearbyShareContactManager> Create(
         PrefService* pref_service,
         NearbyShareClientFactory* http_client_factory,
-        NearbyShareLocalDeviceDataManager* local_device_data_manager);
+        NearbyShareLocalDeviceDataManager* local_device_data_manager,
+        const std::string& profile_user_name);
     static void SetFactoryForTesting(Factory* test_factory);
 
    protected:
@@ -55,7 +56,8 @@
     virtual std::unique_ptr<NearbyShareContactManager> CreateInstance(
         PrefService* pref_service,
         NearbyShareClientFactory* http_client_factory,
-        NearbyShareLocalDeviceDataManager* local_device_data_manager) = 0;
+        NearbyShareLocalDeviceDataManager* local_device_data_manager,
+        const std::string& profile_user_name) = 0;
 
    private:
     static Factory* test_factory_;
@@ -67,7 +69,8 @@
   NearbyShareContactManagerImpl(
       PrefService* pref_service,
       NearbyShareClientFactory* http_client_factory,
-      NearbyShareLocalDeviceDataManager* local_device_data_manager);
+      NearbyShareLocalDeviceDataManager* local_device_data_manager,
+      const std::string& profile_user_name);
 
   // NearbyShareContactsManager:
   void DownloadContacts() override;
@@ -98,6 +101,7 @@
   PrefService* pref_service_ = nullptr;
   NearbyShareClientFactory* http_client_factory_ = nullptr;
   NearbyShareLocalDeviceDataManager* local_device_data_manager_ = nullptr;
+  std::string profile_user_name_;
   std::unique_ptr<NearbyShareScheduler> contact_download_and_upload_scheduler_;
   std::unique_ptr<NearbyShareContactDownloader> contact_downloader_;
   mojo::RemoteSet<nearby_share::mojom::DownloadContactsObserver> observers_set_;
diff --git a/chrome/browser/nearby_sharing/contacts/nearby_share_contact_manager_impl_unittest.cc b/chrome/browser/nearby_sharing/contacts/nearby_share_contact_manager_impl_unittest.cc
index 43b4a5b..7f2c47d 100644
--- a/chrome/browser/nearby_sharing/contacts/nearby_share_contact_manager_impl_unittest.cc
+++ b/chrome/browser/nearby_sharing/contacts/nearby_share_contact_manager_impl_unittest.cc
@@ -34,6 +34,7 @@
 const char kTestContactEmailPrefix[] = "email_";
 const char kTestContactPhonePrefix[] = "phone_";
 const char kTestDefaultDeviceName[] = "Josh's Chromebook";
+const char kTestProfileUserName[] = "test@google.com";
 
 // From nearby_share_contact_manager_impl.cc.
 constexpr base::TimeDelta kContactDownloadPeriod =
@@ -85,8 +86,10 @@
 }
 
 // Converts a list of ContactRecord protos, along with the allowlist, into a
-// list of Contact protos. From nearby_share_contact_manager_impl.cc.
-std::vector<nearbyshare::proto::Contact> ContactRecordsToContacts(
+// list of Contact protos. To enable self-sharing across devices, we expect the
+// local device to include itself in the contact list as an allowed contact.
+// Partially from nearby_share_contact_manager_impl.cc.
+std::vector<nearbyshare::proto::Contact> BuildContactListToUpload(
     const std::set<std::string>& allowed_contact_ids,
     const std::vector<nearbyshare::proto::ContactRecord>& contact_records) {
   std::vector<nearbyshare::proto::Contact> contacts;
@@ -99,6 +102,13 @@
       contacts.push_back(contact);
     }
   }
+
+  // Add self to list of contacts.
+  nearbyshare::proto::Contact contact;
+  contact.mutable_identifier()->set_account_name(kTestProfileUserName);
+  contact.set_is_selected(true);
+  contacts.push_back(contact);
+
   return contacts;
 }
 
@@ -154,7 +164,8 @@
         &downloader_factory_);
 
     manager_ = NearbyShareContactManagerImpl::Factory::Create(
-        &pref_service_, &http_client_factory_, &local_device_data_manager_);
+        &pref_service_, &http_client_factory_, &local_device_data_manager_,
+        kTestProfileUserName);
     manager_awaiter_ =
         std::make_unique<nearby_share::mojom::ContactManagerAsyncWaiter>(
             manager_.get());
@@ -442,7 +453,7 @@
   // requested, which succeeds.
   DownloadContacts();
   SucceedDownload(contact_records, allowlist, /*expect_upload=*/true);
-  FinishUpload(/*success=*/true, /*expected_contacts=*/ContactRecordsToContacts(
+  FinishUpload(/*success=*/true, /*expected_contacts=*/BuildContactListToUpload(
                    allowlist, contact_records));
 
   // When contacts are downloaded again, we decect that contacts have not
@@ -462,7 +473,7 @@
   // requested, which succeeds.
   DownloadContacts();
   SucceedDownload(contact_records, allowlist, /*expect_upload=*/true);
-  FinishUpload(/*success=*/true, /*expected_contacts=*/ContactRecordsToContacts(
+  FinishUpload(/*success=*/true, /*expected_contacts=*/BuildContactListToUpload(
                    allowlist, contact_records));
 
   // When contacts are downloaded again, we decect that contacts have changed
@@ -470,7 +481,7 @@
   contact_records = TestContactRecordList(/*num_contacts=*/4u);
   DownloadContacts();
   SucceedDownload(contact_records, allowlist, /*expect_upload=*/true);
-  FinishUpload(/*success=*/true, /*expected_contacts=*/ContactRecordsToContacts(
+  FinishUpload(/*success=*/true, /*expected_contacts=*/BuildContactListToUpload(
                    allowlist, contact_records));
 }
 
@@ -485,7 +496,7 @@
   // requested, which succeeds.
   DownloadContacts();
   SucceedDownload(contact_records, allowlist, /*expect_upload=*/true);
-  FinishUpload(/*success=*/true, /*expected_contacts=*/ContactRecordsToContacts(
+  FinishUpload(/*success=*/true, /*expected_contacts=*/BuildContactListToUpload(
                    allowlist, contact_records));
 
   // When contacts are downloaded again, we decect that the allowlist has
@@ -494,7 +505,7 @@
   SetAllowedContacts(allowlist, /*expect_allowlist_changed=*/true);
   DownloadContacts();
   SucceedDownload(contact_records, allowlist, /*expect_upload=*/true);
-  FinishUpload(/*success=*/true, /*expected_contacts=*/ContactRecordsToContacts(
+  FinishUpload(/*success=*/true, /*expected_contacts=*/BuildContactListToUpload(
                    allowlist, contact_records));
 }
 
@@ -513,7 +524,7 @@
   // requested, which succeeds.
   DownloadContacts();
   SucceedDownload(contact_records, allowlist, /*expect_upload=*/true);
-  FinishUpload(/*success=*/true, /*expected_contacts=*/ContactRecordsToContacts(
+  FinishUpload(/*success=*/true, /*expected_contacts=*/BuildContactListToUpload(
                    allowlist, contact_records));
 
   // When contacts are downloaded again, we decect that contacts have changed
@@ -522,7 +533,7 @@
   DownloadContacts();
   SucceedDownload(contact_records, allowlist, /*expect_upload=*/true);
   FinishUpload(/*success=*/false,
-               /*expected_contacts=*/ContactRecordsToContacts(allowlist,
+               /*expected_contacts=*/BuildContactListToUpload(allowlist,
                                                               contact_records));
 
   // When contacts are downloaded again, we should continue to indicate that
@@ -532,7 +543,7 @@
   DownloadContacts();
   SucceedDownload(contact_records, allowlist, /*expect_upload=*/true);
   FinishUpload(/*success=*/true,
-               /*expected_contacts=*/ContactRecordsToContacts(allowlist,
+               /*expected_contacts=*/BuildContactListToUpload(allowlist,
                                                               contact_records));
 }
 
@@ -546,12 +557,12 @@
   SetAllowedContacts(allowlist, /*expect_allowlist_changed=*/true);
   DownloadContacts();
   SucceedDownload(contact_records, allowlist, /*expect_upload=*/true);
-  FinishUpload(/*success=*/true, /*expected_contacts=*/ContactRecordsToContacts(
+  FinishUpload(/*success=*/true, /*expected_contacts=*/BuildContactListToUpload(
                    allowlist, contact_records));
 
   // Hardcode expected contact upload hash to ensure that hashed value is
   // consistent across process starts.
-  EXPECT_EQ("DB408F2F01561308A97E9B6A1DB28536BEE33283D3E5B3842EFADAD4034E79DE",
+  EXPECT_EQ("82A323B94B26BAED808E5FF1F83F11C795D598738522A0D307F1FE768BFEF286",
             pref_service()->GetString(
                 prefs::kNearbySharingContactUploadHashPrefName));
 }
diff --git a/chrome/browser/nearby_sharing/nearby_sharing_service_impl.cc b/chrome/browser/nearby_sharing/nearby_sharing_service_impl.cc
index 487fb418..d598b69f 100644
--- a/chrome/browser/nearby_sharing/nearby_sharing_service_impl.cc
+++ b/chrome/browser/nearby_sharing/nearby_sharing_service_impl.cc
@@ -240,7 +240,8 @@
       contact_manager_(NearbyShareContactManagerImpl::Factory::Create(
           prefs,
           http_client_factory_.get(),
-          local_device_data_manager_.get())),
+          local_device_data_manager_.get(),
+          profile->GetProfileUserName())),
       certificate_manager_(NearbyShareCertificateManagerImpl::Factory::Create(
           local_device_data_manager_.get(),
           contact_manager_.get(),
diff --git a/chrome/browser/page_load_metrics/observers/scheme_page_load_metrics_observer_unittest.cc b/chrome/browser/page_load_metrics/observers/scheme_page_load_metrics_observer_unittest.cc
index b82a4c8..2a359f9 100644
--- a/chrome/browser/page_load_metrics/observers/scheme_page_load_metrics_observer_unittest.cc
+++ b/chrome/browser/page_load_metrics/observers/scheme_page_load_metrics_observer_unittest.cc
@@ -11,6 +11,7 @@
 #include "chrome/browser/page_load_metrics/observers/page_load_metrics_observer_test_harness.h"
 #include "components/page_load_metrics/browser/page_load_tracker.h"
 #include "components/page_load_metrics/common/test/page_load_metrics_test_util.h"
+#include "content/public/common/url_constants.h"
 
 class SchemePageLoadMetricsObserverTest
     : public page_load_metrics::PageLoadMetricsObserverTestHarness {
@@ -171,8 +172,8 @@
 }
 
 // Make sure no metrics are recorded for an unobserved scheme.
-TEST_F(SchemePageLoadMetricsObserverTest, AboutNavigation) {
-  SimulateNavigation(url::kAboutScheme);
+TEST_F(SchemePageLoadMetricsObserverTest, WebUINavigation) {
+  SimulateNavigation(content::kChromeUIScheme);
   CheckHistograms(0, "");
 }
 
diff --git a/chrome/browser/password_manager/chrome_password_manager_client_unittest.cc b/chrome/browser/password_manager/chrome_password_manager_client_unittest.cc
index 527dab6..fcb994e 100644
--- a/chrome/browser/password_manager/chrome_password_manager_client_unittest.cc
+++ b/chrome/browser/password_manager/chrome_password_manager_client_unittest.cc
@@ -542,7 +542,7 @@
             log_router->RegisterReceiver(&log_receiver));
 
   // But then navigate to a WebUI, there the logging should not be active.
-  NavigateAndCommit(GURL("about:password-manager-internals"));
+  NavigateAndCommit(GURL("chrome://password-manager-internals/"));
   EXPECT_FALSE(GetClient()->GetLogManager()->IsLoggingActive());
 
   log_router->UnregisterReceiver(&log_receiver);
diff --git a/chrome/browser/renderer_host/DEPS b/chrome/browser/renderer_host/DEPS
index 01daa08d..1693ddbe 100644
--- a/chrome/browser/renderer_host/DEPS
+++ b/chrome/browser/renderer_host/DEPS
@@ -2,8 +2,6 @@
   # renderer_host is intended to support the content layer's renderers. No
   # reference to the tab contents is allowed.
   "-chrome/browser/tab_contents",
-  # Allow tab_util.h for GetWebContentsByID.
-  "+chrome/browser/tab_contents/tab_util.h",
   "+components/page_load_metrics/browser",
   "+third_party/ocmock/OCMock/OCMock.h",
   "+third_party/ocmock/ocmock_extensions.h",
diff --git a/chrome/browser/resource_coordinator/tab_metrics_logger_unittest.cc b/chrome/browser/resource_coordinator/tab_metrics_logger_unittest.cc
index 13fb34f..b7fcdf6 100644
--- a/chrome/browser/resource_coordinator/tab_metrics_logger_unittest.cc
+++ b/chrome/browser/resource_coordinator/tab_metrics_logger_unittest.cc
@@ -216,7 +216,7 @@
 
   // Add a foreground tab.
   tab_activity_simulator.AddWebContentsAndNavigate(tab_strip_model,
-                                                   GURL("about://blank"));
+                                                   GURL("about:blank"));
   tab_strip_model->ActivateTabAt(0);
 
   // Add a background tab to test.
diff --git a/chrome/browser/resources/BUILD.gn b/chrome/browser/resources/BUILD.gn
index 6ce674c..20ecd25 100644
--- a/chrome/browser/resources/BUILD.gn
+++ b/chrome/browser/resources/BUILD.gn
@@ -533,17 +533,20 @@
     grit_flags = [
       "-E",
       "root_gen_dir=" + rebase_path(root_gen_dir, root_build_dir),
+      "-E",
+      "root_src_dir=" + rebase_path("//", root_build_dir),
     ]
-    if (optimize_webui) {
-      source = "signin/profile_picker/profile_picker_resources_vulcanized.grd"
-      deps = [ "//chrome/browser/resources/signin/profile_picker:build" ]
-    } else {
-      source = "signin/profile_picker/profile_picker_resources.grd"
-      deps =
-          [ "//chrome/browser/resources/signin/profile_picker:web_components" ]
-    }
 
     defines = chrome_grit_defines
+
+    # These arguments are needed since the grd is generated at build time.
+    enable_input_discovery_for_gn_analyze = false
+    defines += [ "SHARED_INTERMEDIATE_DIR=" +
+                 rebase_path(root_gen_dir, root_build_dir) ]
+    signin_gen_dir = "$root_gen_dir/chrome/browser/resources/signin"
+    source = "$signin_gen_dir/profile_picker/profile_picker_resources.grd"
+    deps = [ "//chrome/browser/resources/signin/profile_picker:build_grd" ]
+
     outputs = [
       "grit/profile_picker_resources.h",
       "grit/profile_picker_resources_map.cc",
diff --git a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_bn.xtb b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_bn.xtb
index 5567f3f..8421b2e 100644
--- a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_bn.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_bn.xtb
@@ -68,6 +68,7 @@
 <translation id="1383876407941801731">Search</translation>
 <translation id="1396114365388024581">tablst</translation>
 <translation id="1405567553485452995">হালকা সবুজ</translation>
+<translation id="141454040365657399">পৃষ্ঠার হেডার</translation>
 <translation id="1417889266572670458">নেভি</translation>
 <translation id="1431911867058218151">প্লাম</translation>
 <translation id="1439316808600711881">rgn</translation>
@@ -348,6 +349,7 @@
 <translation id="3549141990712742152"><ph name="TEXT" /> কাট করুন।</translation>
 <translation id="3549680091535286226">আপাতত স্পিচ বন্ধ করার জন্য ২টি আঙ্গুল দিয়ে ট্যাপ করুন</translation>
 <translation id="3564729643041517261">বর্তমান ডিসপ্লের স্টাইল হল পাশাপাশি</translation>
+<translation id="3573145950452451508">পৃষ্ঠার ফুটার</translation>
 <translation id="3587482841069643663">সকল</translation>
 <translation id="3589661172894441357">শব্দকোষ</translation>
 <translation id="3591784666823501596">রয়্যাল নীল</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_ca.xtb b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_ca.xtb
index 59ef0e32..94b4ead 100644
--- a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_ca.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_ca.xtb
@@ -68,7 +68,7 @@
 <translation id="1383876407941801731">Cerca</translation>
 <translation id="1396114365388024581">tablst</translation>
 <translation id="1405567553485452995">Verd clar</translation>
-<translation id="141454040365657399">Encapçalament de pàgina</translation>
+<translation id="141454040365657399">Capçalera de pàgina</translation>
 <translation id="1417889266572670458">Blau marí</translation>
 <translation id="1431911867058218151">Pruna</translation>
 <translation id="1439316808600711881">regió</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/switch_access/navigation_manager.js b/chrome/browser/resources/chromeos/accessibility/switch_access/navigation_manager.js
index d6c14ec..48db00b6 100644
--- a/chrome/browser/resources/chromeos/accessibility/switch_access/navigation_manager.js
+++ b/chrome/browser/resources/chromeos/accessibility/switch_access/navigation_manager.js
@@ -434,9 +434,23 @@
    */
   restoreFromHistory_() {
     const data = this.history_.retrieve();
+
+    // |data.focus| may not be a child of |data.group| anymore since
+    // |data.group| updates when retrieving the history record. So |data.focus|
+    // should not be used as the preferred focus node.
+    const groupChildren = data.group.children;
+    var focusTarget = null;
+    for (var index = 0; index < groupChildren.length; ++index) {
+      const child = groupChildren[index];
+      if (child.isEquivalentTo(data.focus)) {
+        focusTarget = child;
+        break;
+      }
+    }
+
     // retrieve() guarantees that the group is valid, but not the focus.
-    if (data.focus.isValidAndVisible()) {
-      this.setGroup_(data.group, data.focus);
+    if (focusTarget && focusTarget.isValidAndVisible()) {
+      this.setGroup_(data.group, focusTarget);
     } else {
       this.setGroup_(data.group);
     }
diff --git a/chrome/browser/resources/chromeos/login/fingerprint_setup.html b/chrome/browser/resources/chromeos/login/fingerprint_setup.html
index 2d878c0..40d8d81 100644
--- a/chrome/browser/resources/chromeos/login/fingerprint_setup.html
+++ b/chrome/browser/resources/chromeos/login/fingerprint_setup.html
@@ -15,28 +15,6 @@
     <link rel="stylesheet" href="fingerprint_setup.css">
     <oobe-dialog id="setupFingerprint" role="dialog" for-step="start"
         has-buttons footer-shrinkable
-        title-key="setupFingerprintScreenTitle"
-        subtitle-key="setupFingerprintScreenDescription"
-        aria-label$="[[i18nDynamic(locale, 'setupFingerprintScreenTitle')]]">
-      <hd-iron-icon slot="oobe-icon"
-          icon1x="oobe-32:fingerprint" icon2x="oobe-64:fingerprint">
-      </hd-iron-icon>
-      <div slot="footer" class="flex layout vertical center center-justified">
-        <img class="oobe-illustration"
-            srcset="images/1x/finger_unlock.svg 1x,
-                    images/2x/finger_unlock.svg 2x">
-      </div>
-      <div slot="bottom-buttons" class="layout horizontal end-justified">
-        <oobe-text-button id="skipStart"
-            text-key="skipFingerprintSetup" on-click="onSkip_">
-        </oobe-text-button>
-        <oobe-next-button id="next"
-            on-click="onNext_" class="focus-on-show"
-            text-key="fingerprintSetupNext" inverse></oobe-next-button>
-      </div>
-    </oobe-dialog>
-    <oobe-dialog id="placeFinger" role="dialog" for-step="finger"
-        has-buttons footer-shrinkable
         title-key="placeFingerScreenTitle"
         subtitle-key="setupFingerprintScreenDescription"
         aria-label$="[[i18nDynamic(locale, 'placeFingerScreenTitle')]]">
@@ -56,9 +34,9 @@
         </div>
       </div>
       <div slot="bottom-buttons" class="layout horizontal end-justified">
-        <oobe-text-button id="setupLater"
-            text-key="fingerprintSetupLater"
-            on-click="onSetupLater_" class="focus-on-show">
+        <oobe-text-button id="skipStart"
+            text-key="skipFingerprintSetup"
+            on-click="onSkip_" class="focus-on-show">
         </oobe-text-button>
       </div>
     </oobe-dialog>
diff --git a/chrome/browser/resources/chromeos/login/fingerprint_setup.js b/chrome/browser/resources/chromeos/login/fingerprint_setup.js
index c5887f1..c7b8fc35 100644
--- a/chrome/browser/resources/chromeos/login/fingerprint_setup.js
+++ b/chrome/browser/resources/chromeos/login/fingerprint_setup.js
@@ -32,7 +32,6 @@
  */
 const UIState = {
   START: 'start',
-  FINGER: 'finger',
   PROGRESS: 'progress',
 };
 
@@ -124,6 +123,10 @@
     return UIState.START;
   },
 
+  onBeforeShow() {
+    this.setAnimationState_(true);
+  },
+
   onBeforeHide() {
     this.setAnimationState_(false);
   },
@@ -167,14 +170,6 @@
   },
 
   /**
-   * This is 'on-tap' event handler for 'Do it later' button.
-   * @private
-   */
-  onSetupLater_(e) {
-    this.userActed('do-it-later');
-  },
-
-  /**
    * Enable/disable lottie animation.
    * @param {boolean} playing True if animation should be playing.
    */
@@ -182,22 +177,12 @@
   setAnimationState_(playing) {
     if (this.shouldUseLottieAnimation_) {
       const lottieElement = /** @type{CrLottieElement} */ (
-          this.$.placeFinger.querySelector('#scannerLocationLottie'));
+          this.$.setupFingerprint.querySelector('#scannerLocationLottie'));
       lottieElement.setPlay(playing);
     }
   },
 
   /**
-   * This is 'on-tap' event handler for 'showSensorLocationButton' button.
-   * @private
-   */
-  onNext_(e) {
-    this.userActed('show-sensor-location');
-    this.setUIStep(UIState.FINGER);
-    this.setAnimationState_(true);
-  },
-
-  /**
    * This is 'on-tap' event handler for 'Done' button.
    * @private
    */
diff --git a/chrome/browser/resources/chromeos/login/images/1x/finger_unlock.svg b/chrome/browser/resources/chromeos/login/images/1x/finger_unlock.svg
deleted file mode 100644
index 0632e18..0000000
--- a/chrome/browser/resources/chromeos/login/images/1x/finger_unlock.svg
+++ /dev/null
@@ -1,15 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="264" height="264" viewBox="0 0 264 264">
-  <g fill="none" fill-rule="evenodd">
-    <path stroke="#34A853" stroke-width="7" d="M118.2584,23.2273 C105.8004,28.4973 97.0594,40.8313 97.0594,55.2083 L97.0594,74.4203"/>
-    <path stroke="#FBBC05" stroke-width="7" d="M161.005,36.4939 C154.834,26.8749 144.046,20.4999 131.769,20.4999 C126.976,20.4999 122.411,21.4719 118.258,23.2269"/>
-    <path stroke="#EA4335" stroke-width="7" d="M166.4775,78.3582 L166.4775,55.2092 C166.4775,48.3172 164.4685,41.8942 161.0045,36.4942"/>
-    <path stroke="#3E82F1" stroke-width="7" d="M166.4775,97.7624 L166.4775,78.3584"/>
-    <path fill="#FBBC05" d="M151.8022,135.031 C151.5262,135.031 151.2512,134.964 151.0102,134.828 C144.3952,131.462 138.6762,130.034 131.8202,130.034 C124.9992,130.034 118.5222,131.632 112.6312,134.828 C111.8042,135.269 110.7702,134.964 110.2882,134.147 C109.8402,133.332 110.1502,132.277 110.9772,131.836 C117.3852,128.401 124.4132,126.634 131.8202,126.634 C139.1582,126.634 145.5662,128.231 152.5942,131.802 C153.4562,132.244 153.7662,133.263 153.3182,134.08 C153.0082,134.691 152.4222,135.031 151.8022,135.031"/>
-    <path fill="#E74133" d="M102.5021,152.8816 C102.1581,152.8816 101.8131,152.7786 101.5031,152.5756 C100.7111,152.0306 100.5381,150.9776 101.0901,150.1946 C104.5001,145.4356 108.8411,141.6946 114.0091,139.0776 C124.8271,133.5696 138.6761,133.5356 149.5281,139.0436 C154.6961,141.6616 159.0371,145.3676 162.4481,150.0936 C162.9991,150.8416 162.8271,151.9296 162.0341,152.4736 C161.2421,153.0176 160.1741,152.8476 159.6231,152.0656 C156.5221,147.7806 152.5951,144.4156 147.9441,142.0686 C138.0561,137.0706 125.4121,137.0706 115.5591,142.1036 C110.8741,144.4836 106.9461,147.8836 103.8461,152.1676 C103.5701,152.6436 103.0531,152.8816 102.5021,152.8816"/>
-    <path fill="#32A753" d="M124.0343,193.9197 C123.5863,193.9197 123.1383,193.7497 122.8283,193.4097 C119.8313,190.4517 118.2123,188.5477 115.9033,184.4337 C113.5263,180.2517 112.2863,175.1507 112.2863,169.6777 C112.2863,159.5797 121.0373,151.3517 131.7863,151.3517 C142.5343,151.3517 151.2853,159.5797 151.2853,169.6777 C151.2853,170.6297 150.5273,171.3777 149.5633,171.3777 C148.5983,171.3777 147.8403,170.6297 147.8403,169.6777 C147.8403,161.4497 140.6403,154.7517 131.7863,154.7517 C122.9323,154.7517 115.7313,161.4497 115.7313,169.6777 C115.7313,174.5727 116.8343,179.0957 118.9353,182.7677 C121.1403,186.6777 122.6563,188.3437 125.3093,190.9957 C125.9633,191.6757 125.9633,192.7297 125.3093,193.4097 C124.9303,193.7497 124.4823,193.9197 124.0343,193.9197"/>
-    <path fill="#FBBC05" d="M148.7361,187.6296 C144.6361,187.6296 141.0191,186.6086 138.0561,184.6036 C132.9231,181.1696 129.8561,175.5936 129.8561,169.6776 C129.8561,168.7256 130.6141,167.9776 131.5791,167.9776 C132.5441,167.9776 133.3021,168.7256 133.3021,169.6776 C133.3021,174.4716 135.7821,178.9936 139.9851,181.7806 C142.4311,183.4136 145.2911,184.1946 148.7361,184.1946 C149.5631,184.1946 150.9411,184.0936 152.3191,183.8556 C153.2491,183.6856 154.1451,184.2976 154.3171,185.2496 C154.4891,186.1676 153.8691,187.0516 152.9051,187.2216 C150.9411,187.5956 149.2181,187.6296 148.7361,187.6296"/>
-    <path fill="#3E82F1" d="M141.8113,194.6335 C141.6733,194.6335 141.5013,194.5995 141.3633,194.5655 C135.8853,193.0695 132.3023,191.0635 128.5473,187.4255 C123.7243,182.6995 121.0713,176.4095 121.0713,169.6775 C121.0713,164.1695 125.8263,159.6815 131.6823,159.6815 C137.5393,159.6815 142.2933,164.1695 142.2933,169.6775 C142.2933,173.3155 145.4973,176.2735 149.4593,176.2735 C153.4213,176.2735 156.6253,173.3155 156.6253,169.6775 C156.6253,156.8595 145.4283,146.4555 131.6483,146.4555 C121.8643,146.4555 112.9063,151.8275 108.8753,160.1565 C107.5323,162.9115 106.8433,166.1415 106.8433,169.6775 C106.8433,172.3295 107.0843,176.5115 109.1513,181.9515 C109.4953,182.8355 109.0483,183.8205 108.1523,184.1275 C107.2563,184.4675 106.2573,183.9915 105.9473,183.1415 C104.2593,178.6875 103.4323,174.2675 103.4323,169.6775 C103.4323,165.5975 104.2243,161.8915 105.7753,158.6615 C110.3573,149.1755 120.5203,143.0215 131.6483,143.0215 C147.3233,143.0215 160.0703,154.9555 160.0703,169.6435 C160.0703,175.1515 155.3163,179.6395 149.4593,179.6395 C143.6033,179.6395 138.8483,175.1515 138.8483,169.6435 C138.8483,166.0055 135.6443,163.0475 131.6823,163.0475 C127.7203,163.0475 124.5163,166.0055 124.5163,169.6435 C124.5163,175.4575 126.7903,180.8975 130.9593,184.9775 C134.2323,188.1735 137.3673,189.9415 142.2243,191.2675 C143.1553,191.5055 143.6713,192.4575 143.4303,193.3415 C143.2583,194.1235 142.5353,194.6335 141.8113,194.6335"/>
-    <path stroke="#DADCE0" stroke-width="4" d="M66,223.5037 L197.537,223.5037 C204.165,223.5037 209.537,218.1317 209.537,211.5037 L209.537,109.7627 C209.537,103.1357 204.165,97.7627 197.537,97.7627 L66,97.7627 C59.373,97.7627 54,103.1357 54,109.7627 L54,211.5037 C54,218.1317 59.373,223.5037 66,223.5037 Z"/>
-    <rect width="264" height="264"/>
-  </g>
-</svg>
diff --git a/chrome/browser/resources/chromeos/login/images/2x/finger_unlock.svg b/chrome/browser/resources/chromeos/login/images/2x/finger_unlock.svg
deleted file mode 100644
index 132bd69..0000000
--- a/chrome/browser/resources/chromeos/login/images/2x/finger_unlock.svg
+++ /dev/null
@@ -1,15 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="528" height="528" viewBox="0 0 528 528">
-  <g fill="none" fill-rule="evenodd">
-    <path stroke="#34A853" stroke-width="14" d="M236.5168,46.4546 C211.6008,56.9946 194.1188,81.6626 194.1188,110.4166 L194.1188,148.8406"/>
-    <path stroke="#FBBC05" stroke-width="14" d="M322.01,72.9878 C309.668,53.7498 288.092,40.9998 263.538,40.9998 C253.952,40.9998 244.822,42.9438 236.516,46.4538"/>
-    <path stroke="#EA4335" stroke-width="14" d="M332.955,156.7164 L332.955,110.4184 C332.955,96.6344 328.937,83.7884 322.009,72.9884"/>
-    <path stroke="#3E82F1" stroke-width="14" d="M332.955,195.5248 L332.955,156.7168"/>
-    <path fill="#FBBC05" d="M303.6044,270.062 C303.0524,270.062 302.5024,269.928 302.0204,269.656 C288.7904,262.924 277.3524,260.068 263.6404,260.068 C249.9984,260.068 237.0444,263.264 225.2624,269.656 C223.6084,270.538 221.5404,269.928 220.5764,268.294 C219.6804,266.664 220.3004,264.554 221.9544,263.672 C234.7704,256.802 248.8264,253.268 263.6404,253.268 C278.3164,253.268 291.1324,256.462 305.1884,263.604 C306.9124,264.488 307.5324,266.526 306.6364,268.16 C306.0164,269.382 304.8444,270.062 303.6044,270.062"/>
-    <path fill="#E74133" d="M205.0042,305.7632 C204.3162,305.7632 203.6262,305.5572 203.0062,305.1512 C201.4222,304.0612 201.0762,301.9552 202.1802,300.3892 C209.0002,290.8712 217.6822,283.3892 228.0182,278.1552 C249.6542,267.1392 277.3522,267.0712 299.0562,278.0872 C309.3922,283.3232 318.0742,290.7352 324.8962,300.1872 C325.9982,301.6832 325.6542,303.8592 324.0682,304.9472 C322.4842,306.0352 320.3482,305.6952 319.2462,304.1312 C313.0442,295.5612 305.1902,288.8312 295.8882,284.1372 C276.1122,274.1412 250.8242,274.1412 231.1182,284.2072 C221.7482,288.9672 213.8922,295.7672 207.6922,304.3352 C207.1402,305.2872 206.1062,305.7632 205.0042,305.7632"/>
-    <path fill="#32A753" d="M248.0686,387.8394 C247.1726,387.8394 246.2766,387.4994 245.6566,386.8194 C239.6626,380.9034 236.4246,377.0954 231.8066,368.8674 C227.0526,360.5034 224.5726,350.3014 224.5726,339.3554 C224.5726,319.1594 242.0746,302.7034 263.5726,302.7034 C285.0686,302.7034 302.5706,319.1594 302.5706,339.3554 C302.5706,341.2594 301.0546,342.7554 299.1266,342.7554 C297.1966,342.7554 295.6806,341.2594 295.6806,339.3554 C295.6806,322.8994 281.2806,309.5034 263.5726,309.5034 C245.8646,309.5034 231.4626,322.8994 231.4626,339.3554 C231.4626,349.1454 233.6686,358.1914 237.8706,365.5354 C242.2806,373.3554 245.3126,376.6874 250.6186,381.9914 C251.9266,383.3514 251.9266,385.4594 250.6186,386.8194 C249.8606,387.4994 248.9646,387.8394 248.0686,387.8394"/>
-    <path fill="#FBBC05" d="M297.4722,375.2592 C289.2722,375.2592 282.0382,373.2172 276.1122,369.2072 C265.8462,362.3392 259.7122,351.1872 259.7122,339.3552 C259.7122,337.4512 261.2282,335.9552 263.1582,335.9552 C265.0882,335.9552 266.6042,337.4512 266.6042,339.3552 C266.6042,348.9432 271.5642,357.9872 279.9702,363.5612 C284.8622,366.8272 290.5822,368.3892 297.4722,368.3892 C299.1262,368.3892 301.8822,368.1872 304.6382,367.7112 C306.4982,367.3712 308.2902,368.5952 308.6342,370.4992 C308.9782,372.3352 307.7382,374.1032 305.8102,374.4432 C301.8822,375.1912 298.4362,375.2592 297.4722,375.2592"/>
-    <path fill="#3E82F1" d="M283.6226,389.267 C283.3466,389.267 283.0026,389.199 282.7266,389.131 C271.7706,386.139 264.6046,382.127 257.0946,374.851 C247.4486,365.399 242.1426,352.819 242.1426,339.355 C242.1426,328.339 251.6526,319.363 263.3646,319.363 C275.0786,319.363 284.5866,328.339 284.5866,339.355 C284.5866,346.631 290.9946,352.547 298.9186,352.547 C306.8426,352.547 313.2506,346.631 313.2506,339.355 C313.2506,313.719 290.8566,292.911 263.2966,292.911 C243.7286,292.911 225.8126,303.655 217.7506,320.313 C215.0646,325.823 213.6866,332.283 213.6866,339.355 C213.6866,344.659 214.1686,353.023 218.3026,363.903 C218.9906,365.671 218.0966,367.641 216.3046,368.255 C214.5126,368.935 212.5146,367.983 211.8946,366.283 C208.5186,357.375 206.8646,348.535 206.8646,339.355 C206.8646,331.195 208.4486,323.783 211.5506,317.323 C220.7146,298.351 241.0406,286.043 263.2966,286.043 C294.6466,286.043 320.1406,309.911 320.1406,339.287 C320.1406,350.303 310.6326,359.279 298.9186,359.279 C287.2066,359.279 277.6966,350.303 277.6966,339.287 C277.6966,332.011 271.2886,326.095 263.3646,326.095 C255.4406,326.095 249.0326,332.011 249.0326,339.287 C249.0326,350.915 253.5806,361.795 261.9186,369.955 C268.4646,376.347 274.7346,379.883 284.4486,382.535 C286.3106,383.011 287.3426,384.915 286.8606,386.683 C286.5166,388.247 285.0706,389.267 283.6226,389.267"/>
-    <path stroke="#DADCE0" stroke-width="8" d="M132,447.0074 L395.074,447.0074 C408.33,447.0074 419.074,436.2634 419.074,423.0074 L419.074,219.5254 C419.074,206.2714 408.33,195.5254 395.074,195.5254 L132,195.5254 C118.746,195.5254 108,206.2714 108,219.5254 L108,423.0074 C108,436.2634 118.746,447.0074 132,447.0074 Z"/>
-    <rect width="528" height="528"/>
-  </g>
-</svg>
diff --git a/chrome/browser/resources/signin/dice_web_signin_intercept/dice_web_signin_intercept.html b/chrome/browser/resources/signin/dice_web_signin_intercept/dice_web_signin_intercept.html
index d2dfd14..4b24f627 100644
--- a/chrome/browser/resources/signin/dice_web_signin_intercept/dice_web_signin_intercept.html
+++ b/chrome/browser/resources/signin/dice_web_signin_intercept/dice_web_signin_intercept.html
@@ -4,6 +4,7 @@
     <meta charset="utf-8">
     <link rel="stylesheet" href="chrome://resources/css/md_colors.css">
     <link rel="stylesheet" href="chrome://resources/css/text_defaults_md.css">
+    <link rel="import" href="signin_vars_css.html">
     <style>
       body {
         height: 100vh;
@@ -12,6 +13,7 @@
       }
       @media (prefers-color-scheme: dark) {
         body {
+          --md-background-color: var(--signin-dark-customized-background-color);
           background-color: var(--md-background-color);
         }
       }
diff --git a/chrome/browser/resources/signin/profile_customization/profile_customization.html b/chrome/browser/resources/signin/profile_customization/profile_customization.html
index 6b927c1..7d2fb29 100644
--- a/chrome/browser/resources/signin/profile_customization/profile_customization.html
+++ b/chrome/browser/resources/signin/profile_customization/profile_customization.html
@@ -4,6 +4,7 @@
     <meta charset="utf-8">
     <link rel="stylesheet" href="chrome://resources/css/md_colors.css">
     <link rel="stylesheet" href="chrome://resources/css/text_defaults_md.css">
+    <link rel="import" href="signin_vars_css.html">
     <style>
       body {
         height: 100vh;
@@ -12,6 +13,7 @@
       }
       @media (prefers-color-scheme: dark) {
         body {
+          --md-background-color: var(--signin-dark-customized-background-color);
           background-color: var(--md-background-color);
         }
       }
diff --git a/chrome/browser/resources/signin/profile_customization/profile_customization_app.html b/chrome/browser/resources/signin/profile_customization/profile_customization_app.html
index 25abd2ce..28198f0 100644
--- a/chrome/browser/resources/signin/profile_customization/profile_customization_app.html
+++ b/chrome/browser/resources/signin/profile_customization/profile_customization_app.html
@@ -110,6 +110,13 @@
     width: 111px;
 
   }
+
+  @media (prefers-color-scheme: dark) {
+    #lineSeparator {
+      color: white;
+      opacity: 0.1;
+    }
+  }
 </style>
 
 <div id="header">
diff --git a/chrome/browser/resources/signin/profile_picker/BUILD.gn b/chrome/browser/resources/signin/profile_picker/BUILD.gn
index 8886a31..859c13b 100644
--- a/chrome/browser/resources/signin/profile_picker/BUILD.gn
+++ b/chrome/browser/resources/signin/profile_picker/BUILD.gn
@@ -6,10 +6,16 @@
 import("//third_party/closure_compiler/compile_js.gni")
 import("//tools/grit/preprocess_grit.gni")
 import("//tools/polymer/html_to_js.gni")
+import("//ui/webui/resources/tools/generate_grd.gni")
 import("../../optimize_webui.gni")
 
+preprocess_folder = "preprocessed"
+preprocess_manifest = "preprocessed_manifest.json"
+preprocess_gen_manifest = "preprocessed_gen_manifest.json"
+preprocess_shared_manifest = "preprocessed_shared_manifest.json"
+
 if (optimize_webui) {
-  preprocess_folder = "preprocessed"
+  build_manifest = "build_manifest.json"
 
   optimize_webui("build") {
     host = "profile-picker"
@@ -18,6 +24,7 @@
       "lazy_load.js",
     ]
     input = rebase_path("$target_gen_dir/$preprocess_folder", root_build_dir)
+    out_manifest = "$target_gen_dir/$build_manifest"
     js_out_files = [
       "profile_picker.rollup.js",
       "lazy_load.rollup.js",
@@ -36,42 +43,80 @@
       "chrome://resources/mojo/skia/public/mojom/skcolor.mojom-lite.js",
     ]
   }
+}
 
-  preprocess_grit("preprocess") {
-    in_folder = "./"
-    out_folder = "$target_gen_dir/$preprocess_folder"
-    in_files = [
-      "profile_picker.js",
-      "navigation_behavior.js",
-      "policy_helper.js",
-      "icons.js",
-      "lazy_load.js",
-      "ensure_lazy_loaded.js",
-      "manage_profiles_browser_proxy.js",
+generate_grd("build_grd") {
+  grd_prefix = "profile_picker"
+  out_grd = "$target_gen_dir/${grd_prefix}_resources.grd"
+  input_files = [
+    "profile_picker.html",
+    "images/left_banner_image.svg",
+    "images/right_banner_image.svg",
+    "images/dark_mode_left_banner_image.svg",
+    "images/dark_mode_right_banner_image.svg",
+    "profile_creation_flow/images/banner_dark_image.svg",
+    "profile_creation_flow/images/banner_light_image.svg",
+  ]
+  input_files_base_dir = rebase_path(".", "//")
+
+  if (optimize_webui) {
+    deps = [ ":build" ]
+    manifest_files = [ "$target_gen_dir/$build_manifest" ]
+    resource_path_rewrites = [
+      "profile_picker.rollup.js|profile_picker.js",
+      "lazy_load.rollup.js|lazy_load.js",
+    ]
+  } else {
+    deps = [
+      ":preprocess",
+      ":preprocess_generated",
+      ":shared",
+    ]
+    manifest_files = [
+      "$target_gen_dir/$preprocess_manifest",
+      "$target_gen_dir/$preprocess_gen_manifest",
+      "$target_gen_dir/$preprocess_shared_manifest",
     ]
   }
+}
 
-  preprocess_grit("shared") {
-    in_folder = "../"
-    out_folder = "$target_gen_dir/$preprocess_folder"
-    in_files = [ "signin_icons.js" ]
-  }
+preprocess_grit("preprocess") {
+  in_folder = "./"
+  out_folder = "$target_gen_dir/$preprocess_folder"
+  out_manifest = "$target_gen_dir/$preprocess_manifest"
+  in_files = [
+    "profile_picker.js",
+    "navigation_behavior.js",
+    "policy_helper.js",
+    "icons.js",
+    "lazy_load.js",
+    "ensure_lazy_loaded.js",
+    "manage_profiles_browser_proxy.js",
+  ]
+}
 
-  preprocess_grit("preprocess_generated") {
-    deps = [ ":web_components" ]
-    in_folder = target_gen_dir
-    out_folder = "$target_gen_dir/$preprocess_folder"
-    in_files = [
-      "profile_picker_app.js",
-      "profile_picker_main_view.js",
-      "profile_card.js",
-      "profile_card_menu.js",
-      "profile_creation_flow/profile_type_choice.js",
-      "profile_creation_flow/local_profile_customization.js",
-      "profile_picker_shared_css.js",
-      "profile_creation_flow/shared_css.js",
-    ]
-  }
+preprocess_grit("shared") {
+  in_folder = "../"
+  out_folder = "$target_gen_dir/$preprocess_folder"
+  out_manifest = "$target_gen_dir/$preprocess_shared_manifest"
+  in_files = [ "signin_icons.js" ]
+}
+
+preprocess_grit("preprocess_generated") {
+  deps = [ ":web_components" ]
+  in_folder = target_gen_dir
+  out_folder = "$target_gen_dir/$preprocess_folder"
+  out_manifest = "$target_gen_dir/$preprocess_gen_manifest"
+  in_files = [
+    "profile_picker_app.js",
+    "profile_picker_main_view.js",
+    "profile_card.js",
+    "profile_card_menu.js",
+    "profile_creation_flow/profile_type_choice.js",
+    "profile_creation_flow/local_profile_customization.js",
+    "profile_picker_shared_css.js",
+    "profile_creation_flow/shared_css.js",
+  ]
 }
 
 group("closure_compile") {
diff --git a/chrome/browser/resources/signin/profile_picker/profile_picker_resources.grd b/chrome/browser/resources/signin/profile_picker/profile_picker_resources.grd
deleted file mode 100644
index 5113e8d..0000000
--- a/chrome/browser/resources/signin/profile_picker/profile_picker_resources.grd
+++ /dev/null
@@ -1,102 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<grit latest_public_release="0" current_release="1" output_all_resource_defines="false">
-  <outputs>
-    <output filename="grit/profile_picker_resources.h" type="rc_header">
-      <emit emit_type='prepend'></emit>
-    </output>
-    <output filename="grit/profile_picker_resources_map.cc"
-            type="resource_file_map_source" />
-    <output filename="grit/profile_picker_resources_map.h"
-            type="resource_map_header" />
-    <output filename="profile_picker_resources.pak" type="data_package" />
-  </outputs>
-  <release seq="1">
-    <includes>
-      <include name="IDR_PROFILE_PICKER_IMAGES_LEFT_BANNER_IMAGE"
-               file="images/left_banner_image.svg"
-               type="BINDATA" />
-      <include name="IDR_PROFILE_PICKER_IMAGES_RIGHT_BANNER_IMAGE"
-               file="images/right_banner_image.svg"
-               type="BINDATA" />
-      <include name="IDR_PROFILE_PICKER_IMAGES_DARK_MODE_LEFT_BANNER_IMAGE"
-               file="images/dark_mode_left_banner_image.svg"
-               type="BINDATA" />
-      <include name="IDR_PROFILE_PICKER_IMAGES_DARK_MODE_RIGHT_BANNER_IMAGE"
-               file="images/dark_mode_right_banner_image.svg"
-               type="BINDATA" />
-      <include name="IDR_PROFILE_PICKER_PROFILE_CREATION_FLOW_IMAGES_BANNER_LIGHT_IMAGE"
-               file="profile_creation_flow/images/banner_light_image.svg"
-               type="BINDATA" />
-      <include name="IDR_PROFILE_PICKER_PROFILE_CREATION_FLOW_IMAGES_BANNER_DARK_IMAGE"
-               file="profile_creation_flow/images/banner_dark_image.svg"
-               type="BINDATA" />
-      <!-- Generated Polymer 3 elements -->
-      <include name="IDR_PROFILE_PICKER_PROFILE_PICKER_MAIN_VIEW_JS"
-               file="${root_gen_dir}/chrome/browser/resources/signin/profile_picker/profile_picker_main_view.js"
-               use_base_dir="false" type="BINDATA"/>
-      <include name="IDR_PROFILE_PICKER_PROFILE_PICKER_APP_JS"
-               file="${root_gen_dir}/chrome/browser/resources/signin/profile_picker/profile_picker_app.js"
-               use_base_dir="false" type="BINDATA"/>
-      <include name="IDR_PROFILE_PICKER_PROFILE_CARD_JS"
-               file="${root_gen_dir}/chrome/browser/resources/signin/profile_picker/profile_card.js"
-               use_base_dir="false" type="BINDATA"/>
-      <include name="IDR_PROFILE_PICKER_PROFILE_CARD_MENU_JS"
-               file="${root_gen_dir}/chrome/browser/resources/signin/profile_picker/profile_card_menu.js"
-               use_base_dir="false" type="BINDATA"/>
-      <include name="IDR_PROFILE_PICKER_PROFILE_CREATION_FLOW_PROFILE_TYPE_CHOICE_JS"
-               file="${root_gen_dir}/chrome/browser/resources/signin/profile_picker/profile_creation_flow/profile_type_choice.js"
-               use_base_dir="false" type="BINDATA"/>
-      <include name="IDR_PROFILE_PICKER_PROFILE_CREATION_FLOW_LOCAL_PROFILE_CUSTOMIZATION_JS"
-               file="${root_gen_dir}/chrome/browser/resources/signin/profile_picker/profile_creation_flow/local_profile_customization.js"
-               use_base_dir="false" type="BINDATA"/>
-      <include name="IDR_PROFILE_PICKER_PROFILE_PICKER_SHARED_CSS_JS"
-               file="${root_gen_dir}/chrome/browser/resources/signin/profile_picker/profile_picker_shared_css.js"
-               use_base_dir="false" type="BINDATA"/>
-      <include name="IDR_PROFILE_PICKER_PROFILE_CREATION_FLOW_SHARED_CSS_JS"
-               file="${root_gen_dir}/chrome/browser/resources/signin/profile_picker/profile_creation_flow/shared_css.js"
-               use_base_dir="false" type="BINDATA"/>
-    </includes>
-    <structures>
-      <structure
-          name="IDR_PROFILE_PICKER_PROFILE_PICKER_HTML"
-          file="profile_picker.html"
-          type="chrome_html"
-          compress="false"/>
-      <structure
-          name="IDR_PROFILE_PICKER_PROFILE_PICKER_JS"
-          file="profile_picker.js"
-          type="chrome_html"
-          compress="false"/>
-      <structure
-          name="IDR_PROFILE_PICKER_NAVIGATION_BEHAVIOR_JS"
-          file="navigation_behavior.js"
-          type="chrome_html"
-          compress="false"/>
-      <structure
-          name="IDR_PROFILE_PICKER_POLICY_HELPER_JS"
-          file="policy_helper.js"
-          type="chrome_html"
-          compress="false"/>
-      <structure
-          name="IDR_PROFILE_PICKER_ICONS_JS"
-          file="icons.js"
-          type="chrome_html"
-          compress="false"/>
-      <structure
-          name="IDR_PROFILE_PICKER_LAZY_LOAD_JS"
-          file="lazy_load.js"
-          type="chrome_html"
-          compress="false"/>
-      <structure
-          name="IDR_PROFILE_PICKER_ENSURE_LAZY_LOADED_JS"
-          file="ensure_lazy_loaded.js"
-          type="chrome_html"
-          compress="false"/>
-      <structure
-          name="IDR_PROFILE_PICKER_MANAGE_PROFILES_BROWSER_PROXY_JS"
-          file="manage_profiles_browser_proxy.js"
-          type="chrome_html"
-          compress="false"/>
-    </structures>
-  </release>
-</grit>
diff --git a/chrome/browser/resources/signin/profile_picker/profile_picker_resources_vulcanized.grd b/chrome/browser/resources/signin/profile_picker/profile_picker_resources_vulcanized.grd
deleted file mode 100644
index a63a97c..0000000
--- a/chrome/browser/resources/signin/profile_picker/profile_picker_resources_vulcanized.grd
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<grit latest_public_release="0" current_release="1" output_all_resource_defines="false">
-  <outputs>
-    <output filename="grit/profile_picker_resources.h" type="rc_header">
-      <emit emit_type='prepend'></emit>
-    </output>
-    <output filename="grit/profile_picker_resources_map.cc"
-            type="resource_map_source" />
-    <output filename="grit/profile_picker_resources_map.h"
-            type="resource_map_header" />
-    <output filename="profile_picker_resources.pak" type="data_package" />
-  </outputs>
-  <release seq="1">
-    <includes>
-      <include name="IDR_PROFILE_PICKER_PROFILE_PICKER_HTML"
-               file="profile_picker.html"
-               type="chrome_html" />
-      <include name="IDR_PROFILE_PICKER_PROFILE_PICKER_ROLLUP_JS"
-               file="${root_gen_dir}/chrome/browser/resources/signin/profile_picker/profile_picker.rollup.js"
-               use_base_dir="false"
-               type="chrome_html" />
-      <include name="IDR_PROFILE_PICKER_LAZY_LOAD_ROLLUP_JS"
-               file="${root_gen_dir}/chrome/browser/resources/signin/profile_picker/lazy_load.rollup.js"
-               type="BINDATA"
-               use_base_dir="false" />
-      <include name="IDR_PROFILE_PICKER_SHARED_ROLLUP_JS"
-               file="${root_gen_dir}/chrome/browser/resources/signin/profile_picker/shared.rollup.js"
-               type="BINDATA"
-               use_base_dir="false" />
-      <include name="IDR_PROFILE_PICKER_IMAGES_LEFT_BANNER_IMAGE"
-               file="images/left_banner_image.svg"
-               type="BINDATA" />
-      <include name="IDR_PROFILE_PICKER_IMAGES_RIGHT_BANNER_IMAGE"
-               file="images/right_banner_image.svg"
-               type="BINDATA" />
-      <include name="IDR_PROFILE_PICKER_IMAGES_DARK_MODE_LEFT_BANNER_IMAGE"
-               file="images/dark_mode_left_banner_image.svg"
-               type="BINDATA" />
-      <include name="IDR_PROFILE_PICKER_IMAGES_DARK_MODE_RIGHT_BANNER_IMAGE"
-               file="images/dark_mode_right_banner_image.svg"
-               type="BINDATA" />
-      <include name="IDR_PROFILE_PICKER_PROFILE_CREATION_FLOW_IMAGES_BANNER_LIGHT_IMAGE"
-               file="profile_creation_flow/images/banner_light_image.svg"
-               type="BINDATA" />
-      <include name="IDR_PROFILE_PICKER_PROFILE_CREATION_FLOW_IMAGES_BANNER_DARK_IMAGE"
-               file="profile_creation_flow/images/banner_dark_image.svg"
-               type="BINDATA" />
-    </includes>
-  </release>
-</grit>
diff --git a/chrome/browser/resources/signin/signin_vars_css.html b/chrome/browser/resources/signin/signin_vars_css.html
index ce0ba21..e0cc6b0 100644
--- a/chrome/browser/resources/signin/signin_vars_css.html
+++ b/chrome/browser/resources/signin/signin_vars_css.html
@@ -7,7 +7,11 @@
     @media (prefers-color-scheme: dark) {
       html {
       --signin-work-badge-background-color: var(--google-grey-700);
-      --signin-work-badge-foreground-color: white; 
+      --signin-work-badge-foreground-color: white;
+
+      /* Matches other surfaces such as the NTP customization window, and does
+       * not conflict with the defaut customization colors. */
+      --signin-dark-customized-background-color: rgba(41, 42, 45, 1);
       }
     }
 </style>
diff --git a/chrome/browser/sharing/click_to_call/click_to_call_context_menu_observer.cc b/chrome/browser/sharing/click_to_call/click_to_call_context_menu_observer.cc
index cbb4790..3189c612 100644
--- a/chrome/browser/sharing/click_to_call/click_to_call_context_menu_observer.cc
+++ b/chrome/browser/sharing/click_to_call/click_to_call_context_menu_observer.cc
@@ -146,8 +146,8 @@
   if (size_t{chosen_device_index} >= devices_.size())
     return;
 
-  LogSharingSelectedDeviceIndex(controller_->GetFeatureMetricsPrefix(),
-                                kSharingUiContextMenu, chosen_device_index);
+  LogSharingSelectedIndex(controller_->GetFeatureMetricsPrefix(),
+                          kSharingUiContextMenu, chosen_device_index);
 
   controller_->OnDeviceSelected(phone_number_, *devices_[chosen_device_index],
                                 *entry_point_);
diff --git a/chrome/browser/sharing/shared_clipboard/shared_clipboard_context_menu_observer.cc b/chrome/browser/sharing/shared_clipboard/shared_clipboard_context_menu_observer.cc
index dc5fffe..5e20feb2 100644
--- a/chrome/browser/sharing/shared_clipboard/shared_clipboard_context_menu_observer.cc
+++ b/chrome/browser/sharing/shared_clipboard/shared_clipboard_context_menu_observer.cc
@@ -141,8 +141,8 @@
     int chosen_device_index) {
   if (size_t{chosen_device_index} >= devices_.size())
     return;
-  LogSharingSelectedDeviceIndex(controller_->GetFeatureMetricsPrefix(),
-                                nullptr /* No suffix */, chosen_device_index);
+  LogSharingSelectedIndex(controller_->GetFeatureMetricsPrefix(),
+                          nullptr /* No suffix */, chosen_device_index);
 
   controller_->OnDeviceSelected(text_, *devices_[chosen_device_index]);
   LogSharedClipboardSelectedTextSize(text_.size());
diff --git a/chrome/browser/sharing/sharing_metrics.cc b/chrome/browser/sharing/sharing_metrics.cc
index f4d9ef67..76912f1 100644
--- a/chrome/browser/sharing/sharing_metrics.cc
+++ b/chrome/browser/sharing/sharing_metrics.cc
@@ -211,40 +211,22 @@
       /*value_max=*/20);
 }
 
-void LogSharingSelectedDeviceIndex(SharingFeatureName feature,
-                                   const char* histogram_suffix,
-                                   int index) {
+void LogSharingSelectedIndex(SharingFeatureName feature,
+                             const char* histogram_suffix,
+                             int index,
+                             SharingIndexType index_type) {
   auto* feature_str = GetEnumStringValue(feature);
   // Explicitly log both the base and the suffixed histogram because the base
   // aggregation is not automatically generated.
-  base::UmaHistogramExactLinear(
-      base::StrCat({"Sharing.", feature_str, "SelectedDeviceIndex"}), index,
-      /*value_max=*/20);
+  std::string name = base::StrCat(
+      {"Sharing.", feature_str, "Selected",
+       (index_type == SharingIndexType::kDevice) ? "Device" : "App", "Index"});
+  base::UmaHistogramExactLinear(name, index, /*value_max=*/20);
   if (!histogram_suffix)
     return;
-  base::UmaHistogramExactLinear(
-      base::StrCat(
-          {"Sharing.", feature_str, "SelectedDeviceIndex.", histogram_suffix}),
-      index,
-      /*value_max=*/20);
-}
-
-void LogSharingSelectedAppIndex(SharingFeatureName feature,
-                                const char* histogram_suffix,
-                                int index) {
-  auto* feature_str = GetEnumStringValue(feature);
-  // Explicitly log both the base and the suffixed histogram because the base
-  // aggregation is not automatically generated.
-  base::UmaHistogramExactLinear(
-      base::StrCat({"Sharing.", feature_str, "SelectedAppIndex"}), index,
-      /*value_max=*/20);
-  if (!histogram_suffix)
-    return;
-  base::UmaHistogramExactLinear(
-      base::StrCat(
-          {"Sharing.", feature_str, "SelectedAppIndex.", histogram_suffix}),
-      index,
-      /*value_max=*/20);
+  base::UmaHistogramExactLinear(base::StrCat({name, ".", histogram_suffix}),
+                                index,
+                                /*value_max=*/20);
 }
 
 void LogSharingMessageAckTime(chrome_browser_sharing::MessageType message_type,
diff --git a/chrome/browser/sharing/sharing_metrics.h b/chrome/browser/sharing/sharing_metrics.h
index 322ab95..2c6135e 100644
--- a/chrome/browser/sharing/sharing_metrics.h
+++ b/chrome/browser/sharing/sharing_metrics.h
@@ -79,21 +79,20 @@
                           const char* histogram_suffix,
                           int count);
 
-// Logs the |index| of the device selected by the user for sharing feature. The
-// |histogram_suffix| indicates in which UI this event happened and must match
-// one from Sharing{feature}Ui defined in histograms.xml - use the
-// constants defined in this file for that.
-void LogSharingSelectedDeviceIndex(SharingFeatureName feature,
-                                   const char* histogram_suffix,
-                                   int index);
-
-// Logs the |index| of the app selected by the user for sharing feature. The
-// |histogram_suffix| indicates in which UI this event happened and must match
-// one from Sharing{feature}Ui defined in histograms.xml - use the
-// constants defined in this file for that.
-void LogSharingSelectedAppIndex(SharingFeatureName feature,
-                                const char* histogram_suffix,
-                                int index);
+// Logs the |index| of the user selection for sharing feature. |index_type| is
+// the type of selection made, either "Device" or "App". The |histogram_suffix|
+// indicates in which UI this event happened and must match one from
+// Sharing{feature}Ui defined in histograms.xml - use the constants defined in
+// this file for that.
+enum class SharingIndexType {
+  kDevice,
+  kApp,
+};
+void LogSharingSelectedIndex(
+    SharingFeatureName feature,
+    const char* histogram_suffix,
+    int index,
+    SharingIndexType index_type = SharingIndexType::kDevice);
 
 // Logs to UMA the time from sending a FCM message from the Sharing service
 // until an ack message is received for it.
diff --git a/chrome/browser/speech/OWNERS b/chrome/browser/speech/OWNERS
index 192dd4a9..20b99fd 100644
--- a/chrome/browser/speech/OWNERS
+++ b/chrome/browser/speech/OWNERS
@@ -7,6 +7,6 @@
 per-file *tts_*=katie@chromium.org
 
 # Speech recognition service
-per-file *speech_recognition_service*=evliu@google.com
+per-file *speech_recognition_*=evliu@google.com
 
 # COMPONENT: Blink>Speech
diff --git a/chrome/browser/speech/speech_recognition_client_browser_interface.cc b/chrome/browser/speech/speech_recognition_client_browser_interface.cc
new file mode 100644
index 0000000..1b76ed94
--- /dev/null
+++ b/chrome/browser/speech/speech_recognition_client_browser_interface.cc
@@ -0,0 +1,62 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/speech/speech_recognition_client_browser_interface.h"
+
+#include <memory>
+
+#include "chrome/browser/profiles/profile.h"
+#include "chrome/common/pref_names.h"
+#include "components/prefs/pref_change_registrar.h"
+#include "components/prefs/pref_service.h"
+
+class PrefChangeRegistrar;
+
+namespace speech {
+
+SpeechRecognitionClientBrowserInterface::
+    SpeechRecognitionClientBrowserInterface(content::BrowserContext* context) {
+  Profile* profile = Profile::FromBrowserContext(context);
+  profile_prefs_ = profile->GetPrefs();
+
+  pref_change_registrar_ = std::make_unique<PrefChangeRegistrar>();
+  pref_change_registrar_->Init(profile_prefs_);
+
+  // Unretained is safe because |this| owns the pref_change_registrar_.
+  pref_change_registrar_->Add(
+      prefs::kLiveCaptionEnabled,
+      base::BindRepeating(&SpeechRecognitionClientBrowserInterface::
+                              OnSpeechRecognitionAvailabilityChanged,
+                          base::Unretained(this)));
+}
+
+SpeechRecognitionClientBrowserInterface::
+    ~SpeechRecognitionClientBrowserInterface() = default;
+
+void SpeechRecognitionClientBrowserInterface::BindReceiver(
+    mojo::PendingReceiver<media::mojom::SpeechRecognitionClientBrowserInterface>
+        receiver) {
+  speech_recognition_client_browser_interface_.Add(this, std::move(receiver));
+}
+
+void SpeechRecognitionClientBrowserInterface::
+    BindSpeechRecognitionAvailabilityObserver(
+        mojo::PendingRemote<media::mojom::SpeechRecognitionAvailabilityObserver>
+            pending_remote) {
+  speech_recognition_availibility_observers_.Add(std::move(pending_remote));
+  OnSpeechRecognitionAvailabilityChanged();
+}
+
+void SpeechRecognitionClientBrowserInterface::
+    OnSpeechRecognitionAvailabilityChanged() {
+  if (speech_recognition_availibility_observers_.empty())
+    return;
+
+  bool enabled = profile_prefs_->GetBoolean(prefs::kLiveCaptionEnabled);
+  for (auto& observer : speech_recognition_availibility_observers_) {
+    observer->SpeechRecognitionAvailabilityChanged(enabled);
+  }
+}
+
+}  // namespace speech
diff --git a/chrome/browser/speech/speech_recognition_client_browser_interface.h b/chrome/browser/speech/speech_recognition_client_browser_interface.h
new file mode 100644
index 0000000..af3f7594
--- /dev/null
+++ b/chrome/browser/speech/speech_recognition_client_browser_interface.h
@@ -0,0 +1,58 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_SPEECH_SPEECH_RECOGNITION_CLIENT_BROWSER_INTERFACE_H_
+#define CHROME_BROWSER_SPEECH_SPEECH_RECOGNITION_CLIENT_BROWSER_INTERFACE_H_
+
+#include "components/keyed_service/core/keyed_service.h"
+#include "media/mojo/mojom/speech_recognition_service.mojom.h"
+#include "mojo/public/cpp/bindings/receiver_set.h"
+#include "mojo/public/cpp/bindings/remote_set.h"
+
+class PrefChangeRegistrar;
+class PrefService;
+
+namespace content {
+class BrowserContext;
+}  // namespace content
+
+namespace speech {
+
+class SpeechRecognitionClientBrowserInterface
+    : public KeyedService,
+      public media::mojom::SpeechRecognitionClientBrowserInterface {
+ public:
+  explicit SpeechRecognitionClientBrowserInterface(
+      content::BrowserContext* context);
+  SpeechRecognitionClientBrowserInterface(
+      const SpeechRecognitionClientBrowserInterface&) = delete;
+  SpeechRecognitionClientBrowserInterface& operator=(
+      const SpeechRecognitionClientBrowserInterface&) = delete;
+  ~SpeechRecognitionClientBrowserInterface() override;
+
+  void BindReceiver(
+      mojo::PendingReceiver<
+          media::mojom::SpeechRecognitionClientBrowserInterface> receiver);
+
+  // media::mojom::SpeechRecognitionClientBrowserInterface
+  void BindSpeechRecognitionAvailabilityObserver(
+      mojo::PendingRemote<media::mojom::SpeechRecognitionAvailabilityObserver>
+          pending_remote) override;
+
+ private:
+  void OnSpeechRecognitionAvailabilityChanged();
+
+  mojo::RemoteSet<media::mojom::SpeechRecognitionAvailabilityObserver>
+      speech_recognition_availibility_observers_;
+
+  mojo::ReceiverSet<media::mojom::SpeechRecognitionClientBrowserInterface>
+      speech_recognition_client_browser_interface_;
+
+  std::unique_ptr<PrefChangeRegistrar> pref_change_registrar_;
+  PrefService* profile_prefs_;
+};
+
+}  // namespace speech
+
+#endif  // CHROME_BROWSER_SPEECH_SPEECH_RECOGNITION_CLIENT_BROWSER_INTERFACE_H_
diff --git a/chrome/browser/speech/speech_recognition_client_browser_interface_factory.cc b/chrome/browser/speech/speech_recognition_client_browser_interface_factory.cc
new file mode 100644
index 0000000..346d664
--- /dev/null
+++ b/chrome/browser/speech/speech_recognition_client_browser_interface_factory.cc
@@ -0,0 +1,49 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/speech/speech_recognition_client_browser_interface_factory.h"
+
+#include "base/no_destructor.h"
+#include "chrome/browser/profiles/incognito_helpers.h"
+#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/speech/speech_recognition_client_browser_interface.h"
+#include "components/keyed_service/content/browser_context_dependency_manager.h"
+
+// static
+speech::SpeechRecognitionClientBrowserInterface*
+SpeechRecognitionClientBrowserInterfaceFactory::GetForProfile(
+    Profile* profile) {
+  return static_cast<speech::SpeechRecognitionClientBrowserInterface*>(
+      GetInstance()->GetServiceForBrowserContext(profile, true));
+}
+
+// static
+SpeechRecognitionClientBrowserInterfaceFactory*
+SpeechRecognitionClientBrowserInterfaceFactory::GetInstance() {
+  static base::NoDestructor<SpeechRecognitionClientBrowserInterfaceFactory>
+      instance;
+  return instance.get();
+}
+
+SpeechRecognitionClientBrowserInterfaceFactory::
+    SpeechRecognitionClientBrowserInterfaceFactory()
+    : BrowserContextKeyedServiceFactory(
+          "SpeechRecognitionClientBrowserInterface",
+          BrowserContextDependencyManager::GetInstance()) {}
+
+SpeechRecognitionClientBrowserInterfaceFactory::
+    ~SpeechRecognitionClientBrowserInterfaceFactory() = default;
+
+KeyedService*
+SpeechRecognitionClientBrowserInterfaceFactory::BuildServiceInstanceFor(
+    content::BrowserContext* context) const {
+  return new speech::SpeechRecognitionClientBrowserInterface(context);
+}
+
+// Incognito profiles should use their own instance of the browser context.
+content::BrowserContext*
+SpeechRecognitionClientBrowserInterfaceFactory::GetBrowserContextToUse(
+    content::BrowserContext* context) const {
+  return chrome::GetBrowserContextOwnInstanceInIncognito(context);
+}
diff --git a/chrome/browser/speech/speech_recognition_client_browser_interface_factory.h b/chrome/browser/speech/speech_recognition_client_browser_interface_factory.h
new file mode 100644
index 0000000..b7b31e1
--- /dev/null
+++ b/chrome/browser/speech/speech_recognition_client_browser_interface_factory.h
@@ -0,0 +1,44 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_SPEECH_SPEECH_RECOGNITION_CLIENT_BROWSER_INTERFACE_FACTORY_H_
+#define CHROME_BROWSER_SPEECH_SPEECH_RECOGNITION_CLIENT_BROWSER_INTERFACE_FACTORY_H_
+
+#include "components/keyed_service/content/browser_context_keyed_service_factory.h"
+
+class Profile;
+
+namespace base {
+template <class T>
+class NoDestructor;
+}  // namespace base
+
+namespace speech {
+class SpeechRecognitionClientBrowserInterface;
+}  // namespace speech
+
+// Factory to get or create an instance of
+// SpeechRecognitionClientBrowserInterface from a Profile.
+class SpeechRecognitionClientBrowserInterfaceFactory
+    : public BrowserContextKeyedServiceFactory {
+ public:
+  static speech::SpeechRecognitionClientBrowserInterface* GetForProfile(
+      Profile* profile);
+
+ private:
+  friend class base::NoDestructor<
+      SpeechRecognitionClientBrowserInterfaceFactory>;
+  static SpeechRecognitionClientBrowserInterfaceFactory* GetInstance();
+
+  SpeechRecognitionClientBrowserInterfaceFactory();
+  ~SpeechRecognitionClientBrowserInterfaceFactory() override;
+
+  // BrowserContextKeyedServiceFactory:
+  KeyedService* BuildServiceInstanceFor(
+      content::BrowserContext* context) const override;
+  content::BrowserContext* GetBrowserContextToUse(
+      content::BrowserContext* context) const override;
+};
+
+#endif  // CHROME_BROWSER_SPEECH_SPEECH_RECOGNITION_CLIENT_BROWSER_INTERFACE_FACTORY_H_
diff --git a/chrome/browser/subresource_filter/chrome_subresource_filter_client.cc b/chrome/browser/subresource_filter/chrome_subresource_filter_client.cc
index 5a9e1a3..c3b591e 100644
--- a/chrome/browser/subresource_filter/chrome_subresource_filter_client.cc
+++ b/chrome/browser/subresource_filter/chrome_subresource_filter_client.cc
@@ -127,7 +127,8 @@
 
   const GURL& url(navigation_handle->GetURL());
 
-  base::Optional<AdsInterventionManager::LastAdsIntervention>
+  base::Optional<
+      subresource_filter::AdsInterventionManager::LastAdsIntervention>
       last_intervention =
           profile_context_->ads_intervention_manager()->GetLastAdsIntervention(
               url);
@@ -149,8 +150,8 @@
         url,
         effective_activation_level ==
             subresource_filter::mojom::ActivationLevel::kEnabled,
-        SubresourceFilterContentSettingsManager::ActivationSource::
-            kSafeBrowsing);
+        subresource_filter::SubresourceFilterContentSettingsManager::
+            ActivationSource::kSafeBrowsing);
   }
 
   if (profile_context_->settings_manager()->GetSitePermission(url) ==
@@ -174,7 +175,8 @@
   // TODO(https://crbug/1107998): Verify this behavior when violation signals
   // and histograms are added.
   const GURL& url = rfh->GetLastCommittedURL();
-  base::Optional<AdsInterventionManager::LastAdsIntervention>
+  base::Optional<
+      subresource_filter::AdsInterventionManager::LastAdsIntervention>
       last_intervention =
           profile_context_->ads_intervention_manager()->GetLastAdsIntervention(
               url);
diff --git a/chrome/browser/subresource_filter/chrome_subresource_filter_client.h b/chrome/browser/subresource_filter/chrome_subresource_filter_client.h
index 47a5ba9..76e9d63 100644
--- a/chrome/browser/subresource_filter/chrome_subresource_filter_client.h
+++ b/chrome/browser/subresource_filter/chrome_subresource_filter_client.h
@@ -14,7 +14,6 @@
 #include "content/public/browser/web_contents_observer.h"
 
 class GURL;
-class SubresourceFilterProfileContext;
 
 namespace content {
 class NavigationHandle;
@@ -23,6 +22,7 @@
 
 namespace subresource_filter {
 class ContentSubresourceFilterThrottleManager;
+class SubresourceFilterProfileContext;
 }  // namespace subresource_filter
 
 // Chrome implementation of SubresourceFilterClient. Instances are associated
@@ -80,7 +80,8 @@
       throttle_manager_;
 
   // Owned by the profile.
-  SubresourceFilterProfileContext* profile_context_ = nullptr;
+  subresource_filter::SubresourceFilterProfileContext* profile_context_ =
+      nullptr;
 
   bool did_show_ui_for_navigation_ = false;
 
diff --git a/chrome/browser/subresource_filter/subresource_filter_browser_test_harness.h b/chrome/browser/subresource_filter/subresource_filter_browser_test_harness.h
index 4e3a78e..b07f8d9 100644
--- a/chrome/browser/subresource_filter/subresource_filter_browser_test_harness.h
+++ b/chrome/browser/subresource_filter/subresource_filter_browser_test_harness.h
@@ -32,12 +32,12 @@
 class WebContents;
 }  // namespace content
 
-class SubresourceFilterContentSettingsManager;
-class AdsInterventionManager;
 class TestSafeBrowsingDatabaseHelper;
 
 namespace subresource_filter {
 
+class AdsInterventionManager;
+class SubresourceFilterContentSettingsManager;
 class RulesetService;
 
 class SubresourceFilterBrowserTest : public InProcessBrowserTest {
diff --git a/chrome/browser/subresource_filter/subresource_filter_history_observer.cc b/chrome/browser/subresource_filter/subresource_filter_history_observer.cc
index 6ce92a0..284349fd 100644
--- a/chrome/browser/subresource_filter/subresource_filter_history_observer.cc
+++ b/chrome/browser/subresource_filter/subresource_filter_history_observer.cc
@@ -8,7 +8,8 @@
 #include "url/gurl.h"
 
 SubresourceFilterHistoryObserver::SubresourceFilterHistoryObserver(
-    SubresourceFilterContentSettingsManager* settings_manager,
+    subresource_filter::SubresourceFilterContentSettingsManager*
+        settings_manager,
     history::HistoryService* history_service)
     : settings_manager_(settings_manager) {
   DCHECK(settings_manager_);
diff --git a/chrome/browser/subresource_filter/subresource_filter_history_observer.h b/chrome/browser/subresource_filter/subresource_filter_history_observer.h
index bb34f1b..45f8663 100644
--- a/chrome/browser/subresource_filter/subresource_filter_history_observer.h
+++ b/chrome/browser/subresource_filter/subresource_filter_history_observer.h
@@ -10,21 +10,24 @@
 #include "components/history/core/browser/history_service_observer.h"
 #include "components/subresource_filter/content/browser/subresource_filter_profile_context.h"
 
-class SubresourceFilterContentSettingsManager;
-
 namespace history {
 class HistoryService;
 }
 
+namespace subresource_filter {
+class SubresourceFilterContentSettingsManager;
+}
+
 // Class that observes user changes to history via the HistoryService and
 // updates subresource filter-related content settings appropriately.
 class SubresourceFilterHistoryObserver
     : public history::HistoryServiceObserver,
-      public SubresourceFilterProfileContext::EmbedderData {
+      public subresource_filter::SubresourceFilterProfileContext::EmbedderData {
  public:
   // Both |settings_manager| and |history_service| should be non-null.
   SubresourceFilterHistoryObserver(
-      SubresourceFilterContentSettingsManager* settings_manager,
+      subresource_filter::SubresourceFilterContentSettingsManager*
+          settings_manager,
       history::HistoryService* history_service);
   ~SubresourceFilterHistoryObserver() override;
   SubresourceFilterHistoryObserver(const SubresourceFilterHistoryObserver&) =
@@ -41,7 +44,8 @@
       history_observer_{this};
 
   // Outlives this object.
-  SubresourceFilterContentSettingsManager* settings_manager_;
+  subresource_filter::SubresourceFilterContentSettingsManager*
+      settings_manager_;
 };
 
 #endif  // CHROME_BROWSER_SUBRESOURCE_FILTER_SUBRESOURCE_FILTER_HISTORY_OBSERVER_H_
diff --git a/chrome/browser/subresource_filter/subresource_filter_history_observer_unittest.cc b/chrome/browser/subresource_filter/subresource_filter_history_observer_unittest.cc
index 772712b..c523a35 100644
--- a/chrome/browser/subresource_filter/subresource_filter_history_observer_unittest.cc
+++ b/chrome/browser/subresource_filter/subresource_filter_history_observer_unittest.cc
@@ -17,8 +17,6 @@
 #include "testing/gtest/include/gtest/gtest.h"
 #include "url/gurl.h"
 
-namespace {
-
 // Tests that SubresourceFilterHistoryObserver is operating as expected in the
 // context of //chrome-level setup of SubresourceFilterProfileContext. More of
 // an integration test than a unittest in spirit, but requires unittest
@@ -41,7 +39,8 @@
     settings_manager_->set_should_use_smart_ui_for_testing(true);
   }
 
-  SubresourceFilterContentSettingsManager* settings_manager() {
+  subresource_filter::SubresourceFilterContentSettingsManager*
+  settings_manager() {
     return settings_manager_;
   }
 
@@ -53,7 +52,8 @@
   TestingProfile testing_profile_;
 
   // Owned by the testing_profile_.
-  SubresourceFilterContentSettingsManager* settings_manager_ = nullptr;
+  subresource_filter::SubresourceFilterContentSettingsManager*
+      settings_manager_ = nullptr;
 };
 
 // Tests that SubresourceFilterHistoryObserver observes deletions of URLs from
@@ -135,5 +135,3 @@
   EXPECT_TRUE(settings_manager()->ShouldShowUIForSite(url1));
   EXPECT_TRUE(settings_manager()->ShouldShowUIForSite(url2));
 }
-
-}  // namespace
diff --git a/chrome/browser/subresource_filter/subresource_filter_profile_context_factory.cc b/chrome/browser/subresource_filter/subresource_filter_profile_context_factory.cc
index 2f894b7..cbefdfa 100644
--- a/chrome/browser/subresource_filter/subresource_filter_profile_context_factory.cc
+++ b/chrome/browser/subresource_filter/subresource_filter_profile_context_factory.cc
@@ -15,9 +15,9 @@
 #include "components/subresource_filter/content/browser/subresource_filter_profile_context.h"
 
 // static
-SubresourceFilterProfileContext*
+subresource_filter::SubresourceFilterProfileContext*
 SubresourceFilterProfileContextFactory::GetForProfile(Profile* profile) {
-  return static_cast<SubresourceFilterProfileContext*>(
+  return static_cast<subresource_filter::SubresourceFilterProfileContext*>(
       GetInstance()->GetServiceForBrowserContext(profile, true /* create */));
 }
 
@@ -40,7 +40,7 @@
   Profile* profile = Profile::FromBrowserContext(context);
 
   auto* subresource_filter_profile_context =
-      new SubresourceFilterProfileContext(
+      new subresource_filter::SubresourceFilterProfileContext(
           HostContentSettingsMapFactory::GetForProfile(profile));
 
   // Create and attach a SubresourceFilterHistoryObserver instance if possible.
diff --git a/chrome/browser/subresource_filter/subresource_filter_profile_context_factory.h b/chrome/browser/subresource_filter/subresource_filter_profile_context_factory.h
index c2d3953..ef1c289 100644
--- a/chrome/browser/subresource_filter/subresource_filter_profile_context_factory.h
+++ b/chrome/browser/subresource_filter/subresource_filter_profile_context_factory.h
@@ -10,14 +10,18 @@
 
 class KeyedService;
 class Profile;
+
+namespace subresource_filter {
 class SubresourceFilterProfileContext;
+}
 
 // This class is responsible for instantiating a profile-scoped context for
 // subresource filtering.
 class SubresourceFilterProfileContextFactory
     : public BrowserContextKeyedServiceFactory {
  public:
-  static SubresourceFilterProfileContext* GetForProfile(Profile* profile);
+  static subresource_filter::SubresourceFilterProfileContext* GetForProfile(
+      Profile* profile);
 
   static SubresourceFilterProfileContextFactory* GetInstance();
 
diff --git a/chrome/browser/subresource_filter/subresource_filter_settings_browsertest.cc b/chrome/browser/subresource_filter/subresource_filter_settings_browsertest.cc
index 67ce16a..1069eb63 100644
--- a/chrome/browser/subresource_filter/subresource_filter_settings_browsertest.cc
+++ b/chrome/browser/subresource_filter/subresource_filter_settings_browsertest.cc
@@ -276,7 +276,8 @@
 
   // Fast forward the clock, and a_url should trigger the UI again.
   raw_clock->Advance(
-      SubresourceFilterContentSettingsManager::kDelayBeforeShowingInfobarAgain);
+      subresource_filter::SubresourceFilterContentSettingsManager::
+          kDelayBeforeShowingInfobarAgain);
   ui_test_utils::NavigateToURL(browser(), a_url);
   EXPECT_FALSE(WasParsedScriptElementLoaded(web_contents()->GetMainFrame()));
   EXPECT_TRUE(client->did_show_ui_for_navigation());
diff --git a/chrome/browser/subresource_filter/subresource_filter_test_harness.cc b/chrome/browser/subresource_filter/subresource_filter_test_harness.cc
index b29a4e8f..49a570e9 100644
--- a/chrome/browser/subresource_filter/subresource_filter_test_harness.cc
+++ b/chrome/browser/subresource_filter/subresource_filter_test_harness.cc
@@ -166,7 +166,7 @@
   fake_safe_browsing_database_->RemoveBlocklistedUrl(url);
 }
 
-SubresourceFilterContentSettingsManager*
+subresource_filter::SubresourceFilterContentSettingsManager*
 SubresourceFilterTestHarness::GetSettingsManager() {
   return SubresourceFilterProfileContextFactory::GetForProfile(
              static_cast<Profile*>(profile()))
diff --git a/chrome/browser/subresource_filter/subresource_filter_test_harness.h b/chrome/browser/subresource_filter/subresource_filter_test_harness.h
index 247e42c..d6d585a79 100644
--- a/chrome/browser/subresource_filter/subresource_filter_test_harness.h
+++ b/chrome/browser/subresource_filter/subresource_filter_test_harness.h
@@ -15,12 +15,15 @@
 
 class ChromeSubresourceFilterClient;
 class GURL;
-class SubresourceFilterContentSettingsManager;
 
 namespace content {
 class RenderFrameHost;
 }  // namespace content
 
+namespace subresource_filter {
+class SubresourceFilterContentSettingsManager;
+}
+
 // End to end unit test harness of (most of) the browser process portions of the
 // subresource filtering code.
 class SubresourceFilterTestHarness : public ChromeRenderViewHostTestHarness {
@@ -56,7 +59,8 @@
 
   void RemoveURLFromBlocklist(const GURL& url);
 
-  SubresourceFilterContentSettingsManager* GetSettingsManager();
+  subresource_filter::SubresourceFilterContentSettingsManager*
+  GetSettingsManager();
 
   subresource_filter::testing::ScopedSubresourceFilterConfigurator&
   scoped_configuration() {
diff --git a/chrome/browser/tab_contents/tab_util.cc b/chrome/browser/tab_contents/tab_util.cc
index fd5c97e..93356ea9 100644
--- a/chrome/browser/tab_contents/tab_util.cc
+++ b/chrome/browser/tab_contents/tab_util.cc
@@ -6,9 +6,7 @@
 
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/webui/chrome_web_ui_controller_factory.h"
-#include "chrome/common/chrome_switches.h"
 #include "content/public/browser/browser_url_handler.h"
-#include "content/public/browser/render_frame_host.h"
 #include "content/public/browser/render_view_host.h"
 #include "content/public/browser/site_instance.h"
 #include "content/public/browser/web_contents.h"
@@ -19,7 +17,6 @@
 #include "extensions/browser/extension_registry.h"
 #endif
 
-using content::RenderFrameHost;
 using content::RenderViewHost;
 using content::SiteInstance;
 using content::WebContents;
@@ -35,15 +32,6 @@
   return WebContents::FromRenderViewHost(render_view_host);
 }
 
-content::WebContents* GetWebContentsByFrameID(int render_process_id,
-                                              int render_frame_id) {
-  RenderFrameHost* render_frame_host =
-      RenderFrameHost::FromID(render_process_id, render_frame_id);
-  if (!render_frame_host)
-    return NULL;
-  return WebContents::FromRenderFrameHost(render_frame_host);
-}
-
 scoped_refptr<SiteInstance> GetSiteInstanceForNewTab(Profile* profile,
                                                      GURL url) {
   // Rewrite the |url| if necessary, to ensure that the SiteInstance is
diff --git a/chrome/browser/tab_contents/tab_util.h b/chrome/browser/tab_contents/tab_util.h
index ca98c7fc..599df048 100644
--- a/chrome/browser/tab_contents/tab_util.h
+++ b/chrome/browser/tab_contents/tab_util.h
@@ -22,9 +22,6 @@
 content::WebContents* GetWebContentsByID(int render_process_id,
                                          int render_view_id);
 
-content::WebContents* GetWebContentsByFrameID(int render_process_id,
-                                              int render_frame_id);
-
 // Returns a new SiteInstance for WebUI and app URLs. Returns NULL otherwise.
 scoped_refptr<content::SiteInstance> GetSiteInstanceForNewTab(Profile* profile,
                                                               GURL url);
diff --git a/chrome/browser/task_manager/task_manager_browsertest.cc b/chrome/browser/task_manager/task_manager_browsertest.cc
index 9e37a09..13b2cb8 100644
--- a/chrome/browser/task_manager/task_manager_browsertest.cc
+++ b/chrome/browser/task_manager/task_manager_browsertest.cc
@@ -864,7 +864,7 @@
   ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchTab("title1.html")));
   ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
 
-  ui_test_utils::NavigateToURL(browser(), GURL("about:version"));
+  ui_test_utils::NavigateToURL(browser(), GURL("chrome://version/"));
   ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchTab("About Version")));
   ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
 
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
index 1aa3a9cc..e27f0c5 100644
--- a/chrome/browser/ui/BUILD.gn
+++ b/chrome/browser/ui/BUILD.gn
@@ -2079,8 +2079,8 @@
       "views/frame/browser_non_client_frame_view_factory_chromeos.cc",
       "views/frame/custom_tab_browser_frame.cc",
       "views/frame/custom_tab_browser_frame.h",
-      "views/frame/immersive_mode_controller_ash.cc",
-      "views/frame/immersive_mode_controller_ash.h",
+      "views/frame/immersive_mode_controller_chromeos.cc",
+      "views/frame/immersive_mode_controller_chromeos.h",
       "views/frame/native_browser_frame_factory_chromeos.cc",
       "views/frame/top_controls_slide_controller_chromeos.cc",
       "views/frame/top_controls_slide_controller_chromeos.h",
@@ -2718,9 +2718,15 @@
   # TODO(crbug.com/1052397): Rename GN variable. This is the lacros browser.
   if (chromeos_is_browser_only) {
     sources += [
+      "views/frame/immersive_mode_controller_chromeos.cc",
+      "views/frame/immersive_mode_controller_chromeos.h",
       "window_sizer/window_sizer_chromeos.cc",
       "window_sizer/window_sizer_chromeos.h",
     ]
+    deps += [
+      "//chromeos/ui/base",
+      "//chromeos/ui/frame",
+    ]
   }
 
   if (is_win || is_mac || is_linux || is_chromeos) {
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 618a00c9..f79b70a 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
@@ -165,6 +165,7 @@
 <translation id="2169830938017475061">Now</translation>
 <translation id="2175927920773552910">QR কোড</translation>
 <translation id="218608176142494674">শেয়ার করা সংক্রান্ত বিজ্ঞপ্তি</translation>
+<translation id="2195339740518523951">Chrome-এ সবচেয়ে বেশি সুরক্ষা পান</translation>
 <translation id="2227444325776770048"><ph name="USER_FULL_NAME" /> হিসেবে চালিয়ে যান</translation>
 <translation id="2234876718134438132">সিঙ্ক এবং Google পরিষেবাগুলি</translation>
 <translation id="2239812875700136898">'Discover-এর বিকল্প' বোতামে ক্লিক করে আপনার ফিডের কন্টেন্ট নিয়ন্ত্রণ করুন</translation>
@@ -256,6 +257,7 @@
 <translation id="2893180576842394309">সার্চ এবং অন্যান্য Google পরিষেবাকে আপনার মতো করে সাজিয়ে নিতে Google আপনার ইতিহাস ব্যবহার করতে পারে</translation>
 <translation id="2898264748040935573">স্টোর করা পাসওয়ার্ড এডিট করুন</translation>
 <translation id="2900528713135656174">ইভেন্ট তৈরি করুন</translation>
+<translation id="2901411048554510387"><ph name="WEBSITE_TITLE" />-এর জন্য সাজেশন দেখানো হচ্ছে</translation>
 <translation id="2904414404539560095">ট্যাব শেয়ার করা যাবে এমন ডিভাইসের সূচি সম্পূর্ণ স্ক্রিন জুড়ে খোলা হয়েছে।</translation>
 <translation id="2905036901251765993">কাছাকাছি আছেন এমন ব্যক্তির সাথে শেয়ার করতে তাকে এই QR কোড স্ক্যান করতে দিন</translation>
 <translation id="2909615210195135082">Google বিজ্ঞপ্তি প্ল্যাটফর্ম</translation>
@@ -443,6 +445,7 @@
 <translation id="4405224443901389797">এই ফোল্ডারে সরান…</translation>
 <translation id="4411535500181276704">লাইট মোড</translation>
 <translation id="4415276339145661267">আপনার Google অ্যাকাউন্ট ম্যানেজ করুন</translation>
+<translation id="4427306783828095590">ফিশিং ও ম্যালওয়্যার ব্লক করার ব্যাপারে উন্নত সুরক্ষা আরও সাহায্য করে</translation>
 <translation id="4440958355523780886">Google লাইট পৃষ্ঠা পাঠিয়েছে। আসল পৃষ্ঠাটি লোড করতে ট্যাপ করুন।</translation>
 <translation id="4452411734226507615"><ph name="TAB_TITLE" /> ট্যাবটি বন্ধ করুন</translation>
 <translation id="4452548195519783679"><ph name="FOLDER_NAME" /> এ বুকমার্ক করা হয়েছে</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 102d5bb..4980908 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
@@ -300,6 +300,7 @@
 <translation id="3211426585530211793">Izbrisano: <ph name="ITEM_TITLE" /></translation>
 <translation id="3211503082155944789">Broj nepročitanih stranica: <ph name="READING_LIST_COUNT" /></translation>
 <translation id="321773570071367578">Ako zaboravite pristupni izraz ili želite promijeniti ovu postavku, <ph name="BEGIN_LINK" />poništite sinhronizaciju<ph name="END_LINK" /></translation>
+<translation id="3227557059438308877">Google Chrome kao sigurnosni ključ</translation>
 <translation id="3232754137068452469">Web aplikacija</translation>
 <translation id="3236059992281584593">Još 1 min</translation>
 <translation id="3244271242291266297">MM</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 4705d50c..ee2766d 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
@@ -450,7 +450,7 @@
 <translation id="4405224443901389797">Mou a…</translation>
 <translation id="4411535500181276704">Mode bàsic</translation>
 <translation id="4415276339145661267">Gestiona el teu Compte de Google</translation>
-<translation id="4427306783828095590">La protecció millorada fa més per bloquejar la pesca de credencials i el programari maliciós</translation>
+<translation id="4427306783828095590">La protecció millorada és més efiçaç a l'hora de bloquejar la pesca de credencials i el programari maliciós</translation>
 <translation id="4440958355523780886">Pàgina en mode bàsic oferta per Google. Toca per carregar l'original.</translation>
 <translation id="4452411734226507615">Tanca la pestanya <ph name="TAB_TITLE" /></translation>
 <translation id="4452548195519783679">Adreça d'interès afegida a <ph name="FOLDER_NAME" /></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 8c7cde2..3970f2f 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
@@ -381,7 +381,6 @@
 <translation id="3810838688059735925">Video</translation>
 <translation id="3810973564298564668">Verwalten</translation>
 <translation id="3819178904835489326"><ph name="NUMBER_OF_DOWNLOADS" /> Downloads gelöscht</translation>
-<translation id="3848957262889631524">Google <ph name="APP_NAME" /> als Sicherheitsschlüssel</translation>
 <translation id="3856096718352044181">Vergewissern Sie sich, dass dies ein gültiger Provider ist, oder versuchen Sie es später noch einmal</translation>
 <translation id="3861633093716975811">Beliebte Videos</translation>
 <translation id="3892148308691398805">Text kopieren</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 d7b1d4b5b..21611b1 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
@@ -300,6 +300,7 @@
 <translation id="3211426585530211793">Deleted <ph name="ITEM_TITLE" /></translation>
 <translation id="3211503082155944789"><ph name="READING_LIST_COUNT" /> unread pages</translation>
 <translation id="321773570071367578">If you forgot your passphrase or want to change this setting, <ph name="BEGIN_LINK" />reset sync<ph name="END_LINK" /></translation>
+<translation id="3227557059438308877">Google Chrome as a security key</translation>
 <translation id="3232754137068452469">Web App</translation>
 <translation id="3236059992281584593">1 min left</translation>
 <translation id="3244271242291266297">MM</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 5c0b274..13193cf 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
@@ -300,6 +300,7 @@
 <translation id="3211426585530211793"><ph name="ITEM_TITLE" /> kustutati</translation>
 <translation id="3211503082155944789"><ph name="READING_LIST_COUNT" /> lugemata lehte</translation>
 <translation id="321773570071367578">Kui unustasite parooli või soovite seda seadet muuta, <ph name="BEGIN_LINK" />lähtestage sünkroonimine<ph name="END_LINK" /></translation>
+<translation id="3227557059438308877">Google Chrome turvavõtmena</translation>
 <translation id="3232754137068452469">Veebirakendus</translation>
 <translation id="3236059992281584593">Jäänud on 1 minut</translation>
 <translation id="3244271242291266297">kk</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 b97d4e39..8aa3e8c 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
@@ -300,6 +300,7 @@
 <translation id="3211426585530211793">Na-delete ang <ph name="ITEM_TITLE" /></translation>
 <translation id="3211503082155944789"><ph name="READING_LIST_COUNT" /> (na) page ang hindi pa nababasa</translation>
 <translation id="321773570071367578">Kung nakalimutan mo ang iyong passphrase o gusto mong baguhin ang setting na ito, <ph name="BEGIN_LINK" />i-reset ang pag-sync<ph name="END_LINK" /></translation>
+<translation id="3227557059438308877">Google Chrome bilang Security Key</translation>
 <translation id="3232754137068452469">Web App</translation>
 <translation id="3236059992281584593">1 minuto na lang ang natitira</translation>
 <translation id="3244271242291266297">MM</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 0d8cb04e..bba5ac4f 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
@@ -300,6 +300,7 @@
 <translation id="3211426585530211793"><ph name="ITEM_TITLE" /> मिटाया गया</translation>
 <translation id="3211503082155944789"><ph name="READING_LIST_COUNT" /> पेजों को पढ़ा नहीं गया है</translation>
 <translation id="321773570071367578">अगर आप अपना 'पासफ़्रेज़' भूल गए हैं या यह सेटिंग बदलना चाहते हैं, तो <ph name="BEGIN_LINK" /> सिंक रीसेट करें<ph name="END_LINK" /></translation>
+<translation id="3227557059438308877">Google Chrome, सुरक्षा कुंजी के रूप में</translation>
 <translation id="3232754137068452469">वेब ऐप्लिकेशन</translation>
 <translation id="3236059992281584593">1 मिनट शेष</translation>
 <translation id="3244271242291266297">MM</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 da25401..564bee6 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
@@ -169,7 +169,7 @@
 <translation id="2175927920773552910">Kode QR</translation>
 <translation id="218608176142494674">Berbagi</translation>
 <translation id="2195339740518523951">Dapatkan keamanan terkuat Chrome</translation>
-<translation id="2200113223741723867">Kelola berbagi data penggunaan</translation>
+<translation id="2200113223741723867">Kelola pembagian data penggunaan</translation>
 <translation id="2227444325776770048">Lanjutkan sebagai <ph name="USER_FULL_NAME" /></translation>
 <translation id="2234876718134438132">Sinkronisasi dan layanan Google</translation>
 <translation id="2239812875700136898">Kontrol artikel Anda dengan tombol Opsi untuk Discover</translation>
@@ -300,6 +300,7 @@
 <translation id="3211426585530211793"><ph name="ITEM_TITLE" /> dihapus</translation>
 <translation id="3211503082155944789"><ph name="READING_LIST_COUNT" /> halaman belum dibaca</translation>
 <translation id="321773570071367578">Jika lupa frasa sandi atau ingin mengubah setelan ini, <ph name="BEGIN_LINK" />reset sinkronisasi<ph name="END_LINK" /></translation>
+<translation id="3227557059438308877">Google Chrome sebagai Kunci Keamanan</translation>
 <translation id="3232754137068452469">Aplikasi Web</translation>
 <translation id="3236059992281584593">1 menit lagi</translation>
 <translation id="3244271242291266297">BB</translation>
@@ -1134,7 +1135,7 @@
 <translation id="9148126808321036104">Login sekali lagi</translation>
 <translation id="9155898266292537608">Anda juga dapat menelusuri dengan mengetuk kata secara cepat</translation>
 <translation id="9169507124922466868">Histori navigasi terbuka setengah</translation>
-<translation id="9191031968346938109">Tambahkan ke …</translation>
+<translation id="9191031968346938109">Tambahkan ke…</translation>
 <translation id="9199368092038462496">{NUM_MINS,plural, =1{Diperiksa 1 menit yang lalu}other{Diperiksa # menit yang lalu}}</translation>
 <translation id="9204836675896933765">1 file tersisa</translation>
 <translation id="9206873250291191720">A</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 4caf3bac..1a12c43 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
@@ -279,7 +279,7 @@
 <translation id="3016635187733453316">יש לוודא שהמכשיר הזה מחובר לאינטרנט</translation>
 <translation id="3029704984691124060">ביטויי הסיסמה אינם תואמים</translation>
 <translation id="3034163383943672781">ההורדה תתחיל בתאריך <ph name="DATE" />.</translation>
-<translation id="3036750288708366620"><ph name="BEGIN_LINK" />קבל עזרה<ph name="END_LINK" /></translation>
+<translation id="3036750288708366620"><ph name="BEGIN_LINK" />קבלת עזרה<ph name="END_LINK" /></translation>
 <translation id="305593374596241526">‏הגישה למיקום כבויה. יש להפעיל אותה ב<ph name="BEGIN_LINK" />הגדרות Android<ph name="END_LINK" />.</translation>
 <translation id="3058498974290601450">אפשר להפעיל את הסנכרון בכל זמן דרך ההגדרות</translation>
 <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{סימניה אחת (<ph name="BOOKMARKS_COUNT_ONE" />)}two{<ph name="BOOKMARKS_COUNT_MANY" /> סימניות}many{<ph name="BOOKMARKS_COUNT_MANY" /> סימניות}other{<ph name="BOOKMARKS_COUNT_MANY" /> סימניות}}</translation>
@@ -530,7 +530,7 @@
 <translation id="4910889077668685004">אפליקציות תשלום</translation>
 <translation id="4913161338056004800">איפוס הנתונים הסטטיסטיים</translation>
 <translation id="4913169188695071480">הפסק לרענן</translation>
-<translation id="4915549754973153784"><ph name="BEGIN_LINK" />קבל עזרה<ph name="END_LINK" /> בזמן חיפוש התקנים…</translation>
+<translation id="4915549754973153784"><ph name="BEGIN_LINK" />קבלת עזרה<ph name="END_LINK" /> בזמן חיפוש מכשירים…</translation>
 <translation id="4921180162323349895">{FILE_COUNT,plural, =1{דף אחד (#)}two{# דפים}many{# דפים}other{# דפים}}</translation>
 <translation id="4925120120285606924">צילום מסך <ph name="CURRENT_DATE_ISO" /></translation>
 <translation id="49268022542405662">המערכת תייצא את הסיסמאות ותוריד אותן כקובץ טקסט. הן יהיו גלויות לכל המשתמשים והאפליקציות שיש להם גישה לתיקיית היעד.</translation>
@@ -740,7 +740,7 @@
 <translation id="6343495912647200061">{SHIPPING_ADDRESS,plural, =1{‏<ph name="SHIPPING_ADDRESS_PREVIEW" />‎\u2026‎ ו-<ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> נוספת}two{‏<ph name="SHIPPING_ADDRESS_PREVIEW" />‎\u2026‎ ו-<ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> נוספות}many{‏<ph name="SHIPPING_ADDRESS_PREVIEW" />‎\u2026‎ ו-<ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> נוספות}other{‏<ph name="SHIPPING_ADDRESS_PREVIEW" />‎\u2026‎ ו-<ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> נוספות}}</translation>
 <translation id="6345878117466430440">סימון כפריט שנקרא</translation>
 <translation id="6364438453358674297">האם להסיר את ההצעה מההיסטוריה?</translation>
-<translation id="6366047038980456022"><ph name="APP_NAME" /> מציע את הכלים החכמים, את המהירות ואת ההגנה שאתם צריכים כדי לבצע פעולות, ליצור ולמצוא תוכן חדש באינטרנט</translation>
+<translation id="6366047038980456022"><ph name="APP_NAME" /> כולל את הכלים החכמים, את המהירות ואת ההגנה שאתם צריכים כדי לבצע פעולות, ליצור ולמצוא תוכן חדש באינטרנט</translation>
 <translation id="6378173571450987352">פרטים: מיון לפי נפח הנתונים שנצרכו</translation>
 <translation id="6379829913050047669">‏האפליקציה <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" />.</translation>
 <translation id="6381421346744604172">תצוגה כהה יותר של אתרים</translation>
@@ -925,7 +925,7 @@
 <translation id="7606077192958116810">מצב הטעינה המהירה מופעל. אפשר לנהל אותו דרך ההגדרות.</translation>
 <translation id="7612619742409846846">‏מחובר ל-Google בשם</translation>
 <translation id="7619072057915878432">הורדת <ph name="FILE_NAME" /> נכשלה עקב כשלים ברשת.</translation>
-<translation id="7624880197989616768"><ph name="BEGIN_LINK1" />קבל עזרה<ph name="END_LINK1" /> או <ph name="BEGIN_LINK2" />חפש שוב<ph name="END_LINK2" /></translation>
+<translation id="7624880197989616768"><ph name="BEGIN_LINK1" />קבלת עזרה<ph name="END_LINK1" /> או <ph name="BEGIN_LINK2" />חיפוש שוב<ph name="END_LINK2" /></translation>
 <translation id="7626032353295482388">‏ברוכים הבאים ל-Chrome</translation>
 <translation id="7630202231528827509">‏כתובת ה-URL של הספק</translation>
 <translation id="7638584964844754484">ביטוי סיסמה שגוי</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 66056cd1..d41dcde 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
@@ -300,6 +300,7 @@
 <translation id="3211426585530211793"><ph name="ITEM_TITLE" /> წაშლილია</translation>
 <translation id="3211503082155944789"><ph name="READING_LIST_COUNT" /> წაუკითხავი გვერდი</translation>
 <translation id="321773570071367578">თუ დაგავიწყდათ თქვენი საიდუმლო ფრაზა, ან ამ პარამეტრის შეცვლა გსურთ, <ph name="BEGIN_LINK" />გადააყენეთ სინქრონიზაცია<ph name="END_LINK" /></translation>
+<translation id="3227557059438308877">Google Chrome უსაფრთხოების გასაღების სახით</translation>
 <translation id="3232754137068452469">ვებ-აპი</translation>
 <translation id="3236059992281584593">დარჩენილია 1 წთ</translation>
 <translation id="3244271242291266297">თთ</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_kk.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_kk.xtb
index f8390b8..a1dee60 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_kk.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_kk.xtb
@@ -450,7 +450,7 @@
 <translation id="4405224443901389797">Мына қалтаға жылжыту…</translation>
 <translation id="4411535500181276704">Lite режимі</translation>
 <translation id="4415276339145661267">Google есептік жазбасын басқару</translation>
-<translation id="4427306783828095590">Жақсартылған қорғау фишинг пен зиянды бағдарламаларды бөгеуде көбірек істейді.</translation>
+<translation id="4427306783828095590">Жақсартылған қорғаныс фишинг пен зиянды бағдарламаларды бөгеуде көбірек істейді.</translation>
 <translation id="4440958355523780886">Google бетті Lite нұсқасында ұсынды. Бастапқы нұсқасын жүктеу үшін түртіңіз.</translation>
 <translation id="4452411734226507615"><ph name="TAB_TITLE" /> қойындысын жабу</translation>
 <translation id="4452548195519783679"><ph name="FOLDER_NAME" /> бетбелгісі жасалды</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 65d3e94..6106314 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
@@ -159,7 +159,7 @@
 <translation id="2131665479022868825">បានរក្សាទុក <ph name="DATA" /></translation>
 <translation id="213279576345780926">បានបិទ <ph name="TAB_TITLE" /></translation>
 <translation id="2139186145475833000">បន្ថែមទៅអេក្រង់ដើម</translation>
-<translation id="214888715418183969">ជ្រើសរើសអ្វី​ដែលអ្នកពេញចិត្ត ដើម្បីចែករំលែក​ជាមួយ Chrome។ មេទ្រិកដែលអ្នកចែករំលែក​នឹងត្រូវបានប្រើ ដើម្បីជួយ​កែលម្អមុខងារ ប្រតិបត្តិការ និងស្ថិរភាពរបស់ Chrome។</translation>
+<translation id="214888715418183969">ជ្រើសរើសអ្វី​ដែលអ្នកយល់ថាអាចចែករំលែក​ជាមួយ Chrome បាន។ មេទ្រិកដែលអ្នកចែករំលែក​នឹងត្រូវបានប្រើ ដើម្បីជួយ​កែលម្អមុខងារ ប្រតិបត្តិការ និងស្ថិរភាពរបស់ Chrome។</translation>
 <translation id="2154484045852737596">កែសម្រួលកាត</translation>
 <translation id="2154710561487035718">ចម្លង URL</translation>
 <translation id="2156074688469523661">ទំព័រនៅសល់ (<ph name="NUMBER_OF_SITES" />)</translation>
@@ -300,6 +300,7 @@
 <translation id="3211426585530211793">បានលុប <ph name="ITEM_TITLE" /> ហើយ</translation>
 <translation id="3211503082155944789">ទំព័រមិនទាន់អាន <ph name="READING_LIST_COUNT" /></translation>
 <translation id="321773570071367578">ប្រសិនបើអ្នកភ្លេចឃ្លាសម្ងាត់របស់អ្នក ឬចង់ប្តូរការកំណត់នេះ <ph name="BEGIN_LINK" />សូមកំណត់ការធ្វើសមកាលកម្មឡើងវិញ<ph name="END_LINK" /></translation>
+<translation id="3227557059438308877">បើក Google Chrome ជា​សោសុវត្ថិភាព</translation>
 <translation id="3232754137068452469">កម្មវិធីបណ្តាញ</translation>
 <translation id="3236059992281584593">នៅសល់ 1 នាទីទៀត</translation>
 <translation id="3244271242291266297">ខែ</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 e65ddf08..271b0467 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
@@ -300,6 +300,7 @@
 <translation id="3211426585530211793"><ph name="ITEM_TITLE" /> 삭제됨</translation>
 <translation id="3211503082155944789">읽지 않은 페이지 <ph name="READING_LIST_COUNT" />개</translation>
 <translation id="321773570071367578">암호를 잊어버렸거나 이 설정을 변경하려면 <ph name="BEGIN_LINK" />동기화를 재설정<ph name="END_LINK" />합니다.</translation>
+<translation id="3227557059438308877">Chrome을 보안 키로 사용</translation>
 <translation id="3232754137068452469">웹 앱</translation>
 <translation id="3236059992281584593">1분 남음</translation>
 <translation id="3244271242291266297">MM</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 d647e18..100e750 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
@@ -300,6 +300,7 @@
 <translation id="3211426585530211793">ລຶບ <ph name="ITEM_TITLE" /> ແລ້ວ</translation>
 <translation id="3211503082155944789"><ph name="READING_LIST_COUNT" /> ໜ້າທີ່ຍັງບໍ່ໄດ້ອ່ານ</translation>
 <translation id="321773570071367578">ຖ້າທ່ານລືມວະລີຜ່ານຂອງທ່ານ ຫຼື ຕ້ອງການປ່ຽນການຕັ້ງຄ່ານີ້, <ph name="BEGIN_LINK" />ຣີເຊັດການຊິ້ງຂໍ້ມູນ<ph name="END_LINK" /></translation>
+<translation id="3227557059438308877">Google Chrome ເປັນກະແຈຄວາມປອດໄພ</translation>
 <translation id="3232754137068452469">ແອັບຂອງເວັບ</translation>
 <translation id="3236059992281584593">ຍັງເຫຼືອ 1 ນາທີ</translation>
 <translation id="3244271242291266297">ດດ</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mn.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mn.xtb
index 1e9e9dc..9e87b9b 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mn.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mn.xtb
@@ -300,6 +300,7 @@
 <translation id="3211426585530211793"><ph name="ITEM_TITLE" />-г устгасан</translation>
 <translation id="3211503082155944789">Уншаагүй <ph name="READING_LIST_COUNT" /> хуудас</translation>
 <translation id="321773570071367578">Хэрэв та нэвтрэх үгээ мартсан, эсвэл тохиргоог нь өөрчлөхийг хүсвэл <ph name="BEGIN_LINK" />синкийг дахин тохируулна уу<ph name="END_LINK" /></translation>
+<translation id="3227557059438308877">Google Chrome-г аюулгүй байдлын түлхүүр болгох</translation>
 <translation id="3232754137068452469">Веб Апп</translation>
 <translation id="3236059992281584593">1 минут үлдсэн</translation>
 <translation id="3244271242291266297">MM</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 d6b31a4..7a4f751 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
@@ -300,6 +300,7 @@
 <translation id="3211426585530211793"><ph name="ITEM_TITLE" /> dipadamkan</translation>
 <translation id="3211503082155944789"><ph name="READING_LIST_COUNT" /> halaman belum dibaca</translation>
 <translation id="321773570071367578">Jika anda terlupa ungkapan laluan atau ingin menukar tetapan ini, <ph name="BEGIN_LINK" />tetapkan semula penyegerakan<ph name="END_LINK" /></translation>
+<translation id="3227557059438308877">Google Chrome sebagai Kunci Keselamatan</translation>
 <translation id="3232754137068452469">Apl Web</translation>
 <translation id="3236059992281584593">1 minit lagi</translation>
 <translation id="3244271242291266297">BB</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 199f584..2bca8ca5 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
@@ -300,6 +300,7 @@
 <translation id="3211426585530211793"><ph name="ITEM_TITLE" /> ကို ဖျက်လိုက်ပါပြီ</translation>
 <translation id="3211503082155944789">မဖတ်ရသေးသော <ph name="READING_LIST_COUNT" /> မျက်နှာ</translation>
 <translation id="321773570071367578">သင့်စကားဝှက်ကိုမေ့သွားလျှင် သို့မဟုတ် ဤဆက်တင်ကိုပြောင်းလဲလိုလျှင်၊ <ph name="BEGIN_LINK" />စင့်ခ်ပြုလုပ်ခြင်းကို ပြန်လည်သတ်မှတ်ပါ<ph name="END_LINK" /></translation>
+<translation id="3227557059438308877">Google Chrome ကို 'လုံခြုံရေးကီး' အဖြစ်</translation>
 <translation id="3232754137068452469">ဝဘ် အက်ပ်</translation>
 <translation id="3236059992281584593">၁ မိနစ် ကျန်သည်</translation>
 <translation id="3244271242291266297">MM</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 e05ed5f..c0bf82af6 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
@@ -300,6 +300,7 @@
 <translation id="3211426585530211793"><ph name="ITEM_TITLE" /> is verwijderd</translation>
 <translation id="3211503082155944789"><ph name="READING_LIST_COUNT" /> ongelezen pagina's</translation>
 <translation id="321773570071367578">Als je je wachtwoordzin bent vergeten of deze instelling wilt wijzigen, <ph name="BEGIN_LINK" />stel je de synchronisatie opnieuw in<ph name="END_LINK" /></translation>
+<translation id="3227557059438308877">Google Chrome als beveiligingssleutel</translation>
 <translation id="3232754137068452469">Webapp</translation>
 <translation id="3236059992281584593">1 minuut resterend</translation>
 <translation id="3244271242291266297">MM</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 710cb6b8..9b6b2f65 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
@@ -168,7 +168,7 @@
 <translation id="2169830938017475061">Agora</translation>
 <translation id="2175927920773552910">Código QR</translation>
 <translation id="218608176142494674">Compartilhamento</translation>
-<translation id="2195339740518523951">Usar o mais alto nível de segurança do Chrome</translation>
+<translation id="2195339740518523951">Usar o nível mais alto de segurança do Chrome</translation>
 <translation id="2200113223741723867">Gerenciar o compartilhamento de dados de uso</translation>
 <translation id="2227444325776770048">Continuar como <ph name="USER_FULL_NAME" /></translation>
 <translation id="2234876718134438132">Serviços do Google e de sincronização</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 4e78dc1..e6c6b11 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
@@ -300,6 +300,7 @@
 <translation id="3211426585530211793"><ph name="ITEM_TITLE" /> u fshi</translation>
 <translation id="3211503082155944789"><ph name="READING_LIST_COUNT" /> faqe të palexuara</translation>
 <translation id="321773570071367578">Nëse e ke harruar frazën e kalimit apo dëshiron të ndryshosh këtë cilësim, <ph name="BEGIN_LINK" />rivendos sinkronizimin<ph name="END_LINK" /></translation>
+<translation id="3227557059438308877">Google Chrome si çelës sigurie</translation>
 <translation id="3232754137068452469">Aplikacioni i uebit</translation>
 <translation id="3236059992281584593">1 minutë e mbetur</translation>
 <translation id="3244271242291266297">MM</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 8fa0715..fdedf5d 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
@@ -159,7 +159,7 @@
 <translation id="2131665479022868825">Sačuvano: <ph name="DATA" /></translation>
 <translation id="213279576345780926">Zatvorili ste karticu <ph name="TAB_TITLE" /></translation>
 <translation id="2139186145475833000">Dodaj na početni ekran</translation>
-<translation id="214888715418183969">Izaberite ono što želite da delite u Chrome-u. Pokazatelje koje podelite ćemo koristiti za poboljšanje funkcija, performansi i stabilnosti Chrome-a.</translation>
+<translation id="214888715418183969">Izaberite šta želite da delite sa Chrome-om. Pokazatelje koje delite koristimo za poboljšanje funkcija, performansi i stabilnosti Chrome-a.</translation>
 <translation id="2154484045852737596">Izmenite karticu</translation>
 <translation id="2154710561487035718">Kopiranje URL adrese</translation>
 <translation id="2156074688469523661">Preostali sajtovi (<ph name="NUMBER_OF_SITES" />)</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 1a340c1..9cc9de2 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
@@ -159,7 +159,7 @@
 <translation id="2131665479022868825">Сачувано: <ph name="DATA" /></translation>
 <translation id="213279576345780926">Затворили сте картицу <ph name="TAB_TITLE" /></translation>
 <translation id="2139186145475833000">Додај на почетни екран</translation>
-<translation id="214888715418183969">Изаберите оно што желите да делите у Chrome-у. Показатеље које поделите ћемо користити за побољшање функција, перформанси и стабилности Chrome-а.</translation>
+<translation id="214888715418183969">Изаберите шта желите да делите са Chrome-ом. Показатеље које делите користимо за побољшање функција, перформанси и стабилности Chrome-а.</translation>
 <translation id="2154484045852737596">Измените картицу</translation>
 <translation id="2154710561487035718">Копирање URL адресе</translation>
 <translation id="2156074688469523661">Преостали сајтови (<ph name="NUMBER_OF_SITES" />)</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 5733a3e..9c3e25a 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
@@ -73,7 +73,7 @@
 <translation id="1450753235335490080">无法分享<ph name="CONTENT_TYPE" /></translation>
 <translation id="1477626028522505441">未能成功下载 <ph name="FILE_NAME" />,因为服务器出现了问题。</translation>
 <translation id="1506061864768559482">搜索引擎</translation>
-<translation id="151267239139452619">添加到“下载内容”页面</translation>
+<translation id="151267239139452619">添加到“下载内容”</translation>
 <translation id="1513352483775369820">书签和网络历史记录</translation>
 <translation id="1513858653616922153">删除密码</translation>
 <translation id="1521774566618522728">今天曾有活动</translation>
@@ -168,8 +168,8 @@
 <translation id="2169830938017475061">刚刚</translation>
 <translation id="2175927920773552910">二维码</translation>
 <translation id="218608176142494674">共享</translation>
-<translation id="2195339740518523951">获取 Chrome 的最强安全保护</translation>
-<translation id="2200113223741723867">管理使用情况数据共享</translation>
+<translation id="2195339740518523951">获享 Chrome 的最强安全保护</translation>
+<translation id="2200113223741723867">对使用情况数据的共享进行管理</translation>
 <translation id="2227444325776770048">以“<ph name="USER_FULL_NAME" />”的身份继续</translation>
 <translation id="2234876718134438132">同步功能和 Google 服务</translation>
 <translation id="2239812875700136898">通过“‘探索’功能的选项”按钮控制您的报道</translation>
@@ -374,7 +374,7 @@
 <translation id="3771290962915251154">此设置已被停用,因为开启了“家长控制”功能</translation>
 <translation id="3771694256347217732">Google 服务条款</translation>
 <translation id="3773755127849930740">请<ph name="BEGIN_LINK" />开启蓝牙<ph name="END_LINK" />以允许配对</translation>
-<translation id="3773856050682458546">基本数据,以及与您所访网站和所用应用有关的信息</translation>
+<translation id="3773856050682458546">基本数据加上您所访问网站、所用应用的有关信息</translation>
 <translation id="3775705724665058594">发送到您的设备</translation>
 <translation id="3778956594442850293">已添加到主屏幕</translation>
 <translation id="3789841737615482174">安装</translation>
@@ -551,7 +551,7 @@
 <translation id="5039804452771397117">允许</translation>
 <translation id="5040262127954254034">隐私权</translation>
 <translation id="5087580092889165836">添加新卡</translation>
-<translation id="5091249083535528968">经过扩展的使用情况数据</translation>
+<translation id="5091249083535528968">扩展的使用情况数据</translation>
 <translation id="509429900233858213">出现错误。</translation>
 <translation id="510275257476243843">还剩 1 小时</translation>
 <translation id="5123685120097942451">无痕式标签页</translation>
@@ -731,7 +731,7 @@
 <translation id="6303969859164067831">退出帐号并关闭同步功能</translation>
 <translation id="6312687380483398334">Web 应用(安静)</translation>
 <translation id="6316139424528454185">Android 版本不受支持</translation>
-<translation id="6321526113093607004">添加到“书签”页面</translation>
+<translation id="6321526113093607004">添加到“书签”</translation>
 <translation id="6324034347079777476">Android 系统同步功能已停用</translation>
 <translation id="6333140779060797560">通过<ph name="APPLICATION" />分享</translation>
 <translation id="6337234675334993532">加密</translation>
@@ -843,7 +843,7 @@
 <translation id="7015203776128479407">初始同步设置未完成。同步功能处于关闭状态。</translation>
 <translation id="7022756207310403729">在浏览器中打开</translation>
 <translation id="702463548815491781">建议在开启 TalkBack 或“开关控制”时使用</translation>
-<translation id="7027549951530753705">已恢复“<ph name="ITEM_TITLE" />”</translation>
+<translation id="7027549951530753705">“<ph name="ITEM_TITLE" />”已恢复</translation>
 <translation id="7029809446516969842">密码</translation>
 <translation id="703523980599857277">更改主页</translation>
 <translation id="7054588988317389591">获取图片说明?</translation>
diff --git a/chrome/browser/ui/ash/chrome_new_window_client.cc b/chrome/browser/ui/ash/chrome_new_window_client.cc
index 60de8eb..257515d 100644
--- a/chrome/browser/ui/ash/chrome_new_window_client.cc
+++ b/chrome/browser/ui/ash/chrome_new_window_client.cc
@@ -196,8 +196,8 @@
 
 constexpr std::pair<arc::mojom::ChromePage, const char*> kAboutPagesMapping[] =
     {{ChromePage::ABOUTBLANK, url::kAboutBlankURL},
-     {ChromePage::ABOUTDOWNLOADS, "about:downloads"},
-     {ChromePage::ABOUTHISTORY, "about:history"}};
+     {ChromePage::ABOUTDOWNLOADS, "chrome://downloads/"},
+     {ChromePage::ABOUTHISTORY, "chrome://history/"}};
 
 constexpr arc::mojom::ChromePage kDeprecatedPages[] = {
     ChromePage::DEPRECATED_DOWNLOADEDCONTENT,
diff --git a/chrome/browser/ui/browser_command_controller_browsertest.cc b/chrome/browser/ui/browser_command_controller_browsertest.cc
index 9a0add7e..fea7742a 100644
--- a/chrome/browser/ui/browser_command_controller_browsertest.cc
+++ b/chrome/browser/ui/browser_command_controller_browsertest.cc
@@ -188,7 +188,7 @@
 IN_PROC_BROWSER_TEST_F(BrowserCommandControllerBrowserTest,
                        PRE_TestTabRestoreCommandEnabled) {
   ui_test_utils::NavigateToURLWithDisposition(
-      browser(), GURL("about:"), WindowOpenDisposition::NEW_FOREGROUND_TAB,
+      browser(), GURL("about:blank"), WindowOpenDisposition::NEW_FOREGROUND_TAB,
       ui_test_utils::BROWSER_TEST_WAIT_FOR_LOAD_STOP);
   ASSERT_EQ(2, browser()->tab_strip_model()->count());
   EXPECT_EQ(1, browser()->tab_strip_model()->active_index());
diff --git a/chrome/browser/ui/omnibox/omnibox_view_browsertest.cc b/chrome/browser/ui/omnibox/omnibox_view_browsertest.cc
index de274f9..30b53de 100644
--- a/chrome/browser/ui/omnibox/omnibox_view_browsertest.cc
+++ b/chrome/browser/ui/omnibox/omnibox_view_browsertest.cc
@@ -737,25 +737,6 @@
   EXPECT_EQ(old_selected_line, popup_model->selected_line());
 }
 
-// Verifies that https://crbug.com/924935 doesn't regress.
-IN_PROC_BROWSER_TEST_F(OmniboxViewTest,
-                       RendererInitiatedFocusPreservesUserText) {
-  OmniboxView* omnibox_view = nullptr;
-  ASSERT_NO_FATAL_FAILURE(GetOmniboxView(&omnibox_view));
-
-  // Type a single character.
-  ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_A, 0));
-  EXPECT_EQ(base::ASCIIToUTF16("a"), omnibox_view->GetText());
-
-  // Simulate a renderer-initated focus event.
-  browser()->SetFocusToLocationBar();
-
-  // Type an additional character and verify that we didn't clobber the
-  // character we already typed.
-  ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_B, 0));
-  EXPECT_EQ(base::ASCIIToUTF16("ab"), omnibox_view->GetText());
-}
-
 IN_PROC_BROWSER_TEST_F(OmniboxViewTest, BasicTextOperations) {
   ui_test_utils::NavigateToURL(browser(), GURL(url::kAboutBlankURL));
   chrome::FocusLocationBar(browser());
diff --git a/chrome/browser/ui/page_info/chrome_page_info_delegate.cc b/chrome/browser/ui/page_info/chrome_page_info_delegate.cc
index cf9a343..61ec5bc 100644
--- a/chrome/browser/ui/page_info/chrome_page_info_delegate.cc
+++ b/chrome/browser/ui/page_info/chrome_page_info_delegate.cc
@@ -172,9 +172,10 @@
 
 bool ChromePageInfoDelegate::IsSubresourceFilterActivated(
     const GURL& site_url) {
-  SubresourceFilterContentSettingsManager* settings_manager =
-      SubresourceFilterProfileContextFactory::GetForProfile(GetProfile())
-          ->settings_manager();
+  subresource_filter::SubresourceFilterContentSettingsManager*
+      settings_manager =
+          SubresourceFilterProfileContextFactory::GetForProfile(GetProfile())
+              ->settings_manager();
 
   return settings_manager->GetSiteActivationFromMetadata(site_url);
 }
diff --git a/chrome/browser/ui/page_info/page_info_unittest.cc b/chrome/browser/ui/page_info/page_info_unittest.cc
index 2e5a9f4..2794cc6 100644
--- a/chrome/browser/ui/page_info/page_info_unittest.cc
+++ b/chrome/browser/ui/page_info/page_info_unittest.cc
@@ -1508,12 +1508,14 @@
   // Now, explicitly set site activation metadata to simulate activation on
   // that origin, which is encoded by the existence of the website setting. The
   // setting should then appear in page_info.
-  SubresourceFilterContentSettingsManager* settings_manager =
-      SubresourceFilterProfileContextFactory::GetForProfile(profile())
-          ->settings_manager();
+  subresource_filter::SubresourceFilterContentSettingsManager*
+      settings_manager =
+          SubresourceFilterProfileContextFactory::GetForProfile(profile())
+              ->settings_manager();
   settings_manager->SetSiteMetadataBasedOnActivation(
       url(), true,
-      SubresourceFilterContentSettingsManager::ActivationSource::kSafeBrowsing);
+      subresource_filter::SubresourceFilterContentSettingsManager::
+          ActivationSource::kSafeBrowsing);
 
   page_info();
   EXPECT_TRUE(showing_setting(last_permission_info_list()));
diff --git a/chrome/browser/ui/views/commander_frontend_views.cc b/chrome/browser/ui/views/commander_frontend_views.cc
index a832c6d..831538ec 100644
--- a/chrome/browser/ui/views/commander_frontend_views.cc
+++ b/chrome/browser/ui/views/commander_frontend_views.cc
@@ -7,12 +7,14 @@
 #include "base/bind.h"
 #include "build/build_config.h"
 #include "chrome/browser/browser_process.h"
+#include "chrome/browser/task_manager/web_contents_tags.h"
 #include "chrome/browser/ui/commander/commander_backend.h"
 #include "chrome/browser/ui/commander/commander_view_model.h"
 #include "chrome/browser/ui/views/frame/browser_view.h"
 #include "chrome/browser/ui/views/theme_copying_widget.h"
 #include "chrome/browser/ui/webui/commander/commander_ui.h"
 #include "chrome/common/webui_url_constants.h"
+#include "chrome/grit/generated_resources.h"
 #include "ui/views/controls/webview/unhandled_keyboard_event_handler.h"
 #include "ui/views/controls/webview/webview.h"
 #include "ui/views/widget/widget.h"
@@ -183,6 +185,10 @@
 
   web_view_ = std::make_unique<CommanderWebView>(profile);
   web_view_->set_allow_accelerators(true);
+  // Make the commander WebContents show up in the task manager.
+  content::WebContents* web_contents = web_view_->GetWebContents();
+  task_manager::WebContentsTags::CreateForToolContents(web_contents,
+                                                       IDS_COMMANDER_LABEL);
   if (show_requested_)
     Show(browser_);
 }
diff --git a/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash.h b/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash.h
index a9cca17..795725b 100644
--- a/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash.h
+++ b/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash.h
@@ -129,7 +129,7 @@
                            ActiveStateOfButtonMatchesWidget);
   FRIEND_TEST_ALL_PREFIXES(BrowserNonClientFrameViewAshTest,
                            RestoreMinimizedBrowserUpdatesCaption);
-  FRIEND_TEST_ALL_PREFIXES(ImmersiveModeControllerAshWebAppBrowserTest,
+  FRIEND_TEST_ALL_PREFIXES(ImmersiveModeControllerChromeosWebAppBrowserTest,
                            FrameLayoutToggleTabletMode);
   FRIEND_TEST_ALL_PREFIXES(HomeLauncherBrowserNonClientFrameViewAshTest,
                            TabletModeBrowserCaptionButtonVisibility);
diff --git a/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash_browsertest.cc b/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash_browsertest.cc
index d1ce34d..3b3a1d2 100644
--- a/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash_browsertest.cc
+++ b/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash_browsertest.cc
@@ -49,7 +49,7 @@
 #include "chrome/browser/ui/views/frame/browser_non_client_frame_view_ash.h"
 #include "chrome/browser/ui/views/frame/browser_view.h"
 #include "chrome/browser/ui/views/frame/immersive_mode_controller.h"
-#include "chrome/browser/ui/views/frame/immersive_mode_controller_ash.h"
+#include "chrome/browser/ui/views/frame/immersive_mode_controller_chromeos.h"
 #include "chrome/browser/ui/views/frame/tab_strip_region_view.h"
 #include "chrome/browser/ui/views/fullscreen_control/fullscreen_control_host.h"
 #include "chrome/browser/ui/views/location_bar/content_setting_image_view.h"
@@ -483,7 +483,7 @@
     BrowserView::SetDisableRevealerDelayForTesting(true);
 
     chromeos::ImmersiveFullscreenControllerTestApi(
-        static_cast<ImmersiveModeControllerAsh*>(
+        static_cast<ImmersiveModeControllerChromeos*>(
             BrowserView::GetBrowserViewForBrowser(browser())
                 ->immersive_mode_controller())
             ->controller())
@@ -682,7 +682,7 @@
   BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser);
 
   chromeos::ImmersiveFullscreenControllerTestApi(
-      static_cast<ImmersiveModeControllerAsh*>(
+      static_cast<ImmersiveModeControllerChromeos*>(
           browser_view->immersive_mode_controller())
           ->controller())
       .SetupForTest();
diff --git a/chrome/browser/ui/views/frame/immersive_mode_controller_ash.cc b/chrome/browser/ui/views/frame/immersive_mode_controller_chromeos.cc
similarity index 82%
rename from chrome/browser/ui/views/frame/immersive_mode_controller_ash.cc
rename to chrome/browser/ui/views/frame/immersive_mode_controller_chromeos.cc
index c3c4699..f000ae5 100644
--- a/chrome/browser/ui/views/frame/immersive_mode_controller_ash.cc
+++ b/chrome/browser/ui/views/frame/immersive_mode_controller_chromeos.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "chrome/browser/ui/views/frame/immersive_mode_controller_ash.h"
+#include "chrome/browser/ui/views/frame/immersive_mode_controller_chromeos.h"
 
 #include "base/macros.h"
 #include "chrome/browser/platform_util.h"
@@ -56,11 +56,11 @@
 
 }  // namespace
 
-ImmersiveModeControllerAsh::ImmersiveModeControllerAsh() = default;
+ImmersiveModeControllerChromeos::ImmersiveModeControllerChromeos() = default;
 
-ImmersiveModeControllerAsh::~ImmersiveModeControllerAsh() = default;
+ImmersiveModeControllerChromeos::~ImmersiveModeControllerChromeos() = default;
 
-void ImmersiveModeControllerAsh::Init(BrowserView* browser_view) {
+void ImmersiveModeControllerChromeos::Init(BrowserView* browser_view) {
   browser_view_ = browser_view;
   controller_.Init(this, browser_view_->frame(),
                    browser_view_->top_container());
@@ -68,7 +68,7 @@
   observed_windows_.Add(browser_view_->GetNativeWindow());
 }
 
-void ImmersiveModeControllerAsh::SetEnabled(bool enabled) {
+void ImmersiveModeControllerChromeos::SetEnabled(bool enabled) {
   if (controller_.IsEnabled() == enabled)
     return;
 
@@ -82,19 +82,19 @@
       browser_view_->frame(), enabled);
 }
 
-bool ImmersiveModeControllerAsh::IsEnabled() const {
+bool ImmersiveModeControllerChromeos::IsEnabled() const {
   return controller_.IsEnabled();
 }
 
-bool ImmersiveModeControllerAsh::ShouldHideTopViews() const {
+bool ImmersiveModeControllerChromeos::ShouldHideTopViews() const {
   return controller_.IsEnabled() && !controller_.IsRevealed();
 }
 
-bool ImmersiveModeControllerAsh::IsRevealed() const {
+bool ImmersiveModeControllerChromeos::IsRevealed() const {
   return controller_.IsRevealed();
 }
 
-int ImmersiveModeControllerAsh::GetTopContainerVerticalOffset(
+int ImmersiveModeControllerChromeos::GetTopContainerVerticalOffset(
     const gfx::Size& top_container_size) const {
   if (!IsEnabled())
     return 0;
@@ -103,23 +103,24 @@
                           (visible_fraction_ - 1));
 }
 
-ImmersiveRevealedLock* ImmersiveModeControllerAsh::GetRevealedLock(
+ImmersiveRevealedLock* ImmersiveModeControllerChromeos::GetRevealedLock(
     AnimateReveal animate_reveal) {
   return new ImmersiveRevealedLockAsh(controller_.GetRevealedLock(
       ToImmersiveFullscreenControllerAnimateReveal(animate_reveal)));
 }
 
-void ImmersiveModeControllerAsh::OnFindBarVisibleBoundsChanged(
+void ImmersiveModeControllerChromeos::OnFindBarVisibleBoundsChanged(
     const gfx::Rect& new_visible_bounds_in_screen) {
   find_bar_visible_bounds_in_screen_ = new_visible_bounds_in_screen;
 }
 
-bool ImmersiveModeControllerAsh::ShouldStayImmersiveAfterExitingFullscreen() {
+bool ImmersiveModeControllerChromeos::
+    ShouldStayImmersiveAfterExitingFullscreen() {
   return !browser_view_->CanSupportTabStrip() &&
          chromeos::TabletState::Get()->InTabletMode();
 }
 
-void ImmersiveModeControllerAsh::OnWidgetActivationChanged(
+void ImmersiveModeControllerChromeos::OnWidgetActivationChanged(
     views::Widget* widget,
     bool active) {
   if (browser_view_->CanSupportTabStrip())
@@ -139,7 +140,7 @@
       browser_view_->frame(), active || !widget->IsMinimized());
 }
 
-void ImmersiveModeControllerAsh::LayoutBrowserRootView() {
+void ImmersiveModeControllerChromeos::LayoutBrowserRootView() {
   views::Widget* widget = browser_view_->frame();
   // Update the window caption buttons.
   widget->non_client_view()->frame_view()->ResetWindowControls();
@@ -148,28 +149,29 @@
   widget->GetRootView()->Layout();
 }
 
-void ImmersiveModeControllerAsh::OnImmersiveRevealStarted() {
+void ImmersiveModeControllerChromeos::OnImmersiveRevealStarted() {
   visible_fraction_ = 0;
   for (Observer& observer : observers_)
     observer.OnImmersiveRevealStarted();
 }
 
-void ImmersiveModeControllerAsh::OnImmersiveRevealEnded() {
+void ImmersiveModeControllerChromeos::OnImmersiveRevealEnded() {
   visible_fraction_ = 0;
   browser_view_->contents_web_view()->holder()->SetHitTestTopInset(0);
   for (Observer& observer : observers_)
     observer.OnImmersiveRevealEnded();
 }
 
-void ImmersiveModeControllerAsh::OnImmersiveFullscreenEntered() {}
+void ImmersiveModeControllerChromeos::OnImmersiveFullscreenEntered() {}
 
-void ImmersiveModeControllerAsh::OnImmersiveFullscreenExited() {
+void ImmersiveModeControllerChromeos::OnImmersiveFullscreenExited() {
   browser_view_->contents_web_view()->holder()->SetHitTestTopInset(0);
   for (Observer& observer : observers_)
     observer.OnImmersiveFullscreenExited();
 }
 
-void ImmersiveModeControllerAsh::SetVisibleFraction(double visible_fraction) {
+void ImmersiveModeControllerChromeos::SetVisibleFraction(
+    double visible_fraction) {
   if (visible_fraction_ == visible_fraction)
     return;
 
@@ -189,8 +191,8 @@
   browser_view_->Layout();
 }
 
-std::vector<gfx::Rect> ImmersiveModeControllerAsh::GetVisibleBoundsInScreen()
-    const {
+std::vector<gfx::Rect>
+ImmersiveModeControllerChromeos::GetVisibleBoundsInScreen() const {
   views::View* top_container_view = browser_view_->top_container();
   gfx::Rect top_container_view_bounds = top_container_view->GetVisibleBounds();
   // TODO(tdanderson): Implement View::ConvertRectToScreen().
@@ -208,7 +210,7 @@
   return bounds_in_screen;
 }
 
-void ImmersiveModeControllerAsh::OnFullscreenStateChanged() {
+void ImmersiveModeControllerChromeos::OnFullscreenStateChanged() {
   if (!controller_.IsEnabled())
     return;
 
@@ -221,9 +223,10 @@
       chromeos::kHideShelfWhenFullscreenKey, in_tab_fullscreen);
 }
 
-void ImmersiveModeControllerAsh::OnWindowPropertyChanged(aura::Window* window,
-                                                         const void* key,
-                                                         intptr_t old) {
+void ImmersiveModeControllerChromeos::OnWindowPropertyChanged(
+    aura::Window* window,
+    const void* key,
+    intptr_t old) {
   // Track locked fullscreen changes.
   if (key == chromeos::kWindowPinTypeKey) {
     browser_view_->FullscreenStateChanging();
@@ -248,7 +251,7 @@
   }
 }
 
-void ImmersiveModeControllerAsh::OnWindowDestroying(aura::Window* window) {
+void ImmersiveModeControllerChromeos::OnWindowDestroying(aura::Window* window) {
   // Clean up observers here rather than in the destructor because the owning
   // BrowserView has already destroyed the aura::Window.
   observed_windows_.Remove(window);
diff --git a/chrome/browser/ui/views/frame/immersive_mode_controller_ash.h b/chrome/browser/ui/views/frame/immersive_mode_controller_chromeos.h
similarity index 93%
rename from chrome/browser/ui/views/frame/immersive_mode_controller_ash.h
rename to chrome/browser/ui/views/frame/immersive_mode_controller_chromeos.h
index 303c25bd..ade2b492 100644
--- a/chrome/browser/ui/views/frame/immersive_mode_controller_ash.h
+++ b/chrome/browser/ui/views/frame/immersive_mode_controller_chromeos.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef CHROME_BROWSER_UI_VIEWS_FRAME_IMMERSIVE_MODE_CONTROLLER_ASH_H_
-#define CHROME_BROWSER_UI_VIEWS_FRAME_IMMERSIVE_MODE_CONTROLLER_ASH_H_
+#ifndef CHROME_BROWSER_UI_VIEWS_FRAME_IMMERSIVE_MODE_CONTROLLER_CHROMEOS_H_
+#define CHROME_BROWSER_UI_VIEWS_FRAME_IMMERSIVE_MODE_CONTROLLER_CHROMEOS_H_
 
 #include <memory>
 
@@ -18,14 +18,14 @@
 #include "ui/aura/window_observer.h"
 #include "ui/gfx/geometry/rect.h"
 
-class ImmersiveModeControllerAsh
+class ImmersiveModeControllerChromeos
     : public ImmersiveModeController,
       public chromeos::ImmersiveFullscreenControllerDelegate,
       public FullscreenObserver,
       public aura::WindowObserver {
  public:
-  ImmersiveModeControllerAsh();
-  ~ImmersiveModeControllerAsh() override;
+  ImmersiveModeControllerChromeos();
+  ~ImmersiveModeControllerChromeos() override;
 
   chromeos::ImmersiveFullscreenController* controller() { return &controller_; }
 
@@ -82,7 +82,7 @@
 
   ScopedObserver<aura::Window, aura::WindowObserver> observed_windows_{this};
 
-  DISALLOW_COPY_AND_ASSIGN(ImmersiveModeControllerAsh);
+  DISALLOW_COPY_AND_ASSIGN(ImmersiveModeControllerChromeos);
 };
 
-#endif  // CHROME_BROWSER_UI_VIEWS_FRAME_IMMERSIVE_MODE_CONTROLLER_ASH_H_
+#endif  // CHROME_BROWSER_UI_VIEWS_FRAME_IMMERSIVE_MODE_CONTROLLER_CHROMEOS_H_
diff --git a/chrome/browser/ui/views/frame/immersive_mode_controller_ash_browsertest.cc b/chrome/browser/ui/views/frame/immersive_mode_controller_chromeos_browsertest.cc
similarity index 94%
rename from chrome/browser/ui/views/frame/immersive_mode_controller_ash_browsertest.cc
rename to chrome/browser/ui/views/frame/immersive_mode_controller_chromeos_browsertest.cc
index 37b21a24..0c7379f 100644
--- a/chrome/browser/ui/views/frame/immersive_mode_controller_ash_browsertest.cc
+++ b/chrome/browser/ui/views/frame/immersive_mode_controller_chromeos_browsertest.cc
@@ -14,7 +14,7 @@
 #include "chrome/browser/ui/views/frame/browser_non_client_frame_view.h"
 #include "chrome/browser/ui/views/frame/browser_non_client_frame_view_ash.h"
 #include "chrome/browser/ui/views/frame/browser_view.h"
-#include "chrome/browser/ui/views/frame/immersive_mode_controller_ash.h"
+#include "chrome/browser/ui/views/frame/immersive_mode_controller_chromeos.h"
 #include "chrome/browser/ui/views/frame/top_container_view.h"
 #include "chrome/browser/ui/views/tabs/tab_strip.h"
 #include "chrome/browser/ui/views/toolbar/toolbar_view.h"
@@ -33,13 +33,13 @@
 #include "ui/views/animation/test/ink_drop_host_view_test_api.h"
 #include "ui/views/window/frame_caption_button.h"
 
-class ImmersiveModeControllerAshWebAppBrowserTest
+class ImmersiveModeControllerChromeosWebAppBrowserTest
     : public web_app::WebAppControllerBrowserTest {
  public:
-  ImmersiveModeControllerAshWebAppBrowserTest()
+  ImmersiveModeControllerChromeosWebAppBrowserTest()
       : https_server_(net::EmbeddedTestServer::TYPE_HTTPS) {}
 
-  ~ImmersiveModeControllerAshWebAppBrowserTest() override = default;
+  ~ImmersiveModeControllerChromeosWebAppBrowserTest() override = default;
 
   // InProcessBrowserTest override:
   void SetUpOnMainThread() override {
@@ -72,7 +72,8 @@
     // Disable animations in immersive fullscreen before we show the window,
     // which triggers an animation.
     chromeos::ImmersiveFullscreenControllerTestApi(
-        static_cast<ImmersiveModeControllerAsh*>(controller_)->controller())
+        static_cast<ImmersiveModeControllerChromeos*>(controller_)
+            ->controller())
         .SetupForTest();
 
     browser_->window()->Show();
@@ -112,7 +113,7 @@
   void AttemptReveal() {
     if (!revealed_lock_.get()) {
       revealed_lock_.reset(controller_->GetRevealedLock(
-          ImmersiveModeControllerAsh::ANIMATE_REVEAL_NO));
+          ImmersiveModeControllerChromeos::ANIMATE_REVEAL_NO));
     }
   }
 
@@ -147,12 +148,13 @@
   // used by the NetworkService.
   content::ContentMockCertVerifier cert_verifier_;
 
-  DISALLOW_COPY_AND_ASSIGN(ImmersiveModeControllerAshWebAppBrowserTest);
+  DISALLOW_COPY_AND_ASSIGN(ImmersiveModeControllerChromeosWebAppBrowserTest);
 };
 
 // Test the layout and visibility of the TopContainerView and web contents when
 // a web app is put into immersive fullscreen.
-IN_PROC_BROWSER_TEST_F(ImmersiveModeControllerAshWebAppBrowserTest, Layout) {
+IN_PROC_BROWSER_TEST_F(ImmersiveModeControllerChromeosWebAppBrowserTest,
+                       Layout) {
   LaunchAppBrowser();
   TabStrip* tabstrip = browser_view()->tabstrip();
   ToolbarView* toolbar = browser_view()->toolbar();
@@ -213,7 +215,7 @@
 // autohidden in tablet mode).
 
 // Crashes on Linux Chromium OS ASan LSan Tests.  http://crbug.com/1091606
-IN_PROC_BROWSER_TEST_F(ImmersiveModeControllerAshWebAppBrowserTest,
+IN_PROC_BROWSER_TEST_F(ImmersiveModeControllerChromeosWebAppBrowserTest,
                        DISABLED_ImmersiveModeStatusTabletMode) {
   LaunchAppBrowser();
   ASSERT_FALSE(controller()->IsEnabled());
@@ -264,7 +266,7 @@
 
 // Verify that the frame layout is as expected when using immersive mode in
 // tablet mode.
-IN_PROC_BROWSER_TEST_F(ImmersiveModeControllerAshWebAppBrowserTest,
+IN_PROC_BROWSER_TEST_F(ImmersiveModeControllerChromeosWebAppBrowserTest,
                        FrameLayoutToggleTabletMode) {
   LaunchAppBrowser();
   ASSERT_FALSE(controller()->IsEnabled());
@@ -303,7 +305,7 @@
 
 // Verify that the frame layout for new windows is as expected when using
 // immersive mode in tablet mode.
-IN_PROC_BROWSER_TEST_F(ImmersiveModeControllerAshWebAppBrowserTest,
+IN_PROC_BROWSER_TEST_F(ImmersiveModeControllerChromeosWebAppBrowserTest,
                        FrameLayoutStartInTabletMode) {
   // Start in tablet mode
   ash::ShellTestApi().SetTabletModeEnabledForTest(true);
@@ -337,7 +339,7 @@
 // but still drawn. In this case, we should have a null anchor view so that the
 // bubble gets placed in the default top left corner. Regression test for
 // https://crbug.com/1087143.
-IN_PROC_BROWSER_TEST_F(ImmersiveModeControllerAshWebAppBrowserTest,
+IN_PROC_BROWSER_TEST_F(ImmersiveModeControllerChromeosWebAppBrowserTest,
                        PermissionsBubbleAnchor) {
   LaunchAppBrowser();
   auto test_api =
diff --git a/chrome/browser/ui/views/frame/immersive_mode_controller_ash_unittest.cc b/chrome/browser/ui/views/frame/immersive_mode_controller_chromeos_unittest.cc
similarity index 91%
rename from chrome/browser/ui/views/frame/immersive_mode_controller_ash_unittest.cc
rename to chrome/browser/ui/views/frame/immersive_mode_controller_chromeos_unittest.cc
index d4fd4db..0c51562f 100644
--- a/chrome/browser/ui/views/frame/immersive_mode_controller_ash_unittest.cc
+++ b/chrome/browser/ui/views/frame/immersive_mode_controller_chromeos_unittest.cc
@@ -2,12 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "chrome/browser/ui/views/frame/immersive_mode_controller_ash.h"
+#include "chrome/browser/ui/views/frame/immersive_mode_controller_chromeos.h"
 
-#include "ash/public/cpp/window_properties.h"
-#include "ash/root_window_controller.h"
-#include "ash/shell.h"
-#include "ash/test/ash_test_base.h"
 #include "base/command_line.h"
 #include "base/macros.h"
 #include "base/test/scoped_feature_list.h"
@@ -33,11 +29,11 @@
 #include "ui/views/controls/native/native_view_host.h"
 #include "ui/views/controls/webview/webview.h"
 
-class ImmersiveModeControllerAshTest : public TestWithBrowserView {
+class ImmersiveModeControllerChromeosTest : public TestWithBrowserView {
  public:
-  ImmersiveModeControllerAshTest()
+  ImmersiveModeControllerChromeosTest()
       : TestWithBrowserView(Browser::TYPE_NORMAL) {}
-  ~ImmersiveModeControllerAshTest() override {}
+  ~ImmersiveModeControllerChromeosTest() override {}
 
   // TestWithBrowserView override:
   void SetUp() override {
@@ -47,7 +43,8 @@
 
     controller_ = browser_view()->immersive_mode_controller();
     chromeos::ImmersiveFullscreenControllerTestApi(
-        static_cast<ImmersiveModeControllerAsh*>(controller_)->controller())
+        static_cast<ImmersiveModeControllerChromeos*>(controller_)
+            ->controller())
         .SetupForTest();
   }
 
@@ -84,14 +81,12 @@
   void AttemptReveal() {
     if (!revealed_lock_.get()) {
       revealed_lock_.reset(controller_->GetRevealedLock(
-          ImmersiveModeControllerAsh::ANIMATE_REVEAL_NO));
+          ImmersiveModeControllerChromeos::ANIMATE_REVEAL_NO));
     }
   }
 
   // Attempt unrevealing the top-of-window views.
-  void AttemptUnreveal() {
-    revealed_lock_.reset();
-  }
+  void AttemptUnreveal() { revealed_lock_.reset(); }
 
   ImmersiveModeController* controller() { return controller_; }
 
@@ -101,12 +96,12 @@
 
   std::unique_ptr<ImmersiveRevealedLock> revealed_lock_;
 
-  DISALLOW_COPY_AND_ASSIGN(ImmersiveModeControllerAshTest);
+  DISALLOW_COPY_AND_ASSIGN(ImmersiveModeControllerChromeosTest);
 };
 
 // Test the layout and visibility of the tabstrip, toolbar and TopContainerView
 // in immersive fullscreen.
-TEST_F(ImmersiveModeControllerAshTest, Layout) {
+TEST_F(ImmersiveModeControllerChromeosTest, Layout) {
   AddTab(browser(), GURL("about:blank"));
 
   TabStrip* tabstrip = browser_view()->tabstrip();
@@ -198,7 +193,7 @@
 
 // Test that the browser commands which are usually disabled in fullscreen are
 // are enabled in immersive fullscreen.
-TEST_F(ImmersiveModeControllerAshTest, EnabledCommands) {
+TEST_F(ImmersiveModeControllerChromeosTest, EnabledCommands) {
   ASSERT_FALSE(controller()->IsEnabled());
   EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_OPEN_CURRENT_URL));
   EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_ABOUT));
@@ -212,7 +207,7 @@
 }
 
 // Test that restoring a window properly exits immersive fullscreen.
-TEST_F(ImmersiveModeControllerAshTest, ExitUponRestore) {
+TEST_F(ImmersiveModeControllerChromeosTest, ExitUponRestore) {
   ASSERT_FALSE(controller()->IsEnabled());
   ToggleFullscreen();
   AttemptReveal();
@@ -227,7 +222,7 @@
 // Ensure the circular tab-loading throbbers are not painted as layers in
 // immersive fullscreen, since the tab strip may animate in or out without
 // moving the layers.
-TEST_F(ImmersiveModeControllerAshTest, LayeredSpinners) {
+TEST_F(ImmersiveModeControllerChromeosTest, LayeredSpinners) {
   AddTab(browser(), GURL("about:blank"));
 
   TabStrip* tabstrip = browser_view()->tabstrip();
@@ -248,7 +243,7 @@
 
 // Ensures the WebUI tab strip can be opened during immersive reveal.
 // Regression test for crbug.com/1096569 where it couldn't be opened.
-TEST_F(ImmersiveModeControllerAshTest, WebUITabStripCanOpen) {
+TEST_F(ImmersiveModeControllerChromeosTest, WebUITabStripCanOpen) {
   base::test::ScopedFeatureList scoped_feature_list;
   scoped_feature_list.InitAndEnableFeature(features::kWebUITabStrip);
 
diff --git a/chrome/browser/ui/views/frame/immersive_mode_controller_factory_views.cc b/chrome/browser/ui/views/frame/immersive_mode_controller_factory_views.cc
index 51fd0969..be234b3 100644
--- a/chrome/browser/ui/views/frame/immersive_mode_controller_factory_views.cc
+++ b/chrome/browser/ui/views/frame/immersive_mode_controller_factory_views.cc
@@ -7,7 +7,7 @@
 #include "build/build_config.h"
 
 #if defined(OS_CHROMEOS)
-#include "chrome/browser/ui/views/frame/immersive_mode_controller_ash.h"
+#include "chrome/browser/ui/views/frame/immersive_mode_controller_chromeos.h"
 #endif
 
 #if defined(OS_MAC)
@@ -18,7 +18,7 @@
 
 std::unique_ptr<ImmersiveModeController> CreateImmersiveModeController() {
 #if defined(OS_CHROMEOS)
-  return std::make_unique<ImmersiveModeControllerAsh>();
+  return std::make_unique<ImmersiveModeControllerChromeos>();
 #elif defined(OS_MAC)
   return CreateImmersiveModeControllerMac();
 #else
diff --git a/chrome/browser/ui/views/keyboard_access_browsertest.cc b/chrome/browser/ui/views/keyboard_access_browsertest.cc
index 5fa0a977..5cdc8e78 100644
--- a/chrome/browser/ui/views/keyboard_access_browsertest.cc
+++ b/chrome/browser/ui/views/keyboard_access_browsertest.cc
@@ -180,7 +180,7 @@
                                                 bool focus_omnibox) {
   // Navigate to a page in the first tab, which makes sure that focus is
   // set to the browser window.
-  ui_test_utils::NavigateToURL(browser(), GURL("about:"));
+  ui_test_utils::NavigateToURL(browser(), GURL("chrome://version/"));
 
   // The initial tab index should be 0.
   ASSERT_EQ(0, browser()->tab_strip_model()->active_index());
@@ -265,7 +265,7 @@
 void KeyboardAccessTest::TestSystemMenuWithKeyboard() {
   // Navigate to a page in the first tab, which makes sure that focus is
   // set to the browser window.
-  ui_test_utils::NavigateToURL(browser(), GURL("about:"));
+  ui_test_utils::NavigateToURL(browser(), GURL("chrome://version/"));
 
   ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser()));
 
@@ -314,10 +314,11 @@
 void KeyboardAccessTest::TestSystemMenuReopenClosedTabWithKeyboard() {
   // Navigate to a page in the first tab, which makes sure that focus is
   // set to the browser window.
-  ui_test_utils::NavigateToURL(browser(), GURL("about:"));
+  ui_test_utils::NavigateToURL(browser(), GURL("chrome://version/"));
 
   ui_test_utils::NavigateToURLWithDisposition(
-      browser(), GURL("about:"), WindowOpenDisposition::NEW_FOREGROUND_TAB,
+      browser(), GURL("chrome://version/"),
+      WindowOpenDisposition::NEW_FOREGROUND_TAB,
       ui_test_utils::BROWSER_TEST_WAIT_FOR_LOAD_STOP);
 
   ASSERT_EQ(1, browser()->tab_strip_model()->active_index());
@@ -356,7 +357,7 @@
 #endif
 
 void KeyboardAccessTest::TestMenuKeyboardAccessAndDismiss() {
-  ui_test_utils::NavigateToURL(browser(), GURL("about:"));
+  ui_test_utils::NavigateToURL(browser(), GURL("chrome://version/"));
 
   ASSERT_EQ(0, browser()->tab_strip_model()->active_index());
 
diff --git a/chrome/browser/ui/views/location_bar/zoom_bubble_view_browsertest.cc b/chrome/browser/ui/views/location_bar/zoom_bubble_view_browsertest.cc
index 3b5dc3b..01d8568 100644
--- a/chrome/browser/ui/views/location_bar/zoom_bubble_view_browsertest.cc
+++ b/chrome/browser/ui/views/location_bar/zoom_bubble_view_browsertest.cc
@@ -23,7 +23,7 @@
 #include "ui/views/test/widget_test.h"
 
 #if defined(OS_CHROMEOS)
-#include "chrome/browser/ui/views/frame/immersive_mode_controller_ash.h"
+#include "chrome/browser/ui/views/frame/immersive_mode_controller_chromeos.h"
 #include "chromeos/ui/frame/immersive/immersive_fullscreen_controller_test_api.h"
 #endif
 
@@ -177,7 +177,7 @@
   ImmersiveModeController* immersive_controller =
       browser_view->immersive_mode_controller();
   chromeos::ImmersiveFullscreenControllerTestApi(
-      static_cast<ImmersiveModeControllerAsh*>(immersive_controller)
+      static_cast<ImmersiveModeControllerChromeos*>(immersive_controller)
           ->controller())
       .SetupForTest();
 
diff --git a/chrome/browser/ui/views/omnibox/omnibox_view_views.h b/chrome/browser/ui/views/omnibox/omnibox_view_views.h
index 14483ef..d930004 100644
--- a/chrome/browser/ui/views/omnibox/omnibox_view_views.h
+++ b/chrome/browser/ui/views/omnibox/omnibox_view_views.h
@@ -280,6 +280,9 @@
   virtual void ApplyColor(SkColor color, const gfx::Range& range);
 
  private:
+  FRIEND_TEST_ALL_PREFIXES(
+      OmniboxViewViewsTest,
+      RendererInitiatedFocusPreservesCursorWhenStartingFocused);
   FRIEND_TEST_ALL_PREFIXES(OmniboxViewViewsRevealOnHoverTest, HoverAndExit);
   FRIEND_TEST_ALL_PREFIXES(OmniboxViewViewsRevealOnHoverTest, HoverAndExitIDN);
   FRIEND_TEST_ALL_PREFIXES(OmniboxViewViewsRevealOnHoverTest, PrivateRegistry);
diff --git a/chrome/browser/ui/views/omnibox/omnibox_view_views_unittest.cc b/chrome/browser/ui/views/omnibox/omnibox_view_views_unittest.cc
index 0654acd0..18f5681b 100644
--- a/chrome/browser/ui/views/omnibox/omnibox_view_views_unittest.cc
+++ b/chrome/browser/ui/views/omnibox/omnibox_view_views_unittest.cc
@@ -790,6 +790,24 @@
   EXPECT_TRUE(omnibox_view()->IsSelectAll());
 }
 
+// Verifies that https://crbug.com/924935 doesn't regress.
+TEST_F(OmniboxViewViewsTest,
+       RendererInitiatedFocusPreservesCursorWhenStartingFocused) {
+  // Simulate the user focusing the omnibox and typing something. This is just
+  // the test setup, not the actual focus event we are testing.
+  omnibox_view()->SetFocus(/*is_user_initiated*/ true);
+  omnibox_view()->SetTextAndSelectedRanges(base::ASCIIToUTF16("user text"),
+                                           {gfx::Range(9, 9)});
+  ASSERT_FALSE(omnibox_view()->IsSelectAll());
+  ASSERT_TRUE(omnibox_view()->SelectionAtEnd());
+
+  // Simulate a renderer-initated focus event. Expect the cursor position to be
+  // preserved, and that the omnibox did not select-all the text.
+  omnibox_view()->SetFocus(/*is_user_initiated=*/false);
+  EXPECT_FALSE(omnibox_view()->IsSelectAll());
+  EXPECT_TRUE(omnibox_view()->SelectionAtEnd());
+}
+
 TEST_F(OmniboxViewViewsTest, Emphasis) {
   constexpr struct {
     const char* input;
diff --git a/chrome/browser/ui/views/page_info/page_info_bubble_view_browsertest.cc b/chrome/browser/ui/views/page_info/page_info_bubble_view_browsertest.cc
index 368b819..0ada3704 100644
--- a/chrome/browser/ui/views/page_info/page_info_bubble_view_browsertest.cc
+++ b/chrome/browser/ui/views/page_info/page_info_bubble_view_browsertest.cc
@@ -178,8 +178,7 @@
     } else if (name == kInternalViewSource) {
       constexpr char kTestHtml[] = "/viewsource/test.html";
       ASSERT_TRUE(embedded_test_server()->Start());
-      url = GURL(content::kViewSourceScheme +
-                 std::string(url::kStandardSchemeSeparator) +
+      url = GURL(content::kViewSourceScheme + std::string(":") +
                  embedded_test_server()->GetURL(kTestHtml).spec());
     } else if (name == kFile) {
       url = file_url;
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 e895d15..89f8979 100644
--- a/chrome/browser/ui/views/sharing/click_to_call_browsertest.cc
+++ b/chrome/browser/ui/views/sharing/click_to_call_browsertest.cc
@@ -40,6 +40,7 @@
 #include "testing/gmock/include/gmock/gmock.h"
 #include "ui/events/base_event_utils.h"
 #include "ui/views/layout/grid_layout.h"
+#include "ui/views/test/button_test_api.h"
 #include "url/gurl.h"
 
 namespace {
@@ -402,15 +403,13 @@
       static_cast<SharingDialogView*>(controller->dialog());
   EXPECT_EQ(SharingDialogType::kDialogWithDevicesMaybeApps,
             dialog->GetDialogType());
-  EXPECT_EQ(1u, dialog->data_.devices.size());
-  EXPECT_EQ(dialog->data_.devices.size() + dialog->data_.apps.size(),
-            dialog->dialog_buttons_.size());
-
-  const ui::MouseEvent event(ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(),
-                             ui::EventTimeForNow(), 0, 0);
 
   // Choose first device.
-  dialog->ButtonPressed(dialog->dialog_buttons_[0], event);
+  const auto& buttons = dialog->button_list_for_testing()->children();
+  ASSERT_GT(buttons.size(), 0u);
+  views::test::ButtonTestApi(static_cast<views::Button*>(buttons[0]))
+      .NotifyClick(ui::MouseEvent(ui::ET_MOUSE_PRESSED, gfx::Point(),
+                                  gfx::Point(), ui::EventTimeForNow(), 0, 0));
 
   CheckLastReceiver(*devices[0]);
   // Defined in tel.html
diff --git a/chrome/browser/ui/views/sharing/sharing_dialog_view.cc b/chrome/browser/ui/views/sharing/sharing_dialog_view.cc
index fd8ab69..5b7e201 100644
--- a/chrome/browser/ui/views/sharing/sharing_dialog_view.cc
+++ b/chrome/browser/ui/views/sharing/sharing_dialog_view.cc
@@ -173,28 +173,19 @@
   return data_.type;
 }
 
-void SharingDialogView::ButtonPressed(views::Button* sender,
-                                      const ui::Event& event) {
-  DCHECK(data_.device_callback);
-  DCHECK(data_.app_callback);
-  if (!sender || sender->tag() < 0)
-    return;
-  size_t index{sender->tag()};
+void SharingDialogView::DeviceButtonPressed(size_t index) {
+  DCHECK_LT(index, data_.devices.size());
+  LogSharingSelectedIndex(data_.prefix, kSharingUiDialog, index);
+  std::move(data_.device_callback).Run(*data_.devices[index]);
+  CloseBubble();
+}
 
-  if (index < data_.devices.size()) {
-    LogSharingSelectedDeviceIndex(data_.prefix, kSharingUiDialog, index);
-    std::move(data_.device_callback).Run(*data_.devices[index]);
-    CloseBubble();
-    return;
-  }
-
-  index -= data_.devices.size();
-
-  if (index < data_.apps.size()) {
-    LogSharingSelectedAppIndex(data_.prefix, kSharingUiDialog, index);
-    std::move(data_.app_callback).Run(data_.apps[index]);
-    CloseBubble();
-  }
+void SharingDialogView::AppButtonPressed(size_t index) {
+  DCHECK_LT(index, data_.apps.size());
+  LogSharingSelectedIndex(data_.prefix, kSharingUiDialog, index,
+                          SharingIndexType::kApp);
+  std::move(data_.app_callback).Run(data_.apps[index]);
+  CloseBubble();
 }
 
 // static
@@ -251,7 +242,6 @@
 
 void SharingDialogView::InitListView() {
   constexpr int kPrimaryIconSize = 20;
-  int tag = 0;
   const gfx::Insets device_border =
       gfx::Insets(kSharingDialogSpacing, kSharingDialogSpacing * 2,
                   kSharingDialogSpacing, 0);
@@ -264,6 +254,7 @@
 
   // Devices:
   LogSharingDevicesToShow(data_.prefix, kSharingUiDialog, data_.devices.size());
+  size_t index = 0;
   for (const auto& device : data_.devices) {
     auto icon = std::make_unique<views::ColorTrackingIconView>(
         device->device_type() == sync_pb::SyncEnums::TYPE_TABLET
@@ -271,18 +262,19 @@
             : kHardwareSmartphoneIcon,
         kPrimaryIconSize);
 
-    auto dialog_button = std::make_unique<HoverButton>(
-        this, std::move(icon), base::UTF8ToUTF16(device->client_name()),
-        GetLastUpdatedTimeInDays(device->last_updated_timestamp()));
+    auto* dialog_button =
+        button_list->AddChildView(std::make_unique<HoverButton>(
+            base::BindRepeating(&SharingDialogView::DeviceButtonPressed,
+                                base::Unretained(this), index++),
+            std::move(icon), base::UTF8ToUTF16(device->client_name()),
+            GetLastUpdatedTimeInDays(device->last_updated_timestamp())));
     dialog_button->SetEnabled(true);
-    dialog_button->set_tag(tag++);
     dialog_button->SetBorder(views::CreateEmptyBorder(device_border));
-    dialog_buttons_.push_back(
-        button_list->AddChildView(std::move(dialog_button)));
   }
 
   // Apps:
   LogSharingAppsToShow(data_.prefix, kSharingUiDialog, data_.apps.size());
+  index = 0;
   for (const auto& app : data_.apps) {
     std::unique_ptr<views::ImageView> icon;
     if (app.vector_icon) {
@@ -293,32 +285,34 @@
       icon->SetImage(app.image.AsImageSkia());
     }
 
-    auto dialog_button =
-        std::make_unique<HoverButton>(this, std::move(icon), app.name,
-                                      /* subtitle= */ base::string16());
+    auto* dialog_button =
+        button_list->AddChildView(std::make_unique<HoverButton>(
+            base::BindRepeating(&SharingDialogView::AppButtonPressed,
+                                base::Unretained(this), index++),
+            std::move(icon), app.name,
+            /* subtitle= */ base::string16()));
     dialog_button->SetEnabled(true);
-    dialog_button->set_tag(tag++);
     dialog_button->SetBorder(views::CreateEmptyBorder(app_border));
-    dialog_buttons_.push_back(
-        button_list->AddChildView(std::move(dialog_button)));
   }
 
   // Allow up to 5 buttons in the list and let the rest scroll.
   constexpr size_t kMaxDialogButtons = 5;
-  if (dialog_buttons_.size() > kMaxDialogButtons) {
+  if (button_list->children().size() > kMaxDialogButtons) {
     const int bubble_width = ChromeLayoutProvider::Get()->GetDistanceMetric(
         views::DISTANCE_BUBBLE_PREFERRED_WIDTH);
 
     int max_list_height = 0;
-    for (size_t i = 0; i < kMaxDialogButtons; ++i)
-      max_list_height += dialog_buttons_[i]->GetHeightForWidth(bubble_width);
+    for (size_t i = 0; i < kMaxDialogButtons; ++i) {
+      max_list_height +=
+          button_list->children()[i]->GetHeightForWidth(bubble_width);
+    }
     DCHECK_GT(max_list_height, 0);
 
     auto* scroll_view = AddChildView(std::make_unique<views::ScrollView>());
     scroll_view->ClipHeightTo(0, max_list_height);
-    scroll_view->SetContents(std::move(button_list));
+    button_list_ = scroll_view->SetContents(std::move(button_list));
   } else {
-    AddChildView(std::move(button_list));
+    button_list_ = AddChildView(std::move(button_list));
   }
 }
 
diff --git a/chrome/browser/ui/views/sharing/sharing_dialog_view.h b/chrome/browser/ui/views/sharing/sharing_dialog_view.h
index 8f110b0..0ebe2468 100644
--- a/chrome/browser/ui/views/sharing/sharing_dialog_view.h
+++ b/chrome/browser/ui/views/sharing/sharing_dialog_view.h
@@ -11,18 +11,15 @@
 #include "chrome/browser/sharing/sharing_dialog.h"
 #include "chrome/browser/sharing/sharing_dialog_data.h"
 #include "chrome/browser/ui/views/location_bar/location_bar_bubble_delegate_view.h"
-#include "ui/views/controls/button/button.h"
 
 namespace views {
 class StyledLabel;
 class View;
 }  // namespace views
 
-class HoverButton;
 enum class SharingDialogType;
 
 class SharingDialogView : public SharingDialog,
-                          public views::ButtonListener,
                           public LocationBarBubbleDelegateView {
  public:
   // Bubble will be anchored to |anchor_view|.
@@ -42,26 +39,16 @@
   void WebContentsDestroyed() override;
   void AddedToWidget() override;
 
-  // views::ButtonListener:
-  void ButtonPressed(views::Button* sender, const ui::Event& event) override;
-
   static views::BubbleDialogDelegateView* GetAsBubble(SharingDialog* dialog);
-
   static views::BubbleDialogDelegateView* GetAsBubbleForClickToCall(
       SharingDialog* dialog);
 
+  SharingDialogType GetDialogType() const;
+
+  const View* button_list_for_testing() const { return button_list_; }
+
  private:
   friend class SharingDialogViewTest;
-  FRIEND_TEST_ALL_PREFIXES(SharingDialogViewTest, PopulateDialogView);
-  FRIEND_TEST_ALL_PREFIXES(SharingDialogViewTest, DevicePressed);
-  FRIEND_TEST_ALL_PREFIXES(SharingDialogViewTest, AppPressed);
-  FRIEND_TEST_ALL_PREFIXES(SharingDialogViewTest, HelpTextClickedEmpty);
-  FRIEND_TEST_ALL_PREFIXES(SharingDialogViewTest, HelpTextClickedOnlyApps);
-  FRIEND_TEST_ALL_PREFIXES(SharingDialogViewTest, ThemeChangedEmptyList);
-
-  FRIEND_TEST_ALL_PREFIXES(ClickToCallBrowserTest, LeftClick_ChooseDevice);
-
-  SharingDialogType GetDialogType() const;
 
   // LocationBarBubbleDelegateView:
   void Init() override;
@@ -73,10 +60,13 @@
 
   std::unique_ptr<views::StyledLabel> CreateHelpText();
 
+  void DeviceButtonPressed(size_t index);
+  void AppButtonPressed(size_t index);
+
   SharingDialogData data_;
 
   // References to device and app buttons views.
-  std::vector<HoverButton*> dialog_buttons_;
+  View* button_list_ = nullptr;
 
   DISALLOW_COPY_AND_ASSIGN(SharingDialogView);
 };
diff --git a/chrome/browser/ui/views/sharing/sharing_dialog_view_unittest.cc b/chrome/browser/ui/views/sharing/sharing_dialog_view_unittest.cc
index ab71e56..b1d07ba 100644
--- a/chrome/browser/ui/views/sharing/sharing_dialog_view_unittest.cc
+++ b/chrome/browser/ui/views/sharing/sharing_dialog_view_unittest.cc
@@ -7,12 +7,13 @@
 #include <memory>
 #include <string>
 
-#include "base/strings/strcat.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/bind_test_util.h"
 #include "chrome/browser/sharing/fake_device_info.h"
 #include "chrome/browser/sharing/sharing_app.h"
 #include "chrome/browser/sharing/sharing_metrics.h"
+#include "chrome/browser/ui/views/frame/browser_view.h"
+#include "chrome/browser/ui/views/frame/test_with_browser_view.h"
 #include "chrome/browser/ui/views/hover_button.h"
 #include "chrome/grit/chromium_strings.h"
 #include "chrome/test/base/browser_with_test_window_test.h"
@@ -28,74 +29,59 @@
 #include "ui/views/bubble/bubble_dialog_delegate_view.h"
 #include "ui/views/bubble/bubble_frame_view.h"
 #include "ui/views/controls/styled_label.h"
+#include "ui/views/test/button_test_api.h"
 #include "url/gurl.h"
 #include "url/origin.h"
 
 using ::testing::Property;
 
-namespace {
-
-class SharingDialogViewFake : public SharingDialogView {
- public:
-  SharingDialogViewFake(views::View* anchor_view,
-                        content::WebContents* web_contents,
-                        SharingDialogData data)
-      : SharingDialogView(anchor_view, web_contents, std::move(data)) {}
-  ~SharingDialogViewFake() override = default;
-
-  // The delegate cannot find widget since it is created from a null profile.
-  // This method will be called inside ButtonPressed(). Unit tests will
-  // crash without mocking.
-  void CloseBubble() override {}
-};
-
-}  // namespace
-
 MATCHER_P(AppEquals, app, "") {
   return app->name == arg.name;
 }
 
-class SharingDialogViewTest : public BrowserWithTestWindowTest {
+class SharingDialogViewTest : public TestWithBrowserView {
  protected:
   void SetUp() override {
-    BrowserWithTestWindowTest::SetUp();
+    TestWithBrowserView::SetUp();
 
-    // We create |web_contents| to have a valid commited page origin to check
+    // We create |web_contents_| to have a valid committed page origin to check
     // against when showing the origin view.
-    GURL url("https://google.com");
     web_contents_ = browser()->OpenURL(content::OpenURLParams(
-        url, content::Referrer(), WindowOpenDisposition::CURRENT_TAB,
-        ui::PAGE_TRANSITION_TYPED, false));
+        GURL("https://google.com"), content::Referrer(),
+        WindowOpenDisposition::CURRENT_TAB, ui::PAGE_TRANSITION_TYPED, false));
     CommitPendingLoad(&web_contents_->GetController());
   }
 
+  void TearDown() override {
+    if (dialog_)
+      dialog_->GetWidget()->CloseNow();
+    TestWithBrowserView::TearDown();
+  }
+
   std::vector<std::unique_ptr<syncer::DeviceInfo>> CreateDevices(int count) {
     std::vector<std::unique_ptr<syncer::DeviceInfo>> devices;
-    for (int i = 0; i < count; i++) {
-      devices.emplace_back(CreateFakeDeviceInfo(
-          base::StrCat({"guid_", base::NumberToString(i)}),
-          base::StrCat({"name_", base::NumberToString(i)})));
+    for (int i = 0; i < count; ++i) {
+      devices.push_back(
+          CreateFakeDeviceInfo("guid_" + base::NumberToString(i),
+                               "name_" + base::NumberToString(i)));
     }
     return devices;
   }
 
   std::vector<SharingApp> CreateApps(int count) {
     std::vector<SharingApp> apps;
-    for (int i = 0; i < count; i++) {
-      apps.emplace_back(
-          &vector_icons::kOpenInNewIcon, gfx::Image(),
-          base::UTF8ToUTF16(base::StrCat({"app", base::NumberToString(i)})),
-          base::StrCat({"app_id_", base::NumberToString(i)}));
+    for (int i = 0; i < count; ++i) {
+      apps.emplace_back(&vector_icons::kOpenInNewIcon, gfx::Image(),
+                        base::UTF8ToUTF16("app" + base::NumberToString(i)),
+                        "app_id_" + base::NumberToString(i));
     }
     return apps;
   }
 
-  std::unique_ptr<SharingDialogView> CreateDialogView(
-      SharingDialogData dialog_data) {
-    auto dialog = std::make_unique<SharingDialogViewFake>(
-        /*anchor_view=*/nullptr, web_contents_, std::move(dialog_data));
-    dialog->Init();
-    return dialog;
+  void CreateDialogView(SharingDialogData dialog_data) {
+    dialog_ = new SharingDialogView(browser_view(), web_contents_,
+                                    std::move(dialog_data));
+    views::BubbleDialogDelegateView::CreateBubble(dialog_);
   }
 
   SharingDialogData CreateDialogData(int devices, int apps) {
@@ -129,16 +115,21 @@
     return data;
   }
 
+  SharingDialogView* dialog() { return dialog_; }
+
   testing::MockFunction<void(const syncer::DeviceInfo&)> device_callback_;
   testing::MockFunction<void(const SharingApp&)> app_callback_;
+
+ private:
   content::WebContents* web_contents_ = nullptr;
+  SharingDialogView* dialog_ = nullptr;
 };
 
 TEST_F(SharingDialogViewTest, PopulateDialogView) {
   auto dialog_data = CreateDialogData(/*devices=*/3, /*apps=*/2);
-  auto dialog = CreateDialogView(std::move(dialog_data));
+  CreateDialogView(std::move(dialog_data));
 
-  EXPECT_EQ(5UL, dialog->dialog_buttons_.size());
+  EXPECT_EQ(5U, dialog()->button_list_for_testing()->children().size());
 }
 
 TEST_F(SharingDialogViewTest, DevicePressed) {
@@ -146,13 +137,14 @@
               Call(Property(&syncer::DeviceInfo::guid, "guid_1")));
 
   auto dialog_data = CreateDialogData(/*devices=*/3, /*apps=*/2);
-  auto dialog = CreateDialogView(std::move(dialog_data));
-
-  const ui::MouseEvent event(ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(),
-                             ui::EventTimeForNow(), 0, 0);
+  CreateDialogView(std::move(dialog_data));
 
   // Choose second device: device0(tag=0), device1(tag=1)
-  dialog->ButtonPressed(dialog->dialog_buttons_[1], event);
+  const auto& buttons = dialog()->button_list_for_testing()->children();
+  ASSERT_EQ(5U, buttons.size());
+  views::test::ButtonTestApi(static_cast<views::Button*>(buttons[1]))
+      .NotifyClick(ui::MouseEvent(ui::ET_MOUSE_PRESSED, gfx::Point(),
+                                  gfx::Point(), ui::EventTimeForNow(), 0, 0));
 }
 
 TEST_F(SharingDialogViewTest, AppPressed) {
@@ -161,83 +153,95 @@
   EXPECT_CALL(app_callback_, Call(AppEquals(&app)));
 
   auto dialog_data = CreateDialogData(/*devices=*/3, /*apps=*/2);
-  auto dialog = CreateDialogView(std::move(dialog_data));
-
-  const ui::MouseEvent event(ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(),
-                             ui::EventTimeForNow(), 0, 0);
+  CreateDialogView(std::move(dialog_data));
 
   // Choose first app: device0(tag=0), device1(tag=1), device2(tag=2),
   // app0(tag=3)
-  dialog->ButtonPressed(dialog->dialog_buttons_[3], event);
+  const auto& buttons = dialog()->button_list_for_testing()->children();
+  ASSERT_EQ(5U, buttons.size());
+  views::test::ButtonTestApi(static_cast<views::Button*>(buttons[3]))
+      .NotifyClick(ui::MouseEvent(ui::ET_MOUSE_PRESSED, gfx::Point(),
+                                  gfx::Point(), ui::EventTimeForNow(), 0, 0));
 }
 
 TEST_F(SharingDialogViewTest, ThemeChangedEmptyList) {
   auto dialog_data = CreateDialogData(/*devices=*/1, /*apps=*/1);
   dialog_data.type = SharingDialogType::kErrorDialog;
-  auto dialog = CreateDialogView(std::move(dialog_data));
+  CreateDialogView(std::move(dialog_data));
 
-  EXPECT_EQ(SharingDialogType::kErrorDialog, dialog->GetDialogType());
+  EXPECT_EQ(SharingDialogType::kErrorDialog, dialog()->GetDialogType());
 
   // Regression test for crbug.com/1001112
-  dialog->OnThemeChanged();
+  dialog()->GetWidget()->ThemeChanged();
 }
 
-TEST_F(SharingDialogViewTest, OriginView) {
+TEST_F(SharingDialogViewTest, FootnoteNoOrigin) {
   auto dialog_data = CreateDialogData(/*devices=*/1, /*apps=*/1);
-  auto dialog = CreateDialogView(std::move(dialog_data));
+  CreateDialogView(std::move(dialog_data));
   // No footnote by default if there is no initiating origin set.
-  EXPECT_EQ(nullptr, dialog->GetFootnoteViewForTesting());
+  EXPECT_EQ(nullptr, dialog()->GetFootnoteViewForTesting());
+}
 
-  dialog_data = CreateDialogData(/*devices=*/1, /*apps=*/1);
-  dialog_data.initiating_origin =
-      url::Origin::Create(GURL("https://example.com"));
-  dialog = CreateDialogView(std::move(dialog_data));
-  // Origin should be shown in the footnote if the initiating origin does not
-  // match the main frame origin.
-  EXPECT_NE(nullptr, dialog->GetFootnoteViewForTesting());
-
-  dialog_data = CreateDialogData(/*devices=*/1, /*apps=*/1);
+TEST_F(SharingDialogViewTest, FootnoteCurrentOrigin) {
+  auto dialog_data = CreateDialogData(/*devices=*/1, /*apps=*/1);
   dialog_data.initiating_origin =
       url::Origin::Create(GURL("https://google.com"));
-  dialog = CreateDialogView(std::move(dialog_data));
-  // Origin should not be shown in the footnote if the initiating origin does
-  // match the main frame origin.
-  EXPECT_EQ(nullptr, dialog->GetFootnoteViewForTesting());
+  CreateDialogView(std::move(dialog_data));
+  // No footnote if the initiating origin matches the main frame origin.
+  EXPECT_EQ(nullptr, dialog()->GetFootnoteViewForTesting());
 }
 
-TEST_F(SharingDialogViewTest, HelpTextContent) {
-  url::Origin current_origin = url::Origin::Create(GURL("https://google.com"));
+TEST_F(SharingDialogViewTest, FootnoteOtherOrigin) {
+  auto dialog_data = CreateDialogData(/*devices=*/1, /*apps=*/1);
+  dialog_data.initiating_origin =
+      url::Origin::Create(GURL("https://example.com"));
+  CreateDialogView(std::move(dialog_data));
+  // Origin should be shown in the footnote if the initiating origin does not
+  // match the main frame origin.
+  EXPECT_NE(nullptr, dialog()->GetFootnoteViewForTesting());
+}
+
+TEST_F(SharingDialogViewTest, HelpTextNoOrigin) {
+  base::string16 expected_default = l10n_util::GetStringUTF16(
+      IDS_BROWSER_SHARING_CLICK_TO_CALL_DIALOG_HELP_TEXT_NO_DEVICES);
+
+  // Expect default help text if no initiating origin is set.
+  auto dialog_data = CreateDialogData(/*devices=*/0, /*apps=*/1);
+  CreateDialogView(std::move(dialog_data));
+  EXPECT_EQ(expected_default, static_cast<views::StyledLabel*>(
+                                  dialog()->GetFootnoteViewForTesting())
+                                  ->GetText());
+}
+
+TEST_F(SharingDialogViewTest, HelpTextCurrentOrigin) {
+  base::string16 expected_default = l10n_util::GetStringUTF16(
+      IDS_BROWSER_SHARING_CLICK_TO_CALL_DIALOG_HELP_TEXT_NO_DEVICES);
+
+  // Expect default help text if the initiating origin matches the main frame
+  // origin.
+  auto dialog_data = CreateDialogData(/*devices=*/0, /*apps=*/1);
+  dialog_data.initiating_origin =
+      url::Origin::Create(GURL("https://google.com"));
+  CreateDialogView(std::move(dialog_data));
+  EXPECT_EQ(expected_default, static_cast<views::StyledLabel*>(
+                                  dialog()->GetFootnoteViewForTesting())
+                                  ->GetText());
+}
+
+TEST_F(SharingDialogViewTest, HelpTextOtherOrigin) {
   url::Origin other_origin = url::Origin::Create(GURL("https://example.com"));
   base::string16 origin_text = url_formatter::FormatOriginForSecurityDisplay(
       other_origin, url_formatter::SchemeDisplay::OMIT_HTTP_AND_HTTPS);
-  base::string16 expected_default = l10n_util::GetStringUTF16(
-      IDS_BROWSER_SHARING_CLICK_TO_CALL_DIALOG_HELP_TEXT_NO_DEVICES);
   base::string16 expected_origin = l10n_util::GetStringFUTF16(
       IDS_BROWSER_SHARING_CLICK_TO_CALL_DIALOG_HELP_TEXT_NO_DEVICES_ORIGIN,
       origin_text);
 
-  // Expect default help text if no initiating origin is set.
-  auto dialog_data = CreateDialogData(/*devices=*/0, /*apps=*/1);
-  auto dialog = CreateDialogView(std::move(dialog_data));
-  views::View* footnote_view = dialog->GetFootnoteViewForTesting();
-  EXPECT_EQ(expected_default,
-            static_cast<views::StyledLabel*>(footnote_view)->GetText());
-
-  // Still expect the default help text if the initiating origin matches the
-  // main frame origin.
-  dialog_data = CreateDialogData(/*devices=*/0, /*apps=*/1);
-  dialog_data.initiating_origin = current_origin;
-  dialog = CreateDialogView(std::move(dialog_data));
-  footnote_view = dialog->GetFootnoteViewForTesting();
-  EXPECT_EQ(expected_default,
-            static_cast<views::StyledLabel*>(footnote_view)->GetText());
-
   // Expect the origin to be included in the help text if it does not match the
   // main frame origin.
-  dialog_data = CreateDialogData(/*devices=*/0, /*apps=*/1);
+  auto dialog_data = CreateDialogData(/*devices=*/0, /*apps=*/1);
   dialog_data.initiating_origin = other_origin;
-  dialog = CreateDialogView(std::move(dialog_data));
-  footnote_view = dialog->GetFootnoteViewForTesting();
-  EXPECT_EQ(expected_origin,
-            static_cast<views::StyledLabel*>(footnote_view)->GetText());
+  CreateDialogView(std::move(dialog_data));
+  EXPECT_EQ(expected_origin, static_cast<views::StyledLabel*>(
+                                 dialog()->GetFootnoteViewForTesting())
+                                 ->GetText());
 }
diff --git a/chrome/browser/ui/views/tabs/tab_drag_controller_interactive_uitest.cc b/chrome/browser/ui/views/tabs/tab_drag_controller_interactive_uitest.cc
index 88a6c75..958540f 100644
--- a/chrome/browser/ui/views/tabs/tab_drag_controller_interactive_uitest.cc
+++ b/chrome/browser/ui/views/tabs/tab_drag_controller_interactive_uitest.cc
@@ -90,7 +90,7 @@
 #include "base/test/simple_test_tick_clock.h"
 #include "chrome/browser/ui/views/frame/browser_view_layout.h"
 #include "chrome/browser/ui/views/frame/immersive_mode_controller.h"
-#include "chrome/browser/ui/views/frame/immersive_mode_controller_ash.h"
+#include "chrome/browser/ui/views/frame/immersive_mode_controller_chromeos.h"
 #include "chrome/browser/ui/web_applications/test/web_app_browsertest_util.h"
 #include "chrome/browser/web_applications/test/test_system_web_app_installation.h"
 #include "chromeos/ui/frame/immersive/immersive_fullscreen_controller_test_api.h"
@@ -3852,7 +3852,7 @@
   ImmersiveModeController* immersive_controller2 =
       browser_view2->immersive_mode_controller();
   chromeos::ImmersiveFullscreenControllerTestApi(
-      static_cast<ImmersiveModeControllerAsh*>(immersive_controller2)
+      static_cast<ImmersiveModeControllerChromeos*>(immersive_controller2)
           ->controller())
       .SetupForTest();
   chrome::ToggleFullscreenMode(browser2);
diff --git a/chrome/browser/ui/views/web_apps/web_app_ash_interactive_ui_test.cc b/chrome/browser/ui/views/web_apps/web_app_ash_interactive_ui_test.cc
index 1811ce7e..a2cfab0 100644
--- a/chrome/browser/ui/views/web_apps/web_app_ash_interactive_ui_test.cc
+++ b/chrome/browser/ui/views/web_apps/web_app_ash_interactive_ui_test.cc
@@ -6,7 +6,7 @@
 #include "chrome/browser/ui/exclusive_access/exclusive_access_manager.h"
 #include "chrome/browser/ui/exclusive_access/exclusive_access_test.h"
 #include "chrome/browser/ui/views/frame/browser_view.h"
-#include "chrome/browser/ui/views/frame/immersive_mode_controller_ash.h"
+#include "chrome/browser/ui/views/frame/immersive_mode_controller_chromeos.h"
 #include "chrome/browser/ui/views/frame/top_container_view.h"
 #include "chrome/browser/ui/views/web_apps/web_app_frame_toolbar_view.h"
 #include "chrome/browser/ui/views/web_apps/web_app_menu_button.h"
@@ -32,7 +32,8 @@
 
     controller_ = browser_view_->immersive_mode_controller();
     chromeos::ImmersiveFullscreenControllerTestApi(
-        static_cast<ImmersiveModeControllerAsh*>(controller_)->controller())
+        static_cast<ImmersiveModeControllerChromeos*>(controller_)
+            ->controller())
         .SetupForTest();
     WebAppFrameToolbarView::DisableAnimationForTesting();
   }
@@ -79,7 +80,7 @@
 
   std::unique_ptr<ImmersiveRevealedLock> revealed_lock(
       controller_->GetRevealedLock(
-          ImmersiveModeControllerAsh::ANIMATE_REVEAL_NO));
+          ImmersiveModeControllerChromeos::ANIMATE_REVEAL_NO));
 
   CheckWebAppMenuClickable();
 }
diff --git a/chrome/browser/ui/views/web_apps/web_app_frame_toolbar_view.h b/chrome/browser/ui/views/web_apps/web_app_frame_toolbar_view.h
index fc35de7..69ce7c6 100644
--- a/chrome/browser/ui/views/web_apps/web_app_frame_toolbar_view.h
+++ b/chrome/browser/ui/views/web_apps/web_app_frame_toolbar_view.h
@@ -98,7 +98,7 @@
 
  private:
   friend class WebAppNonClientFrameViewAshTest;
-  friend class ImmersiveModeControllerAshWebAppBrowserTest;
+  friend class ImmersiveModeControllerChromeosWebAppBrowserTest;
   friend class WebAppAshInteractiveUITest;
 
   // Duration to wait before starting the opening animation.
diff --git a/chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.cc
index 33f5655d..a297c46 100644
--- a/chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.cc
+++ b/chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.cc
@@ -735,6 +735,7 @@
   VLOG(1) << "HandleToggleFakeEnrollment";
   policy::PolicyOAuth2TokenFetcher::UseFakeTokensForTesting();
   WizardController::SkipEnrollmentPromptsForTesting();
+  use_fake_login_for_testing_ = true;
 }
 
 void EnrollmentScreenHandler::HandleClose(const std::string& reason) {
@@ -825,8 +826,10 @@
     }
   }
 
-  if (auth_code.empty()) {
+  // Allow testing to continue without a oauth cookie.
+  if (auth_code.empty() && !use_fake_login_for_testing_) {
     // Will try again from oauth_code_waiter callback.
+    VLOG(1) << "OAuth cookie empty, still waiting";
     return;
   }
 
@@ -836,6 +839,7 @@
 }
 
 void EnrollmentScreenHandler::OnCookieWaitTimeout() {
+  LOG(ERROR) << "Timeout waiting for OAuth cookie";
   oauth_code_waiter_.reset();
   ShowError(IDS_LOGIN_FATAL_ERROR_NO_AUTH_TOKEN, true);
 }
diff --git a/chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.h
index a206011..9a97069 100644
--- a/chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.h
+++ b/chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.h
@@ -194,6 +194,8 @@
 
   std::unique_ptr<CookieWaiter> oauth_code_waiter_;
 
+  bool use_fake_login_for_testing_ = false;
+
   base::WeakPtrFactory<EnrollmentScreenHandler> weak_ptr_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(EnrollmentScreenHandler);
diff --git a/chrome/browser/ui/webui/chromeos/login/fingerprint_setup_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/fingerprint_setup_screen_handler.cc
index f22c63f..30b25eef 100644
--- a/chrome/browser/ui/webui/chromeos/login/fingerprint_setup_screen_handler.cc
+++ b/chrome/browser/ui/webui/chromeos/login/fingerprint_setup_screen_handler.cc
@@ -28,10 +28,6 @@
                IDS_OOBE_FINGERPINT_SETUP_SCREEN_TITLE);
   builder->Add("skipFingerprintSetup",
                IDS_OOBE_FINGERPINT_SETUP_SCREEN_BUTTON_SKIP);
-  builder->Add("fingerprintSetupLater",
-               IDS_OOBE_FINGERPINT_SETUP_SCREEN_BUTTON_LATER);
-  builder->Add("fingerprintSetupNext",
-               IDS_OOBE_FINGERPINT_SETUP_SCREEN_BUTTON_NEXT);
   builder->Add("fingerprintSetupDone",
                IDS_OOBE_FINGERPINT_SETUP_SCREEN_BUTTON_DONE);
   builder->Add("fingerprintSetupAddAnother",
diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/browser/ui/webui/settings/site_settings_helper.cc
index 8d5c0fb73..0b2ebbd 100644
--- a/chrome/browser/ui/webui/settings/site_settings_helper.cc
+++ b/chrome/browser/ui/webui/settings/site_settings_helper.cc
@@ -240,9 +240,10 @@
   if (content_type == ContentSettingsType::ADS &&
       base::FeatureList::IsEnabled(
           subresource_filter::kSafeBrowsingSubresourceFilter)) {
-    SubresourceFilterContentSettingsManager* settings_manager =
-        SubresourceFilterProfileContextFactory::GetForProfile(profile)
-            ->settings_manager();
+    subresource_filter::SubresourceFilterContentSettingsManager*
+        settings_manager =
+            SubresourceFilterProfileContextFactory::GetForProfile(profile)
+                ->settings_manager();
 
     if (settings_manager->GetSiteActivationFromMetadata(origin)) {
       return SiteSettingSource::kAdsFilterBlocklist;  // Source #6.
diff --git a/chrome/browser/ui/webui/settings_utils_linux.cc b/chrome/browser/ui/webui/settings_utils_linux.cc
index 9043aaf..d906ecc 100644
--- a/chrome/browser/ui/webui/settings_utils_linux.cc
+++ b/chrome/browser/ui/webui/settings_utils_linux.cc
@@ -43,7 +43,7 @@
 
 // The URL for Linux proxy configuration help when not running under a
 // supported desktop environment.
-constexpr char kLinuxProxyConfigUrl[] = "about:linux-proxy-config";
+constexpr char kLinuxProxyConfigUrl[] = "chrome://linux-proxy-config";
 
 // Show the proxy config URL in the given tab.
 void ShowLinuxProxyConfigUrl(int render_process_id, int render_view_id) {
diff --git a/chrome/browser/ui/webui/signin/profile_picker_ui.cc b/chrome/browser/ui/webui/signin/profile_picker_ui.cc
index 3d90e79..0c196b2 100644
--- a/chrome/browser/ui/webui/signin/profile_picker_ui.cc
+++ b/chrome/browser/ui/webui/signin/profile_picker_ui.cc
@@ -160,42 +160,11 @@
     raw_handler->EnableStartupMetrics();
   }
 
-  std::string generated_path =
-      "@out_folder@/gen/chrome/browser/resources/signin/profile_picker/";
-
   AddStrings(html_source);
-#if BUILDFLAG(OPTIMIZE_WEBUI)
-  webui::SetupBundledWebUIDataSource(
-      html_source, "profile_picker.js",
-      IDR_PROFILE_PICKER_PROFILE_PICKER_ROLLUP_JS,
-      IDR_PROFILE_PICKER_PROFILE_PICKER_HTML);
-  html_source->AddResourcePath("lazy_load.js",
-                               IDR_PROFILE_PICKER_LAZY_LOAD_ROLLUP_JS);
-  html_source->AddResourcePath("shared.rollup.js",
-                               IDR_PROFILE_PICKER_SHARED_ROLLUP_JS);
-  html_source->AddResourcePath("images/left_banner_image.svg",
-                               IDR_PROFILE_PICKER_IMAGES_LEFT_BANNER_IMAGE);
-  html_source->AddResourcePath("images/right_banner_image.svg",
-                               IDR_PROFILE_PICKER_IMAGES_RIGHT_BANNER_IMAGE);
-  html_source->AddResourcePath(
-      "images/dark_mode_left_banner_image.svg",
-      IDR_PROFILE_PICKER_IMAGES_DARK_MODE_LEFT_BANNER_IMAGE);
-  html_source->AddResourcePath(
-      "images/dark_mode_right_banner_image.svg",
-      IDR_PROFILE_PICKER_IMAGES_DARK_MODE_RIGHT_BANNER_IMAGE);
-  html_source->AddResourcePath(
-      "profile_creation_flow/images/banner_light_image.svg",
-      IDR_PROFILE_PICKER_PROFILE_CREATION_FLOW_IMAGES_BANNER_LIGHT_IMAGE);
-  html_source->AddResourcePath(
-      "profile_creation_flow/images/banner_dark_image.svg",
-      IDR_PROFILE_PICKER_PROFILE_CREATION_FLOW_IMAGES_BANNER_DARK_IMAGE);
-#else
-  html_source->AddResourcePath("signin_icons.js", IDR_SIGNIN_ICONS_JS);
   webui::SetupWebUIDataSource(
       html_source,
-      base::make_span(kProfilePickerResources, kProfilePickerResourcesSize),
-      generated_path, IDR_PROFILE_PICKER_PROFILE_PICKER_HTML);
-#endif
+      base::make_span(kProfilePickerResources, kProfilePickerResourcesSize), "",
+      IDR_PROFILE_PICKER_PROFILE_PICKER_HTML);
   content::WebUIDataSource::Add(profile, html_source);
 }
 
diff --git a/chrome/build/linux.pgo.txt b/chrome/build/linux.pgo.txt
index c4acdbcb..3a42b391 100644
--- a/chrome/build/linux.pgo.txt
+++ b/chrome/build/linux.pgo.txt
@@ -1 +1 @@
-chrome-linux-master-1603172634-0379c4f8f7d3cbe89c00f53d2913dcf6ff1ea486.profdata
+chrome-linux-master-1603195140-c129f14cb6d511df5580572a9de378cf815e87d7.profdata
diff --git a/chrome/build/mac.pgo.txt b/chrome/build/mac.pgo.txt
index 88fe08e..6893945 100644
--- a/chrome/build/mac.pgo.txt
+++ b/chrome/build/mac.pgo.txt
@@ -1 +1 @@
-chrome-mac-master-1603172634-987778035e1cace5841998f11e79079a8a8488cb.profdata
+chrome-mac-master-1603195140-e7f1aee2c0a50a929699520496ae0e25b15e94bf.profdata
diff --git a/chrome/common/extensions/docs/examples/extensions/fx/bg.js b/chrome/common/extensions/docs/examples/extensions/fx/bg.js
index a3b28d87..3f3814ba 100644
--- a/chrome/common/extensions/docs/examples/extensions/fx/bg.js
+++ b/chrome/common/extensions/docs/examples/extensions/fx/bg.js
@@ -11,9 +11,9 @@
 // Yeah OK, some of these are a little cliche...
 var urlSounds = {
   "http://www.google.ca/": "canadian-hello.mp3",
-  "about:histograms": "time-passing.mp3",
-  "about:memory": "transform!.mp3",
-  "about:crash": "sadtrombone.mp3",
+  "chrome://histograms/": "time-passing.mp3",
+  "chrome://memory/": "transform!.mp3",
+  "chrome://crash/": "sadtrombone.mp3",
   "chrome://extensions/": "beepboop.mp3",
   "http://www.google.com.au/": "didgeridoo.mp3",
   "http://www.google.com.my/": "my_subway.mp3",
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_bn.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_bn.xtb
index 0c1ce0a..3937c67c 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_bn.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_bn.xtb
@@ -5,6 +5,7 @@
 <translation id="1383286653814676580">Google ক্রেডেনশিয়াল প্রোভাইডার সাইন-ইন পৃষ্ঠা চালানোর জন্য ব্যবহার করা হয়।</translation>
 <translation id="2048923169632968961">আপনার অফিস অ্যাকাউন্টের পাসওয়ার্ড আপনার Windows প্রোফাইলের সাথে সিঙ্ক করানোর সময় কোনও সমস্যা হয়েছে। আপনার অ্যাডমিনিস্ট্রেটরের সাথে যোগাযোগ করুন।</translation>
 <translation id="2515346402363002066">আপনার সেশনের মেয়াদ শেষ হয়ে গেছে। আপনার অফিস অ্যাকাউন্টে সাইন-ইন করুন।</translation>
+<translation id="2549902055700841962">আপনার অফিস অ্যাকাউন্টে সাইন-ইন করা যাচ্ছে না। অ্যাডমিনিস্ট্রেটরের সাথে যোগাযোগ করুন।</translation>
 <translation id="2566603360883977759">এই ইমেল আইডি দিয়ে সাইন-ইন করা যাবে না। কর্মস্থলের বা স্কুলের অ্যাকাউন্ট দিয়ে আবার সাইন-ইন করার চেষ্টা করুন। তবুও সাইন-ইন করা না গেলে, অ্যাডমিনিস্ট্রেটরের সাথে যোগাযোগ করুন।</translation>
 <translation id="2844349213149998955">এই ডিভাইসে ব্যক্তিগত অ্যাকাউন্ট ব্যবহার করে সাইন-ইন করা যাবে না। কাজের অ্যাকাউন্ট দিয়ে লগ-ইন করুন।</translation>
 <translation id="3217145568844727893">যদি আপনার Windows-এর বর্তমান পাসওয়ার্ড না এন্টার করেই আগে চালিয়ে যেতে চান, তাহলে এই ডিভাইসে থাকা ডেটা চিরদিনের জন্য হারিয়ে যেতে পারে।</translation>
diff --git a/chrome/installer/mac/BUILD.gn b/chrome/installer/mac/BUILD.gn
index 09faabc..2e1d52fd 100644
--- a/chrome/installer/mac/BUILD.gn
+++ b/chrome/installer/mac/BUILD.gn
@@ -60,22 +60,19 @@
   deps = [
     ":copy_signing",
     "//chrome:entitlements",
-    "//chrome/installer/mac/third_party/bsdiff:goobsdiff($host_toolchain)",
+    "//chrome/installer/mac/third_party/bsdiff:goobsdiff",
     "//chrome/installer/mac/third_party/bsdiff:goobspatch",
     "//chrome/installer/mac/third_party/xz:lzma_decompress",
-    "//chrome/installer/mac/third_party/xz:xz($host_toolchain)",
+    "//chrome/installer/mac/third_party/xz:xz",
     "//chrome/installer/mac/third_party/xz:xzdec",
   ]
 
   sources = [
     "$root_gen_dir/chrome/app-entitlements.plist",
-    get_label_info(
-            "//chrome/installer/mac/third_party/bsdiff:goobsdiff($host_toolchain)",
-            "root_out_dir") + "/goobsdiff",
+    "$root_out_dir/goobsdiff",
     "$root_out_dir/goobspatch",
     "$root_out_dir/liblzma_decompress.dylib",
-    get_label_info("//chrome/installer/mac/third_party/xz:xz($host_toolchain)",
-                   "root_out_dir") + "/xz",
+    "$root_out_dir/xz",
     "$root_out_dir/xzdec",
     "//chrome/app/helper-gpu-entitlements.plist",
     "//chrome/app/helper-plugin-entitlements.plist",
@@ -141,3 +138,25 @@
            "//third_party/catapult/third_party/typ/",
          ]
 }
+
+config("fat_binary_config") {
+  visibility = [ "./*" ]
+
+  # Always build arm64 targets as universal (fat) binaries, since these need to
+  # run on both the install machine and the machine where the diff installers
+  # are created, and the latter is probably not arm64.
+  if (current_cpu == "arm64") {
+    fat_binary_flags = [
+      # Help the compiler find lipo for creating fat binaries.
+      "-B",
+      mac_bin_path,
+
+      "-arch",
+      "x86_64",
+      "-arch",
+      "arm64",
+    ]
+    cflags = fat_binary_flags
+    ldflags = fat_binary_flags
+  }
+}
diff --git a/chrome/installer/mac/third_party/bsdiff/BUILD.gn b/chrome/installer/mac/third_party/bsdiff/BUILD.gn
index d8974f6a..9474ea6 100644
--- a/chrome/installer/mac/third_party/bsdiff/BUILD.gn
+++ b/chrome/installer/mac/third_party/bsdiff/BUILD.gn
@@ -2,31 +2,21 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
-# Because size is a concern, don't link against all of base. Instead,
-# just bring in a copy of the one component that's needed, along with
-# the adapter that allows it to be called from C (not C++) code.
-static_library("goobsdiff_sha1_adapter") {
-  visibility = [ ":*" ]
-
-  check_includes = false
-
-  sources = [
-    "../../../../../base/hash/sha1.cc",
-    "sha1_adapter.cc",
-    "sha1_adapter.h",
-  ]
-
-  deps = [ "//base:logging_buildflags" ]  # Needed by sha1.cc
-}
-
 executable("goobsdiff") {
+  # Avoid default deps, which pull in the hermetic libc++, which is not needed
+  # for this pure C executable, and which doesn't play well with creating
+  # one-off universal binaries, since libc++ is not built as universal.
+  no_default_deps = true
+
   sources = [ "goobsdiff.c" ]
 
   configs -= [ "//build/config/compiler:chromium_code" ]
-  configs += [ "//build/config/compiler:no_chromium_code" ]
+  configs += [
+    "//build/config/compiler:no_chromium_code",
+    "//chrome/installer/mac:fat_binary_config"
+  ]
 
   deps = [
-    ":goobsdiff_sha1_adapter",
     "//chrome/installer/mac/third_party/xz:lzma",
   ]
 
@@ -39,13 +29,20 @@
 }
 
 executable("goobspatch") {
+  # Avoid default deps, which pull in the hermetic libc++, which is not needed
+  # for this pure C executable, and which doesn't play well with creating
+  # one-off universal binaries, since libc++ is not built as universal.
+  no_default_deps = true
+
   sources = [ "goobspatch.c" ]
 
   configs -= [ "//build/config/compiler:chromium_code" ]
-  configs += [ "//build/config/compiler:no_chromium_code" ]
+  configs += [
+    "//build/config/compiler:no_chromium_code",
+    "//chrome/installer/mac:fat_binary_config"
+  ]
 
   deps = [
-    ":goobsdiff_sha1_adapter",
     "//chrome/installer/mac/third_party/xz:lzma_decompress",
   ]
 
diff --git a/chrome/installer/mac/third_party/bsdiff/README.chromium b/chrome/installer/mac/third_party/bsdiff/README.chromium
index a7920fa5..50f1b779 100644
--- a/chrome/installer/mac/third_party/bsdiff/README.chromium
+++ b/chrome/installer/mac/third_party/bsdiff/README.chromium
@@ -33,7 +33,6 @@
    checked in to the Chromium repository at r49280.
  - Created goobsdiff.gyp for GYP build system integration.
  - Renamed bsdiff.c to goobsdiff.c and bspatch.c to goobspatch.c.
- - Added sha1_adapter.cc, sha1_adapter.h, and empty.cc to facilitate hashing.
  - Added #include <sys/types.h> to goobspatch.c so that it compiles. (Oops!)
  - Changed the magic number in the header from BSDIFF40 to BSDIFF4G.
  - Expanded the header to include SHA1 hashes of the original and new files,
diff --git a/chrome/installer/mac/third_party/bsdiff/empty.cc b/chrome/installer/mac/third_party/bsdiff/empty.cc
deleted file mode 100644
index 16026ac..0000000
--- a/chrome/installer/mac/third_party/bsdiff/empty.cc
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// This is an empty file with a .cc extension, to convince the toolchain
-// (I'm looking at YOU, Xcode) that it needs to link any target this file
-// belongs to as C++.
diff --git a/chrome/installer/mac/third_party/bsdiff/goobsdiff.c b/chrome/installer/mac/third_party/bsdiff/goobsdiff.c
index 22b0bc14..9dd2cac8 100644
--- a/chrome/installer/mac/third_party/bsdiff/goobsdiff.c
+++ b/chrome/installer/mac/third_party/bsdiff/goobsdiff.c
@@ -41,6 +41,7 @@
 #include <zlib.h>
 
 #if defined(__APPLE__)
+#include <CommonCrypto/CommonDigest.h>
 #include <libkern/OSByteOrder.h>
 #define htole64(x) OSSwapHostToLittleInt64(x)
 #elif defined(__linux__)
@@ -51,8 +52,6 @@
 #error Provide htole64 for this platform
 #endif
 
-#include "chrome/installer/mac/third_party/bsdiff/sha1_adapter.h"
-
 #define MIN(x,y) (((x)<(y)) ? (x) : (y))
 
 static void split(off_t *I,off_t *V,off_t start,off_t len,off_t h)
@@ -409,8 +408,8 @@
 	memcpy(header, "BSDIFF4G", 8);
 	offtout(oldsize, header + 32);
 	offtout(newsize, header + 40);
-	SHA1(old, oldsize, header + 48);
-	SHA1(new, newsize, header + 68);
+	CC_SHA1(old, oldsize, header + 48);
+	CC_SHA1(new, newsize, header + 68);
 
 	/* Compute the differences */
 	scan=0;len=0;
diff --git a/chrome/installer/mac/third_party/bsdiff/goobspatch.c b/chrome/installer/mac/third_party/bsdiff/goobspatch.c
index 6d7bff4c..51febb3 100644
--- a/chrome/installer/mac/third_party/bsdiff/goobspatch.c
+++ b/chrome/installer/mac/third_party/bsdiff/goobspatch.c
@@ -41,6 +41,7 @@
 #include <zlib.h>
 
 #if defined(__APPLE__)
+#include <CommonCrypto/CommonDigest.h>
 #include <libkern/OSByteOrder.h>
 #define le64toh(x) OSSwapLittleToHostInt64(x)
 #elif defined(__linux__)
@@ -51,8 +52,6 @@
 #error Provide le64toh for this platform
 #endif
 
-#include "chrome/installer/mac/third_party/bsdiff/sha1_adapter.h"
-
 static inline off_t offtin(u_char *buf)
 {
 	return le64toh(*((off_t*)buf));
@@ -61,7 +60,7 @@
 static void sha1tostr(const u_char *sha1, char *sha1str)
 {
 	int i;
-	for (i = 0; i < SHA1_DIGEST_LENGTH; ++i)
+	for (i = 0; i < CC_SHA1_DIGEST_LENGTH; ++i)
 		sprintf(&sha1str[i * 2], "%02x", sha1[i]);
 }
 
@@ -375,9 +374,9 @@
 	off_t oldpos,newpos;
 	off_t ctrl[3];
 	off_t i;
-	u_char sha1[SHA1_DIGEST_LENGTH];
-	char sha1str[SHA1_DIGEST_LENGTH * 2 + 1];
-	char expected_sha1str[SHA1_DIGEST_LENGTH * 2 + 1];
+	u_char sha1[CC_SHA1_DIGEST_LENGTH];
+	char sha1str[CC_SHA1_DIGEST_LENGTH * 2 + 1];
+	char expected_sha1str[CC_SHA1_DIGEST_LENGTH * 2 + 1];
 
 	if(argc!=4) errx(1,"usage: %s oldfile newfile patchfile",argv[0]);
 
@@ -452,7 +451,7 @@
 	if (expect_oldsize != oldsize)
 		errx(1, "old size mismatch: %lld != %lld",
 		     oldsize, expect_oldsize);
-	SHA1(old, oldsize, sha1);
+	CC_SHA1(old, oldsize, sha1);
 	if (memcmp(sha1, header + 48, sizeof(sha1)) != 0) {
 		sha1tostr(sha1, sha1str);
 		sha1tostr(header + 48, expected_sha1str);
@@ -506,7 +505,7 @@
 	cfclose(&df);
 	cfclose(&ef);
 
-	SHA1(new, newsize, sha1);
+	CC_SHA1(new, newsize, sha1);
 	if (memcmp(sha1, header + 68, sizeof(sha1)) != 0) {
 		sha1tostr(sha1, sha1str);
 		sha1tostr(header + 68, expected_sha1str);
diff --git a/chrome/installer/mac/third_party/bsdiff/sha1_adapter.cc b/chrome/installer/mac/third_party/bsdiff/sha1_adapter.cc
deleted file mode 100644
index faacf3e..0000000
--- a/chrome/installer/mac/third_party/bsdiff/sha1_adapter.cc
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/installer/mac/third_party/bsdiff/sha1_adapter.h"
-
-#include "base/hash/sha1.h"
-
-void SHA1(const unsigned char* data, size_t len, unsigned char* hash) {
-  base::SHA1HashBytes(data, len, hash);
-}
diff --git a/chrome/installer/mac/third_party/bsdiff/sha1_adapter.h b/chrome/installer/mac/third_party/bsdiff/sha1_adapter.h
deleted file mode 100644
index 9e7de130..0000000
--- a/chrome/installer/mac/third_party/bsdiff/sha1_adapter.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Copyright (c) 2011 The Chromium Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file. */
-
-#ifndef CHROME_INSTALLER_MAC_THIRD_PARTY_BSDIFF_SHA1_ADAPTER_H_
-#define CHROME_INSTALLER_MAC_THIRD_PARTY_BSDIFF_SHA1_ADAPTER_H_
-
-/* This file defines a wrapper around Chromium's C++ base::SHA1HashBytes
- * function allowing it to be called from C code. */
-
-#include <sys/types.h>
-
-#define SHA1_DIGEST_LENGTH 20
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-void SHA1(const unsigned char* data, size_t len, unsigned char* hash);
-
-#if defined(__cplusplus)
-}  // extern "C"
-#endif
-
-#endif  /* CHROME_INSTALLER_MAC_THIRD_PARTY_BSDIFF_SHA1_ADAPTER_H_ */
diff --git a/chrome/installer/mac/third_party/xz/BUILD.gn b/chrome/installer/mac/third_party/xz/BUILD.gn
index 827ff2a4..f1d0ac1 100644
--- a/chrome/installer/mac/third_party/xz/BUILD.gn
+++ b/chrome/installer/mac/third_party/xz/BUILD.gn
@@ -127,6 +127,7 @@
     ":common_config",
     ":compress_config",
     ":decompress_config",
+    "//chrome/installer/mac:fat_binary_config",
   ]
 
   sources = [
@@ -213,6 +214,7 @@
   configs += [
     ":common_config",
     ":decompress_config",
+    "//chrome/installer/mac:fat_binary_config",
   ]
 
   sources = [
@@ -256,6 +258,7 @@
   configs += [
     ":common_config",
     ":compress_config",
+    "//chrome/installer/mac:fat_binary_config",
   ]
 
   sources = [
@@ -317,9 +320,15 @@
 # is distributed in Google Chrome update disk images and is used by more
 # than one tool.
 shared_library("lzma_decompress") {
+  # Avoid default deps, which pull in the hermetic libc++, which is not needed
+  # for this pure C executable, and which doesn't play well with creating
+  # one-off universal binaries, since libc++ is not built as universal.
+  no_default_deps = true
+
   configs += [
     ":common_config",
     ":decompress_config",
+    "//chrome/installer/mac:fat_binary_config",
   ]
 
   public_configs = [ ":lzma_decompress_config" ]
@@ -343,10 +352,16 @@
 }
 
 executable("xz") {
+  # Avoid default deps, which pull in the hermetic libc++, which is not needed
+  # for this pure C executable, and which doesn't play well with creating
+  # one-off universal binaries, since libc++ is not built as universal.
+  no_default_deps = true
+
   configs += [
     ":common_config",
     ":decompress_config",
     ":compress_config",
+    "//chrome/installer/mac:fat_binary_config",
   ]
 
   sources = [
@@ -378,9 +393,15 @@
 }
 
 executable("xzdec") {
+  # Avoid default deps, which pull in the hermetic libc++, which is not needed
+  # for this pure C executable, and which doesn't play well with creating
+  # one-off universal binaries, since libc++ is not built as universal.
+  no_default_deps = true
+
   configs += [
     ":common_config",
     ":decompress_config",
+    "//chrome/installer/mac:fat_binary_config",
   ]
 
   sources = [
diff --git a/chrome/renderer/media/chrome_speech_recognition_client.cc b/chrome/renderer/media/chrome_speech_recognition_client.cc
index 53c9368..d7a546d 100644
--- a/chrome/renderer/media/chrome_speech_recognition_client.cc
+++ b/chrome/renderer/media/chrome_speech_recognition_client.cc
@@ -32,36 +32,26 @@
 ChromeSpeechRecognitionClient::ChromeSpeechRecognitionClient(
     content::RenderFrame* render_frame,
     media::SpeechRecognitionClient::OnReadyCallback callback)
-    : on_ready_callback_(std::move(callback)), blocked_urls_(GetBlockedURLs()) {
-  mojo::PendingReceiver<media::mojom::SpeechRecognitionContext>
-      speech_recognition_context_receiver =
-          speech_recognition_context_.BindNewPipeAndPassReceiver();
-  speech_recognition_context_->BindRecognizer(
-      speech_recognition_recognizer_.BindNewPipeAndPassReceiver(),
-      speech_recognition_client_receiver_.BindNewPipeAndPassRemote(),
-      base::BindOnce(&ChromeSpeechRecognitionClient::OnRecognizerBound,
-                     base::Unretained(this)));
-
-  render_frame->GetBrowserInterfaceBroker()->GetInterface(
-      std::move(speech_recognition_context_receiver));
-  render_frame->GetBrowserInterfaceBroker()->GetInterface(
-      caption_host_.BindNewPipeAndPassReceiver());
-
-  is_website_blocked_ = IsUrlBlocked(
-      render_frame->GetWebFrame()->GetSecurityOrigin().ToString().Utf8());
-  base::UmaHistogramBoolean("Accessibility.LiveCaption.WebsiteBlocked",
-                            is_website_blocked_);
+    : render_frame_(render_frame),
+      on_ready_callback_(std::move(callback)),
+      blocked_urls_(GetBlockedURLs()) {
+  initialize_callback_ = media::BindToCurrentLoop(base::BindRepeating(
+      &ChromeSpeechRecognitionClient::Initialize, weak_factory_.GetWeakPtr()));
 
   send_audio_callback_ = media::BindToCurrentLoop(base::BindRepeating(
       &ChromeSpeechRecognitionClient::SendAudioToSpeechRecognitionService,
       weak_factory_.GetWeakPtr()));
 
-  speech_recognition_context_.set_disconnect_handler(media::BindToCurrentLoop(
-      base::BindOnce(&ChromeSpeechRecognitionClient::OnRecognizerDisconnected,
-                     weak_factory_.GetWeakPtr())));
-  caption_host_.set_disconnect_handler(
-      base::BindOnce(&ChromeSpeechRecognitionClient::OnCaptionHostDisconnected,
-                     base::Unretained(this)));
+  mojo::PendingReceiver<media::mojom::SpeechRecognitionClientBrowserInterface>
+      speech_recognition_client_browser_interface_receiver =
+          speech_recognition_client_browser_interface_
+              .BindNewPipeAndPassReceiver();
+  speech_recognition_client_browser_interface_
+      ->BindSpeechRecognitionAvailabilityObserver(
+          speech_recognition_availability_observer_.BindNewPipeAndPassRemote());
+
+  render_frame_->GetBrowserInterfaceBroker()->GetInterface(
+      std::move(speech_recognition_client_browser_interface_receiver));
 }
 
 void ChromeSpeechRecognitionClient::OnRecognizerBound(
@@ -126,6 +116,15 @@
                      base::Unretained(this)));
 }
 
+void ChromeSpeechRecognitionClient::SpeechRecognitionAvailabilityChanged(
+    bool is_speech_recognition_available) {
+  if (is_speech_recognition_available) {
+    initialize_callback_.Run();
+  } else {
+    Reset();
+  }
+}
+
 void ChromeSpeechRecognitionClient::OnTranscriptionCallback(bool success) {
   is_browser_requesting_transcription_ = success;
 }
@@ -159,6 +158,48 @@
   }
 }
 
+void ChromeSpeechRecognitionClient::Initialize() {
+  if (speech_recognition_context_.is_bound())
+    return;
+
+  mojo::PendingReceiver<media::mojom::SpeechRecognitionContext>
+      speech_recognition_context_receiver =
+          speech_recognition_context_.BindNewPipeAndPassReceiver();
+  speech_recognition_context_->BindRecognizer(
+      speech_recognition_recognizer_.BindNewPipeAndPassReceiver(),
+      speech_recognition_client_receiver_.BindNewPipeAndPassRemote(),
+      media::BindToCurrentLoop(
+          base::BindOnce(&ChromeSpeechRecognitionClient::OnRecognizerBound,
+                         weak_factory_.GetWeakPtr())));
+
+  render_frame_->GetBrowserInterfaceBroker()->GetInterface(
+      std::move(speech_recognition_context_receiver));
+  render_frame_->GetBrowserInterfaceBroker()->GetInterface(
+      caption_host_.BindNewPipeAndPassReceiver());
+
+  is_website_blocked_ = IsUrlBlocked(
+      render_frame_->GetWebFrame()->GetSecurityOrigin().ToString().Utf8());
+  base::UmaHistogramBoolean("Accessibility.LiveCaption.WebsiteBlocked",
+                            is_website_blocked_);
+
+  speech_recognition_context_.set_disconnect_handler(media::BindToCurrentLoop(
+      base::BindOnce(&ChromeSpeechRecognitionClient::OnRecognizerDisconnected,
+                     weak_factory_.GetWeakPtr())));
+
+  // Unretained is safe because |this| owns the mojo::Remote.
+  caption_host_.set_disconnect_handler(
+      base::BindOnce(&ChromeSpeechRecognitionClient::OnCaptionHostDisconnected,
+                     base::Unretained(this)));
+}
+
+void ChromeSpeechRecognitionClient::Reset() {
+  is_recognizer_bound_ = false;
+  speech_recognition_context_.reset();
+  speech_recognition_recognizer_.reset();
+  speech_recognition_client_receiver_.reset();
+  caption_host_.reset();
+}
+
 void ChromeSpeechRecognitionClient::SendAudioToSpeechRecognitionService(
     media::mojom::AudioDataS16Ptr audio_data) {
   DCHECK(audio_data);
diff --git a/chrome/renderer/media/chrome_speech_recognition_client.h b/chrome/renderer/media/chrome_speech_recognition_client.h
index cc36368c..44151d1 100644
--- a/chrome/renderer/media/chrome_speech_recognition_client.h
+++ b/chrome/renderer/media/chrome_speech_recognition_client.h
@@ -28,10 +28,12 @@
 
 class ChromeSpeechRecognitionClient
     : public media::SpeechRecognitionClient,
-      public media::mojom::SpeechRecognitionRecognizerClient {
+      public media::mojom::SpeechRecognitionRecognizerClient,
+      public media::mojom::SpeechRecognitionAvailabilityObserver {
  public:
   using SendAudioToSpeechRecognitionServiceCallback =
       base::RepeatingCallback<void(media::mojom::AudioDataS16Ptr audio_data)>;
+  using InitializeCallback = base::RepeatingCallback<void()>;
 
   explicit ChromeSpeechRecognitionClient(
       content::RenderFrame* render_frame,
@@ -58,7 +60,20 @@
   void OnSpeechRecognitionRecognitionEvent(
       media::mojom::SpeechRecognitionResultPtr result) override;
 
+  // media::mojom::SpeechRecognitionAvailabilityObserver
+  void SpeechRecognitionAvailabilityChanged(
+      bool is_speech_recognition_available) override;
+
  private:
+  // Initialize the speech recognition client and construct all of the mojo
+  // pipes.
+  void Initialize();
+
+  // Resets the mojo pipe to the caption host, speech recognition recognizer,
+  // and speech recognition service. Maintains the pipe to the browser so that
+  // it may be notified when to reinitialize the pipes.
+  void Reset();
+
   void SendAudioToSpeechRecognitionService(
       media::mojom::AudioDataS16Ptr audio_data);
 
@@ -91,11 +106,20 @@
   // Called when the caption host is disconnected. Halts future transcriptions.
   void OnCaptionHostDisconnected();
 
+  content::RenderFrame* render_frame_;
+
+  ChromeSpeechRecognitionClient::InitializeCallback initialize_callback_;
+
   media::SpeechRecognitionClient::OnReadyCallback on_ready_callback_;
 
   // Sends audio to the speech recognition thread on the renderer thread.
   SendAudioToSpeechRecognitionServiceCallback send_audio_callback_;
 
+  mojo::Receiver<media::mojom::SpeechRecognitionAvailabilityObserver>
+      speech_recognition_availability_observer_{this};
+  mojo::Remote<media::mojom::SpeechRecognitionClientBrowserInterface>
+      speech_recognition_client_browser_interface_;
+
   mojo::Remote<media::mojom::SpeechRecognitionContext>
       speech_recognition_context_;
   mojo::Remote<media::mojom::SpeechRecognitionRecognizer>
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index ef99073..c04f5f4 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -2726,7 +2726,7 @@
         "../browser/ui/views/extensions/extension_dialog_bounds_browsertest.cc",
         "../browser/ui/views/frame/browser_frame_ash_browsertest.cc",
         "../browser/ui/views/frame/browser_non_client_frame_view_ash_browsertest.cc",
-        "../browser/ui/views/frame/immersive_mode_controller_ash_browsertest.cc",
+        "../browser/ui/views/frame/immersive_mode_controller_chromeos_browsertest.cc",
         "../browser/ui/views/frame/system_menu_model_builder_browsertest_chromeos.cc",
         "../browser/ui/views/frame/top_controls_slide_controller_chromeos_browsertest.cc",
         "../browser/ui/views/intent_picker_bubble_view_browsertest_chromeos.cc",
diff --git a/chrome/test/data/extensions/api_test/tabs/capture_visible_tab/test_disabled.js b/chrome/test/data/extensions/api_test/tabs/capture_visible_tab/test_disabled.js
index 4d392a2c..9b5c8a6 100644
--- a/chrome/test/data/extensions/api_test/tabs/capture_visible_tab/test_disabled.js
+++ b/chrome/test/data/extensions/api_test/tabs/capture_visible_tab/test_disabled.js
@@ -18,7 +18,7 @@
 
 chrome.test.getConfig((config) => {
   const kError = 'Taking screenshots has been disabled';
-  const kUrl = `localhost:${config.testServer.port}/simple.html`;
+  const kUrl = `http://localhost:${config.testServer.port}/simple.html`;
   chrome.test.runTests([
     function captureVisibleDisabled() {
       createWindow([kUrl], kWindowRect, pass(function(winId, tabIds) {
diff --git a/chrome/updater/app/app_install.cc b/chrome/updater/app/app_install.cc
index 6cc35ef..c8711f5 100644
--- a/chrome/updater/app/app_install.cc
+++ b/chrome/updater/app/app_install.cc
@@ -115,8 +115,8 @@
 void AppInstall::WakeCandidate() {
   // Invoke ControlService::InitializeUpdateService to wake this version of the
   // updater, qualify, and possibly promote this version as a result. The
-  // instance of |CreateControlService| has sequence affinity. Bind it in the
-  // closure to ensure it is released in this sequence.
+  // |ControlService| instance has sequence affinity. Bind it in the closure to
+  // ensure it is released in this sequence.
   scoped_refptr<ControlService> control_service = CreateControlService();
   control_service->InitializeUpdateService(base::BindOnce(
       [](scoped_refptr<ControlService> /*control_service*/,
diff --git a/chrome/updater/app/server/win/com_classes.cc b/chrome/updater/app/server/win/com_classes.cc
index 1bf5be1..d3dd269 100644
--- a/chrome/updater/app/server/win/com_classes.cc
+++ b/chrome/updater/app/server/win/com_classes.cc
@@ -11,8 +11,10 @@
 #include "base/strings/utf_string_conversions.h"
 #include "base/task/task_traits.h"
 #include "base/task/thread_pool.h"
+#include "base/version.h"
 #include "base/win/scoped_bstr.h"
 #include "chrome/updater/app/server/win/server.h"
+#include "chrome/updater/updater_version.h"
 
 namespace updater {
 
@@ -88,6 +90,20 @@
   return S_OK;
 }
 
+HRESULT UpdaterImpl::GetVersion(BSTR* version) {
+  DCHECK(version);
+
+  // Return the hardcoded version instead of calling the corresponding
+  // non-blocking function of `UpdateServiceInProcess`. This results in some
+  // code duplication but it avoids the complexities of making this function
+  // non-blocking.
+  *version =
+      base::win::ScopedBstr(
+          base::UTF8ToWide(base::Version(UPDATER_VERSION_STRING).GetString()))
+          .Release();
+  return S_OK;
+}
+
 HRESULT UpdaterImpl::CheckForUpdate(const base::char16* app_id) {
   return E_NOTIMPL;
 }
diff --git a/chrome/updater/app/server/win/com_classes.h b/chrome/updater/app/server/win/com_classes.h
index 7f3de752..2d70911 100644
--- a/chrome/updater/app/server/win/com_classes.h
+++ b/chrome/updater/app/server/win/com_classes.h
@@ -86,6 +86,7 @@
   UpdaterImpl& operator=(const UpdaterImpl&) = delete;
 
   // Overrides for IUpdater.
+  IFACEMETHODIMP GetVersion(BSTR* version) override;
   IFACEMETHODIMP CheckForUpdate(const base::char16* app_id) override;
   IFACEMETHODIMP Register(const base::char16* app_id,
                           const base::char16* brand_code,
diff --git a/chrome/updater/app/server/win/updater_idl.template b/chrome/updater/app/server/win/updater_idl.template
index 322e973..b37bf70 100644
--- a/chrome/updater/app/server/win/updater_idl.template
+++ b/chrome/updater/app/server/win/updater_idl.template
@@ -262,6 +262,7 @@
   pointer_default(unique)
 ]
 interface IUpdater : IUnknown {
+  HRESULT GetVersion([out, retval] BSTR* version);
   HRESULT CheckForUpdate([in, string] const WCHAR* app_id);
   HRESULT Register([in, string] const WCHAR* app_id,
                    [in, string] const WCHAR* brand_code,
diff --git a/chrome/updater/mac/update_service_out_of_process.h b/chrome/updater/mac/update_service_out_of_process.h
index 9edc0d8..34806f06 100644
--- a/chrome/updater/mac/update_service_out_of_process.h
+++ b/chrome/updater/mac/update_service_out_of_process.h
@@ -21,6 +21,7 @@
 
 namespace base {
 class SequencedTaskRunner;
+class Version;
 }  // namespace base
 
 namespace update_client {
@@ -35,6 +36,8 @@
   explicit UpdateServiceOutOfProcess(ServiceScope scope);
 
   // Overrides for UpdateService.
+  void GetVersion(
+      base::OnceCallback<void(const base::Version&)> callback) const override;
   void RegisterApp(
       const RegistrationRequest& request,
       base::OnceCallback<void(const RegistrationResponse&)> callback) override;
diff --git a/chrome/updater/mac/update_service_out_of_process.mm b/chrome/updater/mac/update_service_out_of_process.mm
index 35a26554..7a8f275 100644
--- a/chrome/updater/mac/update_service_out_of_process.mm
+++ b/chrome/updater/mac/update_service_out_of_process.mm
@@ -14,6 +14,7 @@
 #include "base/logging.h"
 #include "base/mac/foundation_util.h"
 #include "base/mac/scoped_nsobject.h"
+#include "base/notreached.h"
 #include "base/strings/sys_string_conversions.h"
 #include "base/threading/sequenced_task_runner_handle.h"
 #import "chrome/updater/app/server/mac/service_protocol.h"
@@ -187,6 +188,14 @@
   [client_ checkForUpdatesWithUpdateState:stateObserver.get() reply:reply];
 }
 
+void UpdateServiceOutOfProcess::GetVersion(
+    base::OnceCallback<void(const base::Version&)> callback) const {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+
+  // TODO(crbug.com/1140270) - implement for macOS.
+  NOTREACHED();
+}
+
 void UpdateServiceOutOfProcess::Update(const std::string& app_id,
                                        UpdateService::Priority priority,
                                        StateChangeCallback state_update,
diff --git a/chrome/updater/update_service.h b/chrome/updater/update_service.h
index bfefebd2..60634ac 100644
--- a/chrome/updater/update_service.h
+++ b/chrome/updater/update_service.h
@@ -161,6 +161,12 @@
   using StateChangeCallback = base::RepeatingCallback<void(UpdateState)>;
   using Callback = base::OnceCallback<void(Result)>;
 
+  // Returns the version of the active updater. In the current implementation,
+  // this value corresponds to UPDATER_VERSION. The version object is invalid
+  // ]if an error occurs.
+  virtual void GetVersion(
+      base::OnceCallback<void(const base::Version&)>) const = 0;
+
   // Registers given request to the updater.
   virtual void RegisterApp(
       const RegistrationRequest& request,
diff --git a/chrome/updater/update_service_in_process.cc b/chrome/updater/update_service_in_process.cc
index 8a6fe9c..e00e6d6 100644
--- a/chrome/updater/update_service_in_process.cc
+++ b/chrome/updater/update_service_in_process.cc
@@ -16,12 +16,14 @@
 #include "base/task/post_task.h"
 #include "base/threading/sequenced_task_runner_handle.h"
 #include "base/threading/thread_task_runner_handle.h"
+#include "base/version.h"
 #include "chrome/updater/configurator.h"
 #include "chrome/updater/constants.h"
 #include "chrome/updater/installer.h"
 #include "chrome/updater/persisted_data.h"
 #include "chrome/updater/prefs.h"
 #include "chrome/updater/registration_data.h"
+#include "chrome/updater/updater_version.h"
 #include "components/prefs/pref_service.h"
 #include "components/update_client/crx_update_item.h"
 #include "components/update_client/update_client.h"
@@ -151,6 +153,14 @@
       main_task_runner_(base::SequencedTaskRunnerHandle::Get()),
       update_client_(update_client::UpdateClientFactory(config)) {}
 
+void UpdateServiceInProcess::GetVersion(
+    base::OnceCallback<void(const base::Version&)> callback) const {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+  main_task_runner_->PostTask(
+      FROM_HERE, base::BindOnce(std::move(callback),
+                                base::Version(UPDATER_VERSION_STRING)));
+}
+
 void UpdateServiceInProcess::RegisterApp(
     const RegistrationRequest& request,
     base::OnceCallback<void(const RegistrationResponse&)> callback) {
diff --git a/chrome/updater/update_service_in_process.h b/chrome/updater/update_service_in_process.h
index cc2832bd..c102d2314 100644
--- a/chrome/updater/update_service_in_process.h
+++ b/chrome/updater/update_service_in_process.h
@@ -15,6 +15,7 @@
 
 namespace base {
 class SequencedTaskRunner;
+class Version;
 }
 
 namespace update_client {
@@ -34,6 +35,8 @@
       scoped_refptr<update_client::Configurator> config);
 
   // Overrides for updater::UpdateService.
+  void GetVersion(
+      base::OnceCallback<void(const base::Version&)> callback) const override;
   void RegisterApp(
       const RegistrationRequest& request,
       base::OnceCallback<void(const RegistrationResponse&)> callback) override;
diff --git a/chrome/updater/win/control_service_out_of_process.cc b/chrome/updater/win/control_service_out_of_process.cc
index f1d32473..73ce66b 100644
--- a/chrome/updater/win/control_service_out_of_process.cc
+++ b/chrome/updater/win/control_service_out_of_process.cc
@@ -15,7 +15,6 @@
 #include "base/task/task_traits.h"
 #include "base/threading/sequenced_task_runner_handle.h"
 #include "base/threading/thread_checker.h"
-#include "base/win/scoped_bstr.h"
 #include "chrome/updater/app/server/win/updater_idl.h"
 #include "chrome/updater/win/constants.h"
 
@@ -100,7 +99,6 @@
   DCHECK(complete_status);
 
   LONG code = 0;
-  base::win::ScopedBstr message;
   CHECK(SUCCEEDED(complete_status->get_statusCode(&code)));
 
   return code;
diff --git a/chrome/updater/win/update_service_out_of_process.cc b/chrome/updater/win/update_service_out_of_process.cc
index 152ba07e..15dd0bfe 100644
--- a/chrome/updater/win/update_service_out_of_process.cc
+++ b/chrome/updater/win/update_service_out_of_process.cc
@@ -22,6 +22,7 @@
 #include "base/task/thread_pool.h"
 #include "base/threading/sequenced_task_runner_handle.h"
 #include "base/threading/thread_checker.h"
+#include "base/version.h"
 #include "base/win/scoped_bstr.h"
 #include "chrome/updater/app/server/win/updater_idl.h"
 #include "chrome/updater/util.h"
@@ -279,6 +280,25 @@
 
 UpdateServiceOutOfProcess::~UpdateServiceOutOfProcess() = default;
 
+void UpdateServiceOutOfProcess::GetVersion(
+    base::OnceCallback<void(const base::Version&)> callback) const {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+
+  com_task_runner_->PostTask(
+      FROM_HERE,
+      base::BindOnce(
+          &UpdateServiceOutOfProcess::GetVersionOnSTA, this,
+          base::BindOnce(
+              [](scoped_refptr<base::SequencedTaskRunner> taskrunner,
+                 base::OnceCallback<void(const base::Version&)> callback,
+                 const base::Version& version) {
+                DCHECK(version.IsValid());
+                taskrunner->PostTask(
+                    FROM_HERE, base::BindOnce(std::move(callback), version));
+              },
+              base::SequencedTaskRunnerHandle::Get(), std::move(callback))));
+}
+
 void UpdateServiceOutOfProcess::RegisterApp(
     const RegistrationRequest& request,
     base::OnceCallback<void(const RegistrationResponse&)> callback) {
@@ -337,6 +357,29 @@
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
 }
 
+void UpdateServiceOutOfProcess::GetVersionOnSTA(
+    base::OnceCallback<void(const base::Version&)> callback) const {
+  DCHECK(com_task_runner_->BelongsToCurrentThread());
+
+  Microsoft::WRL::ComPtr<IUpdater> updater;
+  HRESULT hr = CreateUpdater(updater);
+  if (FAILED(hr)) {
+    DVLOG(2) << "Failed to create the updater interface: " << std::hex << hr;
+    std::move(callback).Run(base::Version());
+    return;
+  }
+
+  base::win::ScopedBstr version;
+  hr = updater->GetVersion(version.Receive());
+  if (FAILED(hr)) {
+    DVLOG(2) << "IUpdater::GetVersion failed: " << std::hex << hr;
+    std::move(callback).Run(base::Version());
+    return;
+  }
+
+  std::move(callback).Run(base::Version(base::WideToUTF8(version.Get())));
+}
+
 void UpdateServiceOutOfProcess::UpdateAllOnSTA(StateChangeCallback state_update,
                                                Callback callback) {
   DCHECK(com_task_runner_->BelongsToCurrentThread());
diff --git a/chrome/updater/win/update_service_out_of_process.h b/chrome/updater/win/update_service_out_of_process.h
index 058d2b5..260b011 100644
--- a/chrome/updater/win/update_service_out_of_process.h
+++ b/chrome/updater/win/update_service_out_of_process.h
@@ -17,6 +17,7 @@
 namespace base {
 class SequencedTaskRunner;
 class SingleThreadTaskRunner;
+class Version;
 }  // namespace base
 
 namespace update_client {
@@ -37,6 +38,8 @@
   explicit UpdateServiceOutOfProcess(ServiceScope service_scope);
 
   // Overrides for updater::UpdateService.
+  void GetVersion(
+      base::OnceCallback<void(const base::Version&)> callback) const override;
   void RegisterApp(
       const RegistrationRequest& request,
       base::OnceCallback<void(const RegistrationResponse&)> callback) override;
@@ -50,7 +53,9 @@
  private:
   ~UpdateServiceOutOfProcess() override;
 
-  // These two functions runs on the |com_task_runner_|.
+  // These functions runs on the |com_task_runner_|.
+  void GetVersionOnSTA(
+      base::OnceCallback<void(const base::Version&)> callback) const;
   void UpdateAllOnSTA(StateChangeCallback state_update, Callback callback);
   void UpdateOnSTA(const std::string& app_id,
                    StateChangeCallback state_update,
diff --git a/chromeos/attestation/attestation_flow.cc b/chromeos/attestation/attestation_flow.cc
index bfeaa81..4480a137 100644
--- a/chromeos/attestation/attestation_flow.cc
+++ b/chromeos/attestation/attestation_flow.cc
@@ -34,9 +34,6 @@
 // attestation.
 constexpr uint16_t kRetryDelayInMilliseconds = 300;
 
-constexpr ::attestation::ACAType kDefaultAcaType =
-    ::attestation::ACAType::DEFAULT_ACA;
-
 void DBusCertificateMethodCallback(
     AttestationFlow::CertificateCallback callback,
     base::Optional<CryptohomeClient::TpmAttestationDataResult> result) {
@@ -52,16 +49,6 @@
   }
 }
 
-bool IsPreparedWith(const ::attestation::GetEnrollmentPreparationsReply& reply,
-                    ::attestation::ACAType aca_type) {
-  for (const auto& preparation : reply.enrollment_preparations()) {
-    if (preparation.first == aca_type) {
-      return preparation.second;
-    }
-  }
-  return false;
-}
-
 }  // namespace
 
 AttestationKeyType AttestationFlow::GetKeyTypeForProfile(
@@ -137,7 +124,6 @@
     base::TimeTicks end_time,
     base::OnceCallback<void(bool)> callback) {
   ::attestation::GetEnrollmentPreparationsRequest request;
-  request.set_aca_type(kDefaultAcaType);
   attestation_client_->GetEnrollmentPreparations(
       request, base::BindOnce(&AttestationFlow::OnPreparedCheckComplete,
                               weak_factory_.GetWeakPtr(), end_time,
@@ -148,8 +134,7 @@
     base::TimeTicks end_time,
     base::OnceCallback<void(bool)> callback,
     const ::attestation::GetEnrollmentPreparationsReply& reply) {
-  if (reply.status() == ::attestation::STATUS_SUCCESS &&
-      IsPreparedWith(reply, kDefaultAcaType)) {
+  if (AttestationClient::IsAttestationPrepared(reply)) {
     // Get the attestation service to create a Privacy CA enrollment request.
     async_caller_->AsyncTpmAttestationCreateEnrollRequest(
         server_proxy_->GetType(),
diff --git a/chromeos/attestation/attestation_flow_unittest.cc b/chromeos/attestation/attestation_flow_unittest.cc
index 7fee621..be5c81e 100644
--- a/chromeos/attestation/attestation_flow_unittest.cc
+++ b/chromeos/attestation/attestation_flow_unittest.cc
@@ -269,6 +269,42 @@
   Run();
 }
 
+TEST_F(AttestationFlowTest, GetCertificate_Attestation_Never_Confirm_Prepared) {
+  StrictMock<cryptohome::MockAsyncMethodCaller> async_caller;
+  async_caller.SetUp(false, cryptohome::MOUNT_ERROR_NONE);
+
+  chromeos::FakeCryptohomeClient client;
+  client.set_tpm_attestation_is_enrolled(false);
+  chromeos::AttestationClient::Get()
+      ->GetTestInterface()
+      ->ConfigureEnrollmentPreparationsStatus(
+          ::attestation::STATUS_NOT_AVAILABLE);
+
+  // We're not expecting any server calls in this case; StrictMock will verify.
+  std::unique_ptr<MockServerProxy> proxy(new StrictMock<MockServerProxy>());
+  EXPECT_CALL(*proxy, GetType()).WillRepeatedly(DoDefault());
+
+  StrictMock<MockObserver> observer;
+  EXPECT_CALL(observer,
+              MockCertificateCallback(ATTESTATION_UNSPECIFIED_FAILURE, ""))
+      .Times(1);
+  AttestationFlow::CertificateCallback callback =
+      base::BindOnce(&AttestationFlowTest::QuitRunLoopCertificateCallback,
+                     base::Unretained(this),
+                     base::Bind(&MockObserver::MockCertificateCallback,
+                                base::Unretained(&observer)));
+
+  std::unique_ptr<ServerProxy> proxy_interface(proxy.release());
+  AttestationFlow flow(&async_caller, &client, std::move(proxy_interface));
+  flow.set_ready_timeout(base::TimeDelta::FromMilliseconds(20));
+  flow.set_retry_delay(base::TimeDelta::FromMilliseconds(6));
+  flow.GetCertificate(PROFILE_ENTERPRISE_USER_CERTIFICATE, EmptyAccountId(),
+                      "fake_origin", true, std::string() /* key_name */,
+                      std::move(callback));
+
+  Run();
+}
+
 TEST_F(AttestationFlowTest, GetCertificate_NoEK) {
   StrictMock<cryptohome::MockAsyncMethodCaller> async_caller;
   async_caller.SetUp(false, cryptohome::MOUNT_ERROR_NONE);
diff --git a/chromeos/components/camera_app_ui/resources/strings/camera_strings_bn.xtb b/chromeos/components/camera_app_ui/resources/strings/camera_strings_bn.xtb
index 93115b7..51930b95 100644
--- a/chromeos/components/camera_app_ui/resources/strings/camera_strings_bn.xtb
+++ b/chromeos/components/camera_app_ui/resources/strings/camera_strings_bn.xtb
@@ -3,6 +3,7 @@
 <translationbundle lang="bn">
 <translation id="1276998909102132017">গ্যালারির ছবি</translation>
 <translation id="1430915738399379752">প্রিন্ট</translation>
+<translation id="1473110567575736769">৩ সেকেন্ডের টাইমার</translation>
 <translation id="1620510694547887537">ক্যামেরা</translation>
 <translation id="1627744224761163218">৪ x ৪</translation>
 <translation id="1664224225747386870">কিছুই রেকর্ড করা হয়নি</translation>
@@ -30,6 +31,7 @@
 <translation id="3517926952904427380">পোর্ট্রেট ফটো তোলা যাচ্ছে না</translation>
 <translation id="3569311554794739032">আপনি কি সত্যিই <ph name="FILE" /> সরাতে চান?</translation>
 <translation id="3810838688059735925">ভিডিও</translation>
+<translation id="4000398125663085899">নতুন ফটো ও ভিডিও এখন Files অ্যাপের একটি ফোল্ডারে সেভ করা হবে: আমার ফাইল &gt; ক্যামেরা</translation>
 <translation id="4118525110028899586">রেকর্ডিং পজ করুন</translation>
 <translation id="4279490309300973883">অনুকরণ করা হচ্ছে</translation>
 <translation id="4329152592498422850">চৌকো ফটো তুলতে মোড পাল্টান</translation>
@@ -62,6 +64,7 @@
 <translation id="6965382102122355670">ঠিক আছে</translation>
 <translation id="698156982839284926">৩ সেকেন্ড</translation>
 <translation id="712848772518857951">আপনি কি সত্যিই <ph name="COUNT" />টি আইটেম সরিয়ে ফেলতে চান?</translation>
+<translation id="7134221860976209830">১০ সেকেন্ডের টাইমার</translation>
 <translation id="7243947652761655814">ভিডিও রেজোলিউশন</translation>
 <translation id="7337660886763914220">ফাইল সিস্টেমে সমস্যা হয়েছে।</translation>
 <translation id="7557677699350329807">পরের ক্যামেরা বেছে নিন</translation>
diff --git a/chromeos/components/camera_app_ui/resources/strings/camera_strings_zh-CN.xtb b/chromeos/components/camera_app_ui/resources/strings/camera_strings_zh-CN.xtb
index 03ae8e5d..517bc79e 100644
--- a/chromeos/components/camera_app_ui/resources/strings/camera_strings_zh-CN.xtb
+++ b/chromeos/components/camera_app_ui/resources/strings/camera_strings_zh-CN.xtb
@@ -64,7 +64,7 @@
 <translation id="6965382102122355670">确定</translation>
 <translation id="698156982839284926">3 秒</translation>
 <translation id="712848772518857951">确定要移除这 <ph name="COUNT" /> 个文件吗?</translation>
-<translation id="7134221860976209830">10 秒计时器</translation>
+<translation id="7134221860976209830">10 秒定时器</translation>
 <translation id="7243947652761655814">视频分辨率</translation>
 <translation id="7337660886763914220">文件系统出错。</translation>
 <translation id="7557677699350329807">切换到下一个摄像头</translation>
diff --git a/chromeos/components/scanning/mojom/scanning.mojom b/chromeos/components/scanning/mojom/scanning.mojom
index 3724f43..55ef097d 100644
--- a/chromeos/components/scanning/mojom/scanning.mojom
+++ b/chromeos/components/scanning/mojom/scanning.mojom
@@ -36,6 +36,16 @@
   kDefault,
 };
 
+// The page sizes that can be used to perform a scan.
+enum PageSize {
+  // ISO A4 (210 x 297 mm).
+  kIsoA4,
+  // NA Letter (216 x 279 mm).
+  kNaLetter,
+  // The page size resulting from scanning the scanner's entire scannable area.
+  kMax,
+};
+
 // The source from which a scan can be obtained.
 struct ScanSource {
   // The type of this source.
@@ -43,6 +53,8 @@
   // The name of this source. Source names are unique to each SANE backend and
   // are required to perform scans.
   string name;
+  // The page sizes supported by this source.
+  array<PageSize> page_sizes;
 };
 
 // The capabilities a scanner supports.
diff --git a/chromeos/crosapi/mojom/crosapi.mojom b/chromeos/crosapi/mojom/crosapi.mojom
index 63589d1f..14907af 100644
--- a/chromeos/crosapi/mojom/crosapi.mojom
+++ b/chromeos/crosapi/mojom/crosapi.mojom
@@ -125,9 +125,9 @@
   [MinVersion=1]
   uint32 ash_chrome_service_version@0;
 
-  // Whether |ash_metrics_enabled| has a value. See struct comment.
+  // Deprecated in M88. |ash_metrics_enabled| always has a value.
   [MinVersion=2]
-  bool ash_metrics_enabled_has_value@1;
+  bool deprecated_ash_metrics_enabled_has_value@1;
 
   // Whether metrics are enabled in ash-chrome. On lacros first run we inherit
   // metrics consent from ash, because on Chrome OS metrics consent is chosen
diff --git a/chromeos/dbus/attestation/attestation_client.cc b/chromeos/dbus/attestation/attestation_client.cc
index 3987ba5a..cb13517 100644
--- a/chromeos/dbus/attestation/attestation_client.cc
+++ b/chromeos/dbus/attestation/attestation_client.cc
@@ -9,6 +9,7 @@
 #include <google/protobuf/message_lite.h>
 
 #include "base/bind.h"
+#include "base/check_op.h"
 #include "base/location.h"
 #include "base/logging.h"
 #include "base/memory/weak_ptr.h"
@@ -311,4 +312,18 @@
   return g_instance;
 }
 
+// static
+bool AttestationClient::IsAttestationPrepared(
+    const ::attestation::GetEnrollmentPreparationsReply& reply) {
+  if (reply.status() != ::attestation::STATUS_SUCCESS) {
+    return false;
+  }
+  for (const auto& preparation : reply.enrollment_preparations()) {
+    if (preparation.second) {
+      return true;
+    }
+  }
+  return false;
+}
+
 }  // namespace chromeos
diff --git a/chromeos/dbus/attestation/attestation_client.h b/chromeos/dbus/attestation/attestation_client.h
index 63d796e..cb95c72 100644
--- a/chromeos/dbus/attestation/attestation_client.h
+++ b/chromeos/dbus/attestation/attestation_client.h
@@ -84,6 +84,12 @@
     // the |sequence| one-by-one until all the elements are consumed.
     virtual void ConfigureEnrollmentPreparationsSequence(
         std::deque<bool> sequence) = 0;
+    // Injects a bad status to `GetEnrollmentPreparations()` calls. By design,
+    // this only accepts bad status so |STATUS_SUCCESS| is seen as an illegal
+    // input and abort the program. To recover the fake behavior to successful
+    // calls, call ConfigureEnrollmentPreparations(Sequence)?.
+    virtual void ConfigureEnrollmentPreparationsStatus(
+        ::attestation::AttestationStatus status) = 0;
 
     // Allowlists |request| so the certificate requests that comes in afterwards
     // will get a fake certificate. if any alias of |request| has been
@@ -110,6 +116,11 @@
   // Returns the global instance which may be null if not initialized.
   static AttestationClient* Get();
 
+  // Checks if |reply| indicates the attestation service is prepared with any
+  // ACA.
+  static bool IsAttestationPrepared(
+      const ::attestation::GetEnrollmentPreparationsReply& reply);
+
   // Attestation daemon D-Bus method calls. See org.chromium.Attestation.xml and
   // the corresponding protobuf definitions in Chromium OS code for the
   // documentation of the methods and request/ messages.
diff --git a/chromeos/dbus/attestation/fake_attestation_client.cc b/chromeos/dbus/attestation/fake_attestation_client.cc
index cae2b9e..3e5a2f6 100644
--- a/chromeos/dbus/attestation/fake_attestation_client.cc
+++ b/chromeos/dbus/attestation/fake_attestation_client.cc
@@ -99,17 +99,31 @@
 void FakeAttestationClient::GetEnrollmentPreparations(
     const ::attestation::GetEnrollmentPreparationsRequest& request,
     GetEnrollmentPreparationsCallback callback) {
-  bool is_prepared = is_prepared_;
-  // Override the state if there is a customized sequence.
-  if (!preparation_sequences_.empty()) {
-    is_prepared = preparation_sequences_.front();
-    preparation_sequences_.pop_front();
+  ::attestation::GetEnrollmentPreparationsReply reply;
+  reply.set_status(preparations_status_);
+
+  if (reply.status() == ::attestation::STATUS_SUCCESS) {
+    bool is_prepared = is_prepared_;
+    // Override the state if there is a customized sequence.
+    if (!preparation_sequences_.empty()) {
+      is_prepared = preparation_sequences_.front();
+      preparation_sequences_.pop_front();
+    }
+    if (is_prepared) {
+      std::vector<::attestation::ACAType> prepared_types;
+      // As we do in the attestation service, if the ACA type is not specified,
+      // returns the statuses with all the possible ACA types.
+      if (request.has_aca_type()) {
+        prepared_types = {request.aca_type()};
+      } else {
+        prepared_types = {::attestation::DEFAULT_ACA, ::attestation::TEST_ACA};
+      }
+      for (const auto& type : prepared_types) {
+        (*reply.mutable_enrollment_preparations())[type] = true;
+      }
+    }
   }
 
-  ::attestation::GetEnrollmentPreparationsReply reply;
-  if (is_prepared) {
-    (*reply.mutable_enrollment_preparations())[request.aca_type()] = true;
-  }
   PostProtoResponse(std::move(callback), reply);
 }
 
@@ -226,14 +240,22 @@
 }
 
 void FakeAttestationClient::ConfigureEnrollmentPreparations(bool is_prepared) {
+  preparations_status_ = ::attestation::STATUS_SUCCESS;
   is_prepared_ = is_prepared;
 }
 
 void FakeAttestationClient::ConfigureEnrollmentPreparationsSequence(
     std::deque<bool> sequence) {
+  preparations_status_ = ::attestation::STATUS_SUCCESS;
   preparation_sequences_ = std::move(sequence);
 }
 
+void FakeAttestationClient::ConfigureEnrollmentPreparationsStatus(
+    ::attestation::AttestationStatus status) {
+  CHECK_NE(status, ::attestation::STATUS_SUCCESS);
+  preparations_status_ = status;
+}
+
 void FakeAttestationClient::AllowlistCertificateRequest(
     const ::attestation::GetCertificateRequest& request) {
   for (const auto& req : allowlisted_requests_) {
diff --git a/chromeos/dbus/attestation/fake_attestation_client.h b/chromeos/dbus/attestation/fake_attestation_client.h
index bb2748e..1c59a89 100644
--- a/chromeos/dbus/attestation/fake_attestation_client.h
+++ b/chromeos/dbus/attestation/fake_attestation_client.h
@@ -95,12 +95,16 @@
   void ConfigureEnrollmentPreparations(bool is_prepared) override;
   void ConfigureEnrollmentPreparationsSequence(
       std::deque<bool> sequence) override;
+  void ConfigureEnrollmentPreparationsStatus(
+      ::attestation::AttestationStatus status) override;
   void AllowlistCertificateRequest(
       const ::attestation::GetCertificateRequest& request) override;
 
   AttestationClient::TestInterface* GetTestInterface() override;
 
  private:
+  ::attestation::AttestationStatus preparations_status_ =
+      ::attestation::STATUS_SUCCESS;
   bool is_prepared_ = true;
   std::deque<bool> preparation_sequences_;
 
diff --git a/chromeos/strings/chromeos_strings_ar.xtb b/chromeos/strings/chromeos_strings_ar.xtb
index 80d24c8..c13bc3c5 100644
--- a/chromeos/strings/chromeos_strings_ar.xtb
+++ b/chromeos/strings/chromeos_strings_ar.xtb
@@ -3,6 +3,7 @@
 <translationbundle lang="ar">
 <translation id="1018656279737460067">تم الإلغاء</translation>
 <translation id="1195447618553298278">خطأ  غير محدّد.</translation>
+<translation id="1330426557709298164">JPG</translation>
 <translation id="1413240736185167732">تعذَّرت الطباعة - خلل في عامل تصفية الطباعة</translation>
 <translation id="1468664791493211953">العروض</translation>
 <translation id="1478594628797167447">الماسح الضوئي</translation>
@@ -46,6 +47,7 @@
 <translation id="4227825898293920515">تنتهي صلاحية كلمة المرور في <ph name="TIME" /></translation>
 <translation id="4238516577297848345">ما من مهام قيد الطباعة.</translation>
 <translation id="4297501883039923494">توقّفت الطابعة - خطأ غير معروف</translation>
+<translation id="4382484599443659549">PDF</translation>
 <translation id="4429881212383817840">‏ستنتهي صلاحية تذكرة Kerberos قريبًا</translation>
 <translation id="445059817448385655">كلمة المرور القديمة</translation>
 <translation id="4627232916386272576">‏<ph name="DOCUMENT_TITLE" />، <ph name="PRINTER_NAME" />، <ph name="CREATION_TIME" />، <ph name="PRINTED_PAGE_NUMBER" /> من أصل <ph name="TOTAL_PAGE_NUMBER" />. يمكنك الضغط على enter لإلغاء مهمة الطباعة.</translation>
@@ -73,6 +75,7 @@
 <translation id="6058625436358447366">يُرجى إدخال كلمتي المرور القديمة والجديدة لإنهاء الإجراء.</translation>
 <translation id="6106186594183574873">يُرجى إدخال كلمة المرور القديمة لإنهاء الإجراء.</translation>
 <translation id="6146993107019042706">يُرجى إدخال كلمة مرور جديدة لإنهاء الإجراء.</translation>
+<translation id="6147514244879357420">PNG</translation>
 <translation id="636850387210749493">التسجيل في المؤسسة</translation>
 <translation id="649050271426829538">توقّفت الطابعة - الورق مكدّس</translation>
 <translation id="6517239166834772319">استكشاف</translation>
diff --git a/chromeos/strings/chromeos_strings_az.xtb b/chromeos/strings/chromeos_strings_az.xtb
index 1f8e3e63..45f7140 100644
--- a/chromeos/strings/chromeos_strings_az.xtb
+++ b/chromeos/strings/chromeos_strings_az.xtb
@@ -3,6 +3,7 @@
 <translationbundle lang="az">
 <translation id="1018656279737460067">Ləğv edilib</translation>
 <translation id="1195447618553298278">Naməlum xəta.</translation>
+<translation id="1330426557709298164">JPG</translation>
 <translation id="1413240736185167732">Alınmadı - Filtr xətası</translation>
 <translation id="1468664791493211953">Təkliflər</translation>
 <translation id="1478594628797167447">Skaner</translation>
@@ -46,6 +47,7 @@
 <translation id="4227825898293920515">Parolun vaxtı <ph name="TIME" /> ərzində başa çatır</translation>
 <translation id="4238516577297848345">Hazırda davam edən çap işləri yoxdur</translation>
 <translation id="4297501883039923494">Dayanıb - Naməlum xəta</translation>
+<translation id="4382484599443659549">PDF</translation>
 <translation id="4429881212383817840">Kerberos biletinin vaxtı tezliklə başa çatacaq</translation>
 <translation id="445059817448385655">Köhnə parol</translation>
 <translation id="4627232916386272576"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="PRINTED_PAGE_NUMBER" />/<ph name="TOTAL_PAGE_NUMBER" />. Çap işini ləğv etmək üçün Enter düyməsinə basın.</translation>
@@ -72,6 +74,7 @@
 <translation id="6058625436358447366">Tamamlamaq üçün yeni və köhnə parolları yazın</translation>
 <translation id="6106186594183574873">Tamamlamaq üçün köhnə parolu yazın</translation>
 <translation id="6146993107019042706">Tamamlamaq üçün yeni parolu daxil edin</translation>
+<translation id="6147514244879357420">PNG</translation>
 <translation id="636850387210749493">Sahibkarlıq qeydiyyatı</translation>
 <translation id="649050271426829538">Dayanıb - Kağız ilişib</translation>
 <translation id="6517239166834772319">Araşdırın</translation>
@@ -81,6 +84,7 @@
 <translation id="6747215703636344499">Dayanıb - Çıxış doludur</translation>
 <translation id="7162487448488904999">Qalereya</translation>
 <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation>
+<translation id="7359657277149375382">Fayl növü</translation>
 <translation id="7561454561030345039">Bu əməliyyat admininiz tərəfindən idarə olunur</translation>
 <translation id="7658239707568436148">Ləğv edin</translation>
 <translation id="7690294790491645610">Yeni parolu təsdiq edin</translation>
diff --git a/chromeos/strings/chromeos_strings_be.xtb b/chromeos/strings/chromeos_strings_be.xtb
index c806eae..2d76693 100644
--- a/chromeos/strings/chromeos_strings_be.xtb
+++ b/chromeos/strings/chromeos_strings_be.xtb
@@ -3,6 +3,7 @@
 <translationbundle lang="be">
 <translation id="1018656279737460067">Скасавана</translation>
 <translation id="1195447618553298278">Невядомая памылка.</translation>
+<translation id="1330426557709298164">JPG</translation>
 <translation id="1413240736185167732">Збой: фільтр не працуе</translation>
 <translation id="1468664791493211953">Прапановы</translation>
 <translation id="1478594628797167447">Сканер</translation>
@@ -46,6 +47,7 @@
 <translation id="4227825898293920515">Тэрмін дзеяння пароля заканчваецца праз <ph name="TIME" /></translation>
 <translation id="4238516577297848345">Няма дзеючых заданняў друку</translation>
 <translation id="4297501883039923494">Спынена: невядомая памылка</translation>
+<translation id="4382484599443659549">PDF</translation>
 <translation id="4429881212383817840">Дзеянне білета Kerberos хутка скончыцца</translation>
 <translation id="445059817448385655">Стары пароль</translation>
 <translation id="4627232916386272576"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="PRINTED_PAGE_NUMBER" /> з <ph name="TOTAL_PAGE_NUMBER" />. Каб скасаваць заданне друку, націсніце Enter.</translation>
@@ -73,6 +75,7 @@
 <translation id="6058625436358447366">Каб закончыць, увядзіце стары і новы паролі</translation>
 <translation id="6106186594183574873">Каб закончыць, увядзіце стары пароль</translation>
 <translation id="6146993107019042706">Каб закончыць, увядзіце новы пароль</translation>
+<translation id="6147514244879357420">PNG</translation>
 <translation id="636850387210749493">Рэгістрацыя для арганізацый</translation>
 <translation id="649050271426829538">Спынена: захрасла папера</translation>
 <translation id="6517239166834772319">Агляд</translation>
@@ -82,6 +85,7 @@
 <translation id="6747215703636344499">Спынена: выхадны латок запоўнены</translation>
 <translation id="7162487448488904999">Галерэя</translation>
 <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation>
+<translation id="7359657277149375382">Тып файла</translation>
 <translation id="7561454561030345039">Гэтым дзеяннем кіруе адміністратар</translation>
 <translation id="7658239707568436148">Скасаваць</translation>
 <translation id="7690294790491645610">Пацвердзіце новы пароль</translation>
diff --git a/chromeos/strings/chromeos_strings_bg.xtb b/chromeos/strings/chromeos_strings_bg.xtb
index 94145a63..89c2f45 100644
--- a/chromeos/strings/chromeos_strings_bg.xtb
+++ b/chromeos/strings/chromeos_strings_bg.xtb
@@ -3,6 +3,7 @@
 <translationbundle lang="bg">
 <translation id="1018656279737460067">Отказано</translation>
 <translation id="1195447618553298278">Неизвестна грешка.</translation>
+<translation id="1330426557709298164">JPG</translation>
 <translation id="1413240736185167732">Неуспешно – проблем с филтъра</translation>
 <translation id="1468664791493211953">Оферти</translation>
 <translation id="1478594628797167447">Скенер</translation>
@@ -46,6 +47,7 @@
 <translation id="4227825898293920515">Паролата изтича след <ph name="TIME" /></translation>
 <translation id="4238516577297848345">Няма активни задания за отпечатване</translation>
 <translation id="4297501883039923494">Спряло – неизвестна грешка</translation>
+<translation id="4382484599443659549">PDF</translation>
 <translation id="4429881212383817840">Пропускът за Kerberos изтича скоро</translation>
 <translation id="445059817448385655">Стара парола</translation>
 <translation id="4627232916386272576"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="PRINTED_PAGE_NUMBER" /> от <ph name="TOTAL_PAGE_NUMBER" />. Натиснете Enter, за да откажете заданието за отпечатване</translation>
@@ -73,6 +75,7 @@
 <translation id="6058625436358447366">За да завършите процеса, въведете старата и новата си парола</translation>
 <translation id="6106186594183574873">За да завършите процеса, въведете старата си парола</translation>
 <translation id="6146993107019042706">За да завършите процеса, въведете новата си парола</translation>
+<translation id="6147514244879357420">PNG</translation>
 <translation id="636850387210749493">Корпоративно записване</translation>
 <translation id="649050271426829538">Спряло – заседнала хартия</translation>
 <translation id="6517239166834772319">Explore</translation>
diff --git a/chromeos/strings/chromeos_strings_cs.xtb b/chromeos/strings/chromeos_strings_cs.xtb
index adbbb72..2e4524c 100644
--- a/chromeos/strings/chromeos_strings_cs.xtb
+++ b/chromeos/strings/chromeos_strings_cs.xtb
@@ -3,6 +3,7 @@
 <translationbundle lang="cs">
 <translation id="1018656279737460067">Zrušeno</translation>
 <translation id="1195447618553298278">Neznámá chyba.</translation>
+<translation id="1330426557709298164">JPG</translation>
 <translation id="1413240736185167732">Tisk selhal – selhal filtr</translation>
 <translation id="1468664791493211953">Nabídky</translation>
 <translation id="1478594628797167447">Skener</translation>
@@ -46,6 +47,7 @@
 <translation id="4227825898293920515">Platnost hesla vyprší za <ph name="TIME" /></translation>
 <translation id="4238516577297848345">Nemáte žádné probíhající tiskové úlohy</translation>
 <translation id="4297501883039923494">Zastaveno – neznámá chyba</translation>
+<translation id="4382484599443659549">PDF</translation>
 <translation id="4429881212383817840">Platnost lístku Kerberos brzy vyprší</translation>
 <translation id="445059817448385655">Staré heslo</translation>
 <translation id="4627232916386272576"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="PRINTED_PAGE_NUMBER" /> z <ph name="TOTAL_PAGE_NUMBER" />. Tiskovou úlohu zrušíte stisknutím klávesy Enter.</translation>
@@ -73,6 +75,7 @@
 <translation id="6058625436358447366">Chcete-li akci dokončit, zadejte své staré a nové heslo</translation>
 <translation id="6106186594183574873">Chcete-li akci dokončit, zadejte své staré heslo</translation>
 <translation id="6146993107019042706">Chcete-li akci dokončit, zadejte své nové heslo</translation>
+<translation id="6147514244879357420">PNG</translation>
 <translation id="636850387210749493">Registrace podniku</translation>
 <translation id="649050271426829538">Zastaveno – zasekl se papír</translation>
 <translation id="6517239166834772319">Explore</translation>
diff --git a/chromeos/strings/chromeos_strings_da.xtb b/chromeos/strings/chromeos_strings_da.xtb
index cecd1dd..fbab89c 100644
--- a/chromeos/strings/chromeos_strings_da.xtb
+++ b/chromeos/strings/chromeos_strings_da.xtb
@@ -3,6 +3,7 @@
 <translationbundle lang="da">
 <translation id="1018656279737460067">Annulleret</translation>
 <translation id="1195447618553298278">Ukendt fejl.</translation>
+<translation id="1330426557709298164">JPG</translation>
 <translation id="1413240736185167732">Handlingen mislykkedes – Filterfejl</translation>
 <translation id="1468664791493211953">Tilbud</translation>
 <translation id="1478594628797167447">Scanner</translation>
@@ -46,6 +47,7 @@
 <translation id="4227825898293920515">Adgangskoden udløber om <ph name="TIME" /></translation>
 <translation id="4238516577297848345">Ingen udskriftsjobs er i gang</translation>
 <translation id="4297501883039923494">Stoppet – Ukendt fejl</translation>
+<translation id="4382484599443659549">PDF</translation>
 <translation id="4429881212383817840">Din Kerberos-billet er ved at udløbe</translation>
 <translation id="445059817448385655">Gammel adgangskode</translation>
 <translation id="4627232916386272576"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="PRINTED_PAGE_NUMBER" /> ud af <ph name="TOTAL_PAGE_NUMBER" />. Tryk på Enter for at annullere udskriftsjobbet.</translation>
@@ -72,6 +74,7 @@
 <translation id="6058625436358447366">Angiv din gamle og nye adgangskode for at afslutte</translation>
 <translation id="6106186594183574873">Angiv din gamle adgangskode for at afslutte</translation>
 <translation id="6146993107019042706">Angiv din nye adgangskode for at afslutte</translation>
+<translation id="6147514244879357420">PNG</translation>
 <translation id="636850387210749493">Tilmelding af virksomhed</translation>
 <translation id="649050271426829538">Stoppet – Papirstop</translation>
 <translation id="6517239166834772319">Udforsk</translation>
diff --git a/chromeos/strings/chromeos_strings_el.xtb b/chromeos/strings/chromeos_strings_el.xtb
index b02da08..cf4b609 100644
--- a/chromeos/strings/chromeos_strings_el.xtb
+++ b/chromeos/strings/chromeos_strings_el.xtb
@@ -3,6 +3,7 @@
 <translationbundle lang="el">
 <translation id="1018656279737460067">Ακυρώθηκε</translation>
 <translation id="1195447618553298278">Άγνωστο σφάλμα.</translation>
+<translation id="1330426557709298164">JPG</translation>
 <translation id="1413240736185167732">Σφάλμα - Πρόβλημα φίλτρου</translation>
 <translation id="1468664791493211953">Προσφορές</translation>
 <translation id="1478594628797167447">Σαρωτής</translation>
@@ -46,6 +47,7 @@
 <translation id="4227825898293920515">Ο κωδικός πρόσβασης λήγει σε <ph name="TIME" /></translation>
 <translation id="4238516577297848345">Δεν υπάρχουν εργασίες εκτύπωσης σε εξέλιξη</translation>
 <translation id="4297501883039923494">Διακοπή - Άγνωστο σφάλμα</translation>
+<translation id="4382484599443659549">PDF</translation>
 <translation id="4429881212383817840">Το εισιτήριο Kerberos θα λήξει σύντομα</translation>
 <translation id="445059817448385655">Παλιός κωδικός πρόσβασης</translation>
 <translation id="4627232916386272576"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="PRINTED_PAGE_NUMBER" /> από <ph name="TOTAL_PAGE_NUMBER" />. Πατήστε enter, για να ακυρώσετε την εργασία εκτύπωσης.</translation>
@@ -73,6 +75,7 @@
 <translation id="6058625436358447366">Για να τελειώσετε, εισαγάγετε τον παλιό και τον νέο κωδικό πρόσβασης</translation>
 <translation id="6106186594183574873">Για να τελειώσετε, εισαγάγετε τον παλιό κωδικό πρόσβασης</translation>
 <translation id="6146993107019042706">Για να ολοκληρώσετε, εισαγάγετε τον νέο κωδικό πρόσβασης</translation>
+<translation id="6147514244879357420">PNG</translation>
 <translation id="636850387210749493">Εγγραφή επιχείρησης</translation>
 <translation id="649050271426829538">Διακοπή - Εμπλοκή χαρτιού</translation>
 <translation id="6517239166834772319">Εξερεύνηση</translation>
diff --git a/chromeos/strings/chromeos_strings_eu.xtb b/chromeos/strings/chromeos_strings_eu.xtb
index ec34c67f..6e4fafd 100644
--- a/chromeos/strings/chromeos_strings_eu.xtb
+++ b/chromeos/strings/chromeos_strings_eu.xtb
@@ -3,6 +3,7 @@
 <translationbundle lang="eu">
 <translation id="1018656279737460067">Bertan behera utzi da</translation>
 <translation id="1195447618553298278">Errore ezezaguna.</translation>
+<translation id="1330426557709298164">JPG</translation>
 <translation id="1413240736185167732">Hutsegitea - Iragazkiak huts egin du</translation>
 <translation id="1468664791493211953">Eskaintzak</translation>
 <translation id="1478594628797167447">Eskanerra</translation>
@@ -46,6 +47,7 @@
 <translation id="4227825898293920515"><ph name="TIME" /> barru iraungiko da pasahitza</translation>
 <translation id="4238516577297848345">Ez dago inprimatze-lanik abian</translation>
 <translation id="4297501883039923494">Geldituta: errore ezezaguna</translation>
+<translation id="4382484599443659549">PDF</translation>
 <translation id="4429881212383817840">Laster iraungiko da Kerberos-eko zerbitzu-eskaera</translation>
 <translation id="445059817448385655">Pasahitz zaharra</translation>
 <translation id="4627232916386272576"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" /> (<ph name="CREATION_TIME" />) - <ph name="PRINTED_PAGE_NUMBER" />/<ph name="TOTAL_PAGE_NUMBER" /> orri Sakatu Sartu inprimatze-lana bertan behera uzteko.</translation>
@@ -73,6 +75,7 @@
 <translation id="6058625436358447366">Amaitzeko, idatzi pasahitz zaharra eta berria</translation>
 <translation id="6106186594183574873">Amaitzeko, idatzi pasahitz zaharra</translation>
 <translation id="6146993107019042706">Amaitzeko, idatzi pasahitz berria</translation>
+<translation id="6147514244879357420">PNG</translation>
 <translation id="636850387210749493">Erregistratu erakundean</translation>
 <translation id="649050271426829538">Geldituta: papera trabatuta dago</translation>
 <translation id="6517239166834772319">Arakatu</translation>
@@ -82,6 +85,7 @@
 <translation id="6747215703636344499">Geldituta: irteera-erretilua beteta dago</translation>
 <translation id="7162487448488904999">Galeria</translation>
 <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation>
+<translation id="7359657277149375382">Fitxategi mota</translation>
 <translation id="7561454561030345039">Administratzaileak kudeatzen du ekintza hau</translation>
 <translation id="7658239707568436148">Utzi</translation>
 <translation id="7690294790491645610">Berretsi pasahitz berria</translation>
diff --git a/chromeos/strings/chromeos_strings_fa.xtb b/chromeos/strings/chromeos_strings_fa.xtb
index 0fc557d7..54460412 100644
--- a/chromeos/strings/chromeos_strings_fa.xtb
+++ b/chromeos/strings/chromeos_strings_fa.xtb
@@ -3,6 +3,7 @@
 <translationbundle lang="fa">
 <translation id="1018656279737460067">لغو شده</translation>
 <translation id="1195447618553298278">خطای ناشناس.</translation>
+<translation id="1330426557709298164">JPG</translation>
 <translation id="1413240736185167732">انجام نشد - فیلتر کار نکرد</translation>
 <translation id="1468664791493211953">پیشنهادها</translation>
 <translation id="1478594628797167447">اسکنر</translation>
@@ -46,6 +47,7 @@
 <translation id="4227825898293920515">گذرواژه <ph name="TIME" /> دیگر منقضی می‌شود</translation>
 <translation id="4238516577297848345">هیچ کار چاپی درحال انجام نیست</translation>
 <translation id="4297501883039923494">متوقف شد - خطای نامشخص</translation>
+<translation id="4382484599443659549">PDF</translation>
 <translation id="4429881212383817840">‏بلیت Kerberos به‌زودی منقضی می‌شود</translation>
 <translation id="445059817448385655">گذرواژه قدیمی</translation>
 <translation id="4627232916386272576">‏<ph name="DOCUMENT_TITLE" />، <ph name="PRINTER_NAME" />، <ph name="CREATION_TIME" />، <ph name="PRINTED_PAGE_NUMBER" /> از مجموع <ph name="TOTAL_PAGE_NUMBER" />. برای لغو کار چاپ، Enter را فشار دهید.</translation>
@@ -73,6 +75,7 @@
 <translation id="6058625436358447366">برای تکمیل کار، گذرواژه‌های قدیمی و جدیدتان را وارد کنید</translation>
 <translation id="6106186594183574873">برای تکمیل کار، گذرواژه قدیمی‌تان را وارد کنید</translation>
 <translation id="6146993107019042706">برای تکمیل کار،‌ گذرواژه جدیدتان را وارد کنید</translation>
+<translation id="6147514244879357420">PNG</translation>
 <translation id="636850387210749493">ثبت‌نام شرکت</translation>
 <translation id="649050271426829538">متوقف شد - کاغذ گیر کرده است</translation>
 <translation id="6517239166834772319">کاوش</translation>
diff --git a/chromeos/strings/chromeos_strings_fi.xtb b/chromeos/strings/chromeos_strings_fi.xtb
index 1ceb324..8b7444b 100644
--- a/chromeos/strings/chromeos_strings_fi.xtb
+++ b/chromeos/strings/chromeos_strings_fi.xtb
@@ -3,6 +3,7 @@
 <translationbundle lang="fi">
 <translation id="1018656279737460067">Peruutettu</translation>
 <translation id="1195447618553298278">Tuntematon virhe.</translation>
+<translation id="1330426557709298164">JPG</translation>
 <translation id="1413240736185167732">Epäonnistui – Suodatin epäkunnossa</translation>
 <translation id="1468664791493211953">Tarjoukset</translation>
 <translation id="1478594628797167447">Skanneri</translation>
@@ -46,6 +47,7 @@
 <translation id="4227825898293920515">Salasana vanhenee: <ph name="TIME" /></translation>
 <translation id="4238516577297848345">Ei tulostustöitä käynnissä</translation>
 <translation id="4297501883039923494">Pysähtynyt – Tuntematon virhe</translation>
+<translation id="4382484599443659549">PDF</translation>
 <translation id="4429881212383817840">Kerberos-tukipyyntö vanhenee pian</translation>
 <translation id="445059817448385655">Vanha salasana</translation>
 <translation id="4627232916386272576"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="PRINTED_PAGE_NUMBER" />/<ph name="TOTAL_PAGE_NUMBER" /> Peruuta tulostustyö painamalla Enter.</translation>
@@ -73,6 +75,7 @@
 <translation id="6058625436358447366">Lisää lopuksi vanha ja uusi salasana</translation>
 <translation id="6106186594183574873">Lisää lopuksi vanha salasana</translation>
 <translation id="6146993107019042706">Lisää lopuksi uusi salasana</translation>
+<translation id="6147514244879357420">PNG</translation>
 <translation id="636850387210749493">Yritysversion käyttöönotto</translation>
 <translation id="649050271426829538">Pysähtynyt – Paperitukos</translation>
 <translation id="6517239166834772319">Explore</translation>
diff --git a/chromeos/strings/chromeos_strings_fil.xtb b/chromeos/strings/chromeos_strings_fil.xtb
index 346cc4ed..cf150a13 100644
--- a/chromeos/strings/chromeos_strings_fil.xtb
+++ b/chromeos/strings/chromeos_strings_fil.xtb
@@ -3,6 +3,7 @@
 <translationbundle lang="fil">
 <translation id="1018656279737460067">Nakansela</translation>
 <translation id="1195447618553298278">Hindi kilalang error.</translation>
+<translation id="1330426557709298164">JPG</translation>
 <translation id="1413240736185167732">Hindi na-print - Hindi gumana ang filter</translation>
 <translation id="1468664791493211953">Mga Alok</translation>
 <translation id="1478594628797167447">Scanner</translation>
@@ -46,6 +47,7 @@
 <translation id="4227825898293920515">Mag-e-expire ang password sa loob ng <ph name="TIME" /></translation>
 <translation id="4238516577297848345">Walang kasalukuyang pag-print</translation>
 <translation id="4297501883039923494">Huminto - Hindi kilalang error</translation>
+<translation id="4382484599443659549">PDF</translation>
 <translation id="4429881212383817840">Mag-e-expire na ang ticket ng Kerberos</translation>
 <translation id="445059817448385655">Lumang password</translation>
 <translation id="4627232916386272576"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="PRINTED_PAGE_NUMBER" /> sa <ph name="TOTAL_PAGE_NUMBER" />. Pindutin ang enter para kanselahin ang pag-print.</translation>
@@ -73,6 +75,7 @@
 <translation id="6058625436358447366">Para tapusin, ilagay ang iyong luma at bagong password</translation>
 <translation id="6106186594183574873">Para tapusin, ilagay ang iyong lumang password</translation>
 <translation id="6146993107019042706">Para tapusin, ilagay ang bago mong password</translation>
+<translation id="6147514244879357420">PNG</translation>
 <translation id="636850387210749493">Pagpapatala ng negosyo</translation>
 <translation id="649050271426829538">Huminto - Nagka-paper jam</translation>
 <translation id="6517239166834772319">Explore</translation>
diff --git a/chromeos/strings/chromeos_strings_fr-CA.xtb b/chromeos/strings/chromeos_strings_fr-CA.xtb
index 02d8aa3..14fd97fe 100644
--- a/chromeos/strings/chromeos_strings_fr-CA.xtb
+++ b/chromeos/strings/chromeos_strings_fr-CA.xtb
@@ -3,6 +3,7 @@
 <translationbundle lang="fr-CA">
 <translation id="1018656279737460067">Annulé</translation>
 <translation id="1195447618553298278">Erreur inconnue.</translation>
+<translation id="1330426557709298164">JPG</translation>
 <translation id="1413240736185167732">Échec : problème de filtre</translation>
 <translation id="1468664791493211953">Offres</translation>
 <translation id="1478594628797167447">Numériseur</translation>
@@ -46,6 +47,7 @@
 <translation id="4227825898293920515">Le mot de passe expire dans <ph name="TIME" /></translation>
 <translation id="4238516577297848345">Aucune tâche d'impression en cours</translation>
 <translation id="4297501883039923494">Tâche arrêtée : erreur inconnue</translation>
+<translation id="4382484599443659549">PDF</translation>
 <translation id="4429881212383817840">Le ticket Kerberos expire bientôt</translation>
 <translation id="445059817448385655">Ancien mot de passe</translation>
 <translation id="4627232916386272576"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="PRINTED_PAGE_NUMBER" /> sur <ph name="TOTAL_PAGE_NUMBER" />. Appuyez sur Entrée pour annuler la tâche d'impression.</translation>
@@ -73,6 +75,7 @@
 <translation id="6058625436358447366">Pour terminer cette opération, entrez votre ancien mot de passe et le nouveau</translation>
 <translation id="6106186594183574873">Pour terminer cette opération, entrez votre ancien mot de passe</translation>
 <translation id="6146993107019042706">Pour terminer cette opération, entrez votre nouveau mot de passe</translation>
+<translation id="6147514244879357420">PNG</translation>
 <translation id="636850387210749493">Inscription d'entreprise</translation>
 <translation id="649050271426829538">Tâche arrêtée : bourrage de papier</translation>
 <translation id="6517239166834772319">Explorer</translation>
@@ -82,6 +85,7 @@
 <translation id="6747215703636344499">Tâche arrêtée : le plateau de sortie est plein</translation>
 <translation id="7162487448488904999">Galerie</translation>
 <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" /> sur <ph name="TOTAL_PAGES_NUMBER" /></translation>
+<translation id="7359657277149375382">Type de fichier</translation>
 <translation id="7561454561030345039">C'est votre administrateur qui gère cette action</translation>
 <translation id="7658239707568436148">Annuler</translation>
 <translation id="7690294790491645610">Confirmez le nouveau mot de passe</translation>
diff --git a/chromeos/strings/chromeos_strings_hi.xtb b/chromeos/strings/chromeos_strings_hi.xtb
index 1b5cd28d..93d4b5f 100644
--- a/chromeos/strings/chromeos_strings_hi.xtb
+++ b/chromeos/strings/chromeos_strings_hi.xtb
@@ -3,6 +3,7 @@
 <translationbundle lang="hi">
 <translation id="1018656279737460067">रद्द</translation>
 <translation id="1195447618553298278">अज्ञात गड़बड़ी.</translation>
+<translation id="1330426557709298164">JPG</translation>
 <translation id="1413240736185167732">प्रिंट नहीं हो पाया - फ़िल्टर में कोई गड़बड़ी हुई</translation>
 <translation id="1468664791493211953">ऑफ़र</translation>
 <translation id="1478594628797167447">स्कैनर</translation>
@@ -46,6 +47,7 @@
 <translation id="4227825898293920515"><ph name="TIME" /> में पासवर्ड की समयसीमा खत्म हो जाएगी</translation>
 <translation id="4238516577297848345">फ़िलहाल, कुछ प्रिंट नहीं हो रहा</translation>
 <translation id="4297501883039923494">बंद हो गया - अज्ञात गड़बड़ी</translation>
+<translation id="4382484599443659549">पीडीएफ़</translation>
 <translation id="4429881212383817840">Kerberos टिकट की समयसीमा जल्द ही खत्म होने वाली है</translation>
 <translation id="445059817448385655">पुराना पासवर्ड</translation>
 <translation id="4627232916386272576"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="TOTAL_PAGE_NUMBER" /> में से <ph name="PRINTED_PAGE_NUMBER" />. प्रिंट का काम बंद करने के लिए enter का बटन दबाएं.</translation>
@@ -73,6 +75,7 @@
 <translation id="6058625436358447366">पूरा करने के लिए, पुराना और नया पासवर्ड डालें</translation>
 <translation id="6106186594183574873">पूरा करने के लिए, पुराना पासवर्ड डालें</translation>
 <translation id="6146993107019042706">खत्म करने के लिए, नया पासवर्ड डालें</translation>
+<translation id="6147514244879357420">PNG</translation>
 <translation id="636850387210749493">एंटरप्राइज़ नामांकन</translation>
 <translation id="649050271426829538">बंद हो गया - काग़ज़ फंसा है</translation>
 <translation id="6517239166834772319">एक्सप्लोर करें</translation>
diff --git a/chromeos/strings/chromeos_strings_hu.xtb b/chromeos/strings/chromeos_strings_hu.xtb
index fdc49cb..ff768fd 100644
--- a/chromeos/strings/chromeos_strings_hu.xtb
+++ b/chromeos/strings/chromeos_strings_hu.xtb
@@ -3,6 +3,7 @@
 <translationbundle lang="hu">
 <translation id="1018656279737460067">Megszakítva</translation>
 <translation id="1195447618553298278">Ismeretlen hiba.</translation>
+<translation id="1330426557709298164">JPG</translation>
 <translation id="1413240736185167732">Sikertelen – Szűrőhiba</translation>
 <translation id="1468664791493211953">Ajánlatok</translation>
 <translation id="1478594628797167447">Szkenner</translation>
@@ -46,6 +47,7 @@
 <translation id="4227825898293920515">A jelszó <ph name="TIME" /> múlva lejár</translation>
 <translation id="4238516577297848345">Nincsenek folyamatban lévő nyomtatási feladatok</translation>
 <translation id="4297501883039923494">Leállt – Ismeretlen hiba</translation>
+<translation id="4382484599443659549">PDF</translation>
 <translation id="4429881212383817840">A Kerberos-jegy hamarosan lejár</translation>
 <translation id="445059817448385655">Régi jelszó</translation>
 <translation id="4627232916386272576"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="PRINTED_PAGE_NUMBER" />. oldal az összesen <ph name="TOTAL_PAGE_NUMBER" /> oldalból A nyomtatási feladat törléséhez nyomja meg az Enter billentyűt.</translation>
@@ -73,6 +75,7 @@
 <translation id="6058625436358447366">A befejezéshez adja meg régi és új jelszavát</translation>
 <translation id="6106186594183574873">A befejezéshez adja meg régi jelszavát</translation>
 <translation id="6146993107019042706">A befejezéshez adja meg új jelszavát</translation>
+<translation id="6147514244879357420">PNG</translation>
 <translation id="636850387210749493">Vállalat rögzítése</translation>
 <translation id="649050271426829538">Leállt – Papírelakadás</translation>
 <translation id="6517239166834772319">Felfedezés</translation>
diff --git a/chromeos/strings/chromeos_strings_hy.xtb b/chromeos/strings/chromeos_strings_hy.xtb
index 6f3675b0..518b739 100644
--- a/chromeos/strings/chromeos_strings_hy.xtb
+++ b/chromeos/strings/chromeos_strings_hy.xtb
@@ -3,6 +3,7 @@
 <translationbundle lang="hy">
 <translation id="1018656279737460067">Չեղյալ են հայտարարվել</translation>
 <translation id="1195447618553298278">Անհայտ սխալ:</translation>
+<translation id="1330426557709298164">JPG</translation>
 <translation id="1413240736185167732">Չհաջողվեց տպել – Զտիչը չաշխատեց</translation>
 <translation id="1468664791493211953">Առաջարկներ</translation>
 <translation id="1478594628797167447">Սկաներ</translation>
@@ -46,6 +47,7 @@
 <translation id="4227825898293920515">Գաղտնաբառի գործողության ժամկետը <ph name="TIME" />ից կսպառվի</translation>
 <translation id="4238516577297848345">Տպելու ընթացիկ առաջադրանքներ չկան</translation>
 <translation id="4297501883039923494">Դադարեցվել է – Անհայտ սխալ</translation>
+<translation id="4382484599443659549">PDF</translation>
 <translation id="4429881212383817840">Kerberos տոմսի գործողության ժամկետը շուտով կսպառվի</translation>
 <translation id="445059817448385655">Հին գաղտնաբառը</translation>
 <translation id="4627232916386272576"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="PRINTED_PAGE_NUMBER" />/<ph name="TOTAL_PAGE_NUMBER" />։ Հպեք Enter՝ տպումը չեղարկելու համար։</translation>
@@ -73,6 +75,7 @@
 <translation id="6058625436358447366">Ավարտելու համար մուտքագրեք ձեր հին և նոր գաղտնաբառերը</translation>
 <translation id="6106186594183574873">Ավարտելու համար մուտքագրեք ձեր հին գաղտնաբառը</translation>
 <translation id="6146993107019042706">Ավարտելու համար մուտքագրեք ձեր նոր գաղտնաբառը</translation>
+<translation id="6147514244879357420">PNG</translation>
 <translation id="636850387210749493">Ձեռնարկության գրանցում</translation>
 <translation id="649050271426829538">Դադարեցվել է – Թղթի խցանում</translation>
 <translation id="6517239166834772319">Հնարավորություններ</translation>
@@ -82,6 +85,7 @@
 <translation id="6747215703636344499">Դադարեցվել է – Ելքային դարակը լցված է</translation>
 <translation id="7162487448488904999">Ցուցասրահ</translation>
 <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation>
+<translation id="7359657277149375382">Ֆայլի տեսակ</translation>
 <translation id="7561454561030345039">Այս գործողությունը կառավարվում է ձեր ադմինիստրատորի կողմից</translation>
 <translation id="7658239707568436148">Չեղարկել</translation>
 <translation id="7690294790491645610">Հաստատեք նոր գաղտնաբառը</translation>
diff --git a/chromeos/strings/chromeos_strings_id.xtb b/chromeos/strings/chromeos_strings_id.xtb
index 214ca106..19653f5 100644
--- a/chromeos/strings/chromeos_strings_id.xtb
+++ b/chromeos/strings/chromeos_strings_id.xtb
@@ -3,6 +3,7 @@
 <translationbundle lang="id">
 <translation id="1018656279737460067">Dibatalkan</translation>
 <translation id="1195447618553298278">Kesalahan tak dikenal.</translation>
+<translation id="1330426557709298164">JPG</translation>
 <translation id="1413240736185167732">Gagal - Filter gagal</translation>
 <translation id="1468664791493211953">Penawaran</translation>
 <translation id="1478594628797167447">Pemindai</translation>
@@ -46,6 +47,7 @@
 <translation id="4227825898293920515">Sandi kedaluwarsa dalam <ph name="TIME" /></translation>
 <translation id="4238516577297848345">Tidak ada tugas pencetakan yang sedang berlangsung</translation>
 <translation id="4297501883039923494">Dihentikan - Error tidak diketahui</translation>
+<translation id="4382484599443659549">PDF</translation>
 <translation id="4429881212383817840">Masa berlaku tiket Kerberos segera berakhir</translation>
 <translation id="445059817448385655">Sandi lama</translation>
 <translation id="4627232916386272576"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="PRINTED_PAGE_NUMBER" /> dari <ph name="TOTAL_PAGE_NUMBER" />. Tekan enter untuk membatalkan tugas pencetakan.</translation>
@@ -73,6 +75,7 @@
 <translation id="6058625436358447366">Untuk menyelesaikan, masukkan sandi yang lama dan baru</translation>
 <translation id="6106186594183574873">Untuk menyelesaikan, masukkan sandi yang lama</translation>
 <translation id="6146993107019042706">Untuk menyelesaikan, masukkan sandi yang baru</translation>
+<translation id="6147514244879357420">PNG</translation>
 <translation id="636850387210749493">Pendaftaran perusahaan</translation>
 <translation id="649050271426829538">Dihentikan - Kertas macet</translation>
 <translation id="6517239166834772319">Jelajahi</translation>
diff --git a/chromeos/strings/chromeos_strings_is.xtb b/chromeos/strings/chromeos_strings_is.xtb
index d08e308..37fa8398 100644
--- a/chromeos/strings/chromeos_strings_is.xtb
+++ b/chromeos/strings/chromeos_strings_is.xtb
@@ -3,6 +3,7 @@
 <translationbundle lang="is">
 <translation id="1018656279737460067">Hætt við</translation>
 <translation id="1195447618553298278">Óþekkt villa.</translation>
+<translation id="1330426557709298164">JPG</translation>
 <translation id="1413240736185167732">Mistókst – bilun í síu</translation>
 <translation id="1468664791493211953">Tilboð</translation>
 <translation id="1478594628797167447">Skanni</translation>
@@ -46,6 +47,7 @@
 <translation id="4227825898293920515">Aðgangsorð rennur út eftir <ph name="TIME" /></translation>
 <translation id="4238516577297848345">Engin prentun í gangi</translation>
 <translation id="4297501883039923494">Stöðvað – óþekkt villa</translation>
+<translation id="4382484599443659549">PDF</translation>
 <translation id="4429881212383817840">Kerberos-miði rennur út fljótlega</translation>
 <translation id="445059817448385655">Eldra aðgangsorð</translation>
 <translation id="4627232916386272576"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="PRINTED_PAGE_NUMBER" /> af <ph name="TOTAL_PAGE_NUMBER" />. Ýttu á færslulykilinn til að hætta við prentverkið.</translation>
@@ -73,6 +75,7 @@
 <translation id="6058625436358447366">Sláðu inn gamla aðgangsorðið og það nýja til að ganga frá þessu</translation>
 <translation id="6106186594183574873">Sláðu inn gamla aðgangsorðið þitt til að ganga frá þessu</translation>
 <translation id="6146993107019042706">Sláðu inn nýja aðgangsorðið til að ljúka þessu</translation>
+<translation id="6147514244879357420">PNG</translation>
 <translation id="636850387210749493">Fyrirtækjaskráning</translation>
 <translation id="649050271426829538">Stöðvað – pappírsstífla</translation>
 <translation id="6517239166834772319">Kanna</translation>
@@ -82,6 +85,7 @@
 <translation id="6747215703636344499">Stöðvað – úttakið er fullt</translation>
 <translation id="7162487448488904999">Gallerí</translation>
 <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation>
+<translation id="7359657277149375382">Skráargerð</translation>
 <translation id="7561454561030345039">Kerfisstjórinn þinn stjórnar þessari stillingu</translation>
 <translation id="7658239707568436148">Hætta við</translation>
 <translation id="7690294790491645610">Staðfestu nýtt aðgangsorð</translation>
diff --git a/chromeos/strings/chromeos_strings_it.xtb b/chromeos/strings/chromeos_strings_it.xtb
index 956314c..f855174 100644
--- a/chromeos/strings/chromeos_strings_it.xtb
+++ b/chromeos/strings/chromeos_strings_it.xtb
@@ -3,6 +3,7 @@
 <translationbundle lang="it">
 <translation id="1018656279737460067">Operazione annullata</translation>
 <translation id="1195447618553298278">Errore sconosciuto.</translation>
+<translation id="1330426557709298164">JPG</translation>
 <translation id="1413240736185167732">Operazione non riuscita - Errore del filtro</translation>
 <translation id="1468664791493211953">Offerte</translation>
 <translation id="1478594628797167447">Scanner</translation>
@@ -46,6 +47,7 @@
 <translation id="4227825898293920515">La password scade tra <ph name="TIME" /></translation>
 <translation id="4238516577297848345">Nessun processo di stampa in corso</translation>
 <translation id="4297501883039923494">Operazione interrotta - Errore sconosciuto</translation>
+<translation id="4382484599443659549">PDF</translation>
 <translation id="4429881212383817840">La richiesta di Kerberos scade a breve</translation>
 <translation id="445059817448385655">Vecchia password</translation>
 <translation id="4627232916386272576"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="PRINTED_PAGE_NUMBER" /> di <ph name="TOTAL_PAGE_NUMBER" />. Premi Invio per annullare il processo di stampa.</translation>
@@ -73,6 +75,7 @@
 <translation id="6058625436358447366">Per terminare, inserisci la password vecchia e quella nuova</translation>
 <translation id="6106186594183574873">Per terminare, inserisci la vecchia password</translation>
 <translation id="6146993107019042706">Per terminare, inserisci la nuova password</translation>
+<translation id="6147514244879357420">PNG</translation>
 <translation id="636850387210749493">Registrazione aziendale</translation>
 <translation id="649050271426829538">Operazione interrotta - Fogli bloccati nella stampante</translation>
 <translation id="6517239166834772319">Esplora</translation>
diff --git a/chromeos/strings/chromeos_strings_iw.xtb b/chromeos/strings/chromeos_strings_iw.xtb
index ed2819d..319d8be 100644
--- a/chromeos/strings/chromeos_strings_iw.xtb
+++ b/chromeos/strings/chromeos_strings_iw.xtb
@@ -3,6 +3,7 @@
 <translationbundle lang="iw">
 <translation id="1018656279737460067">בוטל</translation>
 <translation id="1195447618553298278">שגיאה לא ידועה.</translation>
+<translation id="1330426557709298164">JPG</translation>
 <translation id="1413240736185167732">נכשלה – הסינון נכשל</translation>
 <translation id="1468664791493211953">מבצעים</translation>
 <translation id="1478594628797167447">סורק</translation>
@@ -46,6 +47,7 @@
 <translation id="4227825898293920515">תוקף הסיסמה יפוג בעוד <ph name="TIME" /></translation>
 <translation id="4238516577297848345">אין משימות הדפסה שמתבצעות כרגע</translation>
 <translation id="4297501883039923494">הפסיקה – שגיאה לא ידועה</translation>
+<translation id="4382484599443659549">PDF</translation>
 <translation id="4429881212383817840">‏התוקף של כרטיס Kerberos עומד לפוג בקרוב</translation>
 <translation id="445059817448385655">סיסמה ישנה</translation>
 <translation id="4627232916386272576">‏<ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="PRINTED_PAGE_NUMBER" /> מתוך <ph name="TOTAL_PAGE_NUMBER" />. ניתן להקיש על Enter כדי לבטל את משימת ההדפסה.</translation>
@@ -73,6 +75,7 @@
 <translation id="6058625436358447366">כדי לסיים יש להזין את הסיסמה הישנה והחדשה</translation>
 <translation id="6106186594183574873">כדי לסיים יש להזין את הסיסמה הישנה</translation>
 <translation id="6146993107019042706">כדי לסיים, יש להזין את הסיסמה החדשה</translation>
+<translation id="6147514244879357420">PNG</translation>
 <translation id="636850387210749493">‏הרשמה ל-Enterprise</translation>
 <translation id="649050271426829538">הפסיקה – חסימת נייר</translation>
 <translation id="6517239166834772319">‏מה חדש ב-Chromebook</translation>
diff --git a/chromeos/strings/chromeos_strings_ja.xtb b/chromeos/strings/chromeos_strings_ja.xtb
index f3d98727..eb6c543a 100644
--- a/chromeos/strings/chromeos_strings_ja.xtb
+++ b/chromeos/strings/chromeos_strings_ja.xtb
@@ -3,6 +3,7 @@
 <translationbundle lang="ja">
 <translation id="1018656279737460067">キャンセルされました</translation>
 <translation id="1195447618553298278">不明なエラーです。</translation>
+<translation id="1330426557709298164">JPG</translation>
 <translation id="1413240736185167732">失敗 - フィルタエラー</translation>
 <translation id="1468664791493211953">クーポン</translation>
 <translation id="1478594628797167447">スキャナ</translation>
@@ -45,6 +46,7 @@
 <translation id="4227825898293920515">パスワードの有効期限はあと <ph name="TIME" />です</translation>
 <translation id="4238516577297848345">実行中の印刷ジョブはありません</translation>
 <translation id="4297501883039923494">停止 - 不明なエラー</translation>
+<translation id="4382484599443659549">PDF</translation>
 <translation id="4429881212383817840">Kerberos チケットはまもなく有効期限が切れます</translation>
 <translation id="445059817448385655">古いパスワード</translation>
 <translation id="4627232916386272576"><ph name="DOCUMENT_TITLE" />、<ph name="PRINTER_NAME" />、<ph name="CREATION_TIME" />、<ph name="PRINTED_PAGE_NUMBER" />/<ph name="TOTAL_PAGE_NUMBER" />。印刷ジョブをキャンセルするには、Enter キーを押します。</translation>
@@ -72,6 +74,7 @@
 <translation id="6058625436358447366">終了するには、古いパスワードと新しいパスワードを入力してください</translation>
 <translation id="6106186594183574873">終了するには、古いパスワードを入力してください</translation>
 <translation id="6146993107019042706">終了するには、新しいパスワードを入力してください</translation>
+<translation id="6147514244879357420">PNG</translation>
 <translation id="636850387210749493">企業の登録</translation>
 <translation id="649050271426829538">停止 - 紙詰まり</translation>
 <translation id="6517239166834772319">使い方・ヒント</translation>
diff --git a/chromeos/strings/chromeos_strings_kk.xtb b/chromeos/strings/chromeos_strings_kk.xtb
index 60570cc..3dd92f8 100644
--- a/chromeos/strings/chromeos_strings_kk.xtb
+++ b/chromeos/strings/chromeos_strings_kk.xtb
@@ -3,6 +3,7 @@
 <translationbundle lang="kk">
 <translation id="1018656279737460067">Бас тартылды</translation>
 <translation id="1195447618553298278">Белгісіз қате.</translation>
+<translation id="1330426557709298164">JPG</translation>
 <translation id="1413240736185167732">Сәтсіз: сүзгі қатесі шықты</translation>
 <translation id="1468664791493211953">Ұсыныстар</translation>
 <translation id="1478594628797167447">Сканер</translation>
@@ -46,6 +47,7 @@
 <translation id="4227825898293920515">Құпия сөздің мерзімі <ph name="TIME" /> өткен соң аяқталады.</translation>
 <translation id="4238516577297848345">Ешқандай баспа жұмысы орындалып жатқан жоқ.</translation>
 <translation id="4297501883039923494">Тоқтатылды: белгісіз қате</translation>
+<translation id="4382484599443659549">PDF</translation>
 <translation id="4429881212383817840">Kerberos билетінің жарамдылық мерзімі жақында аяқталады</translation>
 <translation id="445059817448385655">Ескі құпия сөз</translation>
 <translation id="4627232916386272576"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="PRINTED_PAGE_NUMBER" />/<ph name="TOTAL_PAGE_NUMBER" />. Басып шығарудан бас тарту үшін "Enter" пернесін басыңыз.</translation>
@@ -72,6 +74,7 @@
 <translation id="6058625436358447366">Аяқтау үшін ескі және жаңа құпия сөздерді енгізіңіз.</translation>
 <translation id="6106186594183574873">Аяқтау үшін ескі құпия сөзді енгізіңіз.</translation>
 <translation id="6146993107019042706">Аяқтау үшін жаңа құпия сөзді енгізіңіз.</translation>
+<translation id="6147514244879357420">PNG</translation>
 <translation id="636850387210749493">Кәсіпорынды тіркеу</translation>
 <translation id="649050271426829538">Тоқтатылды: қағаз кептелісі</translation>
 <translation id="6517239166834772319">Шолу</translation>
@@ -81,6 +84,7 @@
 <translation id="6747215703636344499">Тоқтатылды: шығыс науа толып кетті</translation>
 <translation id="7162487448488904999">Галерея</translation>
 <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation>
+<translation id="7359657277149375382">Файл түрі</translation>
 <translation id="7561454561030345039">Бұл әрекетті әкімшіңіз басқарады.</translation>
 <translation id="7658239707568436148">Бас тарту</translation>
 <translation id="7690294790491645610">Жаңа құпия сөзді қайталаңыз</translation>
diff --git a/chromeos/strings/chromeos_strings_km.xtb b/chromeos/strings/chromeos_strings_km.xtb
index 98ee6f7..5d3cbcc 100644
--- a/chromeos/strings/chromeos_strings_km.xtb
+++ b/chromeos/strings/chromeos_strings_km.xtb
@@ -3,6 +3,7 @@
 <translationbundle lang="km">
 <translation id="1018656279737460067">បានបោះបង់</translation>
 <translation id="1195447618553298278">កំហុសឆ្គងមិនស្គាល់។</translation>
+<translation id="1330426557709298164">JPG</translation>
 <translation id="1413240736185167732">មិនបានសម្រេច - ​តម្រងមានបញ្ហា</translation>
 <translation id="1468664791493211953">ការផ្តល់ជូន</translation>
 <translation id="1478594628797167447">ម៉ាស៊ីនស្កេន</translation>
@@ -46,6 +47,7 @@
 <translation id="4227825898293920515">ពាក្យសម្ងាត់ផុតកំណត់​ក្នុងរយៈពេល <ph name="TIME" /></translation>
 <translation id="4238516577297848345">មិនមានកិច្ចការបោះពុម្ពកំពុងដំណើរការទេ</translation>
 <translation id="4297501883039923494">បានឈប់ - មានបញ្ហា​ដែលមិនស្គាល់</translation>
+<translation id="4382484599443659549">PDF</translation>
 <translation id="4429881212383817840">សំបុត្រ Kerberos ជិតផុត​កំណត់ហើយ</translation>
 <translation id="445059817448385655">ពាក្យ​សម្ងាត់​ចាស់</translation>
 <translation id="4627232916386272576"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="PRINTED_PAGE_NUMBER" /> ក្នុង​ចំណោម <ph name="TOTAL_PAGE_NUMBER" />។ ចុច enter ដើម្បីបោះបង់​ការងារបោះពុម្ព។</translation>
@@ -72,6 +74,7 @@
 <translation id="6058625436358447366">ដើម្បី​បញ្ចប់ សូម​បញ្ចូល​ពាក្យសម្ងាត់​ចាស់ និងថ្មី​របស់អ្នក</translation>
 <translation id="6106186594183574873">ដើម្បី​បញ្ចប់ សូម​បញ្ចូល​ពាក្យសម្ងាត់​ចាស់​របស់អ្នក</translation>
 <translation id="6146993107019042706">ដើម្បី​បញ្ចប់ សូម​បញ្ចូល​ពាក្យសម្ងាត់​ថ្មីរបស់អ្នក</translation>
+<translation id="6147514244879357420">PNG</translation>
 <translation id="636850387210749493">ការចុះឈ្មោះសហគ្រាស</translation>
 <translation id="649050271426829538">បានឈប់ - ជាប់​ក្រដាស</translation>
 <translation id="6517239166834772319">រុករក</translation>
@@ -81,6 +84,7 @@
 <translation id="6747215703636344499">បានឈប់ - ថាសដាក់​ក្រដាស​បោះពុម្ព​ពេញហើយ</translation>
 <translation id="7162487448488904999">សាល​រូបភាព</translation>
 <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation>
+<translation id="7359657277149375382">ប្រភេទ​ឯកសារ</translation>
 <translation id="7561454561030345039">សកម្មភាពនេះត្រូវបានគ្រប់គ្រងដោយអ្នកគ្រប់គ្រងរបស់អ្នក</translation>
 <translation id="7658239707568436148">បដិសេធ</translation>
 <translation id="7690294790491645610">បញ្ជាក់​ពាក្យ​សម្ងាត់​ថ្មី</translation>
diff --git a/chromeos/strings/chromeos_strings_ko.xtb b/chromeos/strings/chromeos_strings_ko.xtb
index 203986f..89dce91 100644
--- a/chromeos/strings/chromeos_strings_ko.xtb
+++ b/chromeos/strings/chromeos_strings_ko.xtb
@@ -3,6 +3,7 @@
 <translationbundle lang="ko">
 <translation id="1018656279737460067">취소됨</translation>
 <translation id="1195447618553298278">알 수 없는 오류</translation>
+<translation id="1330426557709298164">JPG</translation>
 <translation id="1413240736185167732">실패 - 필터링 실패</translation>
 <translation id="1468664791493211953">혜택</translation>
 <translation id="1478594628797167447">스캐너</translation>
@@ -46,6 +47,7 @@
 <translation id="4227825898293920515">비밀번호가 <ph name="TIME" /> 후에 만료됨</translation>
 <translation id="4238516577297848345">진행 중인 인쇄 작업 없음</translation>
 <translation id="4297501883039923494">중지됨 - 알 수 없는 오류</translation>
+<translation id="4382484599443659549">PDF</translation>
 <translation id="4429881212383817840">Kerberos 티켓이 곧 만료됨</translation>
 <translation id="445059817448385655">이전 비밀번호</translation>
 <translation id="4627232916386272576"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="PRINTED_PAGE_NUMBER" />/<ph name="TOTAL_PAGE_NUMBER" /> 인쇄 작업을 취소하려면 Enter를 누릅니다.</translation>
@@ -73,6 +75,7 @@
 <translation id="6058625436358447366">완료하려면 이전 및 새 비밀번호를 입력하세요.</translation>
 <translation id="6106186594183574873">완료하려면 이전 비밀번호를 입력하세요.</translation>
 <translation id="6146993107019042706">완료하려면 새 비밀번호를 입력하세요.</translation>
+<translation id="6147514244879357420">PNG</translation>
 <translation id="636850387210749493">엔터프라이즈 등록</translation>
 <translation id="649050271426829538">중지됨 - 용지 걸림</translation>
 <translation id="6517239166834772319">살펴보기</translation>
diff --git a/chromeos/strings/chromeos_strings_ky.xtb b/chromeos/strings/chromeos_strings_ky.xtb
index 366fabc..9547433b 100644
--- a/chromeos/strings/chromeos_strings_ky.xtb
+++ b/chromeos/strings/chromeos_strings_ky.xtb
@@ -3,6 +3,7 @@
 <translationbundle lang="ky">
 <translation id="1018656279737460067">Жокко чыгарылды</translation>
 <translation id="1195447618553298278">Белгисиз ката.</translation>
+<translation id="1330426557709298164">JPG</translation>
 <translation id="1413240736185167732">Басылып чыгарылган жок - Чыпка иштебей калды</translation>
 <translation id="1468664791493211953">Сунуштар</translation>
 <translation id="1478594628797167447">Сканер</translation>
@@ -46,6 +47,7 @@
 <translation id="4227825898293920515">Сырсөздүн мөөнөтү <ph name="TIME" /> кийин бүтөт</translation>
 <translation id="4238516577297848345">Аткарылып жаткан иш жок</translation>
 <translation id="4297501883039923494">Токтоду – Белгисиз ката</translation>
+<translation id="4382484599443659549">PDF</translation>
 <translation id="4429881212383817840">Kerberos билетинин мөөнөтү өтүп баратат</translation>
 <translation id="445059817448385655">Эски сырсөз</translation>
 <translation id="4627232916386272576"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="TOTAL_PAGE_NUMBER" /> ичинен <ph name="PRINTED_PAGE_NUMBER" /> Басып чыгарууну токтотуу үчүн "Enter" баскычын басыңыз.</translation>
@@ -73,6 +75,7 @@
 <translation id="6058625436358447366">Бүтүрүү үчүн эски жана жаңы сырсөздөрүңүздү киргизиңиз</translation>
 <translation id="6106186594183574873">Бүтүрүү үчүн эски сырсөзүңүздү киргизиңиз</translation>
 <translation id="6146993107019042706">Бүтүрүү үчүн жаңы сырсөздү киргизиңиз</translation>
+<translation id="6147514244879357420">PNG</translation>
 <translation id="636850387210749493">Корпоративдик каттоо</translation>
 <translation id="649050271426829538">Токтоду – Кагаз чайналып калды</translation>
 <translation id="6517239166834772319">Изилдөө</translation>
@@ -82,6 +85,7 @@
 <translation id="6747215703636344499">Токтоду – Түпкүч толуп калды</translation>
 <translation id="7162487448488904999">Gallery</translation>
 <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation>
+<translation id="7359657277149375382">Файлдын түрү</translation>
 <translation id="7561454561030345039">Бул аракетти администраторуңуз башкарат</translation>
 <translation id="7658239707568436148">Жокко чыгаруу</translation>
 <translation id="7690294790491645610">Жаңы сырсөздү ырастаңыз</translation>
diff --git a/chromeos/strings/chromeos_strings_lt.xtb b/chromeos/strings/chromeos_strings_lt.xtb
index 5a5bb19..3fe2b06 100644
--- a/chromeos/strings/chromeos_strings_lt.xtb
+++ b/chromeos/strings/chromeos_strings_lt.xtb
@@ -3,6 +3,7 @@
 <translationbundle lang="lt">
 <translation id="1018656279737460067">Atšaukta</translation>
 <translation id="1195447618553298278">Nežinoma klaida.</translation>
+<translation id="1330426557709298164">JPG</translation>
 <translation id="1413240736185167732">Nepavyko – filtras neveikia tinkamai</translation>
 <translation id="1468664791493211953">Pasiūlymai</translation>
 <translation id="1478594628797167447">Skaitytuvas</translation>
@@ -46,6 +47,7 @@
 <translation id="4227825898293920515">Slaptažodžio galiojimas baigsis už <ph name="TIME" /></translation>
 <translation id="4238516577297848345">Nėra vykstančių spausdinimo užduočių</translation>
 <translation id="4297501883039923494">Sustabdyta – nežinoma klaida</translation>
+<translation id="4382484599443659549">PDF</translation>
 <translation id="4429881212383817840">„Kerberos“ bilietas netrukus baigs galioti</translation>
 <translation id="445059817448385655">Senas slaptažodis</translation>
 <translation id="4627232916386272576"><ph name="DOCUMENT_TITLE" />, „<ph name="PRINTER_NAME" />“, <ph name="CREATION_TIME" />, <ph name="PRINTED_PAGE_NUMBER" /> iš <ph name="TOTAL_PAGE_NUMBER" /> psl. Paspauskite „Enter“, jei norite atšaukti spausdinimo užduotį.</translation>
@@ -73,6 +75,7 @@
 <translation id="6058625436358447366">Norėdami užbaigti įveskite seną ir naują slaptažodžius</translation>
 <translation id="6106186594183574873">Norėdami užbaigti įveskite seną slaptažodį</translation>
 <translation id="6146993107019042706">Norėdami užbaigti įveskite naują slaptažodį</translation>
+<translation id="6147514244879357420">PNG</translation>
 <translation id="636850387210749493">Įmonės registracija</translation>
 <translation id="649050271426829538">Sustabdyta – įstrigęs popierius</translation>
 <translation id="6517239166834772319">Explore</translation>
diff --git a/chromeos/strings/chromeos_strings_lv.xtb b/chromeos/strings/chromeos_strings_lv.xtb
index c52b47ff..9b9241c 100644
--- a/chromeos/strings/chromeos_strings_lv.xtb
+++ b/chromeos/strings/chromeos_strings_lv.xtb
@@ -3,6 +3,7 @@
 <translationbundle lang="lv">
 <translation id="1018656279737460067">Atcelts</translation>
 <translation id="1195447618553298278">Nezināma kļūda.</translation>
+<translation id="1330426557709298164">JPG</translation>
 <translation id="1413240736185167732">Neizdevās — filtra kļūme</translation>
 <translation id="1468664791493211953">Piedāvājumi</translation>
 <translation id="1478594628797167447">Skeneris</translation>
@@ -46,6 +47,7 @@
 <translation id="4227825898293920515">Paroles derīguma termiņš: <ph name="TIME" /></translation>
 <translation id="4238516577297848345">Nenotiek neviens drukas darbs</translation>
 <translation id="4297501883039923494">Apturēts — nezināma kļūda</translation>
+<translation id="4382484599443659549">PDF</translation>
 <translation id="4429881212383817840">Kerberos biļetes termiņš drīz beigsies</translation>
 <translation id="445059817448385655">Iepriekšējā parole</translation>
 <translation id="4627232916386272576"><ph name="DOCUMENT_TITLE" />: <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="PRINTED_PAGE_NUMBER" /> no <ph name="TOTAL_PAGE_NUMBER" /> lapas(-ām). Lai atceltu drukas uzdevumu, nospiediet taustiņu Enter.</translation>
@@ -73,6 +75,7 @@
 <translation id="6058625436358447366">Lai pabeigtu, ievadiet savu iepriekšējo un jauno paroli</translation>
 <translation id="6106186594183574873">Lai pabeigtu, ievadiet savu iepriekšējo paroli</translation>
 <translation id="6146993107019042706">Lai pabeigtu, ievadiet savu jauno paroli</translation>
+<translation id="6147514244879357420">PNG</translation>
 <translation id="636850387210749493">Uzņēmuma palaide</translation>
 <translation id="649050271426829538">Apturēts — iestrēdzis papīrs</translation>
 <translation id="6517239166834772319">Izpēte</translation>
diff --git a/chromeos/strings/chromeos_strings_ms.xtb b/chromeos/strings/chromeos_strings_ms.xtb
index 21b07eb..f913c1c0 100644
--- a/chromeos/strings/chromeos_strings_ms.xtb
+++ b/chromeos/strings/chromeos_strings_ms.xtb
@@ -3,6 +3,7 @@
 <translationbundle lang="ms">
 <translation id="1018656279737460067">Dibatalkan</translation>
 <translation id="1195447618553298278">Ralat tidak diketahui.</translation>
+<translation id="1330426557709298164">JPG</translation>
 <translation id="1413240736185167732">Gagal - Penapis gagal</translation>
 <translation id="1468664791493211953">Tawaran</translation>
 <translation id="1478594628797167447">Pengimbas</translation>
@@ -46,6 +47,7 @@
 <translation id="4227825898293920515">Kata laluan tamat tempoh dalam <ph name="TIME" /></translation>
 <translation id="4238516577297848345">Tiada tugas cetak yang sedang dijalankan</translation>
 <translation id="4297501883039923494">Dihentikan - Ralat tidak diketahui</translation>
+<translation id="4382484599443659549">PDF</translation>
 <translation id="4429881212383817840">Tiket Kerberos akan tamat tempoh tidak lama lagi</translation>
 <translation id="445059817448385655">Kata laluan lama</translation>
 <translation id="4627232916386272576"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="PRINTED_PAGE_NUMBER" /> daripada <ph name="TOTAL_PAGE_NUMBER" />. Tekan enter untuk membatalkan tugas cetak.</translation>
@@ -73,6 +75,7 @@
 <translation id="6058625436358447366">Untuk menyelesaikan proses ini, masukkan kata laluan lama dan baharu</translation>
 <translation id="6106186594183574873">Untuk menyelesaikan proses ini, masukkan kata laluan lama anda</translation>
 <translation id="6146993107019042706">Untuk menyelesaikan proses ini, masukkan kata laluan baharu anda</translation>
+<translation id="6147514244879357420">PNG</translation>
 <translation id="636850387210749493">Pendaftaran perusahaan</translation>
 <translation id="649050271426829538">Dihentikan - Kertas tersangkut</translation>
 <translation id="6517239166834772319">Teroka</translation>
diff --git a/chromeos/strings/chromeos_strings_my.xtb b/chromeos/strings/chromeos_strings_my.xtb
index ce98ec3..b079cf0 100644
--- a/chromeos/strings/chromeos_strings_my.xtb
+++ b/chromeos/strings/chromeos_strings_my.xtb
@@ -3,6 +3,7 @@
 <translationbundle lang="my">
 <translation id="1018656279737460067">ဖျက်သိမ်းခဲ့သည်</translation>
 <translation id="1195447618553298278">မှားရသည့်အကြောင်း မသိပါ။</translation>
+<translation id="1330426557709298164">JPG</translation>
 <translation id="1413240736185167732">မအောင်မြင်ပါ - ဆန်ခါ ရပ်သွားသည်</translation>
 <translation id="1468664791493211953">ကမ်းလှမ်းချက်များ</translation>
 <translation id="1478594628797167447">စကင်ဖတ်စနစ်</translation>
@@ -46,6 +47,7 @@
 <translation id="4227825898293920515">စကားဝှက်သည် <ph name="TIME" /> တွင် သက်တမ်းကုန်ပါမည်</translation>
 <translation id="4238516577297848345">ပရင့်ထုတ်ရန် ဖိုင်များ လုပ်ဆောင်မနေပါ</translation>
 <translation id="4297501883039923494">ရပ်သွားသည် - အမည်မသိ အမှား</translation>
+<translation id="4382484599443659549">PDF</translation>
 <translation id="4429881212383817840">Kerberos လက်မှတ်သည် မကြာမီ သက်တမ်းကုန်ပါတော့မည်</translation>
 <translation id="445059817448385655">စကားဝှက်အဟောင်း</translation>
 <translation id="4627232916386272576"><ph name="DOCUMENT_TITLE" />၊ <ph name="PRINTER_NAME" />၊ <ph name="CREATION_TIME" />၊ စာမျက်နှာ <ph name="TOTAL_PAGE_NUMBER" /> မျက်နှာအနက် <ph name="PRINTED_PAGE_NUMBER" /> မျက်နှာ။ ပရင့်ထုတ်ရန်ဖိုင် ပယ်ဖျက်ရန် enter နှိပ်ပါ။</translation>
@@ -72,6 +74,7 @@
 <translation id="6058625436358447366">အပြီးသတ်ရန်အတွက် သင့်စကားဝှက် အသစ်နှင့် အဟောင်းကို ထည့်ပါ</translation>
 <translation id="6106186594183574873">အပြီးသတ်ရန်အတွက် သင့်စကားဝှက်ဟောင်းကို ထည့်ပါ</translation>
 <translation id="6146993107019042706">အပြီးသတ်ရန် သင့်စကားဝှက်အသစ်ကို ထည့်ပါ</translation>
+<translation id="6147514244879357420">PNG</translation>
 <translation id="636850387210749493">လုပ်ငန်း အမည်စာရင်းသွင်းခြင်း</translation>
 <translation id="649050271426829538">ရပ်သွားသည် - စာရွက်ညပ်နေသည်</translation>
 <translation id="6517239166834772319">စူးစမ်းလေ့လာခြင်း</translation>
@@ -81,6 +84,7 @@
 <translation id="6747215703636344499">ရပ်ထားသည် - အထွက်ပြည့်နေသည်</translation>
 <translation id="7162487448488904999">ပြခန်း</translation>
 <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation>
+<translation id="7359657277149375382">ဖိုင်အမျိုးအစား</translation>
 <translation id="7561454561030345039">ဤလုပ်ဆောင်ချက်ကို သင့်စီမံခန့်ခွဲသူက စီမံသည်</translation>
 <translation id="7658239707568436148">မလုပ်တော့</translation>
 <translation id="7690294790491645610">စကားဝှက်အသစ်ကို အတည်ပြုပါ</translation>
diff --git a/chromeos/strings/chromeos_strings_pt-PT.xtb b/chromeos/strings/chromeos_strings_pt-PT.xtb
index 735c65a..ff11ace 100644
--- a/chromeos/strings/chromeos_strings_pt-PT.xtb
+++ b/chromeos/strings/chromeos_strings_pt-PT.xtb
@@ -3,6 +3,7 @@
 <translationbundle lang="pt-PT">
 <translation id="1018656279737460067">Cancelado</translation>
 <translation id="1195447618553298278">Erro desconhecido.</translation>
+<translation id="1330426557709298164">JPG</translation>
 <translation id="1413240736185167732">Falha – Falha no filtro</translation>
 <translation id="1468664791493211953">Ofertas</translation>
 <translation id="1478594628797167447">Scanner</translation>
@@ -46,6 +47,7 @@
 <translation id="4227825898293920515">A palavra-passe expira daqui a <ph name="TIME" /></translation>
 <translation id="4238516577297848345">Nenhuma tarefa de impressão em curso.</translation>
 <translation id="4297501883039923494">Parada – Erro desconhecido</translation>
+<translation id="4382484599443659549">PDF</translation>
 <translation id="4429881212383817840">A permissão Kerberos expira em breve</translation>
 <translation id="445059817448385655">Palavra-passe antiga</translation>
 <translation id="4627232916386272576"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="PRINTED_PAGE_NUMBER" /> de <ph name="TOTAL_PAGE_NUMBER" />. Prima Enter para cancelar a tarefa de impressão.</translation>
@@ -73,6 +75,7 @@
 <translation id="6058625436358447366">Para terminar, introduza a palavra-passe antiga e a nova</translation>
 <translation id="6106186594183574873">Para terminar, introduza a palavra-passe antiga</translation>
 <translation id="6146993107019042706">Para terminar, introduza a nova palavra-passe.</translation>
+<translation id="6147514244879357420">PNG</translation>
 <translation id="636850387210749493">Inscrição empresarial</translation>
 <translation id="649050271426829538">Parada – Encravamento de papel</translation>
 <translation id="6517239166834772319">Explore</translation>
diff --git a/chromeos/strings/chromeos_strings_ro.xtb b/chromeos/strings/chromeos_strings_ro.xtb
index d4f0d52..aabecc4 100644
--- a/chromeos/strings/chromeos_strings_ro.xtb
+++ b/chromeos/strings/chromeos_strings_ro.xtb
@@ -3,6 +3,7 @@
 <translationbundle lang="ro">
 <translation id="1018656279737460067">Anulat</translation>
 <translation id="1195447618553298278">Eroare necunoscută.</translation>
+<translation id="1330426557709298164">JPG</translation>
 <translation id="1413240736185167732">Nereușită – Filtru defect</translation>
 <translation id="1468664791493211953">Oferte</translation>
 <translation id="1478594628797167447">Scaner</translation>
@@ -46,6 +47,7 @@
 <translation id="4227825898293920515">Parola expiră în <ph name="TIME" /></translation>
 <translation id="4238516577297848345">Nicio sarcină de printare în desfășurare</translation>
 <translation id="4297501883039923494">Oprită – Eroare necunoscută</translation>
+<translation id="4382484599443659549">PDF</translation>
 <translation id="4429881212383817840">Tichetul Kerberos expiră în curând</translation>
 <translation id="445059817448385655">Parolă veche</translation>
 <translation id="4627232916386272576"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="PRINTED_PAGE_NUMBER" /> din <ph name="TOTAL_PAGE_NUMBER" />. Apasă pe Enter pentru a anula sarcina de printare.</translation>
@@ -73,6 +75,7 @@
 <translation id="6058625436358447366">Pentru a finaliza, introdu parola veche și pe cea nouă</translation>
 <translation id="6106186594183574873">Pentru a finaliza, introdu vechea parolă</translation>
 <translation id="6146993107019042706">Pentru a finaliza, introdu noua parolă</translation>
+<translation id="6147514244879357420">PNG</translation>
 <translation id="636850387210749493">Înscriere pentru întreprindere</translation>
 <translation id="649050271426829538">Oprită – Blocaj de hârtie</translation>
 <translation id="6517239166834772319">Explorare</translation>
diff --git a/chromeos/strings/chromeos_strings_ru.xtb b/chromeos/strings/chromeos_strings_ru.xtb
index b5571a8..e601e26 100644
--- a/chromeos/strings/chromeos_strings_ru.xtb
+++ b/chromeos/strings/chromeos_strings_ru.xtb
@@ -3,6 +3,7 @@
 <translationbundle lang="ru">
 <translation id="1018656279737460067">Отменено</translation>
 <translation id="1195447618553298278">Неизвестная ошибка.</translation>
+<translation id="1330426557709298164">JPG</translation>
 <translation id="1413240736185167732">Сбой: ошибка в работе фильтра</translation>
 <translation id="1468664791493211953">Предложения</translation>
 <translation id="1478594628797167447">Сканер</translation>
@@ -46,6 +47,7 @@
 <translation id="4227825898293920515">Срок действия пароля истекает через <ph name="TIME" /></translation>
 <translation id="4238516577297848345">Задания печати не выполняются</translation>
 <translation id="4297501883039923494">Печать прервана: неизвестная ошибка</translation>
+<translation id="4382484599443659549">PDF</translation>
 <translation id="4429881212383817840">Срок действия билета Kerberos истекает</translation>
 <translation id="445059817448385655">Старый пароль</translation>
 <translation id="4627232916386272576">Файл "<ph name="DOCUMENT_TITLE" />", принтер "<ph name="PRINTER_NAME" />", дата – <ph name="CREATION_TIME" />, напечатано страниц: <ph name="PRINTED_PAGE_NUMBER" /> из <ph name="TOTAL_PAGE_NUMBER" />. Чтобы отменить задание печати, нажмите клавишу "Ввод".</translation>
@@ -73,6 +75,7 @@
 <translation id="6058625436358447366">Для завершения введите старый и новый пароли.</translation>
 <translation id="6106186594183574873">Для завершения введите старый пароль.</translation>
 <translation id="6146993107019042706">Чтобы завершить процедуру, введите новый пароль.</translation>
+<translation id="6147514244879357420">PNG</translation>
 <translation id="636850387210749493">Регистрация в корпоративном домене</translation>
 <translation id="649050271426829538">Печать прервана: застряла бумага</translation>
 <translation id="6517239166834772319">Возможности</translation>
diff --git a/chromeos/strings/chromeos_strings_si.xtb b/chromeos/strings/chromeos_strings_si.xtb
index 539a1ed..9896add 100644
--- a/chromeos/strings/chromeos_strings_si.xtb
+++ b/chromeos/strings/chromeos_strings_si.xtb
@@ -3,6 +3,7 @@
 <translationbundle lang="si">
 <translation id="1018656279737460067">අවලංගු විය</translation>
 <translation id="1195447618553298278">නොදන්නා දෝෂය.</translation>
+<translation id="1330426557709298164">JPG</translation>
 <translation id="1413240736185167732">අසාර්ථක විය - පෙරහන අසාර්ථක විය</translation>
 <translation id="1468664791493211953">දීමනා</translation>
 <translation id="1478594628797167447">ස්කෑනරය</translation>
@@ -46,6 +47,7 @@
 <translation id="4227825898293920515">මුරපදය <ph name="TIME" /> තුළ කල් ඉකුත් වෙයි</translation>
 <translation id="4238516577297848345">කෙරෙමින් පවතින මුද්‍රණ කාර්යයක් නැත</translation>
 <translation id="4297501883039923494">නැවතිණි - නොදන්නා දෝෂයකි</translation>
+<translation id="4382484599443659549">PDF</translation>
 <translation id="4429881212383817840">Kerberos ප්‍රවේශපත්‍රය ඉක්මනින් කල් ඉකුත් වෙයි</translation>
 <translation id="445059817448385655">පැරණි මුරපදය</translation>
 <translation id="4627232916386272576"><ph name="TOTAL_PAGE_NUMBER" /> න් <ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="PRINTED_PAGE_NUMBER" /> මුද්‍රණ කාර්යය අවලංගු කිරීමට enter ඔබන්න.</translation>
@@ -73,6 +75,7 @@
 <translation id="6058625436358447366">අවසන් කිරීමට, ඔබේ පැරණි සහ නව මුරපද ඇතුළත් කරන්න</translation>
 <translation id="6106186594183574873">අවසන් කිරීමට, ඔබේ පැරණි මුරපදය ඇතුළත් කරන්න</translation>
 <translation id="6146993107019042706">අවසන් කිරීමට, ඔබේ නව මුරපදය ඇතුළත් කරන්න</translation>
+<translation id="6147514244879357420">PNG</translation>
 <translation id="636850387210749493">ව්‍යාපාරික බඳවාගැනීම</translation>
 <translation id="649050271426829538">නැවතිණි - කඩදාසි හිරවීම</translation>
 <translation id="6517239166834772319">ගවේෂණය</translation>
@@ -82,6 +85,7 @@
 <translation id="6747215703636344499">නැවතිණි - ප්‍රතිදානය පිරී ඇත</translation>
 <translation id="7162487448488904999">ගැලරිය</translation>
 <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation>
+<translation id="7359657277149375382">ගොනු වර්ගය</translation>
 <translation id="7561454561030345039">මෙම ක්‍රියාව ඔබේ පරිපාලක විසින් කළමනාකරණය කරයි</translation>
 <translation id="7658239707568436148">අවලංගු කරන්න</translation>
 <translation id="7690294790491645610">නව මුරපදය තහවුරු කරන්න</translation>
diff --git a/chromeos/strings/chromeos_strings_sl.xtb b/chromeos/strings/chromeos_strings_sl.xtb
index dddf9a17..d8cb020 100644
--- a/chromeos/strings/chromeos_strings_sl.xtb
+++ b/chromeos/strings/chromeos_strings_sl.xtb
@@ -3,6 +3,7 @@
 <translationbundle lang="sl">
 <translation id="1018656279737460067">Preklicano</translation>
 <translation id="1195447618553298278">Neznana napaka.</translation>
+<translation id="1330426557709298164">JPG</translation>
 <translation id="1413240736185167732">Napaka – napaka filtra</translation>
 <translation id="1468664791493211953">Ponudbe</translation>
 <translation id="1478594628797167447">Optični bralniki</translation>
@@ -46,6 +47,7 @@
 <translation id="4227825898293920515">Geslo poteče čez toliko časa: <ph name="TIME" /></translation>
 <translation id="4238516577297848345">Nobeno tiskalno opravilo ne poteka</translation>
 <translation id="4297501883039923494">Ustavljeno – neznana napaka</translation>
+<translation id="4382484599443659549">PDF</translation>
 <translation id="4429881212383817840">Kartonček za Kerberos kmalu poteče</translation>
 <translation id="445059817448385655">Staro geslo</translation>
 <translation id="4627232916386272576"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="PRINTED_PAGE_NUMBER" /> od <ph name="TOTAL_PAGE_NUMBER" />. Pritisnite tipko Enter, če želite preklicati tiskalno opravilo.</translation>
@@ -73,6 +75,7 @@
 <translation id="6058625436358447366">Za dokončanje vnesite staro in novo geslo</translation>
 <translation id="6106186594183574873">Za dokončanje vnesite staro geslo</translation>
 <translation id="6146993107019042706">Za dokončanje vnesite novo geslo</translation>
+<translation id="6147514244879357420">PNG</translation>
 <translation id="636850387210749493">Prijava v podjetje</translation>
 <translation id="649050271426829538">Ustavljeno – zastoj papirja</translation>
 <translation id="6517239166834772319">Raziskovanje</translation>
diff --git a/chromeos/strings/chromeos_strings_sq.xtb b/chromeos/strings/chromeos_strings_sq.xtb
index e0db1dc..ad281b3d 100644
--- a/chromeos/strings/chromeos_strings_sq.xtb
+++ b/chromeos/strings/chromeos_strings_sq.xtb
@@ -3,6 +3,7 @@
 <translationbundle lang="sq">
 <translation id="1018656279737460067">Anuluar</translation>
 <translation id="1195447618553298278">Gabim i panjohur.</translation>
+<translation id="1330426557709298164">JPG</translation>
 <translation id="1413240736185167732">Dështoi - Filtri dështoi</translation>
 <translation id="1468664791493211953">Ofertat</translation>
 <translation id="1478594628797167447">Skaner</translation>
@@ -46,6 +47,7 @@
 <translation id="4227825898293920515">Fjalëkalimi skadon për <ph name="TIME" /></translation>
 <translation id="4238516577297848345">Nuk ka printime në vazhdim</translation>
 <translation id="4297501883039923494">Ndaloi - Gabim i panjohur</translation>
+<translation id="4382484599443659549">PDF</translation>
 <translation id="4429881212383817840">Bileta e Kerberos skadon së shpejti</translation>
 <translation id="445059817448385655">Fjalëkalimi i vjetër</translation>
 <translation id="4627232916386272576"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="PRINTED_PAGE_NUMBER" /> nga <ph name="TOTAL_PAGE_NUMBER" />. Shtyp Enter për të anuluar printimin.</translation>
@@ -72,6 +74,7 @@
 <translation id="6058625436358447366">Për të përfunduar, fut fjalëkalimet e vjetra dhe të reja</translation>
 <translation id="6106186594183574873">Për të përfunduar, fut fjalëkalimin tënd të vjetër</translation>
 <translation id="6146993107019042706">Për të përfunduar, fut fjalëkalimin e ri</translation>
+<translation id="6147514244879357420">PNG</translation>
 <translation id="636850387210749493">Regjistrimi i ndërmarrjes</translation>
 <translation id="649050271426829538">Ndaloi - Bllokim letre</translation>
 <translation id="6517239166834772319">Eksploro</translation>
@@ -81,6 +84,7 @@
 <translation id="6747215703636344499">Ndaloi - Dalja është plot</translation>
 <translation id="7162487448488904999">Galeria</translation>
 <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation>
+<translation id="7359657277149375382">Lloji i skedarit</translation>
 <translation id="7561454561030345039">Ky veprim menaxhohet nga administratori yt</translation>
 <translation id="7658239707568436148">Anulo</translation>
 <translation id="7690294790491645610">Konfirmo fjalëkalimin e ri</translation>
diff --git a/chromeos/strings/chromeos_strings_sv.xtb b/chromeos/strings/chromeos_strings_sv.xtb
index fe56fc6a..fef7b93f 100644
--- a/chromeos/strings/chromeos_strings_sv.xtb
+++ b/chromeos/strings/chromeos_strings_sv.xtb
@@ -3,6 +3,7 @@
 <translationbundle lang="sv">
 <translation id="1018656279737460067">Avbröts</translation>
 <translation id="1195447618553298278">Okänt fel.</translation>
+<translation id="1330426557709298164">JPG</translation>
 <translation id="1413240736185167732">Misslyckades – filterfel</translation>
 <translation id="1468664791493211953">Erbjudanden</translation>
 <translation id="1478594628797167447">Skanner</translation>
@@ -46,6 +47,7 @@
 <translation id="4227825898293920515">Lösenordet upphör att gälla om <ph name="TIME" /></translation>
 <translation id="4238516577297848345">Inga utskriftsjobb pågår</translation>
 <translation id="4297501883039923494">Har stoppats – okänt fel</translation>
+<translation id="4382484599443659549">PDF</translation>
 <translation id="4429881212383817840">Kerberos-biljetten upphör snart att gälla</translation>
 <translation id="445059817448385655">Gammalt lösenord</translation>
 <translation id="4627232916386272576"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="PRINTED_PAGE_NUMBER" /> av <ph name="TOTAL_PAGE_NUMBER" />. Tryck på retur för att avbryta utskriftsjobbet.</translation>
@@ -73,6 +75,7 @@
 <translation id="6058625436358447366">Slutför genom att ange det gamla och det nya lösenordet</translation>
 <translation id="6106186594183574873">Slutför genom att ange det gamla lösenordet</translation>
 <translation id="6146993107019042706">Slutför genom att ange det nya lösenordet</translation>
+<translation id="6147514244879357420">PNG</translation>
 <translation id="636850387210749493">Företagsregistrering</translation>
 <translation id="649050271426829538">Har stoppats – papperstrassel</translation>
 <translation id="6517239166834772319">Utforska</translation>
diff --git a/chromeos/strings/chromeos_strings_tr.xtb b/chromeos/strings/chromeos_strings_tr.xtb
index be2f399d..7f33d4a 100644
--- a/chromeos/strings/chromeos_strings_tr.xtb
+++ b/chromeos/strings/chromeos_strings_tr.xtb
@@ -3,6 +3,7 @@
 <translationbundle lang="tr">
 <translation id="1018656279737460067">İptal Edildi</translation>
 <translation id="1195447618553298278">Bilinmeyen hata.</translation>
+<translation id="1330426557709298164">JPG</translation>
 <translation id="1413240736185167732">İşlem başarısız - Filtre başarısız</translation>
 <translation id="1468664791493211953">Teklifler</translation>
 <translation id="1478594628797167447">Tarayıcı</translation>
@@ -46,6 +47,7 @@
 <translation id="4227825898293920515">Şifrenin süresi <ph name="TIME" /> içinde doluyor</translation>
 <translation id="4238516577297848345">Devam eden bir yazdırma işi yok</translation>
 <translation id="4297501883039923494">Durduruldu - Bilinmeyen hata</translation>
+<translation id="4382484599443659549">PDF</translation>
 <translation id="4429881212383817840">Kerberos biletinin süresi yakında doluyor</translation>
 <translation id="445059817448385655">Eski şifre</translation>
 <translation id="4627232916386272576"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="PRINTED_PAGE_NUMBER" />/<ph name="TOTAL_PAGE_NUMBER" /> Yazdırma işini iptal etmek için enter tuşuna basın.</translation>
@@ -73,6 +75,7 @@
 <translation id="6058625436358447366">Bitirmek için eski ve yeni şifrenizi girin</translation>
 <translation id="6106186594183574873">Bitirmek için eski şifrenizi girin</translation>
 <translation id="6146993107019042706">Bitirmek için yeni şifrenizi girin</translation>
+<translation id="6147514244879357420">PNG</translation>
 <translation id="636850387210749493">Kurumsal kayıt</translation>
 <translation id="649050271426829538">Durduruldu - Kağıt sıkışması</translation>
 <translation id="6517239166834772319">Keşfet</translation>
diff --git a/chromeos/strings/chromeos_strings_vi.xtb b/chromeos/strings/chromeos_strings_vi.xtb
index f3a75b7..b6df0b3d 100644
--- a/chromeos/strings/chromeos_strings_vi.xtb
+++ b/chromeos/strings/chromeos_strings_vi.xtb
@@ -3,6 +3,7 @@
 <translationbundle lang="vi">
 <translation id="1018656279737460067">Đã hủy</translation>
 <translation id="1195447618553298278">Lỗi chưa biết.</translation>
+<translation id="1330426557709298164">JPG</translation>
 <translation id="1413240736185167732">Không thành công – Không lọc được</translation>
 <translation id="1468664791493211953">Ưu đãi</translation>
 <translation id="1478594628797167447">Máy quét</translation>
@@ -46,6 +47,7 @@
 <translation id="4227825898293920515">Mật khẩu sẽ hết hạn sau <ph name="TIME" /></translation>
 <translation id="4238516577297848345">Không có lệnh in nào đang xử lý</translation>
 <translation id="4297501883039923494">Đã dừng – Lỗi không xác định</translation>
+<translation id="4382484599443659549">PDF</translation>
 <translation id="4429881212383817840">Phiếu Kerberos sẽ sớm hết hạn</translation>
 <translation id="445059817448385655">Mật khẩu cũ</translation>
 <translation id="4627232916386272576"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="PRINTED_PAGE_NUMBER" />/<ph name="TOTAL_PAGE_NUMBER" />. Hãy nhấn để hủy lệnh in.</translation>
@@ -73,6 +75,7 @@
 <translation id="6058625436358447366">Để hoàn tất, hãy nhập cả mật khẩu cũ và mật khẩu mới của bạn</translation>
 <translation id="6106186594183574873">Để hoàn tất, hãy nhập mật khẩu cũ của bạn</translation>
 <translation id="6146993107019042706">Để hoàn tất, hãy nhập mật khẩu mới của bạn</translation>
+<translation id="6147514244879357420">PNG</translation>
 <translation id="636850387210749493">Đăng ký doanh nghiệp</translation>
 <translation id="649050271426829538">Đã dừng – Kẹt giấy</translation>
 <translation id="6517239166834772319">Khám phá</translation>
diff --git a/chromeos/strings/chromeos_strings_zh-HK.xtb b/chromeos/strings/chromeos_strings_zh-HK.xtb
index 1287523..c3152d35 100644
--- a/chromeos/strings/chromeos_strings_zh-HK.xtb
+++ b/chromeos/strings/chromeos_strings_zh-HK.xtb
@@ -3,6 +3,7 @@
 <translationbundle lang="zh-HK">
 <translation id="1018656279737460067">已取消</translation>
 <translation id="1195447618553298278">未知的錯誤。</translation>
+<translation id="1330426557709298164">JPG</translation>
 <translation id="1413240736185167732">失敗 - 篩選器發生錯誤</translation>
 <translation id="1468664791493211953">優惠</translation>
 <translation id="1478594628797167447">掃瞄器</translation>
@@ -46,6 +47,7 @@
 <translation id="4227825898293920515">密碼在 <ph name="TIME" />後到期</translation>
 <translation id="4238516577297848345">沒有進行中的列印工作</translation>
 <translation id="4297501883039923494">已停止 - 不明錯誤</translation>
+<translation id="4382484599443659549">PDF</translation>
 <translation id="4429881212383817840">Kerberos 票證即將到期</translation>
 <translation id="445059817448385655">舊密碼</translation>
 <translation id="4627232916386272576"><ph name="DOCUMENT_TITLE" />、<ph name="PRINTER_NAME" />、<ph name="CREATION_TIME" />,印咗 <ph name="PRINTED_PAGE_NUMBER" /> 頁,總共有 <ph name="TOTAL_PAGE_NUMBER" /> 頁。㩒一下 Enter 鍵就可以取消列印工作。</translation>
@@ -73,6 +75,7 @@
 <translation id="6058625436358447366">如要完成變更,請輸入您的舊密碼和新密碼</translation>
 <translation id="6106186594183574873">如要完成變更,請輸入您的舊密碼</translation>
 <translation id="6146993107019042706">如要完成變更,請輸入您的新密碼</translation>
+<translation id="6147514244879357420">PNG</translation>
 <translation id="636850387210749493">企業註冊</translation>
 <translation id="649050271426829538">已停止 - 卡紙</translation>
 <translation id="6517239166834772319">探索</translation>
diff --git a/chromeos/strings/chromeos_strings_zh-TW.xtb b/chromeos/strings/chromeos_strings_zh-TW.xtb
index 2578ea2..553a7a84 100644
--- a/chromeos/strings/chromeos_strings_zh-TW.xtb
+++ b/chromeos/strings/chromeos_strings_zh-TW.xtb
@@ -3,6 +3,7 @@
 <translationbundle lang="zh-TW">
 <translation id="1018656279737460067">已取消</translation>
 <translation id="1195447618553298278">未知的錯誤。</translation>
+<translation id="1330426557709298164">JPG</translation>
 <translation id="1413240736185167732">失敗 - 無法使用過濾器</translation>
 <translation id="1468664791493211953">優惠</translation>
 <translation id="1478594628797167447">掃描器</translation>
@@ -46,6 +47,7 @@
 <translation id="4227825898293920515">密碼將在 <ph name="TIME" />後到期</translation>
 <translation id="4238516577297848345">沒有任何進行中的列印工作</translation>
 <translation id="4297501883039923494">已停止 - 不明的錯誤</translation>
+<translation id="4382484599443659549">PDF</translation>
 <translation id="4429881212383817840">Kerberos 票證即將到期</translation>
 <translation id="445059817448385655">舊密碼</translation>
 <translation id="4627232916386272576"><ph name="DOCUMENT_TITLE" />,<ph name="PRINTER_NAME" />,<ph name="CREATION_TIME" />,已列印 <ph name="PRINTED_PAGE_NUMBER" /> 頁 (共 <ph name="TOTAL_PAGE_NUMBER" /> 頁)。按下 Enter 鍵即可取消列印工作。</translation>
@@ -73,6 +75,7 @@
 <translation id="6058625436358447366">如要完成變更,請輸入你的舊密碼和新密碼</translation>
 <translation id="6106186594183574873">如要完成變更,請輸入你的舊密碼</translation>
 <translation id="6146993107019042706">如要完成變更,請輸入你的新密碼</translation>
+<translation id="6147514244879357420">PNG</translation>
 <translation id="636850387210749493">企業註冊</translation>
 <translation id="649050271426829538">已停止 - 卡紙</translation>
 <translation id="6517239166834772319">探索</translation>
diff --git a/chromeos/strings/chromeos_strings_zu.xtb b/chromeos/strings/chromeos_strings_zu.xtb
index be28586..4ca0f7a4 100644
--- a/chromeos/strings/chromeos_strings_zu.xtb
+++ b/chromeos/strings/chromeos_strings_zu.xtb
@@ -3,6 +3,7 @@
 <translationbundle lang="zu">
 <translation id="1018656279737460067">Kukhanseliwe</translation>
 <translation id="1195447618553298278">Iphutha elingaziwa.</translation>
+<translation id="1330426557709298164">I-JPG</translation>
 <translation id="1413240736185167732">Yehlulekile - Isihlungi sehlulekile</translation>
 <translation id="1468664791493211953">Ukunikezwa</translation>
 <translation id="1478594628797167447">Iskena</translation>
@@ -46,6 +47,7 @@
 <translation id="4227825898293920515">Iphasiwedi iphelelwa isikhathi ngo-<ph name="TIME" /></translation>
 <translation id="4238516577297848345">Ayikho imisebenzi yokuphrinta eqhubekayo</translation>
 <translation id="4297501883039923494">Imile - Iphutha elingaziwa</translation>
+<translation id="4382484599443659549">I-PDF</translation>
 <translation id="4429881212383817840">Ithikithi le-Kerberos liphelelwa isikhathi maduze</translation>
 <translation id="445059817448385655">Iphasiwedi endala</translation>
 <translation id="4627232916386272576"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="PRINTED_PAGE_NUMBER" /> kwangu-<ph name="TOTAL_PAGE_NUMBER" /> Cindezela u-enter ukuze ukhansele umsebenzi wokuphrinta.</translation>
@@ -73,6 +75,7 @@
 <translation id="6058625436358447366">Ukuze uqede, faka amaphasiwedi akho endala nentsha</translation>
 <translation id="6106186594183574873">Ukuze uqede, faka iphasiwedi endala</translation>
 <translation id="6146993107019042706">Ukuze uqede, faka iphasiwedi yakho entsha</translation>
+<translation id="6147514244879357420">I-PNG</translation>
 <translation id="636850387210749493">Ukubhalisa kwebhizinisi</translation>
 <translation id="649050271426829538">Imile - Ukujema kwephepha</translation>
 <translation id="6517239166834772319">Hlola</translation>
@@ -82,6 +85,7 @@
 <translation id="6747215703636344499">Imile - Okukhiphayo kugcwele</translation>
 <translation id="7162487448488904999">Igalari</translation>
 <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation>
+<translation id="7359657277149375382">Uhlobo lwefayela</translation>
 <translation id="7561454561030345039">Lesi senzo siphethwe umlawuli wakho</translation>
 <translation id="7658239707568436148">Khansela</translation>
 <translation id="7690294790491645610">Qinisekisa iphasiwedi entsha</translation>
diff --git a/chromeos/ui/base/BUILD.gn b/chromeos/ui/base/BUILD.gn
index bc21fb7..34052e5 100644
--- a/chromeos/ui/base/BUILD.gn
+++ b/chromeos/ui/base/BUILD.gn
@@ -2,7 +2,9 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
-assert(is_chromeos || chromeos_is_browser_only,
+import("//build/config/chromeos/ui_mode.gni")
+
+assert(is_chromeos || is_lacros,
        "Non-Chrome-OS or Lacros builds must not depend on //chromeos")
 
 # C++ headers and sources that can be used by both ash and lacros builds.
diff --git a/chromeos/ui/frame/BUILD.gn b/chromeos/ui/frame/BUILD.gn
index fcb0c91..80bb526 100644
--- a/chromeos/ui/frame/BUILD.gn
+++ b/chromeos/ui/frame/BUILD.gn
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+import("//build/config/chromeos/ui_mode.gni")
+
 assert(is_chromeos || is_lacros,
        "Non-Chrome-OS or Lacros builds must not depend on //chromeos")
 
diff --git a/components/autofill/core/browser/autofill_manager_unittest.cc b/components/autofill/core/browser/autofill_manager_unittest.cc
index 7d296d9..b8f32db1 100644
--- a/components/autofill/core/browser/autofill_manager_unittest.cc
+++ b/components/autofill/core/browser/autofill_manager_unittest.cc
@@ -37,6 +37,7 @@
 #include "components/autofill/core/browser/data_model/credit_card.h"
 #include "components/autofill/core/browser/metrics/form_events.h"
 #include "components/autofill/core/browser/mock_autocomplete_history_manager.h"
+#include "components/autofill/core/browser/pattern_provider/test_pattern_provider.h"
 #include "components/autofill/core/browser/payments/test_credit_card_save_manager.h"
 #include "components/autofill/core/browser/payments/test_credit_card_save_strike_database.h"
 #include "components/autofill/core/browser/payments/test_payments_client.h"
@@ -637,6 +638,7 @@
   std::unique_ptr<MockAutocompleteHistoryManager> autocomplete_history_manager_;
   base::test::ScopedFeatureList scoped_feature_list_;
   TestStrikeDatabase* strike_database_;
+  TestPatternProvider test_pattern_provider_;
 
  private:
   int ToHistogramSample(AutofillMetrics::CardUploadDecisionMetric metric) {
diff --git a/components/autofill/core/browser/autofill_metrics_unittest.cc b/components/autofill/core/browser/autofill_metrics_unittest.cc
index 8a4c5e3..d4d7f2e 100644
--- a/components/autofill/core/browser/autofill_metrics_unittest.cc
+++ b/components/autofill/core/browser/autofill_metrics_unittest.cc
@@ -31,6 +31,7 @@
 #include "components/autofill/core/browser/metrics/credit_card_form_event_logger.h"
 #include "components/autofill/core/browser/metrics/form_events.h"
 #include "components/autofill/core/browser/mock_autocomplete_history_manager.h"
+#include "components/autofill/core/browser/pattern_provider/test_pattern_provider.h"
 #include "components/autofill/core/browser/payments/credit_card_access_manager.h"
 #include "components/autofill/core/browser/payments/test_credit_card_save_manager.h"
 #include "components/autofill/core/browser/payments/test_payments_client.h"
@@ -382,6 +383,7 @@
   std::unique_ptr<MockAutocompleteHistoryManager> autocomplete_history_manager_;
   std::unique_ptr<AutofillExternalDelegate> external_delegate_;
   base::test::ScopedFeatureList scoped_feature_list_;
+  TestPatternProvider test_pattern_provider_;
 
  private:
   void CreateTestAutofillProfiles();
diff --git a/components/autofill/core/browser/form_data_importer_unittest.cc b/components/autofill/core/browser/form_data_importer_unittest.cc
index 31e772c..71b70bab 100644
--- a/components/autofill/core/browser/form_data_importer_unittest.cc
+++ b/components/autofill/core/browser/form_data_importer_unittest.cc
@@ -31,6 +31,7 @@
 #include "components/autofill/core/browser/data_model/autofill_profile.h"
 #include "components/autofill/core/browser/data_model/credit_card.h"
 #include "components/autofill/core/browser/form_structure.h"
+#include "components/autofill/core/browser/pattern_provider/test_pattern_provider.h"
 #include "components/autofill/core/browser/personal_data_manager.h"
 #include "components/autofill/core/browser/personal_data_manager_observer.h"
 #include "components/autofill/core/browser/test_autofill_client.h"
@@ -230,6 +231,7 @@
   std::unique_ptr<PersonalDataManager> personal_data_manager_;
   std::unique_ptr<FormDataImporter> form_data_importer_;
   base::test::ScopedFeatureList scoped_feature_list_;
+  TestPatternProvider test_pattern_provider_;
 };
 
 // TODO(crbug.com/1103421): Clean legacy implementation once structured names
diff --git a/components/autofill/core/browser/form_parsing/address_field_unittest.cc b/components/autofill/core/browser/form_parsing/address_field_unittest.cc
index 9b59b7c..aff4c5bb 100644
--- a/components/autofill/core/browser/form_parsing/address_field_unittest.cc
+++ b/components/autofill/core/browser/form_parsing/address_field_unittest.cc
@@ -160,6 +160,104 @@
             field_candidates_map_[ASCIIToUTF16("addr")].BestHeuristicType());
 }
 
+// Tests that fields are classified as |ADDRESS_HOME_STREET_NAME| and
+// |ADDRESS_HOME_HOUSE_NUMBER| when they are labeled accordingly and
+// both are present.
+TEST_F(AddressFieldTest, ParseStreetNameAndHouseNumber) {
+  // TODO(crbug.com/1125978): Remove once launched.
+  base::test::ScopedFeatureList enabled;
+  enabled.InitAndEnableFeature(
+      features::kAutofillEnableSupportForMoreStructureInAddresses);
+
+  FormFieldData field;
+  field.form_control_type = "text";
+
+  field.label = ASCIIToUTF16("Street");
+  field.name = ASCIIToUTF16("street");
+  list_.push_back(
+      std::make_unique<AutofillField>(field, ASCIIToUTF16("street")));
+
+  field.label = ASCIIToUTF16("House number");
+  field.name = ASCIIToUTF16("house-number");
+  list_.push_back(
+      std::make_unique<AutofillField>(field, ASCIIToUTF16("house")));
+
+  AutofillScanner scanner(list_);
+  field_ = Parse(&scanner);
+  ASSERT_NE(nullptr, field_.get());
+  field_->AddClassificationsForTesting(&field_candidates_map_);
+
+  ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("street")) !=
+              field_candidates_map_.end());
+  EXPECT_EQ(ADDRESS_HOME_STREET_NAME,
+            field_candidates_map_[ASCIIToUTF16("street")].BestHeuristicType());
+
+  ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("house")) !=
+              field_candidates_map_.end());
+  EXPECT_EQ(ADDRESS_HOME_HOUSE_NUMBER,
+            field_candidates_map_[ASCIIToUTF16("house")].BestHeuristicType());
+}
+
+// Tests that the field is not classified as |ADDRESS_HOME_STREET_NAME| when
+// it is labeled accordingly but adjacent field classified as
+// |ADDRESS_HOME_HOUSE_NUMBER| is absent.
+TEST_F(AddressFieldTest, NotParseStreetNameWithoutHouseNumber) {
+  // TODO(crbug.com/1125978): Remove once launched.
+  base::test::ScopedFeatureList enabled;
+  enabled.InitAndEnableFeature(
+      features::kAutofillEnableSupportForMoreStructureInAddresses);
+
+  FormFieldData field;
+  field.form_control_type = "text";
+
+  field.label = ASCIIToUTF16("Street");
+  field.name = ASCIIToUTF16("street");
+  list_.push_back(
+      std::make_unique<AutofillField>(field, ASCIIToUTF16("street")));
+
+  AutofillScanner scanner(list_);
+  field_ = Parse(&scanner);
+
+  if (!field_.get())
+    return;
+  field_->AddClassificationsForTesting(&field_candidates_map_);
+  if (field_candidates_map_.empty())
+    return;
+
+  EXPECT_NE(ADDRESS_HOME_STREET_NAME,
+            field_candidates_map_[ASCIIToUTF16("street")].BestHeuristicType());
+}
+
+// Tests that the field is not classified as |ADDRESS_HOME_HOUSE_NUMBER| when
+// it is labeled accordingly but adjacent field classified as
+// |ADDRESS_HOME_STREET_NAME| is absent.
+TEST_F(AddressFieldTest, NotParseHouseNumberWithoutStreetName) {
+  // TODO(crbug.com/1125978): Remove once launched.
+  base::test::ScopedFeatureList enabled;
+  enabled.InitAndEnableFeature(
+      features::kAutofillEnableSupportForMoreStructureInAddresses);
+
+  FormFieldData field;
+  field.form_control_type = "text";
+
+  field.label = ASCIIToUTF16("House number");
+  field.name = ASCIIToUTF16("house-number");
+  list_.push_back(
+      std::make_unique<AutofillField>(field, ASCIIToUTF16("house")));
+
+  AutofillScanner scanner(list_);
+  field_ = Parse(&scanner);
+
+  if (!field_.get())
+    return;
+  field_->AddClassificationsForTesting(&field_candidates_map_);
+  if (field_candidates_map_.empty())
+    return;
+
+  EXPECT_NE(ADDRESS_HOME_HOUSE_NUMBER,
+            field_candidates_map_[ASCIIToUTF16("house")].BestHeuristicType());
+}
+
 TEST_F(AddressFieldTest, ParseCity) {
   FormFieldData field;
   field.form_control_type = "text";
diff --git a/components/autofill/core/browser/form_parsing/form_field_unittest.cc b/components/autofill/core/browser/form_parsing/form_field_unittest.cc
index 771275d5..e0b0a5d 100644
--- a/components/autofill/core/browser/form_parsing/form_field_unittest.cc
+++ b/components/autofill/core/browser/form_parsing/form_field_unittest.cc
@@ -10,6 +10,7 @@
 #include "base/test/scoped_feature_list.h"
 #include "components/autofill/core/browser/autofill_field.h"
 #include "components/autofill/core/browser/form_parsing/form_field.h"
+#include "components/autofill/core/browser/pattern_provider/test_pattern_provider.h"
 #include "components/autofill/core/common/autofill_features.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -112,6 +113,8 @@
 
 // Test that we ignore checkable elements.
 TEST(FormFieldTest, ParseFormFields) {
+  TestPatternProvider test_pattern_provider_;
+
   std::vector<std::unique_ptr<AutofillField>> fields;
   FormFieldData field_data;
   field_data.form_control_type = "text";
@@ -195,6 +198,8 @@
 // Test that the minimum number of required fields for the heuristics considers
 // whether a field is actually fillable.
 TEST(FormFieldTest, ParseFormFieldEnforceMinFillableFields) {
+  TestPatternProvider test_pattern_provider_;
+
   std::vector<std::unique_ptr<AutofillField>> fields;
   FormFieldData field_data;
   field_data.form_control_type = "text";
diff --git a/components/autofill/core/browser/form_structure_unittest.cc b/components/autofill/core/browser/form_structure_unittest.cc
index 6125363e..6eb7902fa 100644
--- a/components/autofill/core/browser/form_structure_unittest.cc
+++ b/components/autofill/core/browser/form_structure_unittest.cc
@@ -19,6 +19,7 @@
 #include "components/autofill/core/browser/autofill_experiments.h"
 #include "components/autofill/core/browser/autofill_form_test_utils.h"
 #include "components/autofill/core/browser/autofill_test_utils.h"
+#include "components/autofill/core/browser/pattern_provider/test_pattern_provider.h"
 #include "components/autofill/core/browser/proto/api_v1.pb.h"
 #include "components/autofill/core/browser/randomized_encoder.h"
 #include "components/autofill/core/common/autofill_features.h"
@@ -175,6 +176,9 @@
         {});
   }
 
+ protected:
+  TestPatternProvider test_pattern_provider_;
+
  private:
   void EnableAutofillMetadataFieldTrial() {
     scoped_feature_list_.Reset();
diff --git a/components/autofill/core/browser/payments/credit_card_save_manager_unittest.cc b/components/autofill/core/browser/payments/credit_card_save_manager_unittest.cc
index d6dbaf2..1868db7 100644
--- a/components/autofill/core/browser/payments/credit_card_save_manager_unittest.cc
+++ b/components/autofill/core/browser/payments/credit_card_save_manager_unittest.cc
@@ -31,6 +31,7 @@
 #include "components/autofill/core/browser/data_model/autofill_profile.h"
 #include "components/autofill/core/browser/data_model/credit_card.h"
 #include "components/autofill/core/browser/mock_autocomplete_history_manager.h"
+#include "components/autofill/core/browser/pattern_provider/test_pattern_provider.h"
 #include "components/autofill/core/browser/payments/payments_customer_data.h"
 #include "components/autofill/core/browser/payments/test_credit_card_save_manager.h"
 #include "components/autofill/core/browser/payments/test_credit_card_save_strike_database.h"
@@ -349,6 +350,7 @@
   MockAutocompleteHistoryManager autocomplete_history_manager_;
   syncer::TestSyncService sync_service_;
   base::test::ScopedFeatureList scoped_feature_list_;
+  TestPatternProvider test_pattern_provider_;
   // Ends up getting owned (and destroyed) by TestFormDataImporter:
   TestCreditCardSaveManager* credit_card_save_manager_;
   // Ends up getting owned (and destroyed) by TestAutofillClient:
diff --git a/components/autofill/core/browser/payments/local_card_migration_manager_unittest.cc b/components/autofill/core/browser/payments/local_card_migration_manager_unittest.cc
index 5843d193..a728688 100644
--- a/components/autofill/core/browser/payments/local_card_migration_manager_unittest.cc
+++ b/components/autofill/core/browser/payments/local_card_migration_manager_unittest.cc
@@ -28,6 +28,7 @@
 #include "components/autofill/core/browser/data_model/autofill_profile.h"
 #include "components/autofill/core/browser/data_model/credit_card.h"
 #include "components/autofill/core/browser/mock_autocomplete_history_manager.h"
+#include "components/autofill/core/browser/pattern_provider/test_pattern_provider.h"
 #include "components/autofill/core/browser/payments/payments_customer_data.h"
 #include "components/autofill/core/browser/payments/test_credit_card_save_manager.h"
 #include "components/autofill/core/browser/payments/test_local_card_migration_manager.h"
@@ -313,6 +314,7 @@
   MockAutocompleteHistoryManager autocomplete_history_manager_;
   syncer::TestSyncService sync_service_;
   base::test::ScopedFeatureList scoped_feature_list_;
+  TestPatternProvider test_pattern_provider_;
   // Ends up getting owned (and destroyed) by TestAutofillClient:
   TestStrikeDatabase* strike_database_;
   // Ends up getting owned (and destroyed) by TestFormDataImporter:
diff --git a/components/autofill_assistant/browser/BUILD.gn b/components/autofill_assistant/browser/BUILD.gn
index d5f6479..50fd75de 100644
--- a/components/autofill_assistant/browser/BUILD.gn
+++ b/components/autofill_assistant/browser/BUILD.gn
@@ -38,8 +38,6 @@
     "actions/fallback_handler/required_field.h",
     "actions/fallback_handler/required_fields_fallback_handler.cc",
     "actions/fallback_handler/required_fields_fallback_handler.h",
-    "actions/focus_element_action.cc",
-    "actions/focus_element_action.h",
     "actions/generate_password_for_form_field_action.cc",
     "actions/generate_password_for_form_field_action.h",
     "actions/get_element_status_action.cc",
@@ -62,6 +60,8 @@
     "actions/set_attribute_action.h",
     "actions/set_form_field_value_action.cc",
     "actions/set_form_field_value_action.h",
+    "actions/show_cast_action.cc",
+    "actions/show_cast_action.h",
     "actions/show_details_action.cc",
     "actions/show_details_action.h",
     "actions/show_form_action.cc",
@@ -277,7 +277,6 @@
     "actions/collect_user_data_action_unittest.cc",
     "actions/configure_bottom_sheet_action_unittest.cc",
     "actions/fallback_handler/required_fields_fallback_handler_unittest.cc",
-    "actions/focus_element_action_unittest.cc",
     "actions/generate_password_for_form_field_action_unittest.cc",
     "actions/get_element_status_action_unittest.cc",
     "actions/highlight_element_action_unittest.cc",
@@ -288,6 +287,7 @@
     "actions/select_option_action_unittest.cc",
     "actions/set_attribute_action_unittest.cc",
     "actions/set_form_field_value_action_unittest.cc",
+    "actions/show_cast_action_unittest.cc",
     "actions/show_details_action_unittest.cc",
     "actions/show_generic_ui_action_unittest.cc",
     "actions/show_progress_bar_action_unittest.cc",
diff --git a/components/autofill_assistant/browser/actions/action.cc b/components/autofill_assistant/browser/actions/action.cc
index 0d2c861..0200abd4c 100644
--- a/components/autofill_assistant/browser/actions/action.cc
+++ b/components/autofill_assistant/browser/actions/action.cc
@@ -71,8 +71,8 @@
     case ActionProto::ActionInfoCase::kTell:
       out << "Tell";
       break;
-    case ActionProto::ActionInfoCase::kFocusElement:
-      out << "FocusElement";
+    case ActionProto::ActionInfoCase::kShowCast:
+      out << "ShowCast";
       break;
     case ActionProto::ActionInfoCase::kWaitForDom:
       out << "WaitForDom";
diff --git a/components/autofill_assistant/browser/actions/action_delegate.h b/components/autofill_assistant/browser/actions/action_delegate.h
index 08fbea3..ebfd0e7 100644
--- a/components/autofill_assistant/browser/actions/action_delegate.h
+++ b/components/autofill_assistant/browser/actions/action_delegate.h
@@ -199,13 +199,13 @@
       const ElementFinder::Result& element,
       base::OnceCallback<void(const ClientStatus&)> callback) = 0;
 
-  // Focus on |element|. |top_padding| specifies the padding between the
-  // focused element and the top.
+  // Scroll to an |element|'s position. |top_padding| specifies the padding
+  // between the focused element and the top.
   // TODO(b/168107066): The selector is only used for storing the previously
   // selected element and is not being used to resolve it. This is required for
   // the current implementation of |ScriptExecutor| that repeats the focus
   // after an interrupt. This dependency should be removed from the signature.
-  virtual void FocusElement(
+  virtual void ScrollToElementPosition(
       const Selector& selector,
       const TopPadding& top_padding,
       const ElementFinder::Result& element,
diff --git a/components/autofill_assistant/browser/actions/focus_element_action.cc b/components/autofill_assistant/browser/actions/focus_element_action.cc
deleted file mode 100644
index 8a54e9e..0000000
--- a/components/autofill_assistant/browser/actions/focus_element_action.cc
+++ /dev/null
@@ -1,96 +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.
-
-#include "components/autofill_assistant/browser/actions/focus_element_action.h"
-
-#include <memory>
-#include <utility>
-
-#include "base/bind.h"
-#include "base/callback.h"
-#include "components/autofill_assistant/browser/actions/action_delegate.h"
-#include "components/autofill_assistant/browser/actions/action_delegate_util.h"
-#include "components/autofill_assistant/browser/client_status.h"
-#include "components/autofill_assistant/browser/service.pb.h"
-
-namespace autofill_assistant {
-
-FocusElementAction::FocusElementAction(ActionDelegate* delegate,
-                                       const ActionProto& proto)
-    : Action(delegate, proto) {
-  DCHECK(proto_.has_focus_element());
-}
-
-FocusElementAction::~FocusElementAction() {}
-
-void FocusElementAction::InternalProcessAction(ProcessActionCallback callback) {
-  const FocusElementProto& focus_element = proto_.focus_element();
-  if (focus_element.has_title()) {
-    // TODO(crbug.com/806868): Deprecate and remove message from this action and
-    // use tell instead.
-    delegate_->SetStatusMessage(focus_element.title());
-  }
-  Selector selector = Selector(focus_element.element()).MustBeVisible();
-  if (selector.empty()) {
-    VLOG(1) << __func__ << ": empty selector";
-    UpdateProcessedAction(INVALID_SELECTOR);
-    std::move(callback).Run(std::move(processed_action_proto_));
-    return;
-  }
-
-  // Default value of 25%. This value should always be overriden
-  // by backend.
-  TopPadding top_padding{0.25, TopPadding::Unit::RATIO};
-  switch (focus_element.top_padding().top_padding_case()) {
-    case FocusElementProto::TopPadding::kPixels:
-      top_padding = TopPadding(focus_element.top_padding().pixels(),
-                               TopPadding::Unit::PIXELS);
-      break;
-    case FocusElementProto::TopPadding::kRatio:
-      top_padding = TopPadding(focus_element.top_padding().ratio(),
-                               TopPadding::Unit::RATIO);
-      break;
-    case FocusElementProto::TopPadding::TOP_PADDING_NOT_SET:
-      // Default value set before switch.
-      break;
-  }
-
-  delegate_->ShortWaitForElement(
-      selector, base::BindOnce(&FocusElementAction::OnWaitForElement,
-                               weak_ptr_factory_.GetWeakPtr(),
-                               std::move(callback), selector, top_padding));
-}
-
-void FocusElementAction::OnWaitForElement(ProcessActionCallback callback,
-                                          const Selector& selector,
-                                          const TopPadding& top_padding,
-                                          const ClientStatus& element_status) {
-  if (!element_status.ok()) {
-    UpdateProcessedAction(element_status.proto_status());
-    std::move(callback).Run(std::move(processed_action_proto_));
-    return;
-  }
-
-  auto actions = std::make_unique<action_delegate_util::ElementActionVector>();
-  actions->emplace_back(
-      base::BindOnce(&ActionDelegate::WaitForDocumentToBecomeInteractive,
-                     delegate_->GetWeakPtr()));
-  actions->emplace_back(base::BindOnce(&ActionDelegate::FocusElement,
-                                       delegate_->GetWeakPtr(), selector,
-                                       top_padding));
-  action_delegate_util::FindElementAndPerformAll(
-      delegate_, selector, std::move(actions),
-      base::BindOnce(&FocusElementAction::OnFocusElement,
-                     weak_ptr_factory_.GetWeakPtr(), std::move(callback)));
-}
-
-void FocusElementAction::OnFocusElement(ProcessActionCallback callback,
-                                        const ClientStatus& status) {
-  delegate_->SetTouchableElementArea(
-      proto().focus_element().touchable_element_area());
-  UpdateProcessedAction(status);
-  std::move(callback).Run(std::move(processed_action_proto_));
-}
-
-}  // namespace autofill_assistant
diff --git a/components/autofill_assistant/browser/actions/focus_element_action.h b/components/autofill_assistant/browser/actions/focus_element_action.h
deleted file mode 100644
index cc7b665..0000000
--- a/components/autofill_assistant/browser/actions/focus_element_action.h
+++ /dev/null
@@ -1,40 +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 COMPONENTS_AUTOFILL_ASSISTANT_BROWSER_ACTIONS_FOCUS_ELEMENT_ACTION_H_
-#define COMPONENTS_AUTOFILL_ASSISTANT_BROWSER_ACTIONS_FOCUS_ELEMENT_ACTION_H_
-
-#include "components/autofill_assistant/browser/actions/action.h"
-#include "components/autofill_assistant/browser/top_padding.h"
-
-#include "base/macros.h"
-#include "base/memory/weak_ptr.h"
-
-namespace autofill_assistant {
-
-// An action to focus a given element on Web. Scrolling to it first if required.
-class FocusElementAction : public Action {
- public:
-  explicit FocusElementAction(ActionDelegate* delegate,
-                              const ActionProto& proto);
-  ~FocusElementAction() override;
-
- private:
-  // Overrides Action:
-  void InternalProcessAction(ProcessActionCallback callback) override;
-
-  void OnWaitForElement(ProcessActionCallback callback,
-                        const Selector& selector,
-                        const TopPadding& top_padding,
-                        const ClientStatus& element_status);
-  void OnFocusElement(ProcessActionCallback callback,
-                      const ClientStatus& status);
-
-  base::WeakPtrFactory<FocusElementAction> weak_ptr_factory_{this};
-
-  DISALLOW_COPY_AND_ASSIGN(FocusElementAction);
-};
-
-}  // namespace autofill_assistant
-#endif  // COMPONENTS_AUTOFILL_ASSISTANT_BROWSER_ACTIONS_FOCUS_ELEMENT_ACTION_H_
diff --git a/components/autofill_assistant/browser/actions/mock_action_delegate.h b/components/autofill_assistant/browser/actions/mock_action_delegate.h
index e337fc70..f2a0ffe 100644
--- a/components/autofill_assistant/browser/actions/mock_action_delegate.h
+++ b/components/autofill_assistant/browser/actions/mock_action_delegate.h
@@ -141,7 +141,7 @@
                     const ElementFinder::Result& element,
                     base::OnceCallback<void(const ClientStatus&)> callback));
 
-  MOCK_METHOD4(FocusElement,
+  MOCK_METHOD4(ScrollToElementPosition,
                void(const Selector& selector,
                     const TopPadding& top_padding,
                     const ElementFinder::Result& element,
diff --git a/components/autofill_assistant/browser/actions/show_cast_action.cc b/components/autofill_assistant/browser/actions/show_cast_action.cc
new file mode 100644
index 0000000..6d683ded
--- /dev/null
+++ b/components/autofill_assistant/browser/actions/show_cast_action.cc
@@ -0,0 +1,95 @@
+// 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.
+
+#include "components/autofill_assistant/browser/actions/show_cast_action.h"
+
+#include <memory>
+#include <utility>
+
+#include "base/bind.h"
+#include "base/callback.h"
+#include "components/autofill_assistant/browser/actions/action_delegate.h"
+#include "components/autofill_assistant/browser/actions/action_delegate_util.h"
+#include "components/autofill_assistant/browser/client_status.h"
+#include "components/autofill_assistant/browser/service.pb.h"
+
+namespace autofill_assistant {
+
+ShowCastAction::ShowCastAction(ActionDelegate* delegate,
+                               const ActionProto& proto)
+    : Action(delegate, proto) {
+  DCHECK(proto_.has_show_cast());
+}
+
+ShowCastAction::~ShowCastAction() {}
+
+void ShowCastAction::InternalProcessAction(ProcessActionCallback callback) {
+  const ShowCastProto& show_cast = proto_.show_cast();
+  if (show_cast.has_title()) {
+    // TODO(crbug.com/806868): Deprecate and remove message from this action and
+    // use tell instead.
+    delegate_->SetStatusMessage(show_cast.title());
+  }
+  Selector selector = Selector(show_cast.element_to_present()).MustBeVisible();
+  if (selector.empty()) {
+    VLOG(1) << __func__ << ": empty selector";
+    UpdateProcessedAction(INVALID_SELECTOR);
+    std::move(callback).Run(std::move(processed_action_proto_));
+    return;
+  }
+
+  // Default value of 25%. This value should always be overridden by backend.
+  TopPadding top_padding{0.25, TopPadding::Unit::RATIO};
+  switch (show_cast.top_padding().top_padding_case()) {
+    case ShowCastProto::TopPadding::kPixels:
+      top_padding = TopPadding(show_cast.top_padding().pixels(),
+                               TopPadding::Unit::PIXELS);
+      break;
+    case ShowCastProto::TopPadding::kRatio:
+      top_padding =
+          TopPadding(show_cast.top_padding().ratio(), TopPadding::Unit::RATIO);
+      break;
+    case ShowCastProto::TopPadding::TOP_PADDING_NOT_SET:
+      // Default value set before switch.
+      break;
+  }
+
+  delegate_->ShortWaitForElement(
+      selector, base::BindOnce(&ShowCastAction::OnWaitForElement,
+                               weak_ptr_factory_.GetWeakPtr(),
+                               std::move(callback), selector, top_padding));
+}
+
+void ShowCastAction::OnWaitForElement(ProcessActionCallback callback,
+                                      const Selector& selector,
+                                      const TopPadding& top_padding,
+                                      const ClientStatus& element_status) {
+  if (!element_status.ok()) {
+    UpdateProcessedAction(element_status.proto_status());
+    std::move(callback).Run(std::move(processed_action_proto_));
+    return;
+  }
+
+  auto actions = std::make_unique<action_delegate_util::ElementActionVector>();
+  actions->emplace_back(
+      base::BindOnce(&ActionDelegate::WaitForDocumentToBecomeInteractive,
+                     delegate_->GetWeakPtr()));
+  actions->emplace_back(base::BindOnce(&ActionDelegate::ScrollToElementPosition,
+                                       delegate_->GetWeakPtr(), selector,
+                                       top_padding));
+  action_delegate_util::FindElementAndPerformAll(
+      delegate_, selector, std::move(actions),
+      base::BindOnce(&ShowCastAction::OnScrollToElementPosition,
+                     weak_ptr_factory_.GetWeakPtr(), std::move(callback)));
+}
+
+void ShowCastAction::OnScrollToElementPosition(ProcessActionCallback callback,
+                                               const ClientStatus& status) {
+  delegate_->SetTouchableElementArea(
+      proto().show_cast().touchable_element_area());
+  UpdateProcessedAction(status);
+  std::move(callback).Run(std::move(processed_action_proto_));
+}
+
+}  // namespace autofill_assistant
diff --git a/components/autofill_assistant/browser/actions/show_cast_action.h b/components/autofill_assistant/browser/actions/show_cast_action.h
new file mode 100644
index 0000000..1bb8ac7
--- /dev/null
+++ b/components/autofill_assistant/browser/actions/show_cast_action.h
@@ -0,0 +1,40 @@
+// 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 COMPONENTS_AUTOFILL_ASSISTANT_BROWSER_ACTIONS_SHOW_CAST_ACTION_H_
+#define COMPONENTS_AUTOFILL_ASSISTANT_BROWSER_ACTIONS_SHOW_CAST_ACTION_H_
+
+#include "components/autofill_assistant/browser/actions/action.h"
+#include "components/autofill_assistant/browser/top_padding.h"
+
+#include "base/macros.h"
+#include "base/memory/weak_ptr.h"
+
+namespace autofill_assistant {
+
+// An action to show cast a given element on Web. Scrolling to it first if
+// required.
+class ShowCastAction : public Action {
+ public:
+  explicit ShowCastAction(ActionDelegate* delegate, const ActionProto& proto);
+  ~ShowCastAction() override;
+
+ private:
+  // Overrides Action:
+  void InternalProcessAction(ProcessActionCallback callback) override;
+
+  void OnWaitForElement(ProcessActionCallback callback,
+                        const Selector& selector,
+                        const TopPadding& top_padding,
+                        const ClientStatus& element_status);
+  void OnScrollToElementPosition(ProcessActionCallback callback,
+                                 const ClientStatus& status);
+
+  base::WeakPtrFactory<ShowCastAction> weak_ptr_factory_{this};
+
+  DISALLOW_COPY_AND_ASSIGN(ShowCastAction);
+};
+
+}  // namespace autofill_assistant
+#endif  // COMPONENTS_AUTOFILL_ASSISTANT_BROWSER_ACTIONS_SHOW_CAST_ACTION_H_
diff --git a/components/autofill_assistant/browser/actions/focus_element_action_unittest.cc b/components/autofill_assistant/browser/actions/show_cast_action_unittest.cc
similarity index 77%
rename from components/autofill_assistant/browser/actions/focus_element_action_unittest.cc
rename to components/autofill_assistant/browser/actions/show_cast_action_unittest.cc
index 9461c750..4efed9a0 100644
--- a/components/autofill_assistant/browser/actions/focus_element_action_unittest.cc
+++ b/components/autofill_assistant/browser/actions/show_cast_action_unittest.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "components/autofill_assistant/browser/actions/focus_element_action.h"
+#include "components/autofill_assistant/browser/actions/show_cast_action.h"
 
 #include "base/test/gmock_callback_support.h"
 #include "base/test/mock_callback.h"
@@ -21,37 +21,37 @@
 using ::testing::Pointee;
 using ::testing::Property;
 
-class FocusElementActionTest : public testing::Test {
+class ShowCastActionTest : public testing::Test {
  public:
-  FocusElementActionTest() {}
+  ShowCastActionTest() {}
 
   void SetUp() override {}
 
  protected:
   void Run() {
     ActionProto action_proto;
-    *action_proto.mutable_focus_element() = proto_;
-    FocusElementAction action(&mock_action_delegate_, action_proto);
+    *action_proto.mutable_show_cast() = proto_;
+    ShowCastAction action(&mock_action_delegate_, action_proto);
     action.ProcessAction(callback_.Get());
   }
 
   MockActionDelegate mock_action_delegate_;
   base::MockCallback<Action::ProcessActionCallback> callback_;
-  FocusElementProto proto_;
+  ShowCastProto proto_;
 };
 
-TEST_F(FocusElementActionTest, EmptySelectorFails) {
+TEST_F(ShowCastActionTest, EmptySelectorFails) {
   EXPECT_CALL(
       callback_,
       Run(Pointee(Property(&ProcessedActionProto::status, INVALID_SELECTOR))));
   Run();
 }
 
-TEST_F(FocusElementActionTest, ActionFailsForNonExistentElement) {
+TEST_F(ShowCastActionTest, ActionFailsForNonExistentElement) {
   InSequence sequence;
 
   Selector selector({"#focus"});
-  *proto_.mutable_element() = selector.proto;
+  *proto_.mutable_element_to_present() = selector.proto;
 
   Selector expected_selector = selector;
   expected_selector.MustBeVisible();
@@ -65,11 +65,11 @@
   Run();
 }
 
-TEST_F(FocusElementActionTest, CheckExpectedCallChain) {
+TEST_F(ShowCastActionTest, CheckExpectedCallChain) {
   InSequence sequence;
 
   Selector selector({"#focus"});
-  *proto_.mutable_element() = selector.proto;
+  *proto_.mutable_element_to_present() = selector.proto;
 
   Selector expected_selector = selector;
   expected_selector.MustBeVisible();
@@ -81,9 +81,9 @@
   EXPECT_CALL(mock_action_delegate_, WaitForDocumentToBecomeInteractive(
                                          EqualsElement(expected_element), _))
       .WillOnce(RunOnceCallback<1>(OkClientStatus()));
-  EXPECT_CALL(
-      mock_action_delegate_,
-      FocusElement(expected_selector, _, EqualsElement(expected_element), _))
+  EXPECT_CALL(mock_action_delegate_,
+              ScrollToElementPosition(expected_selector, _,
+                                      EqualsElement(expected_element), _))
       .WillOnce(RunOnceCallback<3>(OkClientStatus()));
   EXPECT_CALL(mock_action_delegate_, SetTouchableElementArea(_));
 
@@ -93,17 +93,17 @@
   Run();
 }
 
-TEST_F(FocusElementActionTest, SetsTitleIfSpecified) {
+TEST_F(ShowCastActionTest, SetsTitleIfSpecified) {
   ON_CALL(mock_action_delegate_, OnShortWaitForElement(_, _))
       .WillByDefault(RunOnceCallback<1>(OkClientStatus()));
   test_util::MockFindAnyElement(mock_action_delegate_);
   ON_CALL(mock_action_delegate_, WaitForDocumentToBecomeInteractive(_, _))
       .WillByDefault(RunOnceCallback<1>(OkClientStatus()));
-  ON_CALL(mock_action_delegate_, FocusElement(_, _, _, _))
+  ON_CALL(mock_action_delegate_, ScrollToElementPosition(_, _, _, _))
       .WillByDefault(RunOnceCallback<3>(OkClientStatus()));
 
   Selector selector({"#focus"});
-  *proto_.mutable_element() = selector.proto;
+  *proto_.mutable_element_to_present() = selector.proto;
   proto_.set_title("Title");
 
   EXPECT_CALL(mock_action_delegate_, SetStatusMessage("Title"));
diff --git a/components/autofill_assistant/browser/protocol_utils.cc b/components/autofill_assistant/browser/protocol_utils.cc
index 3adde16..c98f23ed 100644
--- a/components/autofill_assistant/browser/protocol_utils.cc
+++ b/components/autofill_assistant/browser/protocol_utils.cc
@@ -13,7 +13,6 @@
 #include "components/autofill_assistant/browser/actions/configure_bottom_sheet_action.h"
 #include "components/autofill_assistant/browser/actions/configure_ui_state_action.h"
 #include "components/autofill_assistant/browser/actions/expect_navigation_action.h"
-#include "components/autofill_assistant/browser/actions/focus_element_action.h"
 #include "components/autofill_assistant/browser/actions/generate_password_for_form_field_action.h"
 #include "components/autofill_assistant/browser/actions/get_element_status_action.h"
 #include "components/autofill_assistant/browser/actions/highlight_element_action.h"
@@ -25,6 +24,7 @@
 #include "components/autofill_assistant/browser/actions/select_option_action.h"
 #include "components/autofill_assistant/browser/actions/set_attribute_action.h"
 #include "components/autofill_assistant/browser/actions/set_form_field_value_action.h"
+#include "components/autofill_assistant/browser/actions/show_cast_action.h"
 #include "components/autofill_assistant/browser/actions/show_details_action.h"
 #include "components/autofill_assistant/browser/actions/show_form_action.h"
 #include "components/autofill_assistant/browser/actions/show_generic_ui_action.h"
@@ -176,8 +176,8 @@
       return std::make_unique<ClickAction>(delegate, action);
     case ActionProto::ActionInfoCase::kTell:
       return std::make_unique<TellAction>(delegate, action);
-    case ActionProto::ActionInfoCase::kFocusElement:
-      return std::make_unique<FocusElementAction>(delegate, action);
+    case ActionProto::ActionInfoCase::kShowCast:
+      return std::make_unique<ShowCastAction>(delegate, action);
     case ActionProto::ActionInfoCase::kUseAddress:
       return std::make_unique<UseAddressAction>(delegate, action);
     case ActionProto::ActionInfoCase::kUseCard:
diff --git a/components/autofill_assistant/browser/script_executor.cc b/components/autofill_assistant/browser/script_executor.cc
index 628bc78ae..1522e950 100644
--- a/components/autofill_assistant/browser/script_executor.cc
+++ b/components/autofill_assistant/browser/script_executor.cc
@@ -188,7 +188,7 @@
       return true;
     case ActionProto::ActionInfoCase::kClick:
     case ActionProto::ActionInfoCase::kTell:
-    case ActionProto::ActionInfoCase::kFocusElement:
+    case ActionProto::ActionInfoCase::kShowCast:
     case ActionProto::ActionInfoCase::kUseAddress:
     case ActionProto::ActionInfoCase::kUseCard:
     case ActionProto::ActionInfoCase::kWaitForDom:
@@ -536,15 +536,15 @@
   delegate_->GetWebController()->HighlightElement(element, std::move(callback));
 }
 
-void ScriptExecutor::FocusElement(
+void ScriptExecutor::ScrollToElementPosition(
     const Selector& selector,
     const TopPadding& top_padding,
     const ElementFinder::Result& element,
     base::OnceCallback<void(const ClientStatus&)> callback) {
   last_focused_element_selector_ = selector;
   last_focused_element_top_padding_ = top_padding;
-  delegate_->GetWebController()->FocusElement(element, top_padding,
-                                              std::move(callback));
+  delegate_->GetWebController()->ScrollToElementPosition(element, top_padding,
+                                                         std::move(callback));
 }
 
 void ScriptExecutor::SetTouchableElementArea(
@@ -1245,7 +1245,7 @@
         base::BindOnce(&ActionDelegate::WaitForDocumentToBecomeInteractive,
                        main_script_->GetWeakPtr()));
     actions->emplace_back(base::BindOnce(
-        &ActionDelegate::FocusElement, main_script_->GetWeakPtr(),
+        &ActionDelegate::ScrollToElementPosition, main_script_->GetWeakPtr(),
         main_script_->last_focused_element_selector_,
         main_script_->last_focused_element_top_padding_));
     action_delegate_util::FindElementAndPerformAll(
diff --git a/components/autofill_assistant/browser/script_executor.h b/components/autofill_assistant/browser/script_executor.h
index 54d1d91..8ee39b1 100644
--- a/components/autofill_assistant/browser/script_executor.h
+++ b/components/autofill_assistant/browser/script_executor.h
@@ -174,7 +174,7 @@
   void HighlightElement(
       const ElementFinder::Result& element,
       base::OnceCallback<void(const ClientStatus&)> callback) override;
-  void FocusElement(
+  void ScrollToElementPosition(
       const Selector& selector,
       const TopPadding& top_padding,
       const ElementFinder::Result& element,
diff --git a/components/autofill_assistant/browser/service.proto b/components/autofill_assistant/browser/service.proto
index 07abf79..dc0506f 100644
--- a/components/autofill_assistant/browser/service.proto
+++ b/components/autofill_assistant/browser/service.proto
@@ -507,7 +507,7 @@
     NavigateProto navigate = 9;
     PromptProto prompt = 10;
     TellProto tell = 11;
-    FocusElementProto focus_element = 12;
+    ShowCastProto show_cast = 12;
     WaitForDomProto wait_for_dom = 19;
     UseCreditCardProto use_card = 28;
     UseAddressProto use_address = 29;
@@ -1054,8 +1054,8 @@
   optional bool needs_ui = 2 [default = true];
 }
 
-// Contain all arguments to focus on an element.
-message FocusElementProto {
+// Contain all arguments to show cast on an element.
+message ShowCastProto {
   message TopPadding {
     oneof top_padding {
       // Padding in CSS pixels. Eg. 20.
@@ -1064,8 +1064,9 @@
       float ratio = 2;
     }
   }
-  // Element to focus on.
-  optional SelectorProto element = 1;
+
+  // Element to scroll to.
+  optional SelectorProto element_to_present = 1;
 
   // Optional title to show in the status bar.
   optional string title = 2;
@@ -1539,7 +1540,7 @@
   reserved 10;
 }
 
-// Allow choosing one or more possibility. If FocusElement was called just
+// Allow choosing one or more possibility. If ShowCast was called just
 // before, allow interaction with the touchable element area, otherwise don't
 // allow any interactions.
 message PromptProto {
diff --git a/components/autofill_assistant/browser/service/lite_service.cc b/components/autofill_assistant/browser/service/lite_service.cc
index 097a17f69..f072214 100644
--- a/components/autofill_assistant/browser/service/lite_service.cc
+++ b/components/autofill_assistant/browser/service/lite_service.cc
@@ -12,17 +12,20 @@
 #include "base/bind.h"
 #include "base/logging.h"
 #include "base/strings/string_number_conversions.h"
+#include "components/autofill_assistant/browser/protocol_utils.h"
 #include "net/http/http_status_code.h"
 
 namespace autofill_assistant {
 
 LiteService::LiteService(
-    std::unique_ptr<Service> service_impl,
+    std::unique_ptr<ServiceRequestSender> request_sender,
+    const GURL& get_actions_server_url,
     const std::string& trigger_script_path,
     base::OnceCallback<void(Metrics::LiteScriptFinishedState)>
         notify_finished_callback,
     base::RepeatingCallback<void(bool)> notify_script_running_callback)
-    : service_impl_(std::move(service_impl)),
+    : request_sender_(std::move(request_sender)),
+      get_actions_server_url_(get_actions_server_url),
       trigger_script_path_(trigger_script_path),
       notify_finished_callback_(std::move(notify_finished_callback)),
       notify_script_running_callback_(
@@ -70,10 +73,12 @@
 
   // Note: trigger context and payloads should not be sent to the backend for
   // privacy reasons.
-  service_impl_->GetActions(
-      trigger_script_path_, GURL(), TriggerContextImpl(),
-      /* global_payload = */ std::string(),
-      /* script_payload = */ std::string(),
+  request_sender_->SendRequest(
+      get_actions_server_url_,
+      ProtocolUtils::CreateInitialScriptActionsRequest(
+          trigger_script_path_, GURL(), /* global_payload = */ std::string(),
+          /* script_payload = */ std::string(), EmptyClientContext().AsProto(),
+          /* script_parameters = */ {}),
       base::BindOnce(&LiteService::OnGetActions, weak_ptr_factory_.GetWeakPtr(),
                      std::move(callback)));
 }
diff --git a/components/autofill_assistant/browser/service/lite_service.h b/components/autofill_assistant/browser/service/lite_service.h
index dd846e1..7072ae9 100644
--- a/components/autofill_assistant/browser/service/lite_service.h
+++ b/components/autofill_assistant/browser/service/lite_service.h
@@ -13,6 +13,7 @@
 #include "base/memory/weak_ptr.h"
 #include "components/autofill_assistant/browser/metrics.h"
 #include "components/autofill_assistant/browser/service/service_impl.h"
+#include "components/autofill_assistant/browser/service/service_request_sender.h"
 #include "components/version_info/version_info.h"
 #include "url/gurl.h"
 
@@ -25,7 +26,8 @@
 class LiteService : public Service {
  public:
   explicit LiteService(
-      std::unique_ptr<Service> service_impl,
+      std::unique_ptr<ServiceRequestSender> request_sender,
+      const GURL& get_actions_server_url,
       const std::string& trigger_script_path,
       base::OnceCallback<void(Metrics::LiteScriptFinishedState)>
           notify_finished_callback,
@@ -78,8 +80,12 @@
   void StopWithoutErrorMessage(ResponseCallback callback,
                                Metrics::LiteScriptFinishedState state);
 
-  // The actual service that communicates with the backend.
-  std::unique_ptr<Service> service_impl_;
+  // The request sender that communicates with the backend.
+  std::unique_ptr<ServiceRequestSender> request_sender_;
+
+  // The GURL of the GetActions/GetNextActions rpc handler.
+  GURL get_actions_server_url_;
+
   // The script path to fetch actions from.
   std::string trigger_script_path_;
 
diff --git a/components/autofill_assistant/browser/service/lite_service_unittest.cc b/components/autofill_assistant/browser/service/lite_service_unittest.cc
index 5e2bfb2..d6e40ec 100644
--- a/components/autofill_assistant/browser/service/lite_service_unittest.cc
+++ b/components/autofill_assistant/browser/service/lite_service_unittest.cc
@@ -5,6 +5,7 @@
 #include "components/autofill_assistant/browser/service/lite_service.h"
 #include "components/autofill_assistant/browser/service.pb.h"
 #include "components/autofill_assistant/browser/service/mock_service.h"
+#include "components/autofill_assistant/browser/service/mock_service_request_sender.h"
 #include "components/autofill_assistant/browser/service/service.h"
 #include "components/autofill_assistant/browser/test_util.h"
 #include "components/autofill_assistant/browser/trigger_context.h"
@@ -27,31 +28,31 @@
 namespace {
 const char kFakeScriptPath[] = "localhost/chrome/test";
 const char kFakeUrl[] = "https://www.example.com";
+const char kGetActionsServerUrl[] =
+    "https://www.fake.backend.com/action_server";
 }  // namespace
 
 using ::testing::_;
 using ::testing::AtMost;
 using ::testing::Eq;
+using ::testing::NiceMock;
 
 class LiteServiceTest : public testing::Test {
  protected:
   LiteServiceTest() {
-    auto service_impl = std::make_unique<MockService>();
-    mock_native_service_ = service_impl.get();
+    auto mock_request_sender =
+        std::make_unique<NiceMock<MockServiceRequestSender>>();
+    mock_request_sender_ = mock_request_sender.get();
 
     lite_service_ = std::make_unique<LiteService>(
-        std::move(service_impl), kFakeScriptPath, mock_finished_callback_.Get(),
+        std::move(mock_request_sender), GURL(kGetActionsServerUrl),
+        kFakeScriptPath, mock_finished_callback_.Get(),
         mock_script_running_callback_.Get());
-    EXPECT_CALL(*mock_native_service_, OnGetScriptsForUrl).Times(0);
-    EXPECT_CALL(*mock_native_service_, OnGetNextActions).Times(0);
 
-    EXPECT_CALL(*mock_native_service_,
-                OnGetActions(kFakeScriptPath, _, _, _, _, _))
+    EXPECT_CALL(*mock_request_sender_,
+                OnSendRequest(GURL(kGetActionsServerUrl), _, _))
         .Times(AtMost(1))
-        .WillOnce([&](const std::string& script_path, const GURL& url,
-                      const TriggerContext& trigger_context,
-                      const std::string& global_payload,
-                      const std::string& script_payload,
+        .WillOnce([&](const GURL& url, const std::string& request_body,
                       Service::ResponseCallback& callback) {
           std::string serialized_response;
           get_actions_response_.SerializeToString(&serialized_response);
@@ -78,13 +79,13 @@
     EXPECT_CALL(mock_finished_callback_, Run(state));
   }
 
+  NiceMock<MockServiceRequestSender>* mock_request_sender_;
   base::MockCallback<base::OnceCallback<void(Metrics::LiteScriptFinishedState)>>
       mock_finished_callback_;
   base::MockCallback<base::RepeatingCallback<void(bool)>>
       mock_script_running_callback_;
   base::MockCallback<base::OnceCallback<void(int, const std::string&)>>
       mock_response_callback_;
-  MockService* mock_native_service_ = nullptr;
   std::unique_ptr<LiteService> lite_service_;
   ActionsResponseProto get_actions_response_;
 };
@@ -98,9 +99,10 @@
       notification_callback,
       Run(Metrics::LiteScriptFinishedState::LITE_SCRIPT_SERVICE_DELETED));
   {
-    LiteService lite_service(std::make_unique<MockService>(), kFakeScriptPath,
-                             notification_callback.Get(),
-                             script_running_callback.Get());
+    LiteService lite_service(
+        std::make_unique<NiceMock<MockServiceRequestSender>>(),
+        GURL(kGetActionsServerUrl), kFakeScriptPath,
+        notification_callback.Get(), script_running_callback.Get());
   }
 }
 
@@ -125,20 +127,20 @@
   TriggerContextImpl non_empty_context;
   non_empty_context.SetCallerAccountHash("something");
 
-  EXPECT_CALL(*mock_native_service_,
-              OnGetActions(kFakeScriptPath, _, _, _, _, _))
+  EXPECT_CALL(*mock_request_sender_,
+              OnSendRequest(GURL(kGetActionsServerUrl), _, _))
       .Times(1)
-      .WillOnce([&](const std::string& script_path, const GURL& url,
-                    const TriggerContext& trigger_context,
-                    const std::string& global_payload,
-                    const std::string& script_payload,
+      .WillOnce([&](const GURL& url, const std::string& request_body,
                     Service::ResponseCallback& callback) {
-        EXPECT_THAT(script_path, Eq(kFakeScriptPath));
+        ScriptActionRequestProto rpc_proto;
+        ASSERT_TRUE(rpc_proto.ParseFromString(request_body));
+
+        EXPECT_THAT(rpc_proto.initial_request().query().script_path(0),
+                    Eq(kFakeScriptPath));
         // All other information has been cleared.
-        EXPECT_THAT(url, Eq(GURL()));
-        EXPECT_THAT(trigger_context.get_caller_account_hash(), Eq(""));
-        EXPECT_THAT(global_payload, Eq(""));
-        EXPECT_THAT(script_payload, Eq(""));
+        EXPECT_THAT(rpc_proto.global_payload(), Eq(""));
+        EXPECT_THAT(rpc_proto.script_payload(), Eq(""));
+        EXPECT_THAT(rpc_proto.client_context(), Eq(ClientContextProto()));
       });
 
   lite_service_->GetActions(kFakeScriptPath, GURL(kFakeUrl), non_empty_context,
@@ -157,13 +159,10 @@
 TEST_F(LiteServiceTest, StopsOnGetActionsFailed) {
   ExpectStopWithFinishedState(
       Metrics::LiteScriptFinishedState::LITE_SCRIPT_GET_ACTIONS_FAILED);
-  EXPECT_CALL(*mock_native_service_,
-              OnGetActions(kFakeScriptPath, _, _, _, _, _))
+  EXPECT_CALL(*mock_request_sender_,
+              OnSendRequest(GURL(kGetActionsServerUrl), _, _))
       .Times(1)
-      .WillOnce([&](const std::string& script_path, const GURL& url,
-                    const TriggerContext& trigger_context,
-                    const std::string& global_payload,
-                    const std::string& script_payload,
+      .WillOnce([&](const GURL& url, const std::string& request_body,
                     Service::ResponseCallback& callback) {
         std::move(callback).Run(net::HTTP_UNAUTHORIZED, std::string());
       });
@@ -177,13 +176,10 @@
 TEST_F(LiteServiceTest, StopsOnGetActionsParsingError) {
   ExpectStopWithFinishedState(
       Metrics::LiteScriptFinishedState::LITE_SCRIPT_GET_ACTIONS_PARSE_ERROR);
-  EXPECT_CALL(*mock_native_service_,
-              OnGetActions(kFakeScriptPath, _, _, _, _, _))
+  EXPECT_CALL(*mock_request_sender_,
+              OnSendRequest(GURL(kGetActionsServerUrl), _, _))
       .Times(1)
-      .WillOnce([&](const std::string& script_path, const GURL& url,
-                    const TriggerContext& trigger_context,
-                    const std::string& global_payload,
-                    const std::string& script_payload,
+      .WillOnce([&](const GURL& url, const std::string& request_body,
                     Service::ResponseCallback& callback) {
         std::move(callback).Run(net::HTTP_OK, std::string("invalid proto"));
       });
diff --git a/components/autofill_assistant/browser/service/lite_service_util_unittest.cc b/components/autofill_assistant/browser/service/lite_service_util_unittest.cc
index 4863be0..d2b8ec6 100644
--- a/components/autofill_assistant/browser/service/lite_service_util_unittest.cc
+++ b/components/autofill_assistant/browser/service/lite_service_util_unittest.cc
@@ -111,7 +111,7 @@
   unsafe_actions.add_actions()->mutable_set_form_value();
   unsafe_actions.add_actions()->mutable_select_option();
   unsafe_actions.add_actions()->mutable_navigate();
-  unsafe_actions.add_actions()->mutable_focus_element();
+  unsafe_actions.add_actions()->mutable_show_cast();
   unsafe_actions.add_actions()->mutable_use_card();
   unsafe_actions.add_actions()->mutable_use_address();
   unsafe_actions.add_actions()->mutable_upload_dom();
diff --git a/components/autofill_assistant/browser/top_padding.h b/components/autofill_assistant/browser/top_padding.h
index 472c4c5..1c69a9a 100644
--- a/components/autofill_assistant/browser/top_padding.h
+++ b/components/autofill_assistant/browser/top_padding.h
@@ -8,7 +8,7 @@
 namespace autofill_assistant {
 
 // A simple structure that holds information about the top padding.
-// This structure is used by WebController.FocusElement.
+// This structure is used by WebController.ScrollToElementPosition.
 //
 // Only one type of value can be set (pixels or ratio). If one is
 // set, other returns 0.
diff --git a/components/autofill_assistant/browser/web/mock_web_controller.h b/components/autofill_assistant/browser/web/mock_web_controller.h
index 35b3b7e3..5c59d35b 100644
--- a/components/autofill_assistant/browser/web/mock_web_controller.h
+++ b/components/autofill_assistant/browser/web/mock_web_controller.h
@@ -46,13 +46,13 @@
                void(const ElementFinder::Result&,
                     base::OnceCallback<void(const ClientStatus&)>& callback));
 
-  void FocusElement(
+  void ScrollToElementPosition(
       const ElementFinder::Result& element,
       const TopPadding& top_padding,
       base::OnceCallback<void(const ClientStatus&)> callback) override {
-    OnFocusElement(element, top_padding, callback);
+    OnScrollToElementPosition(element, top_padding, callback);
   }
-  MOCK_METHOD3(OnFocusElement,
+  MOCK_METHOD3(OnScrollToElementPosition,
                void(const ElementFinder::Result& element,
                     const TopPadding& top_padding,
                     base::OnceCallback<void(const ClientStatus&)>& callback));
diff --git a/components/autofill_assistant/browser/web/web_controller.cc b/components/autofill_assistant/browser/web/web_controller.cc
index c3e63ca..3fbf404 100644
--- a/components/autofill_assistant/browser/web/web_controller.cc
+++ b/components/autofill_assistant/browser/web/web_controller.cc
@@ -125,7 +125,7 @@
       })";
 
 // Javascript code to select the current value.
-const char* const kSelectFieldValue = "function() { this.select(); }";
+const char* const kSelectFieldValueScript = "function() { this.select(); }";
 
 // Javascript code to set the 'value' attribute of a node and then fire a
 // "change" event to trigger any listeners.
@@ -165,7 +165,7 @@
     })";
 
 // Javascript code to click on an element.
-const char* const kClickElement =
+const char* const kClickElementScript =
     R"(function (selector) {
       selector.click();
     })";
@@ -455,7 +455,7 @@
         runtime::CallFunctionOnParams::Builder()
             .SetObjectId(element.object_id)
             .SetArguments(std::move(argument))
-            .SetFunctionDeclaration(kClickElement)
+            .SetFunctionDeclaration(kClickElementScript)
             .Build(),
         element.node_frame_id,
         base::BindOnce(
@@ -990,7 +990,7 @@
                          std::move(callback))));
 }
 
-void WebController::FocusElement(
+void WebController::ScrollToElementPosition(
     const ElementFinder::Result& element,
     const TopPadding& top_padding,
     base::OnceCallback<void(const ClientStatus&)> callback) {
@@ -1093,7 +1093,7 @@
   devtools_client_->GetRuntime()->CallFunctionOn(
       runtime::CallFunctionOnParams::Builder()
           .SetObjectId(element.object_id)
-          .SetFunctionDeclaration(std::string(kSelectFieldValue))
+          .SetFunctionDeclaration(std::string(kSelectFieldValueScript))
           .Build(),
       element.node_frame_id,
       base::BindOnce(
diff --git a/components/autofill_assistant/browser/web/web_controller.h b/components/autofill_assistant/browser/web/web_controller.h
index 9195413a..a22520c 100644
--- a/components/autofill_assistant/browser/web/web_controller.h
+++ b/components/autofill_assistant/browser/web/web_controller.h
@@ -134,9 +134,9 @@
       const ElementFinder::Result& element,
       base::OnceCallback<void(const ClientStatus&)> callback);
 
-  // Focus on |element|. |top_padding| specifies the padding between the
-  // focused element and the top.
-  virtual void FocusElement(
+  // Scroll to an |element|'s position. |top_padding| specifies the padding
+  // between the focused element and the top.
+  virtual void ScrollToElementPosition(
       const ElementFinder::Result& element,
       const TopPadding& top_padding,
       base::OnceCallback<void(const ClientStatus&)> callback);
diff --git a/components/autofill_assistant/browser/web/web_controller_browsertest.cc b/components/autofill_assistant/browser/web/web_controller_browsertest.cc
index 360b8dbc..21093792 100644
--- a/components/autofill_assistant/browser/web/web_controller_browsertest.cc
+++ b/components/autofill_assistant/browser/web/web_controller_browsertest.cc
@@ -234,21 +234,23 @@
     }
   }
 
-  void FocusElement(const Selector& selector, const TopPadding& top_padding) {
+  void ScrollToElementPosition(const Selector& selector,
+                               const TopPadding& top_padding) {
     base::RunLoop run_loop;
     ClientStatus result;
 
     web_controller_->FindElement(
         selector, /* strict_mode= */ true,
-        base::BindOnce(&WebControllerBrowserTest::FindFocusElementCallback,
-                       base::Unretained(this), top_padding,
-                       run_loop.QuitClosure(), &result));
+        base::BindOnce(
+            &WebControllerBrowserTest::FindScrollToElementPositionCallback,
+            base::Unretained(this), top_padding, run_loop.QuitClosure(),
+            &result));
 
     run_loop.Run();
     EXPECT_EQ(ACTION_APPLIED, result.proto_status());
   }
 
-  void FindFocusElementCallback(
+  void FindScrollToElementPositionCallback(
       const TopPadding& top_padding,
       base::OnceClosure done_callback,
       ClientStatus* result_output,
@@ -261,7 +263,7 @@
     }
 
     ASSERT_TRUE(element_result != nullptr);
-    web_controller_->FocusElement(
+    web_controller_->ScrollToElementPosition(
         *element_result, top_padding,
         base::BindOnce(&WebControllerBrowserTest::ElementRetainingCallback,
                        base::Unretained(this), std::move(element_result),
@@ -806,7 +808,7 @@
     ScrollContainerTo(initial_window_scroll_y);
 
     TopPadding top_padding{0.25, TopPadding::Unit::RATIO};
-    FocusElement(selector, top_padding);
+    ScrollToElementPosition(selector, top_padding);
     base::ListValue eval_result = content::EvalJs(shell(), R"(
       let item = document.querySelector("#scroll_item_5");
       let itemRect = item.getBoundingClientRect();
@@ -1431,7 +1433,7 @@
   EXPECT_EQ(TOO_MANY_ELEMENTS, status.proto_status());
 }
 
-IN_PROC_BROWSER_TEST_F(WebControllerBrowserTest, FocusElement) {
+IN_PROC_BROWSER_TEST_F(WebControllerBrowserTest, ScrollToElementPosition) {
   Selector selector({"#iframe", "#focus"});
 
   const std::string checkVisibleScript = R"(
@@ -1443,24 +1445,24 @@
   )";
   EXPECT_EQ(false, content::EvalJs(shell(), checkVisibleScript));
   TopPadding top_padding;
-  FocusElement(selector, top_padding);
+  ScrollToElementPosition(selector, top_padding);
   EXPECT_EQ(true, content::EvalJs(shell(), checkVisibleScript));
 }
 
 IN_PROC_BROWSER_TEST_F(WebControllerBrowserTest,
-                       FocusElementWithScrollIntoViewNeeded) {
+                       ScrollToElementPosition_WithScrollIntoViewNeeded) {
   TestScrollIntoView(/* initial_window_scroll_y= */ 0,
                      /* initial_container_scroll_y=*/0);
 }
 
 IN_PROC_BROWSER_TEST_F(WebControllerBrowserTest,
-                       FocusElementWithScrollIntoViewNotNeeded) {
+                       ScrollToElementPosition_WithScrollIntoViewNotNeeded) {
   TestScrollIntoView(/* initial_window_scroll_y= */ 0,
                      /* initial_container_scroll_y=*/200);
 }
 
 IN_PROC_BROWSER_TEST_F(WebControllerBrowserTest,
-                       FocusElement_WithPaddingInPixels) {
+                       ScrollToElementPosition_WithPaddingInPixels) {
   Selector selector({"#scroll-me"});
 
   const std::string checkScrollDifferentThanTargetScript = R"(
@@ -1475,7 +1477,7 @@
 
   // Scroll 360px from the top.
   TopPadding top_padding{/* value= */ 360, TopPadding::Unit::PIXELS};
-  FocusElement(selector, top_padding);
+  ScrollToElementPosition(selector, top_padding);
 
   double eval_result = content::EvalJs(shell(), R"(
       let scrollTarget = document.querySelector("#scroll-me");
@@ -1488,7 +1490,7 @@
 }
 
 IN_PROC_BROWSER_TEST_F(WebControllerBrowserTest,
-                       FocusElement_WithPaddingInRatio) {
+                       ScrollToElementPosition_WithPaddingInRatio) {
   Selector selector({"#scroll-me"});
 
   const std::string checkScrollDifferentThanTargetScript = R"(
@@ -1504,7 +1506,7 @@
 
   // Scroll 70% from the top.
   TopPadding top_padding{/* value= */ 0.7, TopPadding::Unit::RATIO};
-  FocusElement(selector, top_padding);
+  ScrollToElementPosition(selector, top_padding);
 
   base::ListValue eval_result = content::EvalJs(shell(), R"(
       let scrollTarget = document.querySelector("#scroll-me");
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_ar.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_ar.xtb
index 031497d..53c303c9 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_ar.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_ar.xtb
@@ -38,6 +38,7 @@
 <translation id="1994173015038366702">‏عنوان URL للموقع</translation>
 <translation id="2025115093177348061">الواقع المعزّز</translation>
 <translation id="2030769033451695672">يُرجى النقر للرجوع إلى <ph name="URL_OF_THE_CURRENT_TAB" />.</translation>
+<translation id="2054665754582400095">متى تستخدم جهازك</translation>
 <translation id="2079545284768500474">تراجع</translation>
 <translation id="2091887806945687916">الصوت</translation>
 <translation id="2107397443965016585">السؤال أولاً قبل السماح للمواقع الإلكترونية بتشغيل المحتوى المَحمي (موصى به)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_az.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_az.xtb
index 2fb9f919..8a1e6b3 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_az.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_az.xtb
@@ -38,6 +38,7 @@
 <translation id="1994173015038366702">Sayt URL-i</translation>
 <translation id="2025115093177348061">Artırılmış reallıq</translation>
 <translation id="2030769033451695672"><ph name="URL_OF_THE_CURRENT_TAB" /> bölməsinə qayıtmaq üçün toxunun</translation>
+<translation id="2054665754582400095">Mövcudluğunuz</translation>
 <translation id="2079545284768500474">Geri qaytarın</translation>
 <translation id="2091887806945687916">Səs</translation>
 <translation id="2107397443965016585">Saytlar qorunan kontenti oxutmazdan əvvəl icazə tələb edilsin (tövsiyyə edilir)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_be.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_be.xtb
index b1879f0..12178ac4 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_be.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_be.xtb
@@ -38,6 +38,7 @@
 <translation id="1994173015038366702">URL-адрас сайта</translation>
 <translation id="2025115093177348061">Дапоўненая рэальнасць</translation>
 <translation id="2030769033451695672">Націсніце, каб вярнуцца на ўкладку <ph name="URL_OF_THE_CURRENT_TAB" /></translation>
+<translation id="2054665754582400095">Ваша прысутнасць</translation>
 <translation id="2079545284768500474">Адрабіць</translation>
 <translation id="2091887806945687916">Гук</translation>
 <translation id="2107397443965016585">Пытаць, перш чым дазволіць прайграванне абароненага змесціва на сайтах (рэкамендуецца)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_bg.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_bg.xtb
index 1a19c59..8de8556c 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_bg.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_bg.xtb
@@ -38,6 +38,7 @@
 <translation id="1994173015038366702">URL адрес на сайт</translation>
 <translation id="2025115093177348061">Обогатена реалност</translation>
 <translation id="2030769033451695672">Докоснете, за да се върнете към <ph name="URL_OF_THE_CURRENT_TAB" /></translation>
+<translation id="2054665754582400095">Присъствието ви</translation>
 <translation id="2079545284768500474">Отмяна</translation>
 <translation id="2091887806945687916">Звук</translation>
 <translation id="2107397443965016585">Запитване преди разрешаване на сайтовете да възпроизвеждат защитено съдържание (препоръчително)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_cs.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_cs.xtb
index d240d81..88a7764 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_cs.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_cs.xtb
@@ -38,6 +38,7 @@
 <translation id="1994173015038366702">Adresa URL webu</translation>
 <translation id="2025115093177348061">Rozšířená realita</translation>
 <translation id="2030769033451695672">Klepnutím se vrátíte na web <ph name="URL_OF_THE_CURRENT_TAB" /></translation>
+<translation id="2054665754582400095">Vaše přítomnost</translation>
 <translation id="2079545284768500474">Vrátit zpět</translation>
 <translation id="2091887806945687916">Zvuk</translation>
 <translation id="2107397443965016585">Před povolením spuštění chráněného obsahu na webu se zeptat (doporučeno)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_da.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_da.xtb
index 107a361..3093ac5 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_da.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_da.xtb
@@ -38,6 +38,7 @@
 <translation id="1994173015038366702">Webadresse</translation>
 <translation id="2025115093177348061">Augmented reality</translation>
 <translation id="2030769033451695672">Tryk for at vende tilbage til <ph name="URL_OF_THE_CURRENT_TAB" /></translation>
+<translation id="2054665754582400095">Din tilstedeværelse</translation>
 <translation id="2079545284768500474">Fortryd</translation>
 <translation id="2091887806945687916">Lyd</translation>
 <translation id="2107397443965016585">Spørg, før websites får tilladelse til at afspille beskyttet indhold (anbefales)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_el.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_el.xtb
index dcd5f75..dce65a7c 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_el.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_el.xtb
@@ -38,6 +38,7 @@
 <translation id="1994173015038366702">URL ιστότοπου</translation>
 <translation id="2025115093177348061">Επαυξημένη πραγματικότητα</translation>
 <translation id="2030769033451695672">Πατήστε για επιστροφή σε <ph name="URL_OF_THE_CURRENT_TAB" /></translation>
+<translation id="2054665754582400095">Η παρουσία σας</translation>
 <translation id="2079545284768500474">Αναίρεση</translation>
 <translation id="2091887806945687916">Ήχος</translation>
 <translation id="2107397443965016585">Να γίνεται ερώτηση προτού επιτραπεί στους ιστοτόπους η αναπαραγωγή προστατευόμενου περιεχομένου (συνιστάται)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_eu.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_eu.xtb
index 812129d3..4c120485 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_eu.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_eu.xtb
@@ -38,6 +38,7 @@
 <translation id="1994173015038366702">Webgunearen URLa</translation>
 <translation id="2025115093177348061">Errealitate areagotua</translation>
 <translation id="2030769033451695672">Sakatu hau <ph name="URL_OF_THE_CURRENT_TAB" /> webgunera itzultzeko</translation>
+<translation id="2054665754582400095">Zure presentzia</translation>
 <translation id="2079545284768500474">Desegin</translation>
 <translation id="2091887806945687916">Soinua</translation>
 <translation id="2107397443965016585">Webguneei eduki babestua erreproduzitzeko baimena eman aurretik, eskatu onespena (gomendatua)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_fa.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_fa.xtb
index cd1de4f..79164bd 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_fa.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_fa.xtb
@@ -38,6 +38,7 @@
 <translation id="1994173015038366702">نشانی وب سایت</translation>
 <translation id="2025115093177348061">واقعیت افزوده</translation>
 <translation id="2030769033451695672">برای برگشتن به <ph name="URL_OF_THE_CURRENT_TAB" /> ضربه بزنید</translation>
+<translation id="2054665754582400095">حضور شما</translation>
 <translation id="2079545284768500474">لغو</translation>
 <translation id="2091887806945687916">صدا</translation>
 <translation id="2107397443965016585">قبل از اجازه به سایت‌ها برای پخش محتوای محافظت‌شده سؤال شود (توصیه می‌شود)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_fi.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_fi.xtb
index 5e4b973b..c40466c 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_fi.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_fi.xtb
@@ -38,6 +38,7 @@
 <translation id="1994173015038366702">Sivuston URL-osoite</translation>
 <translation id="2025115093177348061">Lisätty todellisuus</translation>
 <translation id="2030769033451695672">Napauta, niin palaat tänne: <ph name="URL_OF_THE_CURRENT_TAB" /></translation>
+<translation id="2054665754582400095">Paikallaolosi</translation>
 <translation id="2079545284768500474">Kumoa</translation>
 <translation id="2091887806945687916">Ääni</translation>
 <translation id="2107397443965016585">Kysy, saavatko sivustot toistaa suojattua sisältöä (suositus)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_fil.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_fil.xtb
index a38e319e..0fe6d66 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_fil.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_fil.xtb
@@ -38,6 +38,7 @@
 <translation id="1994173015038366702">URL ng site</translation>
 <translation id="2025115093177348061">Augmented reality</translation>
 <translation id="2030769033451695672">Mag-tap para bumalik sa <ph name="URL_OF_THE_CURRENT_TAB" /></translation>
+<translation id="2054665754582400095">Ang iyong presensya</translation>
 <translation id="2079545284768500474">I-undo</translation>
 <translation id="2091887806945687916">Tunog</translation>
 <translation id="2107397443965016585">Magtanong bago pahintulutan ang mga site na mag-play ng pinoprotektahang content (inirerekomenda)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_fr-CA.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_fr-CA.xtb
index dfcc37d..6181e45 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_fr-CA.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_fr-CA.xtb
@@ -38,6 +38,7 @@
 <translation id="1994173015038366702">URL du site</translation>
 <translation id="2025115093177348061">Réalité augmentée</translation>
 <translation id="2030769033451695672">Touchez pour revenir à <ph name="URL_OF_THE_CURRENT_TAB" /></translation>
+<translation id="2054665754582400095">Votre présence</translation>
 <translation id="2079545284768500474">Annuler</translation>
 <translation id="2091887806945687916">Son</translation>
 <translation id="2107397443965016585">Demander avant d'autoriser les sites à lire du contenu protégé (recommandé)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_hi.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_hi.xtb
index 4fa85fe..8185cf2 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_hi.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_hi.xtb
@@ -38,6 +38,7 @@
 <translation id="1994173015038366702">साइट URL</translation>
 <translation id="2025115093177348061">ऑगमेंटेड रिएलिटी (एआर)</translation>
 <translation id="2030769033451695672"><ph name="URL_OF_THE_CURRENT_TAB" /> पर वापस जाने के लिए टैप करें</translation>
+<translation id="2054665754582400095">आपकी मौजूदगी</translation>
 <translation id="2079545284768500474">पहले जैसा करें</translation>
 <translation id="2091887806945687916">आवाज़</translation>
 <translation id="2107397443965016585">साइटों को सुरक्षित सामग्री चलाने देने से पहले पूछें (ऐसा करने का सुझाव दिया जाता है)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_hu.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_hu.xtb
index 1f46d16..68c4e1a 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_hu.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_hu.xtb
@@ -38,6 +38,7 @@
 <translation id="1994173015038366702">Webhely URL-je</translation>
 <translation id="2025115093177348061">Kiterjesztett valóság</translation>
 <translation id="2030769033451695672">Koppintson, hogy visszatérjen ide: <ph name="URL_OF_THE_CURRENT_TAB" /></translation>
+<translation id="2054665754582400095">Felhasználói jelenlét</translation>
 <translation id="2079545284768500474">Visszavonás</translation>
 <translation id="2091887806945687916">Hang</translation>
 <translation id="2107397443965016585">Kérdezzen rá, mielőtt engedélyezné a webhelyek számára védett tartalmak lejátszását (ajánlott)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_hy.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_hy.xtb
index d21adfc..f129f4e9 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_hy.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_hy.xtb
@@ -38,6 +38,7 @@
 <translation id="1994173015038366702">Կայքի URL</translation>
 <translation id="2025115093177348061">Լրացված իրականություն</translation>
 <translation id="2030769033451695672">Հպեք՝ <ph name="URL_OF_THE_CURRENT_TAB" /> վերադառնալու համար</translation>
+<translation id="2054665754582400095">Տվյալներ ձեր ներկայության մասին</translation>
 <translation id="2079545284768500474">Հետարկել</translation>
 <translation id="2091887806945687916">Ձայն</translation>
 <translation id="2107397443965016585">Հարցնել՝ նախքան թույլատրելը կայքերին նվագարկել պաշտպանված բովանդակություն (խորհուրդ է տրվում)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_id.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_id.xtb
index ceb6ac1..6a6e9cd 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_id.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_id.xtb
@@ -38,6 +38,7 @@
 <translation id="1994173015038366702">URL situs</translation>
 <translation id="2025115093177348061">Augmented reality</translation>
 <translation id="2030769033451695672">Ketuk untuk kembali ke <ph name="URL_OF_THE_CURRENT_TAB" /></translation>
+<translation id="2054665754582400095">Kehadiran Anda</translation>
 <translation id="2079545284768500474">Urungkan</translation>
 <translation id="2091887806945687916">Suara</translation>
 <translation id="2107397443965016585">Tanyakan sebelum mengizinkan situs memutar konten yang dilindungi (direkomendasikan)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_is.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_is.xtb
index ceb8a06..b284b6c 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_is.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_is.xtb
@@ -38,6 +38,7 @@
 <translation id="1994173015038366702">Slóð vefsvæðis</translation>
 <translation id="2025115093177348061">Aukinn veruleiki</translation>
 <translation id="2030769033451695672">Ýttu til að fara aftur á <ph name="URL_OF_THE_CURRENT_TAB" /></translation>
+<translation id="2054665754582400095">Viðvera þín</translation>
 <translation id="2079545284768500474">Afturkalla</translation>
 <translation id="2091887806945687916">Hljóð</translation>
 <translation id="2107397443965016585">Spyrja áður en vefsvæði fá leyfi til að spila varið efni (ráðlagt)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_it.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_it.xtb
index ab91568..2aab4e5 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_it.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_it.xtb
@@ -38,6 +38,7 @@
 <translation id="1994173015038366702">URL sito</translation>
 <translation id="2025115093177348061">Realtà aumentata</translation>
 <translation id="2030769033451695672">Tocca per tornare a <ph name="URL_OF_THE_CURRENT_TAB" /></translation>
+<translation id="2054665754582400095">La tua presenza</translation>
 <translation id="2079545284768500474">Annulla</translation>
 <translation id="2091887806945687916">Audio</translation>
 <translation id="2107397443965016585">Chiedi prima di consentire ai siti di riprodurre contenuti protetti (opzione consigliata)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_iw.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_iw.xtb
index 6d4ce8c..8692dac1 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_iw.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_iw.xtb
@@ -38,6 +38,7 @@
 <translation id="1994173015038366702">כתובת אתר</translation>
 <translation id="2025115093177348061">מציאות רבודה</translation>
 <translation id="2030769033451695672">כדי לחזור אל <ph name="URL_OF_THE_CURRENT_TAB" />, יש להקיש כאן</translation>
+<translation id="2054665754582400095">הנוכחות שלך אונליין</translation>
 <translation id="2079545284768500474">ביטול הפעולה</translation>
 <translation id="2091887806945687916">צליל</translation>
 <translation id="2107397443965016585">יש לבקש ממני אישור לפני מתן הרשאה לאתרים להציג תוכן מוגן (מומלץ)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_ja.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_ja.xtb
index 7f4cb488..ba701ce 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_ja.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_ja.xtb
@@ -38,6 +38,7 @@
 <translation id="1994173015038366702">サイトの URL</translation>
 <translation id="2025115093177348061">拡張現実(AR)</translation>
 <translation id="2030769033451695672">タップして <ph name="URL_OF_THE_CURRENT_TAB" /> に戻る</translation>
+<translation id="2054665754582400095">ユーザーのアクティブ状態</translation>
 <translation id="2079545284768500474">元に戻す</translation>
 <translation id="2091887806945687916">音声</translation>
 <translation id="2107397443965016585">保護されたコンテンツの再生をサイトに許可する前に確認する(推奨)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_kk.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_kk.xtb
index 23120a37..5148272 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_kk.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_kk.xtb
@@ -38,6 +38,7 @@
 <translation id="1994173015038366702">URL сайты</translation>
 <translation id="2025115093177348061">Толықтырылған шындық</translation>
 <translation id="2030769033451695672"><ph name="URL_OF_THE_CURRENT_TAB" /> қойындысына оралу үшін түртіңіз.</translation>
+<translation id="2054665754582400095">Бар болу деректері</translation>
 <translation id="2079545284768500474">Қайтару</translation>
 <translation id="2091887806945687916">Дыбыс</translation>
 <translation id="2107397443965016585">Қорғалған мазмұнды ойнатуға рұқсат сұрау (ұсынылады)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_km.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_km.xtb
index a08883c7..a2317d1 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_km.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_km.xtb
@@ -38,6 +38,7 @@
 <translation id="1994173015038366702">URL គេហទំព័រ</translation>
 <translation id="2025115093177348061">AR</translation>
 <translation id="2030769033451695672">ចុចដើម្បីត្រឡប់ទៅ <ph name="URL_OF_THE_CURRENT_TAB" /> វិញ</translation>
+<translation id="2054665754582400095">​វត្តមានរបស់អ្នក</translation>
 <translation id="2079545284768500474">ត្រឡប់វិញ</translation>
 <translation id="2091887806945687916">សំឡេង</translation>
 <translation id="2107397443965016585">សួរ​មុនពេល​អនុញ្ញតឱ្យគេហទំព័រ​ចាក់ខ្លឹមសារ​ដែលមាន​ការការពារ (បានណែនាំ)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_ko.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_ko.xtb
index 5792d01..4cba14ee 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_ko.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_ko.xtb
@@ -38,6 +38,7 @@
 <translation id="1994173015038366702">사이트 URL</translation>
 <translation id="2025115093177348061">증강 현실</translation>
 <translation id="2030769033451695672">탭하여 <ph name="URL_OF_THE_CURRENT_TAB" />(으)로 돌아가기</translation>
+<translation id="2054665754582400095">활동</translation>
 <translation id="2079545284768500474">실행취소</translation>
 <translation id="2091887806945687916">소리</translation>
 <translation id="2107397443965016585">사이트에서 보호된 콘텐츠를 재생하도록 허용하기 전에 확인(권장)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_ky.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_ky.xtb
index e3f72567..c116d48b2 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_ky.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_ky.xtb
@@ -38,6 +38,7 @@
 <translation id="1994173015038366702">Сайт URL'и</translation>
 <translation id="2025115093177348061">Кошумчаланган чындык</translation>
 <translation id="2030769033451695672"><ph name="URL_OF_THE_CURRENT_TAB" /> кайтуу үчүн таптап коюңуз</translation>
+<translation id="2054665754582400095">Сайтта же сайтта эместигиңиз</translation>
 <translation id="2079545284768500474">Кайтаруу</translation>
 <translation id="2091887806945687916">Үн</translation>
 <translation id="2107397443965016585">Сайттар корголгон мазмунду ойнотуудан мурда уруксат суралсын (сунушталат)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_lt.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_lt.xtb
index 2d37b7d..f5f882bc 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_lt.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_lt.xtb
@@ -38,6 +38,7 @@
 <translation id="1994173015038366702">Svetainės URL</translation>
 <translation id="2025115093177348061">Išplėstoji realybė</translation>
 <translation id="2030769033451695672">Palieskite, kad grįžtumėte į <ph name="URL_OF_THE_CURRENT_TAB" /></translation>
+<translation id="2054665754582400095">Jūsų veiklos duomenys</translation>
 <translation id="2079545284768500474">Anuliuoti</translation>
 <translation id="2091887806945687916">Garsas</translation>
 <translation id="2107397443965016585">Paklausti prieš leidžiant svetainėms leisti saugomą turinį (rekomenduojama)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_lv.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_lv.xtb
index e3e72de..7d8af276 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_lv.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_lv.xtb
@@ -38,6 +38,7 @@
 <translation id="1994173015038366702">Vietnes URL</translation>
 <translation id="2025115093177348061">Papildinātā realitāte</translation>
 <translation id="2030769033451695672">Pieskarieties, lai atgrieztos cilnē <ph name="URL_OF_THE_CURRENT_TAB" /></translation>
+<translation id="2054665754582400095">Jūsu klātbūtne</translation>
 <translation id="2079545284768500474">Atsaukt</translation>
 <translation id="2091887806945687916">Signāls</translation>
 <translation id="2107397443965016585">Vaicāt, pirms atļaut vietnēm atskaņot aizsargātu saturu (ieteicams)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_ms.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_ms.xtb
index 2cf04a4..929e3b5 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_ms.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_ms.xtb
@@ -38,6 +38,7 @@
 <translation id="1994173015038366702">URL tapak</translation>
 <translation id="2025115093177348061">Realiti tambahan</translation>
 <translation id="2030769033451695672">Ketik untuk kembali kepada <ph name="URL_OF_THE_CURRENT_TAB" /></translation>
+<translation id="2054665754582400095">Kehadiran anda</translation>
 <translation id="2079545284768500474">Buat asal</translation>
 <translation id="2091887806945687916">Bunyi</translation>
 <translation id="2107397443965016585">Tanya sebelum membenarkan tapak memainkan kandungan yang dilindungi (disyorkan)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_my.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_my.xtb
index 72b0d2a2..dc7832e 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_my.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_my.xtb
@@ -38,6 +38,7 @@
 <translation id="1994173015038366702">ဆိုက် URL</translation>
 <translation id="2025115093177348061">လွန်ကဲပကတိအသွင်</translation>
 <translation id="2030769033451695672"><ph name="URL_OF_THE_CURRENT_TAB" /> သို့ပြန်သွားရန် တို့ပါ</translation>
+<translation id="2054665754582400095">သင်ရှိနေမှု</translation>
 <translation id="2079545284768500474">တစ်ဆင့်နောက်ပြန်ရန်</translation>
 <translation id="2091887806945687916">အသံ</translation>
 <translation id="2107397443965016585">ကာကွယ်ထားသော အကြောင်းအရာကို ဖွင့်ရန် ဝဘ်ဆိုက်များကို ခွင့်မပြုမီ ခွင့်တောင်းပါ (အကြံပြုထားသည်)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_pt-PT.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_pt-PT.xtb
index 41b3002..07b18c4 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_pt-PT.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_pt-PT.xtb
@@ -38,6 +38,7 @@
 <translation id="1994173015038366702">URL do site</translation>
 <translation id="2025115093177348061">Realidade aumentada</translation>
 <translation id="2030769033451695672">Toque para voltar a <ph name="URL_OF_THE_CURRENT_TAB" /></translation>
+<translation id="2054665754582400095">A sua presença</translation>
 <translation id="2079545284768500474">Anular</translation>
 <translation id="2091887806945687916">Som</translation>
 <translation id="2107397443965016585">Perguntar antes de permitir que os sites reproduzam conteúdos protegidos (recomendado)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_ro.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_ro.xtb
index ec70096b..bf9fdaa 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_ro.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_ro.xtb
@@ -38,6 +38,7 @@
 <translation id="1994173015038366702">Adresa URL a site-ului</translation>
 <translation id="2025115093177348061">Realitate augmentată</translation>
 <translation id="2030769033451695672">Atinge pentru a reveni la <ph name="URL_OF_THE_CURRENT_TAB" /></translation>
+<translation id="2054665754582400095">Prezența ta</translation>
 <translation id="2079545284768500474">Anulează</translation>
 <translation id="2091887806945687916">Sunet</translation>
 <translation id="2107397443965016585">Întreabă înainte de a permite site-urilor să redea conținut protejat (recomandat)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_ru.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_ru.xtb
index 309059c..80ffa2de 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_ru.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_ru.xtb
@@ -38,6 +38,7 @@
 <translation id="1994173015038366702">Адрес сайта</translation>
 <translation id="2025115093177348061">Дополненная реальность</translation>
 <translation id="2030769033451695672">Нажмите, чтобы вернуться на страницу <ph name="URL_OF_THE_CURRENT_TAB" />.</translation>
+<translation id="2054665754582400095">Ваше присутствие</translation>
 <translation id="2079545284768500474">Отмена</translation>
 <translation id="2091887806945687916">Звук</translation>
 <translation id="2107397443965016585">Запрашивать разрешение на воспроизведение защищенного контента (рекомендуется)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_si.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_si.xtb
index 02c03f7a..d798338 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_si.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_si.xtb
@@ -38,6 +38,7 @@
 <translation id="1994173015038366702">අඩවි URL</translation>
 <translation id="2025115093177348061">ආවර්ධිත යථාර්ථය</translation>
 <translation id="2030769033451695672"><ph name="URL_OF_THE_CURRENT_TAB" /> වෙත ආපසු යාමට තට්ටු කරන්න</translation>
+<translation id="2054665754582400095">ඔබගේ සිටීම</translation>
 <translation id="2079545284768500474">පසුගමනය</translation>
 <translation id="2091887806945687916">හඬ</translation>
 <translation id="2107397443965016585">වෙබ් අඩවිවලට ආරක්‍ෂිත අන්තර්ගත ධාවන කිරීමට ඉඩ දීමට පෙර විමසන්න (නිර්දේශිතයි)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_sl.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_sl.xtb
index 84e7a5e..0228882 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_sl.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_sl.xtb
@@ -38,6 +38,7 @@
 <translation id="1994173015038366702">URL spletnega mesta</translation>
 <translation id="2025115093177348061">Razširjena resničnost</translation>
 <translation id="2030769033451695672">Dotaknite se, če se želite vrniti na <ph name="URL_OF_THE_CURRENT_TAB" /></translation>
+<translation id="2054665754582400095">Vaša prisotnost</translation>
 <translation id="2079545284768500474">Razveljavi</translation>
 <translation id="2091887806945687916">Zvok</translation>
 <translation id="2107397443965016585">Prikaži poziv, preden se spletnim mestom dovoli predvajanje zaščitene vsebine (priporočeno)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_sq.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_sq.xtb
index 0c223e6..13630728 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_sq.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_sq.xtb
@@ -38,6 +38,7 @@
 <translation id="1994173015038366702">URL-ja e sajtit</translation>
 <translation id="2025115093177348061">Realiteti i zgjeruar</translation>
 <translation id="2030769033451695672">Trokit për t'u kthyer te <ph name="URL_OF_THE_CURRENT_TAB" /></translation>
+<translation id="2054665754582400095">Prania jote</translation>
 <translation id="2079545284768500474">Zhbëj</translation>
 <translation id="2091887806945687916">Tingulli</translation>
 <translation id="2107397443965016585">Pyet përpara se sajtet të lejohen të luajnë përmbajtje të mbrojtura (rekomandohet)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_sv.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_sv.xtb
index e91054d..a2f9013 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_sv.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_sv.xtb
@@ -38,6 +38,7 @@
 <translation id="1994173015038366702">Webbadress</translation>
 <translation id="2025115093177348061">Förstärkt verklighet</translation>
 <translation id="2030769033451695672">Återgå till <ph name="URL_OF_THE_CURRENT_TAB" /> genom att trycka här</translation>
+<translation id="2054665754582400095">Din närvaro</translation>
 <translation id="2079545284768500474">Ångra</translation>
 <translation id="2091887806945687916">Ljud</translation>
 <translation id="2107397443965016585">Fråga innan webbplatser tillåts att spela upp skyddat innehåll (rekommenderas)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_tr.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_tr.xtb
index b2800df..d2a097da 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_tr.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_tr.xtb
@@ -38,6 +38,7 @@
 <translation id="1994173015038366702">Site URL'si</translation>
 <translation id="2025115093177348061">Artırılmış gerçeklik</translation>
 <translation id="2030769033451695672"><ph name="URL_OF_THE_CURRENT_TAB" /> sekmesine dönmek için dokunun</translation>
+<translation id="2054665754582400095">Bir yerde olduğunuza dair bilgi</translation>
 <translation id="2079545284768500474">Geri al</translation>
 <translation id="2091887806945687916">Ses</translation>
 <translation id="2107397443965016585">Sitelerin korumalı içeriği oynatmasına izin vermeden önce sor (önerilir)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_vi.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_vi.xtb
index 1d84546..6391bba 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_vi.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_vi.xtb
@@ -38,6 +38,7 @@
 <translation id="1994173015038366702">URL trang web</translation>
 <translation id="2025115093177348061">Thực tế tăng cường</translation>
 <translation id="2030769033451695672">Nhấn để quay lại <ph name="URL_OF_THE_CURRENT_TAB" /></translation>
+<translation id="2054665754582400095">Sự hiện diện của bạn</translation>
 <translation id="2079545284768500474">Hoàn tác</translation>
 <translation id="2091887806945687916">Âm thanh</translation>
 <translation id="2107397443965016585">Hỏi trước khi cho phép trang web phát nội dung được bảo vệ (khuyên dùng)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_zh-HK.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_zh-HK.xtb
index d3f710f..d83dff3f 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_zh-HK.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_zh-HK.xtb
@@ -38,6 +38,7 @@
 <translation id="1994173015038366702">網站網址</translation>
 <translation id="2025115093177348061">擴張實境</translation>
 <translation id="2030769033451695672">輕按即可返回 <ph name="URL_OF_THE_CURRENT_TAB" /></translation>
+<translation id="2054665754582400095">你的使用狀態</translation>
 <translation id="2079545284768500474">復原</translation>
 <translation id="2091887806945687916">音效</translation>
 <translation id="2107397443965016585">網站播放受保護內容前先詢問您 (建議)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_zh-TW.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_zh-TW.xtb
index d82452f..3f327ba 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_zh-TW.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_zh-TW.xtb
@@ -38,6 +38,7 @@
 <translation id="1994173015038366702">網站網址</translation>
 <translation id="2025115093177348061">擴增實境</translation>
 <translation id="2030769033451695672">輕觸即可返回 <ph name="URL_OF_THE_CURRENT_TAB" /></translation>
+<translation id="2054665754582400095">你的使用狀態</translation>
 <translation id="2079545284768500474">復原</translation>
 <translation id="2091887806945687916">音訊</translation>
 <translation id="2107397443965016585">允許網站播放受保護的內容前,必須先詢問你 (建議)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_zu.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_zu.xtb
index 355d3b66..99e08ba1 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_zu.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_zu.xtb
@@ -38,6 +38,7 @@
 <translation id="1994173015038366702">I-URL yesayithi</translation>
 <translation id="2025115093177348061">I-Augmented Reality</translation>
 <translation id="2030769033451695672">Thepha ukubuyela ku-<ph name="URL_OF_THE_CURRENT_TAB" /></translation>
+<translation id="2054665754582400095">Ubukhona bakho</translation>
 <translation id="2079545284768500474">Hlehlisa</translation>
 <translation id="2091887806945687916">Umsindo</translation>
 <translation id="2107397443965016585">Buza ngaphambi kokuvumela amasayithi ukudlala okuqukethwe okuvikelwe (kunconyiwe)</translation>
diff --git a/components/domain_reliability/quic_error_mapping.cc b/components/domain_reliability/quic_error_mapping.cc
index bf31314..4bf6ed46 100644
--- a/components/domain_reliability/quic_error_mapping.cc
+++ b/components/domain_reliability/quic_error_mapping.cc
@@ -386,6 +386,9 @@
     {quic::QUIC_MISSING_WRITE_KEYS, "quic.missing_write_keys"},
     {quic::QUIC_HTTP_RECEIVE_SPDY_FRAME, "quic.http_receive_spdy_frame"},
 
+    {quic::QUIC_KEY_UPDATE_ERROR, "quic.quic_key_update_error"},
+    {quic::QUIC_AEAD_LIMIT_REACHED, "quic.quic_aead_limit_reached"},
+
     // QUIC_INVALID_APPLICATION_CLOSE_DATA was code 101. The code has been
     // deprecated, but to keep the assert below happy, there needs to be
     // an entry for it, but the symbol is gone.
diff --git a/components/download/internal/common/download_stats.cc b/components/download/internal/common/download_stats.cc
index 338fc89..8d8e020c 100644
--- a/components/download/internal/common/download_stats.cc
+++ b/components/download/internal/common/download_stats.cc
@@ -601,18 +601,6 @@
                               request_count, 1, 10, 11);
 }
 
-void RecordParallelDownloadAddStreamSuccess(bool success,
-                                            bool support_range_request) {
-  if (support_range_request) {
-    base::UmaHistogramBoolean("Download.ParallelDownloadAddStreamSuccess",
-                              success);
-  } else {
-    base::UmaHistogramBoolean(
-        "Download.ParallelDownloadAddStreamSuccess.NoAcceptRangesHeader",
-        success);
-  }
-}
-
 void RecordParallelRequestCreationFailure(DownloadInterruptReason reason) {
   base::UmaHistogramSparse("Download.ParallelDownload.CreationFailureReason",
                            reason);
diff --git a/components/download/internal/common/parallel_download_job.cc b/components/download/internal/common/parallel_download_job.cc
index c8355e740..330a85d 100644
--- a/components/download/internal/common/parallel_download_job.cc
+++ b/components/download/internal/common/parallel_download_job.cc
@@ -34,7 +34,6 @@
       content_length_(create_info.total_bytes),
       requests_sent_(false),
       is_canceled_(false),
-      range_support_(create_info.accept_range),
       url_loader_factory_provider_(std::move(url_loader_factory_provider)),
       wake_lock_provider_binder_(std::move(wake_lock_provider_binder)) {}
 
@@ -130,9 +129,6 @@
   bool success =
       DownloadJob::AddInputStream(std::move(input_stream), worker->offset());
 
-  RecordParallelDownloadAddStreamSuccess(
-      success, range_support_ == RangeRequestSupportType::kSupport);
-
   // Destroy the request if the sink is gone.
   if (!success) {
     VLOG(kDownloadJobVerboseLevel)
diff --git a/components/download/internal/common/parallel_download_job.h b/components/download/internal/common/parallel_download_job.h
index 88ec013..d04359c 100644
--- a/components/download/internal/common/parallel_download_job.h
+++ b/components/download/internal/common/parallel_download_job.h
@@ -110,9 +110,6 @@
   // If the download progress is canceled.
   bool is_canceled_;
 
-  // Whether the server accepts range requests.
-  RangeRequestSupportType range_support_;
-
   // URLLoaderFactoryProvider to retrieve the URLLoaderFactory and issue
   // parallel requests.
   URLLoaderFactoryProvider::URLLoaderFactoryProviderPtr
diff --git a/components/download/public/common/download_stats.h b/components/download/public/common/download_stats.h
index 3c7f34ef..90d8095 100644
--- a/components/download/public/common/download_stats.h
+++ b/components/download/public/common/download_stats.h
@@ -305,13 +305,6 @@
 COMPONENTS_DOWNLOAD_EXPORT void RecordParallelDownloadRequestCount(
     int request_count);
 
-// Records if each byte stream is successfully added to download sink.
-// |support_range_request| indicates whether the server strongly supports range
-// requests.
-COMPONENTS_DOWNLOAD_EXPORT void RecordParallelDownloadAddStreamSuccess(
-    bool success,
-    bool support_range_request);
-
 // Records the bandwidth for parallelizable download and estimates the saved
 // time at the file end. Does not count in any hash computation or file
 // open/close time.
diff --git a/components/exo/text_input.cc b/components/exo/text_input.cc
index 71fdd0cc..36433755 100644
--- a/components/exo/text_input.cc
+++ b/components/exo/text_input.cc
@@ -132,6 +132,8 @@
 }
 
 void TextInput::ClearCompositionText() {
+  if (composition_.text.empty())
+    return;
   composition_ = ui::CompositionText();
   delegate_->SetCompositionText(composition_);
 }
diff --git a/components/exo/text_input_unittest.cc b/components/exo/text_input_unittest.cc
index 21573e1..7fa5d7a 100644
--- a/components/exo/text_input_unittest.cc
+++ b/components/exo/text_input_unittest.cc
@@ -246,6 +246,13 @@
   text_input()->ClearCompositionText();
 }
 
+TEST_F(TextInputTest, CompositionTextEmpty) {
+  SetCompositionText("");
+
+  EXPECT_CALL(*delegate(), SetCompositionText(_)).Times(0);
+  text_input()->ClearCompositionText();
+}
+
 TEST_F(TextInputTest, CommitCompositionText) {
   SetCompositionText("composition");
 
diff --git a/components/payments/content/payment_request.cc b/components/payments/content/payment_request.cc
index d29822b..e64682de 100644
--- a/components/payments/content/payment_request.cc
+++ b/components/payments/content/payment_request.cc
@@ -10,6 +10,7 @@
 
 #include "base/bind.h"
 #include "base/feature_list.h"
+#include "base/logging.h"
 #include "base/stl_util.h"
 #include "base/strings/string_util.h"
 #include "components/payments/content/can_make_payment_query_factory.h"
@@ -68,7 +69,6 @@
   address->address_line.clear();
   return address;
 }
-
 }  // namespace
 
 PaymentRequest::PaymentRequest(
@@ -221,6 +221,26 @@
     delegate_->set_dialog_type(
         PaymentRequestDelegate::DialogType::SECURE_PAYMENT_CONFIRMATION);
   }
+
+  if (VLOG_IS_ON(2)) {
+    std::vector<std::string> payment_method_identifiers(
+        spec_->payment_method_identifiers_set().begin(),
+        spec_->payment_method_identifiers_set().end());
+    std::string total = spec_->details().total
+                            ? (spec_->details().total->amount->currency +
+                               spec_->details().total->amount->value)
+                            : "N/A";
+    VLOG(2) << "Initialized PaymentRequest (" << *spec_->details().id << ")"
+            << "\n    Top origin: " << top_level_origin_.spec()
+            << "\n    Frame origin: " << frame_origin_.spec()
+            << "\n    Requested methods: "
+            << base::JoinString(payment_method_identifiers, ", ")
+            << "\n    Total: " << total
+            << "\n    Options: shipping = " << spec_->request_shipping()
+            << ", name = " << spec_->request_payer_name()
+            << ", phone = " << spec_->request_payer_phone()
+            << ", email = " << spec_->request_payer_email();
+  }
 }
 
 void PaymentRequest::Show(bool is_user_gesture, bool wait_for_updated_details) {
@@ -311,6 +331,9 @@
     return;
   }
 
+  VLOG(2) << "PaymentRequest (" << *spec_->details().id
+          << ") retry with error: " << error;
+
   state()->SetAvailablePaymentAppForRetry();
   spec()->Retry(std::move(errors));
   display_handle_->Retry();
@@ -570,6 +593,8 @@
     if (SatisfiesSkipUIConstraints())
       Pay();
   } else {
+    VLOG(2) << "PaymentRequest (" << *spec_->details().id
+            << "): requested method not supported.";
     DCHECK(!has_recorded_completion_);
     has_recorded_completion_ = true;
     journey_logger_.SetNotShown(
@@ -799,6 +824,9 @@
   journey_logger_.RecordCheckoutStep(
       JourneyLogger::CheckoutFunnelStep::kPaymentHandlerInvoked);
   DCHECK(state_->selected_app());
+  VLOG(2) << "PaymentRequest (" << *spec_->details().id
+          << "): paying with app: " << state_->selected_app()->GetLabel();
+
   state_->selected_app()->SetPaymentHandlerHost(
       payment_handler_host_->AsWeakPtr());
   state_->GeneratePaymentResponse();
@@ -836,6 +864,8 @@
 }
 
 void PaymentRequest::CanMakePaymentCallback(bool can_make_payment) {
+  VLOG(2) << "PaymentRequest (" << *spec_->details().id
+          << "): canMakePayment = " << can_make_payment;
   client_->OnCanMakePayment(
       can_make_payment ? mojom::CanMakePaymentQueryResult::CAN_MAKE_PAYMENT
                        : mojom::CanMakePaymentQueryResult::CANNOT_MAKE_PAYMENT);
@@ -852,6 +882,9 @@
   if (!rfh)
     return;
 
+  VLOG(2) << "PaymentRequest (" << *spec_->details().id
+          << "): hasEnrolledInstrument = " << has_enrolled_instrument;
+
   if (!spec_ || CanMakePaymentQueryFactory::GetInstance()
                     ->GetForContext(rfh->GetBrowserContext())
                     ->CanQuery(top_level_origin_, frame_origin_,
@@ -888,6 +921,8 @@
 }
 
 void PaymentRequest::OnAbortResult(bool aborted) {
+  VLOG(2) << "PaymentRequest (" << *spec_->details().id
+          << "): abort = " << aborted;
   if (client_.is_bound())
     client_->OnAbort(aborted);
 
diff --git a/components/policy/resources/policy_templates_id.xtb b/components/policy/resources/policy_templates_id.xtb
index 5db88a87..07282fcc 100644
--- a/components/policy/resources/policy_templates_id.xtb
+++ b/components/policy/resources/policy_templates_id.xtb
@@ -1128,6 +1128,7 @@
       Jika kebijakan tidak disetel, tidak ada situs yang akan ditambahkan ke daftar.
 
       Catatan: Elemen juga dapat ditambahkan ke daftar ini melalui kebijakan <ph name="USE_IE_SITELIST_POLICY_NAME" /> dan <ph name="EXTERNAL_SITELIST_URL_POLICY_NAME" />.</translation>
+<translation id="2640898752536996430">Memaksa pengguna logout.</translation>
 <translation id="264093234299818170">Semua printer akan ditampilkan, kecuali printer yang tercantum dalam daftar yang tidak diizinkan.</translation>
 <translation id="264252574246191885">Tidak terdaftar</translation>
 <translation id="2647069081229792812">Aktifkan atau nonaktifkan pengeditan bookmark</translation>
@@ -1203,7 +1204,7 @@
 <translation id="2759224876420453487">Mengontrol perilaku pengguna pada sesi multiprofil</translation>
 <translation id="2759426227259007018">Menyetel kebijakan akan menentukan aplikasi yang dapat diaktifkan pengguna sebagai aplikasi pencatat di layar kunci <ph name="PRODUCT_OS_NAME" />.
 
-      Jika aplikasi pilihan berada di layar kunci, elemen UI untuk meluncurkan aplikasi pencatat pilihan akan muncul di layar. Saat diluncurkan, aplikasi dapat membuat jendela di bagian atas layar kunci dan membuat catatan di konteks ini. Saat sesi dibuka, aplikasi dapat mengimpor catatan yang dibuat ke sesi pengguna utama. Hanya aplikasi pencatat <ph name="PRODUCT_NAME" /> yang didukung di layar kunci.
+      Jika aplikasi pilihan berada di layar kunci, elemen UI untuk meluncurkan aplikasi pencatat pilihan akan muncul di layar. Saat diluncurkan, aplikasi dapat membuat jendela di atas layar kunci dan membuat catatan dalam konteks ini. Saat sesi dibuka, aplikasi dapat mengimpor catatan yang dibuat ke sesi pengguna utama. Hanya aplikasi pencatat <ph name="PRODUCT_NAME" /> yang didukung di layar kunci.
 
       Jika kebijakan disetel, pengguna akan dapat mengaktifkan aplikasi di layar kunci jika ID ekstensi aplikasi tercantum dalam nilai daftar kebijakan. Oleh karena itu, menyetel kebijakan ke daftar kosong akan menonaktifkan pencatatan di layar kunci. Kebijakan dengan ID aplikasi tidak selalu berarti bahwa pengguna dapat mengaktifkan aplikasi sebagai aplikasi pencatat di layar kunci. Misalnya, di <ph name="PRODUCT_NAME" /> 61, kumpulan aplikasi yang tersedia juga dibatasi oleh platform.
 
@@ -1459,6 +1460,7 @@
 <translation id="3072847235228302527">Menyetel Persyaratan Layanan untuk akun lokal perangkat</translation>
 <translation id="3086995894968271156">Mengonfigurasi Penerima Cast di <ph name="PRODUCT_NAME" />.</translation>
 <translation id="3091832372132789233">Mengisi daya baterai untuk perangkat yang terutama terhubung ke sumber daya eksternal.</translation>
+<translation id="309416443108680956">Menentukan hal yang terjadi jika pengguna yang melakukan autentikasi melalui token keamanan (misalnya, dengan kartu smart) menghapus token tersebut saat berada dalam sesi. <ph name="SECURITY_TOKEN_SESSION_BEHAVIOR_IGNORE" />: Tidak ada yang terjadi. <ph name="SECURITY_TOKEN_SESSION_BEHAVIOR_LOCK" />: Layar dikunci hingga pengguna melakukan autentikasi lagi. <ph name="SECURITY_TOKEN_SESSION_BEHAVIOR_LOGOUT" />: Sesi diakhiri dan pengguna dipaksa logout. Jika kebijakan ini tidak disetel, <ph name="SECURITY_TOKEN_SESSION_BEHAVIOR_IGNORE" /> akan berlaku secara default.</translation>
 <translation id="3096595567015595053">Daftar plugin yang diaktifkan</translation>
 <translation id="3101501961102569744">Pilih cara menentukan setelan server proxy</translation>
 <translation id="3101709781009526431">Tanggal dan waktu</translation>
@@ -1479,6 +1481,11 @@
 <translation id="316778957754360075">Setelan ini tidak lagi digunakan sejak <ph name="PRODUCT_NAME" /> versi 29. Cara yang disarankan untuk menyiapkan koleksi aplikasi/ekstensi yang dihosting organisasi adalah dengan menyertakan situs yang menghosting paket CRX di ExtensionInstallSources dan meletakkan link download langsung di paket dalam halaman web. Peluncur untuk halaman web tersebut dapat dibuat menggunakan kebijakan ExtensionInstallForcelist.</translation>
 <translation id="3168968618972302728">Kebijakan yang terkait dengan autentikasi Kerberos.</translation>
 <translation id="3171369832001535378">Template hostname jaringan perangkat</translation>
+<translation id="3176903288465566098">Jika setelan ini diaktifkan, pengguna yang telah memilih untuk menggunakan Phone Hub akan dapat mengirim/menerima notifikasi ponselnya di Chrome OS.
+
+      Jika setelan ini dinonaktifkan, pengguna tidak akan diizinkan menggunakan fitur ini. Jika kebijakan PhoneHubAllowed dinonaktifkan, pengguna juga tidak akan diizinkan menggunakan fitur ini.
+
+      Jika kebijakan ini tidak disetel, baik pengguna yang dikelola maupun tidak dikelola perusahaan akan diizinkan secara default.</translation>
 <translation id="3177802893484440532">Mewajibkan pemeriksaan OCSP/CRL online untuk sumber tepercaya setempat</translation>
 <translation id="3184161739683646075">Mengontrol mode DNS-over-HTTPS</translation>
 <translation id="3185009703220253572">sejak versi <ph name="SINCE_VERSION" /></translation>
@@ -1879,6 +1886,7 @@
       Jika Anda menyetel kebijakan, pengguna tidak dapat mengubah jenis halaman berandanya di <ph name="PRODUCT_NAME" />. Jika tidak disetel, pengguna dapat memutuskan apakah halaman Tab Baru akan menjadi halaman berandanya atau tidak.
 
       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_CLOUSE_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="3695706037816556327">Tindakan terkait penghapusan token keamanan (misalnya, kartu smart) untuk <ph name="PRODUCT_OS_NAME" />.</translation>
 <translation id="3701121231485832347">Mengontrol setelan khusus perangkat <ph name="PRODUCT_OS_NAME" />.yang dikelola <ph name="MS_AD_NAME" />.</translation>
 <translation id="3702518095257671450">Pengesahan jarak jauh</translation>
 <translation id="3702647575225525306"><ph name="POLICY_NAME" /> (Kolom 1 baris sudah tidak digunakan lagi dan akan dihapus di masa mendatang. Mulai gunakan kotak teks multibaris di bawah.)</translation>
@@ -1917,6 +1925,8 @@
 
       Membiarkan kebijakan ini tidak tersetel akan memungkinkan pengguna memilih setelan proxy-nya sendiri.</translation>
 <translation id="3758249152301468420">Nonaktifkan Alat Pengembang</translation>
+<translation id="3760231600118073732">Mengunci sesi saat ini.</translation>
+<translation id="3764097800332238572">Kebijakan ini hanya berlaku jika kebijakan <ph name="SECURITY_TOKEN_SESSION_BEHAVIOR_POLICY_NAME" /> disetel ke <ph name="SECURITY_TOKEN_SESSION_BEHAVIOR_LOCK" /> atau <ph name="SECURITY_TOKEN_SESSION_BEHAVIOR_LOGOUT" />, dan pengguna yang melakukan autentikasi melalui kartu smart menghapus kartu smart tersebut. Kemudian, kebijakan ini menentukan berapa detik notifikasi yang memberi tahu pengguna tentang tindakan yang akan datang akan ditampilkan. Notifikasi ini memblokir layar. Tindakan hanya akan dilakukan setelah notifikasi ini berakhir. Pengguna dapat mencegah tindakan terjadi dengan memasukkan kembali kartu smart sebelum notifikasi berakhir. Jika kebijakan ini disetel ke nol, tidak akan ada notifikasi yang ditampilkan dan tindakan akan segera dilakukan.</translation>
 <translation id="3765260570442823273">Durasi pesan peringatan proses keluar nganggur</translation>
 <translation id="377044054160169374">Penerapan Pencegahan Pengalaman yang Menyinggung</translation>
 <translation id="3780152581321609624">Sertakan port non-standar di SPN Kerberos</translation>
@@ -2956,6 +2966,7 @@
 
       Jika kebijakan ini disetel ke Salah (False), penerusan port ke penampung Crostini akan dinonaktifkan.</translation>
 <translation id="538108065117008131">Izinkan <ph name="PRODUCT_FRAME_NAME" /> menangani jenis konten berikut.</translation>
+<translation id="5383436189211119400">Jika kebijakan "DeviceArcDataSnapshotHours" disetel, mekanisme pembuatan snapshot data ARC akan diaktifkan. Dengan begitu, pembaruan untuk pembuatan snapshot data ARC dapat otomatis dimulai selama interval waktu yang ditentukan. Jika interval dimulai, pembaruan snapshot ARC akan diperlukan dan tidak ada pengguna yang login. Pada saat itu, proses pembaruan snapshot data ARC akan dimulai tanpa notifikasi pengguna. Jika sesi pengguna aktif, notifikasi UI akan ditampilkan dan harus diterima untuk memulai ulang perangkat dan memulai proses pembaruan snapshot data ARC. Catatan: penggunaan perangkat akan diblokir selama proses pembaruan snapshot data ARC.</translation>
 <translation id="538768040137709073">Mengaktifkan fitur Papan Klip Bersama yang memungkinkan pengguna mengirim pesan teks antara Desktop Chrome dan perangkat Android saat Sinkronisasi diaktifkan dan pengguna Login.
 
           Jika kebijakan ini ditetapkan ke true, kemampuan mengirim pesan teks antarperangkat bagi pengguna Chrome akan diaktifkan.
@@ -3772,7 +3783,7 @@
 
       Menyetel kebijakan akan menentukan aplikasi yang dapat diaktifkan pengguna sebagai aplikasi pencatat di layar kunci <ph name="PRODUCT_OS_NAME" />.
 
-      Jika aplikasi pilihan berada di layar kunci, elemen UI untuk meluncurkan aplikasi pencatat pilihan akan muncul di layar. Saat diluncurkan, aplikasi dapat membuat jendela di bagian atas layar kunci dan membuat catatan di konteks ini. Saat sesi dibuka, aplikasi dapat mengimpor catatan yang dibuat ke sesi pengguna utama. Hanya aplikasi pencatat <ph name="PRODUCT_NAME" /> yang didukung di layar kunci.
+      Jika aplikasi pilihan berada di layar kunci, elemen UI untuk meluncurkan aplikasi pencatat pilihan akan muncul di layar. Saat diluncurkan, aplikasi dapat membuat jendela di atas layar kunci dan membuat catatan dalam konteks ini. Saat sesi dibuka, aplikasi dapat mengimpor catatan yang dibuat ke sesi pengguna utama. Hanya aplikasi pencatat <ph name="PRODUCT_NAME" /> yang didukung di layar kunci.
 
       Jika kebijakan disetel, pengguna akan dapat mengaktifkan aplikasi di layar kunci jika ID ekstensi aplikasi tercantum dalam nilai daftar kebijakan. Oleh karena itu, menyetel kebijakan ke daftar kosong akan menonaktifkan pencatatan di layar kunci. Kebijakan dengan ID aplikasi tidak selalu berarti bahwa pengguna dapat mengaktifkan aplikasi sebagai aplikasi pencatat di layar kunci. Misalnya, di <ph name="PRODUCT_NAME" /> 61, kumpulan aplikasi yang tersedia juga dibatasi oleh platform.
 
@@ -3939,6 +3950,7 @@
 <translation id="6672070613706645316">Izinkan pengguna menyesuaikan latar belakang di halaman Tab Baru</translation>
 <translation id="6672630473862787247">Mengaktifkan autentikasi pasif di sesi reguler, samaran, dan tamu.</translation>
 <translation id="6685903773201985073">Mengaktifkan autentikasi pasif di sesi tamu dan reguler.</translation>
+<translation id="6689343802305995925">Tidak ada tindakan yang dilakukan.</translation>
 <translation id="6689792153960219308">Melaporkan status hardware</translation>
 <translation id="6690425645391461516">Nonaktifkan pemeriksaan intersepsi DNS; izinkan infobar "Mungkin maksud Anda http://intranetsite/".</translation>
 <translation id="6698632841807204978">Aktifkan pencetakan monokrom</translation>
@@ -4205,6 +4217,7 @@
 
       Jika kebijakan disetel ke Nonaktif, <ph name="PRODUCT_NAME" /> akan menutup tab setelah beralih ke browser alternatif, meskipun itu adalah tab terakhir. Hal ini menyebabkan <ph name="PRODUCT_NAME" /> keluar sepenuhnya.</translation>
 <translation id="7019805045859631636">Cepat</translation>
+<translation id="7026351325994257733">Mengizinkan konfigurasi jaringan Wi-Fi disinkronkan di seluruh perangkat <ph name="PRODUCT_OS_NAME" /> dan ponsel Android yang terhubung.</translation>
 <translation id="7027785306666625591">Mengonfigurasi pengelolaan daya di <ph name="PRODUCT_OS_NAME" />.
 
       Kebijakan ini memungkinkan Anda mengonfigurasi cara <ph name="PRODUCT_OS_NAME" /> berperilaku saat pengguna tetap menganggur dalam beberapa waktu.</translation>
@@ -4233,6 +4246,7 @@
 <translation id="7068108874199666656">Memungkinkan pendorongan konfigurasi jaringan untuk diterapkan pada semua pengguna ke perangkat <ph name="PRODUCT_OS_NAME" />. Konfigurasi jaringan adalah string berformat JSON seperti yang didefinisikan oleh format Konfigurasi Jaringan Terbuka.</translation>
 <translation id="7070525176564511548">Sandi harus dimasukkan setiap minggu (168 jam)</translation>
 <translation id="7072208053150563108">Tingkat perubahan sandi mesin</translation>
+<translation id="7072567600438630966">Mengizinkan pengaktifan Phone Hub.</translation>
 <translation id="7079519252486108041">Cekal pop-up di situs ini</translation>
 <translation id="7080072532759721791">Mengizinkan pengguna untuk mengupload atau mendownload file yang dilindungi sandi</translation>
 <translation id="7086677522575756117">Menentukan persentase yang digunakan untuk menskalakan penundaan peredupan layar ketika terdapat aktivitas pengguna saat layar redup atau segera setelah layar dimatikan.
@@ -4410,6 +4424,7 @@
 Jika kebijakan ini tidak disetel atau kosong, pengguna dapat menyetel akun Google apa pun sebagai akun utama browser di <ph name="PRODUCT_NAME" />.</translation>
 <translation id="723103540848640830">Setel panjang minimum PIN layar kunci.</translation>
 <translation id="7234280155140786597">Nama hosting perpesanan asli yang dilarang (atau * untuk semua)</translation>
+<translation id="7246767840750730334">Mengizinkan pengaktifan notifikasi Phone Hub.</translation>
 <translation id="7249828445670652637">Mengaktifkan sertifikat CA <ph name="PRODUCT_OS_NAME" /> untuk aplikasi ARC</translation>
 <translation id="7252681704926980614">Kirimkan nama pengguna dan nama file ke server printer native beserta setiap pekerjaan cetak. Setelan defaultnya bukan untuk mengirim.
 
@@ -4514,6 +4529,11 @@
 
       Kebijakan ini tidak digunakan lagi. Sebagai gantinya, gunakan <ph name="PRINTERS_BULK_BLOCKLIST" />.
       </translation>
+<translation id="7358744897221281073">Jika setelan ini diaktifkan, pengguna yang telah memilih untuk menggunakan Phone Hub akan dapat melanjutkan tugas seperti melihat halaman web ponsel di Chrome OS.
+
+      Jika setelan ini dinonaktifkan, pengguna tidak akan diizinkan menggunakan fitur ini. Jika kebijakan PhoneHubAllowed dinonaktifkan, pengguna juga tidak akan diizinkan menggunakan fitur ini.
+
+      Jika kebijakan ini tidak disetel, baik pengguna yang dikelola maupun tidak dikelola perusahaan akan diizinkan secara default.</translation>
 <translation id="7360181094056034924">Mengontrol perilaku <ph name="PRODUCT_NAME" /> terhadap data yang diupload dan didownload yang dianggap memerlukan pemindaian.  Menunda pengiriman berarti <ph name="PRODUCT_NAME" /> tidak akan mengizinkan pengguna untuk mengakses file yang didownload, memilih file untuk diupload, menempelkan dari papan klip, atau menarik lalu melepaskan data hingga dipindai dan keputusan pemindaian tersebut diketahui.  Batasan ini hanya berlaku bagi file atau data yang akan memerlukan pemindaian seperti ditentukan oleh <ph name="SEND_FILES_FOR_MALWARE_CHECK_POLICY_NAME" />, <ph name="CHECK_CONTENT_COMPLIANCE_POLICY_NAME" />, dan kebijakan yang mengontrol daftar domain yang dapat diperiksa.
 
       Jika kebijakan ini tidak ditetapkan atau ditetapkan ke 'Tidak ada', <ph name="PRODUCT_NAME" /> tidak akan menunda semua file yang akan diupload, menempelkan dari papan klip, menarik lalu melepas data, atau menunda akses ke semua file yang didownload.  Pemindaian akan dilakukan di latar belakang.
@@ -4569,6 +4589,13 @@
 
       - Jika kebijakan ini Dinonaktifkan, admin harus memberitahukan hal ini kepada pengguna akhir perangkat.</translation>
 <translation id="747275827471712187">Mengembalikan cookie di situs ini ke perilaku <ph name="ATTRIBUTE_SAMESITE_NAME" /> lama</translation>
+<translation id="7476621944304431784">Jika setelan ini diaktifkan, pengguna akan diizinkan untuk menyinkronkan konfigurasi jaringan Wi-Fi antara perangkat <ph name="PRODUCT_OS_NAME" /> dan ponsel Android yang terhubung. Sebelum konfigurasi jaringan Wi-Fi dapat disinkronkan, pengguna harus secara eksplisit memilih untuk menggunakan fitur ini dengan menyelesaikan alur penyiapan.
+
+      Jika setelan ini dinonaktifkan, pengguna tidak akan diizinkan untuk menyinkronkan konfigurasi jaringan Wi-Fi.
+
+      Fitur ini bergantung pada pengaktifan jenis data <ph name="WIFI_CONFIGURATIONS_DATATYPE_NAME" /> di Sinkronisasi Chrome. Jika <ph name="WIFI_CONFIGURATIONS_DATATYPE_NAME" /> dinonaktifkan di kebijakan <ph name="SYNC_TYPES_LIST_DISABLED_POLICY_NAME" />, atau Sinkronisasi Chrome dinonaktifkan di kebijakan <ph name="SYNC_DISABLED_POLICY_NAME" />, fitur ini tidak akan diaktifkan.
+
+      Jika kebijakan ini tidak disetel, pengguna terkelola tidak akan diizinkan secara default.</translation>
 <translation id="7477231245051133709">Mengaktifkan fitur aksesibilitas audio mono</translation>
 <translation id="7477239290070847560">Tujuan protokol berbasis Zeroconf (mDNS + DNS-SD)</translation>
 <translation id="7485481791539008776">Aturan pemilihan printer default</translation>
@@ -4710,6 +4737,7 @@
       Jika tidak ditetapkan, kursor besar akan dinonaktifkan di layar login. Pengguna dapat mengaktifkannya kapan saja, dan statusnya di layar login tetap bertahan walaupun pengguna sudah berbeda.
 
           Catatan: <ph name="DEVICE_LOGIN_SCREEN_LARGE_CURSOR_ENABLED" /> akan mengganti kebijakan ini jika kebijakan tersebut ditentukan.</translation>
+<translation id="7632147323011514740">Interval saat proses pembaruan snapshot data ARC dapat dimulai untuk Sesi Tamu Terkelola</translation>
 <translation id="7632724434767231364">Nama pustaka GSSAPI</translation>
 <translation id="7643883929273267746">Batasi akun yang terlihat di <ph name="PRODUCT_NAME" /></translation>
 <translation id="7648907905084499629">Gunakan perilaku <ph name="FEATURE_NAME_SAMESITE_BY_DEFAULT_COOKIES" /> untuk cookie di semua situs</translation>
@@ -4981,6 +5009,7 @@
       Kebijakan ini selalu berlaku untuk <ph name="PRODUCT_OS_NAME" />.</translation>
 <translation id="8050080920415773384">Pencetakan Asli</translation>
 <translation id="8053580360728293758">Mengganti mode warna pencetakan default. Jika mode tersebut tidak tersedia, kebijakan ini akan diabaikan.</translation>
+<translation id="8056237304861875584">Mengizinkan pengaktifan kelanjutan tugas Phone Hub.</translation>
 <translation id="8059164285174960932">URL tempat klien akses jarak jauh seharusnya memperoleh token autentikasi mereka</translation>
 <translation id="8077245272412229388">Menambahkan akun Kerberos yang telah diisi. Jika kredensial Kerberos cocok dengan kredensial login, akun dapat dikonfigurasi untuk menggunakan kembali kredensial login dengan menentukan '<ph name="LOGIN_EMAIL_PLACEHOLDER" />' dan <ph name="PASSWORD_PLACEHOLDER" />', masing-masing untuk akun utama dan sandi, sehingga tiket Kerberos dapat diambil secara otomatis kecuali autentikasi 2 langkah dikonfigurasi. Pengguna tidak dapat memodifikasi akun yang ditambahkan melalui kebijakan ini.
 
@@ -5722,6 +5751,11 @@
 <translation id="9084985621503260744">Tentukan apakah aktivitas video memengaruhi pengelolaan daya</translation>
 <translation id="9088433379343318874">Izinkan penyedia konten pengguna yang dilindungi</translation>
 <translation id="9088444059179765143">Mengonfigurasi metode deteksi zona waktu otomatis</translation>
+<translation id="9095999573959728902">Jika setelan ini diaktifkan, pengguna akan diizinkan memilih untuk menggunakan fitur Phone Hub, yang memungkinkan mereka berinteraksi dengan ponselnya di perangkat Chrome OS.
+
+      Jika setelan ini dinonaktifkan, pengguna tidak akan diizinkan memilih untuk menggunakan Phone Hub.
+
+      Jika kebijakan ini tidak disetel, secara default pengguna yang dikelola perusahaan tidak akan diizinkan dan pengguna yang tidak dikelola perusahaan akan diizinkan.</translation>
 <translation id="9096086085182305205">Daftar putih server autentikasi</translation>
 <translation id="9105265795073104888">Hanya bagian dari opsi konfigurasi proxy yang disediakan untuk aplikasi Android. Aplikasi Android dapat memilih untuk menggunakan proxy secara sukarela. Anda tidak dapat memaksakan aplikasi Android agar menggunakan proxy.</translation>
 <translation id="9106865192244721694">Izinkan WebUSB di situs ini</translation>
@@ -5770,6 +5804,7 @@
 <translation id="9152473318295429890">Aktifkan saran kontekstual halaman terkait</translation>
 <translation id="9153446010242995516">Roll back dan tetap menggunakan versi target jika versi OS lebih baru dari. Mencoba untuk menerapkan konfigurasi tingkat perangkat (termasuk kredensial jaringan) melalui proses rollback, jika memungkinkan, tetapi melakukan rollback dengan powerwash penuh meskipun pemulihan data tidak memungkinkan (karena versi target tidak mendukung pemulihan data atau karena perubahan tidak kompatibel untuk dikembalikan).
           Didukung pada <ph name="PRODUCT_OS_NAME" /> versi 75 dan yang lebih baru. Untuk klien yang lebih lama, nilai ini berarti rollback dinonaktifkan.</translation>
+<translation id="9155218447258425310">Durasi notifikasi terkait penghapusan kartu smart untuk <ph name="PRODUCT_OS_NAME" />.</translation>
 <translation id="9155375380628728544">Menetapkan kebijakan akan mengizinkan pengguna menambahkan hanya satu bahasa yang tercantum dalam kebijakan ini ke daftar bahasa yang diinginkan.
 
       Jika tidak ditetapkan atau ditetapkan ke daftar kosong, pengguna dapat menentukan bahasa sesuai keinginan.
diff --git a/components/policy/resources/policy_templates_ja.xtb b/components/policy/resources/policy_templates_ja.xtb
index e5e9005..5996949d 100644
--- a/components/policy/resources/policy_templates_ja.xtb
+++ b/components/policy/resources/policy_templates_ja.xtb
@@ -1440,6 +1440,11 @@
 <translation id="316778957754360075">この設定は <ph name="PRODUCT_NAME" /> バージョン 29 で廃止されました。組織でホストする拡張機能/アプリのコレクションを設定するには、CRX パッケージをホストするサイトを ExtensionInstallSources の中で指定し、パッケージへの直接ダウンロード リンクをウェブページに置くことをおすすめします。そのウェブページのランチャーは、ExtensionInstallForcelist ポリシーを使用して作成できます。</translation>
 <translation id="3168968618972302728">Kerberos 認証に関連するポリシーです。</translation>
 <translation id="3171369832001535378">デバイスのネットワーク ホスト名テンプレート</translation>
+<translation id="3176903288465566098">この設定が有効な場合、スマートフォン ハブをすでに有効にしているユーザーは、Chrome OS でスマートフォンの通知を送受信できます。
+
+      この設定が無効な場合、ユーザーはこの機能を使用できません。PhoneHubAllowed ポリシーが無効な場合も、ユーザーはこの機能を使用できません。
+
+      このポリシーが未設定の場合、デフォルトでは、企業で管理されているユーザーと管理されていないユーザーのいずれもこの機能を使用できまます。</translation>
 <translation id="3177802893484440532">ローカルの信頼済みアンカーでオンラインの OCSP/CRL チェックを必須にする</translation>
 <translation id="3184161739683646075">DNS-over-HTTPS モードを管理する</translation>
 <translation id="3185009703220253572">バージョン <ph name="SINCE_VERSION" /> 以降</translation>
@@ -2888,6 +2893,7 @@
 
       このポリシーを False にすると、Crostini コンテナへのポート転送は無効になります。</translation>
 <translation id="538108065117008131"><ph name="PRODUCT_FRAME_NAME" /> に対して次のコンテンツ タイプの処理を許可する</translation>
+<translation id="5383436189211119400">DeviceArcDataSnapshotHours ポリシーを設定した場合、ARC データ スナップショットのメカニズムが有効になります。定義された時間間隔の間、ARC データ スナップショットの更新が自動的に開始されます。時間間隔が開始し、ARC スナップショットの更新が要求されたときに、ユーザーが誰もログインしていなければ、ARC データ スナップショットの更新プロセスはユーザー通知なしで開始されます。ユーザー セッションがアクティブな場合は UI 通知が表示されます。ユーザーが承認した場合は、デバイスが再起動し、ARC データ スナップショットの更新プロセスが開始されます。注: ARC データ スナップショットの更新プロセス中は、デバイスを使用できなくなります。</translation>
 <translation id="538768040137709073">共有クリップボード機能を有効にします。同期が有効な場合、ログインしているユーザーは Chrome デスクトップと Android デバイス間でテキストを送信できます。
 
           このポリシーを true に設定した場合、Chrome のユーザーがデバイス間でテキストを送信する機能は有効になります。
@@ -4128,6 +4134,7 @@
 <translation id="7068108874199666656"><ph name="PRODUCT_OS_NAME" /> デバイスのすべてのユーザーにプッシュ型ネットワーク設定を適用できます。ネットワーク設定は、Open Network Configuration 形式で定義された JSON 形式の文字列です。</translation>
 <translation id="7070525176564511548">週 1 回(168 時間ごとに)パスワードの入力を求める</translation>
 <translation id="7072208053150563108">パソコンのパスワードの変更頻度</translation>
+<translation id="7072567600438630966">スマートフォン ハブを有効にできるようにします。</translation>
 <translation id="7079519252486108041">これらのサイトのポップアップをブロックする</translation>
 <translation id="7080072532759721791">パスワードで保護されているファイルのアップロードまたはダウンロードをユーザーに許可する</translation>
 <translation id="7086677522575756117">画面が暗くなっているか、オフになった直後にユーザーの操作が検出されたときに、画面を暗くするまでの時間を調整する比率を指定します。
@@ -4300,6 +4307,7 @@
       このポリシーが未設定または空白の場合、ユーザーは <ph name="PRODUCT_NAME" /> で、どの Google アカウントでもブラウザのメイン アカウントとして設定できます。</translation>
 <translation id="723103540848640830">ロック画面の PIN の最小桁数を設定する</translation>
 <translation id="7234280155140786597">禁止するネイティブ メッセージング ホストの名前(または、「*」ですべてを禁止)</translation>
+<translation id="7246767840750730334">スマートフォン ハブの通知を有効にできるようにします。</translation>
 <translation id="7249828445670652637">ARC アプリで <ph name="PRODUCT_OS_NAME" /> の CA 証明書を使用できるようにする</translation>
 <translation id="7252681704926980614">各印刷ジョブとともにユーザー名とファイル名をネイティブ プリンタ サーバーに送信します。デフォルトでは送信されません。
 
@@ -4403,6 +4411,11 @@
 
       このポリシーはサポートが終了しています。代わりに <ph name="PRINTERS_BULK_BLOCKLIST" /> を使用してください。
       </translation>
+<translation id="7358744897221281073">この設定が有効な場合、スマートフォン ハブをすでに有効にしているユーザーは、スマートフォンでのウェブページの閲覧などの作業を Chrome OS で継続できます。
+
+      この設定が無効な場合、ユーザーはこの機能を使用できません。PhoneHubAllowed ポリシーが無効な場合も、ユーザーはこの機能を使用できません。
+
+      このポリシーが未設定の場合、デフォルトでは、企業で管理されているユーザーと管理されていないユーザーのいずれもこの機能を使用できまます。</translation>
 <translation id="7360181094056034924">スキャンが必要とみなされるデータをアップロードまたはダウンロードした場合に、<ph name="PRODUCT_NAME" /> でどのような動作を行うかを管理します。実行を遅らせる場合、<ph name="PRODUCT_NAME" /> におけるダウンロードしたファイルへのアクセス、アップロードするファイルの選択、クリップボードからの貼り付け、データのドラッグ&ドロップに関して、そのファイルやデータがスキャンされ結果がわかるまではユーザーにそれらの操作を許可しません。ファイルのスキャンは、<ph name="SEND_FILES_FOR_MALWARE_CHECK_POLICY_NAME" />、<ph name="CHECK_CONTENT_COMPLIANCE_POLICY_NAME" />、およびチェックが有効なドメインのリストを管理するポリシーによりスキャンが必要とされたファイルやデータにのみ実行されます。
 
       このポリシーを設定しないか「なし」に設定した場合、<ph name="PRODUCT_NAME" /> では、アップロードするファイルの選択、クリップボードからの貼り付け、データのドラッグ&ドロップ、ダウンロードしたファイルへのアクセスを遅らせることがありません。なお、スキャンはバックグラウンドで処理されます。
@@ -4590,6 +4603,7 @@
       設定しない場合、ログイン画面で大きいカーソルが無効になります。ユーザーはいつでも有効にでき、ユーザーが切り替わってもその状態がログイン画面で保持されます。
 
           注: <ph name="DEVICE_LOGIN_SCREEN_LARGE_CURSOR_ENABLED" /> が指定されている場合はこのポリシーより優先されます。</translation>
+<translation id="7632147323011514740">管理対象のゲスト セッションで ARC データ スナップショットの更新プロセスを開始できる間隔</translation>
 <translation id="7632724434767231364">GSSAPI ライブラリ名</translation>
 <translation id="7643883929273267746"><ph name="PRODUCT_NAME" /> に表示されるアカウントを制限する</translation>
 <translation id="7648907905084499629">すべてのサイトの Cookie に <ph name="FEATURE_NAME_SAMESITE_BY_DEFAULT_COOKIES" /> 動作を使用する</translation>
@@ -4867,6 +4881,7 @@
       <ph name="PRODUCT_OS_NAME" /> の場合、このポリシーは常に有効です。</translation>
 <translation id="8050080920415773384">ネイティブ印刷</translation>
 <translation id="8053580360728293758">デフォルトのカラー印刷モードをオーバーライドします。このモードを使用できない場合、このポリシーは無視されます。</translation>
+<translation id="8056237304861875584">スマートフォン ハブの作業の継続を有効にできるようにします。</translation>
 <translation id="8059164285174960932">リモート アクセス クライアントが認証トークンを取得する URL</translation>
 <translation id="8077245272412229388">入力済みの Kerberos アカウントを追加します。Kerberos 認証情報とログイン認証情報が一致している場合、アカウントでログイン認証情報を再使用するように設定できます。手順は、「<ph name="LOGIN_EMAIL_PLACEHOLDER" />」と「<ph name="PASSWORD_PLACEHOLDER" />」でプリンシパルとパスワードをそれぞれ指定します。これにより、2 段階認証プロセスが設定されている場合以外は Kerberos チケットを自動的に取得できます。ユーザーは、このポリシーで追加されたアカウントを変更できません。
 
@@ -5621,6 +5636,11 @@
 <translation id="9084985621503260744">動画操作を電源管理に関連付けるかどうかを指定する</translation>
 <translation id="9088433379343318874">監視対象ユーザーのコンテンツ プロバイダを有効にする</translation>
 <translation id="9088444059179765143">タイムゾーン自動検出の方法を設定する</translation>
+<translation id="9095999573959728902">この設定が有効な場合、ユーザーはスマートフォン ハブを有効にできます。スマートフォン ハブは、Chrome OS デバイスからスマートフォンを操作できる機能です。
+
+      この設定が無効な場合、ユーザーはスマートフォン ハブを有効にできません。
+
+      このポリシーが未設定の場合、デフォルトにより、企業の管理対象ユーザーは使用を許可されず、管理対象外のユーザーは使用を許可されます。</translation>
 <translation id="9096086085182305205">認証サーバーのホワイトリスト</translation>
 <translation id="9105265795073104888">Android アプリではプロキシ設定オプションの一部のみを使用できます。プロキシを使用するかどうかは Android アプリ側の選択となります。Android アプリにプロキシの使用を強制することはできません。</translation>
 <translation id="9106865192244721694">WebUSB を許可するサイト</translation>
diff --git a/components/policy/resources/policy_templates_ko.xtb b/components/policy/resources/policy_templates_ko.xtb
index b4d829a6..e3e67f7 100644
--- a/components/policy/resources/policy_templates_ko.xtb
+++ b/components/policy/resources/policy_templates_ko.xtb
@@ -111,7 +111,7 @@
 
       * '강력'으로 설정하거나 설정하지 않으면 AES 유형만 허용됩니다.
 
-      * '레거시'로 설정하면 RC4 유형만 허용됩니다. RC4는 안전하지 않으며 극소수의 상황에서만 필요합니다. 가능하다면 AES 암호화를 지원하도록 서버를 재구성하세요.
+      * '레거시'로 설정하면 RC4 유형만 허용됩니다. RC4는 안전하지 않으며 매우 제한적인 상황에서만 필요합니다. 가능하다면 AES 암호화를 지원하도록 서버를 재구성하세요.
 
       다음 링크도 확인하시기 바랍니다. https://wiki.samba.org/index.php/Samba_4.6_Features_added/changed#Kerberos_client_encryption_types</translation>
 <translation id="1177567780207290133">이 정책을 설정하면 SafeSites URL 필터를 제어할 수 있습니다. 이 필터는 Google Safe Search API를 사용하여 음란물이 포함된 URL을 분류합니다.
@@ -658,7 +658,7 @@
 <translation id="203096360153626918">이 정책은 Android 앱에 아무런 영향도 미치지 않습니다. 이 정책이 <ph name="FALSE" />로 설정되더라도 Android 앱이 전체화면 모드로 전환될 수 있습니다.</translation>
 <translation id="2036522553891755455">정책을 사용 설정하면 공유 검색(<ph name="PRODUCT_NAME" />의 네트워크 파일 공유 기능)에서 <ph name="NETBIOS_PROTOCOL" />을 사용해 네트워크에서 공유 항목을 검색합니다. 사용 중지하면 공유 검색에서 이 프로토콜을 사용해 공유 항목을 검색하지 않습니다.
 
-      설정하지 않으면 관리되는 사용자 및 다른 사용자를 대상으로 이 동작이 기본적으로 사용 중지됩니다.</translation>
+      정책이 설정되지 않으면 관리 대상인 사용자에게는 이 동작이 사용 중지되며 다른 사용자에게는 기본적으로 사용 설정됩니다.</translation>
 <translation id="2037214548071298156">정책을 사용 설정하거나 설정하지 않으면 등록된 기기에서 CPU/RAM 사용 등의 하드웨어 통계를 보고합니다.
 
       정책을 사용 중지하면 등록된 기기에서 하드웨어 통계를 보고하지 않습니다.</translation>
@@ -812,7 +812,7 @@
 
       USB 권한 모델은 요청 URL에 USB 기기 액세스 권한 부여를 위해 요청 URL과 삽입 URL(최상위 프레임 사이트)을 사용합니다. 요청하는 사이트가 iframe에서 로드되는 경우 요청 URL은 삽입 URL과 다를 수 있습니다. 따라서 'urls' 필드에는 URL을 지정하기 위해 쉼표로 구분된 문자열을 2개까지 포함할 수 있습니다. URL을 하나만 지정한 경우 삽입 상태와 관계없이 요청하는 사이트의 URL이 지정한 URL과 일치하면 해당 USB 기기에 대한 액세스 권한이 부여됩니다. 'urls' 필드의 URL은 반드시 유효한 URL이어야 하며 그렇지 않으면 정책이 무시됩니다.
 
-      정책을 설정하지 않으면 <ph name="DEFAULT_WEB_USB_GUARD_SETTING_POLICY_NAME" />이 적용(설정되어 있는 경우에만)되며 설정되어 있지 않다면 사용자의 개인 설정이 적용됩니다.
+      정책을 설정하지 않으면 <ph name="DEFAULT_WEB_USB_GUARD_SETTING_POLICY_NAME" />이 적용(사용 설정되어 있는 경우에 한 해)되며 설정되어 있지 않다면 사용자의 개인 설정이 적용됩니다.
 
       정책의 URL 패턴은 <ph name="WEB_USB_BLOCKED_FOR_URLS_POLICY_NAME" />를 통해 구성된 패턴과 충돌해서는 안 됩니다. 충돌할 경우 이 정책이 <ph name="WEB_USB_BLOCKED_FOR_URLS_POLICY_NAME" />와 <ph name="WEB_USB_ASK_FOR_URLS_POLICY_NAME" />보다 우선 적용됩니다.</translation>
 <translation id="2289265947759479962">이 정책은 OS 버전, OS 플랫폼, OS 아키텍처, <ph name="PRODUCT_NAME" /> 버전, <ph name="PRODUCT_NAME" /> 채널과 같은 버전 정보의 보고 여부를 제어합니다.
@@ -1125,6 +1125,7 @@
       정책을 설정하지 않으면 목록에 아무 웹사이트도 추가되지 않습니다.
 
       참고: <ph name="USE_IE_SITELIST_POLICY_NAME" /> 및 <ph name="EXTERNAL_SITELIST_URL_POLICY_NAME" /> 정책을 통해서도 이 목록에 요소를 추가할 수 있습니다.</translation>
+<translation id="2640898752536996430">사용자를 로그아웃합니다.</translation>
 <translation id="264093234299818170">차단 목록에 있는 프린터를 제외한 모든 프린터가 표시됩니다.</translation>
 <translation id="264252574246191885">비공개</translation>
 <translation id="2647069081229792812">북마크 수정 사용 또는 사용 중지</translation>
@@ -1456,6 +1457,7 @@
 <translation id="3072847235228302527">기기 로컬 계정에 대한 서비스 약관 설정</translation>
 <translation id="3086995894968271156"><ph name="PRODUCT_NAME" />의 Cast 수신기를 설정합니다.</translation>
 <translation id="3091832372132789233">주로 외부 전원에 연결된 기기의 배터리를 충전합니다.</translation>
+<translation id="309416443108680956">보안 토큰(예: 스마트 카드 사용)을 통해 인증하는 사용자가 세션 도중에 토큰을 삭제하는 경우 어떻게 되는지 지정합니다. <ph name="SECURITY_TOKEN_SESSION_BEHAVIOR_IGNORE" />: 아무런 일도 일어나지 않습니다. <ph name="SECURITY_TOKEN_SESSION_BEHAVIOR_LOCK" />: 사용자가 다시 인증하기 전까지 화면이 잠깁니다. <ph name="SECURITY_TOKEN_SESSION_BEHAVIOR_LOGOUT" />: 세션이 종료되며 사용자가 로그아웃됩니다. 정책을 설정하지 않으면 <ph name="SECURITY_TOKEN_SESSION_BEHAVIOR_IGNORE" />가 기본으로 설정됩니다.</translation>
 <translation id="3096595567015595053">사용 가능한 플러그인 목록</translation>
 <translation id="3101501961102569744">프록시 서버 설정을 지정하는 방법 선택</translation>
 <translation id="3101709781009526431">날짜 및 시간</translation>
@@ -1476,6 +1478,11 @@
 <translation id="316778957754360075">이 설정은 <ph name="PRODUCT_NAME" /> 버전 29를 기준으로 지원 중단되었습니다. 기관/단체에서 호스팅하는 확장 프로그램/앱 컬렉션을 설정하는 가장 좋은 방법은 CRX 패키지를 호스팅하는 사이트를 ExtensionInstallSources에 포함시키고 패키지에 대한 직접 다운로드 링크를 웹페이지에 제공하는 것입니다. 웹페이지 런처는 ExtensionInstallForcelist 정책을 사용하여 만들 수 있습니다.</translation>
 <translation id="3168968618972302728">Kerberos 인증과 관련된 정책입니다.</translation>
 <translation id="3171369832001535378">기기 네트워크 호스트 이름 템플릿</translation>
+<translation id="3176903288465566098">이 설정을 켜면 이미 휴대전화 허브 사용을 선택한 사용자가 Chrome OS에서 휴대전화 알림을 보내고 받을 수 있게 됩니다.
+
+      설정을 끄면 사용자가 이 기능을 사용할 수 없습니다. PhoneHubAllowed 정책을 꺼도 사용자가 이 기능을 사용할 수 없습니다.
+
+      정책을 설정하지 않으면 기업 관리 사용자 및 관리되지 않는 사용자 모두 기본적으로 기능을 사용할 수 있습니다.</translation>
 <translation id="3177802893484440532">로컬 트러스트 앵커에 온라인 OCSP/CRL 확인을 요구합니다.</translation>
 <translation id="3184161739683646075">DNS-over-HTTPS 모드 제어</translation>
 <translation id="3185009703220253572">버전 <ph name="SINCE_VERSION" /> 이상</translation>
@@ -1874,6 +1881,7 @@
       정책을 설정하면 사용자가 <ph name="PRODUCT_NAME" />에서 홈페이지 유형을 변경할 수 없습니다. 설정하지 않으면 사용자가 새 탭 페이지를 홈페이지로 지정할지 결정할 수 있습니다.
 
       <ph name="MS_WIN_NAME" />의 경우 이 기능은 <ph name="MS_AD_NAME" /> 도메인에 연결된 인스턴스, Windows 10 Pro에서 실행되는 인스턴스, <ph name="CHROME_BROWSER_CLOUSE_MANAGEMENT_NAME" />에 등록된 인스턴스에서만 사용할 수 있습니다. <ph name="MAC_OS_NAME" />의 경우 이 기능은 MDM을 통해 관리되는 인스턴스 또는 MCX를 통해 도메인에 연결된 인스턴스에서만 사용할 수 있습니다.</translation>
+<translation id="3695706037816556327"><ph name="PRODUCT_OS_NAME" />에서 보안 토큰(예: 스마트 카드) 삭제 시 실행할 작업입니다.</translation>
 <translation id="3701121231485832347"><ph name="MS_AD_NAME" /> 관리 <ph name="PRODUCT_OS_NAME" /> 기기에 대한 설정을 제어합니다.</translation>
 <translation id="3702518095257671450">원격 증명</translation>
 <translation id="3702647575225525306"><ph name="POLICY_NAME" />(한 줄 입력란은 지원 중단되었으며 삭제될 예정입니다. 아래의 여러 줄 입력란을 사용해 주세요.)</translation>
@@ -1911,6 +1919,8 @@
 
       이 정책을 설정하지 않으면 사용자가 직접 프록시 설정을 선택할 수 있습니다.</translation>
 <translation id="3758249152301468420">개발자 도구 사용 중지</translation>
+<translation id="3760231600118073732">현재 세션을 잠급니다.</translation>
+<translation id="3764097800332238572">이 정책은 <ph name="SECURITY_TOKEN_SESSION_BEHAVIOR_POLICY_NAME" /> 정책이 <ph name="SECURITY_TOKEN_SESSION_BEHAVIOR_LOCK" /> 또는 <ph name="SECURITY_TOKEN_SESSION_BEHAVIOR_LOGOUT" />으로 설정되어 있으며 스마트 카드를 통해 인증하는 사용자가 해당 스마트 카드를 삭제하는 경우에만 적용됩니다. 그런 다음 이 정책은 사용자에게 곧 실행될 작업에 관해 알리는 알림을 몇 초 동안 표시할지 지정합니다. 이 알림은 화면을 가립니다. 작업은 알림이 만료된 후에만 실행됩니다. 사용자는 알림이 만료되기 전에 스마트 카드를 다시 삽입하여 작업이 시작되지 않도록 할 수 있습니다. 정책이 0으로 설정되어 있으면 알림이 표시되지 않으며 작업이 즉시 실행됩니다.</translation>
 <translation id="3765260570442823273">유휴 로그아웃 경고 메시지 표시 시간</translation>
 <translation id="377044054160169374">악의적 사용자 환경 개입 시행</translation>
 <translation id="3780152581321609624">Kerberos SPN에 비표준 포트 포함</translation>
@@ -2955,6 +2965,7 @@
 
       False로 설정되면 Crostini 컨테이너로 포트 전달이 사용 중지됩니다.</translation>
 <translation id="538108065117008131"><ph name="PRODUCT_FRAME_NAME" />이(가) 다음 콘텐츠 유형을 다루도록 허용</translation>
+<translation id="5383436189211119400">'DeviceArcDataSnapshotHours' 정책을 설정하면 ARC 데이터 스냅샷 생성 메커니즘이 켜집니다. 또한 ARC 데이터 스냅샷 생성 업데이트가 정해진 시간 간격으로 자동 실행될 수 있습니다. 간격이 시작될 때 ARC 스냅샷 업데이트가 필요하고 로그인된 사용자가 없으면 ARC 데이터 스냅샷 업데이트 프로세스가 사용자 알림 없이 시작됩니다. 사용자 세션이 활성 상태이면 UI 알림이 표시되고 알림을 수락해야 기기를 재부팅하고 ARC 데이터 스냅샷 업데이트 프로세스를 시작할 수 있습니다. 참고: ARC 데이터 스냅샷 업데이트 프로세스 중에는 기기 사용이 차단됩니다.</translation>
 <translation id="538768040137709073">동기화가 사용 설정되고 사용자가 로그인되어 있으면 사용자가 Chrome 데스크톱과 Android 기기 간에 텍스트를 전송할 수 있도록 허용하는 공유 클립보드 기능을 사용 설정합니다.
 
           이 정책이 True로 설정되면 Chrome 사용자의 기기 간 텍스트 전송 기능이 사용됩니다.
@@ -3255,9 +3266,9 @@
 <translation id="5697306356229823047">기기 사용자 보고</translation>
 <translation id="570062449808736508">웹 제한 권한 정책이 비어있지 않은 문자열로 설정된 경우 WebView는 주어진 권한 이름으로 콘텐츠 제공업체로부터 URL 제한을 읽습니다.</translation>
 <translation id="5708969689202733975">허용된 빠른 잠금 해제 모드를 설정합니다.</translation>
-<translation id="5715617256528927547">정책을 설정하면 그룹 정책 객체(GPO)의 전체 기간을 시간 단위로 지정합니다. 이는 GPO가 다시 다운로드되기 전에 다시 사용될 수 있는 최대 기간을 의미합니다. 정책을 가져올 때마다 GPO를 다시 다운로드하는 대신, GPO 버전이 바뀌지 않는 이상 시스템에서 캐시된 GPO를 재사용합니다.
+<translation id="5715617256528927547">정책을 설정하면 그룹 정책 객체(GPO)의 전체 기간을 시간 단위로 지정합니다. 이는 GPO가 다시 다운로드되기 전에 다시 사용될 수 있는 최대 기간을 의미합니다. 정책을 가져올 때마다 GPO를 다시 다운로드하는 대신 시스템에서 캐시된 GPO를 재사용(버전이 바뀌지 않는다는 전제하에) 합니다.
 
-      정책을 0으로 설정하면 GPO 캐시가 사용 중지됩니다. 이렇게 하면 GPO가 바뀌지 않더라도 정책을 가져올 때마다 GPO가 다시 다운로드되기 때문에 서버 로드가 증가합니다.
+      정책을 0으로 설정하면 GPO 캐시가 사용 중지됩니다. 이렇게 하면 GPO가 바뀌지 않더라도 정책을 가져올 때마다 GPO가 다시 다운로드되어 서버 로드가 증가합니다.
 
       설정하지 않으면 캐시된 GPO가 최대 25시간까지 재사용될 수 있습니다.
 
@@ -3313,7 +3324,7 @@
 
       정책을 설정하면 사용자가 <ph name="PRODUCT_NAME" />에서 이를 변경할 수 없습니다. 설정하지 않으면 사용자 인증 정보 유출 확인은 허용되나 사용자가 이를 사용 중지할 수 있습니다. 
 
-      이 동작은 세이프 브라우징이 정책 또는 사용자에 의해 사용 중지되어 있으면 실행되지 않습니다. 세이프 브라우징을 강제로 사용 설정하려면 <ph name="SAFE_BROWSING_ENABLED_POLICY_NAME" /> 정책이나 <ph name="SAFE_BROWSING_PROTETION_LEVEL_POLICY_NAME" /> 정책을 사용하세요.</translation>
+이 동작은 세이프 브라우징이 정책 또는 사용자에 의해 사용 중지되어 있으면 실행되지 않습니다. 세이프 브라우징을 강제로 사용 설정하려면 <ph name="SAFE_BROWSING_ENABLED_POLICY_NAME" /> 정책이나 <ph name="SAFE_BROWSING_PROTETION_LEVEL_POLICY_NAME" /> 정책을 사용하세요.</translation>
 <translation id="5836064773277134605">원격 액세스 호스트에서 사용되는 UDP 포트 범위 제한</translation>
 <translation id="5845686745936515940">모든 쿠키를 기존 <ph name="ATTRIBUTE_SAMESITE_NAME" /> 동작으로 되돌릴 수 있습니다. 기존 동작으로 되돌리면 <ph name="ATTRIBUTE_SAMESITE_NAME" /> 속성을 지정하지 않은 쿠키가 '<ph name="ATTRIBUTE_VALUE_SAMESITE_NONE" />'인 것처럼 처리되고 '<ph name="ATTRIBUTE_VALUE_SAMESITE_NONE" />' 쿠키가 '<ph name="ATTRIBUTE_SECURE_NAME" />' 속성을 전달하지 않아도 되며, 두 사이트가 동일한 사이트인지 평가할 때 스킴 비교를 건너뜁니다. https://www.chromium.org/administrators/policy-list-3/cookie-legacy-samesite-policies에서 전체 설명을 확인하세요.
 
@@ -3626,7 +3637,7 @@
       <ph name="CORS" />의 세부사항을 확인하려면 <ph name="CORS_HELP_URL" /> 페이지를 참고하세요.
 
       이 정책은 <ph name="PRODUCT_NAME" /> 버전 82에서 삭제된다고 발표되었으나, 버전 84에서 삭제되었습니다.</translation>
-<translation id="6279722058145292462">정책을 설정하면 클라이언트에서 기기 계정 비밀번호를 변경할 빈도가 일 단위로 지정됩니다. 비밀번호는 클라이언트에 의해 임의로 생성되며 사용자에게 표시되지 않습니다. 정책을 사용 중지하거나 일 수를 너무 높게 설정하면 보안에 부정적인 영향을 미칠 수 있습니다. 잠재적인 공격자에게 기기 계정 비밀번호를 찾고 사용할 시간이 추가로 주어지기 때문입니다.
+<translation id="6279722058145292462">정책을 설정하면 클라이언트에서 기기 계정 비밀번호 변경 빈도가 일 단위로 지정됩니다. 비밀번호는 클라이언트에 의해 임의로 생성되며 사용자에게는 표시되지 않습니다. 정책을 사용 중지하거나 일 수를 너무 높게 설정하면 보안에 부정적인 영향을 미칠 수 있습니다. 잠재적인 공격자에게 기기 계정 비밀번호를 찾고 사용할 시간이 추가로 주어지기 때문입니다.
 
       설정하지 않으면 기기 계정 비밀번호가 30일마다 변경됩니다.
 
@@ -3778,7 +3789,7 @@
       정책을 설정하지 않으면 사용자가 잠금 화면에서 사용 설정할 수 있는 앱 집합에 정책에 따른 제한이 적용되지 않습니다.</translation>
 <translation id="6506486086262398387">정책을 사용 설정하면 <ph name="PRODUCT_OS_NAME" />의 네트워크 파일 공유 기능에서 필요한 경우 SMB 공유 항목 인증에 NTLM을 사용합니다. 사용 중지하면 SMB 공유 항목에 NTLM 인증이 사용 중지됩니다.
 
-      설정하지 않으면 관리되는 사용자 및 다른 사용자를 대상으로 이 동작이 기본적으로 사용 중지됩니다.</translation>
+      정책이 설정되지 않으면 관리 대상인 사용자에게는 이 동작이 사용 중지되며 다른 사용자에게는 기본적으로 사용 설정됩니다.</translation>
 <translation id="6515357889978918016"><ph name="PLUGIN_VM_NAME" /> 이미지</translation>
 <translation id="6518102411616460786">채널 다운그레이드 시 보완할 대상 채널 대기</translation>
 <translation id="6520802717075138474">처음 실행 시 기본 브라우저에서 검색엔진 가져오기</translation>
@@ -3938,6 +3949,7 @@
 <translation id="6672070613706645316">사용자가 새 탭 페이지의 배경을 맞춤설정하도록 허용</translation>
 <translation id="6672630473862787247">일반, 시크릿 모드, 게스트 세션에서 수동 인증을 사용 설정합니다.</translation>
 <translation id="6685903773201985073">게스트 세션과 일반 세션에서 수동 인증을 사용 설정합니다.</translation>
+<translation id="6689343802305995925">아무 작업도 실행하지 않습니다.</translation>
 <translation id="6689792153960219308">하드웨어 상태 보고</translation>
 <translation id="6690425645391461516">DNS 가로채기 검사를 사용 중지하고 'http://intranetsite/'를 찾으셨나요? 정보 표시줄을 허용합니다.</translation>
 <translation id="6698632841807204978">단색 인쇄 사용 설정</translation>
@@ -4206,6 +4218,7 @@
 
       정책을 사용 안함으로 설정하면 대체 브라우저로 전환한 후 <ph name="PRODUCT_NAME" />에서 마지막 탭일지라도 모두 닫습니다. 따라서 <ph name="PRODUCT_NAME" />이 완전히 종료됩니다.</translation>
 <translation id="7019805045859631636">Fast</translation>
+<translation id="7026351325994257733"><ph name="PRODUCT_OS_NAME" /> 기기 및 연결된 Android 휴대전화 전체에서 Wi-Fi 네트워크 구성을 동기화하도록 허용합니다.</translation>
 <translation id="7027785306666625591"><ph name="PRODUCT_OS_NAME" />에서 전원 관리를 설정합니다.
 
       이 정책으로 사용자가 일정 시간 동안 유휴 상태일 때 <ph name="PRODUCT_OS_NAME" />에서 수행할 동작을 설정할 수 있습니다.</translation>
@@ -4234,6 +4247,7 @@
 <translation id="7068108874199666656">네트워크 설정을 푸시하여 모든 <ph name="PRODUCT_OS_NAME" /> 기기 사용자의 기기에 적용할 수 있도록 합니다. 네트워크 설정은 오픈 네트워크 구성 형식에 정의된 JSON 형식 문자열입니다.</translation>
 <translation id="7070525176564511548">매주(168시간) 비밀번호를 입력해야 합니다.</translation>
 <translation id="7072208053150563108">기기 비밀번호 변경 속도</translation>
+<translation id="7072567600438630966">휴대전화 허브를 켤 수 있게 합니다.</translation>
 <translation id="7079519252486108041">이 사이트에서 팝업 차단</translation>
 <translation id="7080072532759721791">사용자의 비밀번호로 보호된 파일 업로드 또는 다운로드 허용</translation>
 <translation id="7086677522575756117">화면이 어두워졌거나 화면이 꺼진 후 얼마 지나지 않았을 때 사용자 동작이 감지될 경우 화면 어둡게 하기 지연 시간이 조정되는 비율을 지정합니다.
@@ -4412,6 +4426,7 @@
       이 정책이 설정되지 않거나 공백으로 남아 있으면 사용자가 <ph name="PRODUCT_NAME" />에서 어떤 Google 계정이든 브라우저 기본 계정으로 설정할 수 있습니다.</translation>
 <translation id="723103540848640830">잠금 화면 PIN 최소 길이 설정</translation>
 <translation id="7234280155140786597">차단된 기본 메시지 호스트의 이름(모두 차단하려면 * 값 적용)</translation>
+<translation id="7246767840750730334">휴대전화 허브 알림을 켤 수 있게 합니다.</translation>
 <translation id="7249828445670652637">ARC 앱에서 <ph name="PRODUCT_OS_NAME" /> CA 인증서를 사용하도록 설정</translation>
 <translation id="7252681704926980614">모든 인쇄 작업에서 사용자 이름과 파일 이름을 기본 프린터 서버로 보냅니다. 보내지 않도록 기본 설정되어 있습니다.
 
@@ -4518,6 +4533,11 @@
 
       이 정책은 지원 중단되었으므로 <ph name="PRINTERS_BULK_BLOCKLIST" /> 정책을 대신 사용하세요.
       </translation>
+<translation id="7358744897221281073">이 설정을 켜면 이미 휴대전화 허브 사용을 선택한 사용자가 작업을 이어서 할 수 있게 됩니다(예: 휴대전화에서 보던 웹페이지를 Chrome OS에서 보기).
+
+      설정을 끄면 사용자가 이 기능을 사용할 수 없습니다. PhoneHubAllowed 정책을 꺼도 사용자가 이 기능을 사용할 수 없습니다.
+
+      정책을 설정하지 않으면 기업 관리 사용자 및 관리되지 않는 사용자 모두 기본적으로 기능을 사용할 수 있습니다.</translation>
 <translation id="7360181094056034924">스캔이 필요하다고 결정되는 업로드 및 다운로드된 데이터에 대한 <ph name="PRODUCT_NAME" />의 작동 방식을 제어합니다.  전송이 지연되면 스캔이 완료되고 스캔 평가가 확인될 때까지 <ph name="PRODUCT_NAME" />에서 사용자가 다운로드된 파일에 액세스하거나, 업로드할 파일을 선택하거나, 데이터를 클립보드로부터 붙여넣거나 드래그 앤 드롭하도록 허용하지 않습니다.  이 제한은 검사가 사용 설정된 도메인 목록을 제어하는 정책, <ph name="SEND_FILES_FOR_MALWARE_CHECK_POLICY_NAME" /> 및 <ph name="CHECK_CONTENT_COMPLIANCE_POLICY_NAME" />에서 스캔이 필요하다고 결정하는 파일 또는 데이터에만 적용됩니다.
 
       정책이 설정되지 않거나 '없음'으로 설정되면 <ph name="PRODUCT_NAME" />에서 파일 업로드, 클립보드로부터 붙여넣기, 데이터 드래그 앤 드롭 또는 다운로드된 파일에 대한 액세스 지연을 사용하지 않습니다.  스캔은 백그라운드에서 진행됩니다.
@@ -4573,6 +4593,13 @@
 
       - 정책을 사용 안함으로 설정하면 관리자가 기기의 최종 사용자에게 이를 알려야 합니다.</translation>
 <translation id="747275827471712187">이 사이트에서 쿠키의 레거시 <ph name="ATTRIBUTE_SAMESITE_NAME" /> 동작으로 되돌리기</translation>
+<translation id="7476621944304431784">설정을 사용하면 사용자가 <ph name="PRODUCT_OS_NAME" /> 기기 및 연결된 Android 휴대전화 간에 Wi-Fi 네트워크 구성을 동기화할 수 있습니다. Wi-Fi 네트워크 구성을 동기화하려면 사용자가 설정 절차를 완료하여 이 기능을 명시적으로 선택해야 합니다.
+
+      설정을 사용 중지하면 사용자가 Wi-Fi 네트워크 구성을 동기화할 수 없습니다.
+
+      이 기능은 Chrome 동기화에서 <ph name="WIFI_CONFIGURATIONS_DATATYPE_NAME" /> 데이터 유형이 사용 설정되어 있는지에 따라 다르게 작동합니다. <ph name="SYNC_TYPES_LIST_DISABLED_POLICY_NAME" /> 정책에서 <ph name="WIFI_CONFIGURATIONS_DATATYPE_NAME" />가 사용 중지되어 있거나 <ph name="SYNC_DISABLED_POLICY_NAME" /> 정책에서 Chrome 동기화가 사용 중지되어 있는 경우 기능이 사용되지 않습니다.
+
+      정책을 설정하지 않으면 관리되는 사용자에게 기능이 기본적으로 허용되지 않습니다.</translation>
 <translation id="7477231245051133709">모노 오디오 접근성 기능 사용</translation>
 <translation id="7477239290070847560">Zeroconf 기반(mDNS + DNS-SD) 프로토콜 목적지</translation>
 <translation id="7485481791539008776">기본 프린터 선택 규칙</translation>
@@ -4715,6 +4742,7 @@
       설정하지 않으면 로그인 화면에서 큰 커서가 사용 중지됩니다. 사용자는 언제든지 이 기능을 사용 설정할 수 있으며 로그인 화면에서 이 기능의 상태는 사용자가 바뀌어도 유지됩니다.
 
           참고: <ph name="DEVICE_LOGIN_SCREEN_LARGE_CURSOR_ENABLED" />이(가) 지정된 경우 이 정책을 재정의합니다.</translation>
+<translation id="7632147323011514740">관리되는 게스트 세션에서 ARC 데이터 스냅샷 업데이트 프로세스를 시작할 수 있는 간격</translation>
 <translation id="7632724434767231364">GSSAPI 라이브러리 이름</translation>
 <translation id="7643883929273267746"><ph name="PRODUCT_NAME" />에 표시되는 계정 제한</translation>
 <translation id="7648907905084499629">모든 사이트에서 쿠키에 <ph name="FEATURE_NAME_SAMESITE_BY_DEFAULT_COOKIES" /> 동작 사용</translation>
@@ -4995,6 +5023,7 @@
       <ph name="PRODUCT_OS_NAME" />의 경우 이 정책이 항상 적용됩니다.</translation>
 <translation id="8050080920415773384">기본 인쇄</translation>
 <translation id="8053580360728293758">기본 컬러 인쇄 모드를 재정의합니다. 이 모드를 사용할 수 없는 경우 이 정책은 무시됩니다.</translation>
+<translation id="8056237304861875584">휴대전화 허브 작업 이어서 하기를 켤 수 있게 합니다.</translation>
 <translation id="8059164285174960932">원격 액세스 클라이언트가 인증 토큰을 확보해야 하는 URL</translation>
 <translation id="8077245272412229388">사전 완성된 Kerberos 계정을 추가합니다. Kerberos 사용자 인증 정보가 로그인 사용자 인증 정보와 일치하는 경우, '<ph name="LOGIN_EMAIL_PLACEHOLDER" />' 및 '<ph name="PASSWORD_PLACEHOLDER" />'을(를) 주 구성원 및 비밀번호로 지정하여 로그인 사용자 인증 정보를 재사용하도록 계정을 구성할 수 있습니다. 이렇게 하면 2단계 인증이 구성된 경우가 아닌 이상 Kerberos 티켓을 자동으로 가져올 수 있습니다. 이 정책을 통해 추가된 계정은 사용자가 수정할 수 없습니다.
 
@@ -5762,6 +5791,11 @@
 <translation id="9084985621503260744">동영상 활동이 전원 관리에 영향을 미치는지 여부 지정</translation>
 <translation id="9088433379343318874">관리 대상 사용자 콘텐츠 제공업체 사용</translation>
 <translation id="9088444059179765143">자동 시간대 감지 방법 설정</translation>
+<translation id="9095999573959728902">이 설정을 켜면 사용자가 Chrome OS 기기에서 휴대전화와 상호작용하게 해 주는 기능인 휴대전화 허브를 사용하도록 선택할 수 있습니다.
+
+      설정을 끄면 사용자가 휴대전화 허브 사용을 선택할 수 없습니다.
+
+      정책을 설정하지 않으면 기본적으로 엔터프라이즈 관리 사용자에게 기능 사용이 허용되지 않으며 관리되지 않는 사용자에게는 허용됩니다.</translation>
 <translation id="9096086085182305205">인증 서버 허용목록</translation>
 <translation id="9105265795073104888">프록시 설정 옵션 중 일부만 Android 앱에서 사용할 수 있습니다. Android 앱에서는 자발적으로 프록시를 사용하도록 선택할 수 있습니다. 강제로 Android 앱에서 프록시를 사용하도록 할 수 없습니다.</translation>
 <translation id="9106865192244721694">이 사이트에서 WebUSB 허용</translation>
@@ -5817,6 +5851,7 @@
 <translation id="9152473318295429890">상황에 따라 관련 웹페이지 추천</translation>
 <translation id="9153446010242995516">OS 버전이 대상 버전보다 높은 경우 대상 버전으로 롤백하고 버전을 유지합니다. 가능하다면 롤백 과정에서 기기 수준 설정(네트워크 사용자 인증 정보 포함) 이전을 시도하지만, 대상 버전에서 데이터 복원을 지원하지 않거나 하위 비호환 변경사항으로 인해 데이터 복원이 불가능한 경우에도 전체 파워워시로 롤백합니다.
           <ph name="PRODUCT_OS_NAME" /> 버전 75 이상에서 지원됩니다. 이전 버전의 클라이언트에서는 이 값으로는 롤백을 사용할 수 없다는 의미입니다.</translation>
+<translation id="9155218447258425310"><ph name="PRODUCT_OS_NAME" />에서 스마트 카드 삭제 시 알림이 표시되는 기간입니다.</translation>
 <translation id="9155375380628728544">정책을 설정하면 사용자가 이 정책에 나열된 언어 중 하나만 기본 언어 목록에 추가할 수 있습니다.
 
       설정하지 않거나 빈 목록으로 설정하면 사용자는 언어를 기본 설정으로 지정할 수 있습니다.
diff --git a/components/policy/resources/policy_templates_nl.xtb b/components/policy/resources/policy_templates_nl.xtb
index 22117bf..3048adf 100644
--- a/components/policy/resources/policy_templates_nl.xtb
+++ b/components/policy/resources/policy_templates_nl.xtb
@@ -1105,6 +1105,7 @@
       Als je het beleid niet instelt, worden er geen websites aan de lijst toegevoegd.
 
       Opmerking: Elementen kunnen ook aan deze lijst worden toegevoegd via het <ph name="USE_IE_SITELIST_POLICY_NAME" />- en <ph name="EXTERNAL_SITELIST_URL_POLICY_NAME" />-beleid.</translation>
+<translation id="2640898752536996430">De gebruiker uitloggen.</translation>
 <translation id="264093234299818170">Alle printers worden weergegeven, behalve printers op de blokkeringslijst.</translation>
 <translation id="264252574246191885">Verborgen</translation>
 <translation id="2647069081229792812">Bewerken van bookmarks in- of uitschakelen</translation>
@@ -1436,6 +1437,7 @@
 <translation id="3072847235228302527">De Servicevoorwaarden instellen voor een apparaat-lokaal account</translation>
 <translation id="3086995894968271156">De Cast-receiver instellen in <ph name="PRODUCT_NAME" />.</translation>
 <translation id="3091832372132789233">Batterijen opladen van apparaten die ook zijn aangesloten op een externe voedingsbron.</translation>
+<translation id="309416443108680956">Hiermee wordt aangegeven wat er gebeurt als een gebruiker die verificatie via een beveiligingstoken uitvoert (bijv. met een smartcard), dat token verwijdert tijdens een sessie. <ph name="SECURITY_TOKEN_SESSION_BEHAVIOR_IGNORE" />: Er gebeurt niets. <ph name="SECURITY_TOKEN_SESSION_BEHAVIOR_LOCK" />: Het scherm wordt vergrendeld tot de gebruiker de verificatie opnieuw uitvoert. <ph name="SECURITY_TOKEN_SESSION_BEHAVIOR_LOGOUT" />: De sessie wordt beëindigd en de gebruiker wordt uitgelogd. Als je dit beleid niet instelt, geldt de standaardwaarde <ph name="SECURITY_TOKEN_SESSION_BEHAVIOR_IGNORE" />.</translation>
 <translation id="3096595567015595053">Lijst met ingeschakelde plug-ins</translation>
 <translation id="3101501961102569744">Kies hoe je proxyserverinstellingen wilt specificeren</translation>
 <translation id="3101709781009526431">Datum en tijd</translation>
@@ -1855,6 +1857,7 @@
       Als je het beleid instelt, kunnen gebruikers het type homepage niet wijzigen in <ph name="PRODUCT_NAME" />. Als je dit beleid niet instelt, kan de gebruiker bepalen of de pagina 'Nieuw tabblad' als homepage wordt gebruikt.
 
       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_CLOUSE_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="3695706037816556327">Actie bij verwijdering van beveiligingstoken (bijv. smartcard) voor <ph name="PRODUCT_OS_NAME" />.</translation>
 <translation id="3701121231485832347">Beheert instellingen die specifiek zijn voor <ph name="PRODUCT_OS_NAME" />-apparaten die via <ph name="MS_AD_NAME" /> worden beheerd.</translation>
 <translation id="3702518095257671450">Externe bevestiging</translation>
 <translation id="3702647575225525306"><ph name="POLICY_NAME" /> (Het veld met één regel is beëindigd en wordt in de toekomst verwijderd. Gebruik het tekstvak met meerdere regels hieronder.)</translation>
@@ -1892,6 +1895,8 @@
 
       Als je dit beleid niet instelt, kunnen gebruikers zelf de gewenste proxyinstellingen selecteren.</translation>
 <translation id="3758249152301468420">Ontwikkelaarstools uitschakelen</translation>
+<translation id="3760231600118073732">De huidige sessie vergrendelen.</translation>
+<translation id="3764097800332238572">Dit beleid is alleen van kracht als het beleid <ph name="SECURITY_TOKEN_SESSION_BEHAVIOR_POLICY_NAME" /> is ingesteld op <ph name="SECURITY_TOKEN_SESSION_BEHAVIOR_LOCK" /> of <ph name="SECURITY_TOKEN_SESSION_BEHAVIOR_LOGOUT" /> en een gebruiker die verificatie via een smartcard uitvoert, die smartcard verwijdert. Dit beleid geeft dan aan hoelang (in seconden) een melding wordt weergegeven waarin de gebruiker wordt geïnformeerd over de komende actie. Deze melding blokkeert het scherm. De actie wordt pas uitgevoerd nadat de melding is verlopen. De gebruiker kan voorkomen dat de actie wordt uitgevoerd door de smartcard terug te plaatsen voordat de melding verloopt. Als dit beleid is ingesteld op nul, wordt er geen melding weergegeven en wordt de actie meteen uitgevoerd.</translation>
 <translation id="3765260570442823273">Duur van de waarschuwing bij uitloggen inactieve gebruiker</translation>
 <translation id="377044054160169374">Interventie voor misleidende functionaliteit afdwingen</translation>
 <translation id="3780152581321609624">Niet-standaardpoort in Kerberos-SPN opnemen</translation>
@@ -3908,6 +3913,7 @@
 <translation id="6672070613706645316">Gebruikers toestaan de achtergrond van de pagina 'Nieuw tabblad' aan te passen</translation>
 <translation id="6672630473862787247">Ambient-verificatie inschakelen in normale, incognito- en gastsessies.</translation>
 <translation id="6685903773201985073">Ambient-verificatie inschakelen in normale en gastsessies.</translation>
+<translation id="6689343802305995925">Er wordt geen actie uitgevoerd.</translation>
 <translation id="6689792153960219308">De hardwarestatus melden</translation>
 <translation id="6690425645391461516">Controles voor DNS-onderschepping uitzetten, infobalken voor 'bedoelde je http://intranetsite/' toestaan.</translation>
 <translation id="6698632841807204978">Monochroom afdrukken inschakelen</translation>
@@ -4174,6 +4180,7 @@
 
       Als je het beleid uitschakelt, sluit <ph name="PRODUCT_NAME" /> het tabblad nadat er is overgeschakeld naar een alternatieve browser, ook als dit het laatste tabblad was. Hierdoor wordt <ph name="PRODUCT_NAME" /> volledig gesloten.</translation>
 <translation id="7019805045859631636">Snel</translation>
+<translation id="7026351325994257733">Toestaan dat wifi-netwerkconfiguraties worden gesynchroniseerd tussen <ph name="PRODUCT_OS_NAME" />-apparaten en een verbonden Android-telefoon.</translation>
 <translation id="7027785306666625591">Energiebeheer in <ph name="PRODUCT_OS_NAME" /> configureren.
 
       Met dit beleid kun je configureren hoe <ph name="PRODUCT_OS_NAME" /> zich gedraagt wanneer de gebruiker enige tijd inactief is.</translation>
@@ -4548,6 +4555,13 @@
 
       - Als je dit beleid uitschakelt, moeten beheerders dit laten weten aan eindgebruikers van het apparaat.</translation>
 <translation id="747275827471712187">Het verouderde gedrag van <ph name="ATTRIBUTE_SAMESITE_NAME" /> voor cookies op deze sites terugzetten</translation>
+<translation id="7476621944304431784">Als je deze instelling inschakelt, mogen gebruikers wifi-netwerkconfiguraties synchroniseren tussen hun <ph name="PRODUCT_OS_NAME" />-apparaten en een verbonden Android-telefoon. Voordat wifi-netwerkconfiguraties kunnen worden gesynchroniseerd, moeten gebruikers deze functie expliciet toestaan door een instelprocedure te doorlopen.
+
+      Als je deze instelling uitschakelt, mogen gebruikers geen wifi-netwerkconfiguraties synchroniseren.
+
+      Voor deze functie moet het gegevenstype <ph name="WIFI_CONFIGURATIONS_DATATYPE_NAME" /> zijn ingeschakeld in Chrome-synchronisatie. Als <ph name="WIFI_CONFIGURATIONS_DATATYPE_NAME" /> is uitgeschakeld in het beleid <ph name="SYNC_TYPES_LIST_DISABLED_POLICY_NAME" /> of als Chrome-synchronisatie is uitgeschakeld in het beleid <ph name="SYNC_DISABLED_POLICY_NAME" />, wordt deze functie niet ingeschakeld.
+
+      Als je dit beleid niet instelt, geldt de standaardwaarde 'niet toegestaan' voor beheerde gebruikers.</translation>
 <translation id="7477231245051133709">De toegankelijkheidsfunctie voor monogeluid inschakelen</translation>
 <translation id="7477239290070847560">Op zeroconf gebaseerde (mDNS + DNS-SD) protocolbestemmingen</translation>
 <translation id="7485481791539008776">Regels voor selectie van standaardprinter</translation>
@@ -5787,6 +5801,7 @@
 <translation id="9152473318295429890">Contextuele suggesties van gerelateerde webpagina's inschakelen</translation>
 <translation id="9153446010242995516">Herstel en blijf op de doelversie als de OS-versie nieuwer is dan de doelversie. Probeer indien mogelijk de instellingen op apparaatniveau (inclusief de inloggegevens voor het netwerk) over te dragen via het rollbackproces, maar voer de rollback uit met een volledige powerwash, zelfs wanneer de gegevens niet kunnen worden hersteld (omdat de doelversie geen ondersteuning biedt om gegevens te herstellen of omdat de wijziging niet werkt met eerdere versies).
           Wordt ondersteund door <ph name="PRODUCT_OS_NAME" /> versie 75 en hoger. Voor oudere clients betekent deze waarde dat rollback is uitgeschakeld.</translation>
+<translation id="9155218447258425310">Duur van melding bij verwijdering van smartcard voor <ph name="PRODUCT_OS_NAME" />.</translation>
 <translation id="9155375380628728544">Als je het beleid instelt, kunnen gebruikers slechts één van de talen die in dit beleid worden vermeld, toevoegen aan de lijst met voorkeurstalen.
 
       Als je het beleid niet instelt of instelt op een lege lijst, kunnen gebruikers naar wens talen opgeven.
diff --git a/components/policy/resources/policy_templates_pt-BR.xtb b/components/policy/resources/policy_templates_pt-BR.xtb
index 6ec6aab..9d61911 100644
--- a/components/policy/resources/policy_templates_pt-BR.xtb
+++ b/components/policy/resources/policy_templates_pt-BR.xtb
@@ -107,7 +107,7 @@
 
       * "Forte" ou for deixada sem definição, apenas os tipos AES terão permissão;
 
-      * "Legado", apenas o tipo RC4 terá permissão. O RC4 não é seguro. Ele deve ser necessário apenas em casos muito específicos. Se possível, reconfigure o servidor para ser compatível com codificação AES.
+      * "Legado", apenas o tipo RC4 terá permissão. O RC4 não é seguro. Ele é necessário apenas em casos muito específicos. Se possível, reconfigure o servidor para ser compatível com codificação AES.
 
       Consulte também https://wiki.samba.org/index.php/Samba_4.6_Features_added/changed#Kerberos_client_encryption_types (link em inglês).</translation>
 <translation id="1177567780207290133">Se a política for definida, será possível controlar o filtro de URL SafeSites que usa a API Google Safe Search para classificar URLs como sendo pornográficos ou não.
@@ -199,7 +199,7 @@
       Se esta política é definida como "false", o <ph name="PRODUCT_NAME" /> não permite que perfis de convidados sejam iniciados.</translation>
 <translation id="1363275621236827384">Permitir consultas no Servidor Quirks para perfis de hardware</translation>
 <translation id="1376119291123231789">Ativar o modo avançado de carregamento da bateria</translation>
-<translation id="1378850678793136128">Permite que você defina uma lista de padrões de URL que especifica quais sites recebem permissão automaticamente para acessar um dispositivo USB com os IDs de produto e de fornecedor especificados na tela de login. Cada item da lista precisa ter um campo "devices" e "urls" para que a política seja válida. Cada item no campo "devices" pode ter um campo "vendor_id" e "product_id". A omissão do campo "vendor_id" criará uma política correspondente a qualquer dispositivo. A omissão do campo "product_id" criará uma política correspondente a qualquer dispositivo com o ID de fornecedor especificado. Uma política com um campo "product_id" que não tiver um campo "vendor_id" será inválida.
+<translation id="1378850678793136128">Permite que você defina uma lista de padrões de URL que especifica quais sites recebem permissão automaticamente para acessar um dispositivo USB com os IDs de produto e de fornecedor especificados na tela de login. Cada item da lista precisa ter um campo "devices" e "urls" para que a política seja válida. Cada item no campo "devices" pode ter um campo "vendor_id" e "product_id". A omissão do campo "vendor_id" criará uma política válida para qualquer dispositivo. A omissão do campo "product_id" criará uma política válida para qualquer dispositivo com o ID de fornecedor especificado. Uma política com um campo "product_id" que não tiver um campo "vendor_id" será inválida.
 
         O modelo de permissão USB usa o URL do site solicitante ("URL solicitante") e o URL do site de frame de nível superior ("URL de incorporação") para conceder permissão ao URL solicitante para acessar o dispositivo USB. O URL solicitante pode ser diferente do URL de incorporação quando o site solicitante está carregado em um iframe. Portanto, o campo "urls" pode conter até duas strings de URL delimitadas por vírgula para especificar os URLs solicitante e de incorporação, respectivamente. Se apenas um URL for especificado, o acesso aos dispositivos USB correspondentes será concedido quando o URL do site solicitante coincidir com esse URL, independentemente do status de incorporação. Os URLs contidos em "urls" precisam ser válidos. Caso contrário, a política será ignorada.
 
@@ -794,7 +794,7 @@
       Esta política não pode ser aplicada em dispositivos usados pelo público geral.
 
       Se a política for definida como verdadeira ou não for definida, o alerta de privacidade na Sessão de visitante com início automático será fixado até que o usuário o dispense.</translation>
-<translation id="228665601367357543">Permite que você crie uma lista de padrões de URL que especifica quais sites recebem permissão automaticamente para acessar um dispositivo USB com os IDs de produto e de fornecedor especificados. Cada item da lista precisa ter um campo "devices" e "urls" para que a política seja válida. Cada item no campo "devices" pode ter um campo "vendor_id" e "product_id". A omissão do campo "vendor_id" criará uma política correspondente a qualquer dispositivo. A omissão do campo "product_id" criará uma política correspondente a qualquer dispositivo com o ID de fornecedor especificado. Uma política com um campo "product_id" que não tiver um campo "vendor_id" será inválida.
+<translation id="228665601367357543">Permite que você crie uma lista de padrões de URL que especifica quais sites recebem permissão automaticamente para acessar um dispositivo USB com os IDs de produto e de fornecedor especificados. Cada item da lista precisa ter um campo "devices" e "urls" para que a política seja válida. Cada item no campo "devices" pode ter um campo "vendor_id" e "product_id". A omissão do campo "vendor_id" criará uma política válida para qualquer dispositivo. A omissão do campo "product_id" criará uma política válida para qualquer dispositivo com o ID de fornecedor especificado. Uma política com um campo "product_id" que não tiver um campo "vendor_id" será inválida.
 
       O modelo de permissão de USB usa o URL solicitante e o de incorporação (do site de frames de nível superior) para permitir que o URL solicitante acesse o dispositivo USB. O URL solicitante pode ser diferente do URL de incorporação quando o site solicitante é carregado em um iframe. Portanto, o campo "URLs" pode conter até duas strings delimitadas por vírgula para especificar esses URLs. Se você especificar apenas uma, o acesso aos dispositivos USB correspondentes será concedido quando o URL do site solicitante for igual a esse URL, independente do status de incorporação. Os URLs contidos em "urls" precisam ser válidos. Caso contrário, a política será ignorada.
 
@@ -2815,7 +2815,7 @@
 
       Se a política for definida como falsa ou não for definida, a área de trabalho unificada ficará desativada e os usuários não poderão ativá-la.</translation>
 <translation id="5255162913209987122">Pode ser recomendada</translation>
-<translation id="5264066441613395613">Se a política for definida, haverá configurações de proxy para Chrome e apps ARC, ignorando todas as opções relacionadas a proxy especificadas na linha de comando.
+<translation id="5264066441613395613">Se a política for definida, haverá configurações de proxy para o Chrome e apps ARC, ignorando todas as opções relacionadas a proxy especificadas na linha de comando.
 
        Se a política não for definida, os usuários poderão escolher as configurações de proxy.
 
@@ -2825,7 +2825,7 @@
          * <ph name="PROXY_SERVER_PROXY_SETTINGS_FIELD" />, um URL do servidor proxy.
          * <ph name="PROXY_BYPASS_LIST_PROXY_SETTINGS_FIELD" />, uma lista de hosts de proxy ignorados pelo <ph name="PRODUCT_NAME" />.
 
-       O campo <ph name="PROXY_SERVER_MODE_PROXY_SETTINGS_FIELD" /> foi substituído pelo <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" />, que permite especificar o servidor proxy usado pelo Chrome e evitar que os usuários mudem as configurações de proxy.
+       O campo <ph name="PROXY_SERVER_MODE_PROXY_SETTINGS_FIELD" /> foi substituído pelo <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" />, que permite especificar o servidor proxy usado pelo Chrome e evita que os usuários mudem as configurações de proxy.
 
         Para <ph name="PROXY_MODE_PROXY_SETTINGS_FIELD" />, se você escolher o valor:
           * <ph name="PROXY_MODE_ENUM_DIRECT" />, um proxy nunca será usado e todos os outros campos serão ignorados;
@@ -3223,7 +3223,7 @@
 <translation id="5697306356229823047">Reporta os usuários do dispositivo</translation>
 <translation id="570062449808736508">Quando essa política estiver definida para uma string não vazia, o WebView lerá as restrições de URL do provedor de conteúdo com o nome de autoridade fornecido.</translation>
 <translation id="5708969689202733975">Configurar os modos de desbloqueio rápido permitidos</translation>
-<translation id="5715617256528927547">A definição da política especifica, em horas, o ciclo de vida em cache do Objeto de Política de Grupo (GPO, na sigla em inglês), que é o período máximo que os GPOs poderão ser reutilizados antes do download deles ser feito novamente. Em vez de fazer o download novamente a cada busca da política, o sistema reutiliza os GPOs armazenados em cache enquanto as versões deles não são modificadas.
+<translation id="5715617256528927547">A definição da política especifica, em horas, o ciclo de vida em cache do Objeto de Política de Grupo (GPO, na sigla em inglês), que é o período máximo de reutilização dos GPOs antes do download deles ser feito novamente. Em vez de fazer o download novamente a cada busca da política, o sistema reutiliza os GPOs armazenados em cache enquanto as versões deles não são modificadas.
 
       Se a política for definida como "0", o armazenamento em cache de GPOs será desativado. Fazer isso aumenta a carga do servidor, já que o download dos GPOs será feito novamente a cada busca da política, mesmo que eles não tenham sido modificados.
 
@@ -3739,7 +3739,7 @@
       Se a política for definida, o usuário poderá ativar um app na tela de bloqueio caso o ID da extensão do app esteja contido no valor da lista da política. Como consequência, a definição desta política como uma lista vazia desativará por completo a anotação na tela de bloqueio. A política que contém um ID de app não indica necessariamente que o usuário poderá ativar esse app para anotação na tela de bloqueio. Por exemplo, no <ph name="PRODUCT_NAME" /> 61, o conjunto de apps disponíveis também é limitado pela plataforma.
 
       Se a política não for definida, não haverá restrições impostas por ela com relação ao conjunto de apps que o usuário poderá ativar na tela de bloqueio.</translation>
-<translation id="6506486086262398387">Se a política for definida como "Ativada", o recurso Compartilhamentos de arquivos de rede do <ph name="PRODUCT_OS_NAME" /> usará NTLM para fazer a autenticação para compartilhamentos de PME, se necessário. Se a política for definida como "Desativada", a autenticação NTLM para compartilhamentos de PME será desativada.
+<translation id="6506486086262398387">Se a política for definida como "Ativada", o recurso Compartilhamentos de arquivos de rede do <ph name="PRODUCT_OS_NAME" /> usará NTLM para fazer a autenticação para compartilhamentos SMB, se necessário. Se a política for definida como "Desativada", a autenticação NTLM para compartilhamentos SMB será desativada.
 
       Se a política não for definida, o comportamento ficará desativado por padrão para usuários gerenciados e ativado para outros usuários.</translation>
 <translation id="6515357889978918016">Imagem de <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3780,7 +3780,7 @@
          * <ph name="PROXY_MODE_ENUM_AUTO_DETECT" />: detectar automaticamente o servidor proxy.
 
        Se você escolher usar:
-         * <ph name="PROXY_MODE_ENUM_FIXED_SERVERS" />: servidores proxy predefinidos. Será possível especificar mais opções com <ph name="PROXY_SERVER_POLICY_NAME" /> e <ph name="PROXY_BYPASS_LIST_POLICY_NAME" />. Apenas o servidor proxy HTTP com a maior prioridade está disponível para apps ARC;
+         * <ph name="PROXY_MODE_ENUM_FIXED_SERVERS" />: servidores proxy predefinidos. Será possível especificar mais opções com <ph name="PROXY_SERVER_POLICY_NAME" /> e <ph name="PROXY_BYPASS_LIST_POLICY_NAME" />. Apenas o servidor proxy HTTP com a maior prioridade está disponível para apps ARC.
          * <ph name="PROXY_MODE_ENUM_PAC_SCRIPT" />: um script de proxy .pac. Use <ph name="PROXY_PAC_URL_POLICY_NAME" /> para definir o URL como um arquivo proxy .pac.
 
       Se a política não for definida, os usuários poderão escolher as configurações de proxy.
@@ -4624,11 +4624,11 @@
       Se o dispositivo do usuário não for gerenciado, a disponibilidade da funcionalidade será dependente também da possibilidade de o usuário não ser proprietário do dispositivo.</translation>
 <translation id="7570111012674064005">A definição da política especifica como e se a política do usuário do Objeto de Política de Grupo (GPO, na sigla em inglês) do computador é processada.
 
-      * "Padrão" ou sem definição faz com que a política do usuário leia apenas os GPOs de usuário. Os GPOs do computador serão ignorados.
+      * "Padrão" ou sem definição faz com que a política do usuário leia apenas os GPOs do usuário. Os GPOs do computador serão ignorados.
 
-      * "Mesclar" faz com que a política do usuário nos GPOs de usuário seja mesclada à dos GPOs do computador. Os GPOs de computador têm precedência.
+      * "Mesclar" faz com que a política do usuário nos GPOs do usuário seja mesclada à dos GPOs do computador. Os GPOs do computador têm precedência.
 
-      * "Substituir" substituirá a política do usuário nos GPOs do usuário pelos GPOs do computador. Os GPOs do usuário serão ignorados.</translation>
+      * "Substituir" troca a política do usuário nos GPOs do usuário pela referente aos GPOs do computador. Os GPOs do usuário serão ignorados.</translation>
 <translation id="7570291542739287032">Somente no Cloud</translation>
 <translation id="757395965347379751">Quando esta configuração está ativada, o <ph name="PRODUCT_NAME" /> permite certificados SHA-1 assinados, desde que eles sejam validados e estejam vinculados a certificados de CA instalados localmente.
 
diff --git a/components/policy/resources/policy_templates_tr.xtb b/components/policy/resources/policy_templates_tr.xtb
index a55e994..0abf08b 100644
--- a/components/policy/resources/policy_templates_tr.xtb
+++ b/components/policy/resources/policy_templates_tr.xtb
@@ -1459,6 +1459,11 @@
 <translation id="316778957754360075">Bu ayar, <ph name="PRODUCT_NAME" /> Sürüm 29 itibariyle kullanımdan kaldırılmıştır. Kuruluş tarafından barındırılan uzantı/uygulama koleksiyonları oluşturmanın önerilen yöntemi, CRX paketlerini barındıran siteyi ExtensionInstallSources içine eklemek ve web sayfasına paketler için doğrudan indirme bağlantıları koymaktır. ExtensionInstallForcelist politikası kullanılarak bu web sayfası için bir başlatıcı oluşturulabilir.</translation>
 <translation id="3168968618972302728">Kerberos kimlik doğrulamasıyla ilgili politikalar.</translation>
 <translation id="3171369832001535378">Cihaz ağı ana makine adı şablonu</translation>
+<translation id="3176903288465566098">Bu ayar etkinleştirilirse Telefon Merkezi'ne zaten kaydolmuş kullanıcılar, telefonlarının bildirimlerini Chrome OS'te gönderip alabilirler.
+
+      Bu ayar devre dışı bırakılırsa kullanıcıların bu özelliği kullanmalarına izin verilmez. PhoneHubAllowed politikası devre dışı bırakılırsa da kullanıcıların bu özelliği kullanmalarına izin verilmez.
+
+      Bu politika ayarlanmadan bırakılırsa hem kurumsal olarak yönetilen kullanıcılar hem de yönetilmeyen kullanıcılar için varsayılan ayara izin verilir.</translation>
 <translation id="3177802893484440532">Yerel güven bağlantıları için online OCSP/CRL denetimlerini gerekli kıl</translation>
 <translation id="3184161739683646075">DNS-over-HTTPS modunu denetler</translation>
 <translation id="3185009703220253572">Sürüm <ph name="SINCE_VERSION" /> ve sonrasında</translation>
@@ -2932,6 +2937,7 @@
 
       Bu politika False (Yanlış) değerine ayarlanırsa Crostini kapsayıcılara bağlantı noktası yönlendirme devre dışı bırakılır.</translation>
 <translation id="538108065117008131"><ph name="PRODUCT_FRAME_NAME" /> için aşağıdaki içerik türlerini işlemeye izin ver.</translation>
+<translation id="5383436189211119400">"DeviceArcDataSnapshotHours" politikası ayarlanırsa ARC verilerinin anlık görüntü mekanizması etkinleştirilir. ARC verilerinin anlık görüntüsünün güncellemesi, tanımlanan zaman aralıklarında otomatik olarak başlatılabilir. Bir aralık başladığında, ARC anlık görüntüsünün güncellemesi gerekip giriş yapmış kullanıcı yoksa ARC verilerinin anlık görüntüsünü güncelleme işlemi, kullanıcı bildirimi olmadan başlatılır. Kullanıcı oturumu etkinse kullanıcı arayüzü bildirimi gösterilir. Cihazı yeniden başlatıp ARC verilerinin anlık görüntüsünü güncelleme işlemini başlatmak için bildirimin kabul edilmesi gerekir. Not: Cihaz kullanımı, ARC verilerinin anlık görüntüsünü güncelleme işlemi sırasında engellenir.</translation>
 <translation id="538768040137709073">Senkronize etme etkin durumda ve kullanıcı Oturum açmışken, kullanıcıların Chrome Masaüstü cihazlar ve bir Android cihaz arasında kısa mesaj göndermesine olanak tanıyan Paylaşılan Pano özelliğini etkinleştirin.
 
           Bu politika true (doğru) değerine ayarlanırsa Chrome kullanıcısı için cihazlar arasında kısa mesaj gönderme özelliği etkinleştirilir.
@@ -4203,6 +4209,7 @@
 <translation id="7068108874199666656">Bir <ph name="PRODUCT_OS_NAME" /> cihazın tüm kullanıcıları için uygulanacak ağ yapılandırmasını aktarmaya olanak tanır. Ağ yapılandırması, Açık Ağ Yapılandırması biçimiyle tanımlanmış JSON biçimli bir dizedir.</translation>
 <translation id="7070525176564511548">Her hafta (168 saatte bir) şifre girilmesi gerekiyor</translation>
 <translation id="7072208053150563108">Makine şifresi değişim hızı</translation>
+<translation id="7072567600438630966">Telefon Merkezi'nin etkinleştirilmesine izin ver.</translation>
 <translation id="7079519252486108041">Bu sitelerde pop-up'ları engelle</translation>
 <translation id="7080072532759721791">Kullanıcıların şifre korumalı dosyaları yüklemesine veya indirmesine izin ver</translation>
 <translation id="7086677522575756117">Ekran kararmış durumdayken veya kapandıktan hemen sonra bir kullanıcı etkinliği algılandığında, ekran kararma gecikmesinin ölçekleneceği yüzdeyi belirtir.
@@ -4381,6 +4388,7 @@
       Bu politika ayarlanmamış olarak veya boş bırakılırsa, kullanıcı <ph name="PRODUCT_NAME" /> dahilinde herhangi bir Google hesabını tarayıcı birincil hesabı olarak ayarlayabilir.</translation>
 <translation id="723103540848640830">Kilit ekranı PIN'inin minimum uzunluğunu ayarla</translation>
 <translation id="7234280155140786597">Yasak yerel mesajlaşma ana makinelerinin adları (veya hepsi için *)</translation>
+<translation id="7246767840750730334">Telefon Merkezi bildirimlerinin etkinleştirilmesine izin ver.</translation>
 <translation id="7249828445670652637">ARC uygulamalarına ilişkin <ph name="PRODUCT_OS_NAME" /> CA sertifikalarını etkinleştir</translation>
 <translation id="7252681704926980614">Her yazdırma işinde kullanıcı adını ve dosya adını yerel yazıcı sunucusuna gönderir. Varsayılan ayar göndermemektir.
 
@@ -4487,6 +4495,11 @@
 
       Bu politika kullanımdan kaldırıldı, lütfen bunun yerine <ph name="PRINTERS_BULK_BLOCKLIST" /> kullanın.
       </translation>
+<translation id="7358744897221281073">Bu ayar etkinleştirilirse Telefon Merkezi'ne zaten kaydolmuş kullanıcılar, telefonlarının web sayfalarını Chrome OS'te görüntülemek gibi görevlere devam edebilirler.
+
+      Bu ayar devre dışı bırakılırsa kullanıcıların bu özelliği kullanmalarına izin verilmez. PhoneHubAllowed politikası devre dışı bırakılırsa da kullanıcıların bu özelliği kullanmalarına izin verilmez.
+
+      Bu politika ayarlanmadan bırakılırsa hem kurumsal olarak yönetilen kullanıcılar hem de yönetilmeyen kullanıcılar için varsayılan ayara izin verilir.</translation>
 <translation id="7360181094056034924"><ph name="PRODUCT_NAME" /> ürününün, taranması gerekli sayılan yüklenmiş veya indirilmiş veriler ile ilgili nasıl davranacağını denetler.  Teslimin ertelenmesi, <ph name="PRODUCT_NAME" /> ürününün kullanıcının indirilmiş bir dosyaya erişmesine, yükleme için bir dosya seçmesine, panodan yapıştırmasına veya veri sürükleyip bırakmasına bu veriler taranana ve tarama sonucu öğrenilene kadar izin vermemesi anlamına gelir.  Bu sınırlama, yalnızca <ph name="SEND_FILES_FOR_MALWARE_CHECK_POLICY_NAME" />, <ph name="CHECK_CONTENT_COMPLIANCE_POLICY_NAME" /> ve denetimlerin etkinleştirilmiş olduğu alan adları listesini denetleyen politikalar tarafından belirlendiği şekilde tarama gerektiren dosyalar veya veriler için geçerlidir.
 
       Bu politika ayarlanmazsa veya “Hiçbiri” olarak ayarlanırsa <ph name="PRODUCT_NAME" /> yükleme, panodan yapıştırma, verileri sürükleyip bırakma için hiçbir dosyayı veya indirilmiş hiçbir dosyaya erişimi ertelemeyecektir.  Tarama arka planda ilerleyecektir.
@@ -4684,6 +4697,7 @@
       Ayarlanmazsa oturum açma ekranında büyük imleç kapalıdır. Kullanıcılar, özelliği istedikleri zaman açabilir ve özelliğin oturum açma ekranındaki durumu tüm kullanıcılar için aynı kalır.
 
           Not: <ph name="DEVICE_LOGIN_SCREEN_LARGE_CURSOR_ENABLED" /> belirtilmişse bu politikayı geçersiz kılar.</translation>
+<translation id="7632147323011514740">Yönetilen Misafir Oturumları için ARC verilerinin anlık görüntüsünü güncelleme işleminin başlatılabileceği aralıklar</translation>
 <translation id="7632724434767231364">GSSAPI kitaplığı adı</translation>
 <translation id="7643883929273267746"><ph name="PRODUCT_NAME" /> içinde görülebilen hesapları kısıtlama</translation>
 <translation id="7648907905084499629">Tüm sitelerde çerezler için <ph name="FEATURE_NAME_SAMESITE_BY_DEFAULT_COOKIES" /> davranışını kullan</translation>
@@ -4964,6 +4978,7 @@
       <ph name="PRODUCT_OS_NAME" /> için bu politika her zaman geçerlidir.</translation>
 <translation id="8050080920415773384">Yerel Yazdırma</translation>
 <translation id="8053580360728293758">Varsayılan renkli yazdırma modunu geçersiz kılar. Mod mevcut değilse bu politika yoksayılır.</translation>
+<translation id="8056237304861875584">Telefon Merkezi görev devamının etkinleştirilmesine izin ver.</translation>
 <translation id="8059164285174960932">Uzaktan erişim istemcilerinin kimlik doğrulama jetonunu edinmesi gerektiği URL</translation>
 <translation id="8077245272412229388">Önceden doldurulmuş Kerberos hesaplarını ekler. Kerberos kimlik bilgileri oturum açma kimlik bilgileriyle eşleşirse bir hesap, sırasıyla ana hesap ve şifre için "<ph name="LOGIN_EMAIL_PLACEHOLDER" />" ve "<ph name="PASSWORD_PLACEHOLDER" />" bilgilerini belirterek oturum açma kimlik bilgilerini tekrar kullanmak üzere yapılandırılabilir. Böylece, iki faktörlü kimlik doğrulama yapılandırılmadıkça Kerberos bileti otomatik olarak getirilebilir. Kullanıcılar, bu politika aracılığıyla eklenen hesapları değiştiremezler.
 
@@ -5696,6 +5711,11 @@
 <translation id="9084985621503260744">Video etkinliğinin güç yönetimini etkileyip etkilemeyeceğini belirtme</translation>
 <translation id="9088433379343318874">Denetlenen kullanıcı içerik sağlayıcısını etkinleştirme</translation>
 <translation id="9088444059179765143">Otomatik saat dilimi algılama yöntemini yapılandır</translation>
+<translation id="9095999573959728902">Bu ayar etkinleştirilirse kullanıcıların Telefon Merkezi'ne kaydolmalarına izin verilir. Böylece kullanıcılar Chrome OS cihazında telefonlarıyla etkileşimde bulunabilirler.
+
+      Bu ayar devre dışı bırakılırsa kullanıcıların Telefon Merkezi'ne kaydolmalarına izin verilmez.
+
+      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="9096086085182305205">Kimlik doğrulama sunucusu beyaz listesi</translation>
 <translation id="9105265795073104888">Sadece proxy yapılandırma seçeneklerinin bir alt kümesi Android uygulamalarında kullanılabilir. Android uygulamaları proxy kullamayı kendi tercihleriyle seçebilir. Uygulamaları proxy kullanmaya zorlayamazsınız.</translation>
 <translation id="9106865192244721694">Bu sitelerde WebUSB'ye izin ver</translation>
diff --git a/components/policy/resources/policy_templates_vi.xtb b/components/policy/resources/policy_templates_vi.xtb
index ba956f4..5f9cdef52 100644
--- a/components/policy/resources/policy_templates_vi.xtb
+++ b/components/policy/resources/policy_templates_vi.xtb
@@ -1478,6 +1478,11 @@
 <translation id="316778957754360075">Cài đặt này đã bị xóa kể từ phiên bản <ph name="PRODUCT_NAME" /> 29. Phương thức được đề xuất để thiết lập bộ sưu tập tiện ích/ứng dụng được tổ chức lưu trữ là đưa trang web lưu trữ gói CRX vào ExtensionInstallSources và đặt liên kết tải xuống trực tiếp vào trong các gói trên trang web. Có thể tạo trình chạy cho trang web đó bằng chính sách ExtensionInstallForcelist.</translation>
 <translation id="3168968618972302728">Các chính sách liên quan đến việc xác thực Kerberos.</translation>
 <translation id="3171369832001535378">Mẫu tên máy chủ của mạng thiết bị</translation>
+<translation id="3176903288465566098">Nếu bạn bật tùy chọn cài đặt này, người dùng đã chọn sử dụng Trung tâm điều khiển điện thoại sẽ có thể gửi/nhận thông báo của điện thoại trên Chrome OS.
+
+      Nếu bạn tắt tùy chọn cài đặt này, người dùng sẽ không được phép sử dụng tính năng này. Nếu bạn tắt chính sách PhoneHubAllowed, người dùng cũng sẽ không được phép sử dụng tính năng này.
+
+      Nếu bạn không đặt chính sách này, tùy chọn mặc định sẽ được phép áp dụng cho cả người dùng do doanh nghiệp quản lý và người dùng không được quản lý.</translation>
 <translation id="3177802893484440532">Cần phải kiểm tra OCSP/CRL trực tuyến đối với neo tin cậy cục bộ</translation>
 <translation id="3184161739683646075">Kiểm soát chế độ DNS qua HTTPS</translation>
 <translation id="3185009703220253572">kể từ phiên bản <ph name="SINCE_VERSION" /></translation>
@@ -2960,6 +2965,7 @@
 
       Nếu bạn đặt chính sách này thành False, thì dịch vụ chuyển tiếp cổng vào vùng chứa Crostini sẽ tắt.</translation>
 <translation id="538108065117008131">Cho phép <ph name="PRODUCT_FRAME_NAME" /> xử lý các loại nội dung sau.</translation>
+<translation id="5383436189211119400">Nếu bạn đặt chính sách "DeviceArcDataSnapshotHours", cơ chế chụp nhanh dữ liệu App Runtime for Chrome (ARC) sẽ được bật. Quá trình cập nhật ảnh chụp nhanh dữ liệu ARC có thể tự động bắt đầu trong các khoảng thời gian đã định. Khi một khoảng thời gian bắt đầu, quá trình cập nhật ảnh chụp nhanh dữ liệu ARC sẽ buộc phải diễn ra và không người dùng nào được đăng nhập. Quá trình này bắt đầu mà không cần thông báo cho người dùng. Nếu phiên của người dùng đang hoạt động, họ sẽ thấy thông báo qua Giao diện người dùng và phải chấp nhận thông báo đó để khởi động lại thiết bị, cũng như bắt đầu quá trình cập nhật ảnh chụp nhanh dữ liệu ARC. Lưu ý: trong quá trình cập nhật ảnh chụp nhanh dữ liệu ARC, sẽ không ai dùng được thiết bị.</translation>
 <translation id="538768040137709073">Bật tính năng Khay nhớ tạm dùng chung. Tính năng này cho phép người dùng gửi văn bản giữa Máy tính Chrome và thiết bị Android khi tính năng Đồng bộ hóa được bật và người dùng đã đăng nhập.
 
           Nếu bạn đặt chính sách này thành true, thì người dùng Chrome có thể gửi văn bản trên các thiết bị.
@@ -4240,6 +4246,7 @@
 <translation id="7068108874199666656">Cho phép áp dụng tùy chọn đẩy cấu hình mạng cho tất cả những người dùng thiết bị <ph name="PRODUCT_OS_NAME" />. Cấu hình mạng là một chuỗi có định dạng JSON như được xác định trong định dạng Cấu hình mạng mở.</translation>
 <translation id="7070525176564511548">Yêu cầu nhập mật khẩu hàng tuần (168 giờ).</translation>
 <translation id="7072208053150563108">Tần suất thay đổi mật khẩu máy</translation>
+<translation id="7072567600438630966">Chính sách Cho phép Trung tâm điều khiển điện thoại sẽ được bật.</translation>
 <translation id="7079519252486108041">Chặn cửa sổ bật lên trên các trang web này</translation>
 <translation id="7080072532759721791">Cho phép người dùng tải lên hoặc tải xuống các tệp được bảo vệ bằng mật khẩu</translation>
 <translation id="7086677522575756117">Chỉ định tỷ lệ phần trăm mà theo đó độ trễ làm mờ màn hình sẽ thay đổi khi phát hiện thấy hoạt động của người dùng trong khi màn hình tối đi hoặc ngay sau khi màn hình tắt hẳn.
@@ -4417,6 +4424,7 @@
       Nếu bạn để trống hoặc không đặt chính sách này, thì người dùng có thể đặt một Tài khoản Google bất kỳ làm tài khoản chính của trình duyệt trong <ph name="PRODUCT_NAME" />.</translation>
 <translation id="723103540848640830">Đặt độ dài tối thiểu của mã PIN màn hình khóa</translation>
 <translation id="7234280155140786597">Tên của các máy chủ nhắn tin gốc bị cấm (hoặc * cho tất cả)</translation>
+<translation id="7246767840750730334">Chính sách Cho phép thông báo của Trung tâm điều khiển điện thoại sẽ được bật.</translation>
 <translation id="7249828445670652637">Bật chứng chỉ CA <ph name="PRODUCT_OS_NAME" /> đối với ứng dụng ARC</translation>
 <translation id="7252681704926980614">Gửi tên người dùng và tên tệp tới máy chủ của máy in gốc cùng với mỗi lệnh in. Tùy chọn mặc định là không gửi.
 
@@ -4523,6 +4531,11 @@
 
       Chính sách này không còn dùng nữa, vui lòng sử dụng <ph name="PRINTERS_BULK_BLOCKLIST" />.
       </translation>
+<translation id="7358744897221281073">Nếu bạn bật tùy chọn cài đặt này, người dùng đã chọn sử dụng Trung tâm điều khiển điện thoại sẽ có thể tiếp tục thực hiện những việc như xem trang web trên điện thoại qua Chrome OS.
+
+      Nếu bạn tắt tùy chọn cài đặt này, người dùng sẽ không được phép sử dụng tính năng này. Nếu bạn tắt chính sách PhoneHubAllowed, người dùng cũng sẽ không được phép sử dụng tính năng này.
+
+      Nếu bạn không đặt chính sách này, tùy chọn mặc định sẽ được phép áp dụng cho cả người dùng do doanh nghiệp quản lý và người dùng không được quản lý.</translation>
 <translation id="7360181094056034924">Kiểm soát hành vi của <ph name="PRODUCT_NAME" /> đối với dữ liệu đã tải lên và tải xuống được cho là cần quét.  Việc trì hoãn phân phối nghĩa là <ph name="PRODUCT_NAME" /> sẽ không cho phép người dùng truy cập vào tệp tải đã xuống, chọn tệp để tải lên, dán từ khay nhớ tạm hoặc kéo và thả dữ liệu cho đến khi quét xong và có kết quả quét.  Hạn chế này chỉ áp dụng với các tệp hoặc dữ liệu cần quét theo yêu cầu của <ph name="SEND_FILES_FOR_MALWARE_CHECK_POLICY_NAME" />, <ph name="CHECK_CONTENT_COMPLIANCE_POLICY_NAME" /> và các chính sách kiểm soát danh sách miền được phép thực hiện quá trình kiểm tra.
 
       Nếu bạn không đặt hoặc đặt chính sách này thành 'None', thì <ph name="PRODUCT_NAME" /> sẽ không trì hoãn tải tệp lên, dán từ khay nhớ tạm, kéo và thả dữ liệu hoặc trì hoãn truy cập vào bất kỳ tệp đã tải xuống nào.  Quá trình quét này sẽ thực hiện trong nền.
@@ -4720,6 +4733,7 @@
       Nếu bạn không đặt chính sách này, thì con trỏ lớn sẽ tắt trên màn hình đăng nhập. Người dùng có thể bật con trỏ lớn bất cứ lúc nào. Trạng thái của con trỏ lớn trên màn hình đăng nhập sẽ giữ nguyên đối với mọi người dùng.
 
           Lưu ý: <ph name="DEVICE_LOGIN_SCREEN_LARGE_CURSOR_ENABLED" /> (nếu đã được chỉ định) sẽ ghi đè chính sách này.</translation>
+<translation id="7632147323011514740">Các khoảng thời gian mà quá trình cập nhật ảnh chụp nhanh dữ liệu ARC có thể bắt đầu cho Phiên khách được quản lý</translation>
 <translation id="7632724434767231364">Tên thư viện GSSAPI</translation>
 <translation id="7643883929273267746">Hạn chế các tài khoản được hiển thị trong <ph name="PRODUCT_NAME" /></translation>
 <translation id="7648907905084499629">Dùng hành vi <ph name="FEATURE_NAME_SAMESITE_BY_DEFAULT_COOKIES" /> cho các cookie trên tất cả các trang web</translation>
@@ -4997,6 +5011,7 @@
       Chính sách này luôn có hiệu lực đối với <ph name="PRODUCT_OS_NAME" />.</translation>
 <translation id="8050080920415773384">In bản gốc</translation>
 <translation id="8053580360728293758">Ghi đè chế độ in màu mặc định. Nếu không có chế độ này thì chính sách này sẽ bị bỏ qua.</translation>
+<translation id="8056237304861875584">Chính sách Cho phép tiếp tục nhiệm vụ trong Trung tâm điều khiển điện thoại sẽ được bật.</translation>
 <translation id="8059164285174960932">URL nơi ứng dụng truy cập từ xa sẽ lấy mã thông báo xác thực</translation>
 <translation id="8077245272412229388">Thêm các tài khoản Kerberos đã điền trước. Nếu thông tin đăng nhập Kerberos khớp với thông tin đăng nhập, thì bạn có thể định cấu hình một tài khoản để sử dụng lại thông tin đăng nhập bằng cách chỉ định '<ph name="LOGIN_EMAIL_PLACEHOLDER" />' và <ph name="PASSWORD_PLACEHOLDER" />' tương ứng với tài khoản chính và mật khẩu. Nhờ vậy, hệ thống có thể tự động truy xuất các phiếu Kerberos, trừ khi bạn định cấu hình tính năng xác thực hai yếu tố. Người dùng không thể sửa đổi các tài khoản đã thêm thông qua chính sách này.
 
@@ -5764,6 +5779,11 @@
 <translation id="9084985621503260744">Chỉ định xem hoạt động video có ảnh hưởng đến việc quản lý nguồn không</translation>
 <translation id="9088433379343318874">Cho phép nhà cung cấp nội dung của người dùng được giám sát</translation>
 <translation id="9088444059179765143">Định cấu hình phương thức phát hiện múi giờ tự động</translation>
+<translation id="9095999573959728902">Nếu bạn bật tùy chọn cài đặt này, người dùng sẽ được phép chọn sử dụng Trung tâm điều khiển điện thoại. Trung tâm này cho phép họ tương tác với điện thoại của mình trên một thiết bị Chrome OS.
+
+      Nếu bạn tắt tùy chọn cài đặt này, người dùng sẽ không được phép sử dụng Trung tâm điều khiển điện thoại.
+
+      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="9096086085182305205">Danh sách trắng máy chủ xác thực</translation>
 <translation id="9105265795073104888">Chỉ một tập hợp con các tùy chọn cấu hình proxy được cung cấp cho các ứng dụng Android. Các ứng dụng Android có thể chọn sử dụng proxy một cách tự nguyện. Bạn không thể buộc các ứng dụng này sử dụng proxy.</translation>
 <translation id="9106865192244721694">Cho phép WebUSB trên các trang web này</translation>
diff --git a/components/policy/resources/policy_templates_zh-CN.xtb b/components/policy/resources/policy_templates_zh-CN.xtb
index dc1f75b..9b4e7e8 100644
--- a/components/policy/resources/policy_templates_zh-CN.xtb
+++ b/components/policy/resources/policy_templates_zh-CN.xtb
@@ -201,9 +201,9 @@
       如果此政策设为 false,<ph name="PRODUCT_NAME" /> 将禁止使用访客个人资料登录。</translation>
 <translation id="1363275621236827384">允许在 Quirks Server 中查询硬件配置文件</translation>
 <translation id="1376119291123231789">启用高级电池充电模式</translation>
-<translation id="1378850678793136128">让您能够设置一系列网址格式,从而指定自动授权哪些网站在登录屏幕上访问具有给定供应商 ID 和产品 ID 的 USB 设备。每个列表项都必须包含“devices”和“urls”字段,此政策才会有效。“devices”字段中的每项内容都可以包含“vendor_id”和“product_id”字段。如果您删掉“vendor_id”字段,系统将会创建一项与所有设备都匹配的政策。如果您删掉“product_id”字段,系统将会创建一项与所有具有给定供应商 ID 的设备都匹配的政策。包含“product_id”字段但不含“vendor_id”字段的政策无效。
+<translation id="1378850678793136128">让您能够设置一系列网址格式,从而指定自动授权哪些网站在登录屏幕上访问具有给定供应商 ID 和产品 ID 的 USB 设备。每个列表项都必须包含“devices”和“urls”字段,此政策才有效。“devices”字段中的每项内容都可以包含“vendor_id”和“product_id”字段。如果您省略“vendor_id”字段,系统将会创建一项与所有设备都匹配的政策。如果您省略“product_id”字段,系统将会创建一项与所有具有给定供应商 ID 的设备都匹配的政策。包含“product_id”字段但不含“vendor_id”字段的政策无效。
 
-        USB 权限模型会使用发出相应请求的网站的网址(“请求网址”)和顶级框架网站的网址(“嵌入网址”)来授权请求网址访问相应 USB 设备。如果发出请求的网站是在 iframe 中加载的,请求网址可能会与嵌入网址不同。因此,“urls”字段最多可包含 2 个以英文逗号分隔的网址字符串,以分别指定请求网址和嵌入网址。如果仅指定了 1 个网址,那么无论嵌入网址的状态为何,系统都会在请求网站的网址与这个网址相符时授权该网站访问相应 USB 设备。“urls”字段中的网址必须是有效网址,否则系统会忽略此政策。
+        USB 权限模型会使用发出相应请求的网站的网址(“请求网址”)和顶级框架网站的网址(“嵌入网址”)来授权请求网址访问相应 USB 设备。如果发出请求的网站是在 iframe 中加载的,请求网址可能会与嵌入网址不同。因此,“urls”字段最多可包含 2 个以英文逗号分隔的网址字符串,以分别指定请求网址和嵌入网址。如果仅指定了 1 个网址,那么无论嵌入状态为何,系统都会在请求网站的网址与这个网址相符时授权该网站访问相应 USB 设备。“urls”字段中的网址必须是有效网址,否则系统会忽略此政策。
 
         如果此政策未设置,系统将会对所有网站使用全局默认值(不自动授予访问权限)。</translation>
 <translation id="1384459581748403878">参考页面:<ph name="REFERENCE_URL" /></translation>
@@ -629,7 +629,7 @@
           </translation>
 <translation id="2030905906517501646">默认搜索服务提供商关键字</translation>
 <translation id="203096360153626918">此政策对 Android 应用没有任何影响。即使此政策设为 <ph name="FALSE" />,这些应用也将能够进入全屏模式。</translation>
-<translation id="2036522553891755455">如果此政策已启用,共享文件发现功能(适用于 <ph name="PRODUCT_NAME" />的网络文件共享功能)会使用 <ph name="NETBIOS_PROTOCOL" />来搜寻索网络上的共享文件。如果此政策已停用,共享文件发现功能将不会使用此协议来搜寻共享文件。
+<translation id="2036522553891755455">如果此政策已启用,共享文件发现功能(<ph name="PRODUCT_NAME" />的网络文件共享功能)会使用 <ph name="NETBIOS_PROTOCOL" />来搜寻网络上的共享文件。如果此政策已停用,共享文件发现功能将不会使用此协议来搜寻共享文件。
 
       如果您未设置此政策,系统的默认行为就会是:为受管用户停用此政策,并为其他用户启用此政策。</translation>
 <translation id="2037214548071298156">如果此政策已启用或未设置,已注册的设备将会报告硬件统计信息(例如 CPU/RAM 使用情况)。
@@ -781,9 +781,9 @@
       请勿将此政策用于公用设备。
 
       如果此政策设为 True 或未设置,系统则会将自动启动的受管理访客会话中的隐私权警告通知固定在屏幕上,直到用户关闭它为止。</translation>
-<translation id="228665601367357543">让您能够设置一系列网址格式,从而指定自动授权哪些网站访问具有给定供应商 ID 和产品 ID 的 USB 设备。每个列表项都必须包含“devices”和“urls”字段,此政策才会有效。“devices”字段中的每项内容都可以包含“vendor_id”和“product_id”字段。如果您删掉“vendor_id”字段,系统将会创建一项与所有设备都匹配的政策。如果您删掉“product_id”字段,系统将会创建一项与所有具有给定供应商 ID 的设备都匹配的政策。包含“product_id”字段但不含“vendor_id”字段的政策无效。
+<translation id="228665601367357543">让您能够设置一系列网址格式,从而指定自动授权哪些网站访问具有给定供应商 ID 和产品 ID 的 USB 设备。每个列表项都必须包含“devices”和“urls”字段,此政策才有效。“devices”字段中的每项内容都可以包含“vendor_id”和“product_id”字段。如果您省略“vendor_id”字段,系统将会创建一项与所有设备都匹配的政策。如果您省略“product_id”字段,系统将会创建一项与所有具有给定供应商 ID 的设备都匹配的政策。包含“product_id”字段但不含“vendor_id”字段的政策无效。
 
-      USB 权限模型会使用请求网址(发出请求的网站的网址)和嵌入网址(顶级框架网站的网址)来授权请求网址访问相应 USB 设备。如果发出请求的网站是在 iframe 中加载的,请求网址可能会与嵌入网址不同。因此,“urls”字段最多可包含 2 个以英文逗号分隔的字符串,以分别指定请求网址和嵌入网址。如果仅指定了 1 个网址,那么无论嵌入网址的状态为何,系统都会在请求网站的网址与这个网址相符时授权该网站访问相应 USB 设备。“urls”字段中的网址必须是有效网址,否则系统会忽略此政策。
+      USB 权限模型会使用请求网址(发出请求的网站的网址)和嵌入网址(顶级框架网站的网址)来授权请求网址访问相应 USB 设备。如果发出请求的网站是在 iframe 中加载的,请求网址可能会与嵌入网址不同。因此,“urls”字段最多可包含 2 个以英文逗号分隔的字符串,以分别指定请求网址和嵌入网址。如果仅指定了 1 个网址,那么无论嵌入状态为何,系统都会在请求网站的网址与这个网址相符时授权该网站访问相应 USB 设备。“urls”字段中的网址必须是有效网址,否则系统会忽略此政策。
 
       如果您未设置此政策,系统会应用 <ph name="DEFAULT_WEB_USB_GUARD_SETTING_POLICY_NAME" />(若已设置)或用户的个人设置(若前者未设置)。
 
@@ -2397,9 +2397,9 @@
 <translation id="4578912515887794133">如果此设置处于启用状态,远程访问主机会对比本地用户(与主机关联的用户)的名称和注册为主机所有者的 Google 帐号的名称(例如,如果主机归 Google 帐号“johndoe@example.com”所有,Google 帐号的名称就是“johndoe”)。如果两者不同,远程访问主机将不会启动。RemoteAccessHostMatchUsername 政策应与 RemoteAccessHostDomain 一起使用,以便一并强制将主机所有者的 Google 帐号与特定网域(在上述示例中,网域为“example.com”)相关联。
 
           如果停用或不指定此设置,远程访问主机可以与任何本地用户关联。</translation>
-<translation id="4587365491100112056">通过设置此政策,您可以指定身份验证数据缓存期限(以小时为单位)。此缓存包含与机器领域所信任的领域(关联领域)相关的数据。因此,身份验证数据缓存有助于加快登录速度。系统不会缓存特定于用户的数据以及非关联领域的数据。
+<translation id="4587365491100112056">通过设置此政策,您可以指定身份验证数据缓存期限(以小时为单位)。此缓存包含与机器领域所信任的领域(关联领域)相关的数据。因此,身份验证数据缓存有助于加快登录速度。系统不会缓存用户专属数据以及非关联领域的数据。
 
-      如果此政策设为 0,系统会关闭身份验证数据缓存。每当用户登录时,系统都会提取特定于领域的数据,因此关闭身份验证数据缓存可能会显著降低用户的登录速度。
+      如果此政策设为 0,系统会关闭身份验证数据缓存。每当用户登录时,系统都会提取领域专属的数据,因此关闭身份验证数据缓存可能会显著降低用户的登录速度。
 
       如果您未设置此政策,已缓存的身份验证数据最多可被重复使用 73 小时。
 
diff --git a/components/policy/resources/policy_templates_zh-TW.xtb b/components/policy/resources/policy_templates_zh-TW.xtb
index c8440f1f..11187a1 100644
--- a/components/policy/resources/policy_templates_zh-TW.xtb
+++ b/components/policy/resources/policy_templates_zh-TW.xtb
@@ -1440,6 +1440,11 @@
 <translation id="316778957754360075">我們已於 <ph name="PRODUCT_NAME" /> 版本 29 移除這項設定。如要設定機構代管的擴充功能/應用程式系列,建議你將代管 CRX 封裝檔的網站加入 ExtensionInstallSources 中,並在網頁上提供該封裝檔的直接下載連結。你可以透過 ExtensionInstallForcelist 政策建立該網頁專用的啟動器。</translation>
 <translation id="3168968618972302728">與 Kerberos 驗證相關的政策。</translation>
 <translation id="3171369832001535378">裝置網路主機名稱範本</translation>
+<translation id="3176903288465566098">如果啟用這項設定,已開啟 Phone Hub 功能的使用者將可在 Chrome 作業系統上傳送/接收手機的通知。
+
+      如果停用這項設定,使用者就無法使用這項功能。如果停用 PhoneHubAllowed 政策,使用者也會無法使用這項功能。
+
+      如果不設定這項政策,在預設情況下,受企業管理的使用者和其他一般使用者皆可使用這項功能。</translation>
 <translation id="3177802893484440532">需要為本機信任錨點執行線上 OCSP/CRL 檢查</translation>
 <translation id="3184161739683646075">控管 DNS-over-HTTPS 的模式</translation>
 <translation id="3185009703220253572">自第 <ph name="SINCE_VERSION" /> 版起</translation>
@@ -2622,7 +2627,7 @@
       如果停用這項政策,網頁將無法呼叫任何螢幕畫面分享 API,且系統會傳回錯誤訊息。</translation>
 <translation id="5025239932007658691">如果將這項政策設為啟用或不設定,<ph name="PRODUCT_NAME" /> 會不定時向 Google 伺服器傳送查詢,以擷取準確的時間戳記。
 
-      如果將這項政策設為停用,系統會禁止<ph name="PRODUCT_NAME" /> 傳送這類查詢。</translation>
+      如果將這項政策設為停用,系統會禁止 <ph name="PRODUCT_NAME" /> 傳送這類查詢。</translation>
 <translation id="5032164758660626397">禁止使用者傳輸大型檔案</translation>
 <translation id="5047604665028708335">允許存取內容套件以外的網站</translation>
 <translation id="5056708224511062314">已停用螢幕放大鏡</translation>
@@ -2901,6 +2906,7 @@
 
       如果將這項政策設為 False,系統會停用將流量轉送至 Crostini 容器的通訊埠轉送功能。</translation>
 <translation id="538108065117008131">允許 <ph name="PRODUCT_FRAME_NAME" /> 處理下列內容類型。</translation>
+<translation id="5383436189211119400">如果設定「DeviceArcDataSnapshotHours」政策,則系統會開啟 ARC 資料數據匯報機制,而且 ARC 資料數據匯報更新將可在自訂的時間間隔自動開始。當間隔開始時,如果需要執行 ARC 數據匯報更新,且沒有任何使用者處於登入狀態,系統會直接開始執行 ARC 資料數據匯報更新程序,不會通知使用者。如果使用者工作階段處於執行中狀態,系統會顯示使用者介面通知,使用者必須接受通知內容以重新啟動裝置,並開始執行 ARC 資料數據匯報更新程序。注意:ARC 資料數據匯報更新期間將無法使用裝置。</translation>
 <translation id="538768040137709073">啟用剪貼簿共用功能,讓使用者處於登入狀態且啟用同步功能時,在 Chrome 桌面和 Android 裝置之間傳送文字。
 
           如果將這項政策設為 True,系統會啟用 Chrome 使用者跨裝置傳送文字的功能。
@@ -4170,6 +4176,7 @@
 <translation id="7068108874199666656">這項政策可將網路設定強制套用至 <ph name="PRODUCT_OS_NAME" />裝置的所有使用者。這個網路設定是根據「開放式網路設定」格式所定義的 JSON 格式字串。</translation>
 <translation id="7070525176564511548">每週 (168 小時) 需輸入一次密碼</translation>
 <translation id="7072208053150563108">裝置密碼變更頻率</translation>
+<translation id="7072567600438630966">允許啟用 Phone Hub 功能。</translation>
 <translation id="7079519252486108041">封鎖這些網站的彈出式視窗</translation>
 <translation id="7080072532759721791">允許使用者上傳或下載受密碼保護的檔案</translation>
 <translation id="7086677522575756117">指定當系統在螢幕調暗或畫面關閉後不久便偵測到使用者活動時,要將螢幕調暗延遲時間延長多少百分比。
@@ -4347,6 +4354,7 @@
       如未設定這項政策或將其留空,則使用者可以將任何 Google 帳戶設定為 <ph name="PRODUCT_NAME" /> 中的瀏覽器主要帳戶。</translation>
 <translation id="723103540848640830">設定螢幕鎖定 PIN 碼的長度下限</translation>
 <translation id="7234280155140786597">禁止的內建訊息傳遞主機名稱 (指定 * 表示涵蓋所有內建訊息傳遞主機)。</translation>
+<translation id="7246767840750730334">允許啟用 Phone Hub 通知。</translation>
 <translation id="7249828445670652637">允許 ARC 應用程式使用「<ph name="PRODUCT_OS_NAME" />」CA 憑證</translation>
 <translation id="7252681704926980614">在每個列印工作中,將使用者名稱和檔案名稱傳送給原生印表機伺服器。系統預設為不傳送。
 
@@ -4451,6 +4459,11 @@
 
       這項政策已遭淘汰,請改用 <ph name="PRINTERS_BULK_BLOCKLIST" />。
       </translation>
+<translation id="7358744897221281073">如果啟用這項設定,已開啟 Phone Hub 功能的使用者將可在 Chrome 作業系統上繼續完成工作,例如繼續瀏覽手機的網頁。
+
+      如果停用這項設定,使用者就無法使用這項功能。如果停用 PhoneHubAllowed 政策,使用者也會無法使用這項功能。
+
+      如果不設定這項政策,在預設情況下,受企業管理的使用者和其他一般使用者皆可使用這項功能。</translation>
 <translation id="7360181094056034924">針對系統判定必須掃描的上傳和下載內容,控管 <ph name="PRODUCT_NAME" /> 採取的動作。延遲提供檔案表示 <ph name="PRODUCT_NAME" /> 必須先完成掃描作業並取得結果,使用者才能存取已下載的檔案、選取要上傳的檔案、以及從剪貼簿貼上或拖曳資料。如果 <ph name="SEND_FILES_FOR_MALWARE_CHECK_POLICY_NAME" />、<ph name="CHECK_CONTENT_COMPLIANCE_POLICY_NAME" /> 或控管已啟用檢查功能的網域清單政策判斷檔案或資料需要掃描,系統才會套用這項限制。
 
       如果不設定這項政策或設為「None」,<ph name="PRODUCT_NAME" /> 不會延遲任何檔案的上傳作業,也不會延後從剪貼簿貼上或拖曳資料,或是讓使用者延後存取任何下載的檔案。掃描作業會在背景執行。
@@ -4640,6 +4653,7 @@
       如果未設定,系統會在登入畫面停用大型游標。使用者隨時可以啟用大型游標,而且所有使用者在登入畫面上的大型游標狀態會保持一致。
 
           注意:如果指定 <ph name="DEVICE_LOGIN_SCREEN_LARGE_CURSOR_ENABLED" />,這項政策會遭到覆寫。</translation>
+<translation id="7632147323011514740">受管理的訪客工作階段可開始執行 ARC 資料數據匯報更新程序的間隔</translation>
 <translation id="7632724434767231364">GSSAPI 資料庫名稱</translation>
 <translation id="7643883929273267746">限制在 <ph name="PRODUCT_NAME" /> 中顯示的帳戶</translation>
 <translation id="7648907905084499629">對所有網站上的 Cookie 使用 <ph name="FEATURE_NAME_SAMESITE_BY_DEFAULT_COOKIES" /> 行為</translation>
@@ -4914,6 +4928,7 @@
       如果是 <ph name="PRODUCT_OS_NAME" />,這項政策會一律生效。</translation>
 <translation id="8050080920415773384">原生列印</translation>
 <translation id="8053580360728293758">覆寫預設列印色彩模式。如果設定的模式不適用,系統會忽略這項政策。</translation>
+<translation id="8056237304861875584">允許啟用 Phone Hub 工作接續</translation>
 <translation id="8059164285174960932">遠端存取用戶端取得驗證憑證的來源網址</translation>
 <translation id="8077245272412229388">新增預先填寫的 Kerberos 帳戶。如果 Kerberos 憑證與登入憑證相符,只要將主體與密碼分別指定為「<ph name="LOGIN_EMAIL_PLACEHOLDER" />」和「<ph name="PASSWORD_PLACEHOLDER" />」,即可將帳戶設定為重複使用登入憑證。設定完成後,除非你為帳戶設定雙重驗證,否則系統會自動擷取 Kerberos 票證。使用者無法修改透過這項政策新增的帳戶。
 
@@ -5653,6 +5668,11 @@
 <translation id="9084985621503260744">指定會影響電源管理的視訊活動</translation>
 <translation id="9088433379343318874">啟用受監管的使用者內容提供者</translation>
 <translation id="9088444059179765143">設定自動偵測時區方式</translation>
+<translation id="9095999573959728902">如果啟用這項設定,使用者將可開啟 Phone Hub 功能,進而在搭載 Chrome 作業系統的裝置上與手機互動。
+
+      如果停用這項設定,使用者將無法開啟 Phone Hub 功能。
+
+      如果不設定這項政策,在預設情況下,受企業管理的使用者將無法開啟 Phone Hub 功能,其他一般使用者則可開啟這項功能。</translation>
 <translation id="9096086085182305205">驗證伺服器許可清單</translation>
 <translation id="9105265795073104888">只有一部分 Proxy 設定可供 Android 應用程式使用,Android 應用程式可以選擇是否使用。你無法強制 Android 應用程式使用 Proxy。</translation>
 <translation id="9106865192244721694">在這些網站上允許 WebUSB</translation>
diff --git a/components/strings/components_strings_ar.xtb b/components/strings/components_strings_ar.xtb
index 7d6a3d0..74251a7 100644
--- a/components/strings/components_strings_ar.xtb
+++ b/components/strings/components_strings_ar.xtb
@@ -283,6 +283,7 @@
 <translation id="204357726431741734">‏يُرجى تسجيل الدخول لاستخدام كلمات المرور المحفوظة في حسابك على Google.</translation>
 <translation id="2053111141626950936">لن تتم ترجمة الصفحات باللغة <ph name="LANGUAGE" />.</translation>
 <translation id="2053553514270667976">الرمز البريدي</translation>
+<translation id="2054665754582400095">متى تستخدم جهازك</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{اقتراح واحد}zero{# اقتراح}two{اقتراحان (#)}few{# اقتراحات}many{# اقتراحًا}other{# اقتراح}}</translation>
 <translation id="2079545284768500474">تراجع</translation>
 <translation id="20817612488360358">تم ضبط إعدادات الخادم الوكيل ليتم استخدامها وتم أيضًا تحديد إعداد صريح للخادم الوكيل.</translation>
diff --git a/components/strings/components_strings_az.xtb b/components/strings/components_strings_az.xtb
index dccbac6..ce5d5b6 100644
--- a/components/strings/components_strings_az.xtb
+++ b/components/strings/components_strings_az.xtb
@@ -283,6 +283,7 @@
 <translation id="204357726431741734">Google Hesabınızda saxlanılan parollardan istifadə etmək üçün daxil olun</translation>
 <translation id="2053111141626950936"><ph name="LANGUAGE" /> dilindəki səhifələr tərcümə edilməyəcək.</translation>
 <translation id="2053553514270667976">Poçt indeksi</translation>
+<translation id="2054665754582400095">Mövcudluğunuz</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 təklif}other{# təklif}}</translation>
 <translation id="2079545284768500474">Geri qaytarın</translation>
 <translation id="20817612488360358">Sistem proksi ayarları işlənməyə ayarlanıb, lakin açıq proksi sazlanması da bəlirlənib.</translation>
diff --git a/components/strings/components_strings_be.xtb b/components/strings/components_strings_be.xtb
index ee08033..a08dbd2 100644
--- a/components/strings/components_strings_be.xtb
+++ b/components/strings/components_strings_be.xtb
@@ -283,6 +283,7 @@
 <translation id="204357726431741734">Каб выкарыстоўваць захаваныя ва Уліковым запісе Google паролі, увайдзіце ў яго</translation>
 <translation id="2053111141626950936">Старонкі на мове <ph name="LANGUAGE" /> не будуць перакладацца.</translation>
 <translation id="2053553514270667976">Паштовы індэкс</translation>
+<translation id="2054665754582400095">Ваша прысутнасць</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 прапанова}one{# прапанова}few{# прапановы}many{# прапаноў}other{# прапановы}}</translation>
 <translation id="2079545284768500474">Адрабіць</translation>
 <translation id="20817612488360358">Сістэмныя налады проксі зададзены для выкарыстання, але яўная канфігурацыя проксі таксама вызначана.</translation>
diff --git a/components/strings/components_strings_bg.xtb b/components/strings/components_strings_bg.xtb
index 91fbec5..8ad5d1c 100644
--- a/components/strings/components_strings_bg.xtb
+++ b/components/strings/components_strings_bg.xtb
@@ -281,6 +281,7 @@
 <translation id="204357726431741734">Влезте в профила си в Google, за да използвате запазените в него пароли</translation>
 <translation id="2053111141626950936">Страниците на <ph name="LANGUAGE" /> няма да се превеждат.</translation>
 <translation id="2053553514270667976">Пощенски код</translation>
+<translation id="2054665754582400095">Присъствието ви</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 предложение}other{# предложения}}</translation>
 <translation id="2079545284768500474">Отмяна</translation>
 <translation id="20817612488360358">За използване са зададени системни настройки за прокси сървъра, но е посочена и изрична конфигурация.</translation>
diff --git a/components/strings/components_strings_bn.xtb b/components/strings/components_strings_bn.xtb
index 1e498ca..1dad9f2 100644
--- a/components/strings/components_strings_bn.xtb
+++ b/components/strings/components_strings_bn.xtb
@@ -1895,6 +1895,7 @@
 <translation id="8685155993131031756">Prc-16K</translation>
 <translation id="8688672835843460752">উপলব্ধ</translation>
 <translation id="868922510921656628">সেট প্রতি পৃষ্ঠা</translation>
+<translation id="8697373104056314601">Chrome-এ সবচেয়ে বেশি সুরক্ষা পেতে, <ph name="BEGIN_ENHANCED_PROTECTION_LINK" />উন্নত সুরক্ষা চালু করুন<ph name="END_ENHANCED_PROTECTION_LINK" />।</translation>
 <translation id="869891660844655955">মেয়াদকাল সমাপ্তির তারিখ</translation>
 <translation id="8699041776323235191">HID ডিভাইস</translation>
 <translation id="8703575177326907206"><ph name="DOMAIN" />-এ আপনার কানেকশন এনক্রিপ্ট হয় নি৷</translation>
diff --git a/components/strings/components_strings_cs.xtb b/components/strings/components_strings_cs.xtb
index 0e2bbf4e..aae4c1c 100644
--- a/components/strings/components_strings_cs.xtb
+++ b/components/strings/components_strings_cs.xtb
@@ -279,6 +279,7 @@
 <translation id="204357726431741734">Chcete-li používat hesla uložená v účtu Google, přihlaste se</translation>
 <translation id="2053111141626950936">Stránky v jazyce <ph name="LANGUAGE" /> se nebudou překládat.</translation>
 <translation id="2053553514270667976">PSČ</translation>
+<translation id="2054665754582400095">Vaše přítomnost</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 návrh}few{# návrhy}many{# návrhu}other{# návrhů}}</translation>
 <translation id="2079545284768500474">Vrátit zpět</translation>
 <translation id="20817612488360358">Jako aktivní jsou nakonfigurována systémová nastavení proxy serveru, je však určena i explicitní konfigurace proxy serveru.</translation>
diff --git a/components/strings/components_strings_da.xtb b/components/strings/components_strings_da.xtb
index 28e4805f2..479c504 100644
--- a/components/strings/components_strings_da.xtb
+++ b/components/strings/components_strings_da.xtb
@@ -283,6 +283,7 @@
 <translation id="204357726431741734">Log ind for at bruge de adgangskoder, du har gemt på din Google-konto</translation>
 <translation id="2053111141626950936">Sider på <ph name="LANGUAGE" /> oversættes ikke.</translation>
 <translation id="2053553514270667976">Postnummer</translation>
+<translation id="2054665754582400095">Din tilstedeværelse</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 forslag}one{# forslag}other{# forslag}}</translation>
 <translation id="2079545284768500474">Fortryd</translation>
 <translation id="20817612488360358">Indstillingerne for systemproxy er angivet at blive brugt, men en eksplicit proxykonfiguration er også angivet.</translation>
diff --git a/components/strings/components_strings_el.xtb b/components/strings/components_strings_el.xtb
index f2510d46..480d69bb 100644
--- a/components/strings/components_strings_el.xtb
+++ b/components/strings/components_strings_el.xtb
@@ -283,6 +283,7 @@
 <translation id="204357726431741734">Συνδεθείτε, για να χρησιμοποιήσετε κωδικούς πρόσβασης που είναι αποθηκευμένοι στον Λογαριασμό σας Google.</translation>
 <translation id="2053111141626950936">Οι σελίδες στα <ph name="LANGUAGE" /> δεν θα μεταφράζονται.</translation>
 <translation id="2053553514270667976">Ταχυδρομικός κώδικας</translation>
+<translation id="2054665754582400095">Η παρουσία σας</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 πρόταση}other{# προτάσεις}}</translation>
 <translation id="2079545284768500474">Αναίρεση</translation>
 <translation id="20817612488360358">Οι ρυθμίσεις διακομιστή μεσολάβησης του συστήματος έχουν οριστεί για να χρησιμοποιηθούν, αλλά καθορίζεται επίσης μια ρητή διαμόρφωση του διακομιστή μεσολάβησης.</translation>
diff --git a/components/strings/components_strings_eu.xtb b/components/strings/components_strings_eu.xtb
index 9abc6e5a..cd4d181 100644
--- a/components/strings/components_strings_eu.xtb
+++ b/components/strings/components_strings_eu.xtb
@@ -279,6 +279,7 @@
 <translation id="204357726431741734">Hasi saioa Google-ko kontuan gordetako pasahitzak erabiltzeko</translation>
 <translation id="2053111141626950936">Ez dira itzuliko <ph name="LANGUAGE" /> darabilten orriak.</translation>
 <translation id="2053553514270667976">Posta-kodea</translation>
+<translation id="2054665754582400095">Zure presentzia</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 iradokizun}other{# iradokizun}}</translation>
 <translation id="2079545284768500474">Desegin</translation>
 <translation id="20817612488360358">Erabiltzeko ezarri dira sistemaren proxy-ezarpenak, baina proxy-konfigurazio esplizitu bat ere zehaztu da.</translation>
diff --git a/components/strings/components_strings_fa.xtb b/components/strings/components_strings_fa.xtb
index c9a2eff..606f60d 100644
--- a/components/strings/components_strings_fa.xtb
+++ b/components/strings/components_strings_fa.xtb
@@ -283,6 +283,7 @@
 <translation id="204357726431741734">‏ورود به سیستم برای استفاده از گذرواژه‌های ذخیره‌شده در «حساب Google»</translation>
 <translation id="2053111141626950936">صفحه‌های <ph name="LANGUAGE" /> ترجمه نخواهند شد.</translation>
 <translation id="2053553514270667976">کد پستی</translation>
+<translation id="2054665754582400095">حضور شما</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{۱ پیشنهاد}one{# پیشنهاد}other{# پیشنهاد}}</translation>
 <translation id="2079545284768500474">لغو</translation>
 <translation id="20817612488360358">تنظیمات پروکسی سیستم تنظیم شده تا مورد استفاده قرار گیرد، اما یک پیکربندی مشخص برای پروکسی نیز تعیین شده است.</translation>
diff --git a/components/strings/components_strings_fi.xtb b/components/strings/components_strings_fi.xtb
index c509758..518dc7a 100644
--- a/components/strings/components_strings_fi.xtb
+++ b/components/strings/components_strings_fi.xtb
@@ -283,6 +283,7 @@
 <translation id="204357726431741734">Kirjaudu sisään käyttääksesi Google-tilillesi tallennettuja salasanoja</translation>
 <translation id="2053111141626950936">Kielellä <ph name="LANGUAGE" /> kirjoitettuja sivuja ei käännetä.</translation>
 <translation id="2053553514270667976">Postinumero</translation>
+<translation id="2054665754582400095">Paikallaolosi</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 ehdotus}other{# ehdotusta}}</translation>
 <translation id="2079545284768500474">Kumoa</translation>
 <translation id="20817612488360358">Järjestelmän välityspalvelinasetukset on määritetty käytettäviksi, mutta erilliset välityspalvelimen asetukset on myös määritetty.</translation>
diff --git a/components/strings/components_strings_fil.xtb b/components/strings/components_strings_fil.xtb
index 893e9c1..3a113d9 100644
--- a/components/strings/components_strings_fil.xtb
+++ b/components/strings/components_strings_fil.xtb
@@ -283,6 +283,7 @@
 <translation id="204357726431741734">Mag-sign in para magamit ang mga naka-save na password sa iyong Google Account</translation>
 <translation id="2053111141626950936">Hindi ita-translate ang mga page na nasa <ph name="LANGUAGE" />.</translation>
 <translation id="2053553514270667976">ZIP code</translation>
+<translation id="2054665754582400095">Ang iyong presensya</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 suhestyon}one{# suhestyon}other{# na suhestyon}}</translation>
 <translation id="2079545284768500474">I-undo</translation>
 <translation id="20817612488360358">Itinatakda ang mga setting ng proxy ng system upang magamit ngunit tinutukoy rin ang isang tahasang configuration ng proxy.</translation>
diff --git a/components/strings/components_strings_fr-CA.xtb b/components/strings/components_strings_fr-CA.xtb
index 792601a3..953c321 100644
--- a/components/strings/components_strings_fr-CA.xtb
+++ b/components/strings/components_strings_fr-CA.xtb
@@ -279,6 +279,7 @@
 <translation id="204357726431741734">Connectez-vous pour utiliser les mots de passe enregistrés dans votre compte Google</translation>
 <translation id="2053111141626950936">Les pages en <ph name="LANGUAGE" /> ne seront pas traduites.</translation>
 <translation id="2053553514270667976">Code postal</translation>
+<translation id="2054665754582400095">Votre présence</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 suggestion}one{# suggestion}other{# suggestions}}</translation>
 <translation id="2079545284768500474">Annuler</translation>
 <translation id="20817612488360358">Les paramètres de mandataire du système sont configurés pour être utilisés, mais une configuration de mandataire explicite est également spécifiée.</translation>
diff --git a/components/strings/components_strings_hi.xtb b/components/strings/components_strings_hi.xtb
index 33fe7f7..9d13ea5 100644
--- a/components/strings/components_strings_hi.xtb
+++ b/components/strings/components_strings_hi.xtb
@@ -283,6 +283,7 @@
 <translation id="204357726431741734">अपने Google खाते में सेव किए गए पासवर्ड इस्तेमाल करने के लिए साइन इन करें</translation>
 <translation id="2053111141626950936"><ph name="LANGUAGE" /> भाषा के पेजों का अनुवाद नहीं किया जाएगा.</translation>
 <translation id="2053553514270667976">ज़िप कोड</translation>
+<translation id="2054665754582400095">आपकी मौजूदगी</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 सुझाव}one{# सुझाव}other{# सुझाव}}</translation>
 <translation id="2079545284768500474">पहले जैसा करें</translation>
 <translation id="20817612488360358">सिस्‍टम प्रॉक्‍सी सेटिंग उपयोग किए जाने के लिए सेट हैं लेकिन कोई स्पष्‍ट प्रॉक्‍सी कॉन्फ़िगरेशन भी मौजूद है.</translation>
diff --git a/components/strings/components_strings_hu.xtb b/components/strings/components_strings_hu.xtb
index 89c11c1..163d067d 100644
--- a/components/strings/components_strings_hu.xtb
+++ b/components/strings/components_strings_hu.xtb
@@ -283,6 +283,7 @@
 <translation id="204357726431741734">Jelentkezzen be a Google-fiókjába mentett jelszavak használatához</translation>
 <translation id="2053111141626950936">A(z) <ph name="LANGUAGE" /> nyelvű oldalak nem lesznek lefordítva.</translation>
 <translation id="2053553514270667976">Irányítószám</translation>
+<translation id="2054665754582400095">Felhasználói jelenlét</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 javaslat}other{# javaslat}}</translation>
 <translation id="2079545284768500474">Visszavonás</translation>
 <translation id="20817612488360358">A rendszer proxybeállításai konfigurálva vannak a használathoz, de kifejezett proxykonfiguráció is meg van adva.</translation>
diff --git a/components/strings/components_strings_hy.xtb b/components/strings/components_strings_hy.xtb
index 078dbc2..c18bacd 100644
--- a/components/strings/components_strings_hy.xtb
+++ b/components/strings/components_strings_hy.xtb
@@ -283,6 +283,7 @@
 <translation id="204357726431741734">Մուտք գործեք՝ Google հաշվում պահված գաղտնաբառերն օգտագործելու համար</translation>
 <translation id="2053111141626950936"><ph name="LANGUAGE" /> լեզվով էջերը չեն թարգմանվի:</translation>
 <translation id="2053553514270667976">Փոստային դասիչ</translation>
+<translation id="2054665754582400095">Տվյալներ ձեր ներկայության մասին</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 առաջարկ}one{# suggestions}other{# առաջարկ}}</translation>
 <translation id="2079545284768500474">Հետարկել</translation>
 <translation id="20817612488360358">Համակարգի պրոքսի-սերվերի կարգավորումները կայված են, բայց նաև նշված է նրա ուղղակի կազմաձևում:</translation>
diff --git a/components/strings/components_strings_id.xtb b/components/strings/components_strings_id.xtb
index 14974693..ae82e5e 100644
--- a/components/strings/components_strings_id.xtb
+++ b/components/strings/components_strings_id.xtb
@@ -279,6 +279,7 @@
 <translation id="204357726431741734">Login untuk menggunakan sandi yang disimpan di Akun Google Anda</translation>
 <translation id="2053111141626950936">Halaman dalam bahasa <ph name="LANGUAGE" /> tidak akan diterjemahkan.</translation>
 <translation id="2053553514270667976">Kode pos</translation>
+<translation id="2054665754582400095">Kehadiran Anda</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 saran}other{# saran}}</translation>
 <translation id="2079545284768500474">Urungkan</translation>
 <translation id="20817612488360358">Setelan proxy sistem disetel untuk digunakan namun konfigurasi proxy eksplisit juga ditentukan.</translation>
diff --git a/components/strings/components_strings_is.xtb b/components/strings/components_strings_is.xtb
index a11dd40..5e608486 100644
--- a/components/strings/components_strings_is.xtb
+++ b/components/strings/components_strings_is.xtb
@@ -284,6 +284,7 @@
 <translation id="204357726431741734">Skráðu þig inn til að nota aðgangsorð sem eru vistuð á Google reikningnum þínum</translation>
 <translation id="2053111141626950936">Síður á þessu tungumáli verða ekki þýddar: <ph name="LANGUAGE" />.</translation>
 <translation id="2053553514270667976">Póstnúmer</translation>
+<translation id="2054665754582400095">Viðvera þín</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{Ein tillaga}one{# tillaga}other{# tillögur}}</translation>
 <translation id="2079545284768500474">Afturkalla</translation>
 <translation id="20817612488360358">Valið er að nota proxy-stillingar kerfis en skýr proxy-stilling er einnig tilgreind.</translation>
diff --git a/components/strings/components_strings_it.xtb b/components/strings/components_strings_it.xtb
index 8469fc71..4a00ef1 100644
--- a/components/strings/components_strings_it.xtb
+++ b/components/strings/components_strings_it.xtb
@@ -283,6 +283,7 @@
 <translation id="204357726431741734">Accedi per usare le password salvate nel tuo Account Google</translation>
 <translation id="2053111141626950936">Le pagine in <ph name="LANGUAGE" /> non verranno tradotte.</translation>
 <translation id="2053553514270667976">ZIP</translation>
+<translation id="2054665754582400095">La tua presenza</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 suggerimento}other{# suggerimenti}}</translation>
 <translation id="2079545284768500474">Annulla</translation>
 <translation id="20817612488360358">Devono essere utilizzate le impostazioni del proxy di sistema ma è stata specificata anche una configurazione proxy esplicita.</translation>
diff --git a/components/strings/components_strings_iw.xtb b/components/strings/components_strings_iw.xtb
index d802c1b..71de281 100644
--- a/components/strings/components_strings_iw.xtb
+++ b/components/strings/components_strings_iw.xtb
@@ -86,7 +86,7 @@
 <translation id="1292701964462482250">‏"יש תוכנה במחשב שלך שמונעת מ-Chrome להתחבר באופן מאובטח אל האינטרנט" (מחשבי Windows בלבד)</translation>
 <translation id="1294154142200295408">וריאציות של שורת פקודה</translation>
 <translation id="129553762522093515">נסגרו לאחרונה</translation>
-<translation id="129863573139666797">‏<ph name="BEGIN_LINK" />נסה לנקות את קובצי ה-Cookie<ph name="END_LINK" /></translation>
+<translation id="129863573139666797">‏<ph name="BEGIN_LINK" />יש לנסות לנקות את קובצי ה-Cookie<ph name="END_LINK" /></translation>
 <translation id="1301324364792935241">‏בדיקת הגדרות ה-DNS המאובטח</translation>
 <translation id="1307966114820526988">תכונות שהוצאו משימוש</translation>
 <translation id="131405271941274527">‏<ph name="URL" /> רוצה לשלוח ולקבל מידע אחרי כל הקשה של מספר הטלפון שלך במכשיר NFC</translation>
@@ -283,6 +283,7 @@
 <translation id="204357726431741734">‏כדי להשתמש בסיסמאות השמורות בחשבון Google, עליך להיכנס שוב לחשבון</translation>
 <translation id="2053111141626950936">דפים ב<ph name="LANGUAGE" /> לא יתורגמו.</translation>
 <translation id="2053553514270667976">מספר / מיקוד</translation>
+<translation id="2054665754582400095">הנוכחות שלך אונליין</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{הצעה אחת}two{שתי הצעות}many{# הצעות}other{# הצעות}}</translation>
 <translation id="2079545284768500474">ביטול הפעולה</translation>
 <translation id="20817612488360358">‏נקבע שימוש בהגדרות שרת Proxy של מערכת אך בנוסף מצוינת גם תצורה מפורשת של שרת Proxy.</translation>
@@ -817,7 +818,7 @@
     &lt;p&gt;חשוב להפעיל שוב את האנטי-וירוס בסיום.&lt;/p&gt;
     &lt;h4&gt;שלב חמישי: סיוע נוסף&lt;/h4&gt;
     &lt;p&gt;אם השגיאה עדיין מופיעה, יש לפנות לבעלי האתר.&lt;/p&gt;</translation>
-<translation id="4226937834893929579"><ph name="BEGIN_LINK" />נסה להפעיל את אבחון הרשת<ph name="END_LINK" />.</translation>
+<translation id="4226937834893929579"><ph name="BEGIN_LINK" />יש לנסות להפעיל את אבחון הרשת<ph name="END_LINK" />.</translation>
 <translation id="4234495348042597185"><ph name="BEGIN_LINK" />המשך אל <ph name="SITE" /><ph name="END_LINK" /></translation>
 <translation id="4235360514405112390">תקף</translation>
 <translation id="4250431568374086873">החיבור שלך לאתר הזה לא מאובטח בצורה מלאה</translation>
@@ -1423,7 +1424,7 @@
 <translation id="6689249931105087298">יחסי עם דחיסת נקודות שחורות</translation>
 <translation id="6689271823431384964">‏מאחר שנכנסת לחשבון, Chrome מציע לשמור את הכרטיסים שלך בחשבון Google. אפשר לשנות את ההתנהגות הזאת בהגדרות. שם בעל הכרטיס מגיע מהחשבון שלך.</translation>
 <translation id="6710213216561001401">הקודם</translation>
-<translation id="6710594484020273272">&lt;הקלד מונח חיפוש&gt;</translation>
+<translation id="6710594484020273272">&lt;יש להקליד מונח חיפוש&gt;</translation>
 <translation id="671076103358959139">אסימון הרשמה:</translation>
 <translation id="6711464428925977395">‏משהו אינו תקין בשרת ה-proxy, או שהכתובת שגויה.</translation>
 <translation id="6716672519412350405">האתר <ph name="URL" /> רוצה ליצור מפה בתלת ממד של הסביבה שלך ולעקוב אחר מיקום המצלמה</translation>
diff --git a/components/strings/components_strings_ja.xtb b/components/strings/components_strings_ja.xtb
index f9c35eb..fc358ad8 100644
--- a/components/strings/components_strings_ja.xtb
+++ b/components/strings/components_strings_ja.xtb
@@ -279,6 +279,7 @@
 <translation id="204357726431741734">Google アカウントに保存したパスワードを使用するには、ログインしてください</translation>
 <translation id="2053111141626950936"><ph name="LANGUAGE" />のページは翻訳されません。</translation>
 <translation id="2053553514270667976">郵便番号</translation>
+<translation id="2054665754582400095">ユーザーのアクティブ状態</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 件の候補}other{# 件の候補}}</translation>
 <translation id="2079545284768500474">元に戻す</translation>
 <translation id="20817612488360358">システム プロキシ設定を使用するように設定されていますが、明示的なプロキシの設定も指定されています。</translation>
diff --git a/components/strings/components_strings_kk.xtb b/components/strings/components_strings_kk.xtb
index 4469538..2afdd4c 100644
--- a/components/strings/components_strings_kk.xtb
+++ b/components/strings/components_strings_kk.xtb
@@ -283,6 +283,7 @@
 <translation id="204357726431741734">Google есептік жазбаңызда сақталған құпия сөздерді пайдалану үшін кіру</translation>
 <translation id="2053111141626950936"><ph name="LANGUAGE" /> тіліндегі беттер аударылмайды.</translation>
 <translation id="2053553514270667976">Пошта индексі</translation>
+<translation id="2054665754582400095">Бар болу деректері</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 ұсыныс}other{# ұсыныс}}</translation>
 <translation id="2079545284768500474">Қайтару</translation>
 <translation id="20817612488360358">Жүйелік прокси параметрлері пайдалану үшін орнатылған, бірақ анық прокси конфигурациясы да көрсетілген.</translation>
diff --git a/components/strings/components_strings_km.xtb b/components/strings/components_strings_km.xtb
index 9eb32bb..722502b2 100644
--- a/components/strings/components_strings_km.xtb
+++ b/components/strings/components_strings_km.xtb
@@ -285,6 +285,7 @@
 <translation id="204357726431741734">ចូលគណនី ដើម្បីប្រើ​ពាក្យសម្ងាត់​ដែលរក្សាទុក​នៅក្នុងគណនី Google របស់អ្នក</translation>
 <translation id="2053111141626950936">ទំព័រជា <ph name="LANGUAGE" /> នឹងមិនត្រូវ​បានបកប្រែទេ។</translation>
 <translation id="2053553514270667976">លេខកូដតំបន់</translation>
+<translation id="2054665754582400095">​វត្តមានរបស់អ្នក</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{ការផ្តល់យោបល់ 1}other{ការផ្តល់យោបល់ #}}</translation>
 <translation id="2079545284768500474">ត្រឡប់វិញ</translation>
 <translation id="20817612488360358">ការកំណត់ប្រូកស៊ីប្រព័ន្ធត្រូវបានកំណត់ដើម្បីប្រើ ប៉ុន្តែការកំណត់ប្រូកស៊ីជាក់លាក់ក៏ត្រូវបានបញ្ជាក់ផងដែរ។</translation>
diff --git a/components/strings/components_strings_ko.xtb b/components/strings/components_strings_ko.xtb
index 26684ff..6754d4cd 100644
--- a/components/strings/components_strings_ko.xtb
+++ b/components/strings/components_strings_ko.xtb
@@ -279,6 +279,7 @@
 <translation id="204357726431741734">Google 계정에 저장된 비밀번호를 사용하여 로그인</translation>
 <translation id="2053111141626950936"><ph name="LANGUAGE" />로 된 페이지를 번역하지 않습니다.</translation>
 <translation id="2053553514270667976">우편번호</translation>
+<translation id="2054665754582400095">활동</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{제안 1개}other{제안 #개}}</translation>
 <translation id="2079545284768500474">실행취소</translation>
 <translation id="20817612488360358">시스템 프록시 설정이 사용하도록 설정되었지만 명시적 프록시 설정도 지정되어 있습니다.</translation>
diff --git a/components/strings/components_strings_ky.xtb b/components/strings/components_strings_ky.xtb
index 1306925..98f290e 100644
--- a/components/strings/components_strings_ky.xtb
+++ b/components/strings/components_strings_ky.xtb
@@ -283,6 +283,7 @@
 <translation id="204357726431741734">Google аккаунтуңузда сакталган сырсөздөрдү колдонуу үчүн аккаунтуңузга кириңиз</translation>
 <translation id="2053111141626950936"><ph name="LANGUAGE" /> тилиндеги барактар которулбайт.</translation>
 <translation id="2053553514270667976">Почта индекси</translation>
+<translation id="2054665754582400095">Сайтта же сайтта эместигиңиз</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 сунуш}other{# сунуш}}</translation>
 <translation id="2079545284768500474">Кайтаруу</translation>
 <translation id="20817612488360358">Тутумдун прокси жөндөөлөрү коюлду жана ошону менен катар, айкын прокси конфигурайиясы да белгиленди.</translation>
diff --git a/components/strings/components_strings_lt.xtb b/components/strings/components_strings_lt.xtb
index 62c1064..333eddc 100644
--- a/components/strings/components_strings_lt.xtb
+++ b/components/strings/components_strings_lt.xtb
@@ -283,6 +283,7 @@
 <translation id="204357726431741734">Prisijunkite, kad galėtumėte naudoti „Google“ paskyroje išsaugotus slaptažodžius</translation>
 <translation id="2053111141626950936">Puslapiai, parašyti <ph name="LANGUAGE" />, verčiami nebus.</translation>
 <translation id="2053553514270667976">Pašto kodas</translation>
+<translation id="2054665754582400095">Jūsų veiklos duomenys</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 pasiūlymas}one{# pasiūlymas}few{# pasiūlymai}many{# pasiūlymo}other{# pasiūlymų}}</translation>
 <translation id="2079545284768500474">Anuliuoti</translation>
 <translation id="20817612488360358">Sistemos įgaliotojo serverio nustatymai nustatyti kaip naudotini, bet taip pat nurodyta tiksli įgaliotojo serverio konfigūracija.</translation>
diff --git a/components/strings/components_strings_lv.xtb b/components/strings/components_strings_lv.xtb
index f94c247..fd4fec7 100644
--- a/components/strings/components_strings_lv.xtb
+++ b/components/strings/components_strings_lv.xtb
@@ -283,6 +283,7 @@
 <translation id="204357726431741734">Pierakstieties, lai izmantotu savā Google kontā saglabātās paroles.</translation>
 <translation id="2053111141626950936">Lapas netiks tulkotas no šīs valodas: <ph name="LANGUAGE" /></translation>
 <translation id="2053553514270667976">Pasta indekss</translation>
+<translation id="2054665754582400095">Jūsu klātbūtne</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 ieteikums}zero{# ieteikumi}one{# ieteikums}other{# ieteikumi}}</translation>
 <translation id="2079545284768500474">Atsaukt</translation>
 <translation id="20817612488360358">Ir iestatīta datora starpniekserveru iestatījumu lietošana, bet ir norādīta arī atklāta starpniekservera konfigurācija.</translation>
diff --git a/components/strings/components_strings_ms.xtb b/components/strings/components_strings_ms.xtb
index 137fbf1..1b0073e 100644
--- a/components/strings/components_strings_ms.xtb
+++ b/components/strings/components_strings_ms.xtb
@@ -283,6 +283,7 @@
 <translation id="204357726431741734">Log masuk untuk menggunakan kata laluan yang disimpan dalam Akaun Google anda</translation>
 <translation id="2053111141626950936">Halaman dalam <ph name="LANGUAGE" /> tidak akan diterjemah.</translation>
 <translation id="2053553514270667976">Poskod</translation>
+<translation id="2054665754582400095">Kehadiran anda</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 cadangan}other{# cadangan}}</translation>
 <translation id="2079545284768500474">Buat asal</translation>
 <translation id="20817612488360358">Tetapan proksi sistem telah sedia untuk digunakan tetapi konfigurasi proksi jelas juga telah ditentukan.</translation>
diff --git a/components/strings/components_strings_my.xtb b/components/strings/components_strings_my.xtb
index fe754c72..bacead3 100644
--- a/components/strings/components_strings_my.xtb
+++ b/components/strings/components_strings_my.xtb
@@ -285,6 +285,7 @@
 <translation id="204357726431741734">သင့် Google Account တွင် သိမ်းထားသောစကားဝှက်များ အသုံးပြုရန် လက်မှတ်ထိုးဝင်ပါ</translation>
 <translation id="2053111141626950936"><ph name="LANGUAGE" /> ဘာသာဖြင့် စာမျက်နှာများကို ဘာသာပြန်မည် မဟုတ်ပါ။</translation>
 <translation id="2053553514270667976">ဇစ်ကုဒ်</translation>
+<translation id="2054665754582400095">သင်ရှိနေမှု</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{အကြံပြုချက် ၁ ခု}other{အကြံပြုချက် # ခု}}</translation>
 <translation id="2079545284768500474">တစ်ဆင့်နောက်ပြန်ရန်</translation>
 <translation id="20817612488360358">စနစ် ပရောက်စီ ဆက်တင်များကို အသုံးပြုရန် သတ်မှတ် ပေးထားသော်လည်း အထူး ဖေါ်ပြပေးထားသည့် ပရောက်စီ စီစဉ်ဖွဲ့စည်းမှု တစ်ခုကိုပါ ဖေါ်ပြပေးထားသည်။</translation>
diff --git a/components/strings/components_strings_pt-BR.xtb b/components/strings/components_strings_pt-BR.xtb
index 100f7a4..75f72b0c 100644
--- a/components/strings/components_strings_pt-BR.xtb
+++ b/components/strings/components_strings_pt-BR.xtb
@@ -1887,7 +1887,7 @@
 <translation id="8685155993131031756">Prc-16K</translation>
 <translation id="8688672835843460752">Disponível</translation>
 <translation id="868922510921656628">Páginas por grupo</translation>
-<translation id="8697373104056314601">Para usar o maior nível de segurança do Chrome, <ph name="BEGIN_ENHANCED_PROTECTION_LINK" />ative a proteção reforçada<ph name="END_ENHANCED_PROTECTION_LINK" />.</translation>
+<translation id="8697373104056314601">Para usar o nível mais alto de segurança do Chrome, <ph name="BEGIN_ENHANCED_PROTECTION_LINK" />ative a proteção reforçada<ph name="END_ENHANCED_PROTECTION_LINK" />.</translation>
 <translation id="869891660844655955">Validade</translation>
 <translation id="8699041776323235191">Dispositivo HID</translation>
 <translation id="8703575177326907206">Sua conexão com <ph name="DOMAIN" /> não está criptografada.</translation>
diff --git a/components/strings/components_strings_pt-PT.xtb b/components/strings/components_strings_pt-PT.xtb
index 48416962..f0a4486 100644
--- a/components/strings/components_strings_pt-PT.xtb
+++ b/components/strings/components_strings_pt-PT.xtb
@@ -283,6 +283,7 @@
 <translation id="204357726431741734">Iniciar sessão para utilizar palavras-passe guardadas na sua Conta Google</translation>
 <translation id="2053111141626950936">As páginas em <ph name="LANGUAGE" /> não serão traduzidas.</translation>
 <translation id="2053553514270667976">Código postal</translation>
+<translation id="2054665754582400095">A sua presença</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 sugestão}other{# sugestões}}</translation>
 <translation id="2079545284768500474">Anular</translation>
 <translation id="20817612488360358">As definições de proxy do sistema estão definidas para serem utilizadas, mas também está especificada uma configuração de proxy explícita.</translation>
diff --git a/components/strings/components_strings_ro.xtb b/components/strings/components_strings_ro.xtb
index e8367c7..5bd262f 100644
--- a/components/strings/components_strings_ro.xtb
+++ b/components/strings/components_strings_ro.xtb
@@ -283,6 +283,7 @@
 <translation id="204357726431741734">Conectează-te pentru a folosi parolele salvate în Contul Google</translation>
 <translation id="2053111141626950936">Paginile în <ph name="LANGUAGE" /> nu vor fi traduse.</translation>
 <translation id="2053553514270667976">Cod zip</translation>
+<translation id="2054665754582400095">Prezența ta</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 sugestie}few{# sugestii}other{# de sugestii}}</translation>
 <translation id="2079545284768500474">Anulează</translation>
 <translation id="20817612488360358">Setările proxy de sistem sunt setate pentru a fi utilizate, dar o configurație explicită pentru proxy este, de asemenea, specificată.</translation>
diff --git a/components/strings/components_strings_ru.xtb b/components/strings/components_strings_ru.xtb
index 345a1c1..168099d 100644
--- a/components/strings/components_strings_ru.xtb
+++ b/components/strings/components_strings_ru.xtb
@@ -279,6 +279,7 @@
 <translation id="204357726431741734">Войти, чтобы использовать пароли, сохраненные в аккаунте Google</translation>
 <translation id="2053111141626950936">Страницы на этом языке (<ph name="LANGUAGE" />) не будут переводиться автоматически.</translation>
 <translation id="2053553514270667976">Почтовый индекс</translation>
+<translation id="2054665754582400095">Ваше присутствие</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 вариант}one{# вариант}few{# варианта}many{# вариантов}other{# варианта}}</translation>
 <translation id="2079545284768500474">Отмена</translation>
 <translation id="20817612488360358">Включены системные настройки прокси-сервера, но при этом его конфигурация задана явным образом.</translation>
diff --git a/components/strings/components_strings_si.xtb b/components/strings/components_strings_si.xtb
index 7bc7041b..b4b14400 100644
--- a/components/strings/components_strings_si.xtb
+++ b/components/strings/components_strings_si.xtb
@@ -283,6 +283,7 @@
 <translation id="204357726431741734">ඔබේ Google ගිණුම තුළ සුරැකී ඇති මුරපද භාවිත කිරීමට පුරන්න</translation>
 <translation id="2053111141626950936"><ph name="LANGUAGE" /> හි පිටු පරිවර්තන නොකෙරේ</translation>
 <translation id="2053553514270667976">ZIP කේතය</translation>
+<translation id="2054665754582400095">ඔබගේ සිටීම</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{යෝජනා 1}one{යෝජනා #}other{යෝජනා #}}</translation>
 <translation id="2079545284768500474">පසුගමනය</translation>
 <translation id="20817612488360358">පද්ධති ප්‍රොක්සි පසුතල සකසා ඇත්තේ භාවිතා කිරීමට වන නමුත් සවිස්තර ප්‍රොක්සි වින්‍යාසකරණයද නිශ්චිතව දක්වා තිබේ.</translation>
diff --git a/components/strings/components_strings_sl.xtb b/components/strings/components_strings_sl.xtb
index a3aa236..e4fba21 100644
--- a/components/strings/components_strings_sl.xtb
+++ b/components/strings/components_strings_sl.xtb
@@ -283,6 +283,7 @@
 <translation id="204357726431741734">Prijavite se, če želite uporabljati gesla, shranjena v računu Google</translation>
 <translation id="2053111141626950936">Strani v jeziku <ph name="LANGUAGE" /> ne bodo prevedene.</translation>
 <translation id="2053553514270667976">Poštna številka</translation>
+<translation id="2054665754582400095">Vaša prisotnost</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 predlog}one{# predlog}two{# predloga}few{# predlogi}other{# predlogov}}</translation>
 <translation id="2079545284768500474">Razveljavi</translation>
 <translation id="20817612488360358">Za uporabo so nastavljene sistemske nastavitve strežnika proxy, vendar je navedena tudi izrecna konfiguracija proxyja.</translation>
diff --git a/components/strings/components_strings_sq.xtb b/components/strings/components_strings_sq.xtb
index 72075453..11543fa 100644
--- a/components/strings/components_strings_sq.xtb
+++ b/components/strings/components_strings_sq.xtb
@@ -282,6 +282,7 @@
 <translation id="204357726431741734">Identifikohu për të përdorur fjalëkalimet e ruajtura në "Llogarinë tënde të Google"</translation>
 <translation id="2053111141626950936">Faqet në <ph name="LANGUAGE" /> nuk do të përkthehen.</translation>
 <translation id="2053553514270667976">Kodi postar</translation>
+<translation id="2054665754582400095">Prania jote</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 sugjerim}other{# sugjerime}}</translation>
 <translation id="2079545284768500474">Zhbëj</translation>
 <translation id="20817612488360358">Cilësimet e përfaqësuesit të sistemit janë caktuar që të përdoren, por është specifikuar po ashtu një konfigurim i qartë i përfaqësuesit.</translation>
diff --git a/components/strings/components_strings_sv.xtb b/components/strings/components_strings_sv.xtb
index 14723f0..9a45d8a 100644
--- a/components/strings/components_strings_sv.xtb
+++ b/components/strings/components_strings_sv.xtb
@@ -283,6 +283,7 @@
 <translation id="204357726431741734">Logga in om du vill använda lösenord som har sparats i Google-kontot</translation>
 <translation id="2053111141626950936">Sidor på <ph name="LANGUAGE" /> översätts inte.</translation>
 <translation id="2053553514270667976">ZIP</translation>
+<translation id="2054665754582400095">Din närvaro</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 förslag}other{# förslag}}</translation>
 <translation id="2079545284768500474">Ångra</translation>
 <translation id="20817612488360358">Datorns proxyinställningar är inställda på att användas, men det finns också en explicit proxykonfiguration.</translation>
diff --git a/components/strings/components_strings_tr.xtb b/components/strings/components_strings_tr.xtb
index 0435517..0e9fba13 100644
--- a/components/strings/components_strings_tr.xtb
+++ b/components/strings/components_strings_tr.xtb
@@ -134,7 +134,7 @@
 <translation id="1453974140256777690">Yapıştırdığınız veya eklediğiniz metin analiz amacıyla Google Cloud ve üçüncü taraflara gönderilir. Dosyalarınızın hassas veriler içerip içermediği kontrol edilir.</translation>
 <translation id="1455413310270022028">Silgi</translation>
 <translation id="1462245070427461050">JIS B9</translation>
-<translation id="1462951478840426066">Yüksek kaliteli içerik oluşturabilmeniz için bilgisayarınızdaki yazı tiplerini kullanma</translation>
+<translation id="1462951478840426066">Farklı platformlarda tutarlı görünen bir içerik oluşturabilmeniz için bilgisayarınızdaki yazı tiplerini kullanma</translation>
 <translation id="1463543813647160932">5x7</translation>
 <translation id="1467432559032391204">Sola</translation>
 <translation id="1472675084647422956">Daha fazla göster</translation>
@@ -280,6 +280,7 @@
 <translation id="204357726431741734">Google Hesabınızda kayıtlı şifreleri kullanmak için oturum açın</translation>
 <translation id="2053111141626950936"><ph name="LANGUAGE" /> dilindeki sayfalar çevrilmeyecek.</translation>
 <translation id="2053553514270667976">Posta kodu</translation>
+<translation id="2054665754582400095">Bir yerde olduğunuza dair bilgi</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 öneri}other{# öneri}}</translation>
 <translation id="2079545284768500474">Geri al</translation>
 <translation id="20817612488360358">Sistem proxy ayarları kullanılmak üzere ayarlandı, ancak açık bir proxy yapılandırması da belirtildi.</translation>
diff --git a/components/strings/components_strings_ur.xtb b/components/strings/components_strings_ur.xtb
index 6515229..be5f5ee 100644
--- a/components/strings/components_strings_ur.xtb
+++ b/components/strings/components_strings_ur.xtb
@@ -1900,7 +1900,7 @@
 <translation id="8685155993131031756">Prc-16K</translation>
 <translation id="8688672835843460752">دستیاب</translation>
 <translation id="868922510921656628">صفحات فی سیٹ</translation>
-<translation id="8697373104056314601">‏Chrome کی اعلی ترین سیکیورٹی حاصل کرنے کے لئے، <ph name="BEGIN_ENHANCED_PROTECTION_LINK" />بہتر کردہ حفاظت<ph name="END_ENHANCED_PROTECTION_LINK" /> کو آن کریں۔</translation>
+<translation id="8697373104056314601">‏Chrome کی اعلی ترین سیکیورٹی حاصل کرنے کے لئے، <ph name="BEGIN_ENHANCED_PROTECTION_LINK" />بہتر کردہ حفاظت کو آن کریں<ph name="END_ENHANCED_PROTECTION_LINK" />۔</translation>
 <translation id="869891660844655955">میعاد ختم ہونے کی تاریخ</translation>
 <translation id="8699041776323235191">‏HID آلہ</translation>
 <translation id="8703575177326907206"><ph name="DOMAIN" /> سے آپ کا کنکشن مرموز نہیں کیا گیا ہے۔</translation>
diff --git a/components/strings/components_strings_vi.xtb b/components/strings/components_strings_vi.xtb
index c655f64..66d9a048 100644
--- a/components/strings/components_strings_vi.xtb
+++ b/components/strings/components_strings_vi.xtb
@@ -283,6 +283,7 @@
 <translation id="204357726431741734">Đăng nhập để sử dụng mật khẩu đã lưu trong Tài khoản Google của bạn</translation>
 <translation id="2053111141626950936">Các trang viết bằng <ph name="LANGUAGE" /> sẽ không được dịch.</translation>
 <translation id="2053553514270667976">Mã zip</translation>
+<translation id="2054665754582400095">Sự hiện diện của bạn</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 đề xuất}other{# đề xuất}}</translation>
 <translation id="2079545284768500474">Hoàn tác</translation>
 <translation id="20817612488360358">Cài đặt proxy hệ thống được đặt để sử dụng nhưng cấu hình proxy rõ ràng cũng được chỉ định.</translation>
diff --git a/components/strings/components_strings_zh-CN.xtb b/components/strings/components_strings_zh-CN.xtb
index 23b06be..cc44b2b 100644
--- a/components/strings/components_strings_zh-CN.xtb
+++ b/components/strings/components_strings_zh-CN.xtb
@@ -1881,7 +1881,7 @@
 <translation id="8685155993131031756">Prc-16K</translation>
 <translation id="8688672835843460752">可用</translation>
 <translation id="868922510921656628">每组页数</translation>
-<translation id="8697373104056314601">如果您想获得 Chrome 的最高级别安全保护,请<ph name="BEGIN_ENHANCED_PROTECTION_LINK" />开启增强型保护<ph name="END_ENHANCED_PROTECTION_LINK" />。</translation>
+<translation id="8697373104056314601">如果您想获得 Chrome 最高级别的安全保护,请<ph name="BEGIN_ENHANCED_PROTECTION_LINK" />开启增强型保护<ph name="END_ENHANCED_PROTECTION_LINK" />。</translation>
 <translation id="869891660844655955">截止日期</translation>
 <translation id="8699041776323235191">HID 设备</translation>
 <translation id="8703575177326907206">您与 <ph name="DOMAIN" /> 的连接未加密。</translation>
diff --git a/components/strings/components_strings_zh-HK.xtb b/components/strings/components_strings_zh-HK.xtb
index 3944d7c..74609555d 100644
--- a/components/strings/components_strings_zh-HK.xtb
+++ b/components/strings/components_strings_zh-HK.xtb
@@ -279,6 +279,7 @@
 <translation id="204357726431741734">登入即可使用儲存在 Google 帳戶中的密碼</translation>
 <translation id="2053111141626950936">系統將不會翻譯<ph name="LANGUAGE" />網頁。</translation>
 <translation id="2053553514270667976">郵遞區號</translation>
+<translation id="2054665754582400095">你的使用狀態</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 個建議}other{# 個建議}}</translation>
 <translation id="2079545284768500474">復原</translation>
 <translation id="20817612488360358">雖然系統 Proxy 設定已設為使用,不過也指定了明確的 Proxy 設定。</translation>
diff --git a/components/strings/components_strings_zh-TW.xtb b/components/strings/components_strings_zh-TW.xtb
index 4924ce9..a912054 100644
--- a/components/strings/components_strings_zh-TW.xtb
+++ b/components/strings/components_strings_zh-TW.xtb
@@ -279,6 +279,7 @@
 <translation id="204357726431741734">登入以使用儲存在 Google 帳戶中的密碼</translation>
 <translation id="2053111141626950936">系統不會翻譯<ph name="LANGUAGE" />網頁。</translation>
 <translation id="2053553514270667976">郵遞區號</translation>
+<translation id="2054665754582400095">你的使用狀態</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 個建議項目}other{# 個建議項目}}</translation>
 <translation id="2079545284768500474">復原</translation>
 <translation id="20817612488360358">雖然系統 Proxy 設定已設為使用,不過也指定了明確 Proxy 設定。</translation>
diff --git a/components/strings/components_strings_zu.xtb b/components/strings/components_strings_zu.xtb
index bc9de32..4cbb410 100644
--- a/components/strings/components_strings_zu.xtb
+++ b/components/strings/components_strings_zu.xtb
@@ -283,6 +283,7 @@
 <translation id="204357726431741734">Ngena ngemvume ukuze usebenzise amaphasiwedi alondolozwe ku-akhawunti yakho ye-Google</translation>
 <translation id="2053111141626950936">Amakhasi angesi-<ph name="LANGUAGE" /> ngeke aze ahunyushwe.</translation>
 <translation id="2053553514270667976">Ikhodi ye-Zip</translation>
+<translation id="2054665754582400095">Ubukhona bakho</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 isiphakamiso}one{# iziphakamiso}other{# iziphakamiso}}</translation>
 <translation id="2079545284768500474">Hlehlisa</translation>
 <translation id="20817612488360358">Izilungiselelo zesistimu yommeleli zisethelwe ukusetshenziswa kodwa ukulungiselelwa kommeleli okubekelwe obala kuphinde kucaciswe.</translation>
diff --git a/components/subresource_filter/content/browser/ads_intervention_manager.cc b/components/subresource_filter/content/browser/ads_intervention_manager.cc
index 969b657..dafd438 100644
--- a/components/subresource_filter/content/browser/ads_intervention_manager.cc
+++ b/components/subresource_filter/content/browser/ads_intervention_manager.cc
@@ -11,6 +11,8 @@
 #include "components/subresource_filter/core/browser/subresource_filter_features.h"
 #include "url/gurl.h"
 
+namespace subresource_filter {
+
 namespace {
 
 // Key into the website settings dict for last active ads violation.
@@ -19,8 +21,6 @@
 
 }  // namespace
 
-using subresource_filter::mojom::AdsViolation;
-
 AdsInterventionManager::AdsInterventionManager(
     SubresourceFilterContentSettingsManager* settings_manager)
     : settings_manager_(settings_manager),
@@ -30,7 +30,7 @@
 
 void AdsInterventionManager::TriggerAdsInterventionForUrlOnSubsequentLoads(
     const GURL& url,
-    AdsViolation ads_violation) {
+    mojom::AdsViolation ads_violation) {
   std::unique_ptr<base::DictionaryValue> additional_metadata =
       std::make_unique<base::DictionaryValue>();
 
@@ -39,8 +39,7 @@
   additional_metadata->SetInteger(kLastAdsViolationKey,
                                   static_cast<int>(ads_violation));
 
-  bool activated = base::FeatureList::IsEnabled(
-      subresource_filter::kAdsInterventionsEnforced);
+  bool activated = base::FeatureList::IsEnabled(kAdsInterventionsEnforced);
   // This is a no-op if the metadata already exists for an active
   // ads intervention.
   settings_manager_->SetSiteMetadataBasedOnActivation(
@@ -64,8 +63,10 @@
         clock_->Now() - base::Time::FromDoubleT(last_violation_time);
 
     return LastAdsIntervention(
-        {diff, static_cast<AdsViolation>(ads_violation)});
+        {diff, static_cast<mojom::AdsViolation>(ads_violation)});
   }
 
   return base::nullopt;
 }
+
+}  // namespace subresource_filter
diff --git a/components/subresource_filter/content/browser/ads_intervention_manager.h b/components/subresource_filter/content/browser/ads_intervention_manager.h
index 3792f04b..b16dc851 100644
--- a/components/subresource_filter/content/browser/ads_intervention_manager.h
+++ b/components/subresource_filter/content/browser/ads_intervention_manager.h
@@ -17,6 +17,8 @@
 class Clock;
 }
 
+namespace subresource_filter {
+
 // This class tracks ads interventions that have occurred on origins and is
 // bound to the user's profile. The ads intervention manager operates in two
 // modes set by the feature flag kAdsInterventionsEnforced:
@@ -42,7 +44,7 @@
   // Struct representing the last triggered ads intervention.
   struct LastAdsIntervention {
     base::TimeDelta duration_since;
-    subresource_filter::mojom::AdsViolation ads_violation;
+    mojom::AdsViolation ads_violation;
   };
 
   // The content_settings_manager should outlive the ads intervention manager.
@@ -60,7 +62,7 @@
   // |url| site metadata with the last active intervention.
   void TriggerAdsInterventionForUrlOnSubsequentLoads(
       const GURL& url,
-      subresource_filter::mojom::AdsViolation ads_violation);
+      mojom::AdsViolation ads_violation);
 
   // Returns the last active ads intervention written to metadata,
   // otherwise base::nullopt is returned.
@@ -77,4 +79,6 @@
   base::Clock* clock_;
 };
 
+}  // namespace subresource_filter
+
 #endif  // COMPONENTS_SUBRESOURCE_FILTER_CONTENT_BROWSER_ADS_INTERVENTION_MANAGER_H_
diff --git a/components/subresource_filter/content/browser/ads_intervention_manager_unittest.cc b/components/subresource_filter/content/browser/ads_intervention_manager_unittest.cc
index 7fcf844..17ffa24 100644
--- a/components/subresource_filter/content/browser/ads_intervention_manager_unittest.cc
+++ b/components/subresource_filter/content/browser/ads_intervention_manager_unittest.cc
@@ -16,7 +16,7 @@
 #include "testing/gtest/include/gtest/gtest.h"
 #include "url/gurl.h"
 
-using subresource_filter::mojom::AdsViolation;
+namespace subresource_filter {
 
 class AdsInterventionManagerTest : public testing::Test {
  public:
@@ -80,14 +80,14 @@
   GURL url("https://example.test/");
 
   ads_intervention_manager_->TriggerAdsInterventionForUrlOnSubsequentLoads(
-      url, AdsViolation::kMobileAdDensityByHeightAbove30);
+      url, mojom::AdsViolation::kMobileAdDensityByHeightAbove30);
   test_clock()->Advance(base::TimeDelta::FromHours(1));
 
   base::Optional<AdsInterventionManager::LastAdsIntervention> ads_intervention =
       ads_intervention_manager_->GetLastAdsIntervention(url);
   EXPECT_TRUE(ads_intervention.has_value());
   EXPECT_EQ(ads_intervention->ads_violation,
-            AdsViolation::kMobileAdDensityByHeightAbove30);
+            mojom::AdsViolation::kMobileAdDensityByHeightAbove30);
   EXPECT_EQ(ads_intervention->duration_since, base::TimeDelta::FromHours(1));
 
   // Advance the clock by two hours, duration since should now be 3 hours.
@@ -95,6 +95,8 @@
   ads_intervention = ads_intervention_manager_->GetLastAdsIntervention(url);
   EXPECT_TRUE(ads_intervention.has_value());
   EXPECT_EQ(ads_intervention->ads_violation,
-            AdsViolation::kMobileAdDensityByHeightAbove30);
+            mojom::AdsViolation::kMobileAdDensityByHeightAbove30);
   EXPECT_EQ(ads_intervention->duration_since, base::TimeDelta::FromHours(3));
 }
+
+}  // namespace subresource_filter
diff --git a/components/subresource_filter/content/browser/subresource_filter_content_settings_manager.cc b/components/subresource_filter/content/browser/subresource_filter_content_settings_manager.cc
index af1030e..790a93b 100644
--- a/components/subresource_filter/content/browser/subresource_filter_content_settings_manager.cc
+++ b/components/subresource_filter/content/browser/subresource_filter_content_settings_manager.cc
@@ -17,6 +17,8 @@
 #include "components/content_settings/core/common/content_settings_types.h"
 #include "url/gurl.h"
 
+namespace subresource_filter {
+
 namespace {
 
 // Key into the website setting dict for the smart UI.
@@ -231,3 +233,5 @@
 void SubresourceFilterContentSettingsManager::ClearMetadataForAllSites() {
   settings_map_->ClearSettingsForOneType(ContentSettingsType::ADS_DATA);
 }
+
+}  // namespace subresource_filter
diff --git a/components/subresource_filter/content/browser/subresource_filter_content_settings_manager.h b/components/subresource_filter/content/browser/subresource_filter_content_settings_manager.h
index 66269fa..eb9e9fc 100644
--- a/components/subresource_filter/content/browser/subresource_filter_content_settings_manager.h
+++ b/components/subresource_filter/content/browser/subresource_filter_content_settings_manager.h
@@ -20,6 +20,8 @@
 class DictionaryValue;
 }  // namespace base
 
+namespace subresource_filter {
+
 // This class contains helpers to get/set content and website settings related
 // to subresource filtering.
 //
@@ -152,4 +154,6 @@
   DISALLOW_COPY_AND_ASSIGN(SubresourceFilterContentSettingsManager);
 };
 
+}  // namespace subresource_filter
+
 #endif  // COMPONENTS_SUBRESOURCE_FILTER_CONTENT_BROWSER_SUBRESOURCE_FILTER_CONTENT_SETTINGS_MANAGER_H_
diff --git a/components/subresource_filter/content/browser/subresource_filter_content_settings_manager_unittest.cc b/components/subresource_filter/content/browser/subresource_filter_content_settings_manager_unittest.cc
index 1a8ab9fa..b58b2c6 100644
--- a/components/subresource_filter/content/browser/subresource_filter_content_settings_manager_unittest.cc
+++ b/components/subresource_filter/content/browser/subresource_filter_content_settings_manager_unittest.cc
@@ -21,6 +21,8 @@
 #include "testing/gtest/include/gtest/gtest.h"
 #include "url/gurl.h"
 
+namespace subresource_filter {
+
 namespace {
 
 class SubresourceFilterContentSettingsManagerTest : public testing::Test {
@@ -354,3 +356,5 @@
 }
 
 }  // namespace
+
+}  // namespace subresource_filter
diff --git a/components/subresource_filter/content/browser/subresource_filter_profile_context.cc b/components/subresource_filter/content/browser/subresource_filter_profile_context.cc
index 0e81140..e99e856 100644
--- a/components/subresource_filter/content/browser/subresource_filter_profile_context.cc
+++ b/components/subresource_filter/content/browser/subresource_filter_profile_context.cc
@@ -7,6 +7,8 @@
 #include "components/subresource_filter/content/browser/ads_intervention_manager.h"
 #include "components/subresource_filter/content/browser/subresource_filter_content_settings_manager.h"
 
+namespace subresource_filter {
+
 SubresourceFilterProfileContext::SubresourceFilterProfileContext(
     HostContentSettingsMap* settings_map)
     : settings_manager_(
@@ -28,3 +30,5 @@
   settings_manager_.reset();
   ads_intervention_manager_.reset();
 }
+
+}  // namespace subresource_filter
diff --git a/components/subresource_filter/content/browser/subresource_filter_profile_context.h b/components/subresource_filter/content/browser/subresource_filter_profile_context.h
index a400d37..d8ca401 100644
--- a/components/subresource_filter/content/browser/subresource_filter_profile_context.h
+++ b/components/subresource_filter/content/browser/subresource_filter_profile_context.h
@@ -11,6 +11,9 @@
 #include "components/keyed_service/core/keyed_service.h"
 
 class HostContentSettingsMap;
+
+namespace subresource_filter {
+
 class SubresourceFilterContentSettingsManager;
 class AdsInterventionManager;
 
@@ -61,4 +64,6 @@
   DISALLOW_COPY_AND_ASSIGN(SubresourceFilterProfileContext);
 };
 
+}  // namespace subresource_filter
+
 #endif  // COMPONENTS_SUBRESOURCE_FILTER_CONTENT_BROWSER_SUBRESOURCE_FILTER_PROFILE_CONTEXT_H_
diff --git a/components/sync/driver/data_type_manager_impl.cc b/components/sync/driver/data_type_manager_impl.cc
index d708fb9..aede22a 100644
--- a/components/sync/driver/data_type_manager_impl.cc
+++ b/components/sync/driver/data_type_manager_impl.cc
@@ -440,10 +440,8 @@
     return;
   }
 
-  // Wait for current download and association to finish.
-  if (!download_types_queue_.empty() ||
-      model_association_manager_.state() ==
-          ModelAssociationManager::ASSOCIATING) {
+  // Wait for current download to finish.
+  if (!download_types_queue_.empty()) {
     return;
   }
 
@@ -504,9 +502,7 @@
     association_types_queue_.back().first_sync_types = first_sync_types;
     association_types_queue_.back().download_ready_time = base::Time::Now();
     StartNextAssociation(UNREADY_AT_CONFIG);
-  } else if (download_types_queue_.empty() &&
-             model_association_manager_.state() !=
-                 ModelAssociationManager::ASSOCIATING) {
+  } else if (download_types_queue_.empty()) {
     // There's nothing more to download or associate (implying either there were
     // no types to associate or they associated as part of |ready_types|).
     // If the model association manager is also finished, then we're done
@@ -666,14 +662,6 @@
 void DataTypeManagerImpl::StartNextAssociation(AssociationGroup group) {
   DCHECK(!association_types_queue_.empty());
 
-  // If the model association manager is already associating, let it finish.
-  // The model association done event will result in associating any remaining
-  // association groups.
-  if (model_association_manager_.state() !=
-      ModelAssociationManager::INITIALIZED) {
-    return;
-  }
-
   ModelTypeSet types_to_associate;
   if (group == READY_AT_CONFIG) {
     association_types_queue_.front().ready_association_request_time =
@@ -694,7 +682,7 @@
   }
 
   DVLOG(1) << "Associating " << ModelTypeSetToString(types_to_associate);
-  model_association_manager_.StartAssociationAsync(types_to_associate);
+  model_association_manager_.Associate(types_to_associate);
 }
 
 void DataTypeManagerImpl::OnSingleDataTypeWillStop(ModelType type,
diff --git a/components/sync/driver/model_association_manager.cc b/components/sync/driver/model_association_manager.cc
index 4cba078b..c790598 100644
--- a/components/sync/driver/model_association_manager.cc
+++ b/components/sync/driver/model_association_manager.cc
@@ -64,11 +64,6 @@
 void ModelAssociationManager::Initialize(ModelTypeSet desired_types,
                                          ModelTypeSet preferred_types,
                                          const ConfigureContext& context) {
-  // state_ can be INITIALIZED if types are reconfigured when
-  // data is being downloaded, so StartAssociationAsync() is never called for
-  // the first configuration.
-  DCHECK_NE(ASSOCIATING, state_);
-
   // |desired_types| must be a subset of |preferred_types|.
   DCHECK(preferred_types.HasAll(desired_types));
 
@@ -163,7 +158,6 @@
     DataTypeController::StopCallback callback) {
   loaded_types_.Remove(dtc->type());
   associated_types_.Remove(dtc->type());
-  associating_types_.Remove(dtc->type());
 
   DCHECK(error.IsSet() || (dtc->state() != DataTypeController::NOT_RUNNING));
 
@@ -197,39 +191,37 @@
   NotifyDelegateIfReadyForConfigure();
 }
 
-void ModelAssociationManager::StartAssociationAsync(
+void ModelAssociationManager::Associate(
     const ModelTypeSet& types_to_associate) {
   DCHECK_EQ(INITIALIZED, state_);
   DCHECK(notified_about_ready_for_configure_);
 
   DVLOG(1) << "Starting association for "
            << ModelTypeSetToString(types_to_associate);
-  state_ = ASSOCIATING;
 
   requested_types_ = types_to_associate;
 
-  associating_types_ = types_to_associate;
-  associating_types_.RetainAll(desired_types_);
-  associating_types_.RemoveAll(associated_types_);
+  ModelTypeSet associating_types = types_to_associate;
+  associating_types.RetainAll(desired_types_);
+  associating_types.RemoveAll(associated_types_);
 
-  DCHECK(loaded_types_.HasAll(associating_types_));
+  DCHECK(loaded_types_.HasAll(associating_types));
 
   // Assume success.
   configure_status_ = DataTypeManager::OK;
 
-  // Done if no types to associate.
-  if (associating_types_.Empty()) {
-    ModelAssociationDone(INITIALIZED);
-    return;
-  }
-
-  // Associate types that are already loaded in specified order.
+  // Associate types in specified order.
   for (ModelType type : kStartOrder) {
-    if (associating_types_.Has(type) && loaded_types_.Has(type))
-      MarkDataTypeAssociationDone(type);
+    if (associating_types.Has(type)) {
+      associated_types_.Put(type);
+      associating_types.Remove(type);
+
+      if (ProtocolTypes().Has(type))
+        delegate_->OnSingleDataTypeAssociationDone(type);
+    }
   }
-  DCHECK(associating_types_.Empty());
-  DCHECK_NE(ASSOCIATING, state_);
+  DCHECK(associating_types.Empty());
+  ModelAssociationDone(INITIALIZED);
 }
 
 void ModelAssociationManager::Stop(ShutdownReason shutdown_reason) {
@@ -252,15 +244,8 @@
   loaded_types_.Clear();
   associated_types_.Clear();
 
-  if (state_ == ASSOCIATING) {
-    if (configure_status_ == DataTypeManager::OK)
-      configure_status_ = DataTypeManager::ABORTED;
-    ModelAssociationDone(IDLE);
-  } else {
-    DCHECK(associating_types_.Empty());
-    DCHECK(requested_types_.Empty());
-    state_ = IDLE;
-  }
+  DCHECK(requested_types_.Empty());
+  state_ = IDLE;
 }
 
 void ModelAssociationManager::ModelLoadCallback(ModelType type,
@@ -268,8 +253,6 @@
   DVLOG(1) << "ModelAssociationManager: ModelLoadCallback for "
            << ModelTypeToString(type);
 
-  DCHECK(associating_types_.Empty());
-
   if (error.IsSet()) {
     DVLOG(1) << "ModelAssociationManager: Type encountered an error.";
     desired_types_.Remove(type);
@@ -289,50 +272,14 @@
   NotifyDelegateIfReadyForConfigure();
 }
 
-void ModelAssociationManager::MarkDataTypeAssociationDone(ModelType type) {
-  DCHECK_EQ(state_, ASSOCIATING);
-  DCHECK(desired_types_.Has(type));
-  DCHECK(associating_types_.Has(type));
-  DCHECK(loaded_types_.Has(type));
-  DCHECK(!associated_types_.Has(type));
-
-  associated_types_.Put(type);
-  associating_types_.Remove(type);
-
-  if (ProtocolTypes().Has(type))
-    delegate_->OnSingleDataTypeAssociationDone(type);
-
-  if (associating_types_.Empty())
-    ModelAssociationDone(INITIALIZED);
-}
-
 void ModelAssociationManager::ModelAssociationDone(State new_state) {
-  DCHECK_EQ(ASSOCIATING, state_);
-  DCHECK_NE(ASSOCIATING, new_state);
-
   DVLOG(1) << "Model association complete for "
            << ModelTypeSetToString(requested_types_);
 
-  // Treat any unfinished types as having errors.
-  desired_types_.RemoveAll(associating_types_);
-  for (const auto& type_and_dtc : *controllers_) {
-    DataTypeController* dtc = type_and_dtc.second.get();
-    if (associating_types_.Has(dtc->type()) &&
-        dtc->state() != DataTypeController::NOT_RUNNING &&
-        dtc->state() != DataTypeController::STOPPING) {
-      base::UmaHistogramEnumeration("Sync.ConfigureFailed",
-                                    ModelTypeHistogramValue(dtc->type()));
-      StopDatatypeImpl(SyncError(FROM_HERE, SyncError::DATATYPE_ERROR,
-                                 "Association timed out.", dtc->type()),
-                       STOP_SYNC, dtc, base::DoNothing());
-    }
-  }
-
   DataTypeManager::ConfigureResult result(configure_status_, requested_types_);
 
   // Need to reset state before invoking delegate in order to avoid re-entrancy
   // issues (delegate may trigger a reconfiguration).
-  associating_types_.Clear();
   requested_types_.Clear();
   state_ = new_state;
 
diff --git a/components/sync/driver/model_association_manager.h b/components/sync/driver/model_association_manager.h
index c5116214..0745656 100644
--- a/components/sync/driver/model_association_manager.h
+++ b/components/sync/driver/model_association_manager.h
@@ -54,17 +54,6 @@
 // should disappear or be refactored.
 class ModelAssociationManager {
  public:
-  enum State {
-    // No configuration is in progress.
-    IDLE,
-    // The model association manager has been initialized with a set of desired
-    // types, but is not actively associating any.
-    INITIALIZED,
-    // One or more types from |desired_types_| are in the process of
-    // associating.
-    ASSOCIATING,
-  };
-
   ModelAssociationManager(const DataTypeController::TypeMap* controllers,
                           ModelAssociationManagerDelegate* delegate);
   virtual ~ModelAssociationManager();
@@ -73,8 +62,8 @@
   // loading of all |desired_types|. A subsequent Initialize() call is only
   // allowed after the ModelAssociationManager has invoked
   // OnModelAssociationDone() on the delegate. After this call, there should be
-  // several calls to StartAssociationAsync() to associate subsets of
-  // |desired_types|, which itself must be a subset of |preferred_types|.
+  // several calls to Associate() to associate subsets of |desired_types|, which
+  // itself must be a subset of |preferred_types|.
   // |preferred_types| contains all types selected by the user.
   void Initialize(ModelTypeSet desired_types,
                   ModelTypeSet preferred_types,
@@ -86,8 +75,8 @@
   // Must only be called after all data type models have been loaded, i.e. after
   // OnAllDataTypesReadyForConfigure() has been called on the delegate.
   // |types_to_associate| should be subset of |desired_types| in Initialize().
-  // When this is completed, |OnModelAssociationDone| will be invoked.
-  void StartAssociationAsync(const ModelTypeSet& types_to_associate);
+  // Synchronously invokes |OnModelAssociationDone| on the delegate.
+  void Associate(const ModelTypeSet& types_to_associate);
 
   // Stops an individual datatype |type| for |shutdown_reason|. |error| must be
   // an actual error (i.e. not UNSET).
@@ -95,9 +84,15 @@
                     ShutdownReason shutdown_reason,
                     SyncError error);
 
-  State state() const { return state_; }
-
  private:
+  enum State {
+    // No configuration is in progress.
+    IDLE,
+    // The model association manager has been initialized with a set of desired
+    // types.
+    INITIALIZED,
+  };
+
   // Start loading non-running types that are in |desired_types_|.
   void LoadDesiredTypes();
 
@@ -105,8 +100,6 @@
   // This callback is passed to |LoadModels| function.
   void ModelLoadCallback(ModelType type, const SyncError& error);
 
-  void MarkDataTypeAssociationDone(ModelType type);
-
   // Called when all requested types are associated or association times out.
   // Will clean up any unfinished types, and update |state_| to be |new_state|
   // Finally, it will notify |delegate_| of the configuration result.
@@ -140,10 +133,6 @@
   // ASSOCIATING.
   ModelTypeSet requested_types_;
 
-  // Data types currently being associated, including types still waiting for
-  // model load. Non-empty iff |state_| is ASSOCIATING.
-  ModelTypeSet associating_types_;
-
   // Data types that are loaded, i.e. ready to associate.
   ModelTypeSet loaded_types_;
 
diff --git a/components/sync/driver/model_association_manager_unittest.cc b/components/sync/driver/model_association_manager_unittest.cc
index d6a3b2e3..cf059be 100644
--- a/components/sync/driver/model_association_manager_unittest.cc
+++ b/components/sync/driver/model_association_manager_unittest.cc
@@ -107,7 +107,7 @@
             DataTypeController::MODEL_LOADED);
   EXPECT_EQ(GetController(APPS)->state(), DataTypeController::MODEL_LOADED);
 
-  model_association_manager.StartAssociationAsync(types);
+  model_association_manager.Associate(types);
 }
 
 // Start a type, let it finish and then call stop.
@@ -123,7 +123,7 @@
   model_association_manager.Initialize(/*desired_types=*/types,
                                        /*preferred_types=*/types,
                                        BuildConfigureContext());
-  model_association_manager.StartAssociationAsync(types);
+  model_association_manager.Associate(types);
 
   ASSERT_EQ(GetController(BOOKMARKS)->state(),
             DataTypeController::MODEL_LOADED);
@@ -151,7 +151,7 @@
                                        BuildConfigureContext());
 
   EXPECT_EQ(DataTypeController::FAILED, GetController(BOOKMARKS)->state());
-  model_association_manager.StartAssociationAsync(types);
+  model_association_manager.Associate(types);
   EXPECT_EQ(DataTypeController::FAILED, GetController(BOOKMARKS)->state());
 }
 
@@ -167,7 +167,7 @@
   model_association_manager.Initialize(/*desired_types=*/types,
                                        /*preferred_types=*/types,
                                        BuildConfigureContext());
-  model_association_manager.StartAssociationAsync(types);
+  model_association_manager.Associate(types);
 
   ASSERT_EQ(GetController(BOOKMARKS)->state(),
             DataTypeController::MODEL_LOADED);
@@ -389,7 +389,7 @@
 
   model_association_manager.Initialize(desired_types, preferred_types,
                                        BuildConfigureContext());
-  model_association_manager.StartAssociationAsync(desired_types);
+  model_association_manager.Associate(desired_types);
 
   ASSERT_EQ(GetController(BOOKMARKS)->state(),
             DataTypeController::MODEL_LOADED);
@@ -429,7 +429,7 @@
 
   model_association_manager.Initialize(desired_types, preferred_types,
                                        BuildConfigureContext());
-  model_association_manager.StartAssociationAsync(desired_types);
+  model_association_manager.Associate(desired_types);
 
   ASSERT_EQ(GetController(BOOKMARKS)->state(),
             DataTypeController::MODEL_LOADED);
@@ -476,7 +476,7 @@
 
   model_association_manager.Initialize(desired_types, preferred_types,
                                        configure_context);
-  model_association_manager.StartAssociationAsync(desired_types);
+  model_association_manager.Associate(desired_types);
 
   ASSERT_EQ(GetController(BOOKMARKS)->state(),
             DataTypeController::MODEL_LOADED);
@@ -498,7 +498,7 @@
 
   model_association_manager.Initialize(desired_types, preferred_types,
                                        configure_context);
-  model_association_manager.StartAssociationAsync(desired_types);
+  model_association_manager.Associate(desired_types);
 
   ASSERT_EQ(GetController(BOOKMARKS)->state(),
             DataTypeController::MODEL_LOADED);
@@ -532,7 +532,7 @@
 
   model_association_manager.Initialize(desired_types, preferred_types,
                                        configure_context);
-  model_association_manager.StartAssociationAsync(desired_types);
+  model_association_manager.Associate(desired_types);
 
   ASSERT_EQ(GetController(BOOKMARKS)->state(),
             DataTypeController::MODEL_LOADED);
@@ -554,7 +554,7 @@
 
   model_association_manager.Initialize(desired_types, preferred_types,
                                        configure_context);
-  model_association_manager.StartAssociationAsync(desired_types);
+  model_association_manager.Associate(desired_types);
 
   ASSERT_EQ(GetController(BOOKMARKS)->state(),
             DataTypeController::MODEL_LOADED);
diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn
index e181d51..473f508 100644
--- a/content/browser/BUILD.gn
+++ b/content/browser/BUILD.gn
@@ -605,6 +605,8 @@
     "child_process_security_policy_impl.h",
     "client_hints/client_hints.cc",
     "client_hints/client_hints.h",
+    "client_hints/critical_client_hints_throttle.cc",
+    "client_hints/critical_client_hints_throttle.h",
     "cocoa/system_hotkey_map.h",
     "cocoa/system_hotkey_map.mm",
     "code_cache/generated_code_cache.cc",
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 13c12b0..3b3d392b 100644
--- a/content/browser/accessibility/ax_platform_node_textrangeprovider_win_browsertest.cc
+++ b/content/browser/accessibility/ax_platform_node_textrangeprovider_win_browsertest.cc
@@ -2719,4 +2719,44 @@
   }
 }
 
+IN_PROC_BROWSER_TEST_F(AXPlatformNodeTextRangeProviderWinBrowserTest,
+                       GetAttributeValueNormalizesClonedRange) {
+  LoadInitialAccessibilityTreeFromHtml(
+      R"HTML(<!DOCTYPE html>
+      <html>
+        <body>
+          <p>Text before list</p>
+          <div role="listbox">
+            <div role="option"><i aria-hidden="true">i</i>One</div>
+          </div>
+        </body>
+      </html>)HTML");
+
+  BrowserAccessibility* text_before_list =
+      FindNode(ax::mojom::Role::kStaticText, "Text before list");
+  ASSERT_NE(nullptr, text_before_list);
+
+  ComPtr<ITextRangeProvider> text_range_provider;
+  GetTextRangeProviderFromTextNode(*text_before_list, &text_range_provider);
+  ASSERT_NE(nullptr, text_range_provider.Get());
+
+  EXPECT_UIA_MOVE(text_range_provider, TextUnit_Format,
+                  /*count*/ 1,
+                  /*expected_text*/ L"\nOne",
+                  /*expected_count*/ 1);
+
+  // GetAttributeValue calls NormalizeTextRange but should not modify the
+  // internal endpoints. However, the value returned by GetAttributeValue should
+  // still be computed from a normalized range.
+  base::win::ScopedVariant value;
+  EXPECT_HRESULT_SUCCEEDED(text_range_provider->GetAttributeValue(
+      UIA_IsItalicAttributeId, value.Receive()));
+  EXPECT_EQ(value.type(), VT_BOOL);
+  EXPECT_EQ(V_BOOL(value.ptr()), 0);
+
+  // The text should be the same as before since the internal endpoints didn't
+  // move.
+  EXPECT_UIA_TEXTRANGE_EQ(text_range_provider, L"\nOne");
+}
+
 }  // namespace content
diff --git a/content/browser/browser_interface_binders.cc b/content/browser/browser_interface_binders.cc
index a861ccf..8d982d1d 100644
--- a/content/browser/browser_interface_binders.cc
+++ b/content/browser/browser_interface_binders.cc
@@ -777,6 +777,10 @@
   }
   map->Add<media::mojom::SpeechRecognitionContext>(base::BindRepeating(
       &EmptyBinderForFrame<media::mojom::SpeechRecognitionContext>));
+  map->Add<media::mojom::SpeechRecognitionClientBrowserInterface>(
+      base::BindRepeating(
+          &EmptyBinderForFrame<
+              media::mojom::SpeechRecognitionClientBrowserInterface>));
 #endif
 #if BUILDFLAG(ENABLE_UNHANDLED_TAP)
   map->Add<blink::mojom::UnhandledTapNotifier>(base::BindRepeating(
diff --git a/content/browser/browser_url_handler_impl.cc b/content/browser/browser_url_handler_impl.cc
index 7cfd8f5..35a7b788 100644
--- a/content/browser/browser_url_handler_impl.cc
+++ b/content/browser/browser_url_handler_impl.cc
@@ -6,6 +6,7 @@
 
 #include <stddef.h>
 
+#include "base/ranges/algorithm.h"
 #include "base/stl_util.h"
 #include "base/strings/string_util.h"
 #include "content/browser/renderer_host/debug_urls.h"
@@ -92,8 +93,7 @@
   return base::Singleton<BrowserURLHandlerImpl>::get();
 }
 
-BrowserURLHandlerImpl::BrowserURLHandlerImpl() :
-    fixup_handler_(nullptr) {
+BrowserURLHandlerImpl::BrowserURLHandlerImpl() {
   AddHandlerPair(&DebugURLHandler, BrowserURLHandlerImpl::null_handler());
 
   // view-source: should take precedence over other rewriters, so it's
@@ -106,11 +106,6 @@
 BrowserURLHandlerImpl::~BrowserURLHandlerImpl() {
 }
 
-void BrowserURLHandlerImpl::SetFixupHandler(URLHandler handler) {
-  DCHECK(fixup_handler_ == nullptr);
-  fixup_handler_ = handler;
-}
-
 void BrowserURLHandlerImpl::AddHandlerPair(URLHandler handler,
                                            URLHandler reverse_handler) {
   url_handlers_.push_back(HandlerPair(handler, reverse_handler));
@@ -142,13 +137,6 @@
   return rewrites;
 }
 
-void BrowserURLHandlerImpl::FixupURLBeforeRewrite(
-    GURL* url,
-    BrowserContext* browser_context) {
-  if (fixup_handler_)
-    fixup_handler_(url, browser_context);
-}
-
 void BrowserURLHandlerImpl::RewriteURLIfNecessary(
     GURL* url,
     BrowserContext* browser_context,
@@ -190,8 +178,11 @@
   return false;
 }
 
-void BrowserURLHandlerImpl::SetFixupHandlerForTesting(URLHandler handler) {
-  fixup_handler_ = handler;
+void BrowserURLHandlerImpl::RemoveHandlerForTesting(URLHandler handler) {
+  const auto it =
+      base::ranges::find(url_handlers_, handler, &HandlerPair::first);
+  DCHECK(url_handlers_.end() != it);
+  url_handlers_.erase(it);
 }
 
 }  // namespace content
diff --git a/content/browser/browser_url_handler_impl.h b/content/browser/browser_url_handler_impl.h
index 1823ec6..308d39f6 100644
--- a/content/browser/browser_url_handler_impl.h
+++ b/content/browser/browser_url_handler_impl.h
@@ -29,12 +29,8 @@
   std::vector<GURL> GetPossibleRewrites(
       const GURL& url,
       BrowserContext* browser_context) override;
-  void SetFixupHandler(URLHandler handler) override;
   void AddHandlerPair(URLHandler handler, URLHandler reverse_handler) override;
 
-  // Fixes up the URL before rewriting occurs.
-  void FixupURLBeforeRewrite(GURL* url, BrowserContext* browser_context);
-
   // Like the //content-public RewriteURLIfNecessary overload (overridden
   // above), but if the original URL needs to be adjusted if the modified URL is
   // redirected, this method sets |*reverse_on_redirect| to true.
@@ -46,9 +42,8 @@
   bool ReverseURLRewrite(GURL* url, const GURL& original,
                          BrowserContext* browser_context);
 
-  // Sets the fixup handler during tests. Unlike |SetFixupHandler|, this can be
-  // called multiple time during tests.
-  void SetFixupHandlerForTesting(URLHandler handler);
+  // Reverses |AddHandlerPair| for the given |handler|.
+  void RemoveHandlerForTesting(URLHandler handler);
 
  private:
   // This object is a singleton:
@@ -56,9 +51,6 @@
   ~BrowserURLHandlerImpl() override;
   friend struct base::DefaultSingletonTraits<BrowserURLHandlerImpl>;
 
-  // A URLHandler to run in a preliminary phase, before rewriting is done.
-  URLHandler fixup_handler_;
-
   // The list of known URLHandlers, optionally with reverse-rewriters.
   typedef std::pair<URLHandler, URLHandler> HandlerPair;
   std::vector<HandlerPair> url_handlers_;
diff --git a/content/browser/client_hints/client_hints.cc b/content/browser/client_hints/client_hints.cc
index 41282852..24b2ac66 100644
--- a/content/browser/client_hints/client_hints.cc
+++ b/content/browser/client_hints/client_hints.cc
@@ -421,10 +421,8 @@
   bool is_1p_origin = false;
 };
 
-bool ShouldAddClientHint(const ClientHintsExtendedData& data,
+bool IsClientHintAllowed(const ClientHintsExtendedData& data,
                          network::mojom::WebClientHintsType type) {
-  if (!blink::IsClientHintSentByDefault(type) && !data.hints.IsEnabled(type))
-    return false;
   if (!IsFeaturePolicyForClientHintsEnabled() || data.is_main_frame)
     return data.is_1p_origin;
   return data.feature_policy &&
@@ -433,24 +431,19 @@
              data.resource_origin);
 }
 
+bool ShouldAddClientHint(const ClientHintsExtendedData& data,
+                         network::mojom::WebClientHintsType type) {
+  if (!blink::IsClientHintSentByDefault(type) && !data.hints.IsEnabled(type))
+    return false;
+  return IsClientHintAllowed(data, type);
+}
+
 bool IsJavascriptEnabled(FrameTreeNode* frame_tree_node) {
   return WebContents::FromRenderFrameHost(frame_tree_node->current_frame_host())
       ->GetOrCreateWebPreferences()
       .javascript_enabled;
 }
 
-bool ShouldAddClientHints(const GURL& url,
-                          bool javascript_enabled,
-                          ClientHintsControllerDelegate* delegate) {
-  // Client hints should only be enabled when JavaScript is enabled. Platforms
-  // which enable/disable JavaScript on a per-origin basis should implement
-  // IsJavaScriptAllowed to check a given origin. Other platforms (Android
-  // WebView) enable/disable JavaScript on a per-View basis, using the
-  // WebPreferences setting.
-  return IsValidURLForClientHints(url) && delegate->IsJavaScriptAllowed(url) &&
-         javascript_enabled;
-}
-
 // Captures when UpdateNavigationRequestClientUaHeadersImpl() is being called.
 enum class ClientUaHeaderCallType {
   // The call is happening during creation of the NavigationRequest.
@@ -562,6 +555,18 @@
 
 }  // namespace
 
+bool ShouldAddClientHints(const GURL& url,
+                          FrameTreeNode* frame_tree_node,
+                          ClientHintsControllerDelegate* delegate) {
+  // Client hints should only be enabled when JavaScript is enabled. Platforms
+  // which enable/disable JavaScript on a per-origin basis should implement
+  // IsJavaScriptAllowed to check a given origin. Other platforms (Android
+  // WebView) enable/disable JavaScript on a per-View basis, using the
+  // WebPreferences setting.
+  return IsValidURLForClientHints(url) && delegate->IsJavaScriptAllowed(url) &&
+         IsJavascriptEnabled(frame_tree_node);
+}
+
 unsigned long RoundRttForTesting(const std::string& host,
                                  const base::Optional<base::TimeDelta>& rtt) {
   return RoundRtt(host, rtt);
@@ -579,8 +584,7 @@
     FrameTreeNode* frame_tree_node,
     net::HttpRequestHeaders* headers) {
   if (!delegate->UserAgentClientHintEnabled() ||
-      !ShouldAddClientHints(url, IsJavascriptEnabled(frame_tree_node),
-                            delegate)) {
+      !ShouldAddClientHints(url, frame_tree_node, delegate)) {
     return;
   }
 
@@ -603,8 +607,7 @@
             static_cast<size_t>(net::EFFECTIVE_CONNECTION_TYPE_LAST));
   DCHECK(context);
 
-  if (!ShouldAddClientHints(url, IsJavascriptEnabled(frame_tree_node),
-                            delegate)) {
+  if (!ShouldAddClientHints(url, frame_tree_node, delegate)) {
     return;
   }
 
@@ -711,6 +714,7 @@
 
   delegate->PersistClientHints(url::Origin::Create(url), parsed.value(),
                                persist_duration);
+
   return parsed;
 }
 
@@ -719,8 +723,7 @@
                         ClientHintsControllerDelegate* delegate,
                         FrameTreeNode* frame_tree_node) {
   std::vector<::network::mojom::WebClientHintsType> result;
-  if (!ShouldAddClientHints(url, IsJavascriptEnabled(frame_tree_node),
-                            delegate)) {
+  if (!ShouldAddClientHints(url, frame_tree_node, delegate)) {
     return result;
   }
 
@@ -735,4 +738,22 @@
   return result;
 }
 
+bool AreCriticalHintsMissing(
+    const GURL& url,
+    FrameTreeNode* frame_tree_node,
+    ClientHintsControllerDelegate* delegate,
+    const std::vector<network::mojom::WebClientHintsType>& critical_hints) {
+  ClientHintsExtendedData data(url, frame_tree_node, delegate);
+
+  // Note: these only check for per-hint origin/feature policy settings, not
+  // origin-level or "browser-level" policies like disabiling JS or other
+  // features.
+  for (auto hint : critical_hints) {
+    if (IsClientHintAllowed(data, hint) && !ShouldAddClientHint(data, hint))
+      return true;
+  }
+
+  return false;
+}
+
 }  // namespace content
diff --git a/content/browser/client_hints/client_hints.h b/content/browser/client_hints/client_hints.h
index c3c981b..99938e0 100644
--- a/content/browser/client_hints/client_hints.h
+++ b/content/browser/client_hints/client_hints.h
@@ -12,10 +12,17 @@
 #include "net/http/http_request_headers.h"
 #include "services/network/public/mojom/parsed_headers.mojom-forward.h"
 
+namespace content {
+
 class BrowserContext;
 class FrameTreeNode;
 
-namespace content {
+// Returns whether client hints can be added for the given URL and frame. This
+// is true only if the URL is eligible and JavaScript is enabled.
+CONTENT_EXPORT bool ShouldAddClientHints(
+    const GURL& url,
+    FrameTreeNode* frame_tree_node,
+    ClientHintsControllerDelegate* delegate);
 
 // Returns |rtt| after adding host-specific random noise, and rounding it as
 // per the NetInfo spec to improve privacy.
@@ -30,6 +37,16 @@
     const std::string& host,
     const base::Optional<int32_t>& downlink_kbps);
 
+// Returns true if there is a hint in |critical_hints| that would be sent (i.e.
+// not blocked by browser or origin level preferences like disabled JavaScript
+// or Feature/Permission Policy) but is not currently in the client hint
+// storage.
+CONTENT_EXPORT bool AreCriticalHintsMissing(
+    const GURL& url,
+    FrameTreeNode* frame_tree_node,
+    ClientHintsControllerDelegate* delegate,
+    const std::vector<network::mojom::WebClientHintsType>& critical_hints);
+
 // Updates the user agent client hint headers. This is called if the value of
 // |override_ua| changes after the NavigationRequest was created.
 CONTENT_EXPORT void UpdateNavigationRequestClientUaHeaders(
@@ -47,11 +64,11 @@
     bool is_ua_override_on,
     FrameTreeNode*);
 
-// Parses incoming client hints and persists them as appropriate. Returns hints
-// that were accepted as enabled even if they are not going to be persisted. The
-// distinction is relevant in legacy case where feature policy is off and there
-// is no valid Accept-CH-Lifetime, where the header still applies locally within
-// frame.
+// Parses incoming client hints and persists them as appropriate. Returns
+// hints that were accepted as enabled even if they are not going to be
+// persisted. The distinction is relevant in legacy case where feature policy
+// is off and there is no valid Accept-CH-Lifetime, where the header still
+// applies locally within frame.
 CONTENT_EXPORT base::Optional<std::vector<network::mojom::WebClientHintsType>>
 ParseAndPersistAcceptCHForNagivation(
     const GURL& url,
diff --git a/content/browser/client_hints/critical_client_hints_throttle.cc b/content/browser/client_hints/critical_client_hints_throttle.cc
new file mode 100644
index 0000000..1d57fb7
--- /dev/null
+++ b/content/browser/client_hints/critical_client_hints_throttle.cc
@@ -0,0 +1,93 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "content/browser/client_hints/critical_client_hints_throttle.h"
+
+#include "base/feature_list.h"
+#include "base/metrics/histogram_macros.h"
+#include "content/browser/client_hints/client_hints.h"
+#include "content/browser/renderer_host/frame_tree_node.h"
+#include "content/browser/renderer_host/navigation_request.h"
+#include "content/public/browser/browser_context.h"
+#include "content/public/browser/client_hints_controller_delegate.h"
+#include "content/public/browser/content_browser_client.h"
+#include "content/public/common/content_client.h"
+#include "content/public/common/content_features.h"
+#include "net/http/http_util.h"
+#include "services/network/public/cpp/client_hints.h"
+#include "services/network/public/mojom/parsed_headers.mojom-forward.h"
+#include "services/network/public/mojom/url_response_head.mojom.h"
+#include "third_party/blink/public/common/loader/url_loader_throttle.h"
+#include "third_party/blink/public/platform/web_client_hints_type.h"
+
+namespace {
+
+void LogCriticalCHStatus(CriticalCHRestart status) {
+  UMA_HISTOGRAM_ENUMERATION("ClientHints.CriticalCHRestart", status);
+}
+
+}  // namespace
+
+namespace content {
+
+CriticalClientHintsThrottle::CriticalClientHintsThrottle(
+    BrowserContext* context,
+    ClientHintsControllerDelegate* client_hint_delegate,
+    int frame_tree_node_id)
+    : context_(context),
+      client_hint_delegate_(client_hint_delegate),
+      frame_tree_node_id_(frame_tree_node_id) {
+  LogCriticalCHStatus(CriticalCHRestart::kNavigationStarted);
+}
+
+void CriticalClientHintsThrottle::WillProcessResponse(
+    const GURL& response_url,
+    network::mojom::URLResponseHead* response_head,
+    bool* defer) {
+  if (redirected_)
+    return;
+
+  if (!response_head->parsed_headers ||
+      !response_head->parsed_headers->accept_ch ||
+      !response_head->parsed_headers->critical_ch)
+    return;
+
+  // Ensure that only hints in the accept-ch header are examined
+  blink::WebEnabledClientHints hints;
+
+  for (const auto& hint : response_head->parsed_headers->accept_ch.value())
+    hints.SetIsEnabled(hint, true);
+
+  std::vector<network::mojom::WebClientHintsType> critical_hints;
+  for (const auto& hint : response_head->parsed_headers->critical_ch.value())
+    if (hints.IsEnabled(hint))
+      critical_hints.push_back(hint);
+
+  if (critical_hints.empty())
+    return;
+
+  LogCriticalCHStatus(CriticalCHRestart::kHeaderPresent);
+
+  FrameTreeNode* frame_tree_node =
+      FrameTreeNode::GloballyFindByID(frame_tree_node_id_);
+
+  if (AreCriticalHintsMissing(response_url, frame_tree_node,
+                              client_hint_delegate_, critical_hints)) {
+    redirected_ = true;
+    auto parsed = ParseAndPersistAcceptCHForNagivation(
+        response_url, response_head->parsed_headers, context_,
+        client_hint_delegate_, frame_tree_node);
+
+    net::HttpRequestHeaders modified_headers;
+    AddNavigationRequestClientHintsHeaders(
+        response_url, &modified_headers, context_, client_hint_delegate_,
+        frame_tree_node->navigation_request()->GetIsOverridingUserAgent(),
+        frame_tree_node);
+
+    LogCriticalCHStatus(CriticalCHRestart::kNavigationRestarted);
+
+    delegate_->RestartWithModifiedHeadersNow(modified_headers);
+  }
+}
+}  // namespace content
diff --git a/content/browser/client_hints/critical_client_hints_throttle.h b/content/browser/client_hints/critical_client_hints_throttle.h
new file mode 100644
index 0000000..995943b
--- /dev/null
+++ b/content/browser/client_hints/critical_client_hints_throttle.h
@@ -0,0 +1,55 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CONTENT_BROWSER_CLIENT_HINTS_CRITICAL_CLIENT_HINTS_THROTTLE_H_
+#define CONTENT_BROWSER_CLIENT_HINTS_CRITICAL_CLIENT_HINTS_THROTTLE_H_
+
+#include "services/network/public/mojom/url_response_head.mojom.h"
+#include "third_party/blink/public/common/loader/url_loader_throttle.h"
+
+namespace {
+
+// These values are persisted to logs. Entries should not be renumbered and
+// numeric values should never be reused.
+enum class CriticalCHRestart {
+  kNavigationStarted = 0,
+  kHeaderPresent = 1,
+  kNavigationRestarted = 2,
+  kMaxValue = kNavigationRestarted,
+};
+
+}  // namespace
+
+namespace content {
+
+class BrowserContext;
+class ClientHintsControllerDelegate;
+
+class CriticalClientHintsThrottle : public blink::URLLoaderThrottle {
+ public:
+  CriticalClientHintsThrottle(
+      BrowserContext* context,
+
+      ClientHintsControllerDelegate* client_hint_delegate,
+      int frame_tree_node_id);
+  ~CriticalClientHintsThrottle() override = default;
+
+  void WillProcessResponse(const GURL& response_url,
+                           network::mojom::URLResponseHead* response_head,
+                           bool* defer) override;
+
+ private:
+  BrowserContext* context_;
+  ClientHintsControllerDelegate* client_hint_delegate_;
+  int frame_tree_node_id_;
+  // This ensures the navigation doesn't turn into an infinite loop (this
+  // object should stay alive until the navigation is committed). On finding a
+  // critical client hint is missing, the throttle instigates an internal
+  // redirect.
+  bool redirected_ = false;
+};
+
+}  // namespace content
+
+#endif  // CONTENT_BROWSER_CLIENT_HINTS_CRITICAL_CLIENT_HINTS_THROTTLE_H_
diff --git a/content/browser/loader/url_loader_throttles.cc b/content/browser/loader/url_loader_throttles.cc
index 84a1360..9054694 100644
--- a/content/browser/loader/url_loader_throttles.cc
+++ b/content/browser/loader/url_loader_throttles.cc
@@ -4,11 +4,23 @@
 
 #include "content/public/browser/url_loader_throttles.h"
 
+#include "base/feature_list.h"
 #include "components/variations/net/omnibox_url_loader_throttle.h"
 #include "components/variations/net/variations_url_loader_throttle.h"
+#include "content/browser/client_hints/client_hints.h"
+#include "content/browser/client_hints/critical_client_hints_throttle.h"
+#include "content/browser/renderer_host/frame_tree_node.h"
+#include "content/browser/renderer_host/navigation_request.h"
 #include "content/public/browser/browser_context.h"
+#include "content/public/browser/client_hints_controller_delegate.h"
 #include "content/public/browser/content_browser_client.h"
 #include "content/public/common/content_client.h"
+#include "content/public/common/content_features.h"
+#include "net/base/load_flags.h"
+#include "net/http/http_util.h"
+#include "services/network/public/cpp/client_hints.h"
+#include "services/network/public/mojom/parsed_headers.mojom-forward.h"
+#include "services/network/public/mojom/url_response_head.mojom.h"
 #include "third_party/blink/public/common/loader/url_loader_throttle.h"
 
 namespace content {
@@ -30,6 +42,18 @@
   // browser side, and we might be fine with Owner::kUnknown.
   variations::VariationsURLLoaderThrottle::AppendThrottleIfNeeded(
       browser_context->GetVariationsClient(), &throttles);
+
+  ClientHintsControllerDelegate* client_hint_delegate =
+      browser_context->GetClientHintsControllerDelegate();
+  if (base::FeatureList::IsEnabled(features::kFeaturePolicyForClientHints) &&
+      base::FeatureList::IsEnabled(features::kCriticalClientHint) &&
+      request.is_main_frame && client_hint_delegate &&
+      ShouldAddClientHints(request.url,
+                           FrameTreeNode::GloballyFindByID(frame_tree_node_id),
+                           client_hint_delegate)) {
+    throttles.push_back(std::make_unique<CriticalClientHintsThrottle>(
+        browser_context, client_hint_delegate, frame_tree_node_id));
+  }
   return throttles;
 }
 
diff --git a/content/browser/renderer_host/navigation_controller_impl.cc b/content/browser/renderer_host/navigation_controller_impl.cc
index 81eb6e0..b3b86c8 100644
--- a/content/browser/renderer_host/navigation_controller_impl.cc
+++ b/content/browser/renderer_host/navigation_controller_impl.cc
@@ -357,17 +357,11 @@
                              GURL* url_to_load,
                              GURL* virtual_url,
                              bool* reverse_on_redirect) {
-  // Fix up the given URL before letting it be rewritten, so that any minor
-  // cleanup (e.g., removing leading dots) will not lead to a virtual URL.
-  *virtual_url = original_url;
-  BrowserURLHandlerImpl::GetInstance()->FixupURLBeforeRewrite(virtual_url,
-                                                              browser_context);
-
   // Allow the browser URL handler to rewrite the URL. This will, for example,
   // remove "view-source:" from the beginning of the URL to get the URL that
   // will actually be loaded. This real URL won't be shown to the user, just
   // used internally.
-  *url_to_load = *virtual_url;
+  *url_to_load = *virtual_url = original_url;
   BrowserURLHandlerImpl::GetInstance()->RewriteURLIfNecessary(
       url_to_load, browser_context, reverse_on_redirect);
 }
diff --git a/content/browser/renderer_host/navigation_controller_impl_browsertest.cc b/content/browser/renderer_host/navigation_controller_impl_browsertest.cc
index ad539bd..a99baeb0 100644
--- a/content/browser/renderer_host/navigation_controller_impl_browsertest.cc
+++ b/content/browser/renderer_host/navigation_controller_impl_browsertest.cc
@@ -6975,15 +6975,10 @@
 // See https://crbug.com/628677.
 // Crashes/fails inconsistently on windows and ChromeOS:
 // https://crbug.com/783806.
-#if defined(OS_WIN) || defined(OS_CHROMEOS)
-#define MAYBE_EnsureFrameNavigationEntriesClearedOnMismatch \
-  DISABLED_EnsureFrameNavigationEntriesClearedOnMismatch
-#else
-#define MAYBE_EnsureFrameNavigationEntriesClearedOnMismatch \
-  EnsureFrameNavigationEntriesClearedOnMismatch
-#endif
+// Flaky on every platforms:
+// https://crbug.com/765107#c15
 IN_PROC_BROWSER_TEST_P(NavigationControllerBrowserTest,
-                       MAYBE_EnsureFrameNavigationEntriesClearedOnMismatch) {
+                       DISABLED_EnsureFrameNavigationEntriesClearedOnMismatch) {
   WebContentsImpl* web_contents =
       static_cast<WebContentsImpl*>(shell()->web_contents());
   NavigationControllerImpl& controller = web_contents->GetController();
diff --git a/content/browser/renderer_host/navigation_controller_impl_unittest.cc b/content/browser/renderer_host/navigation_controller_impl_unittest.cc
index 3113294..5b6297c 100644
--- a/content/browser/renderer_host/navigation_controller_impl_unittest.cc
+++ b/content/browser/renderer_host/navigation_controller_impl_unittest.cc
@@ -4365,8 +4365,8 @@
   const GURL kSrcDoc("about:srcdoc");
 
   // First, set up a handler that will rewrite srcdoc urls.
-  BrowserURLHandlerImpl::GetInstance()->SetFixupHandlerForTesting(
-      &SrcDocRewriter);
+  BrowserURLHandlerImpl::GetInstance()->AddHandlerPair(
+      &SrcDocRewriter, BrowserURLHandler::null_handler());
 
   // Simulate navigating to a page that has a subframe.
   NavigationSimulator::NavigateAndCommitFromDocument(kUrl1, main_test_rfh());
@@ -4386,7 +4386,8 @@
       "GET", nullptr, "", nullptr, base::nullopt);
 
   // Clean up the handler.
-  BrowserURLHandlerImpl::GetInstance()->SetFixupHandlerForTesting(nullptr);
+  BrowserURLHandlerImpl::GetInstance()->RemoveHandlerForTesting(
+      &SrcDocRewriter);
 }
 
 // Test that if an empty WebContents is navigated via frame proxy with
diff --git a/content/browser/renderer_host/navigation_request.cc b/content/browser/renderer_host/navigation_request.cc
index 1020a458..04c748c 100644
--- a/content/browser/renderer_host/navigation_request.cc
+++ b/content/browser/renderer_host/navigation_request.cc
@@ -2113,9 +2113,10 @@
   ssl_info_ = response_head_->ssl_info;
   auth_challenge_info_ = response_head_->auth_challenge_info;
 
-  is_loaded_from_mhtml_archive_ = GetMimeType() == "multipart/related" ||
-                                  GetMimeType() == "message/rfc822" ||
-                                  IsForMhtmlSubframe();
+  bool is_mhtml_archive = response_head_->mime_type == "multipart/related" ||
+                          response_head_->mime_type == "message/rfc822";
+
+  is_loaded_from_mhtml_archive_ = is_mhtml_archive || IsForMhtmlSubframe();
 
   ComputeSandboxFlagsToCommit();
 
@@ -2193,6 +2194,18 @@
     }
   }
 
+  // MHTML document can't be framed into non-MHTML document (and vice versa).
+  // The full page must load from the MHTML archive or none of it.
+  if (is_mhtml_archive && !IsInMainFrame()) {
+    OnRequestFailedInternal(
+        network::URLLoaderCompletionStatus(net::ERR_BLOCKED_BY_RESPONSE),
+        false /* skip_throttles */, base::nullopt /* error_page_contnet */,
+        false /* collapse_frame */);
+    // DO NOT ADD CODE after this. The previous call to
+    // OnRequestFailedInternal has destroyed the NavigationRequest.
+    return;
+  }
+
   // TODO(clamy): When we are able to compute the origin of a response in the
   // browser process, we should use the computed origin instead of extracting it
   // from the response URL.
diff --git a/content/browser/sms/sms_browsertest.cc b/content/browser/sms/sms_browsertest.cc
index ec2e231..3b45ee0 100644
--- a/content/browser/sms/sms_browsertest.cc
+++ b/content/browser/sms/sms_browsertest.cc
@@ -40,6 +40,7 @@
 class SmsBrowserTest : public ContentBrowserTest {
  public:
   using Entry = ukm::builders::SMSReceiver;
+  using FailureType = SmsFetcher::FailureType;
 
   SmsBrowserTest() = default;
   ~SmsBrowserTest() override = default;
@@ -808,6 +809,114 @@
   EXPECT_TRUE(render_frame_host->DocumentUsedWebOTP());
 }
 
+IN_PROC_BROWSER_TEST_F(SmsBrowserTest, RecordTimeoutAsOutcome) {
+  GURL url = GetTestUrl(nullptr, "simple_page.html");
+  EXPECT_TRUE(NavigateToURL(shell(), url));
+
+  auto provider = std::make_unique<MockSmsProvider>();
+  MockSmsProvider* mock_provider_ptr = provider.get();
+  BrowserMainLoop::GetInstance()->SetSmsProviderForTesting(std::move(provider));
+
+  shell()->web_contents()->SetDelegate(&delegate_);
+
+  EXPECT_CALL(*mock_provider_ptr, Retrieve(_))
+      .WillOnce(Invoke([&mock_provider_ptr]() {
+        mock_provider_ptr->NotifyFailure(FailureType::kPromptTimeout);
+      }));
+
+  EXPECT_TRUE(ExecJs(shell(), R"(
+       navigator.credentials.get({otp: {transport: ["sms"]}});
+     )"));
+
+  base::RunLoop ukm_loop;
+
+  // Wait for UKM to be recorded to avoid race condition between outcome
+  // capture and evaluation.
+  ukm_recorder()->SetOnAddEntryCallback(Entry::kEntryName,
+                                        ukm_loop.QuitClosure());
+
+  ukm_loop.Run();
+
+  ExpectOutcomeUKM(url, blink::WebOTPServiceOutcome::kTimeout);
+}
+
+IN_PROC_BROWSER_TEST_F(SmsBrowserTest,
+                       NotRecordFailureForMultiplePendingOrigins) {
+  auto provider = std::make_unique<MockSmsProvider>();
+  MockSmsProvider* mock_provider_ptr = provider.get();
+  BrowserMainLoop::GetInstance()->SetSmsProviderForTesting(std::move(provider));
+
+  Shell* tab1 = CreateBrowser();
+  Shell* tab2 = CreateBrowser();
+
+  net::EmbeddedTestServer https_server(net::EmbeddedTestServer::TYPE_HTTPS);
+  https_server.ServeFilesFromSourceDirectory(GetTestDataFilePath());
+  ASSERT_TRUE(https_server.Start());
+
+  GURL url1 = https_server.GetURL("a.com", "/simple_page.html");
+  GURL url2 = https_server.GetURL("b.com", "/simple_page.html");
+  EXPECT_TRUE(NavigateToURL(tab1, url1));
+  EXPECT_TRUE(NavigateToURL(tab2, url2));
+
+  std::string script = R"(
+     navigator.credentials.get({otp: {transport: ["sms"]}})
+  )";
+
+  tab1->web_contents()->SetDelegate(&delegate_);
+  tab2->web_contents()->SetDelegate(&delegate_);
+
+  base::RunLoop loop;
+  EXPECT_CALL(*mock_provider_ptr, Retrieve(_))
+      .WillOnce(Invoke([]() {
+        // Leave the first request unhandled to make sure there's a pending
+        // origin.
+      }))
+      .WillOnce(Invoke([&]() {
+        mock_provider_ptr->NotifyFailure(FailureType::kPromptTimeout);
+        loop.Quit();
+      }));
+
+  EXPECT_TRUE(ExecJs(tab1, script));
+  EXPECT_TRUE(ExecJs(tab2, script));
+
+  loop.Run();
+
+  ExpectNoOutcomeUKM();
+}
+
+IN_PROC_BROWSER_TEST_F(SmsBrowserTest, RecordUserCancelledAsOutcome) {
+  base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
+      switches::kWebOtpBackend, switches::kWebOtpBackendUserConsent);
+  GURL url = GetTestUrl(nullptr, "simple_page.html");
+  EXPECT_TRUE(NavigateToURL(shell(), url));
+
+  auto provider = std::make_unique<MockSmsProvider>();
+  MockSmsProvider* mock_provider_ptr = provider.get();
+  BrowserMainLoop::GetInstance()->SetSmsProviderForTesting(std::move(provider));
+
+  shell()->web_contents()->SetDelegate(&delegate_);
+
+  EXPECT_CALL(*mock_provider_ptr, Retrieve(_))
+      .WillOnce(Invoke([&mock_provider_ptr]() {
+        mock_provider_ptr->NotifyFailure(FailureType::kPromptCancelled);
+      }));
+
+  EXPECT_TRUE(ExecJs(shell(), R"(
+       navigator.credentials.get({otp: {transport: ["sms"]}});
+     )"));
+
+  base::RunLoop ukm_loop;
+
+  // Wait for UKM to be recorded to avoid race condition between outcome
+  // capture and evaluation.
+  ukm_recorder()->SetOnAddEntryCallback(Entry::kEntryName,
+                                        ukm_loop.QuitClosure());
+
+  ukm_loop.Run();
+
+  ExpectOutcomeUKM(url, blink::WebOTPServiceOutcome::kUserCancelled);
+}
+
 // Disabled test: https://crbug.com/1134455
 IN_PROC_BROWSER_TEST_F(SmsBrowserTest, DISABLED_RecordPendingOriginCount) {
   base::HistogramTester histogram_tester;
@@ -884,7 +993,6 @@
     )"));
   loop.Run();
 
-  ASSERT_TRUE(GetSmsFetcher()->HasSubscribers());
   ASSERT_TRUE(mock_provider_ptr->HasObservers());
 
   content::FetchHistogramsFromChildProcesses();
diff --git a/content/browser/sms/sms_fetcher_impl.cc b/content/browser/sms/sms_fetcher_impl.cc
index a90a37dc..9fcf91f 100644
--- a/content/browser/sms/sms_fetcher_impl.cc
+++ b/content/browser/sms/sms_fetcher_impl.cc
@@ -109,9 +109,9 @@
   return Notify(origin, one_time_code);
 }
 
-void SmsFetcherImpl::NotifyParsingFailure(SmsParser::SmsParsingStatus status) {
+bool SmsFetcherImpl::OnFailure(SmsFetcher::FailureType failure_type) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-  subscribers_.NotifyParsingFailure(status);
+  return subscribers_.NotifyFailure(failure_type);
 }
 
 bool SmsFetcherImpl::HasSubscribers() {
diff --git a/content/browser/sms/sms_fetcher_impl.h b/content/browser/sms/sms_fetcher_impl.h
index e0b3c98..9cfd3d6d 100644
--- a/content/browser/sms/sms_fetcher_impl.h
+++ b/content/browser/sms/sms_fetcher_impl.h
@@ -45,6 +45,7 @@
   // content::SmsProvider::Observer:
   bool OnReceive(const url::Origin& origin,
                  const std::string& one_time_code) override;
+  bool OnFailure(SmsFetcher::FailureType failure_type) override;
 
   bool HasSubscribers() override;
 
@@ -53,8 +54,6 @@
 
   bool Notify(const url::Origin& origin, const std::string& one_time_code);
 
-  void NotifyParsingFailure(SmsParser::SmsParsingStatus) override;
-
   // |context_| is safe because all instances of SmsFetcherImpl are owned by
   // the BrowserContext itself.
   BrowserContext* context_;
diff --git a/content/browser/sms/sms_fetcher_impl_unittest.cc b/content/browser/sms/sms_fetcher_impl_unittest.cc
index 45ef69991..6da1a64 100644
--- a/content/browser/sms/sms_fetcher_impl_unittest.cc
+++ b/content/browser/sms/sms_fetcher_impl_unittest.cc
@@ -207,4 +207,22 @@
   provider()->NotifyReceive(kOrigin1, "123");
 }
 
+TEST_F(SmsFetcherImplTest, OneOriginTwoSubscribersOnlyOneIsNotifiedFailed) {
+  const url::Origin kOrigin = url::Origin::Create(GURL("https://a.com"));
+
+  StrictMock<MockSubscriber> subscriber1;
+  StrictMock<MockSubscriber> subscriber2;
+
+  SmsFetcherImpl fetcher1(nullptr, provider());
+  SmsFetcherImpl fetcher2(nullptr, provider());
+
+  fetcher1.Subscribe(kOrigin, &subscriber1, main_rfh());
+  fetcher2.Subscribe(kOrigin, &subscriber2, main_rfh());
+
+  EXPECT_CALL(subscriber1, OnFailure(SmsFetcher::FailureType::kPromptTimeout));
+  EXPECT_CALL(subscriber2, OnFailure(SmsFetcher::FailureType::kPromptTimeout))
+      .Times(0);
+  provider()->NotifyFailure(SmsFetcher::FailureType::kPromptTimeout);
+}
+
 }  // namespace content
diff --git a/content/browser/sms/sms_provider.cc b/content/browser/sms/sms_provider.cc
index e7e084ae..393caee 100644
--- a/content/browser/sms/sms_provider.cc
+++ b/content/browser/sms/sms_provider.cc
@@ -64,11 +64,32 @@
   NotifyReceive(sms);
 }
 
-void SmsProvider::RecordParsingStatus(SmsParser::SmsParsingStatus status) {
-  if (status == SmsParser::SmsParsingStatus::kParsed)
+void SmsProvider::NotifyFailure(FailureType failure_type) {
+  for (Observer& obs : observers_) {
+    bool handled = obs.OnFailure(failure_type);
+    if (handled)
+      break;
+  }
+}
+
+void SmsProvider::RecordParsingStatus(SmsParsingStatus status) {
+  if (status == SmsParsingStatus::kParsed)
     return;
-  for (Observer& obs : observers_)
-    obs.NotifyParsingFailure(status);
+
+  switch (status) {
+    case SmsParsingStatus::kOTPFormatRegexNotMatch:
+      NotifyFailure(FailureType::kSmsNotParsed_OTPFormatRegexNotMatch);
+      break;
+    case SmsParsingStatus::kHostAndPortNotParsed:
+      NotifyFailure(FailureType::kSmsNotParsed_HostAndPortNotParsed);
+      break;
+    case SmsParsingStatus::kGURLNotValid:
+      NotifyFailure(FailureType::kSmsNotParsed_kGURLNotValid);
+      break;
+    case SmsParsingStatus::kParsed:
+      NOTREACHED();
+      break;
+  }
 }
 
 bool SmsProvider::HasObservers() {
diff --git a/content/browser/sms/sms_provider.h b/content/browser/sms/sms_provider.h
index 61a25f7..9c4a7b0 100644
--- a/content/browser/sms/sms_provider.h
+++ b/content/browser/sms/sms_provider.h
@@ -32,12 +32,16 @@
     // handled, which stops its propagation to other observers.
     virtual bool OnReceive(const url::Origin&,
                            const std::string& one_time_code) = 0;
+    virtual bool OnFailure(SmsFetcher::FailureType failure_type) = 0;
     virtual void NotifyParsingFailure(SmsParser::SmsParsingStatus) {}
   };
 
   SmsProvider();
   virtual ~SmsProvider();
 
+  using FailureType = SmsFetcher::FailureType;
+  using SmsParsingStatus = SmsParser::SmsParsingStatus;
+
   // Listen to the next incoming SMS and notify observers (exactly once) when
   // it is received or (exclusively) when it timeouts. |render_frame_host|
   // is the RenderFrameHost for the renderer that issued the request, and is
@@ -51,7 +55,8 @@
   void RemoveObserver(const Observer*);
   void NotifyReceive(const url::Origin&, const std::string& one_time_code);
   void NotifyReceiveForTesting(const std::string& sms);
-  void RecordParsingStatus(SmsParser::SmsParsingStatus status);
+  void NotifyFailure(FailureType failure_type);
+  void RecordParsingStatus(SmsParsingStatus status);
   bool HasObservers();
 
  protected:
diff --git a/content/browser/sms/sms_provider_gms_user_consent.cc b/content/browser/sms/sms_provider_gms_user_consent.cc
index 9896fe88..ad50dba 100644
--- a/content/browser/sms/sms_provider_gms_user_consent.cc
+++ b/content/browser/sms/sms_provider_gms_user_consent.cc
@@ -52,7 +52,13 @@
   NotifyReceive(sms);
 }
 
-void SmsProviderGmsUserConsent::OnTimeout(JNIEnv* env) {}
+void SmsProviderGmsUserConsent::OnTimeout(JNIEnv* env) {
+  NotifyFailure(SmsFetcher::FailureType::kPromptTimeout);
+}
+
+void SmsProviderGmsUserConsent::OnCancel(JNIEnv* env) {
+  NotifyFailure(SmsFetcher::FailureType::kPromptCancelled);
+}
 
 base::android::ScopedJavaGlobalRef<jobject>
 SmsProviderGmsUserConsent::GetWebOTPServiceForTesting() const {
diff --git a/content/browser/sms/sms_provider_gms_user_consent.h b/content/browser/sms/sms_provider_gms_user_consent.h
index 89c6a56b4..bb7d8d02 100644
--- a/content/browser/sms/sms_provider_gms_user_consent.h
+++ b/content/browser/sms/sms_provider_gms_user_consent.h
@@ -27,6 +27,8 @@
 
   // Implements JNI method SmsUserConsentReceiver.Natives.onTimeout().
   void OnTimeout(JNIEnv* env);
+  // Implements JNI method SmsUserConsentReceiver.Natives.onCancel().
+  void OnCancel(JNIEnv* env);
 
   base::android::ScopedJavaGlobalRef<jobject> GetWebOTPServiceForTesting()
       const;
diff --git a/content/browser/sms/sms_provider_gms_user_consent_unittest.cc b/content/browser/sms/sms_provider_gms_user_consent_unittest.cc
index 0ae57d6..1535aea 100644
--- a/content/browser/sms/sms_provider_gms_user_consent_unittest.cc
+++ b/content/browser/sms/sms_provider_gms_user_consent_unittest.cc
@@ -11,6 +11,7 @@
 #include "base/test/scoped_feature_list.h"
 #include "content/browser/sms/sms_provider.h"
 #include "content/browser/sms/sms_provider_gms_user_consent.h"
+#include "content/public/browser/sms_fetcher.h"
 #include "content/public/common/content_features.h"
 #include "content/public/test/test_renderer_host.h"
 #include "content/test/content_unittests_jni_headers/SmsUserConsentFakes_jni.h"
@@ -34,6 +35,7 @@
 
   MOCK_METHOD2(OnReceive,
                bool(const Origin&, const std::string& one_time_code));
+  MOCK_METHOD1(OnFailure, bool(SmsFetcher::FailureType));
 
  private:
   DISALLOW_COPY_AND_ASSIGN(MockObserver);
diff --git a/content/browser/sms/sms_provider_gms_verification_unittest.cc b/content/browser/sms/sms_provider_gms_verification_unittest.cc
index 56fef1e..31c1894 100644
--- a/content/browser/sms/sms_provider_gms_verification_unittest.cc
+++ b/content/browser/sms/sms_provider_gms_verification_unittest.cc
@@ -11,6 +11,7 @@
 #include "base/test/scoped_feature_list.h"
 #include "content/browser/sms/sms_provider.h"
 #include "content/browser/sms/sms_provider_gms_verification.h"
+#include "content/public/browser/sms_fetcher.h"
 #include "content/public/common/content_features.h"
 #include "content/public/test/test_renderer_host.h"
 #include "content/test/content_unittests_jni_headers/SmsVerificationFakes_jni.h"
@@ -33,6 +34,7 @@
 
   MOCK_METHOD2(OnReceive,
                bool(const Origin&, const std::string& one_time_code));
+  MOCK_METHOD1(OnFailure, bool(SmsFetcher::FailureType));
 
  private:
   DISALLOW_COPY_AND_ASSIGN(MockObserver);
diff --git a/content/browser/sms/sms_queue.cc b/content/browser/sms/sms_queue.cc
index 8106a63..cd1bdd87 100644
--- a/content/browser/sms/sms_queue.cc
+++ b/content/browser/sms/sms_queue.cc
@@ -53,29 +53,25 @@
          subscribers_[origin].HasObserver(subscriber);
 }
 
-void SmsQueue::NotifyParsingFailure(SmsParsingStatus status) {
-  FailureType failure_type;
-  switch (status) {
-    case SmsParsingStatus::kOTPFormatRegexNotMatch:
-      failure_type = FailureType::kSmsNotParsed_OTPFormatRegexNotMatch;
-      break;
-    case SmsParsingStatus::kHostAndPortNotParsed:
-      failure_type = FailureType::kSmsNotParsed_HostAndPortNotParsed;
-      break;
-    case SmsParsingStatus::kGURLNotValid:
-      failure_type = FailureType::kSmsNotParsed_kGURLNotValid;
-      break;
-    default:
-      NOTREACHED();
-      break;
-  }
-  for (auto& origin_to_subscriber_list : subscribers_) {
-    base::ObserverList<Subscriber>& subscribers =
-        origin_to_subscriber_list.second;
-    for (auto& subscriber : subscribers) {
-      subscriber.OnFailure(failure_type);
-    }
-  }
+// Currently we cannot extract the origin information upon failure because it's
+// not visible to the service. If we have a single origin in the queue we simply
+// assume failure belongs to that origin. This assumption should hold for vast
+// majority of cases given that a single pending origin is the most likely
+// scenario (measured in UMA histogram  |Blink.Sms.PendingOriginCount|). However
+// if there is more than one origin waiting we do not pass up the error to avoid
+// over-counting failures. Similar to the success case, we only notify the first
+// subscriber with that origin.
+bool SmsQueue::NotifyFailure(FailureType failure_type) {
+  // TODO(crbug.com/1138454): We should improve the infrastructure to be able to
+  // handle failed requests when there are multiple pending origins
+  // simultaneously.
+  if (subscribers_.size() != 1)
+    return false;
+
+  const url::Origin& implied_origin = subscribers_.begin()->first;
+  Subscriber* subscriber = Pop(implied_origin);
+  subscriber->OnFailure(failure_type);
+  return true;
 }
 
 }  // namespace content
diff --git a/content/browser/sms/sms_queue.h b/content/browser/sms/sms_queue.h
index 4df829e..388a12ce 100644
--- a/content/browser/sms/sms_queue.h
+++ b/content/browser/sms/sms_queue.h
@@ -8,7 +8,6 @@
 #include <map>
 
 #include "base/observer_list.h"
-#include "content/browser/sms/sms_parser.h"
 #include "content/common/content_export.h"
 #include "content/public/browser/sms_fetcher.h"
 #include "url/origin.h"
@@ -22,7 +21,6 @@
   ~SmsQueue();
 
   using FailureType = SmsFetcher::FailureType;
-  using SmsParsingStatus = SmsParser::SmsParsingStatus;
   using Subscriber = SmsFetcher::Subscriber;
 
   void Push(const url::Origin& origin, Subscriber* subscriber);
@@ -30,7 +28,9 @@
   void Remove(const url::Origin& origin, Subscriber* subscriber);
   bool HasSubscribers();
   bool HasSubscriber(const url::Origin& origin, const Subscriber* subscriber);
-  void NotifyParsingFailure(SmsParsingStatus status);
+  // Pops and notifies the first subscriber of an origin iff there's one origin
+  // in the |subscribers_| map. Returns true if the failure is handled.
+  bool NotifyFailure(FailureType failure_type);
 
  private:
   std::map<url::Origin, base::ObserverList<Subscriber>> subscribers_;
diff --git a/content/browser/sms/user_consent_handler.cc b/content/browser/sms/user_consent_handler.cc
index c6654a03..740b4a47 100644
--- a/content/browser/sms/user_consent_handler.cc
+++ b/content/browser/sms/user_consent_handler.cc
@@ -66,6 +66,11 @@
 
 void PromptBasedUserConsentHandler::OnCancel() {
   is_prompt_open_ = false;
+  // TODO(crbug.com/1138454): This should be SmsStatus::kUserCancelled. However,
+  // due to the limitation of the user consent API, we currently do not resolve
+  // the promise with kUserCancelled. Reuse the existing enum kCancelled to make
+  // sure that dismissing a prompt works with this backend. We should correct
+  // the enum once the limitation is fixed.
   std::move(on_complete_).Run(SmsStatus::kCancelled);
 }
 
diff --git a/content/browser/sms/webotp_service.cc b/content/browser/sms/webotp_service.cc
index 1b2fa61b..b7011fa 100644
--- a/content/browser/sms/webotp_service.cc
+++ b/content/browser/sms/webotp_service.cc
@@ -146,6 +146,17 @@
 }
 
 void WebOTPService::OnFailure(FailureType failure_type) {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+  if (failure_type == FailureType::kPromptTimeout) {
+    CompleteRequest(SmsStatus::kTimeout);
+    return;
+  }
+  if (failure_type == FailureType::kPromptCancelled) {
+    CompleteRequest(SmsStatus::kUserCancelled);
+    return;
+  }
+
+  // Records Sms parsing failures.
   SmsParser::SmsParsingStatus status = SmsParsingStatus::kParsed;
   switch (failure_type) {
     case FailureType::kSmsNotParsed_OTPFormatRegexNotMatch:
@@ -160,7 +171,7 @@
     case FailureType::kPromptTimeout:
     case FailureType::kPromptCancelled:
       // TODO(yigu): Land implementation in crrev.com/2427560.
-      NOTIMPLEMENTED();
+      NOTREACHED();
       break;
   }
   DCHECK(status != SmsParsingStatus::kParsed);
diff --git a/content/browser/sms/webotp_service.h b/content/browser/sms/webotp_service.h
index 4929891..85a87ab 100644
--- a/content/browser/sms/webotp_service.h
+++ b/content/browser/sms/webotp_service.h
@@ -12,6 +12,7 @@
 #include "base/macros.h"
 #include "base/sequence_checker.h"
 #include "base/time/time.h"
+#include "content/browser/sms/sms_parser.h"
 #include "content/browser/sms/sms_queue.h"
 #include "content/browser/sms/user_consent_handler.h"
 #include "content/common/content_export.h"
diff --git a/content/public/android/java/src/org/chromium/content/browser/sms/OWNERS b/content/public/android/java/src/org/chromium/content/browser/sms/OWNERS
new file mode 100644
index 0000000..ef047ca
--- /dev/null
+++ b/content/public/android/java/src/org/chromium/content/browser/sms/OWNERS
@@ -0,0 +1,4 @@
+file://content/browser/sms/OWNERS
+
+# TEAM: web-identity@google.com
+# COMPONENT: Blink>WebOTP
diff --git a/content/public/android/java/src/org/chromium/content/browser/sms/SmsUserConsentReceiver.java b/content/public/android/java/src/org/chromium/content/browser/sms/SmsUserConsentReceiver.java
index 74c110e97..52bbc82 100644
--- a/content/public/android/java/src/org/chromium/content/browser/sms/SmsUserConsentReceiver.java
+++ b/content/public/android/java/src/org/chromium/content/browser/sms/SmsUserConsentReceiver.java
@@ -124,6 +124,7 @@
             SmsUserConsentReceiverJni.get().onReceive(mSmsProviderAndroid, message);
         } else if (resultCode == Activity.RESULT_CANCELED) {
             if (DEBUG) Log.d(TAG, "Activity result cancelled.");
+            SmsUserConsentReceiverJni.get().onCancel(mSmsProviderAndroid);
         }
     }
 
@@ -161,5 +162,6 @@
     interface Natives {
         void onReceive(long nativeSmsProviderGmsUserConsent, String sms);
         void onTimeout(long nativeSmsProviderGmsUserConsent);
+        void onCancel(long nativeSmsProviderGmsUserConsent);
     }
 }
diff --git a/content/public/browser/browser_url_handler.h b/content/public/browser/browser_url_handler.h
index 3757788..2312ba9 100644
--- a/content/public/browser/browser_url_handler.h
+++ b/content/public/browser/browser_url_handler.h
@@ -51,11 +51,6 @@
       const GURL& url,
       BrowserContext* browser_context) = 0;
 
-  // Set the specified handler as a preliminary fixup phase to be done before
-  // rewriting.  This allows minor cleanup for the URL without having it affect
-  // the virtual URL.
-  virtual void SetFixupHandler(URLHandler handler) = 0;
-
   // Add the specified handler pair to the list of URL handlers.
   //
   // Note that normally, the reverse handler is only used if the modified URL is
diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc
index 830ae73..77b45903 100644
--- a/content/public/common/content_features.cc
+++ b/content/public/common/content_features.cc
@@ -173,6 +173,11 @@
 const base::Feature kCrashReporting{"CrashReporting",
                                     base::FEATURE_ENABLED_BY_DEFAULT};
 
+// Enables support for the `Critical-CH` response header.
+// https://github.com/WICG/client-hints-infrastructure/blob/master/reliability.md#critical-ch
+const base::Feature kCriticalClientHint{"CriticalClientHint",
+                                        base::FEATURE_DISABLED_BY_DEFAULT};
+
 // Puts save-data header in the holdback mode. This disables sending of
 // save-data header to origins, and to the renderer processes within Chrome.
 const base::Feature kDataSaverHoldback{"DataSaverHoldback",
@@ -534,7 +539,7 @@
 // Enables skipping the early call to CommitPending when navigating away from a
 // crashed frame.
 const base::Feature kSkipEarlyCommitPendingForCrashedFrame{
-    "SkipEarlyCommitPendingForCrashedFrame", base::FEATURE_ENABLED_BY_DEFAULT};
+    "SkipEarlyCommitPendingForCrashedFrame", base::FEATURE_DISABLED_BY_DEFAULT};
 
 const base::Feature kRequestUnbufferedDispatch{
     "RequestUnbufferedDispatch", base::FEATURE_ENABLED_BY_DEFAULT};
diff --git a/content/public/common/content_features.h b/content/public/common/content_features.h
index 1f06a82..0e714dc 100644
--- a/content/public/common/content_features.h
+++ b/content/public/common/content_features.h
@@ -46,6 +46,7 @@
 CONTENT_EXPORT extern const base::Feature kCookieDeprecationMessages;
 CONTENT_EXPORT extern const base::Feature kCooperativeScheduling;
 CONTENT_EXPORT extern const base::Feature kCrashReporting;
+CONTENT_EXPORT extern const base::Feature kCriticalClientHint;
 CONTENT_EXPORT extern const base::Feature kDataSaverHoldback;
 CONTENT_EXPORT extern const base::Feature kDesktopCaptureChangeSource;
 CONTENT_EXPORT extern const base::Feature kDocumentPolicy;
diff --git a/content/public/common/content_switch_dependent_feature_overrides.cc b/content/public/common/content_switch_dependent_feature_overrides.cc
index 7753887..56a9c584 100644
--- a/content/public/common/content_switch_dependent_feature_overrides.cc
+++ b/content/public/common/content_switch_dependent_feature_overrides.cc
@@ -64,6 +64,9 @@
       {switches::kEnableExperimentalWebPlatformFeatures,
        std::cref(features::kEnableNewCanvas2DAPI),
        base::FeatureList::OVERRIDE_ENABLE_FEATURE},
+      {switches::kEnableExperimentalWebPlatformFeatures,
+       std::cref(features::kCriticalClientHint),
+       base::FeatureList::OVERRIDE_ENABLE_FEATURE},
 
       // Overrides for --enable-experimental-cookie-features.
       {switches::kEnableExperimentalCookieFeatures,
diff --git a/content/public/test/browser_test_base.cc b/content/public/test/browser_test_base.cc
index e2efaf4b..9038f77 100644
--- a/content/public/test/browser_test_base.cc
+++ b/content/public/test/browser_test_base.cc
@@ -94,7 +94,7 @@
 #include "ui/base/ui_base_paths.h"
 
 #ifdef V8_USE_EXTERNAL_STARTUP_DATA
-#include "gin/v8_initializer.h"
+#include "gin/v8_initializer.h"  // nogncheck
 #endif
 #endif
 
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
index bb210f4f..b058da6 100644
--- a/content/renderer/render_view_impl.cc
+++ b/content/renderer/render_view_impl.cc
@@ -4,210 +4,42 @@
 
 #include "content/renderer/render_view_impl.h"
 
-#include <algorithm>
-#include <cmath>
-#include <memory>
-#include <utility>
-
-#include "base/auto_reset.h"
 #include "base/bind.h"
-#include "base/bind_helpers.h"
 #include "base/command_line.h"
-#include "base/compiler_specific.h"
-#include "base/debug/alias.h"
 #include "base/feature_list.h"
-#include "base/files/file_path.h"
-#include "base/i18n/rtl.h"
-#include "base/json/json_writer.h"
 #include "base/lazy_instance.h"
 #include "base/location.h"
-#include "base/metrics/field_trial.h"
-#include "base/process/kill.h"
-#include "base/process/process.h"
 #include "base/single_thread_task_runner.h"
-#include "base/stl_util.h"
-#include "base/strings/string_number_conversions.h"
 #include "base/strings/string_piece.h"
-#include "base/strings/string_split.h"
-#include "base/strings/string_util.h"
-#include "base/strings/sys_string_conversions.h"
-#include "base/strings/utf_string_conversions.h"
-#include "base/system/sys_info.h"
-#include "base/threading/thread_task_runner_handle.h"
-#include "base/time/time.h"
-#include "base/trace_event/trace_event.h"
-#include "build/build_config.h"
-#include "cc/base/switches.h"
-#include "cc/paint/skia_paint_canvas.h"
-#include "cc/trees/layer_tree_host.h"
-#include "content/common/content_constants_internal.h"
-#include "content/common/drag_messages.h"
-#include "content/common/frame_messages.h"
-#include "content/common/frame_replication_state.h"
-#include "content/common/input_messages.h"
 #include "content/common/page_messages.h"
-#include "content/common/render_message_filter.mojom.h"
 #include "content/common/view_messages.h"
 #include "content/public/common/content_client.h"
 #include "content/public/common/content_constants.h"
 #include "content/public/common/content_features.h"
 #include "content/public/common/content_switches.h"
-#include "content/public/common/referrer_type_converters.h"
-#include "content/public/common/three_d_api_types.h"
-#include "content/public/common/url_constants.h"
 #include "content/public/renderer/content_renderer_client.h"
-#include "content/public/renderer/document_state.h"
-#include "content/public/renderer/render_thread.h"
 #include "content/public/renderer/render_view_observer.h"
 #include "content/public/renderer/render_view_visitor.h"
 #include "content/public/renderer/window_features_converter.h"
 #include "content/renderer/agent_scheduling_group.h"
-#include "content/renderer/internal_document_state_data.h"
-#include "content/renderer/loader/request_extra_data.h"
-#include "content/renderer/render_frame_impl.h"
 #include "content/renderer/render_frame_proxy.h"
-#include "content/renderer/render_process.h"
 #include "content/renderer/render_thread_impl.h"
-#include "content/renderer/renderer_blink_platform_impl.h"
-#include "content/renderer/v8_value_converter_impl.h"
-#include "content/renderer/web_ui_extension_data.h"
-#include "media/audio/audio_output_device.h"
-#include "media/base/media_switches.h"
-#include "media/media_buildflags.h"
-#include "media/renderers/audio_renderer_impl.h"
-#include "media/video/gpu_video_accelerator_factories.h"
-#include "mojo/public/cpp/bindings/pending_receiver.h"
-#include "net/base/data_url.h"
-#include "net/base/escape.h"
-#include "net/base/net_errors.h"
-#include "net/base/registry_controlled_domains/registry_controlled_domain.h"
-#include "net/http/http_util.h"
-#include "net/nqe/effective_connection_type.h"
-#include "ppapi/buildflags/buildflags.h"
-#include "skia/ext/platform_canvas.h"
-#include "third_party/blink/public/common/associated_interfaces/associated_interface_provider.h"
-#include "third_party/blink/public/common/dom_storage/session_storage_namespace_id.h"
-#include "third_party/blink/public/common/frame/user_activation_update_source.h"
-#include "third_party/blink/public/common/input/web_input_event.h"
-#include "third_party/blink/public/common/page_state/page_state.h"
-#include "third_party/blink/public/common/switches.h"
-#include "third_party/blink/public/common/web_preferences/web_preferences.h"
-#include "third_party/blink/public/platform/file_path_conversion.h"
 #include "third_party/blink/public/platform/modules/video_capture/web_video_capture_impl_manager.h"
 #include "third_party/blink/public/platform/url_conversion.h"
-#include "third_party/blink/public/platform/web_connection_type.h"
-#include "third_party/blink/public/platform/web_effective_connection_type.h"
-#include "third_party/blink/public/platform/web_http_body.h"
-#include "third_party/blink/public/platform/web_input_event_result.h"
-#include "third_party/blink/public/platform/web_network_state_notifier.h"
-#include "third_party/blink/public/platform/web_rect.h"
-#include "third_party/blink/public/platform/web_runtime_features.h"
-#include "third_party/blink/public/platform/web_size.h"
-#include "third_party/blink/public/platform/web_string.h"
-#include "third_party/blink/public/platform/web_url.h"
-#include "third_party/blink/public/platform/web_url_error.h"
-#include "third_party/blink/public/platform/web_url_request.h"
-#include "third_party/blink/public/platform/web_url_response.h"
-#include "third_party/blink/public/platform/web_vector.h"
-#include "third_party/blink/public/public_buildflags.h"
 #include "third_party/blink/public/web/modules/mediastream/web_media_stream_device_observer.h"
-#include "third_party/blink/public/web/web_autofill_client.h"
-#include "third_party/blink/public/web/web_ax_object.h"
-#include "third_party/blink/public/web/web_document.h"
-#include "third_party/blink/public/web/web_dom_event.h"
-#include "third_party/blink/public/web/web_dom_message_event.h"
-#include "third_party/blink/public/web/web_element.h"
-#include "third_party/blink/public/web/web_form_control_element.h"
-#include "third_party/blink/public/web/web_form_element.h"
-#include "third_party/blink/public/web/web_frame.h"
-#include "third_party/blink/public/web/web_frame_content_dumper.h"
 #include "third_party/blink/public/web/web_frame_widget.h"
-#include "third_party/blink/public/web/web_history_entry.h"
-#include "third_party/blink/public/web/web_history_item.h"
-#include "third_party/blink/public/web/web_hit_test_result.h"
-#include "third_party/blink/public/web/web_input_element.h"
 #include "third_party/blink/public/web/web_local_frame.h"
-#include "third_party/blink/public/web/web_navigation_policy.h"
-#include "third_party/blink/public/web/web_page_popup.h"
-#include "third_party/blink/public/web/web_plugin.h"
-#include "third_party/blink/public/web/web_range.h"
 #include "third_party/blink/public/web/web_render_theme.h"
-#include "third_party/blink/public/web/web_script_source.h"
-#include "third_party/blink/public/web/web_searchable_form_data.h"
-#include "third_party/blink/public/web/web_security_policy.h"
-#include "third_party/blink/public/web/web_settings.h"
 #include "third_party/blink/public/web/web_view.h"
 #include "third_party/blink/public/web/web_window_features.h"
-#include "third_party/icu/source/common/unicode/uchar.h"
-#include "third_party/icu/source/common/unicode/uscript.h"
-#include "third_party/skia/include/core/SkColor.h"
 #include "ui/base/ui_base_features.h"
-#include "ui/base/ui_base_switches_util.h"
-#include "ui/gfx/geometry/point.h"
-#include "ui/gfx/geometry/rect.h"
-#include "ui/gfx/geometry/rect_conversions.h"
-#include "ui/gfx/geometry/size_conversions.h"
-#include "ui/gfx/native_widget_types.h"
-#include "ui/gfx/switches.h"
-#include "ui/latency/latency_info.h"
-#include "url/origin.h"
-#include "url/url_constants.h"
-#include "v8/include/v8.h"
 
-#if defined(OS_ANDROID)
-#include <cpu-features.h>
-
-#include "base/android/build_info.h"
-#include "content/child/child_thread_impl.h"
-#include "ui/gfx/geometry/rect_f.h"
-
-#elif defined(OS_MAC)
-#include "skia/ext/skia_utils_mac.h"
-#endif
-
-#if BUILDFLAG(ENABLE_PLUGINS)
-#include "content/renderer/pepper/pepper_plugin_instance_impl.h"
-#include "content/renderer/pepper/pepper_plugin_registry.h"
-#endif
-
-using blink::DragOperation;
-using blink::WebAXObject;
-using blink::WebConsoleMessage;
-using blink::WebData;
-using blink::WebDocument;
-using blink::WebElement;
-using blink::WebFormControlElement;
-using blink::WebFormElement;
 using blink::WebFrame;
-using blink::WebFrameContentDumper;
-using blink::WebGestureEvent;
-using blink::WebHistoryItem;
-using blink::WebHitTestResult;
-using blink::WebHTTPBody;
-using blink::WebInputElement;
-using blink::WebInputEvent;
 using blink::WebLocalFrame;
-using blink::WebMouseEvent;
 using blink::WebNavigationPolicy;
-using blink::WebNavigationType;
-using blink::WebNode;
-using blink::WebRect;
-using blink::WebRuntimeFeatures;
-using blink::WebScriptSource;
-using blink::WebSearchableFormData;
-using blink::WebSecurityOrigin;
-using blink::WebSecurityPolicy;
-using blink::WebSettings;
-using blink::WebSize;
 using blink::WebString;
-using blink::WebTouchEvent;
-using blink::WebURL;
-using blink::WebURLError;
 using blink::WebURLRequest;
-using blink::WebURLResponse;
-using blink::WebVector;
 using blink::WebView;
-using blink::WebWidget;
 using blink::WebWindowFeatures;
 
 namespace content {
diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc
index 38562b8..e60bd43 100644
--- a/content/renderer/render_widget.cc
+++ b/content/renderer/render_widget.cc
@@ -9,115 +9,37 @@
 #include <memory>
 #include <utility>
 
-#include "base/base_switches.h"
 #include "base/bind.h"
 #include "base/bind_helpers.h"
-#include "base/command_line.h"
-#include "base/feature_list.h"
 #include "base/logging.h"
 #include "base/macros.h"
-#include "base/memory/ptr_util.h"
-#include "base/memory/singleton.h"
 #include "base/metrics/histogram_macros.h"
-#include "base/optional.h"
-#include "base/stl_util.h"
-#include "base/strings/string_number_conversions.h"
-#include "base/strings/utf_string_conversions.h"
-#include "base/system/sys_info.h"
-#include "base/threading/thread_task_runner_handle.h"
-#include "base/trace_event/trace_event.h"
-#include "build/build_config.h"
-#include "cc/base/features.h"
-#include "cc/base/switches.h"
-#include "cc/trees/layer_tree_frame_sink.h"
 #include "cc/trees/layer_tree_host.h"
 #include "cc/trees/ukm_manager.h"
-#include "components/viz/common/features.h"
-#include "components/viz/common/frame_sinks/begin_frame_source.h"
-#include "components/viz/common/frame_sinks/copy_output_request.h"
-#include "components/viz/common/switches.h"
-#include "content/common/content_switches_internal.h"
 #include "content/common/drag_messages.h"
-#include "content/common/render_message_filter.mojom.h"
 #include "content/common/widget_messages.h"
-#include "content/public/common/content_client.h"
-#include "content/public/common/content_features.h"
-#include "content/public/common/content_switches.h"
 #include "content/public/common/drop_data.h"
-#include "content/public/common/service_names.mojom.h"
-#include "content/public/common/untrustworthy_context_menu_params.h"
-#include "content/public/common/use_zoom_for_dsf_policy.h"
-#include "content/public/renderer/content_renderer_client.h"
-#include "content/public/renderer/render_thread.h"
 #include "content/renderer/agent_scheduling_group.h"
 #include "content/renderer/pepper/pepper_plugin_instance_impl.h"
 #include "content/renderer/render_frame_impl.h"
-#include "content/renderer/render_frame_proxy.h"
-#include "content/renderer/render_process.h"
 #include "content/renderer/render_thread_impl.h"
-#include "content/renderer/render_view_impl.h"
-#include "content/renderer/renderer_blink_platform_impl.h"
-#include "gpu/command_buffer/service/gpu_switches.h"
-#include "gpu/config/gpu_finch_features.h"
-#include "ipc/ipc_message_start.h"
-#include "media/base/media_switches.h"
-#include "mojo/public/cpp/bindings/pending_remote.h"
 #include "ppapi/buildflags/buildflags.h"
-#include "skia/ext/platform_canvas.h"
-#include "third_party/blink/public/common/features.h"
 #include "third_party/blink/public/common/page/drag_operation.h"
-#include "third_party/blink/public/common/switches.h"
 #include "third_party/blink/public/platform/file_path_conversion.h"
-#include "third_party/blink/public/platform/platform.h"
-#include "third_party/blink/public/platform/scheduler/web_render_widget_scheduling_state.h"
-#include "third_party/blink/public/platform/scheduler/web_thread_scheduler.h"
 #include "third_party/blink/public/platform/web_drag_data.h"
 #include "third_party/blink/public/platform/web_rect.h"
-#include "third_party/blink/public/platform/web_runtime_features.h"
-#include "third_party/blink/public/platform/web_size.h"
 #include "third_party/blink/public/platform/web_string.h"
-#include "third_party/blink/public/web/web_autofill_client.h"
 #include "third_party/blink/public/web/web_frame_widget.h"
 #include "third_party/blink/public/web/web_local_frame.h"
-#include "third_party/blink/public/web/web_node.h"
 #include "third_party/blink/public/web/web_page_popup.h"
-#include "third_party/blink/public/web/web_popup_menu_info.h"
-#include "third_party/blink/public/web/web_view.h"
 #include "third_party/blink/public/web/web_widget.h"
-#include "third_party/skia/include/core/SkShader.h"
 #include "ui/base/clipboard/clipboard_constants.h"
-#include "ui/base/ui_base_features.h"
-#include "ui/base/ui_base_switches.h"
-#include "ui/events/base_event_utils.h"
-#include "ui/gfx/geometry/dip_util.h"
-#include "ui/gfx/geometry/point_conversions.h"
 #include "ui/gfx/geometry/rect_conversions.h"
-#include "ui/gfx/geometry/size_conversions.h"
-#include "ui/gfx/skia_util.h"
-#include "ui/gfx/switches.h"
-#include "ui/gl/gl_switches.h"
-#include "ui/native_theme/native_theme_features.h"
-#include "ui/native_theme/overlay_scrollbar_constants_aura.h"
-#include "ui/surface/transport_dib.h"
-
-#if defined(OS_ANDROID)
-#include <android/keycodes.h>
-#include "base/time/time.h"
-#include "components/viz/common/viz_utils.h"
-#endif
-
-#if defined(OS_POSIX)
-#include "third_party/skia/include/core/SkMallocPixelRef.h"
-#include "third_party/skia/include/core/SkPixelRef.h"
-#endif  // defined(OS_POSIX)
 
 using blink::DragOperation;
 using blink::DragOperationsMask;
 using blink::WebDragData;
-using blink::WebFrameWidget;
-using blink::WebLocalFrame;
 using blink::WebNavigationPolicy;
-using blink::WebRect;
 using blink::WebString;
 
 namespace content {
diff --git a/device/bluetooth/strings/bluetooth_strings_bs.xtb b/device/bluetooth/strings/bluetooth_strings_bs.xtb
index 5a38a27..f657b5f 100644
--- a/device/bluetooth/strings/bluetooth_strings_bs.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_bs.xtb
@@ -16,6 +16,7 @@
 <translation id="4986357476502426173"><ph name="DEVICE_NAME" />, video uređaj</translation>
 <translation id="5271696982761495740">Tabletno računalo (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Nepoznat ili nepodržan uređaj (<ph name="ADDRESS" />)</translation>
+<translation id="571460437990229974"><ph name="DEVICE_NAME_AND_TYPE" /> <ph name="CONNECTION_STATUS" /></translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, modem</translation>
 <translation id="6459740836740815150"><ph name="DEVICE_NAME" />, audio uređaj u automobilu</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, tastatura</translation>
diff --git a/device/bluetooth/strings/bluetooth_strings_en-GB.xtb b/device/bluetooth/strings/bluetooth_strings_en-GB.xtb
index 72955933..621fae6 100644
--- a/device/bluetooth/strings/bluetooth_strings_en-GB.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_en-GB.xtb
@@ -16,6 +16,7 @@
 <translation id="4986357476502426173"><ph name="DEVICE_NAME" />, video device</translation>
 <translation id="5271696982761495740">Tablet (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Unknown or Unsupported Device (<ph name="ADDRESS" />)</translation>
+<translation id="571460437990229974"><ph name="DEVICE_NAME_AND_TYPE" /> <ph name="CONNECTION_STATUS" /></translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, modem</translation>
 <translation id="6459740836740815150"><ph name="DEVICE_NAME" />, car audio device</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, keyboard</translation>
diff --git a/device/bluetooth/strings/bluetooth_strings_et.xtb b/device/bluetooth/strings/bluetooth_strings_et.xtb
index 1cf4615..852b0009 100644
--- a/device/bluetooth/strings/bluetooth_strings_et.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_et.xtb
@@ -16,6 +16,7 @@
 <translation id="4986357476502426173"><ph name="DEVICE_NAME" />, videoseade</translation>
 <translation id="5271696982761495740">Tahvelarvuti (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Tundmata või toetamata seade (<ph name="ADDRESS" />)</translation>
+<translation id="571460437990229974"><ph name="DEVICE_NAME_AND_TYPE" /> <ph name="CONNECTION_STATUS" /></translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, modem</translation>
 <translation id="6459740836740815150"><ph name="DEVICE_NAME" />, auto heliseade</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, klaviatuur</translation>
diff --git a/device/bluetooth/strings/bluetooth_strings_fil.xtb b/device/bluetooth/strings/bluetooth_strings_fil.xtb
index 8645a2c..741a4fd 100644
--- a/device/bluetooth/strings/bluetooth_strings_fil.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_fil.xtb
@@ -16,6 +16,7 @@
 <translation id="4986357476502426173"><ph name="DEVICE_NAME" />, Video device</translation>
 <translation id="5271696982761495740">Tablet (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Hindi Kilala o Hindi Sinusuportahang Device (<ph name="ADDRESS" />)</translation>
+<translation id="571460437990229974"><ph name="DEVICE_NAME_AND_TYPE" /> <ph name="CONNECTION_STATUS" /></translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, Modem</translation>
 <translation id="6459740836740815150"><ph name="DEVICE_NAME" />, Audio device sa kotse</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, Keyboard</translation>
diff --git a/device/bluetooth/strings/bluetooth_strings_hi.xtb b/device/bluetooth/strings/bluetooth_strings_hi.xtb
index 48ab414..2a73290 100644
--- a/device/bluetooth/strings/bluetooth_strings_hi.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_hi.xtb
@@ -16,6 +16,7 @@
 <translation id="4986357476502426173"><ph name="DEVICE_NAME" />, वीडियो डिवाइस</translation>
 <translation id="5271696982761495740">टेबलेट (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">अज्ञात या असमर्थित डिवाइस (<ph name="ADDRESS" />)</translation>
+<translation id="571460437990229974"><ph name="DEVICE_NAME_AND_TYPE" /> <ph name="CONNECTION_STATUS" /></translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, मॉडम</translation>
 <translation id="6459740836740815150"><ph name="DEVICE_NAME" />, कार ऑडियो डिवाइस</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, कीबोर्ड</translation>
diff --git a/device/bluetooth/strings/bluetooth_strings_id.xtb b/device/bluetooth/strings/bluetooth_strings_id.xtb
index 1842b5b9..fb050fa 100644
--- a/device/bluetooth/strings/bluetooth_strings_id.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_id.xtb
@@ -16,6 +16,7 @@
 <translation id="4986357476502426173"><ph name="DEVICE_NAME" />, Perangkat video</translation>
 <translation id="5271696982761495740">Tablet (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Perangkat Tidak Dikenal atau Tidak Didukung (<ph name="ADDRESS" />)</translation>
+<translation id="571460437990229974"><ph name="DEVICE_NAME_AND_TYPE" /> <ph name="CONNECTION_STATUS" /></translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, Modem</translation>
 <translation id="6459740836740815150"><ph name="DEVICE_NAME" />, Perangkat audio mobil</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, Keyboard</translation>
diff --git a/device/bluetooth/strings/bluetooth_strings_ka.xtb b/device/bluetooth/strings/bluetooth_strings_ka.xtb
index 0f55716..e28daf97 100644
--- a/device/bluetooth/strings/bluetooth_strings_ka.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_ka.xtb
@@ -16,6 +16,7 @@
 <translation id="4986357476502426173"><ph name="DEVICE_NAME" />, ვიდეომოწყობილობა</translation>
 <translation id="5271696982761495740">ტაბლეტი (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">უცნობი ან მხარდაჭერის არმქონე მოწყობილობა (<ph name="ADDRESS" />)</translation>
+<translation id="571460437990229974"><ph name="DEVICE_NAME_AND_TYPE" /> <ph name="CONNECTION_STATUS" /></translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, მოდემი</translation>
 <translation id="6459740836740815150"><ph name="DEVICE_NAME" />, მანქანის აუდიომოწყობილობა</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, კლავიატურა</translation>
diff --git a/device/bluetooth/strings/bluetooth_strings_km.xtb b/device/bluetooth/strings/bluetooth_strings_km.xtb
index cad548eb..8a5e43d 100644
--- a/device/bluetooth/strings/bluetooth_strings_km.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_km.xtb
@@ -16,6 +16,7 @@
 <translation id="4986357476502426173"><ph name="DEVICE_NAME" />, ឧបករណ៍​វីដេអូ</translation>
 <translation id="5271696982761495740">ថេប្លេត (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">ឧបករណ៍ដែលមិនស្គាល់ និងមិនមានការគាំទ្រ (<ph name="ADDRESS" />)</translation>
+<translation id="571460437990229974"><ph name="DEVICE_NAME_AND_TYPE" /> <ph name="CONNECTION_STATUS" /></translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, ម៉ូដឹម</translation>
 <translation id="6459740836740815150"><ph name="DEVICE_NAME" />, ឧបករណ៍​សំឡេង​របស់​រថយន្ត</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, ក្ដារចុច</translation>
diff --git a/device/bluetooth/strings/bluetooth_strings_ko.xtb b/device/bluetooth/strings/bluetooth_strings_ko.xtb
index 6a5163e..31c37c9 100644
--- a/device/bluetooth/strings/bluetooth_strings_ko.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_ko.xtb
@@ -16,6 +16,7 @@
 <translation id="4986357476502426173"><ph name="DEVICE_NAME" />, 동영상 기기</translation>
 <translation id="5271696982761495740">태블릿(<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">알 수 없거나 지원되지 않는 기기(<ph name="ADDRESS" />)</translation>
+<translation id="571460437990229974"><ph name="DEVICE_NAME_AND_TYPE" />, <ph name="CONNECTION_STATUS" /></translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, 모뎀</translation>
 <translation id="6459740836740815150"><ph name="DEVICE_NAME" />, 차량 오디오 기기</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, 키보드</translation>
diff --git a/device/bluetooth/strings/bluetooth_strings_lo.xtb b/device/bluetooth/strings/bluetooth_strings_lo.xtb
index c48a8a2..a9d5e2d 100644
--- a/device/bluetooth/strings/bluetooth_strings_lo.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_lo.xtb
@@ -16,6 +16,7 @@
 <translation id="4986357476502426173"><ph name="DEVICE_NAME" />, ອຸປະກອນວິດີໂອ</translation>
 <translation id="5271696982761495740">ແທັບເລັດ (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">ອຸປະກອນທີ່ບໍ່ຮູ້ຈັກ ຫຼືບໍ່ຮອງຮັບ (<ph name="ADDRESS" />)</translation>
+<translation id="571460437990229974"><ph name="DEVICE_NAME_AND_TYPE" /> <ph name="CONNECTION_STATUS" /></translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, ໂມເດັມ</translation>
 <translation id="6459740836740815150"><ph name="DEVICE_NAME" />, ເຄື່ອງສຽງຂອງລົດ</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, ແປ້ນພິມ</translation>
diff --git a/device/bluetooth/strings/bluetooth_strings_mn.xtb b/device/bluetooth/strings/bluetooth_strings_mn.xtb
index 132db7a..d20432e 100644
--- a/device/bluetooth/strings/bluetooth_strings_mn.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_mn.xtb
@@ -16,6 +16,7 @@
 <translation id="4986357476502426173"><ph name="DEVICE_NAME" />, видео төхөөрөмж</translation>
 <translation id="5271696982761495740">Таблет (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Үл мэдэгдэх, эсвэл дэмжигдээгүй төхөөрөмж (<ph name="ADDRESS" />)</translation>
+<translation id="571460437990229974"><ph name="DEVICE_NAME_AND_TYPE" /> <ph name="CONNECTION_STATUS" /></translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, модем</translation>
 <translation id="6459740836740815150"><ph name="DEVICE_NAME" />, машины аудио төхөөрөмж</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, гар</translation>
diff --git a/device/bluetooth/strings/bluetooth_strings_ms.xtb b/device/bluetooth/strings/bluetooth_strings_ms.xtb
index 41664f3..7dd498f8 100644
--- a/device/bluetooth/strings/bluetooth_strings_ms.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_ms.xtb
@@ -16,6 +16,7 @@
 <translation id="4986357476502426173"><ph name="DEVICE_NAME" />, Peranti video</translation>
 <translation id="5271696982761495740">Tablet (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Peranti Tdak Diketahui atau Tidak Disokong (<ph name="ADDRESS" />)</translation>
+<translation id="571460437990229974"><ph name="DEVICE_NAME_AND_TYPE" /> <ph name="CONNECTION_STATUS" /></translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, Modem</translation>
 <translation id="6459740836740815150"><ph name="DEVICE_NAME" />, Peranti audio kereta</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, Papan kekunci</translation>
diff --git a/device/bluetooth/strings/bluetooth_strings_my.xtb b/device/bluetooth/strings/bluetooth_strings_my.xtb
index 6f8f690..2d6ce33 100644
--- a/device/bluetooth/strings/bluetooth_strings_my.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_my.xtb
@@ -16,6 +16,7 @@
 <translation id="4986357476502426173"><ph name="DEVICE_NAME" />၊ ဗီဒီယိုစက်ပစ္စည်း</translation>
 <translation id="5271696982761495740">တက်ဘလက် ( <ph name="ADDRESS" /> )</translation>
 <translation id="5376363957846771741">အမည်မသိရ သို့မဟုတ် ပံ့ပိုးမပေးသည့် ကိရိယာ ( <ph name="ADDRESS" /> )</translation>
+<translation id="571460437990229974"><ph name="DEVICE_NAME_AND_TYPE" /> <ph name="CONNECTION_STATUS" /></translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />၊ မိုဒမ်</translation>
 <translation id="6459740836740815150"><ph name="DEVICE_NAME" />၊ ကား အသံစက်ပစ္စည်း</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />၊ ကီးဘုတ်</translation>
diff --git a/device/bluetooth/strings/bluetooth_strings_nl.xtb b/device/bluetooth/strings/bluetooth_strings_nl.xtb
index f873213..5c8a920 100644
--- a/device/bluetooth/strings/bluetooth_strings_nl.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_nl.xtb
@@ -16,6 +16,7 @@
 <translation id="4986357476502426173"><ph name="DEVICE_NAME" />, videoapparaat</translation>
 <translation id="5271696982761495740">Tablet (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Onbekend of niet-ondersteund apparaat (<ph name="ADDRESS" />)</translation>
+<translation id="571460437990229974"><ph name="DEVICE_NAME_AND_TYPE" /> <ph name="CONNECTION_STATUS" /></translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, modem</translation>
 <translation id="6459740836740815150"><ph name="DEVICE_NAME" />, audioapparaat in auto</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, toetsenbord</translation>
diff --git a/device/bluetooth/strings/bluetooth_strings_sq.xtb b/device/bluetooth/strings/bluetooth_strings_sq.xtb
index 76adae4..ea5958a2 100644
--- a/device/bluetooth/strings/bluetooth_strings_sq.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_sq.xtb
@@ -16,6 +16,7 @@
 <translation id="4986357476502426173"><ph name="DEVICE_NAME" />, pajisje video</translation>
 <translation id="5271696982761495740">Tableti (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Pajisje e panjohur ose e pambështetur (<ph name="ADDRESS" />)</translation>
+<translation id="571460437990229974"><ph name="DEVICE_NAME_AND_TYPE" /> <ph name="CONNECTION_STATUS" /></translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, modem</translation>
 <translation id="6459740836740815150"><ph name="DEVICE_NAME" />, pajisje audio makine</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, tastierë</translation>
diff --git a/infra/config/generated/luci-notify.cfg b/infra/config/generated/luci-notify.cfg
index 496a8e8..6e2c9c0 100644
--- a/infra/config/generated/luci-notify.cfg
+++ b/infra/config/generated/luci-notify.cfg
@@ -2385,6 +2385,19 @@
 }
 notifiers {
   notifications {
+    on_new_status: FAILURE
+    email {
+      recipients: "weblayer-sheriff@grotations.appspotmail.com"
+    }
+  }
+  builders {
+    bucket: "ci"
+    name: "android-weblayer-pie-x86-fyi-rel"
+    repository: "https://chromium.googlesource.com/chromium/src"
+  }
+}
+notifiers {
+  notifications {
     on_occurrence: FAILURE
     failed_step_regexp: "bot_update|compile|gclient runhooks|runhooks|update"
     email {
diff --git a/infra/config/notifiers.star b/infra/config/notifiers.star
index 46b1dfb..4614e7c 100644
--- a/infra/config/notifiers.star
+++ b/infra/config/notifiers.star
@@ -43,6 +43,14 @@
     notify_emails = ["chromium-component-mapping@google.com"],
 )
 
+luci.notifier(
+    name = "weblayer-sheriff",
+    on_new_status = ["FAILURE"],
+    notify_emails = [
+        "weblayer-sheriff@grotations.appspotmail.com",
+    ],
+)
+
 TREE_CLOSING_STEPS = [
     "bot_update",
     "compile",
diff --git a/infra/config/subprojects/chromium/ci.star b/infra/config/subprojects/chromium/ci.star
index 384e4e0..c7302fc 100644
--- a/infra/config/subprojects/chromium/ci.star
+++ b/infra/config/subprojects/chromium/ci.star
@@ -979,6 +979,7 @@
         category = "weblayer",
         short_name = "p-x86-rel",
     ),
+    notifies = ["weblayer-sheriff"],
 )
 
 ci.android_fyi_builder(
diff --git a/infra/config/subprojects/chromium/try.star b/infra/config/subprojects/chromium/try.star
index d768a53..d805cd0b 100644
--- a/infra/config/subprojects/chromium/try.star
+++ b/infra/config/subprojects/chromium/try.star
@@ -1443,6 +1443,9 @@
     ssd = True,
     use_clang_coverage = True,
     main_list_view = "try",
+    # TODO(https://crbug/1127113): Recipe Engine doesn't handle cancellations
+    # of stale tryjobs gracefully, resulting in longer average build times.
+    # Windows is particularly susceptible to this.
     tryjob = try_.job(cancel_stale = False),
 )
 
diff --git a/ios/build/chrome_build.gni b/ios/build/chrome_build.gni
index dd27326a..931d19e 100644
--- a/ios/build/chrome_build.gni
+++ b/ios/build/chrome_build.gni
@@ -29,6 +29,14 @@
   # setting |ios_enable_scene_startup| to |true|.
   ios_enable_multi_window = true
 
+  # When set the main plist CFBundleVersion will be set to ios_lock_to_version,
+  # followed by the milestone and patch in one tuple, e.g. 86.0.4240.8720 where
+  # 87 is the milestone and 20 is the stable patch.  Note that CFBundleVersion
+  # is mostly unused by Chrome and should not affect how the actual version
+  # number is handled internally by Chrome.
+  # TODO(crbug.com/1140474): Remove once iOS 14.2 reaches mass adoption.
+  ios_lock_to_version = ""
+
   # Value of the encryption export compliance code. See "Cryptography and
   # U.S. Export Compliance" in "Submitting the App to App Review" in the
   # Apple developer documentation (https://goo.gl/yv1xEF).
diff --git a/ios/chrome/app/BUILD.gn b/ios/chrome/app/BUILD.gn
index 9156e93..117e27d 100644
--- a/ios/chrome/app/BUILD.gn
+++ b/ios/chrome/app/BUILD.gn
@@ -107,6 +107,11 @@
     "--breakpad=$breakpad_enabled_as_int",
     "--branding=$chromium_short_name",
   ]
+
+  # TODO(crbug.com/1140474): Remove once iOS 14.2 reaches mass adoption.
+  if (ios_lock_to_version != "") {
+    args += [ "--lock-to-version=$ios_lock_to_version" ]
+  }
 }
 
 compile_entitlements("entitlements") {
diff --git a/ios/chrome/app/application_delegate/app_state.h b/ios/chrome/app/application_delegate/app_state.h
index f5d3b6e..6824c3ada 100644
--- a/ios/chrome/app/application_delegate/app_state.h
+++ b/ios/chrome/app/application_delegate/app_state.h
@@ -32,9 +32,9 @@
 // On iOS 12, called when the mainSceneState is set.
 - (void)appState:(AppState*)appState sceneConnected:(SceneState*)sceneState;
 
-// Called when the first scene becomes active.
+// Called when the first scene initializes its UI.
 - (void)appState:(AppState*)appState
-    firstSceneActivated:(SceneState*)sceneState;
+    firstSceneHasInitializedUI:(SceneState*)sceneState;
 
 // Called after the app exits safe mode.
 - (void)appStateDidExitSafeMode:(AppState*)appState;
diff --git a/ios/chrome/app/application_delegate/app_state.mm b/ios/chrome/app/application_delegate/app_state.mm
index c6877b4..59d75ee6 100644
--- a/ios/chrome/app/application_delegate/app_state.mm
+++ b/ios/chrome/app/application_delegate/app_state.mm
@@ -139,6 +139,9 @@
 // never reset.
 @property(nonatomic, assign) BOOL firstSceneHasActivated;
 
+// This flag is set when the first scene has initialized its UI and never reset.
+@property(nonatomic, assign) BOOL firstSceneHasInitializedUI;
+
 // The current blocker target if any.
 @property(nonatomic, weak, readwrite) id<UIBlockerTarget> uiBlockerTarget;
 
@@ -698,14 +701,21 @@
   return self.uiBlockerTarget;
 }
 
+#pragma mark - SceneStateObserver
+
+- (void)sceneStateHasInitializedUI:(SceneState*)sceneState {
+  if (self.firstSceneHasInitializedUI) {
+    return;
+  }
+  self.firstSceneHasInitializedUI = YES;
+  [self.observers appState:self firstSceneHasInitializedUI:sceneState];
+}
+
 - (void)sceneState:(SceneState*)sceneState
     transitionedToActivationLevel:(SceneActivationLevel)level {
   if (level >= SceneActivationLevelForegroundActive) {
     if (!self.firstSceneHasActivated) {
       self.firstSceneHasActivated = YES;
-
-      [self.observers appState:self firstSceneActivated:sceneState];
-
       if (self.isInSafeMode) {
         // Safe mode can only be started when there's a window, so the actual
         // safe mode has been postponed until now.
diff --git a/ios/chrome/app/main_controller.mm b/ios/chrome/app/main_controller.mm
index e93ca9b..0bef044 100644
--- a/ios/chrome/app/main_controller.mm
+++ b/ios/chrome/app/main_controller.mm
@@ -603,14 +603,8 @@
 
 // Called when the first scene becomes active.
 - (void)appState:(AppState*)appState
-    firstSceneActivated:(SceneState*)sceneState {
-  if (appState.isInSafeMode) {
-    return;
-  }
-  [self startUpAfterFirstWindowCreated];
-}
-
-- (void)appStateDidExitSafeMode:(AppState*)appState {
+    firstSceneHasInitializedUI:(SceneState*)sceneState {
+  DCHECK(!appState.isInSafeMode);
   [self startUpAfterFirstWindowCreated];
 }
 
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 44e0e95..d3857e54 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_bn.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_bn.xtb
@@ -69,6 +69,7 @@
 <translation id="8240981428553046115">কোনও নতুন আপডেট আছে কিনা তা Chromium-এ চেক করে দেখা যায়নি। পরে আবার চেষ্টা করুন।</translation>
 <translation id="8252885722420466166">আপনার অবস্থানের উপর ভিত্তি করে Chromium এ আরও ভাল Google অভিজ্ঞতা লাভ করুন৷</translation>
 <translation id="8586442755830160949">কপিরাইট <ph name="YEAR" /> Chromium রচয়িতা৷ সর্বস্বত্ত্ব সংরক্ষিত৷</translation>
+<translation id="8663480472502753423">Chromium আপ-টু-ডেট রাখুন</translation>
 <translation id="8776843108004031667">এই অ্যাকাউন্ট ও যেকোনও সেভ না করা ডেটা Chromium থেকে সরিয়ে দেওয়া হবে।</translation>
 <translation id="9022552996538154597">Chromium-এ সাইন-ইন করুন</translation>
 <translation id="9089354809943900324">Chromium পুরানো হয়ে গেছে</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_kk.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_kk.xtb
index 224e013..556dc42 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_kk.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_kk.xtb
@@ -69,7 +69,7 @@
 <translation id="8240981428553046115">Chromium жаңа нұсқалардың бар-жоғын тексере алмады. Кейінірек қайталап көріңіз.</translation>
 <translation id="8252885722420466166">Chromium қызметінде орналасқан жерге байланысты жақсы Google ұсыныстары беріледі.</translation>
 <translation id="8586442755830160949">Copyright <ph name="YEAR" /> The Chromium Authors. Барлық құқықтар қорғалған.</translation>
-<translation id="8663480472502753423">Chromium-ды жаңартып тұрады.</translation>
+<translation id="8663480472502753423">Chromium-дi жаңартып тұрады.</translation>
 <translation id="8776843108004031667">Бұл есептік жазба және кез келген сақталмаған дерек Chromium браузерінен өшіріледі.</translation>
 <translation id="9022552996538154597">Chromium жүйесіне кіру</translation>
 <translation id="9089354809943900324">Chromium ескірген</translation>
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 07ff222..55ae9ac 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
@@ -55,6 +55,7 @@
 <translation id="6648150602980899529">আপনি <ph name="DOMAIN" /> দ্বারা পরিচালিত একটি অ্যাকাউন্টের মাধ্যমে সাইন-আউট করছেন এবং এর প্রশাসককে আপনার Chrome ডেটা নিয়ন্ত্রণ করতে দিচ্ছেন৷ আপনার ডেটা এই অ্যাকাউন্টের সাথে স্থায়ীভাবে আবদ্ধ হবে৷ Chrome থেকে সাইন-আউট করলে এই ডিভাইস থেকে আপনার ডেটা মুছে ফেলা হবে, কিন্তু এটি আপনার Google অ্যাকাউন্টে সঞ্চিত থাকবে।</translation>
 <translation id="6676840375528380067">এই ডিভাইস থেকে Chrome ডেটা সরিয়ে ফেলবেন?</translation>
 <translation id="6822673484890854830">Chrome সব পাসওয়ার্ড চেক করতে পারেনি। পরে আবার চেষ্টা করুন।</translation>
+<translation id="7124339256045485976">Chrome আপ-টু-ডেট রাখুন</translation>
 <translation id="7161390184744336561">Google Chrome-এর এই ভার্সন পুরনো হয়ে গেছে</translation>
 <translation id="7165736900384873061">Google Chrome QR স্ক্যানারের ব্যবহার শুরু করুন</translation>
 <translation id="7172660552945675509">টিপ: <ph name="BEGIN_LINK" />Chrome-কে আপনার ডকে সরান<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_bn.xtb b/ios/chrome/app/strings/resources/ios_strings_bn.xtb
index 10c31e5..82a17379 100644
--- a/ios/chrome/app/strings/resources/ios_strings_bn.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_bn.xtb
@@ -61,6 +61,7 @@
 <translation id="1545749641540134597">QR কোড স্ক্যান করুন</translation>
 <translation id="1552525382687785070">আপনার অ্যাডমিনিস্ট্রেটর সিঙ্ক 'বন্ধ' করে দিয়েছে</translation>
 <translation id="1554477036522844996">নতুন উইন্ডো</translation>
+<translation id="1580715474678097352">বিপজ্জনক ওয়েবসাইটের হাত থেকে রক্ষা পান</translation>
 <translation id="1580783302095112590">মেল পাঠানো হয়েছে৷</translation>
 <translation id="1582732959743469162">এর ফলে আপনি এখন যা ডাউনলোড করছেন সেগুলি সব বন্ধ হয়ে যাবে।</translation>
 <translation id="1605405588277479165">বন্ধ আছে - সাজেস্ট করা হয়নি</translation>
@@ -729,6 +730,7 @@
 <translation id="9087108903408689779">Chrome-এর সাজেস্ট করা পাসওয়ার্ড:</translation>
 <translation id="9094033019050270033">পাসওয়ার্ড আপডেট করুন</translation>
 <translation id="9100610230175265781">পাসফ্রেজের প্রয়োজন</translation>
+<translation id="9107664647686727385">কোনও পাসওয়ার্ড চুরি হয়েছে কিনা দেখুন</translation>
 <translation id="9137526406337347448">Google পরিসেবাসমূহ</translation>
 <translation id="9148126808321036104">আবার সাইন-ইন করুন</translation>
 <translation id="9152539721251340337">একটি QR কোড তৈরি করুন</translation>
diff --git a/ios/chrome/browser/autofill/form_structure_browsertest.mm b/ios/chrome/browser/autofill/form_structure_browsertest.mm
index 61615c3..de48989 100644
--- a/ios/chrome/browser/autofill/form_structure_browsertest.mm
+++ b/ios/chrome/browser/autofill/form_structure_browsertest.mm
@@ -17,6 +17,7 @@
 #include "components/autofill/core/browser/autofill_manager.h"
 #include "components/autofill/core/browser/data_driven_test.h"
 #include "components/autofill/core/browser/form_structure.h"
+#include "components/autofill/core/browser/pattern_provider/test_pattern_provider.h"
 #include "components/autofill/core/common/autofill_features.h"
 #include "components/autofill/core/common/renderer_id.h"
 #import "components/autofill/ios/browser/autofill_agent.h"
@@ -119,6 +120,7 @@
   std::unique_ptr<autofill::ChromeAutofillClientIOS> autofill_client_;
   AutofillAgent* autofill_agent_;
   FormSuggestionController* suggestion_controller_;
+  TestPatternProvider test_pattern_provider_;
 
  private:
   base::test::ScopedFeatureList feature_list_;
diff --git a/ios/chrome/browser/link_to_text/BUILD.gn b/ios/chrome/browser/link_to_text/BUILD.gn
index 8ca56cc..67de3138 100644
--- a/ios/chrome/browser/link_to_text/BUILD.gn
+++ b/ios/chrome/browser/link_to_text/BUILD.gn
@@ -4,13 +4,15 @@
 
 source_set("link_to_text") {
   sources = [
+    "link_to_text_payload.h",
+    "link_to_text_payload.mm",
     "link_to_text_tab_helper.h",
     "link_to_text_tab_helper.mm",
-    "shared_highlight.h",
   ]
   deps = [
     "//ios/chrome/browser/tabs",
     "//ios/web/public",
+    "//ios/web/public/js_messaging",
   ]
   configs += [ "//build/config/compiler:enable_arc" ]
 }
diff --git a/ios/chrome/browser/link_to_text/OWNERS b/ios/chrome/browser/link_to_text/OWNERS
new file mode 100644
index 0000000..f12b94196
--- /dev/null
+++ b/ios/chrome/browser/link_to_text/OWNERS
@@ -0,0 +1,5 @@
+sebsg@chromium.org
+seblalancette@chromium.org
+
+# TEAM: ios-directory-owners@chromium.org
+# OS: iOS
diff --git a/ios/chrome/browser/link_to_text/link_to_text_payload.h b/ios/chrome/browser/link_to_text/link_to_text_payload.h
new file mode 100644
index 0000000..d1c16ae
--- /dev/null
+++ b/ios/chrome/browser/link_to_text/link_to_text_payload.h
@@ -0,0 +1,45 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef IOS_CHROME_BROWSER_LINK_TO_TEXT_LINK_TO_TEXT_PAYLOAD_H_
+#define IOS_CHROME_BROWSER_LINK_TO_TEXT_LINK_TO_TEXT_PAYLOAD_H_
+
+#import <UIKit/UIKit.h>
+
+#import "url/gurl.h"
+
+// This object holds necessary information for sharing a deep-link to text on a
+// Web page.
+@interface LinkToTextPayload : NSObject
+
+// Initializes an object with the |URL| of the Web page containing text
+// fragments, the page's |title|, the |selectedText| itself, the |sourceView|
+// which contains the text, and |sourceRect| showing where that text is located.
+- (instancetype)initWithURL:(const GURL&)URL
+                      title:(NSString*)title
+               selectedText:(NSString*)selectedText
+                 sourceView:(UIView*)sourceView
+                 sourceRect:(CGRect)sourceRect NS_DESIGNATED_INITIALIZER;
+- (instancetype)init NS_UNAVAILABLE;
+
+// URL of the page containing the relevant fragments allowing to deep-link to
+// the selected text.
+@property(nonatomic, readonly, assign) GURL URL;
+
+// The Web page's title.
+@property(nonatomic, readonly, copy) NSString* title;
+
+// The selected text to the shared.
+@property(nonatomic, readonly, copy) NSString* selectedText;
+
+// The view owning the selected text.
+@property(nonatomic, readonly, weak) UIView* sourceView;
+
+// Coordinates showing where the selected text is located inside the owning
+// view.
+@property(nonatomic, readonly, assign) CGRect sourceRect;
+
+@end
+
+#endif  // IOS_CHROME_BROWSER_LINK_TO_TEXT_LINK_TO_TEXT_PAYLOAD_H_
diff --git a/ios/chrome/browser/link_to_text/link_to_text_payload.mm b/ios/chrome/browser/link_to_text/link_to_text_payload.mm
new file mode 100644
index 0000000..afa08bd
--- /dev/null
+++ b/ios/chrome/browser/link_to_text/link_to_text_payload.mm
@@ -0,0 +1,32 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#import "ios/chrome/browser/link_to_text/link_to_text_payload.h"
+
+#if !defined(__has_feature) || !__has_feature(objc_arc)
+#error "This file requires ARC support."
+#endif
+
+@implementation LinkToTextPayload
+
+- (instancetype)initWithURL:(const GURL&)URL
+                      title:(NSString*)title
+               selectedText:(NSString*)selectedText
+                 sourceView:(UIView*)sourceView
+                 sourceRect:(CGRect)sourceRect {
+  DCHECK(URL.is_valid());
+  DCHECK(title);
+  DCHECK(selectedText);
+  DCHECK(sourceView);
+  if (self = [super init]) {
+    _URL = URL;
+    _title = title;
+    _selectedText = selectedText;
+    _sourceView = sourceView;
+    _sourceRect = sourceRect;
+  }
+  return self;
+}
+
+@end
diff --git a/ios/chrome/browser/link_to_text/link_to_text_tab_helper.h b/ios/chrome/browser/link_to_text/link_to_text_tab_helper.h
index 4ffe1477..5b7e6970 100644
--- a/ios/chrome/browser/link_to_text/link_to_text_tab_helper.h
+++ b/ios/chrome/browser/link_to_text/link_to_text_tab_helper.h
@@ -6,10 +6,13 @@
 #define IOS_CHROME_BROWSER_LINK_TO_TEXT_LINK_TO_TEXT_TAB_HELPER_H_
 
 #import "base/macros.h"
-#import "ios/chrome/browser/link_to_text/shared_highlight.h"
+#import "base/memory/weak_ptr.h"
+#import "ios/chrome/browser/link_to_text/link_to_text_payload.h"
 #import "ios/web/public/web_state_observer.h"
 #import "ios/web/public/web_state_user_data.h"
 
+@protocol CRWWebViewProxy;
+
 // A tab helper that observes WebState and triggers the link to text generation
 // Javascript library on it.
 class LinkToTextTabHelper : public web::WebStateObserver,
@@ -17,21 +20,33 @@
  public:
   ~LinkToTextTabHelper() override;
 
+  // Callback for GetLinkToText.
+  typedef void (^LinkToTextCallback)(LinkToTextPayload* payload);
+
   static void CreateForWebState(web::WebState* web_state);
 
   // Returns whether the link to text feature should be offered for the current
   // user selection
   bool ShouldOffer();
 
-  // Synchronously calls the JavaScript to generate a URL linking to the current
-  // selected text. Returns the generated URL along with the selected text.
-  SharedHighlight GetSharedHighlight();
+  // Calls the JavaScript to generate a URL linking to the current
+  // selected text. Will invoke |callback| with the returned generated URL,
+  // selected text and selected text's position on the page.
+  void GetLinkToText(LinkToTextCallback callback);
 
  private:
   friend class web::WebStateUserData<LinkToTextTabHelper>;
 
   explicit LinkToTextTabHelper(web::WebState* web_state);
 
+  // Invoked with pending GetLinkToText |callback| and the |response| from
+  // the JavaScript call to generate a link to selected text.
+  void OnJavaScriptResponseReceived(LinkToTextCallback callback,
+                                    const base::Value* response);
+
+  // Converts the given |response| value into a LinkToTextPayload instance.
+  LinkToTextPayload* ParseResponse(const base::Value* response);
+
   // Not copyable or moveable.
   LinkToTextTabHelper(const LinkToTextTabHelper&) = delete;
   LinkToTextTabHelper& operator=(const LinkToTextTabHelper&) = delete;
@@ -39,10 +54,19 @@
   // WebStateObserver:
   void WebStateDestroyed(web::WebState* web_state) override;
 
+  // Converts |web_view_rect| into the right coordinates from the browser UI's
+  // point of view.
+  CGRect ConvertToBrowserRect(CGRect web_view_rect);
+
   // The WebState this instance is observing. Will be null after
   // WebStateDestroyed has been called.
   web::WebState* web_state_ = nullptr;
 
+  // Access to the web view from |web_state_|.
+  id<CRWWebViewProxy> web_view_proxy_;
+
+  base::WeakPtrFactory<LinkToTextTabHelper> weak_ptr_factory_;
+
   WEB_STATE_USER_DATA_KEY_DECL();
 };
 
diff --git a/ios/chrome/browser/link_to_text/link_to_text_tab_helper.mm b/ios/chrome/browser/link_to_text/link_to_text_tab_helper.mm
index 7975de6..055fc847 100644
--- a/ios/chrome/browser/link_to_text/link_to_text_tab_helper.mm
+++ b/ios/chrome/browser/link_to_text/link_to_text_tab_helper.mm
@@ -4,15 +4,70 @@
 
 #import "ios/chrome/browser/link_to_text/link_to_text_tab_helper.h"
 
+#import "base/bind.h"
+#import "base/optional.h"
+#import "base/strings/sys_string_conversions.h"
+#import "base/strings/utf_string_conversions.h"
+#import "base/values.h"
 #import "ios/chrome/browser/tabs/tab_title_util.h"
+#import "ios/web/public/js_messaging/web_frame.h"
+#import "ios/web/public/js_messaging/web_frames_manager.h"
+#import "ios/web/public/ui/crw_web_view_proxy.h"
+#import "ios/web/public/ui/crw_web_view_scroll_view_proxy.h"
+#import "url/gurl.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
 #error "This file requires ARC support."
 #endif
 
+namespace {
+const double kJavaScriptFunctionCallTimeoutMs = 200.0;
+const CGFloat kCaretWidth = 4.0;
+const char kGetLinkToTextJavaScript[] = "textFragments.getLinkToText";
+
+// Attempts to convert the given string pointer |value| into a valid GURL. If
+// |value| does not represent a valid URL, then the returned base::Optional
+// instance will be empty.
+base::Optional<GURL> ParseURL(const std::string* value) {
+  if (!value) {
+    return base::nullopt;
+  }
+
+  base::Optional<GURL> url = base::make_optional<GURL>(*value);
+  return url->is_valid() ? url : base::nullopt;
+}
+
+// Attempts to parse the given |value| into a CGRect. If |value| does not map
+// into the expected structure, an empty base::Optional instance will be
+// returned.
+base::Optional<CGRect> ParseRect(const base::Value* value) {
+  if (!value || !value->is_dict()) {
+    return base::nullopt;
+  }
+
+  const base::Value* x_value =
+      value->FindKeyOfType("x", base::Value::Type::DOUBLE);
+  const base::Value* y_value =
+      value->FindKeyOfType("y", base::Value::Type::DOUBLE);
+  const base::Value* width_value =
+      value->FindKeyOfType("width", base::Value::Type::DOUBLE);
+  const base::Value* height_value =
+      value->FindKeyOfType("height", base::Value::Type::DOUBLE);
+
+  if (!x_value || !y_value || !width_value || !height_value) {
+    return base::nullopt;
+  }
+
+  return CGRectMake(x_value->GetDouble(), y_value->GetDouble(),
+                    width_value->GetDouble(), height_value->GetDouble());
+}
+
+}  // namespace
+
 LinkToTextTabHelper::LinkToTextTabHelper(web::WebState* web_state)
-    : web_state_(web_state) {
+    : web_state_(web_state), weak_ptr_factory_(this) {
   web_state_->AddObserver(this);
+  web_view_proxy_ = web_state_->GetWebViewProxy();
 }
 
 LinkToTextTabHelper::~LinkToTextTabHelper() {}
@@ -31,12 +86,66 @@
   return true;
 }
 
-SharedHighlight LinkToTextTabHelper::GetSharedHighlight() {
-  // TODO(crbug.com/1091918): Call into JS to generate the quote and URL.
-  SharedHighlight highlight(
-      GURL("http://example.com/#:~:text=You%20may%20use%20this%20domain"),
-      tab_util::GetTabTitle(web_state_), @"\"You may use this domain\"");
-  return highlight;
+void LinkToTextTabHelper::GetLinkToText(LinkToTextCallback callback) {
+  base::WeakPtr<LinkToTextTabHelper> weak_ptr = weak_ptr_factory_.GetWeakPtr();
+  web_state_->GetWebFramesManager()->GetMainWebFrame()->CallJavaScriptFunction(
+      kGetLinkToTextJavaScript, {},
+      base::BindOnce(^(const base::Value* response) {
+        if (weak_ptr) {
+          weak_ptr->OnJavaScriptResponseReceived(callback, response);
+        }
+      }),
+      base::TimeDelta::FromMilliseconds(kJavaScriptFunctionCallTimeoutMs));
+}
+
+void LinkToTextTabHelper::OnJavaScriptResponseReceived(
+    LinkToTextCallback callback,
+    const base::Value* response) {
+  LinkToTextPayload* payload = ParseResponse(response);
+
+  if (!payload) {
+    return;
+  }
+
+  callback(payload);
+}
+
+LinkToTextPayload* LinkToTextTabHelper::ParseResponse(
+    const base::Value* response) {
+  if (!response || !web_state_) {
+    return nil;
+  }
+
+  NSString* title = tab_util::GetTabTitle(web_state_);
+  base::Optional<GURL> link = ParseURL(response->FindStringKey("link"));
+  const std::string* selected_text = response->FindStringKey("selectedText");
+  base::Optional<CGRect> source_rect =
+      ParseRect(response->FindKey("selectionRect"));
+
+  // All values must be present to have a valid payload.
+  if (!title || !link || !selected_text || !source_rect) {
+    return nil;
+  }
+
+  return [[LinkToTextPayload alloc]
+       initWithURL:link.value()
+             title:title
+      selectedText:base::SysUTF8ToNSString(*selected_text)
+        sourceView:web_state_->GetView()
+        sourceRect:ConvertToBrowserRect(source_rect.value())];
+}
+
+CGRect LinkToTextTabHelper::ConvertToBrowserRect(CGRect web_view_rect) {
+  if (CGRectEqualToRect(web_view_rect, CGRectZero)) {
+    return web_view_rect;
+  }
+
+  CGFloat zoom_scale = web_view_proxy_.scrollViewProxy.zoomScale;
+  UIEdgeInsets inset = web_view_proxy_.scrollViewProxy.contentInset;
+  return CGRectMake((web_view_rect.origin.x * zoom_scale) + inset.left,
+                    (web_view_rect.origin.y * zoom_scale) + inset.top,
+                    (web_view_rect.size.width * zoom_scale) + kCaretWidth,
+                    web_view_rect.size.height * zoom_scale);
 }
 
 void LinkToTextTabHelper::WebStateDestroyed(web::WebState* web_state) {
diff --git a/ios/chrome/browser/link_to_text/shared_highlight.h b/ios/chrome/browser/link_to_text/shared_highlight.h
deleted file mode 100644
index d431e21..0000000
--- a/ios/chrome/browser/link_to_text/shared_highlight.h
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef IOS_CHROME_BROWSER_LINK_TO_TEXT_SHARED_HIGHLIGHT_H_
-#define IOS_CHROME_BROWSER_LINK_TO_TEXT_SHARED_HIGHLIGHT_H_
-
-#import <UIKit/UIKit.h>
-
-#import "url/gurl.h"
-
-// This struct holds a |URL| with a text fragment linking to |selectedText| on a
-// Web page. It also holds that Web page's |title|.
-struct SharedHighlight {
-  SharedHighlight(const GURL& url, NSString* title, NSString* selectedText)
-      : url(url), title(title), selectedText(selectedText) {}
-
-  GURL url;
-  NSString* title;
-  NSString* selectedText;
-};
-
-#endif  // IOS_CHROME_BROWSER_LINK_TO_TEXT_SHARED_HIGHLIGHT_H_
diff --git a/ios/chrome/browser/overscroll_actions/overscroll_actions_tab_helper_unittest.mm b/ios/chrome/browser/overscroll_actions/overscroll_actions_tab_helper_unittest.mm
index f0dc1901..4d2083a 100644
--- a/ios/chrome/browser/overscroll_actions/overscroll_actions_tab_helper_unittest.mm
+++ b/ios/chrome/browser/overscroll_actions/overscroll_actions_tab_helper_unittest.mm
@@ -62,6 +62,10 @@
     base::test::ios::SpinRunLoopWithMinDelay(base::TimeDelta::FromSecondsD(
         kMinimumPullDurationToTransitionToReadyInSeconds));
     [ui_scroll_view_.delegate scrollViewDidScroll:ui_scroll_view_];
+    // Scroll to content offset below action threshold to cancel bounce
+    // animation.
+    scroll_view_proxy_.contentOffset = CGPointMake(0, -56);
+    // Scroll past action threshold to trigger refresh action.
     scroll_view_proxy_.contentOffset = CGPointMake(0, -293);
     CGPoint target_offset = CGPointMake(0, -92);
     [ui_scroll_view_.delegate scrollViewWillEndDragging:ui_scroll_view_
diff --git a/ios/chrome/browser/ui/browser_view/browser_coordinator.mm b/ios/chrome/browser/ui/browser_view/browser_coordinator.mm
index 02dff7c..aec30fe 100644
--- a/ios/chrome/browser/ui/browser_view/browser_coordinator.mm
+++ b/ios/chrome/browser/ui/browser_view/browser_coordinator.mm
@@ -494,15 +494,12 @@
                            additionalText:command.selectedText
                                  scenario:ActivityScenario::SharedHighlight];
 
-  // TODO(crbug.com/1099268): Get the right share view origin.
   self.sharingCoordinator = [[SharingCoordinator alloc]
       initWithBaseViewController:self.viewController
                          browser:self.browser
                           params:params
-                      originView:self.viewController.activityServicePositioner
-                                     .sourceView
-                      originRect:self.viewController.activityServicePositioner
-                                     .sourceRect];
+                      originView:command.sourceView
+                      originRect:command.sourceRect];
   [self.sharingCoordinator start];
 }
 
diff --git a/ios/chrome/browser/ui/browser_view/browser_view_controller.mm b/ios/chrome/browser/ui/browser_view/browser_view_controller.mm
index 4bfb43a..0b521a1 100644
--- a/ios/chrome/browser/ui/browser_view/browser_view_controller.mm
+++ b/ios/chrome/browser/ui/browser_view/browser_view_controller.mm
@@ -185,6 +185,7 @@
 #import "ios/web/public/ui/crw_web_view_proxy.h"
 #import "ios/web/public/web_state_delegate_bridge.h"
 #import "ios/web/public/web_state_observer_bridge.h"
+#include "ui/base/device_form_factor.h"
 #include "ui/base/l10n/l10n_util.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
@@ -1671,7 +1672,11 @@
       }
       completion:^(id<UIViewControllerTransitionCoordinatorContext> context) {
         BrowserViewController* strongSelf = weakSelf;
-        strongSelf.fullscreenController->ResizeViewport();
+        // Resize horizontal viewport if Smooth Scrolling is on for multiwindow.
+        if (fullscreen::features::ShouldUseSmoothScrolling() &&
+            ui::GetDeviceFormFactor() == ui::DEVICE_FORM_FACTOR_TABLET) {
+          strongSelf.fullscreenController->ResizeHorizontalViewport();
+        }
         if (!base::FeatureList::IsEnabled(kModernTabStrip)) {
           if (strongSelf.tabStripView) {
             [strongSelf.legacyTabStripCoordinator tabStripSizeDidChange];
@@ -2405,6 +2410,11 @@
       self.browserContainerViewController.contentView =
           [self viewForWebState:webState];
     }
+    // Resize horizontal viewport if Smooth Scrolling is on for multiwindow.
+    if (fullscreen::features::ShouldUseSmoothScrolling() &&
+        ui::GetDeviceFormFactor() == ui::DEVICE_FORM_FACTOR_TABLET) {
+      self.fullscreenController->ResizeHorizontalViewport();
+    }
   }
   [self updateToolbar];
 
@@ -3516,10 +3526,6 @@
     if (self.isNTPActiveForCurrentWebState) {
       NewTabPageTabHelper::FromWebState(self.currentWebState)->Deactivate();
     }
-    // The next call ensures that web view content of any window that doesn't
-    // go through viewWillTransitionToSize:withTransitionCoordinator:,
-    // including for the first window, is sized properly.
-    self.fullscreenController->ResizeViewport();
   }
 }
 
@@ -3740,7 +3746,7 @@
 - (void)updateForFullscreenProgress:(CGFloat)progress {
   [self updateHeadersForFullscreenProgress:progress];
   [self updateFootersForFullscreenProgress:progress];
-  if (!fullscreen::features::ShouldScopeFullscreenControllerToBrowser()) {
+  if (!fullscreen::features::ShouldUseSmoothScrolling()) {
     [self updateBrowserViewportForFullscreenProgress:progress];
   }
 }
diff --git a/ios/chrome/browser/ui/commands/share_highlight_command.h b/ios/chrome/browser/ui/commands/share_highlight_command.h
index 80b6e64..e7ae247 100644
--- a/ios/chrome/browser/ui/commands/share_highlight_command.h
+++ b/ios/chrome/browser/ui/commands/share_highlight_command.h
@@ -6,6 +6,7 @@
 #define IOS_CHROME_BROWSER_UI_COMMANDS_SHARE_HIGHLIGHT_COMMAND_H_
 
 #import <Foundation/Foundation.h>
+#import <UIKit/UIKit.h>
 
 class GURL;
 
@@ -14,14 +15,18 @@
 @interface ShareHighlightCommand : NSObject
 
 // Initializes the object with the page's |URL|, |title| and the currently
-// |selectedText|.
+// |selectedText|. |sourceView| represents the view owning the
+// selected text, and |sourceRect| represents the starting bounds of that
+// text.
 - (instancetype)initWithURL:(const GURL&)URL
                       title:(NSString*)title
-               selectedText:(NSString*)selectedText NS_DESIGNATED_INITIALIZER;
+               selectedText:(NSString*)selectedText
+                 sourceView:(UIView*)sourceView
+                 sourceRect:(CGRect)sourceRect NS_DESIGNATED_INITIALIZER;
 - (instancetype)init NS_UNAVAILABLE;
 
 // Page's URL with text fragments.
-@property(nonatomic, readonly) const GURL& URL;
+@property(nonatomic, readonly) GURL URL;
 
 // Page's title.
 @property(copy, nonatomic, readonly) NSString* title;
@@ -29,6 +34,13 @@
 // Selected text on the page.
 @property(copy, nonatomic, readonly) NSString* selectedText;
 
+// View owning the selected text.
+@property(nonatomic, readonly, weak) UIView* sourceView;
+
+// Coordinates representing the starting bounds of the selected text inside
+// |sourceView|.
+@property(nonatomic, readonly, assign) CGRect sourceRect;
+
 @end
 
 #endif  // IOS_CHROME_BROWSER_UI_COMMANDS_SHARE_HIGHLIGHT_COMMAND_H_
diff --git a/ios/chrome/browser/ui/commands/share_highlight_command.mm b/ios/chrome/browser/ui/commands/share_highlight_command.mm
index 8567c47..65b3a2c 100644
--- a/ios/chrome/browser/ui/commands/share_highlight_command.mm
+++ b/ios/chrome/browser/ui/commands/share_highlight_command.mm
@@ -16,11 +16,15 @@
 
 - (instancetype)initWithURL:(const GURL&)URL
                       title:(NSString*)title
-               selectedText:(NSString*)selectedText {
+               selectedText:(NSString*)selectedText
+                 sourceView:(UIView*)sourceView
+                 sourceRect:(CGRect)sourceRect {
   if (self = [super init]) {
     _URL = URL;
     _title = [title copy];
     _selectedText = [selectedText copy];
+    _sourceView = sourceView;
+    _sourceRect = sourceRect;
   }
   return self;
 }
diff --git a/ios/chrome/browser/ui/fullscreen/fullscreen_controller.h b/ios/chrome/browser/ui/fullscreen/fullscreen_controller.h
index 9a9d092..4f109421 100644
--- a/ios/chrome/browser/ui/fullscreen/fullscreen_controller.h
+++ b/ios/chrome/browser/ui/fullscreen/fullscreen_controller.h
@@ -91,8 +91,9 @@
   // 1.0.
   virtual void ExitFullscreen() = 0;
 
-  // Force content resize, when content isn't tracking resize by itself.
-  virtual void ResizeViewport() = 0;
+  // Force horizontal content resize, when content isn't tracking resize by
+  // itself.
+  virtual void ResizeHorizontalViewport() = 0;
 };
 
 #endif  // IOS_CHROME_BROWSER_UI_FULLSCREEN_FULLSCREEN_CONTROLLER_H_
diff --git a/ios/chrome/browser/ui/fullscreen/fullscreen_controller_impl.h b/ios/chrome/browser/ui/fullscreen/fullscreen_controller_impl.h
index 391d556..de79087 100644
--- a/ios/chrome/browser/ui/fullscreen/fullscreen_controller_impl.h
+++ b/ios/chrome/browser/ui/fullscreen/fullscreen_controller_impl.h
@@ -47,7 +47,7 @@
   UIEdgeInsets GetCurrentViewportInsets() const override;
   void EnterFullscreen() override;
   void ExitFullscreen() override;
-  void ResizeViewport() override;
+  void ResizeHorizontalViewport() override;
 
  private:
 
diff --git a/ios/chrome/browser/ui/fullscreen/fullscreen_controller_impl.mm b/ios/chrome/browser/ui/fullscreen/fullscreen_controller_impl.mm
index 17f1b06d..e2eff93 100644
--- a/ios/chrome/browser/ui/fullscreen/fullscreen_controller_impl.mm
+++ b/ios/chrome/browser/ui/fullscreen/fullscreen_controller_impl.mm
@@ -251,12 +251,9 @@
   mediator_.ExitFullscreen();
 }
 
-void FullscreenControllerImpl::ResizeViewport() {
+void FullscreenControllerImpl::ResizeHorizontalViewport() {
   // TODO(crbug.com/1114054) this hack temporarily force change webview's
-  // height to trigger a width recomputation of its content.  It will cause
-  // two renderings on the most liklely very rare case of window resizes.
-  CGFloat height = model_.GetBottomToolbarHeight();
-  CGFloat delta = height > 0 ? -1 : 1;
-  model_.SetBottomToolbarHeight(height + delta);
-  model_.SetBottomToolbarHeight(height);
+  // width insets to trigger a width recomputation of its content. It will cause
+  // two relayouts.
+  mediator_.ResizeHorizontalInsets();
 }
diff --git a/ios/chrome/browser/ui/fullscreen/fullscreen_controller_observer.h b/ios/chrome/browser/ui/fullscreen/fullscreen_controller_observer.h
index 88e0fda..c907145 100644
--- a/ios/chrome/browser/ui/fullscreen/fullscreen_controller_observer.h
+++ b/ios/chrome/browser/ui/fullscreen/fullscreen_controller_observer.h
@@ -47,6 +47,10 @@
   virtual void FullscreenControllerWillShutDown(
       FullscreenController* controller) {}
 
+  // Invoked when |controller| needs to resize its horizontal insets.
+  // TODO(crbug.com/1114054) remove after fixing multiwindow resizing issue.
+  virtual void ResizeHorizontalInsets(FullscreenController* controller) {}
+
  private:
   DISALLOW_COPY_AND_ASSIGN(FullscreenControllerObserver);
 };
diff --git a/ios/chrome/browser/ui/fullscreen/fullscreen_mediator.h b/ios/chrome/browser/ui/fullscreen/fullscreen_mediator.h
index 43864cc..ddec3dc4 100644
--- a/ios/chrome/browser/ui/fullscreen/fullscreen_mediator.h
+++ b/ios/chrome/browser/ui/fullscreen/fullscreen_mediator.h
@@ -57,6 +57,10 @@
   // Instructs the mediator to stop observing its model.
   void Disconnect();
 
+  // Instructs the mediator to signal the need to resize the horizontal insets.
+  // TODO(crbug.com/1114054) remove after fixing multiwindow resizing issue.
+  void ResizeHorizontalInsets();
+
  private:
   // FullscreenModelObserver:
   void FullscreenModelToolbarHeightsUpdated(FullscreenModel* model) override;
diff --git a/ios/chrome/browser/ui/fullscreen/fullscreen_mediator.mm b/ios/chrome/browser/ui/fullscreen/fullscreen_mediator.mm
index d768aa62..adffb46 100644
--- a/ios/chrome/browser/ui/fullscreen/fullscreen_mediator.mm
+++ b/ios/chrome/browser/ui/fullscreen/fullscreen_mediator.mm
@@ -208,3 +208,9 @@
   [animator_ stopAnimation:YES];
   animator_ = nil;
 }
+
+void FullscreenMediator::ResizeHorizontalInsets() {
+  for (auto& observer : observers_) {
+    observer.ResizeHorizontalInsets(controller_);
+  }
+}
diff --git a/ios/chrome/browser/ui/fullscreen/test/test_fullscreen_controller.h b/ios/chrome/browser/ui/fullscreen/test/test_fullscreen_controller.h
index fc1d4f1b..c157f265 100644
--- a/ios/chrome/browser/ui/fullscreen/test/test_fullscreen_controller.h
+++ b/ios/chrome/browser/ui/fullscreen/test/test_fullscreen_controller.h
@@ -40,7 +40,7 @@
   UIEdgeInsets GetCurrentViewportInsets() const override;
   void EnterFullscreen() override;
   void ExitFullscreen() override;
-  void ResizeViewport() override;
+  void ResizeHorizontalViewport() override;
 
   // Calls FullscreenViewportInsetRangeChanged() on observers.
   void OnFullscreenViewportInsetRangeChanged(UIEdgeInsets min_viewport_insets,
diff --git a/ios/chrome/browser/ui/fullscreen/test/test_fullscreen_controller.mm b/ios/chrome/browser/ui/fullscreen/test/test_fullscreen_controller.mm
index 658d204..78f30cf7 100644
--- a/ios/chrome/browser/ui/fullscreen/test/test_fullscreen_controller.mm
+++ b/ios/chrome/browser/ui/fullscreen/test/test_fullscreen_controller.mm
@@ -123,6 +123,6 @@
   }
 }
 
-void TestFullscreenController::ResizeViewport() {
+void TestFullscreenController::ResizeHorizontalViewport() {
   // NOOP in tests.
 }
diff --git a/ios/chrome/browser/ui/link_to_text/BUILD.gn b/ios/chrome/browser/ui/link_to_text/BUILD.gn
index b1a8ef8f..447ab743 100644
--- a/ios/chrome/browser/ui/link_to_text/BUILD.gn
+++ b/ios/chrome/browser/ui/link_to_text/BUILD.gn
@@ -35,3 +35,28 @@
     "//third_party/ocmock",
   ]
 }
+
+source_set("eg2_tests") {
+  defines = [ "CHROME_EARL_GREY_2" ]
+  configs += [
+    "//build/config/compiler:enable_arc",
+    "//build/config/ios:xctest_config",
+  ]
+  testonly = true
+  sources = [ "link_to_text_egtest.mm" ]
+  deps = [
+    "//base",
+    "//base/test:test_support",
+    "//ios/chrome/app/strings:ios_strings_grit",
+    "//ios/chrome/test/earl_grey:eg_test_support+eg2",
+    "//ios/testing/earl_grey:eg_test_support+eg2",
+    "//ios/third_party/earl_grey2:test_lib",
+    "//ios/web/common:features",
+    "//ios/web/public/navigation:navigation",
+    "//ios/web/public/test/http_server",
+    "//net",
+    "//net:test_support",
+    "//ui/base",
+  ]
+  frameworks = [ "UIKit.framework" ]
+}
diff --git a/ios/chrome/browser/ui/link_to_text/OWNERS b/ios/chrome/browser/ui/link_to_text/OWNERS
new file mode 100644
index 0000000..f12b94196
--- /dev/null
+++ b/ios/chrome/browser/ui/link_to_text/OWNERS
@@ -0,0 +1,5 @@
+sebsg@chromium.org
+seblalancette@chromium.org
+
+# TEAM: ios-directory-owners@chromium.org
+# OS: iOS
diff --git a/ios/chrome/browser/ui/link_to_text/link_to_text_egtest.mm b/ios/chrome/browser/ui/link_to_text/link_to_text_egtest.mm
new file mode 100644
index 0000000..f4b2acd
--- /dev/null
+++ b/ios/chrome/browser/ui/link_to_text/link_to_text_egtest.mm
@@ -0,0 +1,172 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#import "base/strings/sys_string_conversions.h"
+#import "base/test/ios/wait_util.h"
+#import "ios/chrome/test/earl_grey/chrome_actions_app_interface.h"
+#import "ios/chrome/test/earl_grey/chrome_earl_grey.h"
+#import "ios/chrome/test/earl_grey/chrome_earl_grey_app_interface.h"
+#import "ios/chrome/test/earl_grey/chrome_earl_grey_ui.h"
+#import "ios/chrome/test/earl_grey/chrome_matchers.h"
+#import "ios/chrome/test/earl_grey/chrome_test_case.h"
+#import "ios/testing/earl_grey/earl_grey_test.h"
+#import "ios/web/common/features.h"
+#import "net/test/embedded_test_server/default_handlers.h"
+#import "net/test/embedded_test_server/http_request.h"
+#import "net/test/embedded_test_server/http_response.h"
+#import "net/test/embedded_test_server/request_handler_util.h"
+
+#if !defined(__has_feature) || !__has_feature(objc_arc)
+#error "This file requires ARC support."
+#endif
+
+namespace {
+
+const char kFirstFragmentText[] = "Hello foo!";
+const char kSecondFragmentText[] = "bar";
+const char kTestPageTextSample[] = "Lorem ipsum";
+
+const char kTestURL[] = "/testPage";
+const char kURLWithTwoFragments[] = "/testPage/#:~:text=Hello%20foo!&text=bar";
+const char kHTMLOfTestPage[] =
+    "<html><body>"
+    "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do "
+    "eiusmod "
+    "tempor incididunt ut labore et dolore magna aliqua. Hello foo! Ut enim ad "
+    "minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip "
+    "ex ea "
+    "commodo consequat. bar</p>"
+    "</body></html>";
+
+const char kTestLongPageURL[] = "/longTestPage";
+const char kLongPageURLWithOneFragment[] =
+    "/longTestPage/#:~:text=Hello%20foo!";
+const char kHTMLOfLongTestPage[] =
+    "<html><body>"
+    "<div style=\"background:blue; height: 4000px; width: 250px;\"></div>"
+    "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do "
+    "eiusmod "
+    "tempor incididunt ut labore et dolore magna aliqua. Hello foo! Ut enim ad "
+    "minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip "
+    "ex ea "
+    "commodo consequat. bar</p>"
+    "<div style=\"background:blue; height: 4000px; width: 250px;\"></div>"
+    "</body></html>";
+
+NSArray<NSString*>* GetMarkedText() {
+  NSString* js = @"(function() {"
+                  "  const marks = document.getElementsByTagName('mark');"
+                  "  const markedText = [];"
+                  "  for (const mark of marks) {"
+                  "    if (mark && mark.innerText) {"
+                  "      markedText.push(mark.innerText);"
+                  "    }"
+                  "  }"
+                  "  return markedText;"
+                  "})();";
+  return [ChromeEarlGrey executeJavaScript:js];
+}
+
+NSString* GetFirstVisibleMarkedText() {
+  NSString* js =
+      @"(function () {"
+       "  const firstMark = document.getElementsByTagName('mark')[0];"
+       "  if (!firstMark) {"
+       "    return '';"
+       "  }"
+       "  const rect = firstMark.getBoundingClientRect();"
+       "  const isVisible = rect.top >= 0 &&"
+       "    rect.bottom <= window.innerHeight &&"
+       "    rect.left >= 0 &&"
+       "    rect.right <= window.innerWidth;"
+       "  return isVisible ? firstMark.innerText : '';"
+       "})();";
+  return [ChromeEarlGrey executeJavaScript:js];
+}
+
+std::unique_ptr<net::test_server::HttpResponse> LoadHtml(
+    const std::string& html,
+    const net::test_server::HttpRequest& request) {
+  std::unique_ptr<net::test_server::BasicHttpResponse> http_response(
+      new net::test_server::BasicHttpResponse);
+  http_response->set_content_type("text/html");
+  http_response->set_content(html);
+  return std::move(http_response);
+}
+
+}  // namespace
+
+// Test class for the scroll-to-text and link-to-text features.
+@interface LinkToTextTestCase : ChromeTestCase
+@end
+
+@implementation LinkToTextTestCase
+
+- (AppLaunchConfiguration)appConfigurationForTestCase {
+  AppLaunchConfiguration config;
+  config.features_enabled.push_back(web::features::kScrollToTextIOS);
+  return config;
+}
+
+- (void)setUp {
+  [super setUp];
+
+  RegisterDefaultHandlers(self.testServer);
+  self.testServer->RegisterRequestHandler(
+      base::BindRepeating(&net::test_server::HandlePrefixedRequest, kTestURL,
+                          base::BindRepeating(&LoadHtml, kHTMLOfTestPage)));
+  self.testServer->RegisterRequestHandler(base::BindRepeating(
+      &net::test_server::HandlePrefixedRequest, kTestLongPageURL,
+      base::BindRepeating(&LoadHtml, kHTMLOfLongTestPage)));
+
+  GREYAssertTrue(self.testServer->Start(), @"Test server failed to start.");
+}
+
+- (void)loadURLPath:(const char*)path {
+  [ChromeEarlGrey loadURL:self.testServer->GetURL(path)];
+}
+
+// Tests that navigating to a URL with text fragments will highlight all
+// fragments.
+- (void)testHighlightAllFragments {
+  [self loadURLPath:kURLWithTwoFragments];
+  [ChromeEarlGrey waitForWebStateContainingText:kTestPageTextSample];
+
+  NSArray<NSString*>* markedText = GetMarkedText();
+
+  GREYAssertEqual(2, markedText.count,
+                  @"Did not get the expected number of marked text.");
+  GREYAssertEqual(kFirstFragmentText, base::SysNSStringToUTF8(markedText[0]),
+                  @"First marked text is not valid.");
+  GREYAssertEqual(kSecondFragmentText, base::SysNSStringToUTF8(markedText[1]),
+                  @"Second marked text is not valid.");
+}
+
+// Tests that a fragment will be scrolled to if it's lower on the page.
+- (void)testScrollToHighlight {
+  [self loadURLPath:kLongPageURLWithOneFragment];
+  [ChromeEarlGrey waitForWebStateContainingText:kTestPageTextSample];
+
+  __block NSString* firstVisibleMark;
+  GREYCondition* scrolledToText = [GREYCondition
+      conditionWithName:@"Did not scroll to marked text."
+                  block:^{
+                    NSString* visibleMarkedText = GetFirstVisibleMarkedText();
+                    if (visibleMarkedText &&
+                        visibleMarkedText != [NSString string]) {
+                      firstVisibleMark = visibleMarkedText;
+                      return YES;
+                    }
+                    return NO;
+                  }];
+
+  GREYAssert([scrolledToText
+                 waitWithTimeout:base::test::ios::kWaitForJSCompletionTimeout],
+             @"Could not find visible marked element.");
+
+  GREYAssertEqual(kFirstFragmentText, base::SysNSStringToUTF8(firstVisibleMark),
+                  @"Visible marked text is not valid.");
+}
+
+@end
diff --git a/ios/chrome/browser/ui/link_to_text/link_to_text_mediator.mm b/ios/chrome/browser/ui/link_to_text/link_to_text_mediator.mm
index 1f543537..7501ec33 100644
--- a/ios/chrome/browser/ui/link_to_text/link_to_text_mediator.mm
+++ b/ios/chrome/browser/ui/link_to_text/link_to_text_mediator.mm
@@ -4,8 +4,8 @@
 
 #include "ios/chrome/browser/ui/link_to_text/link_to_text_mediator.h"
 
+#import "ios/chrome/browser/link_to_text/link_to_text_payload.h"
 #import "ios/chrome/browser/link_to_text/link_to_text_tab_helper.h"
-#import "ios/chrome/browser/link_to_text/shared_highlight.h"
 #import "ios/chrome/browser/ui/commands/activity_service_commands.h"
 #import "ios/chrome/browser/ui/commands/share_highlight_command.h"
 #import "ios/chrome/browser/ui/ui_feature_flags.h"
@@ -52,14 +52,21 @@
 
 - (void)handleLinkToTextSelection {
   DCHECK(base::FeatureList::IsEnabled(kSharedHighlightingIOS));
-  [self shareLinkToText:[self getLinkToTextTabHelper]->GetSharedHighlight()];
+  LinkToTextTabHelper* tabHelper = [self getLinkToTextTabHelper];
+
+  __weak __typeof(self) weakSelf = self;
+  tabHelper->GetLinkToText(^(LinkToTextPayload* payload) {
+    [weakSelf shareLinkToText:payload];
+  });
 }
 
-- (void)shareLinkToText:(SharedHighlight)sharedHighlight {
+- (void)shareLinkToText:(LinkToTextPayload*)payload {
   ShareHighlightCommand* command =
-      [[ShareHighlightCommand alloc] initWithURL:sharedHighlight.url
-                                           title:sharedHighlight.title
-                                    selectedText:sharedHighlight.selectedText];
+      [[ShareHighlightCommand alloc] initWithURL:payload.URL
+                                           title:payload.title
+                                    selectedText:payload.selectedText
+                                      sourceView:payload.sourceView
+                                      sourceRect:payload.sourceRect];
   [self.handler shareHighlight:command];
 }
 
diff --git a/ios/chrome/browser/ui/link_to_text/link_to_text_mediator_unittest.mm b/ios/chrome/browser/ui/link_to_text/link_to_text_mediator_unittest.mm
index d511b4217..0caa741 100644
--- a/ios/chrome/browser/ui/link_to_text/link_to_text_mediator_unittest.mm
+++ b/ios/chrome/browser/ui/link_to_text/link_to_text_mediator_unittest.mm
@@ -8,8 +8,11 @@
 #error "This file requires ARC support."
 #endif
 
+#import "base/run_loop.h"
 #import "base/strings/sys_string_conversions.h"
+#import "base/test/ios/wait_util.h"
 #import "base/test/scoped_feature_list.h"
+#import "base/values.h"
 #import "ios/chrome/browser/link_to_text/link_to_text_tab_helper.h"
 #import "ios/chrome/browser/ui/commands/activity_service_commands.h"
 #import "ios/chrome/browser/ui/commands/share_highlight_command.h"
@@ -17,14 +20,28 @@
 #import "ios/chrome/browser/web_state_list/web_state_list.h"
 #import "ios/chrome/browser/web_state_list/web_state_list_delegate.h"
 #import "ios/chrome/browser/web_state_list/web_state_opener.h"
+#import "ios/web/public/test/fakes/fake_web_frame.h"
+#import "ios/web/public/test/fakes/fake_web_frames_manager.h"
 #import "ios/web/public/test/fakes/test_web_state.h"
+#import "ios/web/public/test/web_task_environment.h"
+#import "ios/web/public/ui/crw_web_view_proxy.h"
+#import "ios/web/public/ui/crw_web_view_scroll_view_proxy.h"
 #import "testing/platform_test.h"
 #import "third_party/ocmock/OCMock/OCMock.h"
 #import "third_party/ocmock/gtest_support.h"
 
 using web::TestWebState;
+using base::test::ios::WaitUntilConditionOrTimeout;
+using base::test::ios::kWaitForJSCompletionTimeout;
 
 namespace {
+const CGFloat kCaretWidth = 4.0;
+const CGFloat kFakeLeftInset = 50;
+const CGFloat kFakeTopInset = 100;
+const char kJavaScriptFunctionName[] = "textFragments.getLinkToText";
+const char kTestQuote[] = "some selected text on a page";
+const char kTestHighlightURL[] = "https://www.chromium.org/";
+
 class TestWebStateListDelegate : public WebStateListDelegate {
   void WillAddWebState(web::WebState* web_state) override {}
   void WebStateDetached(web::WebState* web_state) override {}
@@ -44,6 +61,25 @@
                                    WebStateList::INSERT_ACTIVATE,
                                    WebStateOpener());
 
+    auto web_frames_manager = std::make_unique<web::FakeWebFramesManager>();
+    web_frames_manager_ = web_frames_manager.get();
+    web_state_->SetWebFramesManager(std::move(web_frames_manager));
+
+    auto main_frame = std::make_unique<web::FakeWebFrame>(
+        web::kMainFakeFrameId, true, GURL("https://chromium.org/"));
+    main_frame_ = main_frame.get();
+    web_frames_manager_->AddWebFrame(std::move(main_frame));
+
+    fake_scroll_view_ = [[UIScrollView alloc] init];
+    CRWWebViewScrollViewProxy* scrollview_proxy =
+        [[CRWWebViewScrollViewProxy alloc] init];
+    [scrollview_proxy setScrollView:fake_scroll_view_];
+
+    id mocked_webview_proxy = OCMStrictProtocolMock(@protocol(CRWWebViewProxy));
+    [[[mocked_webview_proxy stub] andReturn:scrollview_proxy] scrollViewProxy];
+
+    web_state_->SetWebViewProxy(mocked_webview_proxy);
+
     LinkToTextTabHelper::CreateForWebState(web_state_);
 
     mediator_ =
@@ -51,20 +87,123 @@
                                                  handler:mocked_handler_];
   }
 
+  void SetLinkToTextResponse(std::unique_ptr<base::Value> value,
+                             CGFloat zoom_scale) {
+    main_frame_->AddJsResultForFunctionCall(std::move(value),
+                                            kJavaScriptFunctionName);
+
+    fake_scroll_view_.contentInset =
+        UIEdgeInsetsMake(kFakeTopInset, kFakeLeftInset, 0, 0);
+
+    id scroll_view_mock = OCMPartialMock(fake_scroll_view_);
+    [[[scroll_view_mock stub] andReturnValue:@(zoom_scale)] zoomScale];
+
+    fake_view_ = [[UIView alloc] init];
+    web_state_->SetView(fake_view_);
+  }
+
+  std::unique_ptr<base::Value> CreateResponse(const std::string& link,
+                                              const std::string& selectedText,
+                                              CGRect selection_rect) {
+    base::Value rect_value(base::Value::Type::DICTIONARY);
+    rect_value.SetDoubleKey("x", selection_rect.origin.x);
+    rect_value.SetDoubleKey("y", selection_rect.origin.y);
+    rect_value.SetDoubleKey("width", selection_rect.size.width);
+    rect_value.SetDoubleKey("height", selection_rect.size.height);
+
+    std::unique_ptr<base::Value> response_value =
+        std::make_unique<base::Value>(base::Value::Type::DICTIONARY);
+    response_value->SetStringKey("link", link);
+    response_value->SetStringKey("selectedText", selectedText);
+    response_value->SetKey("selectionRect", std::move(rect_value));
+    return response_value;
+  }
+
+  web::WebTaskEnvironment task_environment_;
   base::test::ScopedFeatureList feature_list_;
   TestWebStateListDelegate web_state_list_delegate_;
   WebStateList web_state_list_;
   TestWebState* web_state_;
+  web::FakeWebFramesManager* web_frames_manager_;
+  web::FakeWebFrame* main_frame_;
+  UIView* fake_view_;
   LinkToTextMediator* mediator_;
+  UIScrollView* fake_scroll_view_;
   id mocked_handler_;
 };
 
+// Tests that the mediator should, currently, always offer link to text.
 TEST_F(LinkToTextMediatorTest, ShouldOfferLinkToText) {
   EXPECT_TRUE([mediator_ shouldOfferLinkToText]);
 }
 
-TEST_F(LinkToTextMediatorTest, HandleLinkToTextSelectionTriggersCommand) {
-  [[mocked_handler_ expect] shareHighlight:[OCMArg any]];
+// Tests that the shareHighlight command is triggered with the right parameters
+// when the view is not zoomed in.
+TEST_F(LinkToTextMediatorTest, HandleLinkToTextSelectionTriggersCommandNoZoom) {
+  CGFloat zoom = 1;
+  CGRect selection_rect = CGRectMake(100, 150, 250, 250);
+  CGRect expected_client_rect = CGRectMake(150, 250, 250 + kCaretWidth, 250);
+
+  std::unique_ptr<base::Value> fake_response =
+      CreateResponse(kTestHighlightURL, kTestQuote, selection_rect);
+  SetLinkToTextResponse(std::move(fake_response), zoom);
+
+  __block BOOL callback_invoked = NO;
+
+  [[mocked_handler_ expect]
+      shareHighlight:[OCMArg checkWithBlock:^BOOL(
+                                 ShareHighlightCommand* highlight) {
+        EXPECT_TRUE(kTestHighlightURL == highlight.URL);
+        EXPECT_EQ(kTestQuote, base::SysNSStringToUTF8(highlight.selectedText));
+        EXPECT_EQ(fake_view_, highlight.sourceView);
+        EXPECT_TRUE(
+            CGRectEqualToRect(expected_client_rect, highlight.sourceRect));
+        callback_invoked = YES;
+        return YES;
+      }]];
+
   [mediator_ handleLinkToTextSelection];
+
+  ASSERT_TRUE(WaitUntilConditionOrTimeout(kWaitForJSCompletionTimeout, ^BOOL {
+    base::RunLoop().RunUntilIdle();
+    return callback_invoked;
+  }));
+
+  [mocked_handler_ verify];
+}
+
+// Tests that the shareHighlight command is triggered with the right parameters
+// when the current view is zoomed in.
+TEST_F(LinkToTextMediatorTest,
+       HandleLinkToTextSelectionTriggersCommandWithZoom) {
+  CGFloat zoom = 1.5;
+  CGRect selection_rect = CGRectMake(100, 150, 250, 250);
+  CGRect expected_client_rect = CGRectMake(200, 325, 375 + kCaretWidth, 375);
+
+  std::unique_ptr<base::Value> fake_response =
+      CreateResponse(kTestHighlightURL, kTestQuote, selection_rect);
+  SetLinkToTextResponse(std::move(fake_response), zoom);
+
+  __block BOOL callback_invoked = NO;
+
+  [[mocked_handler_ expect]
+      shareHighlight:[OCMArg checkWithBlock:^BOOL(
+                                 ShareHighlightCommand* highlight) {
+        EXPECT_TRUE(kTestHighlightURL == highlight.URL);
+        EXPECT_EQ(kTestQuote, base::SysNSStringToUTF8(highlight.selectedText));
+        EXPECT_EQ(fake_view_, highlight.sourceView);
+        EXPECT_TRUE(
+            CGRectEqualToRect(expected_client_rect, highlight.sourceRect));
+        callback_invoked = YES;
+        return YES;
+      }]];
+
+  [mediator_ handleLinkToTextSelection];
+
+  ASSERT_TRUE(WaitUntilConditionOrTimeout(kWaitForJSCompletionTimeout, ^BOOL {
+    base::RunLoop().RunUntilIdle();
+    return callback_invoked;
+  }));
+
   [mocked_handler_ verify];
 }
diff --git a/ios/chrome/browser/ui/main/scene_controller.mm b/ios/chrome/browser/ui/main/scene_controller.mm
index 8d8ccf7..0bd63f79 100644
--- a/ios/chrome/browser/ui/main/scene_controller.mm
+++ b/ios/chrome/browser/ui/main/scene_controller.mm
@@ -153,9 +153,6 @@
 // browser state level UrlLoadingService instances.
 @property(nonatomic, assign) SceneUrlLoadingService* sceneURLLoadingService;
 
-// A flag that keeps track of the UI initialization for the controlled scene.
-@property(nonatomic, assign) BOOL hasInitializedUI;
-
 // Returns YES if the settings are presented, either from
 // self.settingsNavigationController or from SigninCoordinator.
 @property(nonatomic, assign, readonly, getter=isSettingsViewPresented)
@@ -306,8 +303,8 @@
     // ends.
     return;
   }
-  BOOL initializingUIInColdStart =
-      level > SceneActivationLevelBackground && !self.hasInitializedUI;
+  BOOL initializingUIInColdStart = level > SceneActivationLevelBackground &&
+                                   !self.sceneState.hasInitializedUI;
   if (initializingUIInColdStart) {
     [self initializeUI];
     if (IsMultiwindowSupported()) {
@@ -362,7 +359,8 @@
     }
   }
 
-  if (self.hasInitializedUI && level == SceneActivationLevelUnattached) {
+  if (self.sceneState.hasInitializedUI &&
+      level == SceneActivationLevelUnattached) {
     if (IsMultiwindowSupported()) {
       if (@available(iOS 13, *)) {
         if (IsMultipleScenesSupported()) {
@@ -551,12 +549,12 @@
 #pragma mark - private
 
 - (void)initializeUI {
-  if (self.hasInitializedUI) {
+  if (self.sceneState.hasInitializedUI) {
     return;
   }
 
   [self startUpChromeUI];
-  self.hasInitializedUI = YES;
+  self.sceneState.hasInitializedUI = YES;
 }
 
 // Returns YES if restore prompt can be shown.
@@ -745,7 +743,7 @@
 // This method completely destroys all of the UI. It should be called when the
 // scene is disconnected.
 - (void)teardownUI {
-  if (!self.hasInitializedUI) {
+  if (!self.sceneState.hasInitializedUI) {
     return;  // Nothing to do.
   }
 
@@ -776,7 +774,7 @@
   [self.browserViewWrangler shutdown];
   self.browserViewWrangler = nil;
 
-  self.hasInitializedUI = NO;
+  self.sceneState.hasInitializedUI = NO;
 
   [self.sceneState.appState removeObserver:self];
 }
diff --git a/ios/chrome/browser/ui/main/scene_state.h b/ios/chrome/browser/ui/main/scene_state.h
index c6c0988..1716ec2 100644
--- a/ios/chrome/browser/ui/main/scene_state.h
+++ b/ios/chrome/browser/ui/main/scene_state.h
@@ -100,6 +100,9 @@
 // |UISceneDelegate scene:continueUserActivity:| and needs to be opened.
 @property(nonatomic) NSUserActivity* pendingUserActivity;
 
+// A flag that keeps track of the UI initialization for the controlled scene.
+@property(nonatomic, assign) BOOL hasInitializedUI;
+
 // Adds an observer to this scene state. The observers will be notified about
 // scene state changes per SceneStateObserver protocol.
 - (void)addObserver:(id<SceneStateObserver>)observer;
diff --git a/ios/chrome/browser/ui/main/scene_state.mm b/ios/chrome/browser/ui/main/scene_state.mm
index c3222ad..4b0b747 100644
--- a/ios/chrome/browser/ui/main/scene_state.mm
+++ b/ios/chrome/browser/ui/main/scene_state.mm
@@ -113,6 +113,16 @@
   [self.observers sceneState:self transitionedToActivationLevel:newLevel];
 }
 
+- (void)setHasInitializedUI:(BOOL)hasInitializedUI {
+  if (_hasInitializedUI == hasInitializedUI) {
+    return;
+  }
+  _hasInitializedUI = hasInitializedUI;
+  if (hasInitializedUI) {
+    [self.observers sceneStateHasInitializedUI:self];
+  }
+}
+
 - (id<BrowserInterfaceProvider>)interfaceProvider {
   return self.controller.interfaceProvider;
 }
diff --git a/ios/chrome/browser/ui/main/scene_state_observer.h b/ios/chrome/browser/ui/main/scene_state_observer.h
index 965248a..9bb1621 100644
--- a/ios/chrome/browser/ui/main/scene_state_observer.h
+++ b/ios/chrome/browser/ui/main/scene_state_observer.h
@@ -26,6 +26,8 @@
 - (void)sceneStateWillHideModalOverlay:(SceneState*)sceneState;
 // Notifies when presentingModalOverlay has been set to false.
 - (void)sceneStateDidHideModalOverlay:(SceneState*)sceneState;
+// Notifies when hasInitializedUI has been set.
+- (void)sceneStateHasInitializedUI:(SceneState*)sceneState;
 // Notifies when URLContexts have been added to |URLContextsToOpen|.
 - (void)sceneState:(SceneState*)sceneState
     hasPendingURLs:(NSSet<UIOpenURLContext*>*)URLContexts
diff --git a/ios/chrome/browser/ui/settings/password/passwords_settings_egtest.mm b/ios/chrome/browser/ui/settings/password/passwords_settings_egtest.mm
index bc6b236..c7f6069 100644
--- a/ios/chrome/browser/ui/settings/password/passwords_settings_egtest.mm
+++ b/ios/chrome/browser/ui/settings/password/passwords_settings_egtest.mm
@@ -1484,13 +1484,16 @@
 
 // Checks that attempts to edit a username to a value which is already used for
 // the same domain fails.
-// TODO(crbug.com/1140400): Fails on device for iPad 6th iOS 12.4.
-#if TARGET_IPHONE_SIMULATOR
-#define MAYBE_testEditUsernameFails testEditUsernameFails
-#else
-#define MAYBE_testEditUsernameFails DISABLED_testEditUsernameFails
+- (void)testEditUsernameFails {
+#if !TARGET_OS_SIMULATOR
+  // TODO(crbug.com/1140400): These seem to fail on device only downstream,
+  // iOS 12.4 only.
+  if (@available(iOS 13, *)) {
+  } else {
+    EARL_GREY_TEST_DISABLED(@"Test disabled on iOS12 device.");
+  }
 #endif
-- (void)MAYBE_testEditUsernameFails {
+
   GREYAssert(
       [PasswordSettingsAppInterface saveExamplePassword:@"concrete password"
                                                userName:@"concrete username1"
diff --git a/ios/chrome/browser/ui/tab_strip/BUILD.gn b/ios/chrome/browser/ui/tab_strip/BUILD.gn
index 7d7d7c1..5260991 100644
--- a/ios/chrome/browser/ui/tab_strip/BUILD.gn
+++ b/ios/chrome/browser/ui/tab_strip/BUILD.gn
@@ -21,6 +21,8 @@
 source_set("tab_strip_ui") {
   configs += [ "//build/config/compiler:enable_arc" ]
   sources = [
+    "tab_strip_cell.h",
+    "tab_strip_cell.mm",
     "tab_strip_view_controller.h",
     "tab_strip_view_controller.mm",
     "tab_strip_view_layout.h",
@@ -29,6 +31,7 @@
   deps = [
     "//ios/chrome/browser/browser_state",
     "//ios/chrome/browser/main:public",
+    "//ios/chrome/common/ui/colors",
   ]
   frameworks = [ "UIKit.framework" ]
 }
diff --git a/ios/chrome/browser/ui/tab_strip/tab_strip_cell.h b/ios/chrome/browser/ui/tab_strip/tab_strip_cell.h
new file mode 100644
index 0000000..f78635be
--- /dev/null
+++ b/ios/chrome/browser/ui/tab_strip/tab_strip_cell.h
@@ -0,0 +1,18 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef IOS_CHROME_BROWSER_UI_TAB_STRIP_TAB_STRIP_CELL_H_
+#define IOS_CHROME_BROWSER_UI_TAB_STRIP_TAB_STRIP_CELL_H_
+
+#import <UIKit/UIKit.h>
+
+// UICollectionViewCell that contains a Tab title with a leading imageView
+// and a close tab button.
+@interface TabStripCell : UICollectionViewCell
+
+@property(nonatomic, strong) UILabel* titleLabel;
+
+@end
+
+#endif  // IOS_CHROME_BROWSER_UI_TAB_STRIP_TAB_STRIP_CELL_H_
diff --git a/ios/chrome/browser/ui/tab_strip/tab_strip_cell.mm b/ios/chrome/browser/ui/tab_strip/tab_strip_cell.mm
new file mode 100644
index 0000000..5ade137
--- /dev/null
+++ b/ios/chrome/browser/ui/tab_strip/tab_strip_cell.mm
@@ -0,0 +1,84 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#import "ios/chrome/browser/ui/tab_strip/tab_strip_cell.h"
+
+#import "ios/chrome/common/ui/colors/semantic_color_names.h"
+
+#if !defined(__has_feature) || !__has_feature(objc_arc)
+#error "This file requires ARC support."
+#endif
+
+namespace {
+// Tab close button insets.
+const CGFloat kTabBackgroundLeftCapInset = 34.0;
+const CGFloat kFaviconInset = 28;
+const CGFloat kTitleInset = 10.0;
+}  // namespace
+
+@implementation TabStripCell
+
+- (instancetype)initWithFrame:(CGRect)frame {
+  if ((self = [super initWithFrame:frame])) {
+    NSString* imageName = @"tabstrip_background_tab";
+    UIImage* image = [UIImage imageNamed:imageName];
+    UIEdgeInsets insets =
+        UIEdgeInsetsMake(0, kTabBackgroundLeftCapInset, image.size.height + 1.0,
+                         image.size.width - kTabBackgroundLeftCapInset + 1.0);
+    self.backgroundView = [[UIImageView alloc]
+        initWithImage:[image resizableImageWithCapInsets:insets]];
+
+    UIImage* favicon = [[UIImage imageNamed:@"default_world_favicon"]
+        imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
+    UIImageView* faviconView = [[UIImageView alloc] initWithImage:favicon];
+    faviconView.tintColor = [UIColor colorNamed:kGrey500Color];
+    [self.contentView addSubview:faviconView];
+    faviconView.translatesAutoresizingMaskIntoConstraints = NO;
+    [NSLayoutConstraint activateConstraints:@[
+      [faviconView.leadingAnchor
+          constraintEqualToAnchor:self.contentView.leadingAnchor
+                         constant:kFaviconInset],
+      [faviconView.centerYAnchor
+          constraintEqualToAnchor:self.contentView.centerYAnchor],
+    ]];
+
+    UIImage* close = [[UIImage imageNamed:@"grid_cell_close_button"]
+        imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
+    UIButton* closeButton = [UIButton buttonWithType:UIButtonTypeCustom];
+    [closeButton setImage:close forState:UIControlStateNormal];
+    closeButton.tintColor = [UIColor colorNamed:kGrey500Color];
+    [self.contentView addSubview:closeButton];
+    closeButton.translatesAutoresizingMaskIntoConstraints = NO;
+    [NSLayoutConstraint activateConstraints:@[
+      [closeButton.trailingAnchor
+          constraintEqualToAnchor:self.contentView.trailingAnchor
+                         constant:-kFaviconInset],
+      [closeButton.centerYAnchor
+          constraintEqualToAnchor:self.contentView.centerYAnchor],
+    ]];
+
+    UILabel* titleLabel = [[UILabel alloc] init];
+    [self.contentView addSubview:titleLabel];
+    titleLabel.translatesAutoresizingMaskIntoConstraints = NO;
+    [NSLayoutConstraint activateConstraints:@[
+      [titleLabel.leadingAnchor
+          constraintEqualToAnchor:faviconView.trailingAnchor
+                         constant:kTitleInset],
+      [titleLabel.trailingAnchor
+          constraintLessThanOrEqualToAnchor:closeButton.leadingAnchor
+                                   constant:-kTitleInset],
+      [titleLabel.centerYAnchor
+          constraintEqualToAnchor:faviconView.centerYAnchor],
+    ]];
+    self.titleLabel = titleLabel;
+  }
+  return self;
+}
+
+- (void)prepareForReuse {
+  [super prepareForReuse];
+  self.titleLabel.text = nil;
+}
+
+@end
diff --git a/ios/chrome/browser/ui/tab_strip/tab_strip_coordinator.mm b/ios/chrome/browser/ui/tab_strip/tab_strip_coordinator.mm
index 4a0907b..19f0ee1 100644
--- a/ios/chrome/browser/ui/tab_strip/tab_strip_coordinator.mm
+++ b/ios/chrome/browser/ui/tab_strip/tab_strip_coordinator.mm
@@ -13,6 +13,8 @@
 #error "This file requires ARC support."
 #endif
 
+@protocol TabStripContaining;
+
 @implementation TabStripCoordinator
 
 #pragma mark - ChromeCoordinator
diff --git a/ios/chrome/browser/ui/tab_strip/tab_strip_view_controller.mm b/ios/chrome/browser/ui/tab_strip/tab_strip_view_controller.mm
index 91ce870..e9d1b0a 100644
--- a/ios/chrome/browser/ui/tab_strip/tab_strip_view_controller.mm
+++ b/ios/chrome/browser/ui/tab_strip/tab_strip_view_controller.mm
@@ -4,6 +4,7 @@
 
 #import "ios/chrome/browser/ui/tab_strip/tab_strip_view_controller.h"
 
+#import "ios/chrome/browser/ui/tab_strip/tab_strip_cell.h"
 #import "ios/chrome/browser/ui/tab_strip/tab_strip_view_layout.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
@@ -12,6 +13,10 @@
 
 @implementation TabStripViewController
 
+namespace {
+static NSString* const kReuseIdentifier = @"TabView";
+}  // namespace
+
 - (instancetype)init {
   TabStripViewLayout* layout = [[TabStripViewLayout alloc] init];
   if (self = [super initWithCollectionViewLayout:layout]) {
@@ -23,6 +28,22 @@
   [super viewDidLoad];
   self.view.translatesAutoresizingMaskIntoConstraints = NO;
   self.collectionView.alwaysBounceHorizontal = YES;
+  [self.collectionView registerClass:[TabStripCell class]
+          forCellWithReuseIdentifier:kReuseIdentifier];
+}
+
+- (NSInteger)numberOfSectionsInCollectionView:
+    (UICollectionView*)collectionView {
+  return 1;
+}
+
+- (UICollectionViewCell*)collectionView:(UICollectionView*)collectionView
+                 cellForItemAtIndexPath:(NSIndexPath*)indexPath {
+  TabStripCell* cell = (TabStripCell*)[collectionView
+      dequeueReusableCellWithReuseIdentifier:kReuseIdentifier
+                                forIndexPath:indexPath];
+  cell.titleLabel.text = nil;
+  return cell;
 }
 
 @end
diff --git a/ios/chrome/test/earl_grey2/BUILD.gn b/ios/chrome/test/earl_grey2/BUILD.gn
index d45ae2f..bf372be 100644
--- a/ios/chrome/test/earl_grey2/BUILD.gn
+++ b/ios/chrome/test/earl_grey2/BUILD.gn
@@ -153,6 +153,7 @@
     "//ios/chrome/browser/ui/history:eg2_tests",
     "//ios/chrome/browser/ui/infobars:eg2_tests",
     "//ios/chrome/browser/ui/keyboard:eg2_tests",
+    "//ios/chrome/browser/ui/link_to_text:eg2_tests",
     "//ios/chrome/browser/ui/ntp:eg2_tests",
     "//ios/chrome/browser/ui/omnibox:eg2_tests",
     "//ios/chrome/browser/ui/omnibox/popup:eg2_tests",
diff --git a/ios/web/web_state/js/resources/text_fragments.js b/ios/web/web_state/js/resources/text_fragments.js
index d5bd4405..f989ccb 100644
--- a/ios/web/web_state/js/resources/text_fragments.js
+++ b/ios/web/web_state/js/resources/text_fragments.js
@@ -33,6 +33,35 @@
     }
   }
 
+  __gCrWeb.textFragments.getLinkToText = function() {
+    const selection = window.getSelection();
+    const selectedText = `"${selection.toString()}"`;
+    const selectionRect = {
+      x: 0,
+      y: 0,
+      width: 0,
+      height: 0
+    };
+
+    if (selection.rangeCount) {
+      const domRect = selection.getRangeAt(0).getClientRects()[0];
+      selectionRect.x = domRect.x;
+      selectionRect.y = domRect.y;
+      selectionRect.width = domRect.width;
+      selectionRect.height = domRect.height;
+    }
+
+    // TODO(crbug.com/1091918): Call into the JavaScript text-fragments-polyfill
+    // library to generate the actual URL.
+    const link = 'http://example.com/#:~:text=You%20may%20use%20this%20domain';
+
+    return {
+      link: link,
+      selectedText: selectedText,
+      selectionRect: selectionRect
+    };
+  }
+
   /**
    * Does the actual work for handleTextFragments.
    */
diff --git a/ios/web_view/internal/autofill/cwv_autofill_form_unittest.mm b/ios/web_view/internal/autofill/cwv_autofill_form_unittest.mm
index d1bb1d7..2a42039b 100644
--- a/ios/web_view/internal/autofill/cwv_autofill_form_unittest.mm
+++ b/ios/web_view/internal/autofill/cwv_autofill_form_unittest.mm
@@ -7,12 +7,15 @@
 #import <Foundation/Foundation.h>
 #include <memory>
 
+#include "base/path_service.h"
 #include "base/strings/sys_string_conversions.h"
 #include "components/autofill/core/browser/autofill_test_utils.h"
 #include "components/autofill/core/browser/form_structure.h"
+#include "components/autofill/core/browser/pattern_provider/test_pattern_provider.h"
+#include "ios/web_view/test/test_with_locale_and_resources.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #import "testing/gtest_mac.h"
-#include "testing/platform_test.h"
+#include "ui/base/resource/resource_bundle.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
 #error "This file requires ARC support."
@@ -20,10 +23,19 @@
 
 namespace ios_web_view {
 
-using CWVAutofillFormTest = PlatformTest;
+using CWVAutofillFormTest = TestWithLocaleAndResources;
 
 // Tests CWVAutofillForm initialization.
 TEST_F(CWVAutofillFormTest, Initialization) {
+  // Load resources that are generated by the WebView build.
+  // The resources contain the configuration for the PatternProvider.
+  base::FilePath pak_path;
+  base::PathService::Get(base::DIR_MODULE, &pak_path);
+  pak_path = pak_path.AppendASCII("web_view_resources.pak");
+  ui::ResourceBundle::GetSharedInstance().AddDataPackFromPath(
+      pak_path, ui::SCALE_FACTOR_NONE);
+
+  autofill::TestPatternProvider test_pattern_provider;
   autofill::FormData form_data;
   autofill::test::CreateTestAddressFormData(&form_data);
   std::unique_ptr<autofill::FormStructure> form_structure =
diff --git a/media/mojo/mojom/speech_recognition_service.mojom b/media/mojo/mojom/speech_recognition_service.mojom
index 270aecb..f85ef0e4 100644
--- a/media/mojo/mojom/speech_recognition_service.mojom
+++ b/media/mojo/mojom/speech_recognition_service.mojom
@@ -78,3 +78,21 @@
   // final result.
   bool is_final;
 };
+
+// The interface used to notify the speech recognition client of events
+// triggered by the browser. The remote lives in the browser process and the
+// receiver lives in the renderer process.
+interface SpeechRecognitionAvailabilityObserver {
+  // Notify the speech recognition client when speech recognition availability
+  // changes.
+  SpeechRecognitionAvailabilityChanged(bool is_speech_recognition_available);
+};
+
+// This interface between the speech recognition client and the browser.
+// The remote lives in the renderer process and the receiver lives in the
+// browser process.
+interface SpeechRecognitionClientBrowserInterface {
+  // Bind the speech recognition availability observer.
+  BindSpeechRecognitionAvailabilityObserver(
+    pending_remote<SpeechRecognitionAvailabilityObserver> observer);
+};
diff --git a/media/renderers/audio_renderer_impl.cc b/media/renderers/audio_renderer_impl.cc
index 6d42e90..bf96c3f 100644
--- a/media/renderers/audio_renderer_impl.cc
+++ b/media/renderers/audio_renderer_impl.cc
@@ -389,9 +389,9 @@
 
 #if !defined(OS_ANDROID)
   if (speech_recognition_client_) {
-    speech_recognition_client_->SetOnReadyCallback(
+    speech_recognition_client_->SetOnReadyCallback(BindToCurrentLoop(
         base::BindOnce(&AudioRendererImpl::EnableSpeechRecognition,
-                       weak_factory_.GetWeakPtr()));
+                       weak_factory_.GetWeakPtr())));
   }
 #endif
 }
diff --git a/net/BUILD.gn b/net/BUILD.gn
index 5dc78af..6867667 100644
--- a/net/BUILD.gn
+++ b/net/BUILD.gn
@@ -945,7 +945,6 @@
       "quic/quic_transport_error.cc",
       "quic/quic_transport_error.h",
       "quiche/common/platform/impl/quiche_arraysize_impl.h",
-      "quiche/common/platform/impl/quiche_endian_impl.h",
       "quiche/common/platform/impl/quiche_export_impl.h",
       "quiche/common/platform/impl/quiche_logging_impl.h",
       "quiche/common/platform/impl/quiche_map_util_impl.h",
@@ -1033,7 +1032,6 @@
       "spdy/multiplexed_session.h",
       "spdy/platform/impl/spdy_bug_tracker_impl.h",
       "spdy/platform/impl/spdy_containers_impl.h",
-      "spdy/platform/impl/spdy_endianness_util_impl.h",
       "spdy/platform/impl/spdy_estimate_memory_usage_impl.h",
       "spdy/platform/impl/spdy_flags_impl.cc",
       "spdy/platform/impl/spdy_flags_impl.h",
diff --git a/net/quic/mock_encrypter.cc b/net/quic/mock_encrypter.cc
index bef63c3f..05a1123 100644
--- a/net/quic/mock_encrypter.cc
+++ b/net/quic/mock_encrypter.cc
@@ -77,6 +77,10 @@
   return plaintext_size + kPaddingSize;
 }
 
+quic::QuicPacketCount MockEncrypter::GetConfidentialityLimit() const {
+  return std::numeric_limits<quic::QuicPacketCount>::max();
+}
+
 absl::string_view MockEncrypter::GetKey() const {
   return absl::string_view();
 }
diff --git a/net/quic/mock_encrypter.h b/net/quic/mock_encrypter.h
index e15b01f..c6939ab 100644
--- a/net/quic/mock_encrypter.h
+++ b/net/quic/mock_encrypter.h
@@ -6,6 +6,7 @@
 #define NET_QUIC_MOCK_ENCRYPTER_H_
 
 #include <cstddef>
+#include <limits>
 
 #include "base/compiler_specific.h"
 #include "base/macros.h"
@@ -41,6 +42,7 @@
   size_t GetIVSize() const override;
   size_t GetMaxPlaintextSize(size_t ciphertext_size) const override;
   size_t GetCiphertextSize(size_t plaintext_size) const override;
+  quic::QuicPacketCount GetConfidentialityLimit() const override;
   absl::string_view GetKey() const override;
   absl::string_view GetNoncePrefix() const override;
 
diff --git a/net/quic/quic_flags_list.h b/net/quic/quic_flags_list.h
index d644abf..ec374c9 100644
--- a/net/quic/quic_flags_list.h
+++ b/net/quic/quic_flags_list.h
@@ -100,13 +100,6 @@
 // ACK frame are sent and processed.
 QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_send_timestamps, false)
 
-// When in STARTUP and recovery, do not add bytes_acked to QUIC BBR's CWND in
-// CalculateCongestionWindow()
-QUIC_FLAG(
-    bool,
-    FLAGS_quic_reloadable_flag_quic_bbr_no_bytes_acked_in_startup_recovery,
-    false)
-
 // If true and using Leto for QUIC shared-key calculations, GFE will react to a
 // failure to contact Leto by sending a REJ containing a fallback ServerConfig,
 // allowing the client to continue the handshake.
@@ -500,3 +493,19 @@
     bool,
     FLAGS_quic_reloadable_flag_quic_bbr2_no_exit_startup_on_loss_with_bw_growth,
     false)
+
+// If non-zero and key update is allowed, the maximum number of packets sent for
+// each key phase before initiating a key update.
+QUIC_FLAG(int64_t, FLAGS_quic_key_update_confidentiality_limit, 0)
+
+// Honor the AEAD confidentiality and integrity limits by initiating key update
+// (if enabled) and/or closing the connection, as necessary.
+QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_enable_aead_limits, false)
+
+// If true, try to process undecryptable packets at the end of
+// TlsServerHandshaker::DecryptCallback, if it is callback is run
+// asynchronously.
+QUIC_FLAG(
+    bool,
+    FLAGS_quic_reloadable_flag_quic_process_undecryptable_packets_after_async_decrypt_callback,
+    false)
diff --git a/net/quiche/common/platform/impl/quiche_endian_impl.h b/net/quiche/common/platform/impl/quiche_endian_impl.h
deleted file mode 100644
index a29fb5d..0000000
--- a/net/quiche/common/platform/impl/quiche_endian_impl.h
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2019 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 NET_QUICHE_COMMON_PLATFORM_IMPL_QUICHE_ENDIAN_IMPL_H_
-#define NET_QUICHE_COMMON_PLATFORM_IMPL_QUICHE_ENDIAN_IMPL_H_
-
-#include "base/sys_byteorder.h"
-#include "build/build_config.h"
-
-namespace quiche {
-
-class QuicheEndianImpl {
- public:
-  // Convert |x| from host order (can be either little or big endian depending
-  // on the platform) to network order (big endian).
-  static uint16_t HostToNet16(uint16_t x) { return base::HostToNet16(x); }
-  static uint32_t HostToNet32(uint32_t x) { return base::HostToNet32(x); }
-  static uint64_t HostToNet64(uint64_t x) { return base::HostToNet64(x); }
-
-  // Convert |x| from network order (big endian) to host order (can be either
-  // little or big endian depending on the platform).
-  static uint16_t NetToHost16(uint16_t x) { return base::NetToHost16(x); }
-  static uint32_t NetToHost32(uint32_t x) { return base::NetToHost32(x); }
-  static uint64_t NetToHost64(uint64_t x) { return base::NetToHost64(x); }
-
-  // Returns true if current host order is little endian.
-  static bool HostIsLittleEndian() {
-#if defined(ARCH_CPU_LITTLE_ENDIAN)
-    return true;
-#else
-    return false;
-#endif
-  }
-};
-
-}  // namespace quiche
-
-#endif  // NET_QUICHE_COMMON_PLATFORM_IMPL_QUICHE_ENDIAN_IMPL_H_
diff --git a/net/spdy/platform/impl/spdy_endianness_util_impl.h b/net/spdy/platform/impl/spdy_endianness_util_impl.h
deleted file mode 100644
index 901f5ba1..0000000
--- a/net/spdy/platform/impl/spdy_endianness_util_impl.h
+++ /dev/null
@@ -1,34 +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 NET_SPDY_PLATFORM_IMPL_SPDY_ENDIANNESS_UTIL_IMPL_H_
-#define NET_SPDY_PLATFORM_IMPL_SPDY_ENDIANNESS_UTIL_IMPL_H_
-
-#include "base/sys_byteorder.h"
-
-inline uint16_t SpdyNetToHost16Impl(uint16_t x) {
-  return base::NetToHost16(x);
-}
-
-inline uint32_t SpdyNetToHost32Impl(uint32_t x) {
-  return base::NetToHost32(x);
-}
-
-inline uint64_t SpdyNetToHost64Impl(uint64_t x) {
-  return base::NetToHost64(x);
-}
-
-inline uint16_t SpdyHostToNet16Impl(uint16_t x) {
-  return base::HostToNet16(x);
-}
-
-inline uint32_t SpdyHostToNet32Impl(uint32_t x) {
-  return base::HostToNet32(x);
-}
-
-inline uint64_t SpdyHostToNet64Impl(uint64_t x) {
-  return base::HostToNet64(x);
-}
-
-#endif  // NET_SPDY_PLATFORM_IMPL_SPDY_ENDIANNESS_UTIL_IMPL_H_
diff --git a/net/test/embedded_test_server/default_handlers.cc b/net/test/embedded_test_server/default_handlers.cc
index aa9d86e..465cc880 100644
--- a/net/test/embedded_test_server/default_handlers.cc
+++ b/net/test/embedded_test_server/default_handlers.cc
@@ -104,6 +104,25 @@
   return http_response;
 }
 
+// TODO(https://crbug.com/1138913): Remove when request handlers are
+// implementable in Android's embedded test server implementation
+std::unique_ptr<HttpResponse> HandleEchoCriticalHeader(
+    const HttpRequest& request) {
+  auto http_response = std::make_unique<BasicHttpResponse>();
+
+  http_response->set_content_type("text/plain");
+  http_response->AddCustomHeader("Access-Control-Allow-Origin", "*");
+
+  http_response->AddCustomHeader("Accept-CH", "UA-Platform");
+  http_response->AddCustomHeader("Critical-CH", "UA-Platform");
+
+  http_response->set_content(
+      request.headers.find("Sec-CH-UA-Mobile")->second +
+      request.headers.find("Sec-CH-UA-Platform")->second);
+
+  return http_response;
+}
+
 // /echo?status=STATUS
 // Responds with the request body as the response body and
 // a status code of STATUS.
@@ -799,6 +818,8 @@
   server->RegisterDefaultHandler(PREFIXED_HANDLER("/echoall", &HandleEchoAll));
   server->RegisterDefaultHandler(PREFIXED_HANDLER("/echo-raw", &HandleEchoRaw));
   server->RegisterDefaultHandler(
+      PREFIXED_HANDLER("/echocriticalheader", &HandleEchoCriticalHeader));
+  server->RegisterDefaultHandler(
       PREFIXED_HANDLER("/set-cookie", &HandleSetCookie));
   server->RegisterDefaultHandler(
       PREFIXED_HANDLER("/set-invalid-cookie", &HandleSetInvalidCookie));
diff --git a/net/third_party/quiche/BUILD.gn b/net/third_party/quiche/BUILD.gn
index 5016202..f702a40 100644
--- a/net/third_party/quiche/BUILD.gn
+++ b/net/third_party/quiche/BUILD.gn
@@ -24,7 +24,6 @@
   if (!is_nacl) {
     sources += [
       "src/common/platform/api/quiche_arraysize.h",
-      "src/common/platform/api/quiche_endian.h",
       "src/common/platform/api/quiche_export.h",
       "src/common/platform/api/quiche_logging.h",
       "src/common/platform/api/quiche_ptr_util.h",
@@ -37,6 +36,7 @@
       "src/common/quiche_data_reader.h",
       "src/common/quiche_data_writer.cc",
       "src/common/quiche_data_writer.h",
+      "src/common/quiche_endian.h",
       "src/common/simple_linked_hash_map.h",
       "src/http2/decoder/decode_buffer.cc",
       "src/http2/decoder/decode_buffer.h",
@@ -612,7 +612,6 @@
       "src/spdy/core/zero_copy_output_buffer.h",
       "src/spdy/platform/api/spdy_bug_tracker.h",
       "src/spdy/platform/api/spdy_containers.h",
-      "src/spdy/platform/api/spdy_endianness_util.h",
       "src/spdy/platform/api/spdy_estimate_memory_usage.h",
       "src/spdy/platform/api/spdy_flags.h",
       "src/spdy/platform/api/spdy_logging.h",
@@ -1242,10 +1241,10 @@
 
     # TODO(rch): Re-enable once the SLOW_TEST annotation is added.
     # "src/quic/core/congestion_control/bbr2_simulator_test.cc",
-    "src/common/platform/api/quiche_endian_test.cc",
     "src/common/platform/api/quiche_str_cat_test.cc",
     "src/common/platform/api/quiche_text_utils_test.cc",
     "src/common/platform/api/quiche_time_utils_test.cc",
+    "src/common/quiche_endian_test.cc",
     "src/quic/core/congestion_control/bbr_sender_test.cc",
     "src/quic/core/congestion_control/cubic_bytes_test.cc",
     "src/quic/core/congestion_control/general_loss_algorithm_test.cc",
diff --git a/pdf/out_of_process_instance.cc b/pdf/out_of_process_instance.cc
index a7f48a5..0a1c970a 100644
--- a/pdf/out_of_process_instance.cc
+++ b/pdf/out_of_process_instance.cc
@@ -2189,6 +2189,15 @@
   PostMessage(message);
 }
 
+void OutOfProcessInstance::SetSelectedText(const std::string& selected_text) {
+  pp::PDF::SetSelectedText(this, selected_text.c_str());
+}
+
+void OutOfProcessInstance::SetLinkUnderCursor(
+    const std::string& link_under_cursor) {
+  pp::PDF::SetLinkUnderCursor(this, link_under_cursor.c_str());
+}
+
 void OutOfProcessInstance::ProcessPreviewPageInfo(const std::string& url,
                                                   int dest_page_index) {
   DCHECK(IsPrintPreview());
diff --git a/pdf/out_of_process_instance.h b/pdf/out_of_process_instance.h
index f1869af5..86a7487 100644
--- a/pdf/out_of_process_instance.h
+++ b/pdf/out_of_process_instance.h
@@ -163,6 +163,8 @@
   void EnteredEditMode() override;
   float GetToolbarHeightInScreenCoords() override;
   void DocumentFocusChanged(bool document_has_focus) override;
+  void SetSelectedText(const std::string& selected_text) override;
+  void SetLinkUnderCursor(const std::string& link_under_cursor) override;
 
   // PreviewModeClient::Client:
   void PreviewDocumentLoadComplete() override;
diff --git a/pdf/pdf_engine.h b/pdf/pdf_engine.h
index 4a3ad41..a8299d6c 100644
--- a/pdf/pdf_engine.h
+++ b/pdf/pdf_engine.h
@@ -272,6 +272,12 @@
 
     // Notifies the client about focus changes for the document.
     virtual void DocumentFocusChanged(bool document_has_focus) {}
+
+    // Sets selected text.
+    virtual void SetSelectedText(const std::string& selected_text) = 0;
+
+    // Sets the link under cursor.
+    virtual void SetLinkUnderCursor(const std::string& link_under_cursor) = 0;
   };
 
   struct AccessibilityLinkInfo {
diff --git a/pdf/pdf_view_web_plugin.cc b/pdf/pdf_view_web_plugin.cc
index 3d8caee..08e8833b1 100644
--- a/pdf/pdf_view_web_plugin.cc
+++ b/pdf/pdf_view_web_plugin.cc
@@ -285,6 +285,15 @@
 
 void PdfViewWebPlugin::DocumentFocusChanged(bool document_has_focus) {}
 
+void PdfViewWebPlugin::SetSelectedText(const std::string& selected_text) {
+  NOTIMPLEMENTED();
+}
+
+void PdfViewWebPlugin::SetLinkUnderCursor(
+    const std::string& link_under_cursor) {
+  NOTIMPLEMENTED();
+}
+
 bool PdfViewWebPlugin::IsValid() const {
   return container_ && container_->GetDocument().GetFrame();
 }
diff --git a/pdf/pdf_view_web_plugin.h b/pdf/pdf_view_web_plugin.h
index e396dad..ce2e99c 100644
--- a/pdf/pdf_view_web_plugin.h
+++ b/pdf/pdf_view_web_plugin.h
@@ -100,6 +100,8 @@
   void EnteredEditMode() override;
   float GetToolbarHeightInScreenCoords() override;
   void DocumentFocusChanged(bool document_has_focus) override;
+  void SetSelectedText(const std::string& selected_text) override;
+  void SetLinkUnderCursor(const std::string& link_under_cursor) override;
 
   // BlinkUrlLoader::Client:
   bool IsValid() const override;
diff --git a/pdf/pdfium/pdfium_engine.cc b/pdf/pdfium/pdfium_engine.cc
index 5126f64d..37e3931 100644
--- a/pdf/pdfium/pdfium_engine.cc
+++ b/pdf/pdfium/pdfium_engine.cc
@@ -350,21 +350,6 @@
   }
 }
 
-PDFiumEngine::SetSelectedTextFunction g_set_selected_text_func_for_testing =
-    nullptr;
-
-void SetSelectedText(pp::Instance* instance, const std::string& selected_text) {
-  pp::PDF::SetSelectedText(instance, selected_text.c_str());
-}
-
-PDFiumEngine::SetLinkUnderCursorFunction
-    g_set_link_under_cursor_func_for_testing = nullptr;
-
-void SetLinkUnderCursor(pp::Instance* instance,
-                        const std::string& link_under_cursor) {
-  pp::PDF::SetLinkUnderCursor(instance, link_under_cursor.c_str());
-}
-
 PP_PrivateFocusObjectType GetAnnotationFocusType(
     FPDF_ANNOTATION_SUBTYPE annot_type) {
   switch (annot_type) {
@@ -496,18 +481,6 @@
   doc_loader_set_for_testing_ = true;
 }
 
-// static
-void PDFiumEngine::OverrideSetSelectedTextFunctionForTesting(
-    SetSelectedTextFunction function) {
-  g_set_selected_text_func_for_testing = function;
-}
-
-// static
-void PDFiumEngine::OverrideSetLinkUnderCursorFunctionForTesting(
-    SetLinkUnderCursorFunction function) {
-  g_set_link_under_cursor_func_for_testing = function;
-}
-
 bool PDFiumEngine::New(const char* url, const char* headers) {
   url_ = url;
   if (headers)
@@ -1095,7 +1068,7 @@
   selected_form_text_ = base::UTF16ToUTF8(selected_form_text16);
   if (selected_form_text != selected_form_text_) {
     DCHECK(in_form_text_area_);
-    pp::PDF::SetSelectedText(GetPluginInstance(), selected_form_text_.c_str());
+    client_->SetSelectedText(selected_form_text_);
   }
 }
 
@@ -3598,7 +3571,7 @@
 
 void PDFiumEngine::OnSelectionTextChanged() {
   DCHECK(!in_form_text_area_);
-  pp::PDF::SetSelectedText(GetPluginInstance(), GetSelectedText().c_str());
+  client_->SetSelectedText(GetSelectedText());
 }
 
 void PDFiumEngine::OnSelectionPositionChanged() {
@@ -3687,11 +3660,7 @@
   // observer is notified of the change in selection. When |in_form_text_area_|
   // is true, this is the Renderer. After it flips, the MimeHandler is notified.
   if (in_form_text_area_) {
-    SetSelectedTextFunction set_selected_text_func =
-        g_set_selected_text_func_for_testing
-            ? g_set_selected_text_func_for_testing
-            : &SetSelectedText;
-    set_selected_text_func(GetPluginInstance(), "");
+    client_->SetSelectedText("");
   }
 
   client_->FormTextFieldFocusChange(in_form_text_area);
@@ -4119,12 +4088,7 @@
     return;
 
   link_under_cursor_ = target_url;
-
-  SetLinkUnderCursorFunction set_link_under_cursor_func =
-      g_set_link_under_cursor_func_for_testing
-          ? g_set_link_under_cursor_func_for_testing
-          : &SetLinkUnderCursor;
-  set_link_under_cursor_func(GetPluginInstance(), link_under_cursor_);
+  client_->SetLinkUnderCursor(link_under_cursor_);
 }
 
 void PDFiumEngine::SetLinkUnderCursorForAnnotation(FPDF_ANNOTATION annot,
diff --git a/pdf/pdfium/pdfium_engine.h b/pdf/pdfium/pdfium_engine.h
index b4e3199..3ec53b9 100644
--- a/pdf/pdfium/pdfium_engine.h
+++ b/pdf/pdfium/pdfium_engine.h
@@ -73,16 +73,6 @@
   // HandleDocumentLoad().
   void SetDocumentLoaderForTesting(std::unique_ptr<DocumentLoader> loader);
 
-  using SetSelectedTextFunction = void (*)(pp::Instance* instance,
-                                           const std::string& selected_text);
-  static void OverrideSetSelectedTextFunctionForTesting(
-      SetSelectedTextFunction function);
-
-  using SetLinkUnderCursorFunction =
-      void (*)(pp::Instance* instance, const std::string& link_under_cursor);
-  static void OverrideSetLinkUnderCursorFunctionForTesting(
-      SetLinkUnderCursorFunction function);
-
   // PDFEngine:
   bool New(const char* url, const char* headers) override;
   void PageOffsetUpdated(const gfx::Vector2d& page_offset) override;
diff --git a/pdf/pdfium/pdfium_test_base.cc b/pdf/pdfium/pdfium_test_base.cc
index be03ad7..4eca65b 100644
--- a/pdf/pdfium/pdfium_test_base.cc
+++ b/pdf/pdfium/pdfium_test_base.cc
@@ -39,12 +39,6 @@
   return !url.empty();
 }
 
-void SetSelectedTextForTesting(pp::Instance* instance,
-                               const std::string& selected_text) {}
-
-void SetLinkUnderCursorForTesting(pp::Instance* instance,
-                                  const std::string& link_under_cursor) {}
-
 }  // namespace
 
 PDFiumTestBase::PDFiumTestBase() = default;
@@ -62,17 +56,11 @@
 
 void PDFiumTestBase::SetUp() {
   InitializePDFium();
-  PDFiumEngine::OverrideSetSelectedTextFunctionForTesting(
-      &SetSelectedTextForTesting);
-  PDFiumEngine::OverrideSetLinkUnderCursorFunctionForTesting(
-      &SetLinkUnderCursorForTesting);
   PDFiumPage::SetIsValidLinkFunctionForTesting(&IsValidLinkForTesting);
 }
 
 void PDFiumTestBase::TearDown() {
   PDFiumPage::SetIsValidLinkFunctionForTesting(nullptr);
-  PDFiumEngine::OverrideSetLinkUnderCursorFunctionForTesting(nullptr);
-  PDFiumEngine::OverrideSetSelectedTextFunctionForTesting(nullptr);
   FPDF_DestroyLibrary();
 }
 
diff --git a/pdf/preview_mode_client.cc b/pdf/preview_mode_client.cc
index b4511fe8..0d99f77 100644
--- a/pdf/preview_mode_client.cc
+++ b/pdf/preview_mode_client.cc
@@ -164,4 +164,13 @@
   return 0;
 }
 
+void PreviewModeClient::SetSelectedText(const std::string& selected_text) {
+  NOTREACHED();
+}
+
+void PreviewModeClient::SetLinkUnderCursor(
+    const std::string& link_under_cursor) {
+  NOTREACHED();
+}
+
 }  // namespace chrome_pdf
diff --git a/pdf/preview_mode_client.h b/pdf/preview_mode_client.h
index 4b9c2e6..f388cb5 100644
--- a/pdf/preview_mode_client.h
+++ b/pdf/preview_mode_client.h
@@ -75,6 +75,8 @@
   bool IsPrintPreview() override;
   float GetToolbarHeightInScreenCoords() override;
   uint32_t GetBackgroundColor() override;
+  void SetSelectedText(const std::string& selected_text) override;
+  void SetLinkUnderCursor(const std::string& link_under_cursor) override;
 
  private:
   Client* const client_;
diff --git a/pdf/test/test_client.cc b/pdf/test/test_client.cc
index 70aa727ef8..6f7dfc4 100644
--- a/pdf/test/test_client.cc
+++ b/pdf/test/test_client.cc
@@ -63,4 +63,8 @@
   return 0;
 }
 
+void TestClient::SetSelectedText(const std::string& selected_text) {}
+
+void TestClient::SetLinkUnderCursor(const std::string& link_under_cursor) {}
+
 }  // namespace chrome_pdf
diff --git a/pdf/test/test_client.h b/pdf/test/test_client.h
index 521bb04..66d6223a05 100644
--- a/pdf/test/test_client.h
+++ b/pdf/test/test_client.h
@@ -38,6 +38,8 @@
   bool IsPrintPreview() override;
   uint32_t GetBackgroundColor() override;
   float GetToolbarHeightInScreenCoords() override;
+  void SetSelectedText(const std::string& selected_text) override;
+  void SetLinkUnderCursor(const std::string& link_under_cursor) override;
 
  private:
   // Not owned. Expected to dangle briefly, as the engine usually is destroyed
diff --git a/services/network/public/cpp/client_hints.cc b/services/network/public/cpp/client_hints.cc
index 0958d28..db8bb0d 100644
--- a/services/network/public/cpp/client_hints.cc
+++ b/services/network/public/cpp/client_hints.cc
@@ -73,8 +73,8 @@
 
 }  // namespace
 
-base::Optional<std::vector<network::mojom::WebClientHintsType>> ParseAcceptCH(
-    const std::string& header) {
+base::Optional<std::vector<network::mojom::WebClientHintsType>>
+ParseClientHintsHeader(const std::string& header) {
   // Accept-CH is an sh-list of tokens; see:
   // https://httpwg.org/http-extensions/client-hints.html#rfc.section.3.1
   base::Optional<net::structured_headers::List> maybe_list =
diff --git a/services/network/public/cpp/client_hints.h b/services/network/public/cpp/client_hints.h
index a811582..b7615cc 100644
--- a/services/network/public/cpp/client_hints.h
+++ b/services/network/public/cpp/client_hints.h
@@ -26,7 +26,8 @@
 // failed and the header should be ignored; otherwise returns a (possibly
 // empty) list of hints to accept.
 base::Optional<std::vector<network::mojom::WebClientHintsType>>
-    COMPONENT_EXPORT(NETWORK_CPP) ParseAcceptCH(const std::string& header);
+    COMPONENT_EXPORT(NETWORK_CPP)
+        ParseClientHintsHeader(const std::string& header);
 
 // Tries to parse Accept-CH-Lifetime. Returns base::TimeDelta() if unsuccessful.
 base::TimeDelta COMPONENT_EXPORT(NETWORK_CPP)
diff --git a/services/network/public/cpp/client_hints_unittest.cc b/services/network/public/cpp/client_hints_unittest.cc
index 3a2c0bb..ec36f4f 100644
--- a/services/network/public/cpp/client_hints_unittest.cc
+++ b/services/network/public/cpp/client_hints_unittest.cc
@@ -17,12 +17,12 @@
   base::Optional<std::vector<network::mojom::WebClientHintsType>> result;
 
   // Empty is OK.
-  result = ParseAcceptCH(" ");
+  result = ParseClientHintsHeader(" ");
   ASSERT_TRUE(result.has_value());
   EXPECT_TRUE(result.value().empty());
 
   // Normal case.
-  result = ParseAcceptCH("device-memory,  rtt, lang ");
+  result = ParseClientHintsHeader("device-memory,  rtt, lang ");
   ASSERT_TRUE(result.has_value());
   EXPECT_THAT(
       result.value(),
@@ -31,12 +31,12 @@
                            network::mojom::WebClientHintsType::kLang));
 
   // Must be a list of tokens, not other things.
-  result = ParseAcceptCH("\"device-memory\", \"rtt\", \"lang\"");
+  result = ParseClientHintsHeader("\"device-memory\", \"rtt\", \"lang\"");
   EXPECT_FALSE(result.has_value());
 
   // Parameters to the tokens are ignored, as encourageed by structured headers
   // spec.
-  result = ParseAcceptCH("device-memory;resolution=GIB, rtt, lang");
+  result = ParseClientHintsHeader("device-memory;resolution=GIB, rtt, lang");
   ASSERT_TRUE(result.has_value());
   EXPECT_THAT(
       result.value(),
@@ -45,7 +45,8 @@
                            network::mojom::WebClientHintsType::kLang));
 
   // Unknown tokens are fine, since this meant to be extensible.
-  result = ParseAcceptCH("device-memory,  rtt, lang , nosuchtokenwhywhywhy");
+  result = ParseClientHintsHeader(
+      "device-memory,  rtt, lang , nosuchtokenwhywhywhy");
   ASSERT_TRUE(result.has_value());
   EXPECT_THAT(
       result.value(),
@@ -58,7 +59,7 @@
   base::Optional<std::vector<network::mojom::WebClientHintsType>> result;
 
   // Matching is case-insensitive.
-  result = ParseAcceptCH("Device-meMory,  Rtt, lanG ");
+  result = ParseClientHintsHeader("Device-meMory,  Rtt, lanG ");
   ASSERT_TRUE(result.has_value());
   EXPECT_THAT(
       result.value(),
diff --git a/services/network/public/cpp/parsed_headers.cc b/services/network/public/cpp/parsed_headers.cc
index 2ce3770b..6b62d5ea 100644
--- a/services/network/public/cpp/parsed_headers.cc
+++ b/services/network/public/cpp/parsed_headers.cc
@@ -37,7 +37,7 @@
 
   std::string accept_ch;
   if (headers->GetNormalizedHeader("Accept-CH", &accept_ch))
-    parsed_headers->accept_ch = ParseAcceptCH(accept_ch);
+    parsed_headers->accept_ch = ParseClientHintsHeader(accept_ch);
 
   std::string accept_ch_lifetime;
   if (headers->GetNormalizedHeader("Accept-CH-Lifetime", &accept_ch_lifetime)) {
@@ -45,6 +45,10 @@
         ParseAcceptCHLifetime(accept_ch_lifetime);
   }
 
+  std::string critical_ch;
+  if (headers->GetNormalizedHeader("Critical-CH", &critical_ch))
+    parsed_headers->critical_ch = ParseClientHintsHeader(critical_ch);
+
   return parsed_headers;
 }
 
diff --git a/services/network/public/mojom/parsed_headers.mojom b/services/network/public/mojom/parsed_headers.mojom
index ab10d3cf..6bba67b 100644
--- a/services/network/public/mojom/parsed_headers.mojom
+++ b/services/network/public/mojom/parsed_headers.mojom
@@ -41,4 +41,25 @@
 
   // Parsed Accept-CH-Lifetime value, if any. Zero if missing or on parse error.
   mojo_base.mojom.TimeDelta accept_ch_lifetime;
+
+  // The parsed Critical-CH response header.
+  //
+  // Should be parsed in the same way (i.e. same tokens and grammar) as the
+  // Accept-CH header.
+  //
+  // Indicates that if these headers are missing from the Client Hint
+  // preference storage but not otherwise blocked from being sent, the
+  // appropriate preferences should be stored and the request should be
+  // restarted (with the new client hint preferences taken into account).
+  //
+  // All hints present in the Critical-CH header SHOULD also be present in the
+  // Accept-CH header.
+  //
+  // An empty list means the headers value was empty (i.e. 'Critical-CH:'). A
+  // null value means the header was not present in the response. These are
+  // both functionally a no-op.
+  //
+  // For more information, see:
+  // https://tools.ietf.org/html/draft-davidben-http-client-hint-reliability#section-3
+  array<WebClientHintsType>? critical_ch;
 };
diff --git a/services/tracing/public/cpp/perfetto/perfetto_tracing_backend.cc b/services/tracing/public/cpp/perfetto/perfetto_tracing_backend.cc
index 8801194..c7ca79f 100644
--- a/services/tracing/public/cpp/perfetto/perfetto_tracing_backend.cc
+++ b/services/tracing/public/cpp/perfetto/perfetto_tracing_backend.cc
@@ -389,7 +389,8 @@
 
   void DisableTracing() override {
     DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-    tracing_session_host_->DisableTracing();
+    if (tracing_session_host_)
+      tracing_session_host_->DisableTracing();
   }
 
   void Flush(uint32_t timeout_ms, FlushCallback callback) override {
diff --git a/testing/buildbot/chrome.json b/testing/buildbot/chrome.json
index 2662608..d06b506 100644
--- a/testing/buildbot/chrome.json
+++ b/testing/buildbot/chrome.json
@@ -6625,7 +6625,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063",
+              "os": "Windows-10-18363",
               "pool": "chrome.tests"
             }
           ],
@@ -6651,7 +6651,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063",
+              "os": "Windows-10-18363",
               "pool": "chrome.tests"
             }
           ],
diff --git a/testing/buildbot/chromium.clang.json b/testing/buildbot/chromium.clang.json
index ff0f41ec..ca9bef84 100644
--- a/testing/buildbot/chromium.clang.json
+++ b/testing/buildbot/chromium.clang.json
@@ -1481,7 +1481,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -1499,7 +1499,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -1517,7 +1517,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -1535,7 +1535,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -1553,7 +1553,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -1571,7 +1571,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -1589,7 +1589,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -1607,7 +1607,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -1625,7 +1625,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -1643,7 +1643,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -1662,7 +1662,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -1680,7 +1680,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -1698,7 +1698,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -1716,7 +1716,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -1734,7 +1734,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
@@ -1756,7 +1756,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -1774,7 +1774,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -1792,7 +1792,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -1810,7 +1810,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -1828,7 +1828,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -1846,7 +1846,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -1864,7 +1864,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -1882,7 +1882,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -1900,7 +1900,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -1918,7 +1918,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -1936,7 +1936,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
@@ -1955,7 +1955,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -1973,7 +1973,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -1991,7 +1991,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2009,7 +2009,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2027,7 +2027,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2045,7 +2045,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2063,7 +2063,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2081,7 +2081,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2099,7 +2099,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2117,7 +2117,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2135,7 +2135,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2153,7 +2153,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2171,7 +2171,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2189,7 +2189,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2207,7 +2207,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2225,7 +2225,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2243,7 +2243,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2261,7 +2261,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2279,7 +2279,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2297,7 +2297,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2315,7 +2315,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2333,7 +2333,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2351,7 +2351,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2369,7 +2369,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2388,7 +2388,7 @@
             {
               "cpu": "x86-64",
               "integrity": "high",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2406,7 +2406,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
@@ -2425,7 +2425,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2443,7 +2443,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2461,7 +2461,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2479,7 +2479,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2497,7 +2497,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2515,7 +2515,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2533,7 +2533,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2551,7 +2551,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2569,7 +2569,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2587,7 +2587,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2605,7 +2605,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2623,7 +2623,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2641,7 +2641,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
@@ -2660,7 +2660,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2678,7 +2678,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2696,7 +2696,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2714,7 +2714,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2732,7 +2732,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2750,7 +2750,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2769,7 +2769,7 @@
             {
               "cpu": "x86-64",
               "integrity": "high",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2787,7 +2787,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2805,7 +2805,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2823,7 +2823,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2841,7 +2841,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2860,7 +2860,7 @@
             {
               "cpu": "x86-64",
               "integrity": "high",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2878,7 +2878,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2896,7 +2896,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2914,7 +2914,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2932,7 +2932,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2953,7 +2953,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2972,7 +2972,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2990,7 +2990,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3008,7 +3008,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3026,7 +3026,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3044,7 +3044,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3062,7 +3062,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3080,7 +3080,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3098,7 +3098,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3116,7 +3116,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3134,7 +3134,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3152,7 +3152,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3170,7 +3170,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3188,7 +3188,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3206,7 +3206,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3224,7 +3224,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3242,7 +3242,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3260,7 +3260,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3278,7 +3278,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3303,7 +3303,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3321,7 +3321,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3339,7 +3339,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3357,7 +3357,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3375,7 +3375,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3393,7 +3393,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3411,7 +3411,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3429,7 +3429,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3447,7 +3447,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3465,7 +3465,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3484,7 +3484,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3502,7 +3502,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3520,7 +3520,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3538,7 +3538,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3559,7 +3559,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3577,7 +3577,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3595,7 +3595,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3613,7 +3613,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3631,7 +3631,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3649,7 +3649,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3667,7 +3667,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3685,7 +3685,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3703,7 +3703,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3721,7 +3721,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3739,7 +3739,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3757,7 +3757,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3775,7 +3775,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3793,7 +3793,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3811,7 +3811,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3829,7 +3829,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3847,7 +3847,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3865,7 +3865,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3883,7 +3883,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3901,7 +3901,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3919,7 +3919,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3937,7 +3937,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3955,7 +3955,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3973,7 +3973,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3991,7 +3991,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4009,7 +4009,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4027,7 +4027,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4045,7 +4045,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4063,7 +4063,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4081,7 +4081,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4099,7 +4099,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4117,7 +4117,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4136,7 +4136,7 @@
             {
               "cpu": "x86-64",
               "integrity": "high",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4154,7 +4154,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4172,7 +4172,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4190,7 +4190,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4208,7 +4208,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4226,7 +4226,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4244,7 +4244,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4262,7 +4262,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4280,7 +4280,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4298,7 +4298,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4316,7 +4316,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4334,7 +4334,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4352,7 +4352,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4370,7 +4370,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
@@ -4389,7 +4389,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4407,7 +4407,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4425,7 +4425,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4443,7 +4443,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4461,7 +4461,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4479,7 +4479,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4498,7 +4498,7 @@
             {
               "cpu": "x86-64",
               "integrity": "high",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4516,7 +4516,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4534,7 +4534,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4552,7 +4552,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4570,7 +4570,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4589,7 +4589,7 @@
             {
               "cpu": "x86-64",
               "integrity": "high",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4607,7 +4607,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4625,7 +4625,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4643,7 +4643,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4661,7 +4661,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4682,7 +4682,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4701,7 +4701,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4719,7 +4719,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4737,7 +4737,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4755,7 +4755,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4773,7 +4773,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4791,7 +4791,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4809,7 +4809,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4827,7 +4827,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4845,7 +4845,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4863,7 +4863,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4881,7 +4881,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4899,7 +4899,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4917,7 +4917,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4935,7 +4935,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4953,7 +4953,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4971,7 +4971,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4989,7 +4989,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -30467,7 +30467,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -30485,7 +30485,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -30503,7 +30503,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -30521,7 +30521,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -30539,7 +30539,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -30557,7 +30557,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -30575,7 +30575,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -30593,7 +30593,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -30611,7 +30611,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -30629,7 +30629,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -30648,7 +30648,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -30666,7 +30666,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -30684,7 +30684,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -30702,7 +30702,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -30720,7 +30720,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com",
@@ -30742,7 +30742,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -30760,7 +30760,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -30778,7 +30778,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -30796,7 +30796,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -30814,7 +30814,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -30832,7 +30832,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -30850,7 +30850,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -30868,7 +30868,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -30886,7 +30886,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -30904,7 +30904,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -30922,7 +30922,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com",
@@ -30941,7 +30941,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -30959,7 +30959,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -30977,7 +30977,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -30995,7 +30995,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31013,7 +31013,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31031,7 +31031,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31049,7 +31049,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31067,7 +31067,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31085,7 +31085,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31103,7 +31103,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31121,7 +31121,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31139,7 +31139,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31157,7 +31157,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31175,7 +31175,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31193,7 +31193,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31211,7 +31211,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31229,7 +31229,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31247,7 +31247,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31265,7 +31265,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31283,7 +31283,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31301,7 +31301,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31319,7 +31319,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31337,7 +31337,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31355,7 +31355,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31374,7 +31374,7 @@
             {
               "cpu": "x86-64",
               "integrity": "high",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31392,7 +31392,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com",
@@ -31411,7 +31411,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31429,7 +31429,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31447,7 +31447,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31465,7 +31465,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31483,7 +31483,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31501,7 +31501,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31519,7 +31519,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31537,7 +31537,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31555,7 +31555,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31573,7 +31573,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31591,7 +31591,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31609,7 +31609,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31627,7 +31627,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31645,7 +31645,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31663,7 +31663,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31681,7 +31681,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31699,7 +31699,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31717,7 +31717,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31736,7 +31736,7 @@
             {
               "cpu": "x86-64",
               "integrity": "high",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31754,7 +31754,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31772,7 +31772,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31790,7 +31790,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31808,7 +31808,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31827,7 +31827,7 @@
             {
               "cpu": "x86-64",
               "integrity": "high",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31845,7 +31845,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31863,7 +31863,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31881,7 +31881,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31899,7 +31899,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31920,7 +31920,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31939,7 +31939,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31957,7 +31957,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31975,7 +31975,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -31993,7 +31993,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32011,7 +32011,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32029,7 +32029,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32047,7 +32047,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32065,7 +32065,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32083,7 +32083,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32101,7 +32101,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32119,7 +32119,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32137,7 +32137,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32155,7 +32155,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32173,7 +32173,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32191,7 +32191,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32209,7 +32209,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32227,7 +32227,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32245,7 +32245,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32268,7 +32268,7 @@
             {
               "cpu": "x86-64",
               "integrity": "high",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32288,7 +32288,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32308,7 +32308,7 @@
             {
               "cpu": "x86-64",
               "integrity": "high",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32332,7 +32332,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32350,7 +32350,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32368,7 +32368,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32386,7 +32386,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32404,7 +32404,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32422,7 +32422,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32440,7 +32440,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32458,7 +32458,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32476,7 +32476,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32494,7 +32494,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32513,7 +32513,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32531,7 +32531,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32549,7 +32549,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32567,7 +32567,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32585,7 +32585,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
@@ -32607,7 +32607,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32625,7 +32625,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32643,7 +32643,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32661,7 +32661,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32679,7 +32679,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32697,7 +32697,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32715,7 +32715,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32733,7 +32733,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32751,7 +32751,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32769,7 +32769,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32787,7 +32787,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
@@ -32806,7 +32806,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32824,7 +32824,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32842,7 +32842,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32860,7 +32860,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32878,7 +32878,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32896,7 +32896,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32914,7 +32914,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32932,7 +32932,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32950,7 +32950,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32968,7 +32968,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -32986,7 +32986,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33004,7 +33004,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33022,7 +33022,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33040,7 +33040,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33058,7 +33058,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33076,7 +33076,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33094,7 +33094,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33112,7 +33112,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33130,7 +33130,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33148,7 +33148,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33166,7 +33166,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33184,7 +33184,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33202,7 +33202,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33220,7 +33220,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33239,7 +33239,7 @@
             {
               "cpu": "x86-64",
               "integrity": "high",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33257,7 +33257,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
@@ -33276,7 +33276,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33294,7 +33294,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33312,7 +33312,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33330,7 +33330,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33348,7 +33348,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33366,7 +33366,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33384,7 +33384,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33402,7 +33402,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33420,7 +33420,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33438,7 +33438,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33456,7 +33456,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33474,7 +33474,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33492,7 +33492,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33510,7 +33510,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33528,7 +33528,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33546,7 +33546,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33564,7 +33564,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33582,7 +33582,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33601,7 +33601,7 @@
             {
               "cpu": "x86-64",
               "integrity": "high",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33619,7 +33619,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33637,7 +33637,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33655,7 +33655,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33673,7 +33673,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33692,7 +33692,7 @@
             {
               "cpu": "x86-64",
               "integrity": "high",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33710,7 +33710,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33728,7 +33728,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33746,7 +33746,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33764,7 +33764,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33785,7 +33785,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33804,7 +33804,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33822,7 +33822,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33840,7 +33840,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33858,7 +33858,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33876,7 +33876,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33894,7 +33894,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33912,7 +33912,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33930,7 +33930,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33948,7 +33948,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33966,7 +33966,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -33984,7 +33984,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34002,7 +34002,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34020,7 +34020,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34038,7 +34038,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34056,7 +34056,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34074,7 +34074,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34092,7 +34092,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34110,7 +34110,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34133,7 +34133,7 @@
             {
               "cpu": "x86-64",
               "integrity": "high",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34153,7 +34153,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34173,7 +34173,7 @@
             {
               "cpu": "x86-64",
               "integrity": "high",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34197,7 +34197,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34215,7 +34215,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34233,7 +34233,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34251,7 +34251,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34269,7 +34269,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34287,7 +34287,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34305,7 +34305,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34323,7 +34323,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34341,7 +34341,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34359,7 +34359,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34378,7 +34378,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34396,7 +34396,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34414,7 +34414,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34432,7 +34432,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34450,7 +34450,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
@@ -34472,7 +34472,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34490,7 +34490,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34508,7 +34508,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34526,7 +34526,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34544,7 +34544,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34562,7 +34562,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34580,7 +34580,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34598,7 +34598,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34616,7 +34616,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34634,7 +34634,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34652,7 +34652,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
@@ -34671,7 +34671,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34689,7 +34689,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34707,7 +34707,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34725,7 +34725,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34743,7 +34743,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34761,7 +34761,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34779,7 +34779,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34797,7 +34797,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34815,7 +34815,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34833,7 +34833,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34851,7 +34851,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34869,7 +34869,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34887,7 +34887,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34905,7 +34905,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34923,7 +34923,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34941,7 +34941,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34959,7 +34959,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34977,7 +34977,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -34995,7 +34995,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35013,7 +35013,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35031,7 +35031,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35049,7 +35049,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35067,7 +35067,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35085,7 +35085,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35104,7 +35104,7 @@
             {
               "cpu": "x86-64",
               "integrity": "high",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35122,7 +35122,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
@@ -35141,7 +35141,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35159,7 +35159,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35177,7 +35177,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35195,7 +35195,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35213,7 +35213,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35231,7 +35231,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35249,7 +35249,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35267,7 +35267,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35285,7 +35285,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35303,7 +35303,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35321,7 +35321,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35339,7 +35339,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35357,7 +35357,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35375,7 +35375,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35393,7 +35393,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35411,7 +35411,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35429,7 +35429,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35447,7 +35447,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35466,7 +35466,7 @@
             {
               "cpu": "x86-64",
               "integrity": "high",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35484,7 +35484,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35502,7 +35502,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35520,7 +35520,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35538,7 +35538,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35557,7 +35557,7 @@
             {
               "cpu": "x86-64",
               "integrity": "high",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35575,7 +35575,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35593,7 +35593,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35611,7 +35611,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35629,7 +35629,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35650,7 +35650,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35669,7 +35669,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35687,7 +35687,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35705,7 +35705,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35723,7 +35723,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35741,7 +35741,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35759,7 +35759,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35777,7 +35777,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35795,7 +35795,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35813,7 +35813,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35831,7 +35831,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35849,7 +35849,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35867,7 +35867,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35885,7 +35885,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35903,7 +35903,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35921,7 +35921,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35939,7 +35939,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35957,7 +35957,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35975,7 +35975,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -35998,7 +35998,7 @@
             {
               "cpu": "x86-64",
               "integrity": "high",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -36018,7 +36018,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -36038,7 +36038,7 @@
             {
               "cpu": "x86-64",
               "integrity": "high",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -44401,7 +44401,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -44418,7 +44418,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -44435,7 +44435,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -44452,7 +44452,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -44469,7 +44469,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -44486,7 +44486,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -44503,7 +44503,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -44520,7 +44520,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -44537,7 +44537,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -44554,7 +44554,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -44572,7 +44572,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -44589,7 +44589,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -44606,7 +44606,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -44623,7 +44623,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -44643,7 +44643,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -44660,7 +44660,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -44677,7 +44677,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -44694,7 +44694,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -44711,7 +44711,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -44728,7 +44728,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -44745,7 +44745,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -44762,7 +44762,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -44779,7 +44779,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -44796,7 +44796,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -44813,7 +44813,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
@@ -44831,7 +44831,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -44848,7 +44848,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -44865,7 +44865,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -44882,7 +44882,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -44899,7 +44899,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -44916,7 +44916,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -44933,7 +44933,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -44950,7 +44950,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -44967,7 +44967,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -44984,7 +44984,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45001,7 +45001,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45018,7 +45018,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45035,7 +45035,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45052,7 +45052,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45069,7 +45069,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45086,7 +45086,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45103,7 +45103,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45120,7 +45120,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45137,7 +45137,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45154,7 +45154,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45171,7 +45171,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45188,7 +45188,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45205,7 +45205,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45223,7 +45223,7 @@
           "dimension_sets": [
             {
               "integrity": "high",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45240,7 +45240,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
@@ -45258,7 +45258,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45275,7 +45275,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45292,7 +45292,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45309,7 +45309,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45326,7 +45326,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45343,7 +45343,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45360,7 +45360,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45377,7 +45377,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45394,7 +45394,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45411,7 +45411,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45428,7 +45428,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45445,7 +45445,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45462,7 +45462,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45479,7 +45479,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45496,7 +45496,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45513,7 +45513,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45530,7 +45530,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45547,7 +45547,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45565,7 +45565,7 @@
           "dimension_sets": [
             {
               "integrity": "high",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45582,7 +45582,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45599,7 +45599,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45616,7 +45616,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45633,7 +45633,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45651,7 +45651,7 @@
           "dimension_sets": [
             {
               "integrity": "high",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45668,7 +45668,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45685,7 +45685,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45702,7 +45702,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45719,7 +45719,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45739,7 +45739,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45757,7 +45757,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45774,7 +45774,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45791,7 +45791,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45808,7 +45808,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45825,7 +45825,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45842,7 +45842,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45859,7 +45859,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45876,7 +45876,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45893,7 +45893,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45910,7 +45910,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45927,7 +45927,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45944,7 +45944,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45961,7 +45961,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45978,7 +45978,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -45995,7 +45995,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -46012,7 +46012,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -46029,7 +46029,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -46046,7 +46046,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
diff --git a/testing/buildbot/chromium.fyi.json b/testing/buildbot/chromium.fyi.json
index 3f5c19b6..80dbb23 100644
--- a/testing/buildbot/chromium.fyi.json
+++ b/testing/buildbot/chromium.fyi.json
@@ -57683,6 +57683,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "cpu": "x86-64",
               "os": "Windows-10-15063"
             }
           ],
diff --git a/testing/buildbot/chromium.webrtc.fyi.json b/testing/buildbot/chromium.webrtc.fyi.json
index a736794..60dd8425 100644
--- a/testing/buildbot/chromium.webrtc.fyi.json
+++ b/testing/buildbot/chromium.webrtc.fyi.json
@@ -476,7 +476,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -499,7 +499,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -520,7 +520,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -545,7 +545,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -566,7 +566,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -584,7 +584,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -605,7 +605,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
diff --git a/testing/buildbot/chromium.win.json b/testing/buildbot/chromium.win.json
index 4a981dc..dea654e 100644
--- a/testing/buildbot/chromium.win.json
+++ b/testing/buildbot/chromium.win.json
@@ -23,6 +23,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
+              "cpu": "x86-64",
               "os": "Windows-10-15063"
             }
           ],
@@ -1559,7 +1560,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -1578,7 +1579,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -1597,7 +1598,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -1616,7 +1617,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -1635,7 +1636,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -1654,7 +1655,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -1673,7 +1674,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -1692,7 +1693,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -1711,7 +1712,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -1730,7 +1731,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -1750,7 +1751,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -1769,7 +1770,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -1788,7 +1789,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -1807,7 +1808,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -1861,7 +1862,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-gold@chops-service-accounts.iam.gserviceaccount.com"
@@ -1883,7 +1884,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -1902,7 +1903,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -1921,7 +1922,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -1940,7 +1941,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -1959,7 +1960,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -1978,7 +1979,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -1997,7 +1998,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2016,7 +2017,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2035,7 +2036,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2054,7 +2055,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2076,7 +2077,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
@@ -2101,7 +2102,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2124,7 +2125,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
@@ -2144,7 +2145,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2163,7 +2164,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2182,7 +2183,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2201,7 +2202,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2220,7 +2221,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2239,7 +2240,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2258,7 +2259,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2277,7 +2278,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2296,7 +2297,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2315,7 +2316,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2334,7 +2335,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2353,7 +2354,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2376,7 +2377,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2395,7 +2396,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2414,7 +2415,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2433,7 +2434,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2452,7 +2453,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2471,7 +2472,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2490,7 +2491,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2509,7 +2510,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2528,7 +2529,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2547,7 +2548,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2566,7 +2567,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2585,7 +2586,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2604,7 +2605,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2624,7 +2625,7 @@
             {
               "cpu": "x86-64",
               "integrity": "high",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2643,7 +2644,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
@@ -2667,7 +2668,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
@@ -2687,7 +2688,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2706,7 +2707,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2725,7 +2726,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2744,7 +2745,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2763,7 +2764,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2782,7 +2783,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2801,7 +2802,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2820,7 +2821,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2839,7 +2840,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2858,7 +2859,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2877,7 +2878,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2896,7 +2897,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2915,7 +2916,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2934,7 +2935,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2953,7 +2954,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2972,7 +2973,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -2991,7 +2992,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3010,7 +3011,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3029,7 +3030,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3049,7 +3050,7 @@
             {
               "cpu": "x86-64",
               "integrity": "high",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3068,7 +3069,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3087,7 +3088,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3106,7 +3107,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3125,7 +3126,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3145,7 +3146,7 @@
             {
               "cpu": "x86-64",
               "integrity": "high",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3164,7 +3165,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3183,7 +3184,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3202,7 +3203,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3221,7 +3222,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3243,7 +3244,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3263,7 +3264,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3301,7 +3302,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3320,7 +3321,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3339,7 +3340,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3358,7 +3359,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3377,7 +3378,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3396,7 +3397,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3423,7 +3424,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chrome-gold@chops-service-accounts.iam.gserviceaccount.com"
@@ -3442,7 +3443,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3461,7 +3462,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3480,7 +3481,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3499,7 +3500,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3518,7 +3519,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3537,7 +3538,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3556,7 +3557,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3575,7 +3576,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3594,7 +3595,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3613,7 +3614,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3636,7 +3637,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3691,7 +3692,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3711,7 +3712,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3736,7 +3737,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3759,7 +3760,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3779,7 +3780,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3802,7 +3803,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3822,7 +3823,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3842,7 +3843,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3863,7 +3864,7 @@
             {
               "cpu": "x86-64",
               "integrity": "high",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3883,7 +3884,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3904,7 +3905,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3927,7 +3928,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3947,7 +3948,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "idempotent": false,
@@ -3969,7 +3970,7 @@
             {
               "cpu": "x86-64",
               "integrity": "high",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -3994,7 +3995,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4023,7 +4024,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4041,7 +4042,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4059,7 +4060,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4077,7 +4078,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4095,7 +4096,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4113,7 +4114,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4131,7 +4132,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4149,7 +4150,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4167,7 +4168,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4185,7 +4186,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4204,7 +4205,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4222,7 +4223,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4240,7 +4241,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4258,7 +4259,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4279,7 +4280,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4297,7 +4298,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4315,7 +4316,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4333,7 +4334,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4351,7 +4352,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4369,7 +4370,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4387,7 +4388,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4405,7 +4406,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4423,7 +4424,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4441,7 +4442,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4463,7 +4464,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
@@ -4482,7 +4483,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4500,7 +4501,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4518,7 +4519,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4536,7 +4537,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4554,7 +4555,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4572,7 +4573,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4590,7 +4591,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4608,7 +4609,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4626,7 +4627,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4644,7 +4645,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4662,7 +4663,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4681,7 +4682,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4699,7 +4700,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4717,7 +4718,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4735,7 +4736,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4753,7 +4754,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4771,7 +4772,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4789,7 +4790,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4807,7 +4808,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4825,7 +4826,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4843,7 +4844,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4861,7 +4862,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4879,7 +4880,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4897,7 +4898,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4916,7 +4917,7 @@
             {
               "cpu": "x86-64",
               "integrity": "high",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4935,7 +4936,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
@@ -4954,7 +4955,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4972,7 +4973,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -4990,7 +4991,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5008,7 +5009,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5026,7 +5027,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5044,7 +5045,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5062,7 +5063,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5080,7 +5081,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5098,7 +5099,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5116,7 +5117,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5134,7 +5135,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5152,7 +5153,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5170,7 +5171,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5188,7 +5189,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5206,7 +5207,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5224,7 +5225,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5242,7 +5243,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5260,7 +5261,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5278,7 +5279,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5297,7 +5298,7 @@
             {
               "cpu": "x86-64",
               "integrity": "high",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5315,7 +5316,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5333,7 +5334,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5351,7 +5352,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5369,7 +5370,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5388,7 +5389,7 @@
             {
               "cpu": "x86-64",
               "integrity": "high",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5406,7 +5407,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5424,7 +5425,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5442,7 +5443,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5460,7 +5461,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5481,7 +5482,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5500,7 +5501,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5519,7 +5520,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5537,7 +5538,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5555,7 +5556,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5573,7 +5574,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5591,7 +5592,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5609,7 +5610,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5627,7 +5628,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5645,7 +5646,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5663,7 +5664,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5681,7 +5682,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5699,7 +5700,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5717,7 +5718,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5735,7 +5736,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5753,7 +5754,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5771,7 +5772,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5789,7 +5790,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5807,7 +5808,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5829,7 +5830,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5848,7 +5849,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5872,7 +5873,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5895,7 +5896,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5914,7 +5915,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5936,7 +5937,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5955,7 +5956,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -5974,7 +5975,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
@@ -6001,7 +6002,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "hard_timeout": 960,
@@ -6022,7 +6023,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "idempotent": false,
@@ -6047,7 +6048,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "idempotent": false,
@@ -6073,7 +6074,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
diff --git a/testing/buildbot/client.v8.fyi.json b/testing/buildbot/client.v8.fyi.json
index 79e9b72..b75ae85e 100644
--- a/testing/buildbot/client.v8.fyi.json
+++ b/testing/buildbot/client.v8.fyi.json
@@ -1645,7 +1645,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Windows-10-15063"
+              "os": "Windows-10-18363"
             }
           ],
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
diff --git a/testing/buildbot/filters/chromeos.msan.browser_tests.oobe_negative.filter b/testing/buildbot/filters/chromeos.msan.browser_tests.oobe_negative.filter
index 74a3aa6..9521787 100644
--- a/testing/buildbot/filters/chromeos.msan.browser_tests.oobe_negative.filter
+++ b/testing/buildbot/filters/chromeos.msan.browser_tests.oobe_negative.filter
@@ -116,6 +116,7 @@
 -SAMLPolicyTest.*
 -SamlTest.*
 -SecurityTokenSamlTest.*
+-SigninToUserProfileSwitchTest.*
 -SiteIsolationFlagHandlingTest.*
 -StartupBrowserWindowLaunchSuppressedTest.*
 -SyncConsentRecorderTest.*
diff --git a/testing/buildbot/filters/chromeos.msan.browser_tests.oobe_positive.filter b/testing/buildbot/filters/chromeos.msan.browser_tests.oobe_positive.filter
index b8e3c0c..9d978c3 100644
--- a/testing/buildbot/filters/chromeos.msan.browser_tests.oobe_positive.filter
+++ b/testing/buildbot/filters/chromeos.msan.browser_tests.oobe_positive.filter
@@ -116,6 +116,7 @@
 SAMLPolicyTest.*
 SamlTest.*
 SecurityTokenSamlTest.*
+SigninToUserProfileSwitchTest.*
 SiteIsolationFlagHandlingTest.*
 StartupBrowserWindowLaunchSuppressedTest.*
 SyncConsentRecorderTest.*
diff --git a/testing/buildbot/mixins.pyl b/testing/buildbot/mixins.pyl
index fa0aee0..efa68703 100644
--- a/testing/buildbot/mixins.pyl
+++ b/testing/buildbot/mixins.pyl
@@ -802,7 +802,7 @@
   'win10': {
     'swarming': {
       'dimensions': {
-        'os': 'Windows-10-15063',
+        'os': 'Windows-10-18363',
       },
     },
   },
diff --git a/testing/buildbot/test_suite_exceptions.pyl b/testing/buildbot/test_suite_exceptions.pyl
index bbffc2f..42cbb32b1 100644
--- a/testing/buildbot/test_suite_exceptions.pyl
+++ b/testing/buildbot/test_suite_exceptions.pyl
@@ -243,12 +243,32 @@
           '--additional-driver-flag=--disable-blink-features=LayoutNG',
         ],
       },
+      'WebKit Win10': {
+        'swarming': {
+          # TODO(crbug.com/1124829): Remove this exception when moving web tests
+          # to 1909.
+          'dimension_sets': [
+            {
+              'cpu': 'x86-64',
+              'os': 'Windows-10-15063',
+            },
+          ],
+        },
+      },
       'Win10 Tests x64': {
         'args': [
           '--target',
           'Release_x64',
         ],
         'swarming': {
+          # TODO(crbug.com/1124829): Remove this exception when moving web tests
+          # to 1909.
+          'dimension_sets': [
+            {
+              'cpu': 'x86-64',
+              'os': 'Windows-10-15063',
+            },
+          ],
           "shards": 28
         },
       },
@@ -389,6 +409,18 @@
           'shards': 20,
         },
       },
+      'win10-blink-rel-dummy': {
+        'swarming': {
+          # TODO(crbug.com/1124829): Remove this exception when moving web tests
+          # to 1909.
+          'dimension_sets': [
+            {
+              'cpu': 'x86-64',
+              'os': 'Windows-10-15063',
+            },
+          ],
+        },
+      },
     },
   },
   'boringssl_crypto_tests': {
@@ -509,6 +541,14 @@
           '--disable-features=WebRTC-H264WithOpenH264FFmpeg',
         ],
         'swarming': {
+          # TODO(crbug.com/1124829): Remove this exception when moving browser_tests
+          # to 1909.
+          'dimension_sets': [
+            {
+              'cpu': 'x86-64',
+              'os': 'Windows-10-15063',
+            },
+          ],
           # This is for slow test execution that often becomes a critical path of
           # swarming jobs. crbug.com/868114
           'shards': 15,
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json
index 95549da..661536d 100644
--- a/testing/variations/fieldtrial_testing_config.json
+++ b/testing/variations/fieldtrial_testing_config.json
@@ -826,7 +826,8 @@
                     "enable_features": [
                         "AutofillKeyboardAccessory",
                         "AutofillManualFallbackAndroid",
-                        "IPH_KeyboardAccessoryAddressFilling"
+                        "IPH_KeyboardAccessoryAddressFilling",
+                        "RecoverFromNeverSaveAndroid"
                     ]
                 }
             ]
@@ -5898,6 +5899,9 @@
                     },
                     "enable_features": [
                         "RenderDocument"
+                    ],
+                    "disable_features": [
+                        "SkipEarlyCommitPendingForCrashedFrame"
                     ]
                 }
             ]
@@ -6357,6 +6361,21 @@
             ]
         }
     ],
+    "ScrollToTextIOS": [
+        {
+            "platforms": [
+                "ios"
+            ],
+            "experiments": [
+                {
+                    "name": "Enabled",
+                    "enable_features": [
+                        "ScrollToTextIOS"
+                    ]
+                }
+            ]
+        }
+    ],
     "SearchRankerQueryBasedMixedTypes": [
         {
             "platforms": [
@@ -7735,6 +7754,25 @@
             ]
         }
     ],
+    "WebRTC-Bwe-ProbingBehavior": [
+        {
+            "platforms": [
+                "windows",
+                "mac",
+                "chromeos",
+                "linux",
+                "ios",
+                "android",
+                "android_weblayer",
+                "android_webview"
+            ],
+            "experiments": [
+                {
+                    "name": "max_probe_delay:10ms,abort_delayed_probes:true"
+                }
+            ]
+        }
+    ],
     "WebRTC-CongestionWindow": [
         {
             "platforms": [
@@ -7772,21 +7810,6 @@
             ]
         }
     ],
-    "WebRTC-ProbingScreenshareBwe": [
-        {
-            "platforms": [
-                "windows",
-                "mac",
-                "chromeos",
-                "linux"
-            ],
-            "experiments": [
-                {
-                    "name": "1.0,2875,80,40,-60,3"
-                }
-            ]
-        }
-    ],
     "WebRTC-SendSideBwe-WithOverhead": [
         {
             "platforms": [
diff --git a/third_party/android_deps/buildSrc/src/main/groovy/BuildConfigGenerator.groovy b/third_party/android_deps/buildSrc/src/main/groovy/BuildConfigGenerator.groovy
index 419a8f64..abbc44b 100644
--- a/third_party/android_deps/buildSrc/src/main/groovy/BuildConfigGenerator.groovy
+++ b/third_party/android_deps/buildSrc/src/main/groovy/BuildConfigGenerator.groovy
@@ -255,10 +255,13 @@
             sb.append("}\n\n")
         }
 
-        def matcher = BUILD_GN_GEN_PATTERN.matcher(buildFile.getText())
-        if (!matcher.find()) throw new IllegalStateException("BUILD.gn insertion point not found.")
-        buildFile.write(matcher.replaceFirst(
-                "${BUILD_GN_TOKEN_START}\n${sb.toString()}\n${BUILD_GN_TOKEN_END}"))
+        def out = "${BUILD_GN_TOKEN_START}\n${sb.toString()}\n${BUILD_GN_TOKEN_END}"
+        if (buildFile.exists()) {
+            def matcher = BUILD_GN_GEN_PATTERN.matcher(buildFile.getText())
+            if (!matcher.find()) throw new IllegalStateException("BUILD.gn insertion point not found.")
+            out = matcher.replaceFirst(out)
+        }
+        buildFile.write(out)
     }
 
     public static String translateTargetName(String targetName) {
diff --git a/third_party/android_deps/fetch_all.py b/third_party/android_deps/fetch_all.py
index 34a85757..8d15dac 100755
--- a/third_party/android_deps/fetch_all.py
+++ b/third_party/android_deps/fetch_all.py
@@ -73,7 +73,13 @@
 _UPDATED_ANDROID_DEPS_FILES = [
     os.path.join('..', '..', 'DEPS'),
     _BUILD_GN,
-    _BUILD_GRADLE,
+    _ADDITIONAL_README_PATHS,
+]
+
+# Subset of |_UPDATED_ANDROID_DEPS_FILES| for which the file does not need to
+# exist.
+_UPDATED_ANDROID_DEPS_FILES_ALLOW_EMPTY = [
+    _BUILD_GN,
     _ADDITIONAL_README_PATHS,
 ]
 
@@ -181,6 +187,33 @@
         shutil.rmtree(dir_path)
 
 
+def Copy(src_dir, src_paths, dst_dir, dst_paths, src_path_must_exist=False):
+    """Copies |src_paths| in |src_dir| to |dst_paths| in |dst_dir|.
+
+    Args:
+      src_dir: Directory containing |src_paths|.
+      src_paths: Files to copy.
+      dst_dir: Directory containing |dst_paths|.
+      dst_paths: Copy destinations.
+      src_paths_must_exist: If true, throw error if the file for one of|src_paths|
+        does not exist.
+    """
+    assert len(src_paths) == len(dst_paths)
+
+    missing_files = []
+    for src_path, dst_path in zip(src_paths, dst_paths):
+        abs_src_path = os.path.join(src_dir, src_path)
+        abs_dst_path = os.path.join(dst_dir, dst_path)
+        if os.path.exists(abs_src_path):
+            CopyFileOrDirectory(abs_src_path, abs_dst_path)
+        elif src_path_must_exist:
+            missing_files.append(src_paths[i])
+
+    if missing_files:
+        raise Exception('Missing files from {}: {}'.format(
+            src_dir, missing_files))
+
+
 def CopyFileOrDirectory(src_path, dst_path):
     """Copy file or directory |src_path| into |dst_path| exactly."""
     src_path = os.path.normpath(src_path)
@@ -475,35 +508,34 @@
         os.path.join(args.android_deps_dir, "buildSrc"),
         _GLOBAL_GRADLE_SUPRESSIONS_PATH:
         os.path.join(args.android_deps_dir, "vulnerability_supressions.xml"),
+        os.path.join(args.android_deps_dir, "build.gradle"):
+        os.path.join(args.android_deps_dir, "build.gradle"),
     }
 
     if not args.ignore_licenses:
         copied_paths[_GLOBAL_LICENSE_SUBDIR] = _GLOBAL_LICENSE_SUBDIR
 
-    missing_files = []
-    for src_path in copied_paths.keys():
-        if not os.path.exists(os.path.join(_CHROMIUM_SRC, src_path)):
-            missing_files.append(src_path)
-    for android_deps_file in _UPDATED_ANDROID_DEPS_FILES:
-        if not os.path.exists(
-                os.path.join(abs_android_deps_dir, android_deps_file)):
-            missing_files.append(android_deps_file)
-    if missing_files:
-        raise Exception('Missing files from {}: {}'.format(
-            _CHROMIUM_SRC, missing_files))
-
     with BuildDir(args.build_dir) as build_dir:
         build_android_deps_dir = os.path.join(build_dir, args.android_deps_dir)
 
         logging.info('Using build directory: %s', build_dir)
-        for android_deps_file in _UPDATED_ANDROID_DEPS_FILES:
-            CopyFileOrDirectory(
-                os.path.join(abs_android_deps_dir, android_deps_file),
-                os.path.join(build_android_deps_dir, android_deps_file))
+        Copy(abs_android_deps_dir,
+             _UPDATED_ANDROID_DEPS_FILES_ALLOW_EMPTY,
+             build_android_deps_dir,
+             _UPDATED_ANDROID_DEPS_FILES_ALLOW_EMPTY,
+             src_path_must_exist=False)
+        updated_android_deps_files_must_exist = [
+            f for f in _UPDATED_ANDROID_DEPS_FILES
+            if f not in _UPDATED_ANDROID_DEPS_FILES_ALLOW_EMPTY
+        ]
+        Copy(abs_android_deps_dir,
+             updated_android_deps_files_must_exist,
+             build_android_deps_dir,
+             updated_android_deps_files_must_exist,
+             src_path_must_exist=True)
 
-        for path, dest in copied_paths.items():
-            CopyFileOrDirectory(os.path.join(_CHROMIUM_SRC, path),
-                                os.path.join(build_dir, dest))
+        Copy(_CHROMIUM_SRC, list(copied_paths.keys()), build_dir,
+             list(copied_paths.values()))
 
         if debug:
             gradle_cmd.append('--debug')
@@ -596,10 +628,8 @@
 
         # Copy updated DEPS and BUILD.gn to build directory.
         update_cmds = []
-        for updated_file in _UPDATED_ANDROID_DEPS_FILES:
-            CopyFileOrDirectory(
-                os.path.join(build_android_deps_dir, updated_file),
-                os.path.join(abs_android_deps_dir, updated_file))
+        Copy(build_android_deps_dir, _UPDATED_ANDROID_DEPS_FILES,
+             abs_android_deps_dir, _UPDATED_ANDROID_DEPS_FILES)
 
         # Delete obsolete or updated package directories.
         for pkg in existing_packages.values():
diff --git a/third_party/androidx/additional_readme_paths.json b/third_party/androidx/additional_readme_paths.json
deleted file mode 100644
index 0d4f101c..0000000
--- a/third_party/androidx/additional_readme_paths.json
+++ /dev/null
@@ -1,2 +0,0 @@
-[
-]
diff --git a/third_party/androidx/build.gradle.template b/third_party/androidx/build.gradle.template
index bffc115a..3473ea3 100644
--- a/third_party/androidx/build.gradle.template
+++ b/third_party/androidx/build.gradle.template
@@ -89,5 +89,5 @@
     chromiumSourceRoot '../..'
     cipdBucket 'chromium'
     internalTargetVisibility = [ '//third_party/android_deps:*', ':*' ]
-    skipLicenses true
+    skipLicenses false
 }
diff --git a/third_party/androidx/fetch_all_androidx.py b/third_party/androidx/fetch_all_androidx.py
index 70643e66..bd3fa7e 100755
--- a/third_party/androidx/fetch_all_androidx.py
+++ b/third_party/androidx/fetch_all_androidx.py
@@ -129,7 +129,77 @@
             out.write(replacement)
 
 
+def _extract_files_from_yaml(yaml_path):
+    """Extracts '- file' file listings from yaml file."""
+
+    out = None
+    with open(yaml_path, 'r') as f:
+        for line in f.readlines():
+            line = line.rstrip('\n')
+            if line == 'data:':
+                out = []
+                continue
+            if out is not None:
+                if not line.startswith('- file:'):
+                    raise Exception(
+                        '{} has unsupported attributes. Only \'- file\' is supported'
+                        .format(yaml_path))
+                out.append(line.rsplit(' ', 1)[1])
+
+    if not out:
+        raise Exception('{} does not have \'data\' section.'.format(yaml_path))
+    return out
+
+
+def _write_cipd_yaml(libs_dir, cipd_yaml_path):
+    """Writes cipd.yaml file at the passed-in path."""
+
+    lib_dirs = os.listdir(libs_dir)
+    if not lib_dirs:
+        raise Exception('No generated libraries in {}'.format(libs_dir))
+
+    data_files = ['BUILD.gn', 'additional_readme_paths.json']
+    for lib_dir in lib_dirs:
+        abs_lib_dir = os.path.join(libs_dir, lib_dir)
+        if not os.path.isdir(abs_lib_dir):
+            continue
+        lib_files = os.listdir(abs_lib_dir)
+        if not 'cipd.yaml' in lib_files:
+            continue
+
+        if not 'README.chromium' in lib_files:
+            raise Exception('README.chromium not in {}'.format(abs_lib_dir))
+        if not 'LICENSE' in lib_files:
+            raise Exception('LICENSE not in {}'.format(abs_lib_dir))
+        data_files.append(os.path.join(abs_lib_dir, 'README.chromium'))
+        data_files.append(os.path.join(abs_lib_dir, 'LICENSE'))
+
+        _rel_extracted_files = _extract_files_from_yaml(
+            os.path.join(abs_lib_dir, 'cipd.yaml'))
+        data_files.extend(
+            os.path.join(abs_lib_dir, f) for f in _rel_extracted_files)
+
+    contents = [
+        '# Copyright 2020 The Chromium Authors. All rights reserved.',
+        '# Use of this source code is governed by a BSD-style license that can be',
+        '# found in the LICENSE file.',
+        'package: chromium/third_party/androidx', 'description: androidx',
+        'data:'
+    ]
+    contents.extend('- file: ' + f for f in data_files)
+
+    with open(cipd_yaml_path, 'w') as out:
+        out.write('\n'.join(contents))
+
+
 def main():
+    libs_dir = os.path.join(_ANDROIDX_PATH, 'libs')
+
+    # Let recipe delete contents of lib directory because it has API to retry
+    # directory deletion if the first deletion attempt does not work.
+    if os.path.exists(libs_dir) and os.listdir(libs_dir):
+        raise Exception('Recipe did not empty \'libs\' directory.')
+
     dependency_version_map, androidx_snapshot_repository_url = (
         _download_and_parse_build_info())
     _process_build_gradle(dependency_version_map,
@@ -139,7 +209,9 @@
         _FETCH_ALL_PATH, '--android-deps-dir',
         os.path.join('third_party', 'androidx'), '--ignore-vulnerabilities'
     ]
-    subprocess.run(fetch_all_cmd)
+    subprocess.run(fetch_all_cmd, check=True)
+
+    _write_cipd_yaml(libs_dir, os.path.join(_ANDROIDX_PATH, 'cipd.yaml'))
 
 
 if __name__ == '__main__':
diff --git a/third_party/blink/common/loader/throttling_url_loader.cc b/third_party/blink/common/loader/throttling_url_loader.cc
index 1f865fb..6aac85c4 100644
--- a/third_party/blink/common/loader/throttling_url_loader.cc
+++ b/third_party/blink/common/loader/throttling_url_loader.cc
@@ -181,6 +181,15 @@
     loader_->RestartWithURLResetAndFlagsNow(additional_load_flags);
   }
 
+  void RestartWithModifiedHeadersNow(
+      const net::HttpRequestHeaders& modified_headers) override {
+    if (!loader_)
+      return;
+
+    ScopedDelegateCall scoped_delegate_call(this);
+    loader_->RestartWithModifiedHeadersNow(modified_headers);
+  }
+
   void Detach() { loader_ = nullptr; }
 
  private:
@@ -599,6 +608,14 @@
     RestartWithFlagsNow();
 }
 
+void ThrottlingURLLoader::RestartWithModifiedHeadersNow(
+    const net::HttpRequestHeaders& modified_headers) {
+  modified_headers_.MergeFrom(modified_headers);
+  // While not actually redirecting, the mechanism here is very similar to an
+  // internal redirect to the same url.
+  FollowRedirectForcingRestart();
+}
+
 void ThrottlingURLLoader::OnReceiveResponse(
     network::mojom::URLResponseHeadPtr response_head) {
   DCHECK_EQ(DEFERRED_NONE, deferred_stage_);
diff --git a/third_party/blink/common/loader/throttling_url_loader_unittest.cc b/third_party/blink/common/loader/throttling_url_loader_unittest.cc
index c1fe940d..77036229 100644
--- a/third_party/blink/common/loader/throttling_url_loader_unittest.cc
+++ b/third_party/blink/common/loader/throttling_url_loader_unittest.cc
@@ -1898,6 +1898,51 @@
   EXPECT_EQ(throttle_->observed_response_url(), request_url);
 }
 
+// Ensure that RestartWithModifiedHeadersNow executes and internal redirect and
+// actually modifies the headers.
+TEST_F(ThrottlingURLLoaderTest, RestartWithModifiedHeadersNow) {
+  base::RunLoop run_loop1;
+  base::RunLoop run_loop2;
+
+  // Check that the initial loader uses the default load flags (0).
+  factory_.set_on_create_loader_and_start(base::BindRepeating(
+      [](const base::RepeatingClosure& quit_closure,
+         const network::ResourceRequest& url_request) {
+        EXPECT_FALSE(url_request.headers.HasHeader("X-Foo"));
+        quit_closure.Run();
+      },
+      run_loop1.QuitClosure()));
+
+  // Restart the request when processing BeforeWillProcessResponse(), using
+  // different load flags (1), and an URL reset.
+  throttle_->set_before_will_process_response_callback(base::BindRepeating(
+      [](blink::URLLoaderThrottle::Delegate* delegate, bool* defer) {
+        net::HttpRequestHeaders modified_headers;
+        modified_headers.SetHeader("X-Foo", "bar");
+        delegate->RestartWithModifiedHeadersNow(modified_headers);
+      }));
+
+  CreateLoaderAndStart();
+
+  run_loop1.Run();
+
+  // The next time we intercept CreateLoaderAndStart() should be for the
+  // restarted request (load flags of 1).
+  factory_.set_on_create_loader_and_start(base::BindRepeating(
+      [](const base::RepeatingClosure& quit_closure,
+         const network::ResourceRequest& url_request) {
+        std::string value;
+        EXPECT_TRUE(url_request.headers.GetHeader("X-Foo", &value));
+        EXPECT_EQ("bar", value);
+        quit_closure.Run();
+      },
+      run_loop2.QuitClosure()));
+
+  factory_.NotifyClientOnReceiveResponse();
+
+  run_loop2.Run();
+}
+
 // Call RestartWithURLResetAndFlags() from a single throttle after having
 // deferred BeforeWillProcessResponse(), and verify it uses the original URL.
 TEST_F(ThrottlingURLLoaderTest, DeferThenRestartWithURLResetAndFlags) {
diff --git a/third_party/blink/common/loader/url_loader_throttle.cc b/third_party/blink/common/loader/url_loader_throttle.cc
index b74c6e1..743b751 100644
--- a/third_party/blink/common/loader/url_loader_throttle.cc
+++ b/third_party/blink/common/loader/url_loader_throttle.cc
@@ -42,6 +42,11 @@
   NOTIMPLEMENTED();
 }
 
+void URLLoaderThrottle::Delegate::RestartWithModifiedHeadersNow(
+    const net::HttpRequestHeaders& modified_headers) {
+  NOTIMPLEMENTED();
+}
+
 URLLoaderThrottle::Delegate::~Delegate() {}
 
 URLLoaderThrottle::~URLLoaderThrottle() {}
diff --git a/third_party/blink/public/common/loader/throttling_url_loader.h b/third_party/blink/public/common/loader/throttling_url_loader.h
index ad5f8fc4..028c4c3 100644
--- a/third_party/blink/public/common/loader/throttling_url_loader.h
+++ b/third_party/blink/public/common/loader/throttling_url_loader.h
@@ -145,6 +145,10 @@
   // Restart the request immediately if the response has not started yet.
   void RestartWithURLResetAndFlagsNow(int additional_load_flags);
 
+  // Restart the request immediately with modified headers.
+  void RestartWithModifiedHeadersNow(
+      const net::HttpRequestHeaders& modified_headers);
+
   // network::mojom::URLLoaderClient implementation:
   void OnReceiveResponse(
       network::mojom::URLResponseHeadPtr response_head) override;
diff --git a/third_party/blink/public/common/loader/url_loader_throttle.h b/third_party/blink/public/common/loader/url_loader_throttle.h
index 7151833..9af0909e 100644
--- a/third_party/blink/public/common/loader/url_loader_throttle.h
+++ b/third_party/blink/public/common/loader/url_loader_throttle.h
@@ -129,6 +129,11 @@
     // Restarting is only valid before BeforeWillProcessResponse() is called.
     virtual void RestartWithURLResetAndFlagsNow(int additional_load_flags);
 
+    // Restarts the URL loader immediately after adding the provided headers to
+    // the new request.
+    virtual void RestartWithModifiedHeadersNow(
+        const net::HttpRequestHeaders& modified_headers);
+
    protected:
     virtual ~Delegate();
   };
diff --git a/third_party/blink/public/common/sms/webotp_service_outcome.h b/third_party/blink/public/common/sms/webotp_service_outcome.h
index c230064..70ced5f 100644
--- a/third_party/blink/public/common/sms/webotp_service_outcome.h
+++ b/third_party/blink/public/common/sms/webotp_service_outcome.h
@@ -16,7 +16,9 @@
   kConnectionError = 2,
   kCancelled = 3,
   kAborted = 4,
-  kMaxValue = kAborted
+  kTimeout = 5,
+  kUserCancelled = 6,
+  kMaxValue = kUserCancelled
 };
 
 }  // namespace blink
diff --git a/third_party/blink/public/devtools_protocol/browser_protocol.pdl b/third_party/blink/public/devtools_protocol/browser_protocol.pdl
index 3defc932..ac4cb395 100644
--- a/third_party/blink/public/devtools_protocol/browser_protocol.pdl
+++ b/third_party/blink/public/devtools_protocol/browser_protocol.pdl
@@ -1779,6 +1779,7 @@
       marker
       backdrop
       selection
+      target-text
       first-line-inherited
       scrollbar
       scrollbar-thumb
diff --git a/third_party/blink/public/mojom/sms/webotp_service.mojom b/third_party/blink/public/mojom/sms/webotp_service.mojom
index d6dfff2..4068ac3 100644
--- a/third_party/blink/public/mojom/sms/webotp_service.mojom
+++ b/third_party/blink/public/mojom/sms/webotp_service.mojom
@@ -10,10 +10,12 @@
 //
 // Proposal: https://github.com/WICG/web-otp
 enum SmsStatus {
-  kSuccess,
-  kUnhandledRequest,
-  kCancelled,
-  kAborted
+  kSuccess,  // WebOTP flow succeeded
+  kUnhandledRequest,  // request not handled upon destruction (navigation etc.)
+  kCancelled,  // request cancelled by the new request in the same WebOTPService
+  kAborted, // request aborted by API callers using AbortController
+  kTimeout, // request timeout due to user not responding to the prompt
+  kUserCancelled // request cancelled by user clicking "Deny" on the prompt
 };
 
 // This interface is created per storage partition but its execution is context
diff --git a/third_party/blink/public/strings/translations/blink_strings_bn.xtb b/third_party/blink/public/strings/translations/blink_strings_bn.xtb
index 3459d5fd..529be49 100644
--- a/third_party/blink/public/strings/translations/blink_strings_bn.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_bn.xtb
@@ -30,6 +30,7 @@
 <translation id="1806710327868736751">সতর্কতার_ডায়ালগ</translation>
 <translation id="1821985195704844674">ট্রি গ্রিড</translation>
 <translation id="1822429046913737220">AM/PM</translation>
+<translation id="1823704031293214298">পৃষ্ঠার ফুটার</translation>
 <translation id="1832974991323546415">রিমোট ডিভাইসে প্লে করুন</translation>
 <translation id="190587075670221089">মোছা হচ্ছে</translation>
 <translation id="1907737156431278478">উদাহরণ</translation>
@@ -105,6 +106,7 @@
 <translation id="4201051445878709314">পূর্ববর্তী মাস দেখান</translation>
 <translation id="421884353938374759">রঙ চয়নকারী</translation>
 <translation id="4248100235867064564">মেনু বার</translation>
+<translation id="4293574643247337246">পৃষ্ঠার হেডার</translation>
 <translation id="4360991593054037559">দয়া করে একটি বৈধ মান লিখুন৷ দুটি কাছাকাছির বৈধ মান হল <ph name="VALID_VALUE_LOW" /> এবং <ph name="VALID_VALUE_HIGHER" />৷</translation>
 <translation id="4384583879834880242">প্রশ্ন এবং উত্তর</translation>
 <translation id="4444765639179266822">মনে হচ্ছে বলতে চাইছে: <ph name="OCR_TEXT" /></translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_ca.xtb b/third_party/blink/public/strings/translations/blink_strings_ca.xtb
index 3cabae0..d6bd8d01c 100644
--- a/third_party/blink/public/strings/translations/blink_strings_ca.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_ca.xtb
@@ -106,7 +106,7 @@
 <translation id="4201051445878709314">Mostra el mes anterior</translation>
 <translation id="421884353938374759">selector de color</translation>
 <translation id="4248100235867064564">barra de menús</translation>
-<translation id="4293574643247337246">encapçalament de pàgina</translation>
+<translation id="4293574643247337246">capçalera de pàgina</translation>
 <translation id="4360991593054037559">Introduïu un valor vàlid. Els valors vàlids més propers són <ph name="VALID_VALUE_LOW" /> i <ph name="VALID_VALUE_HIGHER" />.</translation>
 <translation id="4384583879834880242">Preguntes</translation>
 <translation id="4444765639179266822">Sembla que diu "<ph name="OCR_TEXT" />"</translation>
diff --git a/third_party/blink/renderer/bindings/core/v8/generated_code_helper.cc b/third_party/blink/renderer/bindings/core/v8/generated_code_helper.cc
index 9a8432a..55b52457 100644
--- a/third_party/blink/renderer/bindings/core/v8/generated_code_helper.cc
+++ b/third_party/blink/renderer/bindings/core/v8/generated_code_helper.cc
@@ -269,11 +269,9 @@
     return v8::Undefined(isolate);
   }
 
-  // Named constructors are not interface objcets (despite that they're
-  // pretending so), but we reuse the cache of interface objects, which just
-  // works because both are V8 function template.
   v8::Local<v8::FunctionTemplate> function_template =
-      per_isolate_data->FindInterfaceTemplate(world, callback_key);
+      per_isolate_data->FindV8Template(world, callback_key)
+          .As<v8::FunctionTemplate>();
   if (function_template.IsEmpty()) {
     function_template = v8::FunctionTemplate::New(
         isolate, callback, v8::Local<v8::Value>(), v8::Local<v8::Signature>(),
@@ -285,8 +283,7 @@
     function_template->SetClassName(V8AtomicString(isolate, func_name));
     function_template->InstanceTemplate()->SetInternalFieldCount(
         kV8DefaultWrapperInternalFieldCount);
-    per_isolate_data->SetInterfaceTemplate(world, callback_key,
-                                           function_template);
+    per_isolate_data->AddV8Template(world, callback_key, function_template);
   }
 
   v8::Local<v8::Context> context = script_state->GetContext();
diff --git a/third_party/blink/renderer/bindings/core/v8/v8_dom_configuration.cc b/third_party/blink/renderer/bindings/core/v8/v8_dom_configuration.cc
index d409400..39f20c5 100644
--- a/third_party/blink/renderer/bindings/core/v8/v8_dom_configuration.cc
+++ b/third_party/blink/renderer/bindings/core/v8/v8_dom_configuration.cc
@@ -906,7 +906,7 @@
     InstallTemplateFunction configure_dom_class_template) {
   V8PerIsolateData* data = V8PerIsolateData::From(isolate);
   v8::Local<v8::FunctionTemplate> interface_template =
-      data->FindInterfaceTemplate(world, wrapper_type_info);
+      data->FindV8Template(world, wrapper_type_info).As<v8::FunctionTemplate>();
   if (!interface_template.IsEmpty())
     return interface_template;
 
@@ -914,7 +914,7 @@
   interface_template = v8::FunctionTemplate::New(
       isolate, V8ObjectConstructor::IsValidConstructorMode);
   configure_dom_class_template(isolate, world, interface_template);
-  data->SetInterfaceTemplate(world, wrapper_type_info, interface_template);
+  data->AddV8Template(world, wrapper_type_info, interface_template);
   return interface_template;
 }
 
diff --git a/third_party/blink/renderer/bindings/modules/v8/v8_context_snapshot_impl.cc b/third_party/blink/renderer/bindings/modules/v8/v8_context_snapshot_impl.cc
index 848346b..68e739a 100644
--- a/third_party/blink/renderer/bindings/modules/v8/v8_context_snapshot_impl.cc
+++ b/third_party/blink/renderer/bindings/modules/v8/v8_context_snapshot_impl.cc
@@ -413,8 +413,8 @@
               ->GetDataFromSnapshotOnce<v8::FunctionTemplate>(
                   world_index * base::size(type_info_table) + i)
               .ToLocalChecked();
-      per_isolate_data->SetInterfaceTemplate(
-          *world, type_info.wrapper_type_info, interface_template);
+      per_isolate_data->AddV8Template(*world, type_info.wrapper_type_info,
+                                      interface_template);
       type_info.install_props_per_isolate(
           isolate, *world, interface_template->InstanceTemplate(),
           interface_template->PrototypeTemplate(), interface_template);
diff --git a/third_party/blink/renderer/core/animation/css_default_interpolation_type.cc b/third_party/blink/renderer/core/animation/css_default_interpolation_type.cc
index 95656fdb..ab08978 100644
--- a/third_party/blink/renderer/core/animation/css_default_interpolation_type.cc
+++ b/third_party/blink/renderer/core/animation/css_default_interpolation_type.cc
@@ -7,6 +7,7 @@
 #include "third_party/blink/renderer/core/animation/css_interpolation_environment.h"
 #include "third_party/blink/renderer/core/animation/string_keyframe.h"
 #include "third_party/blink/renderer/core/css/resolver/style_builder.h"
+#include "third_party/blink/renderer/core/css/scoped_css_value.h"
 
 namespace blink {
 
@@ -48,7 +49,9 @@
   StyleBuilder::ApplyProperty(
       GetProperty().GetCSSPropertyName(),
       To<CSSInterpolationEnvironment>(environment).GetState(),
-      *To<CSSDefaultNonInterpolableValue>(non_interpolable_value)->CssValue());
+      ScopedCSSValue(*To<CSSDefaultNonInterpolableValue>(non_interpolable_value)
+                          ->CssValue(),
+                     nullptr));
 }
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/animation/css_interpolation_type.cc b/third_party/blink/renderer/core/animation/css_interpolation_type.cc
index ffe1dab..69d289d 100644
--- a/third_party/blink/renderer/core/animation/css_interpolation_type.cc
+++ b/third_party/blink/renderer/core/animation/css_interpolation_type.cc
@@ -24,6 +24,7 @@
 #include "third_party/blink/renderer/core/css/resolver/style_builder.h"
 #include "third_party/blink/renderer/core/css/resolver/style_cascade.h"
 #include "third_party/blink/renderer/core/css/resolver/style_resolver_state.h"
+#include "third_party/blink/renderer/core/css/scoped_css_value.h"
 #include "third_party/blink/renderer/core/style/computed_style.h"
 #include "third_party/blink/renderer/core/style/data_equivalency.h"
 #include "third_party/blink/renderer/core/style_property_shorthand.h"
@@ -336,7 +337,7 @@
   const CSSValue* value = MakeGarbageCollected<CSSCustomPropertyDeclaration>(
       property.CustomPropertyName(), std::move(variable_data));
   StyleBuilder::ApplyProperty(GetProperty().GetCSSPropertyName(), state,
-                              *value);
+                              ScopedCSSValue(*value, nullptr));
 }
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/animation/css_length_interpolation_type.cc b/third_party/blink/renderer/core/animation/css_length_interpolation_type.cc
index 93b6a92..12c18f3 100644
--- a/third_party/blink/renderer/core/animation/css_length_interpolation_type.cc
+++ b/third_party/blink/renderer/core/animation/css_length_interpolation_type.cc
@@ -13,6 +13,7 @@
 #include "third_party/blink/renderer/core/css/css_identifier_value.h"
 #include "third_party/blink/renderer/core/css/resolver/style_builder.h"
 #include "third_party/blink/renderer/core/css/resolver/style_resolver_state.h"
+#include "third_party/blink/renderer/core/css/scoped_css_value.h"
 #include "third_party/blink/renderer/core/style/computed_style.h"
 #include "third_party/blink/renderer/platform/geometry/length_functions.h"
 
@@ -145,8 +146,9 @@
     Length before;
     Length after;
     DCHECK(LengthPropertyFunctions::GetLength(CssProperty(), style, before));
-    StyleBuilder::ApplyProperty(GetProperty().GetCSSProperty(), state,
-                                *CSSValue::Create(length, zoom));
+    StyleBuilder::ApplyProperty(
+        GetProperty().GetCSSProperty(), state,
+        ScopedCSSValue(*CSSValue::Create(length, zoom), nullptr));
     DCHECK(LengthPropertyFunctions::GetLength(CssProperty(), style, after));
     DCHECK(before.IsSpecified());
     DCHECK(after.IsSpecified());
@@ -162,8 +164,9 @@
 #endif
     return;
   }
-  StyleBuilder::ApplyProperty(GetProperty().GetCSSProperty(), state,
-                              *CSSValue::Create(length, zoom));
+  StyleBuilder::ApplyProperty(
+      GetProperty().GetCSSProperty(), state,
+      ScopedCSSValue(*CSSValue::Create(length, zoom), nullptr));
 }
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/animation/css_number_interpolation_type.cc b/third_party/blink/renderer/core/animation/css_number_interpolation_type.cc
index e24be066..4d9393f 100644
--- a/third_party/blink/renderer/core/animation/css_number_interpolation_type.cc
+++ b/third_party/blink/renderer/core/animation/css_number_interpolation_type.cc
@@ -12,6 +12,7 @@
 #include "third_party/blink/renderer/core/css/css_numeric_literal_value.h"
 #include "third_party/blink/renderer/core/css/resolver/style_builder.h"
 #include "third_party/blink/renderer/core/css/resolver/style_resolver_state.h"
+#include "third_party/blink/renderer/core/css/scoped_css_value.h"
 
 namespace blink {
 
@@ -110,8 +111,10 @@
                                           clamped_number)) {
     StyleBuilder::ApplyProperty(
         GetProperty().GetCSSProperty(), state,
-        *CSSNumericLiteralValue::Create(clamped_number,
-                                        CSSPrimitiveValue::UnitType::kNumber));
+        ScopedCSSValue(
+            *CSSNumericLiteralValue::Create(
+                clamped_number, CSSPrimitiveValue::UnitType::kNumber),
+            nullptr));
   }
 }
 
diff --git a/third_party/blink/renderer/core/animation/css_var_cycle_interpolation_type.cc b/third_party/blink/renderer/core/animation/css_var_cycle_interpolation_type.cc
index ecf85c20..226e20f 100644
--- a/third_party/blink/renderer/core/animation/css_var_cycle_interpolation_type.cc
+++ b/third_party/blink/renderer/core/animation/css_var_cycle_interpolation_type.cc
@@ -14,6 +14,7 @@
 #include "third_party/blink/renderer/core/css/property_registration.h"
 #include "third_party/blink/renderer/core/css/resolver/style_builder.h"
 #include "third_party/blink/renderer/core/css/resolver/style_cascade.h"
+#include "third_party/blink/renderer/core/css/scoped_css_value.h"
 #include "third_party/blink/renderer/core/style/computed_style.h"
 
 namespace blink {
@@ -116,8 +117,10 @@
   StyleBuilder::ApplyProperty(
       GetProperty().GetCSSPropertyName(),
       To<CSSInterpolationEnvironment>(environment).GetState(),
-      *MakeGarbageCollected<CSSCustomPropertyDeclaration>(
-          GetProperty().CustomPropertyName(), CSSValueID::kUnset));
+      ScopedCSSValue(
+          *MakeGarbageCollected<CSSCustomPropertyDeclaration>(
+              GetProperty().CustomPropertyName(), CSSValueID::kUnset),
+          nullptr));
 }
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/css/build.gni b/third_party/blink/renderer/core/css/build.gni
index cbbf49a..f5726ac 100644
--- a/third_party/blink/renderer/core/css/build.gni
+++ b/third_party/blink/renderer/core/css/build.gni
@@ -538,6 +538,7 @@
   "selector_query.h",
   "shadow_tree_style_sheet_collection.cc",
   "shadow_tree_style_sheet_collection.h",
+  "scoped_css_value.h",
   "style_attribute_mutation_scope.cc",
   "style_attribute_mutation_scope.h",
   "style_auto_color.h",
@@ -629,6 +630,7 @@
   "cssom/prepopulated_computed_style_property_map_test.cc",
   "cssom/style_property_map_test.cc",
   "drag_update_test.cc",
+  "element_rule_collector_test.cc",
   "font_face_cache_test.cc",
   "font_size_functions_test.cc",
   "font_update_invalidation_test.cc",
@@ -681,7 +683,6 @@
   "resolver/style_resolver_test.cc",
   "rule_feature_set_test.cc",
   "rule_set_test.cc",
-  "selector_checker_test.cc",
   "selector_query_test.cc",
   "style_element_test.cc",
   "style_engine_test.cc",
diff --git a/third_party/blink/renderer/core/css/css_selector.cc b/third_party/blink/renderer/core/css/css_selector.cc
index 84ea9ee..5c368bd 100644
--- a/third_party/blink/renderer/core/css/css_selector.cc
+++ b/third_party/blink/renderer/core/css/css_selector.cc
@@ -227,6 +227,8 @@
       return kPseudoIdScrollbarTrackPiece;
     case kPseudoResizer:
       return kPseudoIdResizer;
+    case kPseudoTargetText:
+      return kPseudoIdTargetText;
     case kPseudoUnknown:
     case kPseudoEmpty:
     case kPseudoFirstChild:
@@ -424,6 +426,7 @@
     {"single-button", CSSSelector::kPseudoSingleButton},
     {"start", CSSSelector::kPseudoStart},
     {"target", CSSSelector::kPseudoTarget},
+    {"target-text", CSSSelector::kPseudoTargetText},
     {"unresolved", CSSSelector::kPseudoUnresolved},
     {"valid", CSSSelector::kPseudoValid},
     {"vertical", CSSSelector::kPseudoVertical},
@@ -493,6 +496,11 @@
     return CSSSelector::kPseudoUnknown;
   }
 
+  if (match->type == CSSSelector::kPseudoTargetText &&
+      !RuntimeEnabledFeatures::CSSTargetTextPseudoElementEnabled()) {
+    return CSSSelector::kPseudoUnknown;
+  }
+
   return static_cast<CSSSelector::PseudoType>(match->type);
 }
 
@@ -601,6 +609,7 @@
     case kPseudoWebKitCustomElement:
     case kPseudoContent:
     case kPseudoSlotted:
+    case kPseudoTargetText:
       if (match_ != kPseudoElement)
         pseudo_type_ = kPseudoUnknown;
       break;
@@ -1098,6 +1107,7 @@
     case kPseudoFirstLine:
     case kPseudoFirstLetter:
     case kPseudoSelection:
+    case kPseudoTargetText:
       return true;
     default:
       return false;
diff --git a/third_party/blink/renderer/core/css/css_selector.h b/third_party/blink/renderer/core/css/css_selector.h
index 9a92eb4a..44879a4 100644
--- a/third_party/blink/renderer/core/css/css_selector.h
+++ b/third_party/blink/renderer/core/css/css_selector.h
@@ -256,6 +256,7 @@
     kPseudoSlotted,
     kPseudoVideoPersistent,
     kPseudoVideoPersistentAncestor,
+    kPseudoTargetText,
   };
 
   enum class AttributeMatchType {
diff --git a/third_party/blink/renderer/core/css/element_rule_collector.cc b/third_party/blink/renderer/core/css/element_rule_collector.cc
index 9906eb3..263363b 100644
--- a/third_party/blink/renderer/core/css/element_rule_collector.cc
+++ b/third_party/blink/renderer/core/css/element_rule_collector.cc
@@ -177,11 +177,10 @@
 
     SelectorChecker::MatchResult result;
     context.selector = &rule_data->Selector();
-    // If the selector does not contain :link or :visited, we disable
-    // :visited matching as a performance optimization.
     context.is_inside_visited_link =
-        (inside_link_ == EInsideLink::kInsideVisitedLink) &&
-        rule_data->HasLinkOrVisited();
+        rule_data->LinkMatchType() == CSSSelector::kMatchVisited;
+    DCHECK(!context.is_inside_visited_link ||
+           (inside_link_ == EInsideLink::kInsideVisitedLink));
     if (!checker.Match(context, result)) {
       rejected++;
       continue;
@@ -253,6 +252,10 @@
   if (element.IsLink())
     CollectMatchingRulesForList(match_request.rule_set->LinkPseudoClassRules(),
                                 cascade_order, match_request);
+  if (inside_link_ == EInsideLink::kInsideVisitedLink) {
+    CollectMatchingRulesForList(match_request.rule_set->VisitedDependentRules(),
+                                cascade_order, match_request);
+  }
   if (SelectorChecker::MatchesFocusPseudoClass(element))
     CollectMatchingRulesForList(match_request.rule_set->FocusPseudoClassRules(),
                                 cascade_order, match_request);
@@ -349,7 +352,7 @@
     const RuleData* rule_data = matched_rule.GetRuleData();
     result_.AddMatchedProperties(
         &rule_data->Rule()->Properties(),
-        AdjustLinkMatchType(inside_link_, matched_rule.GetLinkMatchType()),
+        AdjustLinkMatchType(inside_link_, rule_data->LinkMatchType()),
         rule_data->GetValidPropertyFilter(matching_ua_rules_));
   }
 }
@@ -378,7 +381,7 @@
       style_->SetHasPseudoElementStyle(dynamic_pseudo);
   } else {
     matched_rules_.push_back(MatchedRule(
-        rule_data, result.specificity, result.link_match_type, cascade_order,
+        rule_data, result.specificity, cascade_order,
         match_request.style_sheet_index, match_request.style_sheet));
   }
 }
diff --git a/third_party/blink/renderer/core/css/element_rule_collector.h b/third_party/blink/renderer/core/css/element_rule_collector.h
index 4c5c1e1..8e69c00 100644
--- a/third_party/blink/renderer/core/css/element_rule_collector.h
+++ b/third_party/blink/renderer/core/css/element_rule_collector.h
@@ -54,13 +54,11 @@
  public:
   MatchedRule(const RuleData* rule_data,
               unsigned specificity,
-              unsigned link_match_type,
               ShadowV0CascadeOrder cascade_order,
               unsigned style_sheet_index,
               const CSSStyleSheet* parent_style_sheet)
       : rule_data_(rule_data),
         specificity_(specificity),
-        link_match_type_(link_match_type),
         parent_style_sheet_(parent_style_sheet) {
     DCHECK(rule_data_);
     static const unsigned kBitsForPositionInRuleData = 18;
@@ -76,7 +74,6 @@
   unsigned Specificity() const {
     return GetRuleData()->Specificity() + specificity_;
   }
-  unsigned GetLinkMatchType() const { return link_match_type_; }
   const CSSStyleSheet* ParentStyleSheet() const { return parent_style_sheet_; }
   void Trace(Visitor* visitor) const {
     visitor->Trace(parent_style_sheet_);
@@ -86,7 +83,6 @@
  private:
   Member<const RuleData> rule_data_;
   unsigned specificity_;
-  unsigned link_match_type_;
   uint64_t position_;
   Member<const CSSStyleSheet> parent_style_sheet_;
 };
diff --git a/third_party/blink/renderer/core/css/selector_checker_test.cc b/third_party/blink/renderer/core/css/element_rule_collector_test.cc
similarity index 61%
rename from third_party/blink/renderer/core/css/selector_checker_test.cc
rename to third_party/blink/renderer/core/css/element_rule_collector_test.cc
index c728bd0..491e41393 100644
--- a/third_party/blink/renderer/core/css/selector_checker_test.cc
+++ b/third_party/blink/renderer/core/css/element_rule_collector_test.cc
@@ -2,65 +2,75 @@
 // 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/core/css/selector_checker.h"
+#include "third_party/blink/renderer/core/css/element_rule_collector.h"
+
 #include "base/optional.h"
+#include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/blink/renderer/core/css/css_test_helpers.h"
-#include "third_party/blink/renderer/core/css/parser/css_parser.h"
-#include "third_party/blink/renderer/core/css/parser/css_parser_context.h"
-#include "third_party/blink/renderer/core/css/resolver/element_resolve_context.h"
+#include "third_party/blink/renderer/core/css/selector_filter.h"
 #include "third_party/blink/renderer/core/dom/document.h"
 #include "third_party/blink/renderer/core/dom/element_traversal.h"
 #include "third_party/blink/renderer/core/dom/flat_tree_traversal.h"
 #include "third_party/blink/renderer/core/style/computed_style.h"
 #include "third_party/blink/renderer/core/testing/page_test_base.h"
 
-#include "testing/gtest/include/gtest/gtest.h"
-
-#include <iostream>
-
 namespace blink {
 
-class SelectorCheckerTest : public PageTestBase {
+class ElementRuleCollectorTest : public PageTestBase {
  public:
-  bool IsInsideVisitedLink(Element* element) {
+  EInsideLink InsideLink(Element* element) {
     if (!element)
-      return false;
+      return EInsideLink::kNotInsideLink;
     if (element->IsLink()) {
       ElementResolveContext context(*element);
-      return context.ElementLinkState() == EInsideLink::kInsideVisitedLink;
+      return context.ElementLinkState();
     }
-    return IsInsideVisitedLink(
-        DynamicTo<Element>(FlatTreeTraversal::Parent(*element)));
+    return InsideLink(DynamicTo<Element>(FlatTreeTraversal::Parent(*element)));
   }
 
-  // Returns the link_match_type upon successful match, or base::nullopt
-  // on failure.
-  base::Optional<unsigned> Match(
-      const SelectorChecker::SelectorCheckingContext& context,
-      const String& selector) {
-    CSSSelectorList selector_list =
-        css_test_helpers::ParseSelectorList(selector);
-    DCHECK(selector_list.First()) << "Invalid selector: " << selector;
+  // Matches an element against a selector via ElementRuleCollector.
+  //
+  // Upon successful match, the combined CSSSelector::LinkMatchMask of
+  // of all matched rules is returned, or base::nullopt if no-match.
+  base::Optional<unsigned> Match(Element* element,
+                                 const String& selector,
+                                 const ContainerNode* scope = nullptr) {
+    ElementResolveContext context(*element);
+    SelectorFilter filter;
+    MatchResult result;
+    auto style = ComputedStyle::Create();
+    ElementRuleCollector collector(context, filter, result, style.get(),
+                                   InsideLink(element));
 
-    SelectorChecker::Init init;
-    SelectorChecker checker(init);
-    SelectorChecker::SelectorCheckingContext local_context(context);
-    local_context.selector = selector_list.First();
-    local_context.is_inside_visited_link = IsInsideVisitedLink(context.element);
-    SelectorChecker::MatchResult result;
-    if (checker.Match(local_context, result))
-      return result.link_match_type;
+    String rule = selector + " { color: green }";
+    auto* style_rule =
+        DynamicTo<StyleRule>(css_test_helpers::ParseRule(GetDocument(), rule));
+    if (!style_rule)
+      return base::nullopt;
+    RuleSet* rule_set = MakeGarbageCollected<RuleSet>();
+    rule_set->AddStyleRule(style_rule, kRuleHasNoSpecialState);
 
-    return base::nullopt;
-  }
+    MatchRequest request(rule_set, scope);
 
-  base::Optional<unsigned> Match(Element* element, const String& selector) {
-    SelectorChecker::SelectorCheckingContext context(element);
-    return Match(context, selector);
+    collector.CollectMatchingRules(request);
+    collector.SortAndTransferMatchedRules();
+
+    const MatchedPropertiesVector& vector = result.GetMatchedProperties();
+    if (!vector.size())
+      return base::nullopt;
+
+    // Either the normal rules matched, the visited dependent rules matched,
+    // or both. There should be nothing else.
+    DCHECK(vector.size() == 1 || vector.size() == 2);
+
+    unsigned link_match_type = 0;
+    for (const auto& matched_propeties : vector)
+      link_match_type |= matched_propeties.types_.link_match_type;
+    return link_match_type;
   }
 };
 
-TEST_F(SelectorCheckerTest, LinkMatchType) {
+TEST_F(ElementRuleCollectorTest, LinkMatchType) {
   SetBodyInnerHTML(R"HTML(
     <div id=foo></div>
     <a id=visited href="">
@@ -84,33 +94,30 @@
   ASSERT_TRUE(unvisited_span);
   ASSERT_TRUE(visited_span);
 
-  ASSERT_TRUE(IsInsideVisitedLink(visited));
-  ASSERT_TRUE(IsInsideVisitedLink(visited_span));
-  ASSERT_FALSE(IsInsideVisitedLink(foo));
-  ASSERT_FALSE(IsInsideVisitedLink(link));
-  ASSERT_FALSE(IsInsideVisitedLink(unvisited_span));
-  ASSERT_FALSE(IsInsideVisitedLink(bar));
+  ASSERT_EQ(EInsideLink::kInsideVisitedLink, InsideLink(visited));
+  ASSERT_EQ(EInsideLink::kInsideVisitedLink, InsideLink(visited_span));
+  ASSERT_EQ(EInsideLink::kNotInsideLink, InsideLink(foo));
+  ASSERT_EQ(EInsideLink::kInsideUnvisitedLink, InsideLink(link));
+  ASSERT_EQ(EInsideLink::kInsideUnvisitedLink, InsideLink(unvisited_span));
+  ASSERT_EQ(EInsideLink::kNotInsideLink, InsideLink(bar));
 
   const auto kMatchLink = CSSSelector::kMatchLink;
   const auto kMatchVisited = CSSSelector::kMatchVisited;
   const auto kMatchAll = CSSSelector::kMatchAll;
-  ASSERT_TRUE(kMatchLink);
-  ASSERT_TRUE(kMatchVisited);
-  ASSERT_TRUE(kMatchAll);
 
   EXPECT_EQ(Match(foo, "#bar"), base::nullopt);
   EXPECT_EQ(Match(visited, "#foo"), base::nullopt);
   EXPECT_EQ(Match(link, "#foo"), base::nullopt);
 
-  EXPECT_EQ(Match(foo, "#foo"), kMatchAll);
+  EXPECT_EQ(Match(foo, "#foo"), kMatchLink);
   EXPECT_EQ(Match(link, ":visited"), base::nullopt);
-  // Note that |link| isn't a _visited_ link, hence it gets regular treatment by
-  // SelectorChecker::Match. And for regular treatments we always get kMatchAll
-  // if the selector matches.
-  EXPECT_EQ(Match(link, ":link"), kMatchAll);
-  EXPECT_EQ(Match(foo, ":not(:visited)"), kMatchAll);
-  EXPECT_EQ(Match(foo, ":not(:link)"), kMatchAll);
-  EXPECT_EQ(Match(foo, ":not(:link):not(:visited)"), kMatchAll);
+  EXPECT_EQ(Match(link, ":link"), kMatchLink);
+  // Note that for elements that are not inside links at all, we always
+  // expect kMatchLink, since kMatchLink represents the regular (non-visited)
+  // style.
+  EXPECT_EQ(Match(foo, ":not(:visited)"), kMatchLink);
+  EXPECT_EQ(Match(foo, ":not(:link)"), kMatchLink);
+  EXPECT_EQ(Match(foo, ":not(:link):not(:visited)"), kMatchLink);
 
   EXPECT_EQ(Match(visited, ":link"), kMatchLink);
   EXPECT_EQ(Match(visited, ":visited"), kMatchVisited);
@@ -161,15 +168,15 @@
   // When using :link/:visited in a sibling selector, we expect special
   // behavior for privacy reasons.
   // https://developer.mozilla.org/en-US/docs/Web/CSS/Privacy_and_the_:visited_selector
-  EXPECT_EQ(Match(bar, ":link + #bar"), kMatchAll);
+  EXPECT_EQ(Match(bar, ":link + #bar"), kMatchLink);
   EXPECT_EQ(Match(bar, ":visited + #bar"), base::nullopt);
-  EXPECT_EQ(Match(bar, ":is(:link + #bar)"), kMatchAll);
+  EXPECT_EQ(Match(bar, ":is(:link + #bar)"), kMatchLink);
   EXPECT_EQ(Match(bar, ":is(:visited ~ #bar)"), base::nullopt);
   EXPECT_EQ(Match(bar, ":not(:is(:link + #bar))"), base::nullopt);
-  EXPECT_EQ(Match(bar, ":not(:is(:visited ~ #bar))"), kMatchAll);
+  EXPECT_EQ(Match(bar, ":not(:is(:visited ~ #bar))"), kMatchLink);
 }
 
-TEST_F(SelectorCheckerTest, LinkMatchTypeHostContext) {
+TEST_F(ElementRuleCollectorTest, LinkMatchTypeHostContext) {
   SetBodyInnerHTML(R"HTML(
     <a href=""><div id="visited_host"></div></a>
     <a href="unvisited"><div id="unvisited_host"></div></a>
@@ -211,29 +218,33 @@
   const auto kMatchAll = CSSSelector::kMatchAll;
 
   {
-    SelectorChecker::SelectorCheckingContext context(visited_div);
-    context.scope = visited_style;
+    Element* element = visited_div;
+    const ContainerNode* scope = visited_style;
 
-    EXPECT_EQ(Match(context, ":host-context(a) div"), kMatchAll);
-    EXPECT_EQ(Match(context, ":host-context(:link) div"), kMatchLink);
-    EXPECT_EQ(Match(context, ":host-context(:visited) div"), kMatchVisited);
-    EXPECT_EQ(Match(context, ":host-context(:is(:visited, :link)) div"),
+    EXPECT_EQ(Match(element, ":host-context(a) div", scope), kMatchAll);
+    EXPECT_EQ(Match(element, ":host-context(:link) div", scope), kMatchLink);
+    EXPECT_EQ(Match(element, ":host-context(:visited) div", scope),
+              kMatchVisited);
+    EXPECT_EQ(Match(element, ":host-context(:is(:visited, :link)) div", scope),
               kMatchAll);
 
     // :host-context(:not(:visited/link)) matches the host itself.
-    EXPECT_EQ(Match(context, ":host-context(:not(:visited)) div"), kMatchAll);
-    EXPECT_EQ(Match(context, ":host-context(:not(:link)) div"), kMatchAll);
+    EXPECT_EQ(Match(element, ":host-context(:not(:visited)) div", scope),
+              kMatchAll);
+    EXPECT_EQ(Match(element, ":host-context(:not(:link)) div", scope),
+              kMatchAll);
   }
 
   {
-    SelectorChecker::SelectorCheckingContext context(unvisited_div);
-    context.scope = unvisited_style;
+    Element* element = unvisited_div;
+    const ContainerNode* scope = unvisited_style;
 
-    EXPECT_EQ(Match(context, ":host-context(a) div"), kMatchAll);
-    EXPECT_EQ(Match(context, ":host-context(:link) div"), kMatchAll);
-    EXPECT_EQ(Match(context, ":host-context(:visited) div"), base::nullopt);
-    EXPECT_EQ(Match(context, ":host-context(:is(:visited, :link)) div"),
-              kMatchAll);
+    EXPECT_EQ(Match(element, ":host-context(a) div", scope), kMatchAll);
+    EXPECT_EQ(Match(element, ":host-context(:link) div", scope), kMatchLink);
+    EXPECT_EQ(Match(element, ":host-context(:visited) div", scope),
+              base::nullopt);
+    EXPECT_EQ(Match(element, ":host-context(:is(:visited, :link)) div", scope),
+              kMatchLink);
   }
 }
 
diff --git a/third_party/blink/renderer/core/css/properties/css_property_test.cc b/third_party/blink/renderer/core/css/properties/css_property_test.cc
index eda96e1..7495249a 100644
--- a/third_party/blink/renderer/core/css/properties/css_property_test.cc
+++ b/third_party/blink/renderer/core/css/properties/css_property_test.cc
@@ -10,6 +10,7 @@
 #include "third_party/blink/renderer/core/css/properties/css_property_ref.h"
 #include "third_party/blink/renderer/core/css/resolver/style_builder.h"
 #include "third_party/blink/renderer/core/css/resolver/style_resolver_state.h"
+#include "third_party/blink/renderer/core/css/scoped_css_value.h"
 #include "third_party/blink/renderer/core/html/html_element.h"
 #include "third_party/blink/renderer/core/style/computed_style.h"
 #include "third_party/blink/renderer/core/style/data_equivalency.h"
@@ -42,7 +43,8 @@
     state.Style()->SetBorderRightStyle(EBorderStyle::kSolid);
     state.Style()->SetBorderTopStyle(EBorderStyle::kSolid);
 
-    StyleBuilder::ApplyProperty(property, state, value);
+    StyleBuilder::ApplyProperty(property, state,
+                                ScopedCSSValue(value, &GetDocument()));
     return state.TakeStyle();
   }
 };
diff --git a/third_party/blink/renderer/core/css/resolver/cascade_expansion.cc b/third_party/blink/renderer/core/css/resolver/cascade_expansion.cc
index 6162211..29185ff 100644
--- a/third_party/blink/renderer/core/css/resolver/cascade_expansion.cc
+++ b/third_party/blink/renderer/core/css/resolver/cascade_expansion.cc
@@ -186,4 +186,8 @@
   return matched_properties_.properties->PropertyAt(index_);
 }
 
+uint16_t CascadeExpansion::TreeOrder() const {
+  return matched_properties_.types_.tree_order;
+}
+
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/css/resolver/cascade_expansion.h b/third_party/blink/renderer/core/css/resolver/cascade_expansion.h
index af6d8d2c..f1090cd 100644
--- a/third_party/blink/renderer/core/css/resolver/cascade_expansion.h
+++ b/third_party/blink/renderer/core/css/resolver/cascade_expansion.h
@@ -98,6 +98,7 @@
     return PropertyAt(index_).Value();
   }
   inline CascadePriority Priority() const { return priority_; }
+  uint16_t TreeOrder() const;
 
  private:
   static bool IsAffectedByAll(CSSPropertyID);
diff --git a/third_party/blink/renderer/core/css/resolver/match_request.h b/third_party/blink/renderer/core/css/resolver/match_request.h
index 2409fd6..94c8a78 100644
--- a/third_party/blink/renderer/core/css/resolver/match_request.h
+++ b/third_party/blink/renderer/core/css/resolver/match_request.h
@@ -34,7 +34,7 @@
 // Encapsulates the context for matching against a single style sheet by
 // ElementRuleCollector. Carries the RuleSet, scope (a ContainerNode) and
 // CSSStyleSheet.
-class MatchRequest {
+class CORE_EXPORT MatchRequest {
   STACK_ALLOCATED();
 
  public:
diff --git a/third_party/blink/renderer/core/css/resolver/match_result.cc b/third_party/blink/renderer/core/css/resolver/match_result.cc
index 2e6f1ef3..df2515c 100644
--- a/third_party/blink/renderer/core/css/resolver/match_result.cc
+++ b/third_party/blink/renderer/core/css/resolver/match_result.cc
@@ -94,6 +94,7 @@
   is_cacheable_ = true;
   current_origin_ = CascadeOrigin::kUserAgent;
   current_tree_order_ = 0;
+  tree_scopes_.clear();
 }
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/css/resolver/match_result_test.cc b/third_party/blink/renderer/core/css/resolver/match_result_test.cc
index 5eff882..af8f3d61 100644
--- a/third_party/blink/renderer/core/css/resolver/match_result_test.cc
+++ b/third_party/blink/renderer/core/css/resolver/match_result_test.cc
@@ -6,6 +6,7 @@
 
 #include "third_party/blink/renderer/core/css/css_property_value_set.h"
 #include "third_party/blink/renderer/core/css/css_test_helpers.h"
+#include "third_party/blink/renderer/core/dom/shadow_root.h"
 #include "third_party/blink/renderer/core/testing/page_test_base.h"
 #include "third_party/blink/renderer/platform/heap/heap.h"
 
@@ -30,6 +31,12 @@
     return result.GetMatchedProperties()[index].types_.origin;
   }
 
+  const TreeScope& TreeScopeAt(const MatchResult& result, size_t index) {
+    DCHECK_EQ(CascadeOrigin::kAuthor, OriginAt(result, index));
+    return result.ScopeFromTreeOrder(
+        result.GetMatchedProperties()[index].types_.tree_order);
+  }
+
  private:
   Persistent<HeapVector<Member<MutableCSSPropertyValueSet>, 8>> property_sets;
 };
@@ -285,4 +292,33 @@
   EXPECT_TRUE(result.IsCacheable());
 }
 
+TEST_F(MatchResultTest, ResetTreeScope) {
+  SetBodyInnerHTML("<div id=host1></div><div id=host2></div>");
+  Element* host1 = GetElementById("host1");
+  Element* host2 = GetElementById("host2");
+  ASSERT_TRUE(host1);
+  ASSERT_TRUE(host2);
+  TreeScope& scope1 = host1->AttachShadowRootInternal(ShadowRootType::kOpen);
+  TreeScope& scope2 = host2->AttachShadowRootInternal(ShadowRootType::kOpen);
+
+  MatchResult result;
+  result.FinishAddingUARules();
+  result.FinishAddingUserRules();
+  result.AddMatchedProperties(PropertySet(0));
+  result.FinishAddingAuthorRulesForTreeScope(scope1);
+
+  ASSERT_EQ(LengthOf(result), 1u);
+  EXPECT_EQ(&TreeScopeAt(result, 0), &scope1);
+
+  result.Reset();
+
+  result.FinishAddingUARules();
+  result.FinishAddingUserRules();
+  result.AddMatchedProperties(PropertySet(0));
+  result.FinishAddingAuthorRulesForTreeScope(scope2);
+
+  ASSERT_EQ(LengthOf(result), 1u);
+  EXPECT_EQ(&TreeScopeAt(result, 0), &scope2);
+}
+
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/css/resolver/style_builder.cc b/third_party/blink/renderer/core/css/resolver/style_builder.cc
index 7b72837..29ea83ab 100644
--- a/third_party/blink/renderer/core/css/resolver/style_builder.cc
+++ b/third_party/blink/renderer/core/css/resolver/style_builder.cc
@@ -48,27 +48,29 @@
 #include "third_party/blink/renderer/core/css/properties/longhands/variable.h"
 #include "third_party/blink/renderer/core/css/resolver/style_builder.h"
 #include "third_party/blink/renderer/core/css/resolver/style_resolver_state.h"
+#include "third_party/blink/renderer/core/css/scoped_css_value.h"
 #include "third_party/blink/renderer/core/style/computed_style.h"
 
 namespace blink {
 
 void StyleBuilder::ApplyProperty(const CSSPropertyName& name,
                                  StyleResolverState& state,
-                                 const CSSValue& value) {
+                                 const ScopedCSSValue& scoped_value) {
   CSSPropertyRef ref(name, state.GetDocument());
   DCHECK(ref.IsValid());
 
-  ApplyProperty(ref.GetProperty(), state, value);
+  ApplyProperty(ref.GetProperty(), state, scoped_value);
 }
 
 void StyleBuilder::ApplyProperty(const CSSProperty& property,
                                  StyleResolverState& state,
-                                 const CSSValue& value) {
+                                 const ScopedCSSValue& scoped_value) {
   DCHECK(!Variable::IsStaticInstance(property))
       << "Please use a CustomProperty instance to apply custom properties";
 
   CSSPropertyID id = property.PropertyID();
   bool is_inherited = property.IsInherited();
+  const CSSValue& value = scoped_value.GetCSSValue();
 
   // These values must be resolved by StyleCascade before application:
   DCHECK(!value.IsVariableReferenceValue());
diff --git a/third_party/blink/renderer/core/css/resolver/style_builder.h b/third_party/blink/renderer/core/css/resolver/style_builder.h
index 455e2f8..5b20d50 100644
--- a/third_party/blink/renderer/core/css/resolver/style_builder.h
+++ b/third_party/blink/renderer/core/css/resolver/style_builder.h
@@ -39,7 +39,7 @@
 namespace blink {
 
 class CSSPropertyName;
-class CSSValue;
+class ScopedCSSValue;
 class StyleResolverState;
 
 class CORE_EXPORT StyleBuilder {
@@ -52,7 +52,7 @@
   // CustomProperty instance is created to carry out the application.
   static void ApplyProperty(const CSSPropertyName&,
                             StyleResolverState&,
-                            const CSSValue&);
+                            const ScopedCSSValue&);
 
   // Apply a property/value pair to the ComputedStyle.
   //
@@ -61,7 +61,7 @@
   // instance. See Variable::IsStaticInstance.
   static void ApplyProperty(const CSSProperty&,
                             StyleResolverState&,
-                            const CSSValue&);
+                            const ScopedCSSValue&);
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/css/resolver/style_builder_test.cc b/third_party/blink/renderer/core/css/resolver/style_builder_test.cc
index 4952293..323666b 100644
--- a/third_party/blink/renderer/core/css/resolver/style_builder_test.cc
+++ b/third_party/blink/renderer/core/css/resolver/style_builder_test.cc
@@ -7,6 +7,7 @@
 #include "third_party/blink/renderer/core/css/css_inherited_value.h"
 #include "third_party/blink/renderer/core/css/css_initial_value.h"
 #include "third_party/blink/renderer/core/css/resolver/style_resolver_state.h"
+#include "third_party/blink/renderer/core/css/scoped_css_value.h"
 #include "third_party/blink/renderer/core/html/html_element.h"
 #include "third_party/blink/renderer/core/style/computed_style.h"
 #include "third_party/blink/renderer/core/testing/page_test_base.h"
@@ -41,7 +42,8 @@
       state.SetStyle(style);
 
       ASSERT_FALSE(state.GetFontBuilder().FontDirty());
-      StyleBuilder::ApplyProperty(*property, state, *value);
+      StyleBuilder::ApplyProperty(*property, state,
+                                  ScopedCSSValue(*value, &GetDocument()));
       EXPECT_TRUE(state.GetFontBuilder().FontDirty());
     }
   }
@@ -72,7 +74,8 @@
       state.SetStyle(style);
 
       ASSERT_FALSE(state.GetFontBuilder().FontDirty());
-      StyleBuilder::ApplyProperty(*property, state, *value);
+      StyleBuilder::ApplyProperty(*property, state,
+                                  ScopedCSSValue(*value, &GetDocument()));
       EXPECT_TRUE(state.GetFontBuilder().FontDirty());
     }
   }
@@ -86,13 +89,14 @@
   state.SetStyle(style);
   EXPECT_FALSE(style->HasExplicitInheritance());
 
+  ScopedCSSValue inherited(*CSSInheritedValue::Create(), &GetDocument());
+
   // Flag should not be set for properties which are inherited.
-  StyleBuilder::ApplyProperty(GetCSSPropertyColor(), state,
-                              *CSSInheritedValue::Create());
+  StyleBuilder::ApplyProperty(GetCSSPropertyColor(), state, inherited);
   EXPECT_FALSE(style->HasExplicitInheritance());
 
   StyleBuilder::ApplyProperty(GetCSSPropertyBackgroundColor(), state,
-                              *CSSInheritedValue::Create());
+                              inherited);
   EXPECT_TRUE(style->HasExplicitInheritance());
 }
 
diff --git a/third_party/blink/renderer/core/css/resolver/style_cascade.cc b/third_party/blink/renderer/core/css/resolver/style_cascade.cc
index a6ff57d..13ce88a0 100644
--- a/third_party/blink/renderer/core/css/resolver/style_cascade.cc
+++ b/third_party/blink/renderer/core/css/resolver/style_cascade.cc
@@ -28,6 +28,7 @@
 #include "third_party/blink/renderer/core/css/resolver/cascade_resolver.h"
 #include "third_party/blink/renderer/core/css/resolver/style_builder.h"
 #include "third_party/blink/renderer/core/css/resolver/style_resolver_state.h"
+#include "third_party/blink/renderer/core/css/scoped_css_value.h"
 #include "third_party/blink/renderer/core/css/style_engine.h"
 #include "third_party/blink/renderer/core/dom/shadow_root.h"
 #include "third_party/blink/renderer/core/frame/web_feature.h"
@@ -80,6 +81,14 @@
   return &set->PropertyAt(declaration_index).Value();
 }
 
+const TreeScope& TreeScopeAt(const MatchResult& result, uint32_t position) {
+  size_t matched_properties_index = DecodeMatchedPropertiesIndex(position);
+  const MatchedProperties& properties =
+      result.GetMatchedProperties()[matched_properties_index];
+  DCHECK_EQ(properties.types_.origin, CascadeOrigin::kAuthor);
+  return result.ScopeFromTreeOrder(properties.types_.tree_order);
+}
+
 PropertyHandle ToPropertyHandle(const CSSProperty& property,
                                 CascadePriority priority) {
   uint32_t position = priority.GetPosition();
@@ -397,7 +406,14 @@
       *p = priority;
       CascadeOrigin origin = priority.GetOrigin();
       const CSSValue* value = Resolve(property, e.Value(), origin, resolver);
-      StyleBuilder::ApplyProperty(property, state_, *value);
+      // TODO(futhark): Use a user scope TreeScope to support tree-scoped names
+      // for animations in user stylesheets.
+      const TreeScope* tree_scope =
+          origin == CascadeOrigin::kAuthor
+              ? &match_result_.ScopeFromTreeOrder(e.TreeOrder())
+              : nullptr;
+      StyleBuilder::ApplyProperty(property, state_,
+                                  ScopedCSSValue(*value, tree_scope));
     }
   }
 }
@@ -524,7 +540,11 @@
   value = Resolve(property, *value, origin, resolver);
   DCHECK(!value->IsVariableReferenceValue());
   DCHECK(!value->IsPendingSubstitutionValue());
-  StyleBuilder::ApplyProperty(property, state_, *value);
+  const TreeScope* tree_scope{nullptr};
+  if (origin == CascadeOrigin::kAuthor)
+    tree_scope = &TreeScopeAt(match_result_, priority.GetPosition());
+  StyleBuilder::ApplyProperty(property, state_,
+                              ScopedCSSValue(*value, tree_scope));
 }
 
 void StyleCascade::LookupAndApplyInterpolation(const CSSProperty& property,
@@ -602,11 +622,14 @@
   MaybeForceColor(GetCSSPropertyInternalVisitedTextEmphasisColor(),
                   style->InternalVisitedTextEmphasisColor());
 
-  auto* none = CSSIdentifierValue::Create(CSSValueID::kNone);
-  StyleBuilder::ApplyProperty(GetCSSPropertyTextShadow(), state_, *none);
-  StyleBuilder::ApplyProperty(GetCSSPropertyBoxShadow(), state_, *none);
-  if (!style->HasUrlBackgroundImage())
-    StyleBuilder::ApplyProperty(GetCSSPropertyBackgroundImage(), state_, *none);
+  ScopedCSSValue scoped_none(*CSSIdentifierValue::Create(CSSValueID::kNone),
+                             nullptr);
+  StyleBuilder::ApplyProperty(GetCSSPropertyTextShadow(), state_, scoped_none);
+  StyleBuilder::ApplyProperty(GetCSSPropertyBoxShadow(), state_, scoped_none);
+  if (!style->HasUrlBackgroundImage()) {
+    StyleBuilder::ApplyProperty(GetCSSPropertyBackgroundImage(), state_,
+                                scoped_none);
+  }
 
   // Preserve the author/user defined background alpha channel.
   style->SetBackgroundColor(
@@ -629,7 +652,9 @@
     return;
 
   StyleBuilder::ApplyProperty(
-      property, state_, *GetForcedColorValue(property.GetCSSPropertyName()));
+      property, state_,
+      ScopedCSSValue(*GetForcedColorValue(property.GetCSSPropertyName()),
+                     nullptr));
 }
 
 const CSSValue* StyleCascade::GetForcedColorValue(CSSPropertyName name) {
diff --git a/third_party/blink/renderer/core/css/resolver/style_cascade_test.cc b/third_party/blink/renderer/core/css/resolver/style_cascade_test.cc
index 76aeb91..c127bfb 100644
--- a/third_party/blink/renderer/core/css/resolver/style_cascade_test.cc
+++ b/third_party/blink/renderer/core/css/resolver/style_cascade_test.cc
@@ -125,12 +125,12 @@
   }
 
   void Apply(CascadeFilter filter = CascadeFilter()) {
-    EnsureAtLeast(CascadeOrigin::kAuthor);
+    EnsureAtLeast(CascadeOrigin::kAnimation);
     cascade_.Apply(filter);
   }
 
   void ApplySingle(const CSSProperty& property) {
-    EnsureAtLeast(CascadeOrigin::kAuthor);
+    EnsureAtLeast(CascadeOrigin::kAnimation);
     cascade_.AnalyzeIfNeeded();
     TestCascadeResolver resolver(++cascade_.generation_);
     cascade_.LookupAndApply(property, resolver.InnerResolver());
@@ -234,6 +234,12 @@
         current_origin_ = CascadeOrigin::kAuthor;
         break;
       case CascadeOrigin::kAuthor:
+        cascade_.MutableMatchResult().FinishAddingAuthorRulesForTreeScope(
+            GetDocument());
+        current_origin_ = CascadeOrigin::kAnimation;
+        break;
+      case CascadeOrigin::kAnimation:
+        break;
       default:
         NOTREACHED();
         break;
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 8717609..f1a8cd7 100644
--- a/third_party/blink/renderer/core/css/resolver/style_resolver.cc
+++ b/third_party/blink/renderer/core/css/resolver/style_resolver.cc
@@ -62,6 +62,7 @@
 #include "third_party/blink/renderer/core/css/resolver/style_resolver_state.h"
 #include "third_party/blink/renderer/core/css/resolver/style_resolver_stats.h"
 #include "third_party/blink/renderer/core/css/resolver/style_rule_usage_tracker.h"
+#include "third_party/blink/renderer/core/css/scoped_css_value.h"
 #include "third_party/blink/renderer/core/css/style_engine.h"
 #include "third_party/blink/renderer/core/css/style_rule_import.h"
 #include "third_party/blink/renderer/core/css/style_sheet_contents.h"
@@ -695,7 +696,7 @@
 
   // Now check author rules, beginning first with presentational attributes
   // mapped from HTML.
-  if (element.IsStyledElement()) {
+  if (element.IsStyledElement() && !state.IsForPseudoElement()) {
     collector.AddElementStyleProperties(element.PresentationAttributeStyle());
 
     // Now we check additional mapped declarations.
@@ -721,7 +722,7 @@
   ScopedStyleResolver* element_scope_resolver = ScopedResolverFor(element);
   MatchAuthorRules(element, element_scope_resolver, collector);
 
-  if (element.IsStyledElement()) {
+  if (element.IsStyledElement() && !state.IsForPseudoElement()) {
     // For Shadow DOM V1, inline style is already collected in
     // matchScopedRules().
     if (GetDocument().GetShadowCascadeOrder() ==
@@ -1082,6 +1083,8 @@
     cascade.MutableMatchResult().FinishAddingUARules();
     cascade.MutableMatchResult().FinishAddingUserRules();
     cascade.MutableMatchResult().AddMatchedProperties(set);
+    cascade.MutableMatchResult().FinishAddingAuthorRulesForTreeScope(
+        element.GetTreeScope());
     cascade.Apply();
   }
   return CompositorKeyframeValueFactory::Create(property, *state.Style());
@@ -1139,12 +1142,11 @@
     GetDocument().GetStyleEngine().EnsureUAStyleForPseudoElement(
         pseudo_style_request.pseudo_id);
 
-    MatchUARules(*element, collector);
     // TODO(obrufau): support styling nested pseudo-elements
-    if (!element->IsPseudoElement()) {
-      MatchUserRules(collector);
-      MatchAuthorRules(*element, ScopedResolverFor(*element), collector);
-    }
+    if (!element->IsPseudoElement())
+      MatchAllRules(state, collector, /* include_smil_properties */ false);
+    else
+      MatchUARules(*element, collector);
 
     if (tracker_)
       AddMatchedRulesToTracker(collector);
@@ -1660,6 +1662,8 @@
   cascade.MutableMatchResult().FinishAddingUARules();
   cascade.MutableMatchResult().FinishAddingUserRules();
   cascade.MutableMatchResult().AddMatchedProperties(set);
+  cascade.MutableMatchResult().FinishAddingAuthorRulesForTreeScope(
+      element->GetTreeScope());
   cascade.Apply();
 
   CSSPropertyRef property_ref(property_name, element->GetDocument());
@@ -1785,9 +1789,14 @@
   for (const CSSProperty* property : properties) {
     if (property->IDEquals(CSSPropertyID::kLineHeight))
       UpdateFont(state);
+    // TODO(futhark): If we start supporting fonts on ShadowRoot.fonts in
+    // addition to Document.fonts, we need to pass the correct TreeScope instead
+    // of GetDocument() in the ScopedCSSValue below.
     StyleBuilder::ApplyProperty(
         *property, state,
-        *property_set.GetPropertyCSSValue(property->PropertyID()));
+        ScopedCSSValue(
+            *property_set.GetPropertyCSSValue(property->PropertyID()),
+            &GetDocument()));
   }
 }
 
diff --git a/third_party/blink/renderer/core/css/resolver/style_resolver_state.cc b/third_party/blink/renderer/core/css/resolver/style_resolver_state.cc
index 426e5c1..b1017198 100644
--- a/third_party/blink/renderer/core/css/resolver/style_resolver_state.cc
+++ b/third_party/blink/renderer/core/css/resolver/style_resolver_state.cc
@@ -39,7 +39,7 @@
     Element& element,
     PseudoElement* pseudo_element,
     PseudoElementStyleRequest::RequestType pseudo_request_type,
-    AnimatingElementType animating_element_type,
+    ElementType element_type,
     const ComputedStyle* parent_style,
     const ComputedStyle* layout_parent_style)
     : element_context_(element),
@@ -52,7 +52,7 @@
                                document.DevicePixelRatio(),
                                pseudo_element),
       pseudo_element_(pseudo_element),
-      animating_element_type_(animating_element_type) {
+      element_type_(element_type) {
   DCHECK(!!parent_style_ == !!layout_parent_style_);
 
   if (!parent_style_) {
@@ -76,7 +76,7 @@
                          element,
                          nullptr /* pseudo_element */,
                          PseudoElementStyleRequest::kForRenderer,
-                         AnimatingElementType::kElement,
+                         ElementType::kElement,
                          parent_style,
                          layout_parent_style) {}
 
@@ -91,7 +91,7 @@
                          element,
                          element.GetPseudoElement(pseudo_id),
                          pseudo_request_type,
-                         AnimatingElementType::kPseudoElement,
+                         ElementType::kPseudoElement,
                          parent_style,
                          layout_parent_style) {}
 
@@ -202,9 +202,9 @@
 }
 
 Element* StyleResolverState::GetAnimatingElement() const {
-  if (animating_element_type_ == AnimatingElementType::kElement)
+  if (element_type_ == ElementType::kElement)
     return &GetElement();
-  DCHECK_EQ(AnimatingElementType::kPseudoElement, animating_element_type_);
+  DCHECK_EQ(ElementType::kPseudoElement, element_type_);
   return pseudo_element_;
 }
 
diff --git a/third_party/blink/renderer/core/css/resolver/style_resolver_state.h b/third_party/blink/renderer/core/css/resolver/style_resolver_state.h
index 78b6fd11..3b1172e4 100644
--- a/third_party/blink/renderer/core/css/resolver/style_resolver_state.h
+++ b/third_party/blink/renderer/core/css/resolver/style_resolver_state.h
@@ -50,6 +50,8 @@
 class CORE_EXPORT StyleResolverState {
   STACK_ALLOCATED();
 
+  enum class ElementType { kElement, kPseudoElement };
+
  public:
   StyleResolverState(Document&,
                      Element&,
@@ -65,6 +67,10 @@
   StyleResolverState& operator=(const StyleResolverState&) = delete;
   ~StyleResolverState();
 
+  bool IsForPseudoElement() const {
+    return element_type_ == ElementType::kPseudoElement;
+  }
+
   // In FontFaceSet and CanvasRenderingContext2D, we don't have an element to
   // grab the document from.  This is why we have to store the document
   // separately.
@@ -227,13 +233,11 @@
   bool CanCacheBaseStyle() const { return can_cache_base_style_; }
 
  private:
-  enum class AnimatingElementType { kElement, kPseudoElement };
-
   StyleResolverState(Document&,
                      Element&,
                      PseudoElement*,
                      PseudoElementStyleRequest::RequestType,
-                     AnimatingElementType,
+                     ElementType,
                      const ComputedStyle* parent_style,
                      const ComputedStyle* layout_parent_style);
 
@@ -265,7 +269,7 @@
 
   ElementStyleResources element_style_resources_;
   Element* pseudo_element_;
-  AnimatingElementType animating_element_type_;
+  ElementType element_type_;
 
   // Properties depended on by the ComputedStyle. This is known after the
   // cascade is applied.
diff --git a/third_party/blink/renderer/core/css/rule_feature_set.cc b/third_party/blink/renderer/core/css/rule_feature_set.cc
index 8cc5fe553..16f4263 100644
--- a/third_party/blink/renderer/core/css/rule_feature_set.cc
+++ b/third_party/blink/renderer/core/css/rule_feature_set.cc
@@ -177,9 +177,9 @@
     case CSSSelector::kPseudoVideoPersistent:
     case CSSSelector::kPseudoVideoPersistentAncestor:
     case CSSSelector::kPseudoXrOverlay:
-      return true;
     case CSSSelector::kPseudoIs:
     case CSSSelector::kPseudoWhere:
+    case CSSSelector::kPseudoTargetText:
       return true;
     case CSSSelector::kPseudoUnknown:
     case CSSSelector::kPseudoLeftPage:
diff --git a/third_party/blink/renderer/core/css/rule_set.cc b/third_party/blink/renderer/core/css/rule_set.cc
index afbca72f..980ff85 100644
--- a/third_party/blink/renderer/core/css/rule_set.cc
+++ b/third_party/blink/renderer/core/css/rule_set.cc
@@ -63,6 +63,16 @@
   return ValidPropertyFilter::kNoFilter;
 }
 
+static unsigned DetermineLinkMatchType(const AddRuleFlags add_rule_flags,
+                                       const CSSSelector& selector) {
+  if (selector.HasLinkOrVisited()) {
+    return (add_rule_flags & kRuleIsVisitedDependent)
+               ? CSSSelector::kMatchVisited
+               : CSSSelector::kMatchLink;
+  }
+  return CSSSelector::kMatchAll;
+}
+
 RuleData* RuleData::MaybeCreate(StyleRule* rule,
                                 unsigned selector_index,
                                 unsigned position,
@@ -86,7 +96,7 @@
       selector_index_(selector_index),
       position_(position),
       specificity_(Selector().Specificity()),
-      has_link_or_visited_(Selector().HasLinkOrVisited()),
+      link_match_type_(DetermineLinkMatchType(add_rule_flags, Selector())),
       has_document_security_origin_(add_rule_flags &
                                     kRuleHasDocumentSecurityOrigin),
       valid_property_filter_(
@@ -272,6 +282,19 @@
     // rules.
     universal_rules_.push_back(rule_data);
   }
+
+  // If the rule has CSSSelector::kMatchLink, it means that there is a :visited
+  // or :link pseudo-class somewhere in the selector. In those cases, we
+  // effectively split the rule into two: one which covers the situation
+  // where we are in an unvisited link (kMatchLink), and another which covers
+  // the visited link case (kMatchVisited).
+  if (rule_data->LinkMatchType() == CSSSelector::kMatchLink) {
+    RuleData* visited_dependent = RuleData::MaybeCreate(
+        rule, rule_data->SelectorIndex(), rule_data->GetPosition(),
+        add_rule_flags | kRuleIsVisitedDependent);
+    DCHECK(visited_dependent);
+    visited_dependent_rules_.push_back(visited_dependent);
+  }
 }
 
 void RuleSet::AddPageRule(StyleRulePage* rule) {
@@ -467,6 +490,7 @@
   visitor->Trace(scroll_timeline_rules_);
   visitor->Trace(deep_combinator_or_shadow_pseudo_rules_);
   visitor->Trace(part_pseudo_rules_);
+  visitor->Trace(visited_dependent_rules_);
   visitor->Trace(content_pseudo_element_rules_);
   visitor->Trace(slotted_pseudo_element_rules_);
   visitor->Trace(pending_rules_);
diff --git a/third_party/blink/renderer/core/css/rule_set.h b/third_party/blink/renderer/core/css/rule_set.h
index c1d0330..f67587cc 100644
--- a/third_party/blink/renderer/core/css/rule_set.h
+++ b/third_party/blink/renderer/core/css/rule_set.h
@@ -36,9 +36,12 @@
 
 namespace blink {
 
-enum AddRuleFlags {
+using AddRuleFlags = unsigned;
+
+enum AddRuleFlag {
   kRuleHasNoSpecialState = 0,
-  kRuleHasDocumentSecurityOrigin = 1,
+  kRuleHasDocumentSecurityOrigin = 1 << 0,
+  kRuleIsVisitedDependent = 1 << 1,
 };
 
 // Some CSS properties do not apply to certain pseudo-elements, and need to be
@@ -110,7 +113,7 @@
     return contains_uncommon_attribute_selector_;
   }
   unsigned Specificity() const { return specificity_; }
-  bool HasLinkOrVisited() const { return has_link_or_visited_; }
+  unsigned LinkMatchType() const { return link_match_type_; }
   bool HasDocumentSecurityOrigin() const {
     return has_document_security_origin_;
   }
@@ -146,10 +149,10 @@
   unsigned contains_uncommon_attribute_selector_ : 1;
   // 32 bits above
   unsigned specificity_ : 24;
-  unsigned has_link_or_visited_ : 1;
+  unsigned link_match_type_ : 2;
   unsigned has_document_security_origin_ : 1;
   unsigned valid_property_filter_ : 2;
-  // 28 bits above
+  // 29 bits above
   // Use plain array instead of a Vector to minimize memory overhead.
   unsigned descendant_selector_identifier_hashes_[kMaximumIdentifierCount];
 };
@@ -240,6 +243,10 @@
     DCHECK(!pending_rules_);
     return &part_pseudo_rules_;
   }
+  const HeapVector<Member<const RuleData>>* VisitedDependentRules() const {
+    DCHECK(!pending_rules_);
+    return &visited_dependent_rules_;
+  }
   const HeapVector<Member<StyleRulePage>>& PageRules() const {
     DCHECK(!pending_rules_);
     return page_rules_;
@@ -351,6 +358,7 @@
   HeapVector<Member<const RuleData>> universal_rules_;
   HeapVector<Member<const RuleData>> shadow_host_rules_;
   HeapVector<Member<const RuleData>> part_pseudo_rules_;
+  HeapVector<Member<const RuleData>> visited_dependent_rules_;
   RuleFeatureSet features_;
   HeapVector<Member<StyleRulePage>> page_rules_;
   HeapVector<Member<StyleRuleFontFace>> font_face_rules_;
diff --git a/third_party/blink/renderer/core/css/scoped_css_value.h b/third_party/blink/renderer/core/css/scoped_css_value.h
new file mode 100644
index 0000000..8c9f1f7
--- /dev/null
+++ b/third_party/blink/renderer/core/css/scoped_css_value.h
@@ -0,0 +1,33 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_CSS_SCOPED_CSS_VALUE_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_CSS_SCOPED_CSS_VALUE_H_
+
+namespace blink {
+
+class CSSValue;
+class TreeScope;
+
+// Store a CSSValue along with a TreeScope to support tree-scoped names and
+// references for e.g. @font-face/font-family and @keyframes/animation-name.
+// If the TreeScope pointer is null, we do not support such references, for
+// instance for UA stylesheets.
+class ScopedCSSValue {
+  STACK_ALLOCATED();
+
+ public:
+  ScopedCSSValue(const CSSValue& value, const TreeScope* tree_scope)
+      : value_(value), tree_scope_(tree_scope) {}
+  const CSSValue& GetCSSValue() const { return value_; }
+  const TreeScope* GetTreeScope() const { return tree_scope_; }
+
+ private:
+  const CSSValue& value_;
+  const TreeScope* tree_scope_;
+};
+
+}  // namespace blink
+
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_CSS_SCOPED_CSS_VALUE_H_
diff --git a/third_party/blink/renderer/core/css/selector_checker.cc b/third_party/blink/renderer/core/css/selector_checker.cc
index dfd8ff2..94601d0 100644
--- a/third_party/blink/renderer/core/css/selector_checker.cc
+++ b/third_party/blink/renderer/core/css/selector_checker.cc
@@ -238,8 +238,6 @@
     if (context.selector->IsLastInTagHistory())
       return false;
   }
-  if (UNLIKELY(context.is_inside_visited_link))
-    return MatchForVisitedLink(context, result) == kSelectorMatches;
   return MatchSelector(context, result) == kSelectorMatches;
 }
 
@@ -339,26 +337,6 @@
   return MatchSelector(context, result);
 }
 
-SelectorChecker::MatchStatus SelectorChecker::MatchForVisitedLink(
-    const SelectorCheckingContext& context,
-    MatchResult& result) const {
-  DCHECK(context.is_inside_visited_link);
-
-  SelectorCheckingContext unvisited(context);
-  unvisited.is_inside_visited_link = false;
-
-  unsigned link_match_type = 0;
-
-  if (MatchSelector(unvisited, result) == kSelectorMatches)
-    link_match_type |= CSSSelector::kMatchLink;
-  if (MatchSelector(context, result) == kSelectorMatches)
-    link_match_type |= CSSSelector::kMatchVisited;
-
-  result.link_match_type = link_match_type;
-
-  return link_match_type ? kSelectorMatches : kSelectorFailsCompletely;
-}
-
 static inline Element* ParentOrV0ShadowHostElement(const Element& element) {
   if (auto* shadow_root = DynamicTo<ShadowRoot>(element.parentNode())) {
     if (shadow_root->GetType() != ShadowRootType::V0)
diff --git a/third_party/blink/renderer/core/css/selector_checker.h b/third_party/blink/renderer/core/css/selector_checker.h
index 27cd94a2..6e11ebe 100644
--- a/third_party/blink/renderer/core/css/selector_checker.h
+++ b/third_party/blink/renderer/core/css/selector_checker.h
@@ -128,7 +128,6 @@
    public:
     PseudoId dynamic_pseudo{kPseudoIdNone};
     unsigned specificity{0};
-    unsigned link_match_type{CSSSelector::kMatchAll};
   };
 
   bool Match(const SelectorCheckingContext& context, MatchResult& result) const;
@@ -183,8 +182,6 @@
   MatchStatus MatchForPseudoShadow(const SelectorCheckingContext&,
                                    const ContainerNode*,
                                    MatchResult&) const;
-  MatchStatus MatchForVisitedLink(const SelectorCheckingContext&,
-                                  MatchResult&) const;
   bool CheckPseudoClass(const SelectorCheckingContext&, MatchResult&) const;
   bool CheckPseudoElement(const SelectorCheckingContext&, MatchResult&) const;
   bool CheckScrollbarPseudoClass(const SelectorCheckingContext&,
diff --git a/third_party/blink/renderer/core/frame/history.cc b/third_party/blink/renderer/core/frame/history.cc
index 87acf075..5c6bedd 100644
--- a/third_party/blink/renderer/core/frame/history.cc
+++ b/third_party/blink/renderer/core/frame/history.cc
@@ -123,7 +123,8 @@
 void History::setScrollRestoration(const String& value,
                                    ExceptionState& exception_state) {
   DCHECK(value == "manual" || value == "auto");
-  if (!DomWindow()) {
+  HistoryItem* item = GetHistoryItem();
+  if (!item) {
     exception_state.ThrowSecurityError(
         "May not use a History object associated with a Document that is not "
         "fully active");
@@ -136,7 +137,7 @@
   if (scroll_restoration == ScrollRestorationInternal())
     return;
 
-  GetHistoryItem()->SetScrollRestorationType(scroll_restoration);
+  item->SetScrollRestorationType(scroll_restoration);
   DomWindow()->GetFrame()->Client()->DidUpdateCurrentHistoryItem();
 }
 
diff --git a/third_party/blink/renderer/core/inspector/inspector_dom_agent.cc b/third_party/blink/renderer/core/inspector/inspector_dom_agent.cc
index 64fe591..8e80579 100644
--- a/third_party/blink/renderer/core/inspector/inspector_dom_agent.cc
+++ b/third_party/blink/renderer/core/inspector/inspector_dom_agent.cc
@@ -180,6 +180,8 @@
       return protocol::DOM::PseudoTypeEnum::Backdrop;
     case kPseudoIdSelection:
       return protocol::DOM::PseudoTypeEnum::Selection;
+    case kPseudoIdTargetText:
+      return protocol::DOM::PseudoTypeEnum::TargetText;
     case kPseudoIdFirstLineInherited:
       return protocol::DOM::PseudoTypeEnum::FirstLineInherited;
     case kPseudoIdScrollbar:
diff --git a/third_party/blink/renderer/core/inspector/inspector_trace_events.cc b/third_party/blink/renderer/core/inspector/inspector_trace_events.cc
index 5df4bb2..af3ae80 100644
--- a/third_party/blink/renderer/core/inspector/inspector_trace_events.cc
+++ b/third_party/blink/renderer/core/inspector/inspector_trace_events.cc
@@ -368,6 +368,7 @@
     DEFINE_STRING_MAPPING(PseudoVideoPersistent)
     DEFINE_STRING_MAPPING(PseudoVideoPersistentAncestor)
     DEFINE_STRING_MAPPING(PseudoXrOverlay)
+    DEFINE_STRING_MAPPING(PseudoTargetText)
 #undef DEFINE_STRING_MAPPING
   }
 
diff --git a/third_party/blink/renderer/core/loader/document_loader.cc b/third_party/blink/renderer/core/loader/document_loader.cc
index 1c5f25f..6f77a88 100644
--- a/third_party/blink/renderer/core/loader/document_loader.cc
+++ b/third_party/blink/renderer/core/loader/document_loader.cc
@@ -772,24 +772,23 @@
 }
 
 void DocumentLoader::FinalizeMHTMLArchiveLoad() {
-  if (!frame_->IsMainFrame()) {
-    // Only the top-frame can load MHTML.
+  // The browser process is blocking any navigation toward MHTML archive inside
+  // iframes. See NavigationRequest::OnResponseStarted().
+  CHECK(frame_->IsMainFrame());
+
+  archive_ = MHTMLArchive::Create(url_, data_buffer_);
+  archive_load_result_ = archive_->LoadResult();
+  if (archive_load_result_ != mojom::blink::MHTMLLoadResult::kSuccess) {
+    // TODO(arthursonzogni): Remove this. Once approved by the browser process,
+    // loading the MHTML archive shouldn't fail. We can serve empty document
+    // instead.
+    archive_.Clear();
+
+    // Log if attempting to load an invalid archive resource.
     frame_->Console().AddMessage(MakeGarbageCollected<ConsoleMessage>(
         mojom::ConsoleMessageSource::kJavaScript,
         mojom::ConsoleMessageLevel::kError,
-        "Attempted to load a multipart archive into an subframe: " +
-            url_.GetString()));
-  } else {
-    archive_ = MHTMLArchive::Create(url_, data_buffer_);
-    archive_load_result_ = archive_->LoadResult();
-    if (archive_load_result_ != mojom::MHTMLLoadResult::kSuccess) {
-      archive_.Clear();
-      // Log if attempting to load an invalid archive resource.
-      frame_->Console().AddMessage(MakeGarbageCollected<ConsoleMessage>(
-          mojom::ConsoleMessageSource::kJavaScript,
-          mojom::ConsoleMessageLevel::kError,
-          "Malformed multipart archive: " + url_.GetString()));
-    }
+        "Malformed multipart archive: " + url_.GetString()));
   }
   data_buffer_ = nullptr;
 }
@@ -1289,10 +1288,15 @@
     body_loader_->StartLoadingBody(this, false /* use_isolated_code_cache */);
     if (body_loader_) {
       // Finalize the load of the MHTML archive. If the load fail (ie. did not
-      // finish synchronously), |body_loader_| will be null amd the load will
+      // finish synchronously), |body_loader_| will be null and the load will
       // not be finalized. When StartLoadingResponse is called later, an empty
       // document will be loaded instead of the MHTML archive.
       // TODO(clamy): Simplify this code path.
+      // TODO(arthursonzogni): Make the load impossible to fail. Once approved
+      // by the browser process, it shouldn't be possible to fail committing the
+      // document. We can fallback to empty response. Alternatively, we can make
+      // MHTML document to be served from a dedicated URLLoader and fail
+      // earlier.
       FinalizeMHTMLArchiveLoad();
     }
     return;
diff --git a/third_party/blink/renderer/core/style/computed_style_constants.h b/third_party/blink/renderer/core/style/computed_style_constants.h
index 1a127b1..af0d21b 100644
--- a/third_party/blink/renderer/core/style/computed_style_constants.h
+++ b/third_party/blink/renderer/core/style/computed_style_constants.h
@@ -64,6 +64,7 @@
   kPseudoIdBackdrop,
   kPseudoIdSelection,
   kPseudoIdScrollbar,
+  kPseudoIdTargetText,
   // Internal IDs follow:
   kPseudoIdFirstLineInherited,
   kPseudoIdScrollbarThumb,
diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d_state.cc b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d_state.cc
index ea305eb..56ebc4fb 100644
--- a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d_state.cc
+++ b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d_state.cc
@@ -8,6 +8,7 @@
 #include "third_party/blink/renderer/core/css/resolver/filter_operation_resolver.h"
 #include "third_party/blink/renderer/core/css/resolver/style_builder.h"
 #include "third_party/blink/renderer/core/css/resolver/style_resolver_state.h"
+#include "third_party/blink/renderer/core/css/scoped_css_value.h"
 #include "third_party/blink/renderer/core/dom/node_computed_style.h"
 #include "third_party/blink/renderer/core/html/canvas/html_canvas_element.h"
 #include "third_party/blink/renderer/core/paint/filter_effect_builder.h"
@@ -375,8 +376,9 @@
                                       filter_style.get(), filter_style.get());
     resolver_state.SetStyle(filter_style);
 
-    StyleBuilder::ApplyProperty(GetCSSPropertyFilter(), resolver_state,
-                                *filter_value_);
+    StyleBuilder::ApplyProperty(
+        GetCSSPropertyFilter(), resolver_state,
+        ScopedCSSValue(*filter_value_, &style_resolution_host->GetDocument()));
     resolver_state.LoadPendingResources();
 
     // We can't reuse m_fillFlags and m_strokeFlags for the filter, since these
diff --git a/third_party/blink/renderer/modules/credentialmanager/credentials_container.cc b/third_party/blink/renderer/modules/credentialmanager/credentials_container.cc
index 3c0e6419..69f49a7 100644
--- a/third_party/blink/renderer/modules/credentialmanager/credentials_container.cc
+++ b/third_party/blink/renderer/modules/credentialmanager/credentials_container.cc
@@ -577,6 +577,22 @@
     resolver->Reject(MakeGarbageCollected<DOMException>(
         DOMExceptionCode::kAbortError, "OTP retrieval was cancelled."));
     return;
+  } else if (status == mojom::blink::SmsStatus::kTimeout) {
+    RecordSmsOutcome(WebOTPServiceOutcome::kTimeout, source_id, recorder);
+    // We do not reject the promise as in other branches because the failure
+    // may not belong to the origin that sends the request. e.g. there are two
+    // origins A and B in the queue and A aborts the request. The prompt that
+    // is timeout may belong to A but we are sending the failure information to
+    // the only origin in the queue which is B. Therefore rejecting the promise
+    // may leak information. This should be rare so recording metrics is fine.
+    // TODO(crbug.com/1138454): We should improve the infrastructure to be able
+    // to handle failed requests when there are multiple pending origins
+    // simultaneously.
+    return;
+  } else if (status == mojom::blink::SmsStatus::kUserCancelled) {
+    RecordSmsOutcome(WebOTPServiceOutcome::kUserCancelled, source_id, recorder);
+    // Similar to kTimeout, the promise is not rejected here.
+    return;
   }
   RecordSmsSuccessTime(base::TimeTicks::Now() - start_time, source_id,
                        recorder);
diff --git a/third_party/blink/renderer/modules/payments/payment_request.cc b/third_party/blink/renderer/modules/payments/payment_request.cc
index 160331ab..be560e56 100644
--- a/third_party/blink/renderer/modules/payments/payment_request.cc
+++ b/third_party/blink/renderer/modules/payments/payment_request.cc
@@ -10,6 +10,7 @@
 
 #include "base/bind.h"
 #include "base/location.h"
+#include "base/logging.h"
 #include "base/stl_util.h"
 #include "build/build_config.h"
 #include "third_party/blink/public/common/browser_interface_broker_proxy.h"
@@ -831,6 +832,8 @@
     return ScriptPromise();
   }
 
+  VLOG(2) << "Renderer: PaymentRequest (" << id_.Utf8() << "): show()";
+
   UseCounter::Count(GetExecutionContext(), WebFeature::kPaymentRequestShow);
 
   is_waiting_for_show_promise_to_resolve_ = !details_promise.IsEmpty();
@@ -876,6 +879,8 @@
     return ScriptPromise();
   }
 
+  VLOG(2) << "Renderer: PaymentRequest (" << id_.Utf8() << "): abort()";
+
   abort_resolver_ = MakeGarbageCollected<ScriptPromiseResolver>(script_state);
   payment_provider_->Abort();
   return abort_resolver_->Promise();
@@ -895,6 +900,9 @@
     return ScriptPromise();
   }
 
+  VLOG(2) << "Renderer: PaymentRequest (" << id_.Utf8()
+          << "): canMakePayment()";
+
   payment_provider_->CanMakePayment();
 
   can_make_payment_resolver_ =
@@ -917,6 +925,9 @@
     return ScriptPromise();
   }
 
+  VLOG(2) << "Renderer: PaymentRequest (" << id_.Utf8()
+          << "): hasEnrolledInstrument()";
+
   payment_provider_->HasEnrolledInstrument();
 
   has_enrolled_instrument_resolver_ =
@@ -1222,6 +1233,8 @@
   validated_details->id = id_ =
       details->hasId() ? details->id() : WTF::CreateCanonicalUUIDString();
 
+  VLOG(2) << "Renderer: New PaymentRequest (" << id_.Utf8() << ")";
+
   // This flag is set to true by ValidateAndConvertPaymentMethodData() if this
   // request is eligible for the Skip-to-GPay experimental flow and the GPay
   // payment method data has been patched to delegate shipping and contact
diff --git a/third_party/blink/renderer/modules/payments/payment_response.cc b/third_party/blink/renderer/modules/payments/payment_response.cc
index 11361b6a..f29100d 100644
--- a/third_party/blink/renderer/modules/payments/payment_response.cc
+++ b/third_party/blink/renderer/modules/payments/payment_response.cc
@@ -4,6 +4,7 @@
 
 #include "third_party/blink/renderer/modules/payments/payment_response.h"
 
+#include "base/logging.h"
 #include "third_party/blink/renderer/bindings/core/v8/v8_binding_for_core.h"
 #include "third_party/blink/renderer/bindings/core/v8/v8_object_builder.h"
 #include "third_party/blink/renderer/bindings/modules/v8/v8_payment_validation_errors.h"
@@ -112,6 +113,8 @@
 ScriptPromise PaymentResponse::complete(ScriptState* script_state,
                                         const String& result,
                                         ExceptionState& exception_state) {
+  VLOG(2) << "Renderer: PaymentRequest (" << requestId().Utf8()
+          << "): complete(" << result << ")";
   PaymentStateResolver::PaymentComplete converted_result =
       PaymentStateResolver::PaymentComplete::kUnknown;
   if (result == "success")
@@ -126,6 +129,7 @@
     ScriptState* script_state,
     const PaymentValidationErrors* error_fields,
     ExceptionState& exception_state) {
+  VLOG(2) << "Renderer: PaymentRequest (" << requestId().Utf8() << "): retry()";
   return payment_state_resolver_->Retry(script_state, error_fields,
                                         exception_state);
 }
diff --git a/third_party/blink/renderer/modules/sanitizer_api/sanitizer.cc b/third_party/blink/renderer/modules/sanitizer_api/sanitizer.cc
index 7ae0745..2577ca4 100644
--- a/third_party/blink/renderer/modules/sanitizer_api/sanitizer.cc
+++ b/third_party/blink/renderer/modules/sanitizer_api/sanitizer.cc
@@ -29,47 +29,54 @@
   // Format dropElements to uppercase.
   drop_elements_ = default_drop_elements_;
   if (config->hasDropElements()) {
-    for (const String& s : config->dropElements()) {
-      drop_elements_.insert(s.UpperASCII());
-    }
+    ElementFormatter(drop_elements_, config->dropElements());
   }
 
   // Format blockElements to uppercase.
   block_elements_ = default_block_elements_;
   if (config->hasBlockElements()) {
-    for (const String& s : config->blockElements()) {
-      const String& upper_s = s.UpperASCII();
-      if (!drop_elements_.Contains(upper_s)) {
-        block_elements_.insert(upper_s);
-      }
-    }
+    ElementFormatter(block_elements_, config->blockElements());
   }
 
+  // Format allowElements to uppercase.
   if (config->hasAllowElements()) {
-    // Format allowElements to uppercase.
     has_allow_elements_ = true;
-    for (const String& s : config->allowElements()) {
-      const String& upper = s.UpperASCII();
-      if (!drop_elements_.Contains(upper) &&
-          !default_block_elements_.Contains(upper))
-        allow_elements_.insert(upper);
-    }
+    ElementFormatter(allow_elements_, config->allowElements());
   }
 
   // Format dropAttributes to lowercase.
   drop_attributes_ = default_drop_attributes_;
   if (config->hasDropAttributes()) {
-    for (const String& s : config->dropAttributes()) {
-      drop_attributes_.insert(s.LowerASCII());
-    }
+    AttrFormatter(drop_attributes_, config->dropAttributes());
   }
+
+  // Format allowAttributes to lowercase.
   if (config->hasAllowAttributes()) {
     has_allow_attributes_ = true;
-    for (const String& s : config->allowAttributes()) {
-      const String& lower_s = s.LowerASCII();
-      if (!default_drop_attributes_.Contains(lower_s) &&
-          !default_block_elements_.Contains(lower_s))
-        allow_attributes_.insert(lower_s);
+    AttrFormatter(allow_attributes_, config->allowAttributes());
+  }
+}
+
+void Sanitizer::ElementFormatter(HashSet<String>& element_set,
+                                 const Vector<String>& elements) {
+  for (const String& s : elements) {
+    element_set.insert(s.UpperASCII());
+  }
+}
+
+void Sanitizer::AttrFormatter(
+    HashMap<String, Vector<String>>& attr_map,
+    const Vector<std::pair<String, Vector<String>>>& attrs) {
+  for (const std::pair<String, Vector<String>>& pair : attrs) {
+    const String& lower_attr = pair.first.LowerASCII();
+    if (pair.second.Contains("*")) {
+      attr_map.insert(lower_attr, Vector<String>({"*"}));
+    } else {
+      Vector<String> elements;
+      for (const String& s : pair.second) {
+        elements.push_back(s.UpperASCII());
+      }
+      attr_map.insert(lower_attr, elements);
     }
   }
 }
@@ -140,12 +147,24 @@
       // element, and proceed to the next node (preorder, depth-first
       // traversal).
       Element* element = To<Element>(node);
-      for (const auto& name : element->getAttributeNames()) {
-        bool drop =
-            drop_attributes_.Contains(name) ||
-            (has_allow_attributes_ && !allow_attributes_.Contains(name));
-        if (drop)
+      if (has_allow_attributes_ &&
+          allow_attributes_.at("*").Contains(node_name)) {
+      } else if (drop_attributes_.at("*").Contains(node_name)) {
+        for (const auto& name : element->getAttributeNames()) {
           element->removeAttribute(name);
+        }
+      } else {
+        for (const auto& name : element->getAttributeNames()) {
+          bool drop = (drop_attributes_.Contains(name) &&
+                       (drop_attributes_.at(name).Contains("*") ||
+                        drop_attributes_.at(name).Contains(node_name))) ||
+                      (has_allow_attributes_ &&
+                       !(allow_attributes_.Contains(name) &&
+                         (allow_attributes_.at(name).Contains("*") ||
+                          allow_attributes_.at(name).Contains(node_name))));
+          if (drop)
+            element->removeAttribute(name);
+        }
       }
       node = NodeTraversal::Next(*node, fragment);
     }
diff --git a/third_party/blink/renderer/modules/sanitizer_api/sanitizer.h b/third_party/blink/renderer/modules/sanitizer_api/sanitizer.h
index eca670d7..3860e2db 100644
--- a/third_party/blink/renderer/modules/sanitizer_api/sanitizer.h
+++ b/third_party/blink/renderer/modules/sanitizer_api/sanitizer.h
@@ -30,11 +30,15 @@
   void Trace(Visitor*) const override;
 
  private:
+  void ElementFormatter(HashSet<String>&, const Vector<String>&);
+  void AttrFormatter(HashMap<String, Vector<String>>&,
+                     const Vector<std::pair<String, Vector<String>>>&);
+
   HashSet<String> allow_elements_ = {};
   HashSet<String> block_elements_ = {};
   HashSet<String> drop_elements_ = {};
-  HashSet<String> allow_attributes_;
-  HashSet<String> drop_attributes_ = {};
+  HashMap<String, Vector<String>> allow_attributes_ = {};
+  HashMap<String, Vector<String>> drop_attributes_ = {};
 
   bool has_allow_elements_ = false;
   bool has_allow_attributes_ = false;
@@ -52,7 +56,9 @@
                                                   "SVG",       "TEMPLATE",
                                                   "THEAD",     "TITLE",
                                                   "VIDEO",     "XMP"};
-  const HashSet<String> default_drop_attributes_ = {"onclick", "onsubmit"};
+  const HashMap<String, Vector<String>> default_drop_attributes_ = {
+      {"onclick", Vector<String>({"*"})},
+      {"onsubmit", Vector<String>({"*"})}};
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/modules/sanitizer_api/sanitizer_config.idl b/third_party/blink/renderer/modules/sanitizer_api/sanitizer_config.idl
index 715a7b9..fe55d95 100644
--- a/third_party/blink/renderer/modules/sanitizer_api/sanitizer_config.idl
+++ b/third_party/blink/renderer/modules/sanitizer_api/sanitizer_config.idl
@@ -8,6 +8,6 @@
   sequence<DOMString> allowElements;
   sequence<DOMString> blockElements;
   sequence<DOMString> dropElements;
-  sequence<DOMString> allowAttributes;
-  sequence<DOMString> dropAttributes;
+  record<DOMString, sequence<DOMString>> allowAttributes;
+  record<DOMString, sequence<DOMString>> dropAttributes;
 };
diff --git a/third_party/blink/renderer/modules/webgpu/gpu_buffer.cc b/third_party/blink/renderer/modules/webgpu/gpu_buffer.cc
index 36c0da10..da1019b 100644
--- a/third_party/blink/renderer/modules/webgpu/gpu_buffer.cc
+++ b/third_party/blink/renderer/modules/webgpu/gpu_buffer.cc
@@ -25,38 +25,11 @@
 
 namespace {
 
-// crbug.com/951196
-// Currently, this value is less than the maximum ArrayBuffer length which is
-// theoretically 2^53 - 1 (Number.MAX_SAFE_INTEGER). However, creating a typed
-// array from an ArrayBuffer of size greater than TypedArray::kMaxLength crashes
-// DevTools and gives obscure errors.
-constexpr size_t kLargestMappableSize = v8::TypedArray::kMaxLength;
-
-bool ValidateRangeCreation(ExceptionState& exception_state,
-                           const char* function_name,
-                           uint64_t mapping_offset,
-                           uint64_t mapping_size,
-                           size_t max_size) {
-  if (mapping_size > uint64_t(max_size) ||
-      mapping_offset > uint64_t(max_size) - mapping_size) {
-    exception_state.ThrowRangeError(
-        WTF::String::Format("%s offset (%" PRIu64 " bytes) and size (%" PRIu64
-                            " bytes) are too large for this implementation.",
-                            function_name, mapping_offset, mapping_size));
-    return false;
-  }
-
-  // TODO(crbug.com/dawn/22): Move this validation into Dawn (in both
-  // getMappedRange and mapAsync).
-  if (mapping_offset % 8 != 0) {
-    exception_state.ThrowRangeError(WTF::String::Format(
-        "%s offset (%" PRIu64 " bytes) is not a multiple of 8.", function_name,
-        mapping_offset));
-    return false;
-  }
-
-  return true;
-}
+// A size that if used to create a dawn_wire buffer, will guarantee we'll OOM
+// immediately. It is an implementation detail of dawn_wire but that's tested
+// on CQ in Dawn.
+constexpr uint64_t kGuaranteedBufferOOMSize =
+    std::numeric_limits<size_t>::max();
 
 WGPUBufferDescriptor AsDawnType(const GPUBufferDescriptor* webgpu_desc,
                                 std::string* label) {
@@ -85,20 +58,25 @@
 
   std::string label;
   WGPUBufferDescriptor dawn_desc = AsDawnType(webgpu_desc, &label);
+
+  // If the buffer is mappable, make sure the size stays in a size_t but still
+  // guarantees that we have an OOM.
+  bool is_mappable =
+      dawn_desc.usage & (WGPUBufferUsage_MapRead | WGPUBufferUsage_MapWrite) ||
+      dawn_desc.mappedAtCreation;
+  if (is_mappable) {
+    dawn_desc.size = std::min(dawn_desc.size, kGuaranteedBufferOOMSize);
+  }
+
   return MakeGarbageCollected<GPUBuffer>(
-      device, dawn_desc.size, dawn_desc.mappedAtCreation,
+      device, dawn_desc.size,
       device->GetProcs().deviceCreateBuffer(device->GetHandle(), &dawn_desc));
 }
 
 GPUBuffer::GPUBuffer(GPUDevice* device,
                      uint64_t size,
-                     bool mapped_at_creation,
                      WGPUBuffer buffer)
     : DawnObject<WGPUBuffer>(device, buffer), size_(size) {
-  if (mapped_at_creation) {
-    map_start_ = 0;
-    map_end_ = size;
-  }
 }
 
 GPUBuffer::~GPUBuffer() {
@@ -164,33 +142,28 @@
     size_defaulted = size_ - offset;
   }
 
+  // We need to convert from uint64_t to size_t. Either of these two variables
+  // are bigger or equal to the guaranteed OOM size then mapAsync should be an
+  // error so. That OOM size fits in a size_t so we can clamp size and offset
+  // with it.
+  size_t map_offset =
+      static_cast<size_t>(std::min(offset, kGuaranteedBufferOOMSize));
+  size_t map_size =
+      static_cast<size_t>(std::min(size_defaulted, kGuaranteedBufferOOMSize));
+
   ScriptPromiseResolver* resolver =
       MakeGarbageCollected<ScriptPromiseResolver>(script_state);
   ScriptPromise promise = resolver->Promise();
 
-  // Check the offset and size are within the limits of the platform.
-  // (Note this also checks for an 8-byte alignment, which is an ArrayBuffer
-  // restriction, even though an ArrayBuffer is not created here.)
-  if (!ValidateRangeCreation(exception_state, "mapAsync", offset,
-                             size_defaulted,
-                             std::numeric_limits<size_t>::max())) {
-    GetProcs().deviceInjectError(device_->GetHandle(), WGPUErrorType_Validation,
-                                 "mapAsync arguments were invalid");
-    resolver->Reject(exception_state);
-    return promise;
-  }
-  size_t map_offset = static_cast<size_t>(offset);
-  size_t map_size = static_cast<size_t>(size_defaulted);
-
   // And send the command, leaving remaining validation to Dawn.
-
   auto* callback =
       BindDawnCallback(&GPUBuffer::OnMapAsyncCallback, WrapPersistent(this),
-                       WrapPersistent(resolver), offset, size_defaulted);
+                       WrapPersistent(resolver));
 
   GetProcs().bufferMapAsync(GetHandle(), mode, map_offset, map_size,
                             callback->UnboundCallback(),
                             callback->AsUserdata());
+
   // WebGPU guarantees that promises are resolved in finite time so we
   // need to ensure commands are flushed.
   EnsureFlush();
@@ -200,27 +173,40 @@
 DOMArrayBuffer* GPUBuffer::GetMappedRangeImpl(uint64_t offset,
                                               base::Optional<uint64_t> size,
                                               ExceptionState& exception_state) {
-  // Compute the defaulted size (which is "until the end of the buffer".)
-  // (First, guard against overflows on (size_ - offset).)
-  if (offset > size_) {
+  // Compute the defaulted size which is "until the end of the buffer" or 0 if
+  // offset is past the end of the buffer.
+  uint64_t size_defaulted = 0;
+  if (size) {
+    size_defaulted = *size;
+  } else if (offset <= size_) {
+    size_defaulted = size_ - offset;
+  }
+
+  // We need to convert from uint64_t to size_t. Either of these two variables
+  // are bigger or equal to the guaranteed OOM size then getMappedRange should
+  // be an error so. That OOM size fits in a size_t so we can clamp size and
+  // offset with it.
+  size_t range_offset =
+      static_cast<size_t>(std::min(offset, kGuaranteedBufferOOMSize));
+  size_t range_size =
+      static_cast<size_t>(std::min(size_defaulted, kGuaranteedBufferOOMSize));
+
+  // The maximum size that can be mapped in JS so that we can ensure we don't
+  // create mappable buffers bigger than it.
+  // This could eventually be upgrade to the max ArrayBuffer size instead of the
+  // max TypedArray size. See crbug.com/951196
+  if (range_size > v8::TypedArray::kMaxLength) {
     exception_state.ThrowDOMException(
         DOMExceptionCode::kOperationError,
-        WTF::String::Format("getMappedRange offset (%" PRIu64
-                            " bytes) is larger than the buffer (%" PRIu64
-                            " bytes).",
-                            offset, size_));
-    return nullptr;
+        "getMappedRange failed, size is too large for the implementation");
   }
-  uint64_t size_defaulted = size ? *size : (size_ - offset);
 
-  // Check the offset and size are within the limits of the platform and the
-  // ArrayBuffer spec+implementation.
-  if (!ValidateRangeCreation(exception_state, "getMappedRange", offset,
-                             size_defaulted, kLargestMappableSize)) {
+  if (range_size > std::numeric_limits<size_t>::max() - range_offset) {
+    exception_state.ThrowDOMException(
+        DOMExceptionCode::kOperationError,
+        "getMappedRange failed, offset + size overflows size_t");
     return nullptr;
   }
-  size_t range_offset = static_cast<size_t>(offset);
-  size_t range_size = static_cast<size_t>(size_defaulted);
   size_t range_end = range_offset + range_size;
 
   // Check if an overlapping range has already been returned.
@@ -242,16 +228,10 @@
   }
 
   // And send the command, leaving remaining validation to Dawn.
-
   const void* map_data_const = GetProcs().bufferGetConstMappedRange(
       GetHandle(), range_offset, range_size);
-  // It is safe to const_cast the |data| pointer because it is a shadow
-  // copy that Dawn wire makes and does not point to the mapped GPU
-  // data. Dawn wire's copy of the data is not used outside of tests.
-  uint8_t* map_data =
-      const_cast<uint8_t*>(static_cast<const uint8_t*>(map_data_const));
 
-  if (!map_data) {
+  if (!map_data_const) {
     // TODO: have explanatory error messages here (or just leave them to the
     // asynchronous error reporting).
     exception_state.ThrowDOMException(DOMExceptionCode::kOperationError,
@@ -259,18 +239,20 @@
     return nullptr;
   }
 
+  // It is safe to const_cast the |data| pointer because it is a shadow
+  // copy that Dawn wire makes and does not point to the mapped GPU
+  // data. Dawn wire's copy of the data is not used outside of tests.
+  uint8_t* map_data =
+      const_cast<uint8_t*>(static_cast<const uint8_t*>(map_data_const));
+
   mapped_ranges_.push_back(std::make_pair(range_offset, range_end));
   return CreateArrayBufferForMappedData(map_data, range_size);
 }
 
 void GPUBuffer::OnMapAsyncCallback(ScriptPromiseResolver* resolver,
-                                   uint64_t map_start,
-                                   uint64_t map_end,
                                    WGPUBufferMapAsyncStatus status) {
   switch (status) {
     case WGPUBufferMapAsyncStatus_Success:
-      map_start_ = map_start;
-      map_end_ = map_end;
       resolver->Resolve();
       break;
     case WGPUBufferMapAsyncStatus_Error:
@@ -303,7 +285,7 @@
 DOMArrayBuffer* GPUBuffer::CreateArrayBufferForMappedData(void* data,
                                                           size_t data_length) {
   DCHECK(data);
-  DCHECK_LE(data_length, kLargestMappableSize);
+  DCHECK_LE(static_cast<uint64_t>(data_length), v8::TypedArray::kMaxLength);
 
   ArrayBufferContents contents(data, data_length,
                                v8::BackingStore::EmptyDeleter);
@@ -314,8 +296,6 @@
 }
 
 void GPUBuffer::ResetMappingState(ScriptState* script_state) {
-  map_start_ = 0;
-  map_end_ = 0;
   mapped_ranges_.clear();
 
   for (Member<DOMArrayBuffer>& mapped_array_buffer : mapped_array_buffers_) {
diff --git a/third_party/blink/renderer/modules/webgpu/gpu_buffer.h b/third_party/blink/renderer/modules/webgpu/gpu_buffer.h
index b333a30..23357fc 100644
--- a/third_party/blink/renderer/modules/webgpu/gpu_buffer.h
+++ b/third_party/blink/renderer/modules/webgpu/gpu_buffer.h
@@ -26,7 +26,6 @@
                            const GPUBufferDescriptor* webgpu_desc);
   explicit GPUBuffer(GPUDevice* device,
                      uint64_t size,
-                     bool mapped_at_creation,
                      WGPUBuffer buffer);
   ~GPUBuffer() override;
 
@@ -49,7 +48,6 @@
                                  ExceptionState& exception_state);
   void unmap(ScriptState* script_state);
   void destroy(ScriptState* script_state);
-  // TODO(crbug.com/877147): implement GPUBuffer.
 
  private:
   ScriptPromise MapAsyncImpl(ScriptState* script_state,
@@ -62,8 +60,6 @@
                                      ExceptionState& exception_state);
 
   void OnMapAsyncCallback(ScriptPromiseResolver* resolver,
-                          uint64_t map_start,
-                          uint64_t map_end,
                           WGPUBufferMapAsyncStatus status);
 
   DOMArrayBuffer* CreateArrayBufferForMappedData(void* data,
@@ -76,8 +72,6 @@
   // mapWriteAsync.
   HeapVector<Member<DOMArrayBuffer>> mapped_array_buffers_;
 
-  uint64_t map_start_ = 0;
-  uint64_t map_end_ = 0;
   // List of ranges currently returned by getMappedRange, to avoid overlaps.
   Vector<std::pair<size_t, size_t>> mapped_ranges_;
 
diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/renderer/platform/BUILD.gn
index 25eb0d4e0..06005f76 100644
--- a/third_party/blink/renderer/platform/BUILD.gn
+++ b/third_party/blink/renderer/platform/BUILD.gn
@@ -2172,6 +2172,9 @@
   data_deps = [ ":blink_platform_unittests_data" ]
 
   defines = [ "INSIDE_BLINK" ]
+  if (use_minikin_hyphenation) {
+    defines += [ "USE_MINIKIN_HYPHENATION" ]
+  }
 }
 
 executable("image_decode_bench") {
@@ -2247,6 +2250,8 @@
 }
 
 group("blink_platform_unittests_data") {
+  testonly = true
+
   data = [
     "testing/data/",
 
@@ -2260,6 +2265,8 @@
     # Required by some font tests.
     "//third_party/blink/web_tests/third_party/",
   ]
+
+  data_deps = [ "//third_party/hyphenation-patterns:test_data" ]
 }
 
 if (current_cpu == "x86" || current_cpu == "x64") {
diff --git a/third_party/blink/renderer/platform/bindings/v8_cross_origin_property_support.cc b/third_party/blink/renderer/platform/bindings/v8_cross_origin_property_support.cc
index a434695b..9cee15671 100644
--- a/third_party/blink/renderer/platform/bindings/v8_cross_origin_property_support.cc
+++ b/third_party/blink/renderer/platform/bindings/v8_cross_origin_property_support.cc
@@ -22,23 +22,21 @@
   V8PerIsolateData* per_isolate_data = V8PerIsolateData::From(isolate);
   const void* callback_key = reinterpret_cast<const void*>(callback);
 
-  // ES functions accessible across origins are not interface objects, but we
-  // reuse the cache of interface objects, which just works because both are
-  // V8 function template.
   v8::Local<v8::FunctionTemplate> function_template =
-      per_isolate_data->FindInterfaceTemplate(script_state->World(),
-                                              callback_key);
+      per_isolate_data->FindV8Template(script_state->World(), callback_key)
+          .As<v8::FunctionTemplate>();
   if (function_template.IsEmpty()) {
     v8::Local<v8::FunctionTemplate> interface_template =
-        per_isolate_data->FindInterfaceTemplate(script_state->World(),
-                                                wrapper_type_info);
+        per_isolate_data
+            ->FindV8Template(script_state->World(), wrapper_type_info)
+            .As<v8::FunctionTemplate>();
     v8::Local<v8::Signature> signature =
         v8::Signature::New(isolate, interface_template);
     function_template = v8::FunctionTemplate::New(
         isolate, callback, v8::Local<v8::Value>(), signature, func_length,
         v8::ConstructorBehavior::kThrow, v8::SideEffectType::kHasSideEffect);
-    per_isolate_data->SetInterfaceTemplate(script_state->World(), callback_key,
-                                           function_template);
+    per_isolate_data->AddV8Template(script_state->World(), callback_key,
+                                    function_template);
   }
   return function_template->GetFunction(current_context);
 }
diff --git a/third_party/blink/renderer/platform/bindings/v8_dom_wrapper.cc b/third_party/blink/renderer/platform/bindings/v8_dom_wrapper.cc
index 83ebb3c..ef308c8 100644
--- a/third_party/blink/renderer/platform/bindings/v8_dom_wrapper.cc
+++ b/third_party/blink/renderer/platform/bindings/v8_dom_wrapper.cc
@@ -86,7 +86,8 @@
   V8PerIsolateData* per_isolate_data = V8PerIsolateData::From(isolate);
   if (!(untrusted_wrapper_type_info && per_isolate_data))
     return false;
-  return per_isolate_data->HasInstance(untrusted_wrapper_type_info, object);
+  return per_isolate_data->HasInstanceOfUntrustedType(
+      untrusted_wrapper_type_info, object);
 }
 
 bool V8DOMWrapper::HasInternalFieldsSet(v8::Local<v8::Value> value) {
diff --git a/third_party/blink/renderer/platform/bindings/v8_per_isolate_data.cc b/third_party/blink/renderer/platform/bindings/v8_per_isolate_data.cc
index 970411fc..4769d19 100644
--- a/third_party/blink/renderer/platform/bindings/v8_per_isolate_data.cc
+++ b/third_party/blink/renderer/platform/bindings/v8_per_isolate_data.cc
@@ -90,8 +90,11 @@
 
 // This constructor is used for creating a V8 context snapshot. It must run on
 // the main thread.
-V8PerIsolateData::V8PerIsolateData()
-    : v8_context_snapshot_mode_(V8ContextSnapshotMode::kTakeSnapshot),
+// TODO(yukishiino): This constructor may not be necessary.  Probably We can
+// reuse V8PerIsolateData(task_runner, v8_context_snapshot_mode) constructor.
+V8PerIsolateData::V8PerIsolateData(
+    V8ContextSnapshotMode v8_context_snapshot_mode)
+    : v8_context_snapshot_mode_(v8_context_snapshot_mode),
       isolate_holder_(Thread::Current()->GetTaskRunner(),
                       gin::IsolateHolder::kSingleThread,
                       gin::IsolateHolder::kAllowAtomicsWait,
@@ -104,6 +107,7 @@
       is_handling_recursion_level_error_(false),
       runtime_call_stats_(base::DefaultTickClock::GetInstance()) {
   CHECK(IsMainThread());
+  CHECK_EQ(v8_context_snapshot_mode_, V8ContextSnapshotMode::kTakeSnapshot);
 
   // SnapshotCreator enters the isolate, so we don't call Isolate::Enter() here.
   g_main_thread_per_isolate_data = this;
@@ -121,7 +125,7 @@
     V8ContextSnapshotMode context_mode) {
   V8PerIsolateData* data = nullptr;
   if (context_mode == V8ContextSnapshotMode::kTakeSnapshot) {
-    data = new V8PerIsolateData();
+    data = new V8PerIsolateData(context_mode);
   } else {
     data = new V8PerIsolateData(task_runner, context_mode);
   }
@@ -190,10 +194,8 @@
   data->private_property_.reset();
   data->string_cache_->Dispose();
   data->string_cache_.reset();
-  data->interface_template_map_for_non_main_world_.clear();
-  data->interface_template_map_for_main_world_.clear();
-  data->operation_template_map_for_non_main_world_.clear();
-  data->operation_template_map_for_main_world_.clear();
+  data->v8_template_map_for_main_world_.clear();
+  data->v8_template_map_for_non_main_worlds_.clear();
   if (IsMainThread())
     g_main_thread_per_isolate_data = nullptr;
 
@@ -202,60 +204,80 @@
   delete data;
 }
 
-V8PerIsolateData::V8FunctionTemplateMap&
-V8PerIsolateData::SelectInterfaceTemplateMap(const DOMWrapperWorld& world) {
-  return world.IsMainWorld() ? interface_template_map_for_main_world_
-                             : interface_template_map_for_non_main_world_;
-}
-
-V8PerIsolateData::V8FunctionTemplateMap&
-V8PerIsolateData::SelectOperationTemplateMap(const DOMWrapperWorld& world) {
-  return world.IsMainWorld() ? operation_template_map_for_main_world_
-                             : operation_template_map_for_non_main_world_;
-}
-
-v8::Local<v8::FunctionTemplate> V8PerIsolateData::FindOrCreateOperationTemplate(
-    const DOMWrapperWorld& world,
-    const void* key,
-    v8::FunctionCallback callback,
-    v8::Local<v8::Value> data,
-    v8::Local<v8::Signature> signature,
-    int length) {
-  auto& map = SelectOperationTemplateMap(world);
-  auto result = map.find(key);
-  if (result != map.end())
-    return result->value.Get(GetIsolate());
-
-  v8::Local<v8::FunctionTemplate> templ = v8::FunctionTemplate::New(
-      GetIsolate(), callback, data, signature, length);
-  templ->RemovePrototype();
-  map.insert(key, v8::Eternal<v8::FunctionTemplate>(GetIsolate(), templ));
-  return templ;
-}
-
-v8::Local<v8::FunctionTemplate> V8PerIsolateData::FindInterfaceTemplate(
+v8::Local<v8::Template> V8PerIsolateData::FindV8Template(
     const DOMWrapperWorld& world,
     const void* key) {
-  auto& map = SelectInterfaceTemplateMap(world);
+  auto& map = SelectV8TemplateMap(world);
   auto result = map.find(key);
   if (result != map.end())
     return result->value.Get(GetIsolate());
-  return v8::Local<v8::FunctionTemplate>();
+  return v8::Local<v8::Template>();
 }
 
-void V8PerIsolateData::SetInterfaceTemplate(
-    const DOMWrapperWorld& world,
-    const void* key,
-    v8::Local<v8::FunctionTemplate> value) {
-  auto& map = SelectInterfaceTemplateMap(world);
-  map.insert(key, v8::Eternal<v8::FunctionTemplate>(GetIsolate(), value));
+void V8PerIsolateData::AddV8Template(const DOMWrapperWorld& world,
+                                     const void* key,
+                                     v8::Local<v8::Template> value) {
+  auto& map = SelectV8TemplateMap(world);
+  auto result = map.insert(key, v8::Eternal<v8::Template>(GetIsolate(), value));
+  DCHECK(result.is_new_entry);
+}
+
+bool V8PerIsolateData::HasInstance(const WrapperTypeInfo* wrapper_type_info,
+                                   v8::Local<v8::Value> untrusted_value) {
+  RUNTIME_CALL_TIMER_SCOPE(GetIsolate(),
+                           RuntimeCallStats::CounterId::kHasInstance);
+  return HasInstance(wrapper_type_info, untrusted_value,
+                     v8_template_map_for_main_world_) ||
+         HasInstance(wrapper_type_info, untrusted_value,
+                     v8_template_map_for_non_main_worlds_);
+}
+
+bool V8PerIsolateData::HasInstance(const WrapperTypeInfo* wrapper_type_info,
+                                   v8::Local<v8::Value> untrusted_value,
+                                   const V8TemplateMap& map) {
+  auto result = map.find(wrapper_type_info);
+  if (result == map.end())
+    return false;
+  v8::Local<v8::Template> v8_template = result->value.Get(GetIsolate());
+  DCHECK(v8_template->IsFunctionTemplate());
+  return v8_template.As<v8::FunctionTemplate>()->HasInstance(untrusted_value);
+}
+
+bool V8PerIsolateData::HasInstanceOfUntrustedType(
+    const WrapperTypeInfo* untrusted_wrapper_type_info,
+    v8::Local<v8::Value> untrusted_value) {
+  RUNTIME_CALL_TIMER_SCOPE(GetIsolate(),
+                           RuntimeCallStats::CounterId::kHasInstance);
+  return HasInstanceOfUntrustedType(untrusted_wrapper_type_info,
+                                    untrusted_value,
+                                    v8_template_map_for_main_world_) ||
+         HasInstanceOfUntrustedType(untrusted_wrapper_type_info,
+                                    untrusted_value,
+                                    v8_template_map_for_non_main_worlds_);
+}
+
+bool V8PerIsolateData::HasInstanceOfUntrustedType(
+    const WrapperTypeInfo* untrusted_wrapper_type_info,
+    v8::Local<v8::Value> untrusted_value,
+    const V8TemplateMap& map) {
+  auto result = map.find(untrusted_wrapper_type_info);
+  if (result == map.end())
+    return false;
+  v8::Local<v8::Template> v8_template = result->value.Get(GetIsolate());
+  if (!v8_template->IsFunctionTemplate())
+    return false;
+  return v8_template.As<v8::FunctionTemplate>()->HasInstance(untrusted_value);
+}
+
+V8PerIsolateData::V8TemplateMap& V8PerIsolateData::SelectV8TemplateMap(
+    const DOMWrapperWorld& world) {
+  return world.IsMainWorld() ? v8_template_map_for_main_world_
+                             : v8_template_map_for_non_main_worlds_;
 }
 
 void V8PerIsolateData::ClearPersistentsForV8ContextSnapshot() {
-  interface_template_map_for_main_world_.clear();
-  interface_template_map_for_non_main_world_.clear();
-  operation_template_map_for_main_world_.clear();
-  operation_template_map_for_non_main_world_.clear();
+  v8_template_map_for_main_world_.clear();
+  v8_template_map_for_non_main_worlds_.clear();
   eternal_name_cache_.clear();
   private_property_.reset();
 }
@@ -303,53 +325,6 @@
   script_regexp_script_state_ = nullptr;
 }
 
-bool V8PerIsolateData::HasInstance(
-    const WrapperTypeInfo* untrusted_wrapper_type_info,
-    v8::Local<v8::Value> value) {
-  RUNTIME_CALL_TIMER_SCOPE(GetIsolate(),
-                           RuntimeCallStats::CounterId::kHasInstance);
-  return HasInstance(untrusted_wrapper_type_info, value,
-                     interface_template_map_for_main_world_) ||
-         HasInstance(untrusted_wrapper_type_info, value,
-                     interface_template_map_for_non_main_world_);
-}
-
-bool V8PerIsolateData::HasInstance(
-    const WrapperTypeInfo* untrusted_wrapper_type_info,
-    v8::Local<v8::Value> value,
-    V8FunctionTemplateMap& map) {
-  auto result = map.find(untrusted_wrapper_type_info);
-  if (result == map.end())
-    return false;
-  v8::Local<v8::FunctionTemplate> templ = result->value.Get(GetIsolate());
-  return templ->HasInstance(value);
-}
-
-v8::Local<v8::Object> V8PerIsolateData::FindInstanceInPrototypeChain(
-    const WrapperTypeInfo* info,
-    v8::Local<v8::Value> value) {
-  v8::Local<v8::Object> wrapper = FindInstanceInPrototypeChain(
-      info, value, interface_template_map_for_main_world_);
-  if (!wrapper.IsEmpty())
-    return wrapper;
-  return FindInstanceInPrototypeChain(
-      info, value, interface_template_map_for_non_main_world_);
-}
-
-v8::Local<v8::Object> V8PerIsolateData::FindInstanceInPrototypeChain(
-    const WrapperTypeInfo* info,
-    v8::Local<v8::Value> value,
-    V8FunctionTemplateMap& map) {
-  if (value.IsEmpty() || !value->IsObject())
-    return v8::Local<v8::Object>();
-  auto result = map.find(info);
-  if (result == map.end())
-    return v8::Local<v8::Object>();
-  v8::Local<v8::FunctionTemplate> templ = result->value.Get(GetIsolate());
-  return v8::Local<v8::Object>::Cast(value)->FindInstanceInPrototypeChain(
-      templ);
-}
-
 void V8PerIsolateData::AddEndOfScopeTask(base::OnceClosure task) {
   end_of_scope_tasks_.push_back(std::move(task));
 }
diff --git a/third_party/blink/renderer/platform/bindings/v8_per_isolate_data.h b/third_party/blink/renderer/platform/bindings/v8_per_isolate_data.h
index dc3ea170..7834d4a 100644
--- a/third_party/blink/renderer/platform/bindings/v8_per_isolate_data.h
+++ b/third_party/blink/renderer/platform/bindings/v8_per_isolate_data.h
@@ -45,7 +45,7 @@
 
 namespace base {
 class SingleThreadTaskRunner;
-}
+}  // namespace base
 
 namespace blink {
 
@@ -57,7 +57,7 @@
 
 // Used to hold data that is associated with a single v8::Isolate object, and
 // has a 1:1 relationship with v8::Isolate.
-class PLATFORM_EXPORT V8PerIsolateData {
+class PLATFORM_EXPORT V8PerIsolateData final {
   USING_FAST_MALLOC(V8PerIsolateData);
 
  public:
@@ -144,12 +144,18 @@
 
   V8PrivateProperty* PrivateProperty() { return private_property_.get(); }
 
-  // Accessors to the cache of interface templates.
-  v8::Local<v8::FunctionTemplate> FindInterfaceTemplate(const DOMWrapperWorld&,
-                                                        const void* key);
-  void SetInterfaceTemplate(const DOMWrapperWorld&,
-                            const void* key,
-                            v8::Local<v8::FunctionTemplate>);
+  // Accessors to the cache of v8::Templates.
+  v8::Local<v8::Template> FindV8Template(const DOMWrapperWorld& world,
+                                         const void* key);
+  void AddV8Template(const DOMWrapperWorld& world,
+                     const void* key,
+                     v8::Local<v8::Template> value);
+
+  bool HasInstance(const WrapperTypeInfo* wrapper_type_info,
+                   v8::Local<v8::Value> untrusted_value);
+  bool HasInstanceOfUntrustedType(
+      const WrapperTypeInfo* untrusted_wrapper_type_info,
+      v8::Local<v8::Value> untrusted_value);
 
   // When v8::SnapshotCreator::CreateBlob() is called, we must not have
   // persistent handles in Blink. This method clears them.
@@ -161,20 +167,6 @@
   V8ContextSnapshotMode GetV8ContextSnapshotMode() const {
     return v8_context_snapshot_mode_;
   }
-  void BailoutAndDisableV8ContextSnapshot() {
-    DCHECK_EQ(V8ContextSnapshotMode::kUseSnapshot, v8_context_snapshot_mode_);
-    v8_context_snapshot_mode_ = V8ContextSnapshotMode::kDontUseSnapshot;
-  }
-
-  // Accessor to the cache of cross-origin accessible operation's templates.
-  // Created templates get automatically cached.
-  v8::Local<v8::FunctionTemplate> FindOrCreateOperationTemplate(
-      const DOMWrapperWorld&,
-      const void* key,
-      v8::FunctionCallback,
-      v8::Local<v8::Value> data,
-      v8::Local<v8::Signature>,
-      int length);
 
   // Obtains a pointer to an array of names, given a lookup key. If it does not
   // yet exist, it is created from the given array of strings. Once created,
@@ -184,10 +176,6 @@
       const void* lookup_key,
       const base::span<const char* const>& names);
 
-  bool HasInstance(const WrapperTypeInfo* untrusted, v8::Local<v8::Value>);
-  v8::Local<v8::Object> FindInstanceInPrototypeChain(const WrapperTypeInfo*,
-                                                     v8::Local<v8::Value>);
-
   v8::Local<v8::Context> EnsureScriptRegexpContext();
   void ClearScriptRegexpContext();
 
@@ -222,43 +210,38 @@
  private:
   V8PerIsolateData(scoped_refptr<base::SingleThreadTaskRunner>,
                    V8ContextSnapshotMode);
-  V8PerIsolateData();
+  explicit V8PerIsolateData(V8ContextSnapshotMode);
   ~V8PerIsolateData();
 
   // A really simple hash function, which makes lookups faster. The set of
   // possible keys for this is relatively small and fixed at compile time, so
   // collisions are less of a worry than they would otherwise be.
-  struct SimplePtrHash : WTF::PtrHash<const void> {
+  struct SimplePtrHash final : public WTF::PtrHash<const void> {
     static unsigned GetHash(const void* key) {
       uintptr_t k = reinterpret_cast<uintptr_t>(key);
       return static_cast<unsigned>(k ^ (k >> 8));
     }
   };
-  using V8FunctionTemplateMap =
-      HashMap<const void*, v8::Eternal<v8::FunctionTemplate>, SimplePtrHash>;
-  V8FunctionTemplateMap& SelectInterfaceTemplateMap(const DOMWrapperWorld&);
-  V8FunctionTemplateMap& SelectOperationTemplateMap(const DOMWrapperWorld&);
-  bool HasInstance(const WrapperTypeInfo* untrusted,
-                   v8::Local<v8::Value>,
-                   V8FunctionTemplateMap&);
-  v8::Local<v8::Object> FindInstanceInPrototypeChain(const WrapperTypeInfo*,
-                                                     v8::Local<v8::Value>,
-                                                     V8FunctionTemplateMap&);
+  using V8TemplateMap =
+      HashMap<const void*, v8::Eternal<v8::Template>, SimplePtrHash>;
+  V8TemplateMap& SelectV8TemplateMap(const DOMWrapperWorld&);
+  bool HasInstance(const WrapperTypeInfo* wrapper_type_info,
+                   v8::Local<v8::Value> untrusted_value,
+                   const V8TemplateMap& map);
+  bool HasInstanceOfUntrustedType(
+      const WrapperTypeInfo* untrusted_wrapper_type_info,
+      v8::Local<v8::Value> untrusted_value,
+      const V8TemplateMap& map);
 
   V8ContextSnapshotMode v8_context_snapshot_mode_;
+
   // This isolate_holder_ must be initialized before initializing some other
   // members below.
   gin::IsolateHolder isolate_holder_;
 
-  // interface_template_map_for_{,non_}main_world holds function templates for
-  // the inerface objects.
-  V8FunctionTemplateMap interface_template_map_for_main_world_;
-  V8FunctionTemplateMap interface_template_map_for_non_main_world_;
-
-  // m_operationTemplateMapFor{,Non}MainWorld holds function templates for
-  // the cross-origin accessible DOM operations.
-  V8FunctionTemplateMap operation_template_map_for_main_world_;
-  V8FunctionTemplateMap operation_template_map_for_non_main_world_;
+  // v8::Template cache of interface objects, namespace objects, etc.
+  V8TemplateMap v8_template_map_for_main_world_;
+  V8TemplateMap v8_template_map_for_non_main_worlds_;
 
   // Contains lists of eternal names, such as dictionary keys.
   HashMap<const void*, Vector<v8::Eternal<v8::Name>>> eternal_name_cache_;
diff --git a/third_party/blink/renderer/platform/loader/fetch/client_hints_preferences.cc b/third_party/blink/renderer/platform/loader/fetch/client_hints_preferences.cc
index fa2d750b..638a7f6 100644
--- a/third_party/blink/renderer/platform/loader/fetch/client_hints_preferences.cc
+++ b/third_party/blink/renderer/platform/loader/fetch/client_hints_preferences.cc
@@ -57,7 +57,7 @@
 
   // Note: .Ascii() would convert tab to ?, which is undesirable.
   base::Optional<std::vector<network::mojom::WebClientHintsType>> parsed_ch =
-      FilterAcceptCH(network::ParseAcceptCH(header_value.Latin1()),
+      FilterAcceptCH(network::ParseClientHintsHeader(header_value.Latin1()),
                      RuntimeEnabledFeatures::LangClientHintHeaderEnabled(),
                      UserAgentClientHintEnabled());
   if (!parsed_ch.has_value())
diff --git a/third_party/blink/renderer/platform/mediastream/media_stream_component.cc b/third_party/blink/renderer/platform/mediastream/media_stream_component.cc
index dc693c5..93b64ad 100644
--- a/third_party/blink/renderer/platform/mediastream/media_stream_component.cc
+++ b/third_party/blink/renderer/platform/mediastream/media_stream_component.cc
@@ -124,11 +124,13 @@
 
   // Wrap the AudioBus channel data using WebVector.
   uint32_t n = bus->NumberOfChannels();
-  WebVector<float*> web_audio_data(n);
-  for (uint32_t i = 0; i < n; ++i)
-    web_audio_data[i] = bus->Channel(i)->MutableData();
+  if (web_audio_data_.size() != n)
+    web_audio_data_ = WebVector<float*>(static_cast<size_t>(n));
 
-  web_audio_source_provider_->ProvideInput(web_audio_data, frames_to_process);
+  for (uint32_t i = 0; i < n; ++i)
+    web_audio_data_[i] = bus->Channel(i)->MutableData();
+
+  web_audio_source_provider_->ProvideInput(web_audio_data_, frames_to_process);
 }
 
 void MediaStreamComponent::Trace(Visitor* visitor) const {
diff --git a/third_party/blink/renderer/platform/mediastream/media_stream_component.h b/third_party/blink/renderer/platform/mediastream/media_stream_component.h
index 4751054f..9ed0723 100644
--- a/third_party/blink/renderer/platform/mediastream/media_stream_component.h
+++ b/third_party/blink/renderer/platform/mediastream/media_stream_component.h
@@ -35,6 +35,7 @@
 #include <memory>
 
 #include "third_party/blink/public/platform/modules/mediastream/web_media_stream_track.h"
+#include "third_party/blink/public/platform/web_vector.h"
 #include "third_party/blink/renderer/platform/audio/audio_source_provider.h"
 #include "third_party/blink/renderer/platform/heap/handle.h"
 #include "third_party/blink/renderer/platform/mediastream/media_constraints.h"
@@ -125,6 +126,9 @@
    private:
     WebAudioSourceProvider* web_audio_source_provider_;
     Mutex provide_input_lock_;
+
+    // Used to wrap AudioBus to be passed into |web_audio_source_provider_|.
+    WebVector<float*> web_audio_data_;
   };
 
   AudioSourceProviderImpl source_provider_;
diff --git a/third_party/blink/renderer/platform/network/http_parsers.cc b/third_party/blink/renderer/platform/network/http_parsers.cc
index 130c081..0f46524 100644
--- a/third_party/blink/renderer/platform/network/http_parsers.cc
+++ b/third_party/blink/renderer/platform/network/http_parsers.cc
@@ -181,7 +181,11 @@
           ? base::make_optional(
                 ConvertToBlink(parsed_headers->accept_ch.value()))
           : base::nullopt,
-      parsed_headers->accept_ch_lifetime);
+      parsed_headers->accept_ch_lifetime,
+      parsed_headers->critical_ch.has_value()
+          ? base::make_optional(
+                ConvertToBlink(parsed_headers->critical_ch.value()))
+          : base::nullopt);
 }
 
 }  // namespace mojom
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
index b2e5c22..42977c0 100644
--- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
+++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -425,7 +425,7 @@
     },
     {
       name: "CSSAspectRatioProperty",
-      status: "experimental",
+      status: "stable",
     },
     {
       name: "CSSCalcAsInt",
@@ -608,6 +608,12 @@
       name: "CSSSystemColorComputeToSelf",
       status: "experimental",
     },
+    {
+      // Support for ::target-text pseudo element as specified in
+      // https://drafts.csswg.org/css-pseudo/#selectordef-target-text
+      name: "CSSTargetTextPseudoElement",
+      status: "test",
+    },
     // Support for @property rules.
     {
       name: "CSSVariables2AtProperty",
diff --git a/third_party/blink/renderer/platform/testing/unit_test_helpers.cc b/third_party/blink/renderer/platform/testing/unit_test_helpers.cc
index 1215543..89d87490 100644
--- a/third_party/blink/renderer/platform/testing/unit_test_helpers.cc
+++ b/third_party/blink/renderer/platform/testing/unit_test_helpers.cc
@@ -124,6 +124,12 @@
           .Append(WebStringToFilePath(relative_path)));
 }
 
+base::FilePath HyphenationDictionaryDir() {
+  base::FilePath exe_dir;
+  base::PathService::Get(base::DIR_EXE, &exe_dir);
+  return exe_dir.AppendASCII("gen/hyphen-data");
+}
+
 scoped_refptr<SharedBuffer> ReadFromFile(const String& path) {
   base::FilePath file_path = blink::WebStringToFilePath(path);
   std::string buffer;
diff --git a/third_party/blink/renderer/platform/testing/unit_test_helpers.h b/third_party/blink/renderer/platform/testing/unit_test_helpers.h
index a964623..4a0e25943 100644
--- a/third_party/blink/renderer/platform/testing/unit_test_helpers.h
+++ b/third_party/blink/renderer/platform/testing/unit_test_helpers.h
@@ -81,6 +81,9 @@
 // specified.
 String BlinkWebTestsFontsTestDataPath(const String& relative_path = String());
 
+// Returns the directory of hyphenation dictionaries for testing.
+base::FilePath HyphenationDictionaryDir();
+
 scoped_refptr<SharedBuffer> ReadFromFile(const String& path);
 
 class LineReader {
diff --git a/third_party/blink/renderer/platform/text/hyphenation_test.cc b/third_party/blink/renderer/platform/text/hyphenation_test.cc
index 2354c16..5fae8d4 100644
--- a/third_party/blink/renderer/platform/text/hyphenation_test.cc
+++ b/third_party/blink/renderer/platform/text/hyphenation_test.cc
@@ -7,14 +7,17 @@
 #include "build/build_config.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
+#include "third_party/blink/renderer/platform/testing/unit_test_helpers.h"
 #include "third_party/blink/renderer/platform/text/layout_locale.h"
 
 using testing::ElementsAre;
 using testing::ElementsAreArray;
 
-#if defined(OS_ANDROID)
-#define USE_MINIKIN_HYPHENATION
+#if defined(USE_MINIKIN_HYPHENATION) && defined(OS_FUCHSIA)
+// Fuchsia doesn't include |blink_platform_unittests_data|.
+#undef USE_MINIKIN_HYPHENATION
 #endif
+
 #if defined(USE_MINIKIN_HYPHENATION)
 #include "base/files/file_path.h"
 #include "third_party/blink/renderer/platform/text/hyphenation/hyphenation_minikin.h"
@@ -35,7 +38,7 @@
   void TearDown() override { LayoutLocale::ClearForTesting(); }
 
 #if defined(USE_MINIKIN_HYPHENATION) || defined(OS_MAC)
-  // Get a |Hyphenation| instnace for the specified locale for testing.
+  // Get a |Hyphenation| instance for the specified locale for testing.
   scoped_refptr<Hyphenation> GetHyphenation(const AtomicString& locale) {
 #if defined(USE_MINIKIN_HYPHENATION)
     // Because the mojo service to open hyphenation dictionaries is not
@@ -45,7 +48,7 @@
 #if defined(OS_ANDROID)
     base::FilePath path("/system/usr/hyphen-data");
 #else
-#error "This configuration is not supported."
+    base::FilePath path = test::HyphenationDictionaryDir();
 #endif
     path = path.AppendASCII(filename);
     base::File file(path, base::File::FLAG_OPEN | base::File::FLAG_READ);
@@ -77,7 +80,7 @@
   if (!hyphenation)
     return;
 #endif
-  ASSERT_TRUE(hyphenation) << "Cannot find the hyphenation engine";
+  ASSERT_TRUE(hyphenation) << "Cannot find the hyphenation for en-us";
 
   // Get all hyphenation points by |HyphenLocations|.
   const String word("hyphenation");
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations
index 2a24596..5017501 100644
--- a/third_party/blink/web_tests/TestExpectations
+++ b/third_party/blink/web_tests/TestExpectations
@@ -896,7 +896,6 @@
 crbug.com/591099 fast/writing-mode/percentage-height-orthogonal-writing-modes.html [ Failure ]
 crbug.com/835484 paint/invalidation/outline/inline-focus.html [ Failure ]
 crbug.com/591099 paint/invalidation/scroll/fixed-under-composited-fixed-scrolled.html [ Failure ]
-crbug.com/591099 external/wpt/paint-timing/sibling-painting-first-image.html [ Failure ]
 
 # LayoutNG ref-tests that need to be updated (cannot be rebaselined).
 crbug.com/591099 [ Linux ] fast/multicol/newmulticol/hide-box-vertical-lr.html [ Failure ]
@@ -2612,6 +2611,12 @@
 crbug.com/958381 [ Mac ] external/wpt/css/CSS2/tables/table-anonymous-objects-206.xht [ Failure ]
 
 # ====== New tests from wpt-importer added here ======
+crbug.com/626703 external/wpt/paint-timing/with-first-paint/first-contentful-image.html [ Timeout ]
+crbug.com/626703 external/wpt/paint-timing/with-first-paint/mask-image.html [ Timeout ]
+crbug.com/626703 external/wpt/paint-timing/with-first-paint/first-contentful-paint.html [ Timeout ]
+crbug.com/626703 external/wpt/paint-timing/with-first-paint/child-painting-first-image.html [ Timeout ]
+crbug.com/626703 external/wpt/paint-timing/with-first-paint/sibling-painting-first-image.html [ Timeout ]
+crbug.com/626703 external/wpt/paint-timing/with-first-paint/border-image.html [ Timeout ]
 crbug.com/626703 [ Mac10.15 ] virtual/threaded/external/wpt/animation-worklet/worklet-animation-local-time-null-2.https.html [ Failure ]
 crbug.com/626703 external/wpt/infrastructure/testdriver/actions/iframe.html [ Timeout ]
 crbug.com/626703 external/wpt/infrastructure/testdriver/actions/crossOrigin.sub.html [ Timeout ]
@@ -4278,6 +4283,8 @@
 
 crbug.com/825798 external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-webvtt-non-snap-to-lines.html [ Failure ]
 
+crbug.com/1093188 external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-webvtt-two-cue-layout-after-first-end.html [ Pass Failure ]
+
 crbug.com/927477 external/wpt/import-maps/acquire-import-maps-flag/worker-request/* [ Skip ]
 
 # This test requires a special browser flag and seems not suitable for a wpt test, see bug.
@@ -6264,10 +6271,6 @@
 crbug.com/1105276 [ Mac ] virtual/threaded/fast/scroll-snap/snaps-after-keyboard-scrolling-rtl.html [ Pass Failure ]
 crbug.com/1105279 [ Mac ] virtual/threaded/fast/scroll-snap/snaps-for-different-key-granularity.html [ Pass Timeout Failure ]
 
-# Sheriff 2020-07-15
-
-crbug.com/1104381 fast/hidpi/image-srcset-change-resource-dpr.html [ Pass Failure ]
-
 # Temporarily disable tests to allow fixing of devtools path escaping
 crbug.com/1094436 http/tests/devtools/overrides/project-added-with-existing-files-bind.js [ Pass Timeout Failure ]
 crbug.com/1094436 http/tests/devtools/persistence/automapping-urlencoded-paths.js [ Pass Failure ]
@@ -6450,10 +6453,6 @@
 # WebRTC: Payload demuxing times out in Plan B. This is expected.
 crbug.com/1139052 virtual/webrtc-wpt-plan-b/external/wpt/webrtc/protocol/unbundled-pt-demuxing.https.html [ Timeout ]
 
-# DevTools roll
-crbug.com/1011811 http/tests/devtools/profiler/agents-disabled-check.js [ Skip ]
-crbug.com/1011811 http/tests/devtools/persistence/persistence-do-not-overwrite-css.js [ Skip ]
-
 # Sheriff 2020-10-19
 crbug.com/1139950 [ Linux ] virtual/text-antialias/hyphens/hyphens-auto.html [ Failure ]
 
diff --git a/third_party/blink/web_tests/WebGPUExpectations b/third_party/blink/web_tests/WebGPUExpectations
index 8008612..4d4a2e9 100644
--- a/third_party/blink/web_tests/WebGPUExpectations
+++ b/third_party/blink/web_tests/WebGPUExpectations
@@ -52,6 +52,9 @@
 crbug.com/dawn/542 wpt_internal/webgpu/cts.html?q=webgpu:api,validation,setViewport:* [ Failure ]
 crbug.com/dawn/542 wpt_internal/webgpu/cts.html?q=webgpu:api,validation,setScissorRect:* [ Failure ]
 
+# This test should be updated to expect an OperationError instead of a RangeError
+crbug.com/dawn/445 wpt_internal/webgpu/cts.html?q=webgpu:api,operation,buffers,map_oom:mappedAtCreation:* [ Failure ]
+
 #
 # Platform-independent failures
 #
diff --git a/third_party/blink/web_tests/android/ChromiumWPTExpectations b/third_party/blink/web_tests/android/ChromiumWPTExpectations
index a16ecef..daf5c3ff 100644
--- a/third_party/blink/web_tests/android/ChromiumWPTExpectations
+++ b/third_party/blink/web_tests/android/ChromiumWPTExpectations
@@ -3233,16 +3233,13 @@
 crbug.com/1050754 external/wpt/origin-policy/ids/non-array-id.https.html [ Failure ]
 crbug.com/1050754 external/wpt/origin-policy/ids/still-present-in-http.html [ Failure ]
 crbug.com/1050754 external/wpt/origin-policy/ids/two-ids.https.html [ Failure ]
-crbug.com/1050754 external/wpt/paint-timing/border-image.html [ Failure ]
 crbug.com/1050754 external/wpt/paint-timing/fcp-only/fcp-invisible-3d-rotate-descendant.html [ Failure ]
 crbug.com/1050754 external/wpt/paint-timing/fcp-only/fcp-invisible-3d-rotate.html [ Failure ]
 crbug.com/1050754 external/wpt/paint-timing/fcp-only/fcp-out-of-bounds-translate.html [ Failure ]
 crbug.com/1050754 external/wpt/paint-timing/fcp-only/fcp-svg.html [ Failure ]
 crbug.com/1050754 external/wpt/paint-timing/fcp-only/fcp-video-frame.html [ Timeout ]
 crbug.com/1050754 external/wpt/paint-timing/input-text.html [ Failure ]
-crbug.com/1050754 external/wpt/paint-timing/mask-image.html [ Failure ]
 crbug.com/1050754 external/wpt/paint-timing/replaced-content-image.html [ Failure ]
-crbug.com/1050754 external/wpt/paint-timing/sibling-painting-first-image.html [ Failure ]
 crbug.com/1050754 external/wpt/payment-handler/can-make-payment-event.https.html [ Failure ]
 crbug.com/1050754 external/wpt/payment-handler/idlharness.https.any.serviceworker.html [ Failure ]
 crbug.com/1050754 external/wpt/payment-handler/idlharness.https.any.sharedworker.html [ Failure ]
diff --git a/third_party/blink/web_tests/android/WeblayerWPTExpectations b/third_party/blink/web_tests/android/WeblayerWPTExpectations
index 01bdd09..82719ea 100644
--- a/third_party/blink/web_tests/android/WeblayerWPTExpectations
+++ b/third_party/blink/web_tests/android/WeblayerWPTExpectations
@@ -3197,18 +3197,15 @@
 crbug.com/1050754 external/wpt/origin-policy/ids/non-array-id.https.html [ Failure ]
 crbug.com/1050754 external/wpt/origin-policy/ids/still-present-in-http.html [ Failure ]
 crbug.com/1050754 external/wpt/origin-policy/ids/two-ids.https.html [ Failure ]
-crbug.com/1050754 external/wpt/paint-timing/border-image.html [ Failure ]
-crbug.com/1050754 external/wpt/paint-timing/buffered-flag.window.html [ Timeout ]
+crbug.com/1050754 external/wpt/paint-timing/with-first-paint/buffered-flag.window.html [ Timeout ]
 crbug.com/1050754 external/wpt/paint-timing/fcp-only/fcp-invisible-3d-rotate-descendant.html [ Failure ]
 crbug.com/1050754 external/wpt/paint-timing/fcp-only/fcp-invisible-3d-rotate.html [ Failure ]
 crbug.com/1050754 external/wpt/paint-timing/fcp-only/fcp-out-of-bounds-translate.html [ Failure ]
 crbug.com/1050754 external/wpt/paint-timing/fcp-only/fcp-svg.html [ Failure ]
 crbug.com/1050754 external/wpt/paint-timing/fcp-only/fcp-video-frame.html [ Timeout ]
 crbug.com/1050754 external/wpt/paint-timing/input-text.html [ Failure ]
-crbug.com/1050754 external/wpt/paint-timing/mask-image.html [ Failure ]
-crbug.com/1050754 external/wpt/paint-timing/paint-visited.html [ Timeout ]
+crbug.com/1050754 external/wpt/paint-timing/with-first-paint/paint-visited.html [ Timeout ]
 crbug.com/1050754 external/wpt/paint-timing/replaced-content-image.html [ Failure ]
-crbug.com/1050754 external/wpt/paint-timing/sibling-painting-first-image.html [ Failure ]
 crbug.com/1050754 external/wpt/paint-timing/supported-paint-type.window.html [ Timeout ]
 crbug.com/1050754 external/wpt/payment-handler/can-make-payment-event.https.html [ Failure ]
 crbug.com/1050754 external/wpt/payment-handler/idlharness.https.any.serviceworker.html [ Failure ]
diff --git a/third_party/blink/web_tests/android/WebviewWPTExpectations b/third_party/blink/web_tests/android/WebviewWPTExpectations
index c941e14..0c58d51 100644
--- a/third_party/blink/web_tests/android/WebviewWPTExpectations
+++ b/third_party/blink/web_tests/android/WebviewWPTExpectations
@@ -3372,7 +3372,6 @@
 crbug.com/1050754 external/wpt/paint-timing/fcp-only/fcp-text-input.html [ Failure ]
 crbug.com/1050754 external/wpt/paint-timing/fcp-only/fcp-video-frame.html [ Failure ]
 crbug.com/1050754 external/wpt/paint-timing/fcp-only/fcp-video-poster.html [ Failure ]
-crbug.com/1050754 external/wpt/paint-timing/mask-image.html [ Failure ]
 crbug.com/1050754 external/wpt/payment-handler/can-make-payment-event.https.html [ Failure ]
 crbug.com/1050754 external/wpt/payment-handler/idlharness.https.any.serviceworker.html [ Failure ]
 crbug.com/1050754 external/wpt/payment-handler/idlharness.https.any.sharedworker.html [ Failure ]
diff --git a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json
index d9d95ca..bd4a929 100644
--- a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json
+++ b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json
@@ -380098,34 +380098,6 @@
     ]
    },
    "paint-timing": {
-    "basetest.html": [
-     "759dfaa97a5fd24ec9df82fabed858ff826384b2",
-     [
-      null,
-      {}
-     ]
-    ],
-    "border-image.html": [
-     "4614fecd2101c8457722e8b65a7ba39f1cf2eff6",
-     [
-      null,
-      {}
-     ]
-    ],
-    "buffered-flag.window.js": [
-     "0b7c8bea2e42ea54acc4e24f0ca548b51dea567d",
-     [
-      "paint-timing/buffered-flag.window.html",
-      {}
-     ]
-    ],
-    "child-painting-first-image.html": [
-     "3badae1849feaf5b2a0288ebe556af3ea1216586",
-     [
-      null,
-      {}
-     ]
-    ],
     "fcp-only": {
      "fcp-background-size.html": [
       "25fe986bdede921980b96c10f9d3d26a83558cbc",
@@ -380317,13 +380289,6 @@
       ]
      ]
     },
-    "first-contentful-bg-image.html": [
-     "00224b33ec9ecd2d15ee41c5ff609ad44592dff7",
-     [
-      null,
-      {}
-     ]
-    ],
     "first-contentful-canvas-none.html": [
      "33a4352126c0d59668e5fdd30d96a4c54ad34468",
      [
@@ -380331,64 +380296,6 @@
       {}
      ]
     ],
-    "first-contentful-canvas-webgl2.html": [
-     "f7c5f50ecba0bd5a5d45fb41a02d0457e49e6713",
-     [
-      null,
-      {}
-     ]
-    ],
-    "first-contentful-canvas.html": [
-     "e6a4365b760c7126be458c505a49ef1ea7234d53",
-     [
-      null,
-      {}
-     ]
-    ],
-    "first-contentful-image.html": [
-     "18abfe731d6bbfe27fb738331ae3137ebaf47a23",
-     [
-      null,
-      {}
-     ]
-    ],
-    "first-contentful-paint.html": [
-     "a93f1b73263efb7a57e1e8be3145d5aee85b9646",
-     [
-      null,
-      {}
-     ]
-    ],
-    "first-contentful-svg.html": [
-     "c68e72c01065310f2d23bba3154dd49cd9c9482c",
-     [
-      null,
-      {}
-     ]
-    ],
-    "first-image-child.html": [
-     "d707d437b61457679ff890a6dfb71c2133416298",
-     [
-      null,
-      {
-       "timeout": "long"
-      }
-     ]
-    ],
-    "first-paint-bg-color.html": [
-     "a4f799045f1c6430a37a0e091cf613193a82c163",
-     [
-      null,
-      {}
-     ]
-    ],
-    "first-paint-only.html": [
-     "473b1aa121d37815360bd0d49729c16971189dd6",
-     [
-      null,
-      {}
-     ]
-    ],
     "idlharness.window.js": [
      "049f0f18f1be64ad5d250f045b0dda3edbc931a4",
      [
@@ -380414,20 +380321,6 @@
       {}
      ]
     ],
-    "mask-image.html": [
-     "d022f43039f00ddc629aaa503d03931caab4a315",
-     [
-      null,
-      {}
-     ]
-    ],
-    "paint-visited.html": [
-     "c02ea2405258f34df3c88b17e4b6d383913ed8f9",
-     [
-      null,
-      {}
-     ]
-    ],
     "replaced-content-image.html": [
      "b3199aa0f6d54cc102ed5262c71021e232816ccc",
      [
@@ -380435,20 +380328,129 @@
       {}
      ]
     ],
-    "sibling-painting-first-image.html": [
-     "096c49ac19ec6f04255430b87e8e3ab216a8416c",
-     [
-      null,
-      {}
-     ]
-    ],
     "supported-paint-type.window.js": [
      "518faff5cfb2240a0ab70c5729be77b456ebef93",
      [
       "paint-timing/supported-paint-type.window.html",
       {}
      ]
-    ]
+    ],
+    "with-first-paint": {
+     "basetest.html": [
+      "759dfaa97a5fd24ec9df82fabed858ff826384b2",
+      [
+       null,
+       {}
+      ]
+     ],
+     "border-image.html": [
+      "7818b0e8e7e0d816ff34d06bcf0763acf44daa2a",
+      [
+       null,
+       {}
+      ]
+     ],
+     "buffered-flag.window.js": [
+      "0b7c8bea2e42ea54acc4e24f0ca548b51dea567d",
+      [
+       "paint-timing/with-first-paint/buffered-flag.window.html",
+       {}
+      ]
+     ],
+     "child-painting-first-image.html": [
+      "3badae1849feaf5b2a0288ebe556af3ea1216586",
+      [
+       null,
+       {}
+      ]
+     ],
+     "first-contentful-bg-image.html": [
+      "40eaa635bbccc1e346e68c2da2db3a268ab71cc5",
+      [
+       null,
+       {}
+      ]
+     ],
+     "first-contentful-canvas-webgl2.html": [
+      "f7c5f50ecba0bd5a5d45fb41a02d0457e49e6713",
+      [
+       null,
+       {}
+      ]
+     ],
+     "first-contentful-canvas.html": [
+      "e6a4365b760c7126be458c505a49ef1ea7234d53",
+      [
+       null,
+       {}
+      ]
+     ],
+     "first-contentful-image.html": [
+      "18abfe731d6bbfe27fb738331ae3137ebaf47a23",
+      [
+       null,
+       {}
+      ]
+     ],
+     "first-contentful-paint.html": [
+      "a93f1b73263efb7a57e1e8be3145d5aee85b9646",
+      [
+       null,
+       {}
+      ]
+     ],
+     "first-contentful-svg.html": [
+      "74799a2ecdbb153dd55c80c0df0b5482fbbccd56",
+      [
+       null,
+       {}
+      ]
+     ],
+     "first-image-child.html": [
+      "5c24527cf56f015d9f646e5b0c39ea416d07a5a6",
+      [
+       null,
+       {
+        "timeout": "long"
+       }
+      ]
+     ],
+     "first-paint-bg-color.html": [
+      "a4f799045f1c6430a37a0e091cf613193a82c163",
+      [
+       null,
+       {}
+      ]
+     ],
+     "first-paint-only.html": [
+      "473b1aa121d37815360bd0d49729c16971189dd6",
+      [
+       null,
+       {}
+      ]
+     ],
+     "mask-image.html": [
+      "05f4b9ea4d2cf9d05ff58c6a807d35e6efe351a6",
+      [
+       null,
+       {}
+      ]
+     ],
+     "paint-visited.html": [
+      "c02ea2405258f34df3c88b17e4b6d383913ed8f9",
+      [
+       null,
+       {}
+      ]
+     ],
+     "sibling-painting-first-image.html": [
+      "4ad625808a309ee44c219dd623f2deddd24e4f82",
+      [
+       null,
+       {}
+      ]
+     ]
+    }
    },
    "payment-handler": {
     "can-make-payment-event-constructor.https.html": [
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/critical-ch/iframe.https.window.js b/third_party/blink/web_tests/external/wpt/client-hints/critical-ch/iframe.https.window.js
new file mode 100644
index 0000000..87c68a3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/client-hints/critical-ch/iframe.https.window.js
@@ -0,0 +1,9 @@
+async_test((t) => {
+  var iframe = document.createElement("iframe");
+  iframe.addEventListener('load', (e) => {
+    t.step(()=>{assert_equals(iframe.contentDocument.body.textContent, "FAIL");});
+    t.done();
+  });
+  iframe.src = "resources/echo-critical-hint.py";
+  document.body.appendChild(iframe);
+}, "Critical-CH iframe");
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/critical-ch/mis-matched-count.https.window.js b/third_party/blink/web_tests/external/wpt/client-hints/critical-ch/mis-matched-count.https.window.js
new file mode 100644
index 0000000..b0c8d87
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/client-hints/critical-ch/mis-matched-count.https.window.js
@@ -0,0 +1,10 @@
+// META: script=/common/utils.js
+
+async_test((t) => {
+  var popup_window = window.open("resources/echo-critical-hint.py?mismatch=true&token="+token());
+  assert_not_equals(popup_window, null, "Popup windows not allowed?");
+  popup_window.addEventListener('load', (e) => {
+    t.step(()=>{assert_equals(popup_window.document.body.textContent, "1")});
+    t.done();
+  });
+}, "Critical-CH navigation")
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/critical-ch/mis-matched.https.window.js b/third_party/blink/web_tests/external/wpt/client-hints/critical-ch/mis-matched.https.window.js
new file mode 100644
index 0000000..fcfd5412
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/client-hints/critical-ch/mis-matched.https.window.js
@@ -0,0 +1,8 @@
+async_test((t) => {
+  var popup_window = window.open("resources/echo-critical-hint.py?mismatch=true");
+  assert_not_equals(popup_window, null, "Popup windows not allowed?");
+  popup_window.addEventListener('load', (e) => {
+    t.step(()=>{assert_equals(popup_window.document.body.textContent, "FAIL")});
+    t.done();
+  });
+}, "Critical-CH navigation")
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/critical-ch/navigation.https.window.js b/third_party/blink/web_tests/external/wpt/client-hints/critical-ch/navigation.https.window.js
new file mode 100644
index 0000000..831987e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/client-hints/critical-ch/navigation.https.window.js
@@ -0,0 +1,8 @@
+async_test((t) => {
+  var popup_window = window.open("resources/echo-critical-hint.py");
+  assert_not_equals(popup_window, null, "Popup windows not allowed?");
+  popup_window.addEventListener('load', (e) => {
+    t.step(()=>{assert_equals(popup_window.document.body.textContent, "PASS")});
+    t.done();
+  });
+}, "Critical-CH navigation")
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/critical-ch/non-secure.http.window.js b/third_party/blink/web_tests/external/wpt/client-hints/critical-ch/non-secure.http.window.js
new file mode 100644
index 0000000..46c00ff
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/client-hints/critical-ch/non-secure.http.window.js
@@ -0,0 +1,8 @@
+async_test((t) => {
+  var popup_window = window.open("resources/echo-critical-hint.py");
+  assert_not_equals(popup_window, null, "Popup windows not allowed?");
+  popup_window.addEventListener('load', (e) => {
+    t.step(()=>{assert_equals(popup_window.document.body.textContent, "FAIL")});
+    t.done();
+  });
+}, "Critical-CH non-secure navigation")
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/critical-ch/request-count.https.window.js b/third_party/blink/web_tests/external/wpt/client-hints/critical-ch/request-count.https.window.js
new file mode 100644
index 0000000..36c0ef8b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/client-hints/critical-ch/request-count.https.window.js
@@ -0,0 +1,10 @@
+// META: script=/common/utils.js
+
+async_test((t) => {
+  var popup_window = window.open("resources/echo-critical-hint.py?token="+token());
+  assert_not_equals(popup_window, null, "Popup windows not allowed?");
+  popup_window.addEventListener('load', (e) => {
+    t.step(()=>{assert_equals(popup_window.document.body.textContent, "2")});
+    t.done();
+  });
+}, "Critical-CH navigation")
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/critical-ch/resources/echo-critical-hint.py b/third_party/blink/web_tests/external/wpt/client-hints/critical-ch/resources/echo-critical-hint.py
new file mode 100644
index 0000000..4e2577a2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/client-hints/critical-ch/resources/echo-critical-hint.py
@@ -0,0 +1,43 @@
+import sys
+
+def main(request, response):
+    """
+    Simple handler that sets a response header based on which client hint
+    request headers were received.
+    """
+
+    response.headers.append(b"Content-Type", b"text/html; charset=UTF-8")
+    response.headers.append(b"Access-Control-Allow-Origin", b"*")
+    response.headers.append(b"Access-Control-Allow-Headers", b"*")
+    response.headers.append(b"Access-Control-Expose-Headers", b"*")
+
+    response.headers.append(b"Accept-CH", b"device-memory")
+
+    critical = b"device-memory"
+    if(request.GET.first(b"mismatch", None) is not None):
+      critical = b"viewport-width"
+
+    response.headers.append(b"Critical-CH", critical)
+
+    response.headers.append(b"Cache-Control", b"no-store")
+
+    result = "FAIL"
+
+    if b"device-memory" in request.headers:
+      result = "PASS"
+
+    token = request.GET.first(b"token", None)
+    if(token is not None):
+      with request.server.stash.lock:
+        count = request.server.stash.take(token)
+        if(count == None):
+          count = 1
+        else:
+          count += 1
+        request.server.stash.put(token, count)
+        result = str(count)
+
+    if b"viewport-width" in request.headers:
+      result = "MISMATCH"
+
+    response.content = result
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/critical-ch/subresource.https.window.js b/third_party/blink/web_tests/external/wpt/client-hints/critical-ch/subresource.https.window.js
new file mode 100644
index 0000000..4949335
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/client-hints/critical-ch/subresource.https.window.js
@@ -0,0 +1,7 @@
+promise_test(() =>
+  fetch("resources/echo-critical-hint.py")
+      .then((r) => r.text())
+      .then((r) => {
+        assert_equals(r, "FAIL");
+      })
+, "Critical-CH");
diff --git a/third_party/blink/web_tests/external/wpt/css/css-pseudo/parsing/target-text.html b/third_party/blink/web_tests/external/wpt/css/css-pseudo/parsing/target-text.html
new file mode 100644
index 0000000..37cbdd4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-pseudo/parsing/target-text.html
@@ -0,0 +1,20 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>CSS Pseudo-Elements Test: ::target-text parsing</title>
+<link rel="help" href="https://drafts.csswg.org/css-pseudo/#selectordef-target-text">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+<script>
+  test_valid_selector("::target-text");
+  test_valid_selector(".a::target-text");
+  test_valid_selector("div ::target-text");
+  test_valid_selector("::part(my-part)::target-text");
+
+  test_invalid_selector("::before::target-text");
+  test_invalid_selector("::target-text.a");
+  test_invalid_selector("::target-text div");
+  test_invalid_selector("::target-text::after");
+  test_invalid_selector("::target-text:hover");
+  test_invalid_selector(":not(::target-text)");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-pseudo/target-text-computed.html b/third_party/blink/web_tests/external/wpt/css/css-pseudo/target-text-computed.html
new file mode 100644
index 0000000..42990305
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-pseudo/target-text-computed.html
@@ -0,0 +1,22 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>CSS Pseudo-Elements Test: ::target-text getComputedStyle</title>
+<link rel="help" href="https://drafts.csswg.org/css-pseudo/#selectordef-target-text">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+  #target::target-text {
+    background-color: green;
+  }
+  #target::target-text {
+    color: lime;
+  }
+</style>
+<div id="target"></div>
+<script>
+  test(() => {
+    let style = getComputedStyle(target, "::target-text");
+    assert_equals(style.backgroundColor, "rgb(0, 128, 0)", "Background color is green.");
+    assert_equals(style.color, "rgb(0, 255, 0)", "Color is lime.");
+  }, "getComputedStyle() for ::target-text");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/paint-timing/basetest.html b/third_party/blink/web_tests/external/wpt/paint-timing/with-first-paint/basetest.html
similarity index 100%
rename from third_party/blink/web_tests/external/wpt/paint-timing/basetest.html
rename to third_party/blink/web_tests/external/wpt/paint-timing/with-first-paint/basetest.html
diff --git a/third_party/blink/web_tests/external/wpt/paint-timing/border-image.html b/third_party/blink/web_tests/external/wpt/paint-timing/with-first-paint/border-image.html
similarity index 94%
rename from third_party/blink/web_tests/external/wpt/paint-timing/border-image.html
rename to third_party/blink/web_tests/external/wpt/paint-timing/with-first-paint/border-image.html
index 4614fec..7818b0e 100644
--- a/third_party/blink/web_tests/external/wpt/paint-timing/border-image.html
+++ b/third_party/blink/web_tests/external/wpt/paint-timing/with-first-paint/border-image.html
@@ -2,7 +2,7 @@
 <body>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="resources/utils.js"></script>
+<script src="../resources/utils.js"></script>
 <style>
   #bordered {
     width: 100px;
diff --git a/third_party/blink/web_tests/external/wpt/paint-timing/buffered-flag.window.js b/third_party/blink/web_tests/external/wpt/paint-timing/with-first-paint/buffered-flag.window.js
similarity index 100%
rename from third_party/blink/web_tests/external/wpt/paint-timing/buffered-flag.window.js
rename to third_party/blink/web_tests/external/wpt/paint-timing/with-first-paint/buffered-flag.window.js
diff --git a/third_party/blink/web_tests/external/wpt/paint-timing/child-painting-first-image.html b/third_party/blink/web_tests/external/wpt/paint-timing/with-first-paint/child-painting-first-image.html
similarity index 100%
rename from third_party/blink/web_tests/external/wpt/paint-timing/child-painting-first-image.html
rename to third_party/blink/web_tests/external/wpt/paint-timing/with-first-paint/child-painting-first-image.html
diff --git a/third_party/blink/web_tests/external/wpt/paint-timing/first-contentful-bg-image.html b/third_party/blink/web_tests/external/wpt/paint-timing/with-first-paint/first-contentful-bg-image.html
similarity index 95%
rename from third_party/blink/web_tests/external/wpt/paint-timing/first-contentful-bg-image.html
rename to third_party/blink/web_tests/external/wpt/paint-timing/with-first-paint/first-contentful-bg-image.html
index 00224b33..40eaa63 100644
--- a/third_party/blink/web_tests/external/wpt/paint-timing/first-contentful-bg-image.html
+++ b/third_party/blink/web_tests/external/wpt/paint-timing/with-first-paint/first-contentful-bg-image.html
@@ -14,7 +14,7 @@
 async_test(function (t) {
     assert_implements(window.PerformancePaintTiming, "Paint Timing isn't supported.");
     const body = document.getElementsByTagName('body')[0];
-    body.style.backgroundImage = 'url(resources/circles.png)';
+    body.style.backgroundImage = 'url(../resources/circles.png)';
     window.onload = function() {
         function testPaintEntries() {
             const bufferedEntries = performance.getEntriesByType('paint');
diff --git a/third_party/blink/web_tests/external/wpt/paint-timing/first-contentful-canvas-webgl2.html b/third_party/blink/web_tests/external/wpt/paint-timing/with-first-paint/first-contentful-canvas-webgl2.html
similarity index 100%
rename from third_party/blink/web_tests/external/wpt/paint-timing/first-contentful-canvas-webgl2.html
rename to third_party/blink/web_tests/external/wpt/paint-timing/with-first-paint/first-contentful-canvas-webgl2.html
diff --git a/third_party/blink/web_tests/external/wpt/paint-timing/first-contentful-canvas.html b/third_party/blink/web_tests/external/wpt/paint-timing/with-first-paint/first-contentful-canvas.html
similarity index 100%
rename from third_party/blink/web_tests/external/wpt/paint-timing/first-contentful-canvas.html
rename to third_party/blink/web_tests/external/wpt/paint-timing/with-first-paint/first-contentful-canvas.html
diff --git a/third_party/blink/web_tests/external/wpt/paint-timing/first-contentful-image.html b/third_party/blink/web_tests/external/wpt/paint-timing/with-first-paint/first-contentful-image.html
similarity index 100%
rename from third_party/blink/web_tests/external/wpt/paint-timing/first-contentful-image.html
rename to third_party/blink/web_tests/external/wpt/paint-timing/with-first-paint/first-contentful-image.html
diff --git a/third_party/blink/web_tests/external/wpt/paint-timing/first-contentful-paint.html b/third_party/blink/web_tests/external/wpt/paint-timing/with-first-paint/first-contentful-paint.html
similarity index 100%
rename from third_party/blink/web_tests/external/wpt/paint-timing/first-contentful-paint.html
rename to third_party/blink/web_tests/external/wpt/paint-timing/with-first-paint/first-contentful-paint.html
diff --git a/third_party/blink/web_tests/external/wpt/paint-timing/first-contentful-svg.html b/third_party/blink/web_tests/external/wpt/paint-timing/with-first-paint/first-contentful-svg.html
similarity index 96%
rename from third_party/blink/web_tests/external/wpt/paint-timing/first-contentful-svg.html
rename to third_party/blink/web_tests/external/wpt/paint-timing/with-first-paint/first-contentful-svg.html
index c68e72c..74799a2e 100644
--- a/third_party/blink/web_tests/external/wpt/paint-timing/first-contentful-svg.html
+++ b/third_party/blink/web_tests/external/wpt/paint-timing/with-first-paint/first-contentful-svg.html
@@ -12,7 +12,7 @@
 async_test(function (t) {
     assert_implements(window.PerformancePaintTiming, "Paint Timing isn't supported.");
     const img = document.createElement("IMG");
-    img.src = "resources/circle.svg";
+    img.src = "../resources/circle.svg";
     img.onload = function() {
         function testPaintEntries() {
             const bufferedEntries = performance.getEntriesByType('paint');
diff --git a/third_party/blink/web_tests/external/wpt/paint-timing/first-image-child.html b/third_party/blink/web_tests/external/wpt/paint-timing/with-first-paint/first-image-child.html
similarity index 93%
rename from third_party/blink/web_tests/external/wpt/paint-timing/first-image-child.html
rename to third_party/blink/web_tests/external/wpt/paint-timing/with-first-paint/first-image-child.html
index d707d43..5c24527 100644
--- a/third_party/blink/web_tests/external/wpt/paint-timing/first-image-child.html
+++ b/third_party/blink/web_tests/external/wpt/paint-timing/with-first-paint/first-image-child.html
@@ -6,8 +6,8 @@
 <body>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<iframe src='resources/subframe-sending-paint.html' id='child-iframe'></iframe>
-<img src='resources/circles.png'/>
+<iframe src='../resources/subframe-sending-paint.html' id='child-iframe'></iframe>
+<img src='../resources/circles.png'/>
 <script>
 setup({"hide_test_state": true});
 async_test(function (t) {
diff --git a/third_party/blink/web_tests/external/wpt/paint-timing/first-paint-bg-color.html b/third_party/blink/web_tests/external/wpt/paint-timing/with-first-paint/first-paint-bg-color.html
similarity index 100%
rename from third_party/blink/web_tests/external/wpt/paint-timing/first-paint-bg-color.html
rename to third_party/blink/web_tests/external/wpt/paint-timing/with-first-paint/first-paint-bg-color.html
diff --git a/third_party/blink/web_tests/external/wpt/paint-timing/first-paint-only.html b/third_party/blink/web_tests/external/wpt/paint-timing/with-first-paint/first-paint-only.html
similarity index 100%
rename from third_party/blink/web_tests/external/wpt/paint-timing/first-paint-only.html
rename to third_party/blink/web_tests/external/wpt/paint-timing/with-first-paint/first-paint-only.html
diff --git a/third_party/blink/web_tests/external/wpt/paint-timing/mask-image.html b/third_party/blink/web_tests/external/wpt/paint-timing/with-first-paint/mask-image.html
similarity index 93%
rename from third_party/blink/web_tests/external/wpt/paint-timing/mask-image.html
rename to third_party/blink/web_tests/external/wpt/paint-timing/with-first-paint/mask-image.html
index d022f430..05f4b9e 100644
--- a/third_party/blink/web_tests/external/wpt/paint-timing/mask-image.html
+++ b/third_party/blink/web_tests/external/wpt/paint-timing/with-first-paint/mask-image.html
@@ -2,7 +2,7 @@
 <body>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="resources/utils.js"></script>
+<script src="../resources/utils.js"></script>
 <style>
   #masked {
     width: 0px;
diff --git a/third_party/blink/web_tests/external/wpt/paint-timing/paint-visited.html b/third_party/blink/web_tests/external/wpt/paint-timing/with-first-paint/paint-visited.html
similarity index 100%
rename from third_party/blink/web_tests/external/wpt/paint-timing/paint-visited.html
rename to third_party/blink/web_tests/external/wpt/paint-timing/with-first-paint/paint-visited.html
diff --git a/third_party/blink/web_tests/external/wpt/paint-timing/sibling-painting-first-image.html b/third_party/blink/web_tests/external/wpt/paint-timing/with-first-paint/sibling-painting-first-image.html
similarity index 96%
rename from third_party/blink/web_tests/external/wpt/paint-timing/sibling-painting-first-image.html
rename to third_party/blink/web_tests/external/wpt/paint-timing/with-first-paint/sibling-painting-first-image.html
index 096c49a..4ad6258 100644
--- a/third_party/blink/web_tests/external/wpt/paint-timing/sibling-painting-first-image.html
+++ b/third_party/blink/web_tests/external/wpt/paint-timing/with-first-paint/sibling-painting-first-image.html
@@ -49,6 +49,6 @@
 }, 'Frame ignores paint-timing events fired from sibling frame.');
 </script>
 <!-- This iframe is where all of the painting occurs. -->
-<iframe id="painting-iframe" src="resources/subframe-painting.html"></iframe>
+<iframe id="painting-iframe" src="../resources/subframe-painting.html"></iframe>
 </body>
 </html>
diff --git a/third_party/blink/web_tests/fast/hidpi/image-srcset-change-resource-dpr.html b/third_party/blink/web_tests/fast/hidpi/image-srcset-change-resource-dpr.html
index e16afc5..1a6d96f5 100644
--- a/third_party/blink/web_tests/fast/hidpi/image-srcset-change-resource-dpr.html
+++ b/third_party/blink/web_tests/fast/hidpi/image-srcset-change-resource-dpr.html
@@ -7,16 +7,19 @@
 <script src="resources/srcset-helper.js"></script>
 <script src="../../resources/js-test.js"></script>
 <script>
-    addEventListener("load", function() {
-        var img = document.getElementById("foo");
-        img.srcset = "resources/green-400-px-square.png 2x";
-        img.addEventListener("load", function() {
-            shouldBeTrue('document.getElementById("foo").clientWidth==200');
-            shouldBeFalse('document.getElementById("foo").clientWidth==400');
-            if (window.testRunner)
-                testRunner.notifyDone();
+    // Only run the actual test when the scale factor has been set.
+    if (sessionStorage.scaleFactorIsSet) {
+        addEventListener("load", function() {
+            var img = document.getElementById("foo");
+            img.srcset = "resources/green-400-px-square.png 2x";
+            img.addEventListener("load", function() {
+                shouldBeTrue('document.getElementById("foo").clientWidth==200');
+                shouldBeFalse('document.getElementById("foo").clientWidth==400');
+                if (window.testRunner)
+                    testRunner.notifyDone();
+            }, false);
         }, false);
-    }, false);
+    }
 </script>
 <div>This test passes if this img tag below is a green square when the scale factor is 2.
     It ensures that attributes can be changed dynamically from javascript, and that only the correct resource is loaded.</div>
diff --git a/third_party/blink/web_tests/http/tests/devtools/elements/styles-2/pseudo-elements-expected.txt b/third_party/blink/web_tests/http/tests/devtools/elements/styles-2/pseudo-elements-expected.txt
index 05b747c..7d8fad9 100644
--- a/third_party/blink/web_tests/http/tests/devtools/elements/styles-2/pseudo-elements-expected.txt
+++ b/third_party/blink/web_tests/http/tests/devtools/elements/styles-2/pseudo-elements-expected.txt
@@ -53,6 +53,11 @@
     text-align: start !important;
     text-align-last: start !important;
 
+======== Pseudo ::target-text element ========
+[expanded] 
+#inspected::target-text { (<style>)
+    color: green;
+
 
 Running: dumpBeforeStyles
 [expanded] 
diff --git a/third_party/blink/web_tests/http/tests/devtools/elements/styles-2/pseudo-elements.js b/third_party/blink/web_tests/http/tests/devtools/elements/styles-2/pseudo-elements.js
index 2553433..d1f44e8c 100644
--- a/third_party/blink/web_tests/http/tests/devtools/elements/styles-2/pseudo-elements.js
+++ b/third_party/blink/web_tests/http/tests/devtools/elements/styles-2/pseudo-elements.js
@@ -8,6 +8,10 @@
   await TestRunner.showPanel('elements');
   await TestRunner.loadHTML(`
       <style>
+      #inspected::target-text {
+        color: green;
+      }
+
       #inspected {
         display: list-item;
       }
diff --git a/third_party/blink/web_tests/http/tests/devtools/persistence/persistence-do-not-overwrite-css.js b/third_party/blink/web_tests/http/tests/devtools/persistence/persistence-do-not-overwrite-css.js
index 770f546..fcdc202 100644
--- a/third_party/blink/web_tests/http/tests/devtools/persistence/persistence-do-not-overwrite-css.js
+++ b/third_party/blink/web_tests/http/tests/devtools/persistence/persistence-do-not-overwrite-css.js
@@ -57,7 +57,7 @@
       var styleSheet =
           TestRunner.cssModel.styleSheetHeaders().find(header => header.contentURL().endsWith('simple.css'));
       // Make CSSModel constantly return errors on all getStyleSheetText requests.
-      TestRunner.override(TestRunner.cssModel._agent, 'getStyleSheetText', throwProtocolError, true);
+      TestRunner.override(TestRunner.cssModel._agent, 'invoke_getStyleSheetText', throwProtocolError, true);
       // Set a new stylesheet text
       TestRunner.cssModel.setStyleSheetText(styleSheet.id, 'body {color: blue}');
       // Expect StylesSourceMapping to sync styleSheet with network UISourceCode.
diff --git a/third_party/blink/web_tests/http/tests/devtools/profiler/agents-disabled-check-expected.txt b/third_party/blink/web_tests/http/tests/devtools/profiler/agents-disabled-check-expected.txt
index 7520991..cd58c9a 100644
--- a/third_party/blink/web_tests/http/tests/devtools/profiler/agents-disabled-check-expected.txt
+++ b/third_party/blink/web_tests/http/tests/devtools/profiler/agents-disabled-check-expected.txt
@@ -2,7 +2,7 @@
 
 --> SDK.targetManager.suspendAllTargets();
 frontend: {"id":<number>,"method":"DOM.disable","params":{}}
-frontend: {"id":<number>,"method":"CSS.disable"}
+frontend: {"id":<number>,"method":"CSS.disable","params":{}}
 frontend: {"id":<number>,"method":"Debugger.setAsyncCallStackDepth","params":{"maxDepth":0}}
 frontend: {"id":<number>,"method":"Overlay.disable","params":{}}
 frontend: {"id":<number>,"method":"Target.setAutoAttach","params":{"autoAttach":true,"waitForDebuggerOnStart":false,"flatten":true}}
@@ -10,7 +10,7 @@
 
 --> SDK.targetManager.resumeAllTargets();
 frontend: {"id":<number>,"method":"DOM.enable","params":{}}
-frontend: {"id":<number>,"method":"CSS.enable"}
+frontend: {"id":<number>,"method":"CSS.enable","params":{}}
 frontend: {"id":<number>,"method":"Debugger.enable","params":{"maxScriptsCacheSize":100000000}}
 frontend: {"id":<number>,"method":"Debugger.setPauseOnExceptions","params":{"state":"none"}}
 frontend: {"id":<number>,"method":"Debugger.setAsyncCallStackDepth","params":{"maxDepth":32}}
diff --git a/third_party/blink/web_tests/mhtml/mhtml_in_iframe-expected.txt b/third_party/blink/web_tests/mhtml/mhtml_in_iframe-expected.txt
index cafc711..44ba9e4 100644
--- a/third_party/blink/web_tests/mhtml/mhtml_in_iframe-expected.txt
+++ b/third_party/blink/web_tests/mhtml/mhtml_in_iframe-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE ERROR: Attempted to load a multipart archive into an subframe: simple_page_unmht.mht
 This page has an IFrame that tries to load some MHTML.
 The load should fail.
 
@@ -6,4 +5,5 @@
 --------
 Frame: '<!--framePath //<!--frame0-->-->'
 --------
-
+Could not load the requested resource.
+Error code: -27 (net::ERR_BLOCKED_BY_RESPONSE)
diff --git a/third_party/blink/web_tests/virtual/legacy-client-hints-no-fp-delegation/external/wpt/client-hints/critical-ch/navigation.https.window-expected.txt b/third_party/blink/web_tests/virtual/legacy-client-hints-no-fp-delegation/external/wpt/client-hints/critical-ch/navigation.https.window-expected.txt
new file mode 100644
index 0000000..d3a1661
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/legacy-client-hints-no-fp-delegation/external/wpt/client-hints/critical-ch/navigation.https.window-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+FAIL Critical-CH navigation assert_equals: expected "PASS" but got "FAIL"
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/virtual/legacy-client-hints-no-fp-delegation/external/wpt/client-hints/critical-ch/request-count.https.window-expected.txt b/third_party/blink/web_tests/virtual/legacy-client-hints-no-fp-delegation/external/wpt/client-hints/critical-ch/request-count.https.window-expected.txt
new file mode 100644
index 0000000..c5e7681
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/legacy-client-hints-no-fp-delegation/external/wpt/client-hints/critical-ch/request-count.https.window-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+FAIL Critical-CH navigation assert_equals: expected "2" but got "1"
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/virtual/stable/webexposed/css-properties-as-js-properties-expected.txt b/third_party/blink/web_tests/virtual/stable/webexposed/css-properties-as-js-properties-expected.txt
index 9931c6ca..23393bc 100644
--- a/third_party/blink/web_tests/virtual/stable/webexposed/css-properties-as-js-properties-expected.txt
+++ b/third_party/blink/web_tests/virtual/stable/webexposed/css-properties-as-js-properties-expected.txt
@@ -17,6 +17,7 @@
 animationTimingFunction
 appearance
 ascentOverride
+aspectRatio
 backdropFilter
 backfaceVisibility
 background
diff --git a/third_party/blink/web_tests/virtual/stable/webexposed/css-property-listing-expected.txt b/third_party/blink/web_tests/virtual/stable/webexposed/css-property-listing-expected.txt
index 736731ff..147d5893b 100644
--- a/third_party/blink/web_tests/virtual/stable/webexposed/css-property-listing-expected.txt
+++ b/third_party/blink/web_tests/virtual/stable/webexposed/css-property-listing-expected.txt
@@ -70,6 +70,7 @@
     animation-play-state
     animation-timing-function
     appearance
+    aspect-ratio
     backdrop-filter
     backface-visibility
     background-attachment
diff --git a/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-config.tentative.html b/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-config.tentative.html
index 524ded2..511e2bc 100644
--- a/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-config.tentative.html
+++ b/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-config.tentative.html
@@ -66,31 +66,31 @@
     }, "SanitizerAPI config dropElements is not editable.");
 
     test(t => {
-      let options = {allowAttributes: ["id"]};
+      let options = {allowAttributes: {"id": ["*"]}};
 
       let s = new Sanitizer(options);
       assert_true(s instanceof Sanitizer);
       assert_equals(s.sanitizeToString("<button id='btn' style='color: black'>balabala</button>"), "<button id=\"btn\">balabala</button>");
 
-      options.allowAttributes.push("style");
+      options.allowAttributes["style"] = ["*"];
       assert_equals(s.sanitizeToString("<button id='btn' style='color: black'>balabala</button>"), "<button id=\"btn\">balabala</button>");
     }, "SanitizerAPI config allowAttributes is not editable.");
 
     test(t => {
-      let options = {dropAttributes: ["id"]};
+      let options = {dropAttributes: {"id": ["*"]}};
 
       let s = new Sanitizer(options);
       assert_true(s instanceof Sanitizer);
       assert_equals(s.sanitizeToString("<button id='btn' style='color: black'>balabala</button>"), "<button style=\"color: black\">balabala</button>");
 
-      options.dropAttributes.push("style");
+      options.dropAttributes["style"] = ["*"];
       assert_equals(s.sanitizeToString("<button id='btn' style='color: black'>balabala</button>"), "<button style=\"color: black\">balabala</button>");
     }, "SanitizerAPI config dropAttributes is not editable.");
 
     const config_names = ["dropElements", "blockElements", "allowElements", "dropAttributes", "allowAttributes"];
     config_names.forEach(cname => {
       let options = {};
-      options[cname] = [];
+      options[cname] = cname.endsWith("Elements") ? [] : {};
       test(t => {
         let s = new Sanitizer(options);
         assert_true(s instanceof Sanitizer)
diff --git a/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-sanitize.tentative-expected.txt b/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-sanitize.tentative-expected.txt
index 9cde50a3..0a9398c 100644
--- a/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-sanitize.tentative-expected.txt
+++ b/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-sanitize.tentative-expected.txt
@@ -25,12 +25,15 @@
 PASS SanitizerAPI with config: blockElements list with invalid values}, sanitize function for blockElements list with invalid values}
 PASS SanitizerAPI with config: allowElements list ["p"]., sanitize function for allowElements list ["p"].
 PASS SanitizerAPI with config: allowElements list has no influence to dropElements., sanitize function for allowElements list has no influence to dropElements.
-PASS SanitizerAPI with config: dropAttributes list ["style"] with style attribute, sanitize function for dropAttributes list ["style"] with style attribute
+PASS SanitizerAPI with config: dropAttributes list {"style": ["p"]} with style attribute, sanitize function for dropAttributes list {"style": ["p"]} with style attribute
+PASS SanitizerAPI with config: dropAttributes list {"*": ["a"]} with style attribute, sanitize function for dropAttributes list {"*": ["a"]} with style attribute
 PASS SanitizerAPI with config: empty dropAttributes list with id attribute, sanitize function for empty dropAttributes list with id attribute
-PASS SanitizerAPI with config: dropAttributes list ["id"] with id attribute, sanitize function for dropAttributes list ["id"] with id attribute
-PASS SanitizerAPI with config: dropAttributes list ["ID"] with id attribute, sanitize function for dropAttributes list ["ID"] with id attribute
-FAIL SanitizerAPI with config: dropAttributes list ["data-attribute-with-dashes"] with dom dataset js access., sanitize function for dropAttributes list ["data-attribute-with-dashes"] with dom dataset js access. assert_equals: expected "<p id=\"p\">Click.</p><script></script>" but got "<p id=\"p\">Click.</p>"
-PASS SanitizerAPI with config: allowAttributes list ["id"] with id attribute and onclick scripts, sanitize function for allowAttributes list ["id"] with id attribute and onclick scripts
+PASS SanitizerAPI with config: dropAttributes list {"id": ["*"]} with id attribute, sanitize function for dropAttributes list {"id": ["*"]} with id attribute
+PASS SanitizerAPI with config: dropAttributes list {"ID": ["*"]} with id attribute, sanitize function for dropAttributes list {"ID": ["*"]} with id attribute
+FAIL SanitizerAPI with config: dropAttributes list {"data-attribute-with-dashes": ["*"]} with dom dataset js access., sanitize function for dropAttributes list {"data-attribute-with-dashes": ["*"]} with dom dataset js access. assert_equals: expected "<p id=\"p\">Click.</p><script></script>" but got "<p id=\"p\">Click.</p>"
+PASS SanitizerAPI with config: allowAttributes list {"id": ["div"]} with id attribute, sanitize function for allowAttributes list {"id": ["div"]} with id attribute
+PASS SanitizerAPI with config: allowAttributes list {"id": ["*"]} with id attribute and onclick scripts, sanitize function for allowAttributes list {"id": ["*"]} with id attribute and onclick scripts
+PASS SanitizerAPI with config: allowAttributes list {"*": ["a"]} with style attribute, sanitize function for allowAttributes list {"*": ["a"]} with style attribute
 PASS SanitizerAPI with config: allowAttributes list has no influence to dropAttributes, sanitize function for allowAttributes list has no influence to dropAttributes
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-sanitizeToString.tentative-expected.txt b/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-sanitizeToString.tentative-expected.txt
index d26287c..31f98a96 100644
--- a/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-sanitizeToString.tentative-expected.txt
+++ b/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-sanitizeToString.tentative-expected.txt
@@ -25,12 +25,15 @@
 PASS SanitizerAPI config: blockElements list with invalid values}, sanitizeToString function for blockElements list with invalid values}
 PASS SanitizerAPI config: allowElements list ["p"]., sanitizeToString function for allowElements list ["p"].
 PASS SanitizerAPI config: allowElements list has no influence to dropElements., sanitizeToString function for allowElements list has no influence to dropElements.
-PASS SanitizerAPI config: dropAttributes list ["style"] with style attribute, sanitizeToString function for dropAttributes list ["style"] with style attribute
+PASS SanitizerAPI config: dropAttributes list {"style": ["p"]} with style attribute, sanitizeToString function for dropAttributes list {"style": ["p"]} with style attribute
+PASS SanitizerAPI config: dropAttributes list {"*": ["a"]} with style attribute, sanitizeToString function for dropAttributes list {"*": ["a"]} with style attribute
 PASS SanitizerAPI config: empty dropAttributes list with id attribute, sanitizeToString function for empty dropAttributes list with id attribute
-PASS SanitizerAPI config: dropAttributes list ["id"] with id attribute, sanitizeToString function for dropAttributes list ["id"] with id attribute
-PASS SanitizerAPI config: dropAttributes list ["ID"] with id attribute, sanitizeToString function for dropAttributes list ["ID"] with id attribute
-FAIL SanitizerAPI config: dropAttributes list ["data-attribute-with-dashes"] with dom dataset js access., sanitizeToString function for dropAttributes list ["data-attribute-with-dashes"] with dom dataset js access. assert_equals: expected "<p id=\"p\">Click.</p><script></script>" but got "<p id=\"p\">Click.</p>"
-PASS SanitizerAPI config: allowAttributes list ["id"] with id attribute and onclick scripts, sanitizeToString function for allowAttributes list ["id"] with id attribute and onclick scripts
+PASS SanitizerAPI config: dropAttributes list {"id": ["*"]} with id attribute, sanitizeToString function for dropAttributes list {"id": ["*"]} with id attribute
+PASS SanitizerAPI config: dropAttributes list {"ID": ["*"]} with id attribute, sanitizeToString function for dropAttributes list {"ID": ["*"]} with id attribute
+FAIL SanitizerAPI config: dropAttributes list {"data-attribute-with-dashes": ["*"]} with dom dataset js access., sanitizeToString function for dropAttributes list {"data-attribute-with-dashes": ["*"]} with dom dataset js access. assert_equals: expected "<p id=\"p\">Click.</p><script></script>" but got "<p id=\"p\">Click.</p>"
+PASS SanitizerAPI config: allowAttributes list {"id": ["div"]} with id attribute, sanitizeToString function for allowAttributes list {"id": ["div"]} with id attribute
+PASS SanitizerAPI config: allowAttributes list {"id": ["*"]} with id attribute and onclick scripts, sanitizeToString function for allowAttributes list {"id": ["*"]} with id attribute and onclick scripts
+PASS SanitizerAPI config: allowAttributes list {"*": ["a"]} with style attribute, sanitizeToString function for allowAttributes list {"*": ["a"]} with style attribute
 PASS SanitizerAPI config: allowAttributes list has no influence to dropAttributes, sanitizeToString function for allowAttributes list has no influence to dropAttributes
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/wpt_internal/sanitizer-api/support/testcases.sub.js b/third_party/blink/web_tests/wpt_internal/sanitizer-api/support/testcases.sub.js
index bea3bdf5..9886ded 100644
--- a/third_party/blink/web_tests/wpt_internal/sanitizer-api/support/testcases.sub.js
+++ b/third_party/blink/web_tests/wpt_internal/sanitizer-api/support/testcases.sub.js
@@ -24,11 +24,14 @@
   {config_input: {blockElements: [123, [], "test", "i"]}, value: "<div>balabala<i>test</i></div><test>t</test>", result: "<div>balabalatest</div>t", message: "blockElements list with invalid values}"},
   {config_input: {allowElements: ["p"]}, value: "<div>test<div>p</div>tt<p>div</p></div>", result: "testptt<p>div</p>", message: "allowElements list [\"p\"]."},
   {config_input: {dropElements: ["div"], allowElements: ["div"]}, value: "<div>test</div><c>bla", result: "bla", message: "allowElements list has no influence to dropElements."},
-  {config_input: {dropAttributes: ["style"]}, value: "<p style='color: black'>Click.</p>", result: "<p>Click.</p>", message: "dropAttributes list [\"style\"] with style attribute"},
-  {config_input: {dropAttributes: []}, value: "<p id='test'>Click.</p>", result: "<p id=\"test\">Click.</p>", message: "empty dropAttributes list with id attribute"},
-  {config_input: {dropAttributes: ["id"]}, value: "<p id='test'>Click.</p>", result: "<p>Click.</p>", message: "dropAttributes list [\"id\"] with id attribute"},
-  {config_input: {dropAttributes: ["ID"]}, value: "<p id='test'>Click.</p>", result: "<p>Click.</p>", message: "dropAttributes list [\"ID\"] with id attribute"},
-  {config_input: {dropAttributes: ["data-attribute-with-dashes"]}, value: "<p id='p' data-attribute-with-dashes='123'>Click.</p><script>document.getElementById('p').dataset.attributeWithDashes=123;</script>", result: "<p id=\"p\">Click.</p><script></script>", message: "dropAttributes list [\"data-attribute-with-dashes\"] with dom dataset js access."},
-  {config_input: {allowAttributes: ["id"]}, value: "<p id='test' onclick='a= 123'>Click.</p>", result: "<p id=\"test\">Click.</p>", message: "allowAttributes list [\"id\"] with id attribute and onclick scripts"},
-  {config_input: {dropAttributes: ["style"], allowAttributes: ["style"]}, value: "<p style='color: black'>Click.</p>", result: "<p>Click.</p>", message: "allowAttributes list has no influence to dropAttributes"},
+  {config_input: {dropAttributes: {"style": ["p"]}}, value: "<p style='color: black'>Click.</p><div style='color: white'>div</div>", result: "<p>Click.</p><div style=\"color: white\">div</div>", message: "dropAttributes list {\"style\": [\"p\"]} with style attribute"},
+  {config_input: {dropAttributes: {"*": ["a"]}}, value: "<a id='a' style='color: black'>Click.</a><div style='color: white'>div</div>", result: "<a>Click.</a><div style=\"color: white\">div</div>", message: "dropAttributes list {\"*\": [\"a\"]} with style attribute"},
+  {config_input: {dropAttributes: {}}, value: "<p id='test'>Click.</p>", result: "<p id=\"test\">Click.</p>", message: "empty dropAttributes list with id attribute"},
+  {config_input: {dropAttributes: {"id": ["*"]}}, value: "<p id='test'>Click.</p>", result: "<p>Click.</p>", message: "dropAttributes list {\"id\": [\"*\"]} with id attribute"},
+  {config_input: {dropAttributes: {"ID": ["*"]}}, value: "<p id='test'>Click.</p>", result: "<p>Click.</p>", message: "dropAttributes list {\"ID\": [\"*\"]} with id attribute"},
+  {config_input: {dropAttributes: {"data-attribute-with-dashes": ["*"]}}, value: "<p id='p' data-attribute-with-dashes='123'>Click.</p><script>document.getElementById('p').dataset.attributeWithDashes=123;</script>", result: "<p id=\"p\">Click.</p><script></script>", message: "dropAttributes list {\"data-attribute-with-dashes\": [\"*\"]} with dom dataset js access."},
+  {config_input: {allowAttributes: {"id": ["div"]}}, value: "<p id='p'>P</p><div id='div'>DIV</div>", result: "<p>P</p><div id=\"div\">DIV</div>", message: "allowAttributes list {\"id\": [\"div\"]} with id attribute"},
+  {config_input: {allowAttributes: {"id": ["*"]}}, value: "<p id='test' onclick='a= 123'>Click.</p>", result: "<p id=\"test\">Click.</p>", message: "allowAttributes list {\"id\": [\"*\"]} with id attribute and onclick scripts"},
+  {config_input: {allowAttributes: {"*": ["a"]}}, value: "<a id='a' style='color: black'>Click.</a><div style='color: white'>div</div>", result: "<a id=\"a\" style=\"color: black\">Click.</a><div>div</div>", message: "allowAttributes list {\"*\": [\"a\"]} with style attribute"},
+  {config_input: {dropAttributes: {"style": ["*"]}, allowAttributes: {"style": ["*"]}}, value: "<p style='color: black'>Click.</p>", result: "<p>Click.</p>", message: "allowAttributes list has no influence to dropAttributes"},
 ];
diff --git a/third_party/hyphenation-patterns/BUILD.gn b/third_party/hyphenation-patterns/BUILD.gn
index 08e3f95..ca7021be 100644
--- a/third_party/hyphenation-patterns/BUILD.gn
+++ b/third_party/hyphenation-patterns/BUILD.gn
@@ -47,3 +47,14 @@
   output = "$root_build_dir/hyphens-data.zip"
   base_dir = "hyb"
 }
+
+copy("test_data") {
+  testonly = true
+  sources = [
+    # Dictionaries used in unit tests and web_tests.
+    "hyb/hyph-de-1996.hyb",
+    "hyb/hyph-en-gb.hyb",
+    "hyb/hyph-en-us.hyb",
+  ]
+  outputs = [ "$root_gen_dir/hyphen-data/{{source_file_part}}" ]
+}
diff --git a/third_party/win_build_output/midl/chrome/updater/app/server/win/arm64/updater_idl.h b/third_party/win_build_output/midl/chrome/updater/app/server/win/arm64/updater_idl.h
index 1964b23..1361835 100644
--- a/third_party/win_build_output/midl/chrome/updater/app/server/win/arm64/updater_idl.h
+++ b/third_party/win_build_output/midl/chrome/updater/app/server/win/arm64/updater_idl.h
@@ -1476,6 +1476,9 @@
     IUpdater : public IUnknown

     {

     public:

+        virtual HRESULT STDMETHODCALLTYPE GetVersion( 

+            /* [retval][out] */ BSTR *version) = 0;

+        

         virtual HRESULT STDMETHODCALLTYPE CheckForUpdate( 

             /* [string][in] */ const WCHAR *app_id) = 0;

         

@@ -1514,6 +1517,10 @@
         ULONG ( STDMETHODCALLTYPE *Release )( 

             IUpdater * This);

         

+        HRESULT ( STDMETHODCALLTYPE *GetVersion )( 

+            IUpdater * This,

+            /* [retval][out] */ BSTR *version);

+        

         HRESULT ( STDMETHODCALLTYPE *CheckForUpdate )( 

             IUpdater * This,

             /* [string][in] */ const WCHAR *app_id);

@@ -1558,6 +1565,9 @@
     ( (This)->lpVtbl -> Release(This) ) 

 

 

+#define IUpdater_GetVersion(This,version)	\

+    ( (This)->lpVtbl -> GetVersion(This,version) ) 

+

 #define IUpdater_CheckForUpdate(This,app_id)	\

     ( (This)->lpVtbl -> CheckForUpdate(This,app_id) ) 

 

diff --git a/third_party/win_build_output/midl/chrome/updater/app/server/win/arm64/updater_idl.tlb b/third_party/win_build_output/midl/chrome/updater/app/server/win/arm64/updater_idl.tlb
index 20d46c0..78fd25a7 100644
--- a/third_party/win_build_output/midl/chrome/updater/app/server/win/arm64/updater_idl.tlb
+++ b/third_party/win_build_output/midl/chrome/updater/app/server/win/arm64/updater_idl.tlb
Binary files differ
diff --git a/third_party/win_build_output/midl/chrome/updater/app/server/win/arm64/updater_idl_p.c b/third_party/win_build_output/midl/chrome/updater/app/server/win/arm64/updater_idl_p.c
index 14ca36c..c9d9c348 100644
--- a/third_party/win_build_output/midl/chrome/updater/app/server/win/arm64/updater_idl_p.c
+++ b/third_party/win_build_output/midl/chrome/updater/app/server/win/arm64/updater_idl_p.c
@@ -47,7 +47,7 @@
 #include "updater_idl.h"

 

 #define TYPE_FORMAT_STRING_SIZE   1091                              

-#define PROC_FORMAT_STRING_SIZE   2421                              

+#define PROC_FORMAT_STRING_SIZE   2463                              

 #define EXPR_FORMAT_STRING_SIZE   1                                 

 #define TRANSMIT_AS_TABLE_SIZE    0            

 #define WIRE_MARSHAL_TABLE_SIZE   2            

@@ -1997,7 +1997,7 @@
 /* 2132 */	0x8,		/* FC_LONG */

 			0x0,		/* 0 */

 

-	/* Procedure CheckForUpdate */

+	/* Procedure GetVersion */

 

 /* 2134 */	0x33,		/* FC_AUTO_HANDLE */

 			0x6c,		/* Old Flags:  object, Oi2 */

@@ -2006,11 +2006,11 @@
 /* 2142 */	NdrFcShort( 0x18 ),	/* ARM64 Stack size/offset = 24 */

 /* 2144 */	NdrFcShort( 0x0 ),	/* 0 */

 /* 2146 */	NdrFcShort( 0x8 ),	/* 8 */

-/* 2148 */	0x46,		/* Oi2 Flags:  clt must size, has return, has ext, */

+/* 2148 */	0x45,		/* Oi2 Flags:  srv must size, has return, has ext, */

 			0x2,		/* 2 */

 /* 2150 */	0xe,		/* 14 */

-			0x1,		/* Ext Flags:  new corr desc, */

-/* 2152 */	NdrFcShort( 0x0 ),	/* 0 */

+			0x3,		/* Ext Flags:  new corr desc, clt corr check, */

+/* 2152 */	NdrFcShort( 0x1 ),	/* 1 */

 /* 2154 */	NdrFcShort( 0x0 ),	/* 0 */

 /* 2156 */	NdrFcShort( 0x0 ),	/* 0 */

 /* 2158 */	NdrFcShort( 0x2 ),	/* 2 */

@@ -2019,11 +2019,11 @@
 /* 2162 */	0x81,		/* 129 */

 			0x0,		/* 0 */

 

-	/* Parameter app_id */

+	/* Parameter version */

 

-/* 2164 */	NdrFcShort( 0x10b ),	/* Flags:  must size, must free, in, simple ref, */

+/* 2164 */	NdrFcShort( 0x2113 ),	/* Flags:  must size, must free, out, simple ref, srv alloc size=8 */

 /* 2166 */	NdrFcShort( 0x8 ),	/* ARM64 Stack size/offset = 8 */

-/* 2168 */	NdrFcShort( 0x42e ),	/* Type Offset=1070 */

+/* 2168 */	NdrFcShort( 0x24 ),	/* Type Offset=36 */

 

 	/* Return value */

 

@@ -2032,151 +2032,151 @@
 /* 2174 */	0x8,		/* FC_LONG */

 			0x0,		/* 0 */

 

-	/* Procedure Register */

+	/* Procedure CheckForUpdate */

 

 /* 2176 */	0x33,		/* FC_AUTO_HANDLE */

 			0x6c,		/* Old Flags:  object, Oi2 */

 /* 2178 */	NdrFcLong( 0x0 ),	/* 0 */

 /* 2182 */	NdrFcShort( 0x4 ),	/* 4 */

-/* 2184 */	NdrFcShort( 0x38 ),	/* ARM64 Stack size/offset = 56 */

+/* 2184 */	NdrFcShort( 0x18 ),	/* ARM64 Stack size/offset = 24 */

 /* 2186 */	NdrFcShort( 0x0 ),	/* 0 */

 /* 2188 */	NdrFcShort( 0x8 ),	/* 8 */

 /* 2190 */	0x46,		/* Oi2 Flags:  clt must size, has return, has ext, */

-			0x6,		/* 6 */

-/* 2192 */	0x12,		/* 18 */

+			0x2,		/* 2 */

+/* 2192 */	0xe,		/* 14 */

 			0x1,		/* Ext Flags:  new corr desc, */

 /* 2194 */	NdrFcShort( 0x0 ),	/* 0 */

 /* 2196 */	NdrFcShort( 0x0 ),	/* 0 */

 /* 2198 */	NdrFcShort( 0x0 ),	/* 0 */

-/* 2200 */	NdrFcShort( 0x6 ),	/* 6 */

-/* 2202 */	0x6,		/* 6 */

+/* 2200 */	NdrFcShort( 0x2 ),	/* 2 */

+/* 2202 */	0x2,		/* 2 */

 			0x80,		/* 128 */

 /* 2204 */	0x81,		/* 129 */

-			0x82,		/* 130 */

-/* 2206 */	0x83,		/* 131 */

-			0x84,		/* 132 */

-/* 2208 */	0x85,		/* 133 */

 			0x0,		/* 0 */

 

 	/* Parameter app_id */

 

-/* 2210 */	NdrFcShort( 0x10b ),	/* Flags:  must size, must free, in, simple ref, */

-/* 2212 */	NdrFcShort( 0x8 ),	/* ARM64 Stack size/offset = 8 */

-/* 2214 */	NdrFcShort( 0x42e ),	/* Type Offset=1070 */

-

-	/* Parameter brand_code */

-

-/* 2216 */	NdrFcShort( 0x10b ),	/* Flags:  must size, must free, in, simple ref, */

-/* 2218 */	NdrFcShort( 0x10 ),	/* ARM64 Stack size/offset = 16 */

-/* 2220 */	NdrFcShort( 0x42e ),	/* Type Offset=1070 */

-

-	/* Parameter tag */

-

-/* 2222 */	NdrFcShort( 0x10b ),	/* Flags:  must size, must free, in, simple ref, */

-/* 2224 */	NdrFcShort( 0x18 ),	/* ARM64 Stack size/offset = 24 */

-/* 2226 */	NdrFcShort( 0x42e ),	/* Type Offset=1070 */

-

-	/* Parameter version */

-

-/* 2228 */	NdrFcShort( 0x10b ),	/* Flags:  must size, must free, in, simple ref, */

-/* 2230 */	NdrFcShort( 0x20 ),	/* ARM64 Stack size/offset = 32 */

-/* 2232 */	NdrFcShort( 0x42e ),	/* Type Offset=1070 */

-

-	/* Parameter existence_checker_path */

-

-/* 2234 */	NdrFcShort( 0x10b ),	/* Flags:  must size, must free, in, simple ref, */

-/* 2236 */	NdrFcShort( 0x28 ),	/* ARM64 Stack size/offset = 40 */

-/* 2238 */	NdrFcShort( 0x42e ),	/* Type Offset=1070 */

+/* 2206 */	NdrFcShort( 0x10b ),	/* Flags:  must size, must free, in, simple ref, */

+/* 2208 */	NdrFcShort( 0x8 ),	/* ARM64 Stack size/offset = 8 */

+/* 2210 */	NdrFcShort( 0x42e ),	/* Type Offset=1070 */

 

 	/* Return value */

 

-/* 2240 */	NdrFcShort( 0x70 ),	/* Flags:  out, return, base type, */

-/* 2242 */	NdrFcShort( 0x30 ),	/* ARM64 Stack size/offset = 48 */

-/* 2244 */	0x8,		/* FC_LONG */

+/* 2212 */	NdrFcShort( 0x70 ),	/* Flags:  out, return, base type, */

+/* 2214 */	NdrFcShort( 0x10 ),	/* ARM64 Stack size/offset = 16 */

+/* 2216 */	0x8,		/* FC_LONG */

+			0x0,		/* 0 */

+

+	/* Procedure Register */

+

+/* 2218 */	0x33,		/* FC_AUTO_HANDLE */

+			0x6c,		/* Old Flags:  object, Oi2 */

+/* 2220 */	NdrFcLong( 0x0 ),	/* 0 */

+/* 2224 */	NdrFcShort( 0x5 ),	/* 5 */

+/* 2226 */	NdrFcShort( 0x38 ),	/* ARM64 Stack size/offset = 56 */

+/* 2228 */	NdrFcShort( 0x0 ),	/* 0 */

+/* 2230 */	NdrFcShort( 0x8 ),	/* 8 */

+/* 2232 */	0x46,		/* Oi2 Flags:  clt must size, has return, has ext, */

+			0x6,		/* 6 */

+/* 2234 */	0x12,		/* 18 */

+			0x1,		/* Ext Flags:  new corr desc, */

+/* 2236 */	NdrFcShort( 0x0 ),	/* 0 */

+/* 2238 */	NdrFcShort( 0x0 ),	/* 0 */

+/* 2240 */	NdrFcShort( 0x0 ),	/* 0 */

+/* 2242 */	NdrFcShort( 0x6 ),	/* 6 */

+/* 2244 */	0x6,		/* 6 */

+			0x80,		/* 128 */

+/* 2246 */	0x81,		/* 129 */

+			0x82,		/* 130 */

+/* 2248 */	0x83,		/* 131 */

+			0x84,		/* 132 */

+/* 2250 */	0x85,		/* 133 */

+			0x0,		/* 0 */

+

+	/* Parameter app_id */

+

+/* 2252 */	NdrFcShort( 0x10b ),	/* Flags:  must size, must free, in, simple ref, */

+/* 2254 */	NdrFcShort( 0x8 ),	/* ARM64 Stack size/offset = 8 */

+/* 2256 */	NdrFcShort( 0x42e ),	/* Type Offset=1070 */

+

+	/* Parameter brand_code */

+

+/* 2258 */	NdrFcShort( 0x10b ),	/* Flags:  must size, must free, in, simple ref, */

+/* 2260 */	NdrFcShort( 0x10 ),	/* ARM64 Stack size/offset = 16 */

+/* 2262 */	NdrFcShort( 0x42e ),	/* Type Offset=1070 */

+

+	/* Parameter tag */

+

+/* 2264 */	NdrFcShort( 0x10b ),	/* Flags:  must size, must free, in, simple ref, */

+/* 2266 */	NdrFcShort( 0x18 ),	/* ARM64 Stack size/offset = 24 */

+/* 2268 */	NdrFcShort( 0x42e ),	/* Type Offset=1070 */

+

+	/* Parameter version */

+

+/* 2270 */	NdrFcShort( 0x10b ),	/* Flags:  must size, must free, in, simple ref, */

+/* 2272 */	NdrFcShort( 0x20 ),	/* ARM64 Stack size/offset = 32 */

+/* 2274 */	NdrFcShort( 0x42e ),	/* Type Offset=1070 */

+

+	/* Parameter existence_checker_path */

+

+/* 2276 */	NdrFcShort( 0x10b ),	/* Flags:  must size, must free, in, simple ref, */

+/* 2278 */	NdrFcShort( 0x28 ),	/* ARM64 Stack size/offset = 40 */

+/* 2280 */	NdrFcShort( 0x42e ),	/* Type Offset=1070 */

+

+	/* Return value */

+

+/* 2282 */	NdrFcShort( 0x70 ),	/* Flags:  out, return, base type, */

+/* 2284 */	NdrFcShort( 0x30 ),	/* ARM64 Stack size/offset = 48 */

+/* 2286 */	0x8,		/* FC_LONG */

 			0x0,		/* 0 */

 

 	/* Procedure Update */

 

-/* 2246 */	0x33,		/* FC_AUTO_HANDLE */

+/* 2288 */	0x33,		/* FC_AUTO_HANDLE */

 			0x6c,		/* Old Flags:  object, Oi2 */

-/* 2248 */	NdrFcLong( 0x0 ),	/* 0 */

-/* 2252 */	NdrFcShort( 0x5 ),	/* 5 */

-/* 2254 */	NdrFcShort( 0x20 ),	/* ARM64 Stack size/offset = 32 */

-/* 2256 */	NdrFcShort( 0x0 ),	/* 0 */

-/* 2258 */	NdrFcShort( 0x8 ),	/* 8 */

-/* 2260 */	0x46,		/* Oi2 Flags:  clt must size, has return, has ext, */

+/* 2290 */	NdrFcLong( 0x0 ),	/* 0 */

+/* 2294 */	NdrFcShort( 0x6 ),	/* 6 */

+/* 2296 */	NdrFcShort( 0x20 ),	/* ARM64 Stack size/offset = 32 */

+/* 2298 */	NdrFcShort( 0x0 ),	/* 0 */

+/* 2300 */	NdrFcShort( 0x8 ),	/* 8 */

+/* 2302 */	0x46,		/* Oi2 Flags:  clt must size, has return, has ext, */

 			0x3,		/* 3 */

-/* 2262 */	0xe,		/* 14 */

+/* 2304 */	0xe,		/* 14 */

 			0x1,		/* Ext Flags:  new corr desc, */

-/* 2264 */	NdrFcShort( 0x0 ),	/* 0 */

-/* 2266 */	NdrFcShort( 0x0 ),	/* 0 */

-/* 2268 */	NdrFcShort( 0x0 ),	/* 0 */

-/* 2270 */	NdrFcShort( 0x3 ),	/* 3 */

-/* 2272 */	0x3,		/* 3 */

+/* 2306 */	NdrFcShort( 0x0 ),	/* 0 */

+/* 2308 */	NdrFcShort( 0x0 ),	/* 0 */

+/* 2310 */	NdrFcShort( 0x0 ),	/* 0 */

+/* 2312 */	NdrFcShort( 0x3 ),	/* 3 */

+/* 2314 */	0x3,		/* 3 */

 			0x80,		/* 128 */

-/* 2274 */	0x81,		/* 129 */

+/* 2316 */	0x81,		/* 129 */

 			0x82,		/* 130 */

 

 	/* Parameter app_id */

 

-/* 2276 */	NdrFcShort( 0x10b ),	/* Flags:  must size, must free, in, simple ref, */

-/* 2278 */	NdrFcShort( 0x8 ),	/* ARM64 Stack size/offset = 8 */

-/* 2280 */	NdrFcShort( 0x42e ),	/* Type Offset=1070 */

-

-	/* Parameter observer */

-

-/* 2282 */	NdrFcShort( 0xb ),	/* Flags:  must size, must free, in, */

-/* 2284 */	NdrFcShort( 0x10 ),	/* ARM64 Stack size/offset = 16 */

-/* 2286 */	NdrFcShort( 0x430 ),	/* Type Offset=1072 */

-

-	/* Return value */

-

-/* 2288 */	NdrFcShort( 0x70 ),	/* Flags:  out, return, base type, */

-/* 2290 */	NdrFcShort( 0x18 ),	/* ARM64 Stack size/offset = 24 */

-/* 2292 */	0x8,		/* FC_LONG */

-			0x0,		/* 0 */

-

-	/* Procedure UpdateAll */

-

-/* 2294 */	0x33,		/* FC_AUTO_HANDLE */

-			0x6c,		/* Old Flags:  object, Oi2 */

-/* 2296 */	NdrFcLong( 0x0 ),	/* 0 */

-/* 2300 */	NdrFcShort( 0x6 ),	/* 6 */

-/* 2302 */	NdrFcShort( 0x18 ),	/* ARM64 Stack size/offset = 24 */

-/* 2304 */	NdrFcShort( 0x0 ),	/* 0 */

-/* 2306 */	NdrFcShort( 0x8 ),	/* 8 */

-/* 2308 */	0x46,		/* Oi2 Flags:  clt must size, has return, has ext, */

-			0x2,		/* 2 */

-/* 2310 */	0xe,		/* 14 */

-			0x1,		/* Ext Flags:  new corr desc, */

-/* 2312 */	NdrFcShort( 0x0 ),	/* 0 */

-/* 2314 */	NdrFcShort( 0x0 ),	/* 0 */

-/* 2316 */	NdrFcShort( 0x0 ),	/* 0 */

-/* 2318 */	NdrFcShort( 0x2 ),	/* 2 */

-/* 2320 */	0x2,		/* 2 */

-			0x80,		/* 128 */

-/* 2322 */	0x81,		/* 129 */

-			0x0,		/* 0 */

+/* 2318 */	NdrFcShort( 0x10b ),	/* Flags:  must size, must free, in, simple ref, */

+/* 2320 */	NdrFcShort( 0x8 ),	/* ARM64 Stack size/offset = 8 */

+/* 2322 */	NdrFcShort( 0x42e ),	/* Type Offset=1070 */

 

 	/* Parameter observer */

 

 /* 2324 */	NdrFcShort( 0xb ),	/* Flags:  must size, must free, in, */

-/* 2326 */	NdrFcShort( 0x8 ),	/* ARM64 Stack size/offset = 8 */

+/* 2326 */	NdrFcShort( 0x10 ),	/* ARM64 Stack size/offset = 16 */

 /* 2328 */	NdrFcShort( 0x430 ),	/* Type Offset=1072 */

 

 	/* Return value */

 

 /* 2330 */	NdrFcShort( 0x70 ),	/* Flags:  out, return, base type, */

-/* 2332 */	NdrFcShort( 0x10 ),	/* ARM64 Stack size/offset = 16 */

+/* 2332 */	NdrFcShort( 0x18 ),	/* ARM64 Stack size/offset = 24 */

 /* 2334 */	0x8,		/* FC_LONG */

 			0x0,		/* 0 */

 

-	/* Procedure Run */

+	/* Procedure UpdateAll */

 

 /* 2336 */	0x33,		/* FC_AUTO_HANDLE */

 			0x6c,		/* Old Flags:  object, Oi2 */

 /* 2338 */	NdrFcLong( 0x0 ),	/* 0 */

-/* 2342 */	NdrFcShort( 0x3 ),	/* 3 */

+/* 2342 */	NdrFcShort( 0x7 ),	/* 7 */

 /* 2344 */	NdrFcShort( 0x18 ),	/* ARM64 Stack size/offset = 24 */

 /* 2346 */	NdrFcShort( 0x0 ),	/* 0 */

 /* 2348 */	NdrFcShort( 0x8 ),	/* 8 */

@@ -2206,12 +2206,12 @@
 /* 2376 */	0x8,		/* FC_LONG */

 			0x0,		/* 0 */

 

-	/* Procedure InitializeUpdateService */

+	/* Procedure Run */

 

 /* 2378 */	0x33,		/* FC_AUTO_HANDLE */

 			0x6c,		/* Old Flags:  object, Oi2 */

 /* 2380 */	NdrFcLong( 0x0 ),	/* 0 */

-/* 2384 */	NdrFcShort( 0x4 ),	/* 4 */

+/* 2384 */	NdrFcShort( 0x3 ),	/* 3 */

 /* 2386 */	NdrFcShort( 0x18 ),	/* ARM64 Stack size/offset = 24 */

 /* 2388 */	NdrFcShort( 0x0 ),	/* 0 */

 /* 2390 */	NdrFcShort( 0x8 ),	/* 8 */

@@ -2241,6 +2241,41 @@
 /* 2418 */	0x8,		/* FC_LONG */

 			0x0,		/* 0 */

 

+	/* Procedure InitializeUpdateService */

+

+/* 2420 */	0x33,		/* FC_AUTO_HANDLE */

+			0x6c,		/* Old Flags:  object, Oi2 */

+/* 2422 */	NdrFcLong( 0x0 ),	/* 0 */

+/* 2426 */	NdrFcShort( 0x4 ),	/* 4 */

+/* 2428 */	NdrFcShort( 0x18 ),	/* ARM64 Stack size/offset = 24 */

+/* 2430 */	NdrFcShort( 0x0 ),	/* 0 */

+/* 2432 */	NdrFcShort( 0x8 ),	/* 8 */

+/* 2434 */	0x46,		/* Oi2 Flags:  clt must size, has return, has ext, */

+			0x2,		/* 2 */

+/* 2436 */	0xe,		/* 14 */

+			0x1,		/* Ext Flags:  new corr desc, */

+/* 2438 */	NdrFcShort( 0x0 ),	/* 0 */

+/* 2440 */	NdrFcShort( 0x0 ),	/* 0 */

+/* 2442 */	NdrFcShort( 0x0 ),	/* 0 */

+/* 2444 */	NdrFcShort( 0x2 ),	/* 2 */

+/* 2446 */	0x2,		/* 2 */

+			0x80,		/* 128 */

+/* 2448 */	0x81,		/* 129 */

+			0x0,		/* 0 */

+

+	/* Parameter observer */

+

+/* 2450 */	NdrFcShort( 0xb ),	/* Flags:  must size, must free, in, */

+/* 2452 */	NdrFcShort( 0x8 ),	/* ARM64 Stack size/offset = 8 */

+/* 2454 */	NdrFcShort( 0x430 ),	/* Type Offset=1072 */

+

+	/* Return value */

+

+/* 2456 */	NdrFcShort( 0x70 ),	/* Flags:  out, return, base type, */

+/* 2458 */	NdrFcShort( 0x10 ),	/* ARM64 Stack size/offset = 16 */

+/* 2460 */	0x8,		/* FC_LONG */

+			0x0,		/* 0 */

+

 			0x0

         }

     };

@@ -3568,8 +3603,9 @@
     {

     2134,

     2176,

-    2246,

-    2294

+    2218,

+    2288,

+    2336

     };

 

 static const MIDL_STUBLESS_PROXY_INFO IUpdater_ProxyInfo =

@@ -3593,13 +3629,14 @@
     0,

     0,

     0};

-CINTERFACE_PROXY_VTABLE(7) _IUpdaterProxyVtbl = 

+CINTERFACE_PROXY_VTABLE(8) _IUpdaterProxyVtbl = 

 {

     &IUpdater_ProxyInfo,

     &IID_IUpdater,

     IUnknown_QueryInterface_Proxy,

     IUnknown_AddRef_Proxy,

     IUnknown_Release_Proxy ,

+    (void *) (INT_PTR) -1 /* IUpdater::GetVersion */ ,

     (void *) (INT_PTR) -1 /* IUpdater::CheckForUpdate */ ,

     (void *) (INT_PTR) -1 /* IUpdater::Register */ ,

     (void *) (INT_PTR) -1 /* IUpdater::Update */ ,

@@ -3610,7 +3647,7 @@
 {

     &IID_IUpdater,

     &IUpdater_ServerInfo,

-    7,

+    8,

     0, /* pure interpreted */

     CStdStubBuffer_METHODS

 };

@@ -3622,8 +3659,8 @@
 #pragma code_seg(".orpc")

 static const unsigned short IUpdaterControl_FormatStringOffsetTable[] =

     {

-    2336,

-    2378

+    2378,

+    2420

     };

 

 static const MIDL_STUBLESS_PROXY_INFO IUpdaterControl_ProxyInfo =

diff --git a/third_party/win_build_output/midl/chrome/updater/app/server/win/x64/updater_idl.h b/third_party/win_build_output/midl/chrome/updater/app/server/win/x64/updater_idl.h
index bee4d0e..169c9b8 100644
--- a/third_party/win_build_output/midl/chrome/updater/app/server/win/x64/updater_idl.h
+++ b/third_party/win_build_output/midl/chrome/updater/app/server/win/x64/updater_idl.h
@@ -1476,6 +1476,9 @@
     IUpdater : public IUnknown

     {

     public:

+        virtual HRESULT STDMETHODCALLTYPE GetVersion( 

+            /* [retval][out] */ BSTR *version) = 0;

+        

         virtual HRESULT STDMETHODCALLTYPE CheckForUpdate( 

             /* [string][in] */ const WCHAR *app_id) = 0;

         

@@ -1514,6 +1517,10 @@
         ULONG ( STDMETHODCALLTYPE *Release )( 

             IUpdater * This);

         

+        HRESULT ( STDMETHODCALLTYPE *GetVersion )( 

+            IUpdater * This,

+            /* [retval][out] */ BSTR *version);

+        

         HRESULT ( STDMETHODCALLTYPE *CheckForUpdate )( 

             IUpdater * This,

             /* [string][in] */ const WCHAR *app_id);

@@ -1558,6 +1565,9 @@
     ( (This)->lpVtbl -> Release(This) ) 

 

 

+#define IUpdater_GetVersion(This,version)	\

+    ( (This)->lpVtbl -> GetVersion(This,version) ) 

+

 #define IUpdater_CheckForUpdate(This,app_id)	\

     ( (This)->lpVtbl -> CheckForUpdate(This,app_id) ) 

 

diff --git a/third_party/win_build_output/midl/chrome/updater/app/server/win/x64/updater_idl.tlb b/third_party/win_build_output/midl/chrome/updater/app/server/win/x64/updater_idl.tlb
index 20d46c0..78fd25a7 100644
--- a/third_party/win_build_output/midl/chrome/updater/app/server/win/x64/updater_idl.tlb
+++ b/third_party/win_build_output/midl/chrome/updater/app/server/win/x64/updater_idl.tlb
Binary files differ
diff --git a/third_party/win_build_output/midl/chrome/updater/app/server/win/x64/updater_idl_p.c b/third_party/win_build_output/midl/chrome/updater/app/server/win/x64/updater_idl_p.c
index 8640aa5..82842d3 100644
--- a/third_party/win_build_output/midl/chrome/updater/app/server/win/x64/updater_idl_p.c
+++ b/third_party/win_build_output/midl/chrome/updater/app/server/win/x64/updater_idl_p.c
@@ -47,7 +47,7 @@
 #include "updater_idl.h"

 

 #define TYPE_FORMAT_STRING_SIZE   1091                              

-#define PROC_FORMAT_STRING_SIZE   2205                              

+#define PROC_FORMAT_STRING_SIZE   2243                              

 #define EXPR_FORMAT_STRING_SIZE   1                                 

 #define TRANSMIT_AS_TABLE_SIZE    0            

 #define WIRE_MARSHAL_TABLE_SIZE   2            

@@ -1809,7 +1809,7 @@
 /* 1944 */	0x8,		/* FC_LONG */

 			0x0,		/* 0 */

 

-	/* Procedure CheckForUpdate */

+	/* Procedure GetVersion */

 

 /* 1946 */	0x33,		/* FC_AUTO_HANDLE */

 			0x6c,		/* Old Flags:  object, Oi2 */

@@ -1818,20 +1818,20 @@
 /* 1954 */	NdrFcShort( 0x18 ),	/* X64 Stack size/offset = 24 */

 /* 1956 */	NdrFcShort( 0x0 ),	/* 0 */

 /* 1958 */	NdrFcShort( 0x8 ),	/* 8 */

-/* 1960 */	0x46,		/* Oi2 Flags:  clt must size, has return, has ext, */

+/* 1960 */	0x45,		/* Oi2 Flags:  srv must size, has return, has ext, */

 			0x2,		/* 2 */

 /* 1962 */	0xa,		/* 10 */

-			0x1,		/* Ext Flags:  new corr desc, */

-/* 1964 */	NdrFcShort( 0x0 ),	/* 0 */

+			0x3,		/* Ext Flags:  new corr desc, clt corr check, */

+/* 1964 */	NdrFcShort( 0x1 ),	/* 1 */

 /* 1966 */	NdrFcShort( 0x0 ),	/* 0 */

 /* 1968 */	NdrFcShort( 0x0 ),	/* 0 */

 /* 1970 */	NdrFcShort( 0x0 ),	/* 0 */

 

-	/* Parameter app_id */

+	/* Parameter version */

 

-/* 1972 */	NdrFcShort( 0x10b ),	/* Flags:  must size, must free, in, simple ref, */

+/* 1972 */	NdrFcShort( 0x2113 ),	/* Flags:  must size, must free, out, simple ref, srv alloc size=8 */

 /* 1974 */	NdrFcShort( 0x8 ),	/* X64 Stack size/offset = 8 */

-/* 1976 */	NdrFcShort( 0x42e ),	/* Type Offset=1070 */

+/* 1976 */	NdrFcShort( 0x24 ),	/* Type Offset=36 */

 

 	/* Return value */

 

@@ -1840,17 +1840,17 @@
 /* 1982 */	0x8,		/* FC_LONG */

 			0x0,		/* 0 */

 

-	/* Procedure Register */

+	/* Procedure CheckForUpdate */

 

 /* 1984 */	0x33,		/* FC_AUTO_HANDLE */

 			0x6c,		/* Old Flags:  object, Oi2 */

 /* 1986 */	NdrFcLong( 0x0 ),	/* 0 */

 /* 1990 */	NdrFcShort( 0x4 ),	/* 4 */

-/* 1992 */	NdrFcShort( 0x38 ),	/* X64 Stack size/offset = 56 */

+/* 1992 */	NdrFcShort( 0x18 ),	/* X64 Stack size/offset = 24 */

 /* 1994 */	NdrFcShort( 0x0 ),	/* 0 */

 /* 1996 */	NdrFcShort( 0x8 ),	/* 8 */

 /* 1998 */	0x46,		/* Oi2 Flags:  clt must size, has return, has ext, */

-			0x6,		/* 6 */

+			0x2,		/* 2 */

 /* 2000 */	0xa,		/* 10 */

 			0x1,		/* Ext Flags:  new corr desc, */

 /* 2002 */	NdrFcShort( 0x0 ),	/* 0 */

@@ -1864,111 +1864,111 @@
 /* 2012 */	NdrFcShort( 0x8 ),	/* X64 Stack size/offset = 8 */

 /* 2014 */	NdrFcShort( 0x42e ),	/* Type Offset=1070 */

 

+	/* Return value */

+

+/* 2016 */	NdrFcShort( 0x70 ),	/* Flags:  out, return, base type, */

+/* 2018 */	NdrFcShort( 0x10 ),	/* X64 Stack size/offset = 16 */

+/* 2020 */	0x8,		/* FC_LONG */

+			0x0,		/* 0 */

+

+	/* Procedure Register */

+

+/* 2022 */	0x33,		/* FC_AUTO_HANDLE */

+			0x6c,		/* Old Flags:  object, Oi2 */

+/* 2024 */	NdrFcLong( 0x0 ),	/* 0 */

+/* 2028 */	NdrFcShort( 0x5 ),	/* 5 */

+/* 2030 */	NdrFcShort( 0x38 ),	/* X64 Stack size/offset = 56 */

+/* 2032 */	NdrFcShort( 0x0 ),	/* 0 */

+/* 2034 */	NdrFcShort( 0x8 ),	/* 8 */

+/* 2036 */	0x46,		/* Oi2 Flags:  clt must size, has return, has ext, */

+			0x6,		/* 6 */

+/* 2038 */	0xa,		/* 10 */

+			0x1,		/* Ext Flags:  new corr desc, */

+/* 2040 */	NdrFcShort( 0x0 ),	/* 0 */

+/* 2042 */	NdrFcShort( 0x0 ),	/* 0 */

+/* 2044 */	NdrFcShort( 0x0 ),	/* 0 */

+/* 2046 */	NdrFcShort( 0x0 ),	/* 0 */

+

+	/* Parameter app_id */

+

+/* 2048 */	NdrFcShort( 0x10b ),	/* Flags:  must size, must free, in, simple ref, */

+/* 2050 */	NdrFcShort( 0x8 ),	/* X64 Stack size/offset = 8 */

+/* 2052 */	NdrFcShort( 0x42e ),	/* Type Offset=1070 */

+

 	/* Parameter brand_code */

 

-/* 2016 */	NdrFcShort( 0x10b ),	/* Flags:  must size, must free, in, simple ref, */

-/* 2018 */	NdrFcShort( 0x10 ),	/* X64 Stack size/offset = 16 */

-/* 2020 */	NdrFcShort( 0x42e ),	/* Type Offset=1070 */

+/* 2054 */	NdrFcShort( 0x10b ),	/* Flags:  must size, must free, in, simple ref, */

+/* 2056 */	NdrFcShort( 0x10 ),	/* X64 Stack size/offset = 16 */

+/* 2058 */	NdrFcShort( 0x42e ),	/* Type Offset=1070 */

 

 	/* Parameter tag */

 

-/* 2022 */	NdrFcShort( 0x10b ),	/* Flags:  must size, must free, in, simple ref, */

-/* 2024 */	NdrFcShort( 0x18 ),	/* X64 Stack size/offset = 24 */

-/* 2026 */	NdrFcShort( 0x42e ),	/* Type Offset=1070 */

+/* 2060 */	NdrFcShort( 0x10b ),	/* Flags:  must size, must free, in, simple ref, */

+/* 2062 */	NdrFcShort( 0x18 ),	/* X64 Stack size/offset = 24 */

+/* 2064 */	NdrFcShort( 0x42e ),	/* Type Offset=1070 */

 

 	/* Parameter version */

 

-/* 2028 */	NdrFcShort( 0x10b ),	/* Flags:  must size, must free, in, simple ref, */

-/* 2030 */	NdrFcShort( 0x20 ),	/* X64 Stack size/offset = 32 */

-/* 2032 */	NdrFcShort( 0x42e ),	/* Type Offset=1070 */

+/* 2066 */	NdrFcShort( 0x10b ),	/* Flags:  must size, must free, in, simple ref, */

+/* 2068 */	NdrFcShort( 0x20 ),	/* X64 Stack size/offset = 32 */

+/* 2070 */	NdrFcShort( 0x42e ),	/* Type Offset=1070 */

 

 	/* Parameter existence_checker_path */

 

-/* 2034 */	NdrFcShort( 0x10b ),	/* Flags:  must size, must free, in, simple ref, */

-/* 2036 */	NdrFcShort( 0x28 ),	/* X64 Stack size/offset = 40 */

-/* 2038 */	NdrFcShort( 0x42e ),	/* Type Offset=1070 */

+/* 2072 */	NdrFcShort( 0x10b ),	/* Flags:  must size, must free, in, simple ref, */

+/* 2074 */	NdrFcShort( 0x28 ),	/* X64 Stack size/offset = 40 */

+/* 2076 */	NdrFcShort( 0x42e ),	/* Type Offset=1070 */

 

 	/* Return value */

 

-/* 2040 */	NdrFcShort( 0x70 ),	/* Flags:  out, return, base type, */

-/* 2042 */	NdrFcShort( 0x30 ),	/* X64 Stack size/offset = 48 */

-/* 2044 */	0x8,		/* FC_LONG */

+/* 2078 */	NdrFcShort( 0x70 ),	/* Flags:  out, return, base type, */

+/* 2080 */	NdrFcShort( 0x30 ),	/* X64 Stack size/offset = 48 */

+/* 2082 */	0x8,		/* FC_LONG */

 			0x0,		/* 0 */

 

 	/* Procedure Update */

 

-/* 2046 */	0x33,		/* FC_AUTO_HANDLE */

+/* 2084 */	0x33,		/* FC_AUTO_HANDLE */

 			0x6c,		/* Old Flags:  object, Oi2 */

-/* 2048 */	NdrFcLong( 0x0 ),	/* 0 */

-/* 2052 */	NdrFcShort( 0x5 ),	/* 5 */

-/* 2054 */	NdrFcShort( 0x20 ),	/* X64 Stack size/offset = 32 */

-/* 2056 */	NdrFcShort( 0x0 ),	/* 0 */

-/* 2058 */	NdrFcShort( 0x8 ),	/* 8 */

-/* 2060 */	0x46,		/* Oi2 Flags:  clt must size, has return, has ext, */

+/* 2086 */	NdrFcLong( 0x0 ),	/* 0 */

+/* 2090 */	NdrFcShort( 0x6 ),	/* 6 */

+/* 2092 */	NdrFcShort( 0x20 ),	/* X64 Stack size/offset = 32 */

+/* 2094 */	NdrFcShort( 0x0 ),	/* 0 */

+/* 2096 */	NdrFcShort( 0x8 ),	/* 8 */

+/* 2098 */	0x46,		/* Oi2 Flags:  clt must size, has return, has ext, */

 			0x3,		/* 3 */

-/* 2062 */	0xa,		/* 10 */

+/* 2100 */	0xa,		/* 10 */

 			0x1,		/* Ext Flags:  new corr desc, */

-/* 2064 */	NdrFcShort( 0x0 ),	/* 0 */

-/* 2066 */	NdrFcShort( 0x0 ),	/* 0 */

-/* 2068 */	NdrFcShort( 0x0 ),	/* 0 */

-/* 2070 */	NdrFcShort( 0x0 ),	/* 0 */

+/* 2102 */	NdrFcShort( 0x0 ),	/* 0 */

+/* 2104 */	NdrFcShort( 0x0 ),	/* 0 */

+/* 2106 */	NdrFcShort( 0x0 ),	/* 0 */

+/* 2108 */	NdrFcShort( 0x0 ),	/* 0 */

 

 	/* Parameter app_id */

 

-/* 2072 */	NdrFcShort( 0x10b ),	/* Flags:  must size, must free, in, simple ref, */

-/* 2074 */	NdrFcShort( 0x8 ),	/* X64 Stack size/offset = 8 */

-/* 2076 */	NdrFcShort( 0x42e ),	/* Type Offset=1070 */

-

-	/* Parameter observer */

-

-/* 2078 */	NdrFcShort( 0xb ),	/* Flags:  must size, must free, in, */

-/* 2080 */	NdrFcShort( 0x10 ),	/* X64 Stack size/offset = 16 */

-/* 2082 */	NdrFcShort( 0x430 ),	/* Type Offset=1072 */

-

-	/* Return value */

-

-/* 2084 */	NdrFcShort( 0x70 ),	/* Flags:  out, return, base type, */

-/* 2086 */	NdrFcShort( 0x18 ),	/* X64 Stack size/offset = 24 */

-/* 2088 */	0x8,		/* FC_LONG */

-			0x0,		/* 0 */

-

-	/* Procedure UpdateAll */

-

-/* 2090 */	0x33,		/* FC_AUTO_HANDLE */

-			0x6c,		/* Old Flags:  object, Oi2 */

-/* 2092 */	NdrFcLong( 0x0 ),	/* 0 */

-/* 2096 */	NdrFcShort( 0x6 ),	/* 6 */

-/* 2098 */	NdrFcShort( 0x18 ),	/* X64 Stack size/offset = 24 */

-/* 2100 */	NdrFcShort( 0x0 ),	/* 0 */

-/* 2102 */	NdrFcShort( 0x8 ),	/* 8 */

-/* 2104 */	0x46,		/* Oi2 Flags:  clt must size, has return, has ext, */

-			0x2,		/* 2 */

-/* 2106 */	0xa,		/* 10 */

-			0x1,		/* Ext Flags:  new corr desc, */

-/* 2108 */	NdrFcShort( 0x0 ),	/* 0 */

-/* 2110 */	NdrFcShort( 0x0 ),	/* 0 */

-/* 2112 */	NdrFcShort( 0x0 ),	/* 0 */

-/* 2114 */	NdrFcShort( 0x0 ),	/* 0 */

+/* 2110 */	NdrFcShort( 0x10b ),	/* Flags:  must size, must free, in, simple ref, */

+/* 2112 */	NdrFcShort( 0x8 ),	/* X64 Stack size/offset = 8 */

+/* 2114 */	NdrFcShort( 0x42e ),	/* Type Offset=1070 */

 

 	/* Parameter observer */

 

 /* 2116 */	NdrFcShort( 0xb ),	/* Flags:  must size, must free, in, */

-/* 2118 */	NdrFcShort( 0x8 ),	/* X64 Stack size/offset = 8 */

+/* 2118 */	NdrFcShort( 0x10 ),	/* X64 Stack size/offset = 16 */

 /* 2120 */	NdrFcShort( 0x430 ),	/* Type Offset=1072 */

 

 	/* Return value */

 

 /* 2122 */	NdrFcShort( 0x70 ),	/* Flags:  out, return, base type, */

-/* 2124 */	NdrFcShort( 0x10 ),	/* X64 Stack size/offset = 16 */

+/* 2124 */	NdrFcShort( 0x18 ),	/* X64 Stack size/offset = 24 */

 /* 2126 */	0x8,		/* FC_LONG */

 			0x0,		/* 0 */

 

-	/* Procedure Run */

+	/* Procedure UpdateAll */

 

 /* 2128 */	0x33,		/* FC_AUTO_HANDLE */

 			0x6c,		/* Old Flags:  object, Oi2 */

 /* 2130 */	NdrFcLong( 0x0 ),	/* 0 */

-/* 2134 */	NdrFcShort( 0x3 ),	/* 3 */

+/* 2134 */	NdrFcShort( 0x7 ),	/* 7 */

 /* 2136 */	NdrFcShort( 0x18 ),	/* X64 Stack size/offset = 24 */

 /* 2138 */	NdrFcShort( 0x0 ),	/* 0 */

 /* 2140 */	NdrFcShort( 0x8 ),	/* 8 */

@@ -1994,12 +1994,12 @@
 /* 2164 */	0x8,		/* FC_LONG */

 			0x0,		/* 0 */

 

-	/* Procedure InitializeUpdateService */

+	/* Procedure Run */

 

 /* 2166 */	0x33,		/* FC_AUTO_HANDLE */

 			0x6c,		/* Old Flags:  object, Oi2 */

 /* 2168 */	NdrFcLong( 0x0 ),	/* 0 */

-/* 2172 */	NdrFcShort( 0x4 ),	/* 4 */

+/* 2172 */	NdrFcShort( 0x3 ),	/* 3 */

 /* 2174 */	NdrFcShort( 0x18 ),	/* X64 Stack size/offset = 24 */

 /* 2176 */	NdrFcShort( 0x0 ),	/* 0 */

 /* 2178 */	NdrFcShort( 0x8 ),	/* 8 */

@@ -2025,6 +2025,37 @@
 /* 2202 */	0x8,		/* FC_LONG */

 			0x0,		/* 0 */

 

+	/* Procedure InitializeUpdateService */

+

+/* 2204 */	0x33,		/* FC_AUTO_HANDLE */

+			0x6c,		/* Old Flags:  object, Oi2 */

+/* 2206 */	NdrFcLong( 0x0 ),	/* 0 */

+/* 2210 */	NdrFcShort( 0x4 ),	/* 4 */

+/* 2212 */	NdrFcShort( 0x18 ),	/* X64 Stack size/offset = 24 */

+/* 2214 */	NdrFcShort( 0x0 ),	/* 0 */

+/* 2216 */	NdrFcShort( 0x8 ),	/* 8 */

+/* 2218 */	0x46,		/* Oi2 Flags:  clt must size, has return, has ext, */

+			0x2,		/* 2 */

+/* 2220 */	0xa,		/* 10 */

+			0x1,		/* Ext Flags:  new corr desc, */

+/* 2222 */	NdrFcShort( 0x0 ),	/* 0 */

+/* 2224 */	NdrFcShort( 0x0 ),	/* 0 */

+/* 2226 */	NdrFcShort( 0x0 ),	/* 0 */

+/* 2228 */	NdrFcShort( 0x0 ),	/* 0 */

+

+	/* Parameter observer */

+

+/* 2230 */	NdrFcShort( 0xb ),	/* Flags:  must size, must free, in, */

+/* 2232 */	NdrFcShort( 0x8 ),	/* X64 Stack size/offset = 8 */

+/* 2234 */	NdrFcShort( 0x430 ),	/* Type Offset=1072 */

+

+	/* Return value */

+

+/* 2236 */	NdrFcShort( 0x70 ),	/* Flags:  out, return, base type, */

+/* 2238 */	NdrFcShort( 0x10 ),	/* X64 Stack size/offset = 16 */

+/* 2240 */	0x8,		/* FC_LONG */

+			0x0,		/* 0 */

+

 			0x0

         }

     };

@@ -3352,8 +3383,9 @@
     {

     1946,

     1984,

-    2046,

-    2090

+    2022,

+    2084,

+    2128

     };

 

 static const MIDL_STUBLESS_PROXY_INFO IUpdater_ProxyInfo =

@@ -3377,13 +3409,14 @@
     0,

     0,

     0};

-CINTERFACE_PROXY_VTABLE(7) _IUpdaterProxyVtbl = 

+CINTERFACE_PROXY_VTABLE(8) _IUpdaterProxyVtbl = 

 {

     &IUpdater_ProxyInfo,

     &IID_IUpdater,

     IUnknown_QueryInterface_Proxy,

     IUnknown_AddRef_Proxy,

     IUnknown_Release_Proxy ,

+    (void *) (INT_PTR) -1 /* IUpdater::GetVersion */ ,

     (void *) (INT_PTR) -1 /* IUpdater::CheckForUpdate */ ,

     (void *) (INT_PTR) -1 /* IUpdater::Register */ ,

     (void *) (INT_PTR) -1 /* IUpdater::Update */ ,

@@ -3394,7 +3427,7 @@
 {

     &IID_IUpdater,

     &IUpdater_ServerInfo,

-    7,

+    8,

     0, /* pure interpreted */

     CStdStubBuffer_METHODS

 };

@@ -3406,8 +3439,8 @@
 #pragma code_seg(".orpc")

 static const unsigned short IUpdaterControl_FormatStringOffsetTable[] =

     {

-    2128,

-    2166

+    2166,

+    2204

     };

 

 static const MIDL_STUBLESS_PROXY_INFO IUpdaterControl_ProxyInfo =

diff --git a/third_party/win_build_output/midl/chrome/updater/app/server/win/x86/updater_idl.h b/third_party/win_build_output/midl/chrome/updater/app/server/win/x86/updater_idl.h
index 395da29..d0c0451 100644
--- a/third_party/win_build_output/midl/chrome/updater/app/server/win/x86/updater_idl.h
+++ b/third_party/win_build_output/midl/chrome/updater/app/server/win/x86/updater_idl.h
@@ -1476,6 +1476,9 @@
     IUpdater : public IUnknown

     {

     public:

+        virtual HRESULT STDMETHODCALLTYPE GetVersion( 

+            /* [retval][out] */ BSTR *version) = 0;

+        

         virtual HRESULT STDMETHODCALLTYPE CheckForUpdate( 

             /* [string][in] */ const WCHAR *app_id) = 0;

         

@@ -1514,6 +1517,10 @@
         ULONG ( STDMETHODCALLTYPE *Release )( 

             IUpdater * This);

         

+        HRESULT ( STDMETHODCALLTYPE *GetVersion )( 

+            IUpdater * This,

+            /* [retval][out] */ BSTR *version);

+        

         HRESULT ( STDMETHODCALLTYPE *CheckForUpdate )( 

             IUpdater * This,

             /* [string][in] */ const WCHAR *app_id);

@@ -1558,6 +1565,9 @@
     ( (This)->lpVtbl -> Release(This) ) 

 

 

+#define IUpdater_GetVersion(This,version)	\

+    ( (This)->lpVtbl -> GetVersion(This,version) ) 

+

 #define IUpdater_CheckForUpdate(This,app_id)	\

     ( (This)->lpVtbl -> CheckForUpdate(This,app_id) ) 

 

diff --git a/third_party/win_build_output/midl/chrome/updater/app/server/win/x86/updater_idl.tlb b/third_party/win_build_output/midl/chrome/updater/app/server/win/x86/updater_idl.tlb
index 5ebdc81..496eab7a 100644
--- a/third_party/win_build_output/midl/chrome/updater/app/server/win/x86/updater_idl.tlb
+++ b/third_party/win_build_output/midl/chrome/updater/app/server/win/x86/updater_idl.tlb
Binary files differ
diff --git a/third_party/win_build_output/midl/chrome/updater/app/server/win/x86/updater_idl_p.c b/third_party/win_build_output/midl/chrome/updater/app/server/win/x86/updater_idl_p.c
index e0c74985..77aba80d 100644
--- a/third_party/win_build_output/midl/chrome/updater/app/server/win/x86/updater_idl_p.c
+++ b/third_party/win_build_output/midl/chrome/updater/app/server/win/x86/updater_idl_p.c
@@ -50,7 +50,7 @@
 #include "updater_idl.h"

 

 #define TYPE_FORMAT_STRING_SIZE   1141                              

-#define PROC_FORMAT_STRING_SIZE   2089                              

+#define PROC_FORMAT_STRING_SIZE   2125                              

 #define EXPR_FORMAT_STRING_SIZE   1                                 

 #define TRANSMIT_AS_TABLE_SIZE    0            

 #define WIRE_MARSHAL_TABLE_SIZE   2            

@@ -1768,7 +1768,7 @@
 /* 1840 */	0x8,		/* FC_LONG */

 			0x0,		/* 0 */

 

-	/* Procedure CheckForUpdate */

+	/* Procedure GetVersion */

 

 /* 1842 */	0x33,		/* FC_AUTO_HANDLE */

 			0x6c,		/* Old Flags:  object, Oi2 */

@@ -1777,19 +1777,19 @@
 /* 1850 */	NdrFcShort( 0xc ),	/* x86 Stack size/offset = 12 */

 /* 1852 */	NdrFcShort( 0x0 ),	/* 0 */

 /* 1854 */	NdrFcShort( 0x8 ),	/* 8 */

-/* 1856 */	0x46,		/* Oi2 Flags:  clt must size, has return, has ext, */

+/* 1856 */	0x45,		/* Oi2 Flags:  srv must size, has return, has ext, */

 			0x2,		/* 2 */

 /* 1858 */	0x8,		/* 8 */

-			0x1,		/* Ext Flags:  new corr desc, */

-/* 1860 */	NdrFcShort( 0x0 ),	/* 0 */

+			0x3,		/* Ext Flags:  new corr desc, clt corr check, */

+/* 1860 */	NdrFcShort( 0x1 ),	/* 1 */

 /* 1862 */	NdrFcShort( 0x0 ),	/* 0 */

 /* 1864 */	NdrFcShort( 0x0 ),	/* 0 */

 

-	/* Parameter app_id */

+	/* Parameter version */

 

-/* 1866 */	NdrFcShort( 0x10b ),	/* Flags:  must size, must free, in, simple ref, */

+/* 1866 */	NdrFcShort( 0x2113 ),	/* Flags:  must size, must free, out, simple ref, srv alloc size=8 */

 /* 1868 */	NdrFcShort( 0x4 ),	/* x86 Stack size/offset = 4 */

-/* 1870 */	NdrFcShort( 0x460 ),	/* Type Offset=1120 */

+/* 1870 */	NdrFcShort( 0x24 ),	/* Type Offset=36 */

 

 	/* Return value */

 

@@ -1798,17 +1798,17 @@
 /* 1876 */	0x8,		/* FC_LONG */

 			0x0,		/* 0 */

 

-	/* Procedure Register */

+	/* Procedure CheckForUpdate */

 

 /* 1878 */	0x33,		/* FC_AUTO_HANDLE */

 			0x6c,		/* Old Flags:  object, Oi2 */

 /* 1880 */	NdrFcLong( 0x0 ),	/* 0 */

 /* 1884 */	NdrFcShort( 0x4 ),	/* 4 */

-/* 1886 */	NdrFcShort( 0x1c ),	/* x86 Stack size/offset = 28 */

+/* 1886 */	NdrFcShort( 0xc ),	/* x86 Stack size/offset = 12 */

 /* 1888 */	NdrFcShort( 0x0 ),	/* 0 */

 /* 1890 */	NdrFcShort( 0x8 ),	/* 8 */

 /* 1892 */	0x46,		/* Oi2 Flags:  clt must size, has return, has ext, */

-			0x6,		/* 6 */

+			0x2,		/* 2 */

 /* 1894 */	0x8,		/* 8 */

 			0x1,		/* Ext Flags:  new corr desc, */

 /* 1896 */	NdrFcShort( 0x0 ),	/* 0 */

@@ -1821,109 +1821,109 @@
 /* 1904 */	NdrFcShort( 0x4 ),	/* x86 Stack size/offset = 4 */

 /* 1906 */	NdrFcShort( 0x460 ),	/* Type Offset=1120 */

 

+	/* Return value */

+

+/* 1908 */	NdrFcShort( 0x70 ),	/* Flags:  out, return, base type, */

+/* 1910 */	NdrFcShort( 0x8 ),	/* x86 Stack size/offset = 8 */

+/* 1912 */	0x8,		/* FC_LONG */

+			0x0,		/* 0 */

+

+	/* Procedure Register */

+

+/* 1914 */	0x33,		/* FC_AUTO_HANDLE */

+			0x6c,		/* Old Flags:  object, Oi2 */

+/* 1916 */	NdrFcLong( 0x0 ),	/* 0 */

+/* 1920 */	NdrFcShort( 0x5 ),	/* 5 */

+/* 1922 */	NdrFcShort( 0x1c ),	/* x86 Stack size/offset = 28 */

+/* 1924 */	NdrFcShort( 0x0 ),	/* 0 */

+/* 1926 */	NdrFcShort( 0x8 ),	/* 8 */

+/* 1928 */	0x46,		/* Oi2 Flags:  clt must size, has return, has ext, */

+			0x6,		/* 6 */

+/* 1930 */	0x8,		/* 8 */

+			0x1,		/* Ext Flags:  new corr desc, */

+/* 1932 */	NdrFcShort( 0x0 ),	/* 0 */

+/* 1934 */	NdrFcShort( 0x0 ),	/* 0 */

+/* 1936 */	NdrFcShort( 0x0 ),	/* 0 */

+

+	/* Parameter app_id */

+

+/* 1938 */	NdrFcShort( 0x10b ),	/* Flags:  must size, must free, in, simple ref, */

+/* 1940 */	NdrFcShort( 0x4 ),	/* x86 Stack size/offset = 4 */

+/* 1942 */	NdrFcShort( 0x460 ),	/* Type Offset=1120 */

+

 	/* Parameter brand_code */

 

-/* 1908 */	NdrFcShort( 0x10b ),	/* Flags:  must size, must free, in, simple ref, */

-/* 1910 */	NdrFcShort( 0x8 ),	/* x86 Stack size/offset = 8 */

-/* 1912 */	NdrFcShort( 0x460 ),	/* Type Offset=1120 */

+/* 1944 */	NdrFcShort( 0x10b ),	/* Flags:  must size, must free, in, simple ref, */

+/* 1946 */	NdrFcShort( 0x8 ),	/* x86 Stack size/offset = 8 */

+/* 1948 */	NdrFcShort( 0x460 ),	/* Type Offset=1120 */

 

 	/* Parameter tag */

 

-/* 1914 */	NdrFcShort( 0x10b ),	/* Flags:  must size, must free, in, simple ref, */

-/* 1916 */	NdrFcShort( 0xc ),	/* x86 Stack size/offset = 12 */

-/* 1918 */	NdrFcShort( 0x460 ),	/* Type Offset=1120 */

+/* 1950 */	NdrFcShort( 0x10b ),	/* Flags:  must size, must free, in, simple ref, */

+/* 1952 */	NdrFcShort( 0xc ),	/* x86 Stack size/offset = 12 */

+/* 1954 */	NdrFcShort( 0x460 ),	/* Type Offset=1120 */

 

 	/* Parameter version */

 

-/* 1920 */	NdrFcShort( 0x10b ),	/* Flags:  must size, must free, in, simple ref, */

-/* 1922 */	NdrFcShort( 0x10 ),	/* x86 Stack size/offset = 16 */

-/* 1924 */	NdrFcShort( 0x460 ),	/* Type Offset=1120 */

+/* 1956 */	NdrFcShort( 0x10b ),	/* Flags:  must size, must free, in, simple ref, */

+/* 1958 */	NdrFcShort( 0x10 ),	/* x86 Stack size/offset = 16 */

+/* 1960 */	NdrFcShort( 0x460 ),	/* Type Offset=1120 */

 

 	/* Parameter existence_checker_path */

 

-/* 1926 */	NdrFcShort( 0x10b ),	/* Flags:  must size, must free, in, simple ref, */

-/* 1928 */	NdrFcShort( 0x14 ),	/* x86 Stack size/offset = 20 */

-/* 1930 */	NdrFcShort( 0x460 ),	/* Type Offset=1120 */

+/* 1962 */	NdrFcShort( 0x10b ),	/* Flags:  must size, must free, in, simple ref, */

+/* 1964 */	NdrFcShort( 0x14 ),	/* x86 Stack size/offset = 20 */

+/* 1966 */	NdrFcShort( 0x460 ),	/* Type Offset=1120 */

 

 	/* Return value */

 

-/* 1932 */	NdrFcShort( 0x70 ),	/* Flags:  out, return, base type, */

-/* 1934 */	NdrFcShort( 0x18 ),	/* x86 Stack size/offset = 24 */

-/* 1936 */	0x8,		/* FC_LONG */

+/* 1968 */	NdrFcShort( 0x70 ),	/* Flags:  out, return, base type, */

+/* 1970 */	NdrFcShort( 0x18 ),	/* x86 Stack size/offset = 24 */

+/* 1972 */	0x8,		/* FC_LONG */

 			0x0,		/* 0 */

 

 	/* Procedure Update */

 

-/* 1938 */	0x33,		/* FC_AUTO_HANDLE */

+/* 1974 */	0x33,		/* FC_AUTO_HANDLE */

 			0x6c,		/* Old Flags:  object, Oi2 */

-/* 1940 */	NdrFcLong( 0x0 ),	/* 0 */

-/* 1944 */	NdrFcShort( 0x5 ),	/* 5 */

-/* 1946 */	NdrFcShort( 0x10 ),	/* x86 Stack size/offset = 16 */

-/* 1948 */	NdrFcShort( 0x0 ),	/* 0 */

-/* 1950 */	NdrFcShort( 0x8 ),	/* 8 */

-/* 1952 */	0x46,		/* Oi2 Flags:  clt must size, has return, has ext, */

+/* 1976 */	NdrFcLong( 0x0 ),	/* 0 */

+/* 1980 */	NdrFcShort( 0x6 ),	/* 6 */

+/* 1982 */	NdrFcShort( 0x10 ),	/* x86 Stack size/offset = 16 */

+/* 1984 */	NdrFcShort( 0x0 ),	/* 0 */

+/* 1986 */	NdrFcShort( 0x8 ),	/* 8 */

+/* 1988 */	0x46,		/* Oi2 Flags:  clt must size, has return, has ext, */

 			0x3,		/* 3 */

-/* 1954 */	0x8,		/* 8 */

+/* 1990 */	0x8,		/* 8 */

 			0x1,		/* Ext Flags:  new corr desc, */

-/* 1956 */	NdrFcShort( 0x0 ),	/* 0 */

-/* 1958 */	NdrFcShort( 0x0 ),	/* 0 */

-/* 1960 */	NdrFcShort( 0x0 ),	/* 0 */

+/* 1992 */	NdrFcShort( 0x0 ),	/* 0 */

+/* 1994 */	NdrFcShort( 0x0 ),	/* 0 */

+/* 1996 */	NdrFcShort( 0x0 ),	/* 0 */

 

 	/* Parameter app_id */

 

-/* 1962 */	NdrFcShort( 0x10b ),	/* Flags:  must size, must free, in, simple ref, */

-/* 1964 */	NdrFcShort( 0x4 ),	/* x86 Stack size/offset = 4 */

-/* 1966 */	NdrFcShort( 0x460 ),	/* Type Offset=1120 */

-

-	/* Parameter observer */

-

-/* 1968 */	NdrFcShort( 0xb ),	/* Flags:  must size, must free, in, */

-/* 1970 */	NdrFcShort( 0x8 ),	/* x86 Stack size/offset = 8 */

-/* 1972 */	NdrFcShort( 0x462 ),	/* Type Offset=1122 */

-

-	/* Return value */

-

-/* 1974 */	NdrFcShort( 0x70 ),	/* Flags:  out, return, base type, */

-/* 1976 */	NdrFcShort( 0xc ),	/* x86 Stack size/offset = 12 */

-/* 1978 */	0x8,		/* FC_LONG */

-			0x0,		/* 0 */

-

-	/* Procedure UpdateAll */

-

-/* 1980 */	0x33,		/* FC_AUTO_HANDLE */

-			0x6c,		/* Old Flags:  object, Oi2 */

-/* 1982 */	NdrFcLong( 0x0 ),	/* 0 */

-/* 1986 */	NdrFcShort( 0x6 ),	/* 6 */

-/* 1988 */	NdrFcShort( 0xc ),	/* x86 Stack size/offset = 12 */

-/* 1990 */	NdrFcShort( 0x0 ),	/* 0 */

-/* 1992 */	NdrFcShort( 0x8 ),	/* 8 */

-/* 1994 */	0x46,		/* Oi2 Flags:  clt must size, has return, has ext, */

-			0x2,		/* 2 */

-/* 1996 */	0x8,		/* 8 */

-			0x1,		/* Ext Flags:  new corr desc, */

-/* 1998 */	NdrFcShort( 0x0 ),	/* 0 */

-/* 2000 */	NdrFcShort( 0x0 ),	/* 0 */

-/* 2002 */	NdrFcShort( 0x0 ),	/* 0 */

+/* 1998 */	NdrFcShort( 0x10b ),	/* Flags:  must size, must free, in, simple ref, */

+/* 2000 */	NdrFcShort( 0x4 ),	/* x86 Stack size/offset = 4 */

+/* 2002 */	NdrFcShort( 0x460 ),	/* Type Offset=1120 */

 

 	/* Parameter observer */

 

 /* 2004 */	NdrFcShort( 0xb ),	/* Flags:  must size, must free, in, */

-/* 2006 */	NdrFcShort( 0x4 ),	/* x86 Stack size/offset = 4 */

+/* 2006 */	NdrFcShort( 0x8 ),	/* x86 Stack size/offset = 8 */

 /* 2008 */	NdrFcShort( 0x462 ),	/* Type Offset=1122 */

 

 	/* Return value */

 

 /* 2010 */	NdrFcShort( 0x70 ),	/* Flags:  out, return, base type, */

-/* 2012 */	NdrFcShort( 0x8 ),	/* x86 Stack size/offset = 8 */

+/* 2012 */	NdrFcShort( 0xc ),	/* x86 Stack size/offset = 12 */

 /* 2014 */	0x8,		/* FC_LONG */

 			0x0,		/* 0 */

 

-	/* Procedure Run */

+	/* Procedure UpdateAll */

 

 /* 2016 */	0x33,		/* FC_AUTO_HANDLE */

 			0x6c,		/* Old Flags:  object, Oi2 */

 /* 2018 */	NdrFcLong( 0x0 ),	/* 0 */

-/* 2022 */	NdrFcShort( 0x3 ),	/* 3 */

+/* 2022 */	NdrFcShort( 0x7 ),	/* 7 */

 /* 2024 */	NdrFcShort( 0xc ),	/* x86 Stack size/offset = 12 */

 /* 2026 */	NdrFcShort( 0x0 ),	/* 0 */

 /* 2028 */	NdrFcShort( 0x8 ),	/* 8 */

@@ -1948,12 +1948,12 @@
 /* 2050 */	0x8,		/* FC_LONG */

 			0x0,		/* 0 */

 

-	/* Procedure InitializeUpdateService */

+	/* Procedure Run */

 

 /* 2052 */	0x33,		/* FC_AUTO_HANDLE */

 			0x6c,		/* Old Flags:  object, Oi2 */

 /* 2054 */	NdrFcLong( 0x0 ),	/* 0 */

-/* 2058 */	NdrFcShort( 0x4 ),	/* 4 */

+/* 2058 */	NdrFcShort( 0x3 ),	/* 3 */

 /* 2060 */	NdrFcShort( 0xc ),	/* x86 Stack size/offset = 12 */

 /* 2062 */	NdrFcShort( 0x0 ),	/* 0 */

 /* 2064 */	NdrFcShort( 0x8 ),	/* 8 */

@@ -1978,6 +1978,36 @@
 /* 2086 */	0x8,		/* FC_LONG */

 			0x0,		/* 0 */

 

+	/* Procedure InitializeUpdateService */

+

+/* 2088 */	0x33,		/* FC_AUTO_HANDLE */

+			0x6c,		/* Old Flags:  object, Oi2 */

+/* 2090 */	NdrFcLong( 0x0 ),	/* 0 */

+/* 2094 */	NdrFcShort( 0x4 ),	/* 4 */

+/* 2096 */	NdrFcShort( 0xc ),	/* x86 Stack size/offset = 12 */

+/* 2098 */	NdrFcShort( 0x0 ),	/* 0 */

+/* 2100 */	NdrFcShort( 0x8 ),	/* 8 */

+/* 2102 */	0x46,		/* Oi2 Flags:  clt must size, has return, has ext, */

+			0x2,		/* 2 */

+/* 2104 */	0x8,		/* 8 */

+			0x1,		/* Ext Flags:  new corr desc, */

+/* 2106 */	NdrFcShort( 0x0 ),	/* 0 */

+/* 2108 */	NdrFcShort( 0x0 ),	/* 0 */

+/* 2110 */	NdrFcShort( 0x0 ),	/* 0 */

+

+	/* Parameter observer */

+

+/* 2112 */	NdrFcShort( 0xb ),	/* Flags:  must size, must free, in, */

+/* 2114 */	NdrFcShort( 0x4 ),	/* x86 Stack size/offset = 4 */

+/* 2116 */	NdrFcShort( 0x462 ),	/* Type Offset=1122 */

+

+	/* Return value */

+

+/* 2118 */	NdrFcShort( 0x70 ),	/* Flags:  out, return, base type, */

+/* 2120 */	NdrFcShort( 0x8 ),	/* x86 Stack size/offset = 8 */

+/* 2122 */	0x8,		/* FC_LONG */

+			0x0,		/* 0 */

+

 			0x0

         }

     };

@@ -3376,8 +3406,9 @@
     {

     1842,

     1878,

-    1938,

-    1980

+    1914,

+    1974,

+    2016

     };

 

 static const MIDL_STUBLESS_PROXY_INFO IUpdater_ProxyInfo =

@@ -3401,13 +3432,14 @@
     0,

     0,

     0};

-CINTERFACE_PROXY_VTABLE(7) _IUpdaterProxyVtbl = 

+CINTERFACE_PROXY_VTABLE(8) _IUpdaterProxyVtbl = 

 {

     &IUpdater_ProxyInfo,

     &IID_IUpdater,

     IUnknown_QueryInterface_Proxy,

     IUnknown_AddRef_Proxy,

     IUnknown_Release_Proxy ,

+    (void *) (INT_PTR) -1 /* IUpdater::GetVersion */ ,

     (void *) (INT_PTR) -1 /* IUpdater::CheckForUpdate */ ,

     (void *) (INT_PTR) -1 /* IUpdater::Register */ ,

     (void *) (INT_PTR) -1 /* IUpdater::Update */ ,

@@ -3418,7 +3450,7 @@
 {

     &IID_IUpdater,

     &IUpdater_ServerInfo,

-    7,

+    8,

     0, /* pure interpreted */

     CStdStubBuffer_METHODS

 };

@@ -3430,8 +3462,8 @@
 #pragma code_seg(".orpc")

 static const unsigned short IUpdaterControl_FormatStringOffsetTable[] =

     {

-    2016,

-    2052

+    2052,

+    2088

     };

 

 static const MIDL_STUBLESS_PROXY_INFO IUpdaterControl_ProxyInfo =

diff --git a/tools/binary_size/diagnose_bloat.py b/tools/binary_size/diagnose_bloat.py
index e44f3c5..b37919db 100755
--- a/tools/binary_size/diagnose_bloat.py
+++ b/tools/binary_size/diagnose_bloat.py
@@ -502,9 +502,21 @@
     logging.info('Creating .sizediff')
     _RunCmd(supersize_cmd)
 
-    logging.info('Report created: %s', os.path.relpath(report_path))
-    logging.info('View it here: '
-                 'https://chrome-supersize.firebaseapp.com/viewer.html')
+    unique_name = '{}_{}.sizediff'.format(before.rev, after.rev)
+    msg = (
+        '\n=====================\n'
+        'Saved locally to {local}. To view, upload to '
+        'https://chrome-supersize.firebaseapp.com/viewer.html.\n'
+        'To share, run:\n'
+        '> gsutil.py cp -a public-read {local} '
+        'gs://chrome-supersize/oneoffs/{unique_name}\n\n'
+        'Then view it at https://chrome-supersize.firebaseapp.com/viewer.html'
+        '?load_url=https://storage.googleapis.com/chrome-supersize/oneoffs/'
+        '{unique_name}'
+        '\n=====================\n')
+    msg = msg.format(local=os.path.relpath(report_path),
+                     unique_name=unique_name)
+    logging.info(msg)
 
   def Summarize(self):
     path = os.path.join(self.archive_dir, 'last_diff_summary.txt')
diff --git a/tools/binary_size/libsupersize/console.py b/tools/binary_size/libsupersize/console.py
index 44f3cc99..e5afd7c 100644
--- a/tools/binary_size/libsupersize/console.py
+++ b/tools/binary_size/libsupersize/console.py
@@ -166,10 +166,10 @@
     shortname = os.path.basename(os.path.normpath(to_file))
     msg = (
         'Saved locally to {local}. To share, run:\n'
-        '> gsutil.py cp {local} gs://chrome-supersize/oneoffs && gsutil.py -m '
-        'acl ch -u AllUsers:R gs://chrome-supersize/oneoffs/{shortname}\n'
-        '  Then view it at https://storage.googleapis.com/chrome-supersize'
-        '/viewer.html?load_url=oneoffs%2F{shortname}')
+        '> gsutil.py cp -a public-read {local} gs://chrome-supersize/oneoffs\n'
+        '  Then view it at https://chrome-supersize.firebaseapp.com/viewer.html'
+        '?load_url=https://storage.googleapis.com/chrome-supersize/oneoffs/'
+        '{shortname}')
     print(msg.format(local=to_file, shortname=shortname))
 
   def _SaveDeltaSizeInfo(self, size_info, to_file=None):
diff --git a/tools/clang/plugins/SuppressibleDiagnosticBuilder.h b/tools/clang/plugins/SuppressibleDiagnosticBuilder.h
index a56e516..bde0cd3 100644
--- a/tools/clang/plugins/SuppressibleDiagnosticBuilder.h
+++ b/tools/clang/plugins/SuppressibleDiagnosticBuilder.h
@@ -26,9 +26,13 @@
 
   ~SuppressibleDiagnosticBuilder() {
     if (suppressed_) {
-      // Clear the counts and underlying data, so the base class destructor
+      // Clear the underlying data, so the base class destructor
       // doesn't try to emit the diagnostic.
+
+      // TODO(crbug.com/1140409) Remove in the next Clang roll.
+#ifndef LLVM_FORCE_HEAD_REVISION
       FlushCounts();
+#endif
       Clear();
       // Also clear the current diagnostic being processed by the
       // DiagnosticsEngine, since it won't be emitted.
@@ -36,6 +40,8 @@
     }
   }
 
+  // TODO(crbug.com/1140409) Remove in the next Clang roll.
+#ifndef LLVM_FORCE_HEAD_REVISION
   template <typename T>
   friend const SuppressibleDiagnosticBuilder& operator<<(
       const SuppressibleDiagnosticBuilder& builder,
@@ -44,6 +50,7 @@
     base_builder << value;
     return builder;
   }
+#endif
 
  private:
   clang::DiagnosticsEngine* const diagnostics_;
diff --git a/tools/gritsettings/resource_ids.spec b/tools/gritsettings/resource_ids.spec
index 3693176..212a8e60 100644
--- a/tools/gritsettings/resource_ids.spec
+++ b/tools/gritsettings/resource_ids.spec
@@ -175,13 +175,10 @@
     "META": {"sizes": {"includes": [500],}},
     "includes": [1830],
   },
-  "chrome/browser/resources/signin/profile_picker/profile_picker_resources_vulcanized.grd": {
+  "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/signin/profile_picker/profile_picker_resources.grd": {
+    "META": {"sizes": {"includes": [50],}},
     "includes": [1850],
   },
- "chrome/browser/resources/signin/profile_picker/profile_picker_resources.grd": {
-    "includes": [1860],
-    "structures": [1870],
-  },
   "chrome/browser/resources/tab_search/tab_search_resources.grd": {
     "includes": [1880],
   },
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index 3ae5d26..dd00297 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -13750,6 +13750,12 @@
   <int value="1" label="JCB card"/>
 </enum>
 
+<enum name="CriticalCHRestart">
+  <int value="0" label="Navigation started"/>
+  <int value="1" label="Header present"/>
+  <int value="2" label="Navigation restarted"/>
+</enum>
+
 <enum name="CrOSActionRecorderEvent">
   <int value="0" label="Disabled"/>
   <int value="1" label="RecordAction"/>
@@ -16459,6 +16465,7 @@
   <int value="33" label="cssGridFeatures"/>
   <int value="34" label="movableTabs"/>
   <int value="35" label="keyboardShortcutEditor"/>
+  <int value="36" label="cssFlexboxFeatures"/>
 </enum>
 
 <enum name="DevToolsGridOverlayOpenedFrom">
@@ -75902,6 +75909,8 @@
   <int value="2" label="Connection Error"/>
   <int value="3" label="Cancelled"/>
   <int value="4" label="Aborted"/>
+  <int value="5" label="Timeout"/>
+  <int value="6" label="UserCancelled"/>
 </enum>
 
 <enum name="WebpDecodedFormat">
diff --git a/tools/metrics/histograms/histograms_xml/android/histograms.xml b/tools/metrics/histograms/histograms_xml/android/histograms.xml
index cf2ef55..80a57b2 100644
--- a/tools/metrics/histograms/histograms_xml/android/histograms.xml
+++ b/tools/metrics/histograms/histograms_xml/android/histograms.xml
@@ -397,7 +397,7 @@
 </histogram>
 
 <histogram name="Android.DarkTheme.DarkSearchRequested" enum="Boolean"
-    expires_after="2020-12-01">
+    expires_after="2021-06-01">
   <owner>wylieb@chromium.org</owner>
   <owner>twellington@chromium.org</owner>
   <owner>chrome-android-app@chromium.org</owner>
diff --git a/tools/metrics/histograms/histograms_xml/apps/histograms.xml b/tools/metrics/histograms/histograms_xml/apps/histograms.xml
index 5311ddf..0dfc3a7 100644
--- a/tools/metrics/histograms/histograms_xml/apps/histograms.xml
+++ b/tools/metrics/histograms/histograms_xml/apps/histograms.xml
@@ -716,7 +716,7 @@
 </histogram>
 
 <histogram name="Apps.AppListCreationTime" units="ms"
-    expires_after="2021-02-14">
+    expires_after="2021-04-18">
   <owner>calamity@chromium.org</owner>
   <summary>
     The amount of time it takes to build the app list UI. This is logged each
@@ -828,7 +828,7 @@
 </histogram>
 
 <histogram name="Apps.AppListPageSwitcherSource"
-    enum="AppListPageSwitcherSource" expires_after="2021-02-14">
+    enum="AppListPageSwitcherSource" expires_after="2021-04-18">
 <!-- Name completed by histogram_suffixes name="TabletOrClamshellMode" -->
 
   <owner>newcomer@chromium.org</owner>
@@ -1012,7 +1012,7 @@
 </histogram>
 
 <histogram name="Apps.AppListSearchResultInternalApp.Show"
-    enum="AppListInternalAppName" expires_after="2021-02-14">
+    enum="AppListInternalAppName" expires_after="2021-04-18">
   <owner>wutao@chromium.org</owner>
   <summary>
     The app list search result of an internal app that was shown to the user.
diff --git a/tools/metrics/histograms/histograms_xml/arc/histograms.xml b/tools/metrics/histograms/histograms_xml/arc/histograms.xml
index 5306846..bac9bb7 100644
--- a/tools/metrics/histograms/histograms_xml/arc/histograms.xml
+++ b/tools/metrics/histograms/histograms_xml/arc/histograms.xml
@@ -66,7 +66,7 @@
 </histogram>
 
 <histogram name="Arc.AdbSideloadingEnablingScreen"
-    enum="AdbSideloadingPromptEvent" expires_after="M88">
+    enum="AdbSideloadingPromptEvent" expires_after="M96">
   <owner>victorhsieh@chromium.org</owner>
   <owner>tbuckley@chromium.org</owner>
   <summary>
diff --git a/tools/metrics/histograms/histograms_xml/blink/histograms.xml b/tools/metrics/histograms/histograms_xml/blink/histograms.xml
index f305fb5..099f562 100644
--- a/tools/metrics/histograms/histograms_xml/blink/histograms.xml
+++ b/tools/metrics/histograms/histograms_xml/blink/histograms.xml
@@ -538,7 +538,7 @@
 </histogram>
 
 <histogram name="Blink.DecodedImage.JpegDensity.KiBWeighted"
-    units="0.01 bits per pixel" expires_after="2021-02-14">
+    units="0.01 bits per pixel" expires_after="2021-04-18">
   <owner>deymo@google.com</owner>
   <owner>compression-dev@google.com</owner>
   <summary>
@@ -1492,7 +1492,7 @@
 </histogram>
 
 <histogram name="Blink.Paint.UpdateTime" units="microseconds"
-    expires_after="2021-02-14">
+    expires_after="2021-04-18">
 <!-- Name completed by histogram_suffixes name="BlinkUpdateTimePreFCPSuffixes" -->
 
 <!-- Name completed by histogram_suffixes name="BlinkUpdateTimePostFCPSuffixes" -->
diff --git a/tools/metrics/histograms/histograms_xml/cookie/histograms.xml b/tools/metrics/histograms/histograms_xml/cookie/histograms.xml
index fa4ac4b..a25b356 100644
--- a/tools/metrics/histograms/histograms_xml/cookie/histograms.xml
+++ b/tools/metrics/histograms/histograms_xml/cookie/histograms.xml
@@ -40,7 +40,7 @@
 </histogram>
 
 <histogram name="Cookie.CookiePrefix" enum="CookiePrefix"
-    expires_after="2021-02-14">
+    expires_after="2021-04-18">
   <owner>estark@chromium.org</owner>
   <summary>
     Number of times a cookie was set with a name prefixed by
@@ -75,7 +75,7 @@
 </histogram>
 
 <histogram name="Cookie.CookieSourceScheme" enum="CookieSourceScheme"
-    expires_after="2021-02-14">
+    expires_after="2021-04-18">
   <owner>estark@chromium.org</owner>
   <summary>
     For each cookie added to the store, record whether its source URL has a
diff --git a/tools/metrics/histograms/histograms_xml/cros/histograms.xml b/tools/metrics/histograms/histograms_xml/cros/histograms.xml
index f7c4373..9faae35 100644
--- a/tools/metrics/histograms/histograms_xml/cros/histograms.xml
+++ b/tools/metrics/histograms/histograms_xml/cros/histograms.xml
@@ -93,7 +93,7 @@
 </histogram>
 
 <histogram name="CrosDisksClient.FormatTime" units="ms"
-    expires_after="2021-02-14">
+    expires_after="2021-04-18">
   <owner>austinct@chromium.org</owner>
   <summary>
     Time taken for the Chrome OS cros-disks daemon to perform a format
diff --git a/tools/metrics/histograms/histograms_xml/crostini/histograms.xml b/tools/metrics/histograms/histograms_xml/crostini/histograms.xml
index 9514b53..5a058b1 100644
--- a/tools/metrics/histograms/histograms_xml/crostini/histograms.xml
+++ b/tools/metrics/histograms/histograms_xml/crostini/histograms.xml
@@ -151,7 +151,7 @@
 </histogram>
 
 <histogram name="Crostini.Crosvm.CpuPercentage" units="%"
-    expires_after="2021-01-31">
+    expires_after="2021-04-18">
   <owner>clumptini@google.com</owner>
   <owner>tbuckley@chromium.org</owner>
   <summary>
diff --git a/tools/metrics/histograms/histograms_xml/cryptohome/histograms.xml b/tools/metrics/histograms/histograms_xml/cryptohome/histograms.xml
index 8fef683e..2d637a8 100644
--- a/tools/metrics/histograms/histograms_xml/cryptohome/histograms.xml
+++ b/tools/metrics/histograms/histograms_xml/cryptohome/histograms.xml
@@ -438,7 +438,7 @@
 </histogram>
 
 <histogram name="Cryptohome.TimeToInitPkcs11" units="ms"
-    expires_after="2021-02-14">
+    expires_after="2021-04-18">
   <owner>apronin@chromium.org</owner>
   <owner>cros-hwsec+uma@chromium.org</owner>
   <summary>
diff --git a/tools/metrics/histograms/histograms_xml/direct/histograms.xml b/tools/metrics/histograms/histograms_xml/direct/histograms.xml
index 77841d8..45a8c17 100644
--- a/tools/metrics/histograms/histograms_xml/direct/histograms.xml
+++ b/tools/metrics/histograms/histograms_xml/direct/histograms.xml
@@ -22,7 +22,7 @@
 <histograms>
 
 <histogram name="DirectWrite.Fonts.Gfx.InitializeLoopCount" units="units"
-    expires_after="M88">
+    expires_after="2021-10-15">
   <owner>drott@chromium.org</owner>
   <owner>etienneb@chromium.org</owner>
   <summary>
@@ -34,14 +34,14 @@
 </histogram>
 
 <histogram name="DirectWrite.Fonts.Proxy.CreateFontFaceResult" enum="Hresult"
-    expires_after="M88">
+    expires_after="2021-10-15">
   <owner>drott@chromium.org</owner>
   <owner>layout-dev@chromium.org</owner>
   <summary>Records the error returned from CreateFontFace.</summary>
 </histogram>
 
 <histogram name="DirectWrite.Fonts.Proxy.EmptyFamilyResultsRatio"
-    units="percentage of empty family results" expires_after="M88">
+    units="percentage of empty family results" expires_after="2021-10-15">
   <owner>drott@chromium.org</owner>
   <owner>layout-dev@chromium.org</owner>
   <summary>
@@ -56,14 +56,14 @@
 </histogram>
 
 <histogram name="DirectWrite.Fonts.Proxy.Fallback.CacheSize" units="Count"
-    expires_after="M88">
+    expires_after="2021-10-15">
   <owner>drott@chromium.org</owner>
   <owner>layout-dev@chromium.org</owner>
   <summary>Records how many font families are in the fallback cache.</summary>
 </histogram>
 
 <histogram name="DirectWrite.Fonts.Proxy.FallbackResult"
-    enum="DirectWriteFontFallbackResult" expires_after="M88">
+    enum="DirectWriteFontFallbackResult" expires_after="2021-10-15">
   <owner>drott@chromium.org</owner>
   <owner>layout-dev@chromium.org</owner>
   <summary>
@@ -74,7 +74,7 @@
 </histogram>
 
 <histogram name="DirectWrite.Fonts.Proxy.FamilyCount" units="families"
-    expires_after="M88">
+    expires_after="2021-10-15">
   <owner>drott@chromium.org</owner>
   <summary>
     The number of font families as seen by the font proxy in the renderer.
@@ -82,7 +82,7 @@
 </histogram>
 
 <histogram name="DirectWrite.Fonts.Proxy.FamilyCountIndexingStart"
-    units="font files" expires_after="M88">
+    units="font files" expires_after="2021-10-15">
   <owner>drott@chromium.org</owner>
   <owner>layout-dev@chromium.org</owner>
   <summary>
@@ -96,7 +96,7 @@
 </histogram>
 
 <histogram name="DirectWrite.Fonts.Proxy.FontProxyError"
-    enum="DirectWriteFontProxyError" expires_after="M88">
+    enum="DirectWriteFontProxyError" expires_after="2021-10-15">
   <owner>drott@chromium.org</owner>
   <owner>layout-dev@chromium.org</owner>
   <summary>
@@ -105,14 +105,14 @@
 </histogram>
 
 <histogram name="DirectWrite.Fonts.Proxy.GetSystemFontCollectionResult"
-    enum="Hresult" expires_after="M88">
+    enum="Hresult" expires_after="2021-10-15">
   <owner>drott@chromium.org</owner>
   <owner>layout-dev@chromium.org</owner>
   <summary>Records the error returned from GetSystemFontCollection.</summary>
 </histogram>
 
 <histogram name="DirectWrite.Fonts.Proxy.IndexingSpeed"
-    units="font files per second" expires_after="M88">
+    units="font files per second" expires_after="2021-10-15">
   <owner>drott@chromium.org</owner>
   <owner>layout-dev@chromium.org</owner>
   <summary>
@@ -123,7 +123,7 @@
 </histogram>
 
 <histogram name="DirectWrite.Fonts.Proxy.LastResortFontCount" units="fonts"
-    expires_after="M88">
+    expires_after="2021-10-15">
   <owner>drott@chromium.org</owner>
   <owner>layout-dev@chromium.org</owner>
   <summary>
@@ -133,7 +133,7 @@
 </histogram>
 
 <histogram name="DirectWrite.Fonts.Proxy.LastResortFontFileCount" units="files"
-    expires_after="M88">
+    expires_after="2021-10-15">
   <owner>drott@chromium.org</owner>
   <owner>layout-dev@chromium.org</owner>
   <summary>
@@ -142,7 +142,7 @@
 </histogram>
 
 <histogram name="DirectWrite.Fonts.Proxy.LoaderType"
-    enum="DirectWriteFontLoaderType" expires_after="M88">
+    enum="DirectWriteFontLoaderType" expires_after="2021-10-15">
   <owner>drott@chromium.org</owner>
   <owner>layout-dev@chromium.org</owner>
   <summary>
@@ -153,7 +153,7 @@
 </histogram>
 
 <histogram name="DirectWrite.Fonts.Proxy.LoadFamilyResult"
-    enum="DirectWriteLoadFamilyResult" expires_after="M88">
+    enum="DirectWriteLoadFamilyResult" expires_after="2021-10-15">
   <owner>drott@chromium.org</owner>
   <owner>layout-dev@chromium.org</owner>
   <summary>
@@ -164,7 +164,7 @@
 </histogram>
 
 <histogram name="DirectWrite.Fonts.Proxy.LoadFamilyTime" units="ms"
-    expires_after="M88">
+    expires_after="2021-10-15">
   <owner>drott@chromium.org</owner>
   <owner>layout-dev@chromium.org</owner>
   <summary>
@@ -174,7 +174,7 @@
 </histogram>
 
 <histogram name="DirectWrite.Fonts.Proxy.LookupTableBuildTime" units="ms"
-    expires_after="M88">
+    expires_after="2021-10-15">
   <owner>drott@chromium.org</owner>
   <owner>layout-dev@chromium.org</owner>
   <summary>
@@ -186,7 +186,7 @@
 </histogram>
 
 <histogram name="DirectWrite.Fonts.Proxy.LookupTableDiskCacheHit"
-    units="BooleanSuccess" expires_after="M88">
+    units="BooleanSuccess" expires_after="2021-10-15">
   <owner>drott@chromium.org</owner>
   <owner>layout-dev@chromium.org</owner>
   <summary>
@@ -198,7 +198,7 @@
 </histogram>
 
 <histogram name="DirectWrite.Fonts.Proxy.LookupTablePersistSuccess"
-    units="BooleanSuccess" expires_after="M88">
+    units="BooleanSuccess" expires_after="2021-10-15">
   <owner>drott@chromium.org</owner>
   <owner>layout-dev@chromium.org</owner>
   <summary>
@@ -209,7 +209,7 @@
 </histogram>
 
 <histogram name="DirectWrite.Fonts.Proxy.LookupTableReadyTime" units="ms"
-    expires_after="M88">
+    expires_after="2021-10-15">
   <owner>drott@chromium.org</owner>
   <owner>layout-dev@chromium.org</owner>
   <summary>
@@ -227,7 +227,7 @@
 </histogram>
 
 <histogram name="DirectWrite.Fonts.Proxy.LookupTableSize" units="KB"
-    expires_after="M88">
+    expires_after="2021-10-15">
   <owner>drott@chromium.org</owner>
   <owner>layout-dev@chromium.org</owner>
   <summary>
@@ -238,7 +238,7 @@
 </histogram>
 
 <histogram name="DirectWrite.Fonts.Proxy.MessageFilterError"
-    enum="DirectWriteMessageFilterError" expires_after="M88">
+    enum="DirectWriteMessageFilterError" expires_after="2021-10-15">
   <owner>drott@chromium.org</owner>
   <owner>layout-dev@chromium.org</owner>
   <summary>
@@ -247,7 +247,7 @@
 </histogram>
 
 <histogram name="DirectWrite.Fonts.Proxy.MostFrequentScanningFailure"
-    enum="Hresult" expires_after="M88">
+    enum="Hresult" expires_after="2021-10-15">
   <owner>drott@chromium.org</owner>
   <owner>layout-dev@chromium.org</owner>
   <summary>
@@ -261,7 +261,7 @@
 </histogram>
 
 <histogram name="DirectWrite.Fonts.Proxy.NumFontFiles" units="font files"
-    expires_after="M88">
+    expires_after="2021-10-15">
   <owner>drott@chromium.org</owner>
   <owner>layout-dev@chromium.org</owner>
   <summary>
@@ -273,7 +273,7 @@
 </histogram>
 
 <histogram name="DirectWrite.Fonts.Proxy.TableBuildTimedOut"
-    units="BooleanTimedout" expires_after="M88">
+    units="BooleanTimedout" expires_after="2021-10-15">
   <owner>drott@chromium.org</owner>
   <owner>layout-dev@chromium.org</owner>
   <summary>
diff --git a/tools/metrics/histograms/histograms_xml/download/histograms.xml b/tools/metrics/histograms/histograms_xml/download/histograms.xml
index e8af4d0..a371f73 100644
--- a/tools/metrics/histograms/histograms_xml/download/histograms.xml
+++ b/tools/metrics/histograms/histograms_xml/download/histograms.xml
@@ -514,6 +514,9 @@
 
 <histogram name="Download.ParallelDownloadAddStreamSuccess"
     enum="BooleanSuccess" expires_after="2020-10-25">
+  <obsolete>
+    Depcreated 10/2020
+  </obsolete>
   <owner>xingliu@chromium.org</owner>
   <summary>
     Records if the byte stream reader of a subsequent request is successfully
diff --git a/tools/metrics/histograms/histograms_xml/extensions/histograms.xml b/tools/metrics/histograms/histograms_xml/extensions/histograms.xml
index 9bf244e8..17544f4 100644
--- a/tools/metrics/histograms/histograms_xml/extensions/histograms.xml
+++ b/tools/metrics/histograms/histograms_xml/extensions/histograms.xml
@@ -485,7 +485,7 @@
 </histogram>
 
 <histogram name="Extensions.CorruptPolicyExtensionDetected3"
-    enum="ExtensionPolicyReinstallReason" expires_after="2020-11-30">
+    enum="ExtensionPolicyReinstallReason" expires_after="2021-03-28">
   <owner>burunduk@chromium.org</owner>
   <owner>lazyboy@chromium.org</owner>
   <owner>poromov@chromium.org</owner>
diff --git a/tools/metrics/histograms/histograms_xml/histogram_suffixes_list.xml b/tools/metrics/histograms/histograms_xml/histogram_suffixes_list.xml
index 4739208..ae89c2e 100644
--- a/tools/metrics/histograms/histograms_xml/histogram_suffixes_list.xml
+++ b/tools/metrics/histograms/histograms_xml/histogram_suffixes_list.xml
@@ -11264,6 +11264,9 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="NoAcceptRangesHeader" separator=".">
+  <obsolete>
+    Deprecated 10/2020
+  </obsolete>
   <suffix name="NoAcceptRangesHeader"
       label="For parallel requests created without accept-ranges header."/>
   <affected-histogram name="Download.ParallelDownloadAddStreamSuccess"/>
diff --git a/tools/metrics/histograms/histograms_xml/image/histograms.xml b/tools/metrics/histograms/histograms_xml/image/histograms.xml
index 03c81dc0..4048882 100644
--- a/tools/metrics/histograms/histograms_xml/image/histograms.xml
+++ b/tools/metrics/histograms/histograms_xml/image/histograms.xml
@@ -248,7 +248,7 @@
 </histogram>
 
 <histogram name="ImageFetcher.Events" enum="ImageFetcherEvent"
-    expires_after="2021-02-14">
+    expires_after="2021-06-01">
   <owner>fgorski@chromium.org</owner>
   <owner>wylieb@chromium.org</owner>
   <summary>
@@ -259,7 +259,7 @@
 </histogram>
 
 <histogram name="ImageFetcher.ImageLoadFromCacheTime" units="ms"
-    expires_after="2020-12-01">
+    expires_after="2021-06-01">
   <owner>fgorski@chromium.org</owner>
   <owner>wylieb@chromium.org</owner>
   <summary>
@@ -269,7 +269,7 @@
 </histogram>
 
 <histogram name="ImageFetcher.ImageLoadFromCacheTimeJava" units="ms"
-    expires_after="2020-12-01">
+    expires_after="2021-06-01">
   <owner>fgorski@chromium.org</owner>
   <owner>wylieb@chromium.org</owner>
   <summary>
@@ -279,7 +279,7 @@
 </histogram>
 
 <histogram name="ImageFetcher.ImageLoadFromNativeTimeJava" units="ms"
-    expires_after="2021-02-14">
+    expires_after="2021-06-01">
   <owner>fgorski@chromium.org</owner>
   <owner>wylieb@chromium.org</owner>
   <summary>
@@ -289,7 +289,7 @@
 </histogram>
 
 <histogram name="ImageFetcher.ImageLoadFromNetworkAfterCacheHit" units="ms"
-    expires_after="2020-12-01">
+    expires_after="2021-06-01">
   <owner>fgorski@chromium.org</owner>
   <owner>wylieb@chromium.org</owner>
   <summary>
@@ -299,7 +299,7 @@
 </histogram>
 
 <histogram name="ImageFetcher.ImageLoadFromNetworkTime" units="ms"
-    expires_after="2020-12-01">
+    expires_after="2021-06-01">
   <owner>fgorski@chromium.org</owner>
   <owner>wylieb@chromium.org</owner>
   <summary>
@@ -309,7 +309,7 @@
 </histogram>
 
 <histogram name="ImageFetcher.LoadImageMetadata" units="ms"
-    expires_after="2020-12-01">
+    expires_after="2021-06-01">
   <owner>fgorski@chromium.org</owner>
   <owner>wylieb@chromium.org</owner>
   <summary>
@@ -318,7 +318,7 @@
 </histogram>
 
 <histogram name="ImageFetcher.RequestStatusCode"
-    enum="CombinedHttpResponseAndNetErrorCode" expires_after="2021-02-14">
+    enum="CombinedHttpResponseAndNetErrorCode" expires_after="2021-06-01">
   <owner>fgorski@chromium.org</owner>
   <owner>wylieb@chromium.org</owner>
   <summary>
@@ -329,7 +329,7 @@
 </histogram>
 
 <histogram name="ImageFetcher.TimeSinceLastCacheLRUEviction" units="ms"
-    expires_after="2020-12-01">
+    expires_after="2021-06-01">
   <owner>fgorski@chromium.org</owner>
   <owner>wylieb@chromium.org</owner>
   <summary>
diff --git a/tools/metrics/histograms/histograms_xml/login/histograms.xml b/tools/metrics/histograms/histograms_xml/login/histograms.xml
index a122976..066c1e9e 100644
--- a/tools/metrics/histograms/histograms_xml/login/histograms.xml
+++ b/tools/metrics/histograms/histograms_xml/login/histograms.xml
@@ -184,7 +184,7 @@
 </histogram>
 
 <histogram name="Login.SessionExitType" enum="LoginSessionExitType"
-    expires_after="2021-02-14">
+    expires_after="2021-04-18">
   <owner>iby@chromium.org</owner>
   <summary>
     Tracks whether a ChromeOS user was logged out because Chrome repeatedly
diff --git a/tools/metrics/histograms/histograms_xml/media/histograms.xml b/tools/metrics/histograms/histograms_xml/media/histograms.xml
index 2d23ddf9..1316912f 100644
--- a/tools/metrics/histograms/histograms_xml/media/histograms.xml
+++ b/tools/metrics/histograms/histograms_xml/media/histograms.xml
@@ -1467,13 +1467,13 @@
 </histogram>
 
 <histogram name="Media.EME.CdmLoadResult" enum="CdmLoadResult"
-    expires_after="2021-02-14">
+    expires_after="2021-04-18">
   <owner>xhwang@chromium.org</owner>
   <owner>media-dev@chromium.org</owner>
   <summary>The result from an attempt to load a library CDM.</summary>
 </histogram>
 
-<histogram name="Media.EME.CdmLoadTime" units="ms" expires_after="2021-02-14">
+<histogram name="Media.EME.CdmLoadTime" units="ms" expires_after="2021-04-18">
   <owner>xhwang@chromium.org</owner>
   <owner>media-dev@chromium.org</owner>
   <summary>The time spent to load a library CDM.</summary>
@@ -1659,7 +1659,7 @@
 </histogram>
 
 <histogram name="Media.EME.RequestMediaKeySystemAccess"
-    enum="RequestMediaKeySystemAccessStatus" expires_after="2021-02-14">
+    enum="RequestMediaKeySystemAccessStatus" expires_after="2021-04-18">
   <owner>sandersd@chromium.org</owner>
   <owner>media-dev@chromium.org</owner>
   <summary>
@@ -1694,7 +1694,7 @@
 </histogram>
 
 <histogram name="Media.EME.Widevine.VideoCapability.HasEmptyRobustness"
-    enum="BooleanEmpty" expires_after="2021-02-14">
+    enum="BooleanEmpty" expires_after="2021-04-18">
   <owner>xhwang@chromium.org</owner>
   <owner>media-dev@chromium.org</owner>
   <summary>
@@ -2321,7 +2321,7 @@
 </histogram>
 
 <histogram name="Media.MeanTimeBetweenRebuffers" units="ms"
-    expires_after="2021-02-14">
+    expires_after="2021-04-18">
   <owner>dalecurtis@chromium.org</owner>
   <summary>
     The total watch time (see Media.WatchTime) of a given playback divided by
@@ -2784,7 +2784,7 @@
 </histogram>
 
 <histogram name="Media.PipelineStatus" enum="PipelineStatus"
-    expires_after="2021-02-14">
+    expires_after="2021-04-18">
   <owner>prabhur@chromium.org</owner>
   <owner>dalecurtis@chromium.org</owner>
   <summary>
diff --git a/tools/metrics/histograms/histograms_xml/memory/histograms.xml b/tools/metrics/histograms/histograms_xml/memory/histograms.xml
index 3968b8b..04707c3b 100644
--- a/tools/metrics/histograms/histograms_xml/memory/histograms.xml
+++ b/tools/metrics/histograms/histograms_xml/memory/histograms.xml
@@ -2092,7 +2092,7 @@
 </histogram>
 
 <histogram name="Memory.RenderProcessHost.Count.InitializedAndNotDead"
-    units="processes" expires_after="2021-02-14">
+    units="processes" expires_after="2021-04-18">
   <owner>alexmos@chromium.org</owner>
   <owner>creis@chromium.org</owner>
   <owner>lukasza@chromium.org</owner>
diff --git a/tools/metrics/histograms/histograms_xml/others/histograms.xml b/tools/metrics/histograms/histograms_xml/others/histograms.xml
index 2d11195..c6bd93b 100644
--- a/tools/metrics/histograms/histograms_xml/others/histograms.xml
+++ b/tools/metrics/histograms/histograms_xml/others/histograms.xml
@@ -2223,6 +2223,15 @@
   </summary>
 </histogram>
 
+<histogram name="ClientHints.CriticalCHRestart" enum="CriticalCHRestart"
+    expires_after="M90">
+  <owner>aarontag@chromium.org</owner>
+  <owner>yoavweiss@chromium.org</owner>
+  <summary>
+    Count of requests restarted because of the Critical-CH response header.
+  </summary>
+</histogram>
+
 <histogram name="ClientHints.PersistDuration" units="ms" expires_after="M88">
   <owner>yoavweiss@chromium.org</owner>
   <owner>tbansal@chromium.org</owner>
@@ -8076,7 +8085,7 @@
 </histogram>
 
 <histogram name="MachineLearningService.CpuUsageMilliPercent"
-    units="1/1000ths of %" expires_after="2021-02-14">
+    units="1/1000ths of %" expires_after="2021-04-18">
   <owner>alanlxl@chromium.org</owner>
   <owner>amoylan@chromium.org</owner>
   <summary>
@@ -8162,7 +8171,7 @@
 </histogram>
 
 <histogram name="MachineLearningService.PeakTotalMemoryKb" units="KB"
-    expires_after="2021-02-14">
+    expires_after="2021-04-18">
   <owner>alanlxl@chromium.org</owner>
   <owner>amoylan@chromium.org</owner>
   <owner>honglinyu@chromium.org</owner>
@@ -8183,7 +8192,7 @@
 </histogram>
 
 <histogram name="MachineLearningService.TotalMemoryKb" units="KB"
-    expires_after="2021-02-14">
+    expires_after="2021-04-18">
   <owner>alanlxl@chromium.org</owner>
   <owner>amoylan@chromium.org</owner>
   <owner>honglinyu@chromium.org</owner>
@@ -17384,7 +17393,7 @@
 </histogram>
 
 <histogram name="WrenchMenu.TimeToAction" units="units"
-    expires_after="2021-02-14">
+    expires_after="2021-04-18">
   <owner>ainslie@chromium.org</owner>
   <owner>edwardjung@chromium.org</owner>
   <summary>
diff --git a/tools/metrics/histograms/histograms_xml/power/histograms.xml b/tools/metrics/histograms/histograms_xml/power/histograms.xml
index 2f1c528..48a76e8 100644
--- a/tools/metrics/histograms/histograms_xml/power/histograms.xml
+++ b/tools/metrics/histograms/histograms_xml/power/histograms.xml
@@ -991,7 +991,7 @@
 </histogram>
 
 <histogram name="PowerML.DimImminent.Action" enum="PowerMLDimImminentAction"
-    expires_after="2021-02-14">
+    expires_after="2021-04-18">
   <owner>jiameng@chromium.org</owner>
   <summary>
     What happens when UserActivityManager receives a screen dim imminent
@@ -1000,7 +1000,7 @@
 </histogram>
 
 <histogram name="PowerML.ModelDim.Result" enum="PowerMLFinalResult"
-    expires_after="2021-02-14">
+    expires_after="2021-04-18">
   <owner>jiameng@chromium.org</owner>
   <summary>
     What happens after screen is dimmed following model instruction. Only
@@ -1009,7 +1009,7 @@
 </histogram>
 
 <histogram name="PowerML.ModelNoDim.Result" enum="PowerMLFinalResult"
-    expires_after="2021-02-14">
+    expires_after="2021-04-18">
   <owner>jiameng@chromium.org</owner>
   <summary>
     What happens after screen dim is deferred following model instruction. Only
@@ -1070,7 +1070,7 @@
 </histogram>
 
 <histogram name="PowerML.SmartDimModel.RequestCanceledDuration" units="ms"
-    expires_after="2021-02-14">
+    expires_after="2021-04-18">
   <owner>amoylan@chromium.org</owner>
   <owner>jiameng@chromium.org</owner>
   <owner>napper@chromium.org</owner>
@@ -1082,7 +1082,7 @@
 </histogram>
 
 <histogram name="PowerML.SmartDimModel.RequestCompleteDuration" units="ms"
-    expires_after="2021-02-14">
+    expires_after="2021-04-18">
   <owner>amoylan@chromium.org</owner>
   <owner>jiameng@chromium.org</owner>
   <owner>napper@chromium.org</owner>
@@ -1106,7 +1106,7 @@
 </histogram>
 
 <histogram name="PowerML.SmartDimParameter.Result"
-    enum="PowerMLSmartDimParameterResult" expires_after="2021-02-14">
+    enum="PowerMLSmartDimParameterResult" expires_after="2021-04-18">
   <owner>jiameng@chromium.org</owner>
   <summary>
     The result of parsing the dim threshold parameter value. Only applicable to
diff --git a/tools/metrics/histograms/histograms_xml/profile/histograms.xml b/tools/metrics/histograms/histograms_xml/profile/histograms.xml
index 8078d9228..7bd11cd 100644
--- a/tools/metrics/histograms/histograms_xml/profile/histograms.xml
+++ b/tools/metrics/histograms/histograms_xml/profile/histograms.xml
@@ -58,7 +58,7 @@
 </histogram>
 
 <histogram name="Profile.AndroidAccountManagementMenu"
-    enum="ProfileAndroidAccountManagementMenu" expires_after="2020-10-26">
+    enum="ProfileAndroidAccountManagementMenu" expires_after="2021-04-26">
   <owner>bsazonov@chromium.org</owner>
   <owner>chrome-signin-team@google.com</owner>
   <summary>
diff --git a/tools/metrics/histograms/histograms_xml/search/histograms.xml b/tools/metrics/histograms/histograms_xml/search/histograms.xml
index b6d97fa..3afc65b 100644
--- a/tools/metrics/histograms/histograms_xml/search/histograms.xml
+++ b/tools/metrics/histograms/histograms_xml/search/histograms.xml
@@ -1236,7 +1236,7 @@
 </histogram>
 
 <histogram base="true" name="Search.QueryTiles.Bitmap.Available"
-    enum="BooleanAvailable" expires_after="M87">
+    enum="BooleanAvailable" expires_after="M91">
 <!-- Name completed by histogram_suffixes name="TileUiSurface" -->
 
   <owner>shaktisahu@chromium.org</owner>
@@ -1247,7 +1247,7 @@
 </histogram>
 
 <histogram base="true" name="Search.QueryTiles.Bitmap.FetchDuration" units="ms"
-    expires_after="M87">
+    expires_after="M91">
 <!-- Name completed by histogram_suffixes name="TileUiSurface" -->
 
   <owner>shaktisahu@chromium.org</owner>
@@ -1260,7 +1260,7 @@
 </histogram>
 
 <histogram name="Search.QueryTiles.Fetcher.FirstFlowDuration" units="hours"
-    expires_after="M87">
+    expires_after="M91">
   <owner>hesen@chromium.org</owner>
   <owner>chrome-upboarding-eng@google.com</owner>
   <summary>
@@ -1270,28 +1270,28 @@
 </histogram>
 
 <histogram name="Search.QueryTiles.Fetcher.Start" units="hours"
-    expires_after="M87">
+    expires_after="M91">
   <owner>hesen@chromium.org</owner>
   <owner>chrome-upboarding-eng@google.com</owner>
   <summary>Records the hour (0-23) when the TileFetcher task starts.</summary>
 </histogram>
 
 <histogram name="Search.QueryTiles.FetcherHttpResponseCode"
-    enum="HttpResponseCode" expires_after="M87">
+    enum="HttpResponseCode" expires_after="M91">
   <owner>hesen@chromium.org</owner>
   <owner>chrome-upboarding-eng@google.com</owner>
   <summary>Records the HTTP response code get from TileFetcher.</summary>
 </histogram>
 
 <histogram name="Search.QueryTiles.FetcherNetErrorCode" enum="NetErrorCodes"
-    expires_after="M87">
+    expires_after="M91">
   <owner>hesen@chromium.org</owner>
   <owner>chrome-upboarding-eng@google.com</owner>
   <summary>Records the net error code get from TileFetcher.</summary>
 </histogram>
 
 <histogram name="Search.QueryTiles.Group.PruneReason"
-    enum="QueryTilesGroupPruneReason" expires_after="M87">
+    enum="QueryTilesGroupPruneReason" expires_after="M91">
   <owner>hesen@chromium.org</owner>
   <owner>chrome-upboarding-eng@google.com</owner>
   <summary>
@@ -1300,7 +1300,7 @@
 </histogram>
 
 <histogram name="Search.QueryTiles.GroupStatus" enum="QueryTilesGroupStatus"
-    expires_after="M87">
+    expires_after="M91">
   <owner>hesen@chromium.org</owner>
   <owner>chrome-upboarding-eng@google.com</owner>
   <summary>
@@ -1309,7 +1309,7 @@
 </histogram>
 
 <histogram name="Search.QueryTiles.ImagePreloadingEvent"
-    enum="QueryTilesImageLoadingEvent" expires_after="M87">
+    enum="QueryTilesImageLoadingEvent" expires_after="M91">
   <owner>xingliu@chromium.org</owner>
   <owner>chrome-upboarding-eng@google.com</owner>
   <summary>
@@ -1319,7 +1319,7 @@
 </histogram>
 
 <histogram base="true" name="Search.QueryTiles.NoBitmap.FetchDuration"
-    units="ms" expires_after="M87">
+    units="ms" expires_after="M91">
 <!-- Name completed by histogram_suffixes name="TileUiSurface" -->
 
   <owner>shaktisahu@chromium.org</owner>
@@ -1332,7 +1332,7 @@
 </histogram>
 
 <histogram name="Search.QueryTiles.NTP.Chip.SearchClicked" units="index"
-    expires_after="M87">
+    expires_after="M91">
   <owner>shaktisahu@chromium.org</owner>
   <owner>chrome-upboarding-eng@google.com</owner>
   <summary>
@@ -1342,7 +1342,7 @@
 </histogram>
 
 <histogram name="Search.QueryTiles.RequestStatus"
-    enum="QueryTilesRequestStatus" expires_after="M87">
+    enum="QueryTilesRequestStatus" expires_after="M91">
   <owner>hesen@chromium.org</owner>
   <owner>chrome-upboarding-eng@google.com</owner>
   <summary>
@@ -1352,7 +1352,7 @@
 </histogram>
 
 <histogram base="true" name="Search.QueryTiles.Tile.Clicked" units="index"
-    expires_after="M87">
+    expires_after="M91">
 <!-- Name completed by histogram_suffixes name="TileUiSurface" -->
 
   <owner>shaktisahu@chromium.org</owner>
@@ -1364,7 +1364,7 @@
 </histogram>
 
 <histogram base="true" name="Search.QueryTiles.Tile.Clicked.IsTopLevel"
-    enum="BooleanIsTopLevel" expires_after="M87">
+    enum="BooleanIsTopLevel" expires_after="M91">
 <!-- Name completed by histogram_suffixes name="TileUiSurface" -->
 
   <owner>shaktisahu@chromium.org</owner>
@@ -1373,7 +1373,7 @@
 </histogram>
 
 <histogram base="true" name="Search.QueryTiles.TileCount" units="tiles"
-    expires_after="M87">
+    expires_after="M91">
 <!-- Name completed by histogram_suffixes name="TileUiSurface" -->
 
   <owner>shaktisahu@chromium.org</owner>
@@ -1385,7 +1385,7 @@
 </histogram>
 
 <histogram name="Search.QueryTiles.TilesFitPerRow" units="tiles"
-    expires_after="M87">
+    expires_after="M91">
   <owner>shaktisahu@chromium.org</owner>
   <owner>chrome-upboarding-eng@google.com</owner>
   <summary>
@@ -1394,7 +1394,7 @@
   </summary>
 </histogram>
 
-<histogram name="Search.QueryTiles.TileWidth" units="dp" expires_after="M87">
+<histogram name="Search.QueryTiles.TileWidth" units="dp" expires_after="M91">
   <owner>shaktisahu@chromium.org</owner>
   <owner>chrome-upboarding-eng@google.com</owner>
   <summary>
diff --git a/tools/metrics/histograms/histograms_xml/subresource/histograms.xml b/tools/metrics/histograms/histograms_xml/subresource/histograms.xml
index fd97677..133b35f 100644
--- a/tools/metrics/histograms/histograms_xml/subresource/histograms.xml
+++ b/tools/metrics/histograms/histograms_xml/subresource/histograms.xml
@@ -22,7 +22,7 @@
 <histograms>
 
 <histogram name="SubresourceFilter.Actions2" enum="SubresourceFilterActions2"
-    expires_after="2021-02-14">
+    expires_after="2021-04-18">
   <owner>csharrison@chromium.org</owner>
   <owner>jkarlin@chromium.org</owner>
   <summary>
diff --git a/tools/metrics/histograms/histograms_xml/sync/histograms.xml b/tools/metrics/histograms/histograms_xml/sync/histograms.xml
index 8a6b0c4..f9be682d 100644
--- a/tools/metrics/histograms/histograms_xml/sync/histograms.xml
+++ b/tools/metrics/histograms/histograms_xml/sync/histograms.xml
@@ -167,7 +167,10 @@
 </histogram>
 
 <histogram name="Sync.ConfigureFailed" enum="SyncModelTypes"
-    expires_after="2021-03-27">
+    expires_after="2020-10-16">
+  <obsolete>
+    Removed 10/2020 (and not recorded for some time before that).
+  </obsolete>
   <owner>mastiz@chromium.org</owner>
   <owner>treib@chromium.org</owner>
   <summary>Count of model association failures for each type.</summary>
diff --git a/tools/metrics/histograms/histograms_xml/ukm/histograms.xml b/tools/metrics/histograms/histograms_xml/ukm/histograms.xml
index e65ccf47..b1d268e 100644
--- a/tools/metrics/histograms/histograms_xml/ukm/histograms.xml
+++ b/tools/metrics/histograms/histograms_xml/ukm/histograms.xml
@@ -157,7 +157,7 @@
 </histogram>
 
 <histogram name="UKM.LogUpload.ResponseOrErrorCode"
-    enum="CombinedHttpResponseAndNetErrorCode" expires_after="2021-02-14">
+    enum="CombinedHttpResponseAndNetErrorCode" expires_after="2021-04-18">
   <owner>rkaplow@chromium.org</owner>
   <owner>ukm-team@google.com</owner>
   <summary>
diff --git a/tools/metrics/histograms/histograms_xml/web_rtc/histograms.xml b/tools/metrics/histograms/histograms_xml/web_rtc/histograms.xml
index d9dcba0..790eca7b 100644
--- a/tools/metrics/histograms/histograms_xml/web_rtc/histograms.xml
+++ b/tools/metrics/histograms/histograms_xml/web_rtc/histograms.xml
@@ -399,7 +399,7 @@
 </histogram>
 
 <histogram name="WebRTC.Audio.EchoCanceller.EchoPathDelay" units="Blocks"
-    expires_after="2021-01-31">
+    expires_after="2021-04-18">
   <owner>peah@chromium.org</owner>
   <owner>saza@chromium.org</owner>
   <summary>
@@ -861,7 +861,7 @@
 </histogram>
 
 <histogram name="WebRTC.BWE.RampUpTimeTo500kbpsInMs" units="ms"
-    expires_after="2020-12-27">
+    expires_after="2021-04-18">
   <owner>holmer@chromium.org</owner>
   <summary>
     The time it takes the estimated bandwidth to reach 500 kbps from the first
diff --git a/tools/perf/core/perfetto_binary_roller/binary_deps.json b/tools/perf/core/perfetto_binary_roller/binary_deps.json
index 8b9a991..7ab30c3 100644
--- a/tools/perf/core/perfetto_binary_roller/binary_deps.json
+++ b/tools/perf/core/perfetto_binary_roller/binary_deps.json
@@ -10,7 +10,7 @@
         },
         "linux": {
             "hash": "ffc8f91e15cd30c405b48b566f4fe03e0b6ff011",
-            "remote_path": "perfetto_binaries/trace_processor_shell/linux/e6f794f1dc5dcb51696a9c70ba882081f91859e7/trace_processor_shell"
+            "remote_path": "perfetto_binaries/trace_processor_shell/linux/5f6b5e4dbaf550b6b17d0288a71e0fa4aa7b19ef/trace_processor_shell"
         }
     },
     "power_profile.sql": {
diff --git a/tools/perf/core/shard_maps/android-pixel2-perf-fyi_map.json b/tools/perf/core/shard_maps/android-pixel2-perf-fyi_map.json
index 78acf86..c5b632b 100644
--- a/tools/perf/core/shard_maps/android-pixel2-perf-fyi_map.json
+++ b/tools/perf/core/shard_maps/android-pixel2-perf-fyi_map.json
@@ -24,6 +24,9 @@
     },
     "1": {
         "benchmarks": {
+            "speedometer2": {
+                "abridged": false
+            },
             "system_health.memory_mobile": {
                 "begin": 3,
                 "end": 28,
@@ -33,6 +36,9 @@
     },
     "2": {
         "benchmarks": {
+            "speedometer2": {
+                "abridged": false
+            },
             "system_health.memory_mobile": {
                 "begin": 28,
                 "end": 72,
@@ -42,6 +48,9 @@
     },
     "3": {
         "benchmarks": {
+            "speedometer2": {
+                "abridged": false
+            },
             "system_health.memory_mobile": {
                 "begin": 72,
                 "abridged": false
diff --git a/ui/accessibility/extensions/strings/accessibility_extensions_strings_iw.xtb b/ui/accessibility/extensions/strings/accessibility_extensions_strings_iw.xtb
index 4773c64..ebe51db 100644
--- a/ui/accessibility/extensions/strings/accessibility_extensions_strings_iw.xtb
+++ b/ui/accessibility/extensions/strings/accessibility_extensions_strings_iw.xtb
@@ -36,7 +36,7 @@
 <translation id="5041932793799765940">שינוי צבע</translation>
 <translation id="5094574508723441140">ניגודיות מוגברת</translation>
 <translation id="5173942593318174089">הדגש את מיקום הסמן באמצעות הנפשה.</translation>
-<translation id="5287723860611749454">‏&lt;p&gt;השתמש במקשי החצים כדי לדפדף במסמך. ‎&lt;/p&gt;&lt;p&gt;‎לחץ במקום כלשהו כדי להעביר את הסמן לאותו מיקום. ‎&lt;/p&gt; &lt;p&gt;‎   הקש על ‎&lt;span class='key'&gt;Shift&lt;/span&gt;‎ + מקשי החצים כדי לבחור טקסט.‎&lt;/p&gt;‎</translation>
+<translation id="5287723860611749454">‏&lt;p&gt;יש להשתמש במקשי החצים כדי לדפדף במסמך. ‎&lt;/p&gt;&lt;p&gt;‎יש ללחוץ במקום כלשהו כדי להעביר את הסמן לאותו מיקום. ‎&lt;/p&gt;&lt;p&gt;‎ יש להקיש על ‎&lt;span class='key'&gt;Shift&lt;/span&gt;‎ + מקשי החצים כדי לבחור טקסט.‎&lt;/p&gt;‎</translation>
 <translation id="5331422999063554397">צבע הפוך</translation>
 <translation id="5555153510860501336">ניגודיות גבוהה מושבתת</translation>
 <translation id="5558600050691192317">פקודות מקלדת</translation>
diff --git a/ui/accessibility/platform/ax_platform_node_textrangeprovider_win.cc b/ui/accessibility/platform/ax_platform_node_textrangeprovider_win.cc
index 80796c7..2629570 100644
--- a/ui/accessibility/platform/ax_platform_node_textrangeprovider_win.cc
+++ b/ui/accessibility/platform/ax_platform_node_textrangeprovider_win.cc
@@ -183,7 +183,11 @@
 HRESULT AXPlatformNodeTextRangeProviderWin::ExpandToEnclosingUnitImpl(
     TextUnit unit) {
   UIA_VALIDATE_TEXTRANGEPROVIDER_CALL();
-  NormalizeTextRange();
+  AXPositionInstance normalized_start = start()->Clone();
+  AXPositionInstance normalized_end = end()->Clone();
+  NormalizeTextRange(normalized_start, normalized_end);
+  SetStart(std::move(normalized_start));
+  SetEnd(std::move(normalized_end));
 
   // Determine if start is on a boundary of the specified TextUnit, if it is
   // not, move backwards until it is. Move the end forwards from start until it
@@ -214,7 +218,11 @@
         DCHECK(!end()->IsNullPosition());
       }
 
-      NormalizeTextRange();
+      AXPositionInstance normalized_start = start()->Clone();
+      AXPositionInstance normalized_end = end()->Clone();
+      NormalizeTextRange(normalized_start, normalized_end);
+      SetStart(std::move(normalized_start));
+      SetEnd(std::move(normalized_end));
       break;
     }
     case TextUnit_Format:
@@ -324,14 +332,18 @@
   WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_TEXTRANGE_FINDATTRIBUTE);
   WIN_ACCESSIBILITY_API_PERF_HISTOGRAM(UMA_API_TEXTRANGE_FINDATTRIBUTE);
   UIA_VALIDATE_TEXTRANGEPROVIDER_CALL_1_OUT(result);
-  NormalizeTextRange();
+  // Use a cloned range so that FindAttribute does not introduce side-effects
+  // while normalizing the original range.
+  AXPositionInstance normalized_start = start()->Clone();
+  AXPositionInstance normalized_end = end()->Clone();
+  NormalizeTextRange(normalized_start, normalized_end);
 
   *result = nullptr;
   AXPositionInstance matched_range_start = nullptr;
   AXPositionInstance matched_range_end = nullptr;
 
   std::vector<AXNodeRange> anchors;
-  AXNodeRange range(start()->Clone(), end()->Clone());
+  AXNodeRange range(normalized_start->Clone(), normalized_end->Clone());
   for (AXNodeRange leaf_text_range : range)
     anchors.emplace_back(std::move(leaf_text_range));
 
@@ -477,16 +489,20 @@
   WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_TEXTRANGE_GETATTRIBUTEVALUE);
   WIN_ACCESSIBILITY_API_PERF_HISTOGRAM(UMA_API_TEXTRANGE_GETATTRIBUTEVALUE);
   UIA_VALIDATE_TEXTRANGEPROVIDER_CALL_1_OUT(value);
-  NormalizeTextRange();
+  // Use a cloned range so that GetAttributeValue does not introduce
+  // side-effects while normalizing the original range.
+  AXPositionInstance normalized_start = start()->Clone();
+  AXPositionInstance normalized_end = end()->Clone();
+  NormalizeTextRange(normalized_start, normalized_end);
 
   base::win::VariantVector attribute_value;
 
   // The range is inclusive, so advance our endpoint to the next position
-  const auto end_leaf_text_position = end()->AsLeafTextPosition();
+  const auto end_leaf_text_position = normalized_end->AsLeafTextPosition();
   auto end = end_leaf_text_position->CreateNextAnchorPosition();
 
   // Iterate over anchor positions
-  for (auto it = start()->AsLeafTextPosition();
+  for (auto it = normalized_start->AsLeafTextPosition();
        it->anchor_id() != end->anchor_id() || it->tree_id() != end->tree_id();
        it = it->CreateNextAnchorPosition()) {
     // If the iterator creates a null position, then it has likely overrun the
@@ -957,7 +973,6 @@
   WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_TEXTRANGE_GETCHILDREN);
   WIN_ACCESSIBILITY_API_PERF_HISTOGRAM(UMA_API_TEXTRANGE_GETCHILDREN);
   UIA_VALIDATE_TEXTRANGEPROVIDER_CALL_1_OUT(children);
-
   std::vector<gfx::NativeViewAccessible> descendants;
 
   const AXNode* common_anchor = start()->LowestCommonAnchor(*end());
@@ -1196,75 +1211,81 @@
   return current_endpoint;
 }
 
-void AXPlatformNodeTextRangeProviderWin::NormalizeTextRange() {
-  if (!start()->IsValid() || !end()->IsValid())
+// TODO(vicfei): Make static.
+void AXPlatformNodeTextRangeProviderWin::NormalizeTextRange(
+    AXPositionInstance& start,
+    AXPositionInstance& end) {
+  if (!start->IsValid() || !end->IsValid())
     return;
 
   // If either endpoint is anchored to an ignored node,
   // first snap them both to be unignored positions.
-  NormalizeAsUnignoredTextRange();
+  NormalizeAsUnignoredTextRange(start, end);
 
   // When carets are visible or selections are occurring, the precise state of
   // the TextPattern must be preserved so that the UIA client can handle
   // scenarios such as determining which characters were deleted. So
   // normalization must be bypassed.
-  if (HasCaretOrSelectionInPlainTextField(start()) ||
-      HasCaretOrSelectionInPlainTextField(end())) {
+  if (HasCaretOrSelectionInPlainTextField(start) ||
+      HasCaretOrSelectionInPlainTextField(end)) {
     return;
   }
 
   AXPositionInstance normalized_start =
-      start()->AsLeafTextPositionBeforeCharacter();
+      start->AsLeafTextPositionBeforeCharacter();
 
   // For a degenerate range, the |end_| will always be the same as the
   // normalized start, so there's no need to compute the normalized end.
   // However, a degenerate range might go undetected if there's an ignored node
   // (or many) between the two endpoints. For this reason, we need to
   // compare the |end_| with both the |start_| and the |normalized_start|.
-  bool is_degenerate = *start() == *end() || *normalized_start == *end();
+  bool is_degenerate = *start == *end || *normalized_start == *end;
   AXPositionInstance normalized_end =
       is_degenerate ? normalized_start->Clone()
-                    : end()->AsLeafTextPositionAfterCharacter();
+                    : end->AsLeafTextPositionAfterCharacter();
 
   if (!normalized_start->IsNullPosition() &&
       !normalized_end->IsNullPosition()) {
-    SetStart(std::move(normalized_start));
-    SetEnd(std::move(normalized_end));
+    start = std::move(normalized_start);
+    end = std::move(normalized_end);
   }
 
-  DCHECK_LE(*start(), *end());
+  DCHECK_LE(*start, *end);
 }
 
-void AXPlatformNodeTextRangeProviderWin::NormalizeAsUnignoredTextRange() {
-  if (!start()->IsValid() || !end()->IsValid())
+// static
+void AXPlatformNodeTextRangeProviderWin::NormalizeAsUnignoredTextRange(
+    AXPositionInstance& start,
+    AXPositionInstance& end) {
+  if (!start->IsValid() || !end->IsValid())
     return;
 
-  if (!start()->IsIgnored() && !end()->IsIgnored())
+  if (!start->IsIgnored() && !end->IsIgnored())
     return;
 
-  if (start()->IsIgnored()) {
-    AXPositionInstance normalized_start = start()->AsUnignoredPosition(
-        AXPositionAdjustmentBehavior::kMoveForward);
+  if (start->IsIgnored()) {
+    AXPositionInstance normalized_start =
+        start->AsUnignoredPosition(AXPositionAdjustmentBehavior::kMoveForward);
     if (normalized_start->IsNullPosition()) {
-      normalized_start = start()->AsUnignoredPosition(
+      normalized_start = start->AsUnignoredPosition(
           AXPositionAdjustmentBehavior::kMoveBackward);
     }
     if (!normalized_start->IsNullPosition())
-      SetStart(std::move(normalized_start));
+      start = std::move(normalized_start);
   }
 
-  if (end()->IsIgnored()) {
+  if (end->IsIgnored()) {
     AXPositionInstance normalized_end =
-        end()->AsUnignoredPosition(AXPositionAdjustmentBehavior::kMoveForward);
+        end->AsUnignoredPosition(AXPositionAdjustmentBehavior::kMoveForward);
     if (normalized_end->IsNullPosition()) {
-      normalized_end = end()->AsUnignoredPosition(
-          AXPositionAdjustmentBehavior::kMoveBackward);
+      normalized_end =
+          end->AsUnignoredPosition(AXPositionAdjustmentBehavior::kMoveBackward);
     }
     if (!normalized_end->IsNullPosition())
-      SetEnd(std::move(normalized_end));
+      end = std::move(normalized_end);
   }
 
-  DCHECK_LE(*start(), *end());
+  DCHECK_LE(*start, *end);
 }
 
 AXPlatformNodeDelegate* AXPlatformNodeTextRangeProviderWin::GetRootDelegate(
diff --git a/ui/accessibility/platform/ax_platform_node_textrangeprovider_win.h b/ui/accessibility/platform/ax_platform_node_textrangeprovider_win.h
index ee1b7261..18adb5a 100644
--- a/ui/accessibility/platform/ax_platform_node_textrangeprovider_win.h
+++ b/ui/accessibility/platform/ax_platform_node_textrangeprovider_win.h
@@ -161,12 +161,17 @@
   // A text range normalization is necessary to prevent a |start_| endpoint to
   // be positioned at the end of an anchor when it can be at the start of the
   // next anchor. After normalization, it is guaranteed that:
-  // * both endpoints of a range are always positioned on unignored anchors;
-  // * both endpoints of a range are never between a grapheme cluster;
-  // * if the range is degenerate, both endpoints of a range are on the same
-  //   anchor.
-  void NormalizeTextRange();
-  void NormalizeAsUnignoredTextRange();
+  // * both endpoints passed by parameter are always positioned on unignored
+  //   anchors;
+  // * both endpoints passed by parameter are never between a grapheme cluster;
+  // * if the endpoints passed by parameter create a degenerate range, both
+  //   endpoints are on the same anchor.
+  // Normalization never updates the internal endpoints directly. Instead, it
+  // normalizes the endpoints passed by parameter.
+  // TODO(vicfei): Make static.
+  void NormalizeTextRange(AXPositionInstance& start, AXPositionInstance& end);
+  static void NormalizeAsUnignoredTextRange(AXPositionInstance& start,
+                                            AXPositionInstance& end);
 
   AXPlatformNodeDelegate* GetRootDelegate(const ui::AXTreeID tree_id);
   AXNode* GetSelectionCommonAnchor();
diff --git a/ui/accessibility/platform/ax_platform_node_textrangeprovider_win_unittest.cc b/ui/accessibility/platform/ax_platform_node_textrangeprovider_win_unittest.cc
index 8fc60a8..d36a8cc 100644
--- a/ui/accessibility/platform/ax_platform_node_textrangeprovider_win_unittest.cc
+++ b/ui/accessibility/platform/ax_platform_node_textrangeprovider_win_unittest.cc
@@ -178,8 +178,12 @@
     return text_range->owner_.Get();
   }
 
-  void NormalizeTextRange(AXPlatformNodeTextRangeProviderWin* text_range) {
-    text_range->NormalizeTextRange();
+  void NormalizeTextRange(AXPlatformNodeTextRangeProviderWin* text_range,
+                          AXNodePosition::AXPositionInstance& start,
+                          AXNodePosition::AXPositionInstance& end) {
+    DCHECK_EQ(*GetStart(text_range), *start);
+    DCHECK_EQ(*GetEnd(text_range), *end);
+    text_range->NormalizeTextRange(start, end);
   }
 
   ComPtr<AXPlatformNodeTextRangeProviderWin> CloneTextRangeProviderWin(
@@ -768,6 +772,13 @@
     update.tree_data.tree_id = ui::AXTreeID::CreateNewAXTreeID();
     return update;
   }
+
+  void ExpectPositionsEqual(const AXNodePosition::AXPositionInstance& a,
+                            const AXNodePosition::AXPositionInstance& b) {
+    EXPECT_EQ(*a, *b);
+    EXPECT_EQ(a->anchor_id(), b->anchor_id());
+    EXPECT_EQ(a->text_offset(), b->text_offset());
+  }
 };
 
 class MockAXPlatformNodeTextRangeProviderWin
@@ -5292,9 +5303,20 @@
   update.nodes[1].SetName("aa");
   ASSERT_TRUE(GetTree()->Unserialize(update));
 
-  NormalizeTextRange(text_range_provider_win.Get());
-  EXPECT_EQ(*start_after_move, *GetStart(text_range_provider_win.Get()));
-  EXPECT_EQ(*end_after_move, *GetEnd(text_range_provider_win.Get()));
+  auto* text_range = text_range_provider_win.Get();
+
+  auto original_start = GetStart(text_range)->Clone();
+  auto original_end = GetEnd(text_range)->Clone();
+
+  auto normalized_start = GetStart(text_range)->Clone();
+  auto normalized_end = GetEnd(text_range)->Clone();
+  NormalizeTextRange(text_range, normalized_start, normalized_end);
+  // Verify that the original range was not changed by normalization.
+  ExpectPositionsEqual(original_start, GetStart(text_range));
+  ExpectPositionsEqual(original_end, GetEnd(text_range));
+
+  EXPECT_EQ(*start_after_move, *normalized_start);
+  EXPECT_EQ(*end_after_move, *normalized_end);
 }
 
 TEST_F(AXPlatformNodeTextRangeProviderTest,
@@ -5350,9 +5372,20 @@
   update.nodes[1].SetName("aa");
   ASSERT_TRUE(GetTree()->Unserialize(update));
 
-  NormalizeTextRange(text_range_provider_win.Get());
-  EXPECT_EQ(*start_after_move, *GetStart(text_range_provider_win.Get()));
-  EXPECT_EQ(*end_after_move, *GetEnd(text_range_provider_win.Get()));
+  auto* text_range = text_range_provider_win.Get();
+
+  auto original_start = GetStart(text_range)->Clone();
+  auto original_end = GetEnd(text_range)->Clone();
+
+  auto normalized_start = GetStart(text_range)->Clone();
+  auto normalized_end = GetEnd(text_range)->Clone();
+  NormalizeTextRange(text_range, normalized_start, normalized_end);
+  // Verify that the original range was not changed by normalization.
+  ExpectPositionsEqual(original_start, GetStart(text_range));
+  ExpectPositionsEqual(original_end, GetEnd(text_range));
+
+  EXPECT_EQ(*start_after_move, *normalized_start);
+  EXPECT_EQ(*end_after_move, *normalized_end);
 }
 
 TEST_F(AXPlatformNodeTextRangeProviderTest,
@@ -5397,18 +5430,21 @@
   EXPECT_TRUE(GetStart(ignored_range_win.Get())->IsIgnored());
   EXPECT_TRUE(GetEnd(ignored_range_win.Get())->IsIgnored());
 
-  ComPtr<AXPlatformNodeTextRangeProviderWin> normalized_range_win =
-      CloneTextRangeProviderWin(ignored_range_win.Get());
-  NormalizeTextRange(normalized_range_win.Get());
+  auto original_start = GetStart(ignored_range_win.Get())->Clone();
+  auto original_end = GetEnd(ignored_range_win.Get())->Clone();
 
-  EXPECT_FALSE(GetStart(normalized_range_win.Get())->IsIgnored());
-  EXPECT_FALSE(GetEnd(normalized_range_win.Get())->IsIgnored());
-  EXPECT_LE(*GetStart(ignored_range_win.Get()),
-            *GetStart(normalized_range_win.Get()));
-  EXPECT_LE(*GetEnd(ignored_range_win.Get()),
-            *GetEnd(normalized_range_win.Get()));
-  EXPECT_LE(*GetStart(normalized_range_win.Get()),
-            *GetEnd(normalized_range_win.Get()));
+  auto normalized_start = GetStart(ignored_range_win.Get())->Clone();
+  auto normalized_end = GetEnd(ignored_range_win.Get())->Clone();
+  NormalizeTextRange(ignored_range_win.Get(), normalized_start, normalized_end);
+  // Verify that the original range was not changed by normalization.
+  ExpectPositionsEqual(original_start, GetStart(ignored_range_win.Get()));
+  ExpectPositionsEqual(original_end, GetEnd(ignored_range_win.Get()));
+
+  EXPECT_FALSE(normalized_start->IsIgnored());
+  EXPECT_FALSE(normalized_end->IsIgnored());
+  EXPECT_LE(*GetStart(ignored_range_win.Get()), *normalized_start);
+  EXPECT_LE(*GetEnd(ignored_range_win.Get()), *normalized_end);
+  EXPECT_LE(*normalized_start, *normalized_end);
 
   // Remove the last node, forcing |NormalizeTextRange| to normalize
   // using the opposite AdjustmentBehavior.
@@ -5418,17 +5454,21 @@
   update.nodes[0].child_ids = {2, 3};
   ASSERT_TRUE(GetTree()->Unserialize(update));
 
-  normalized_range_win = CloneTextRangeProviderWin(ignored_range_win.Get());
-  NormalizeTextRange(normalized_range_win.Get());
+  original_start = GetStart(ignored_range_win.Get())->Clone();
+  original_end = GetEnd(ignored_range_win.Get())->Clone();
 
-  EXPECT_FALSE(GetStart(normalized_range_win.Get())->IsIgnored());
-  EXPECT_FALSE(GetEnd(normalized_range_win.Get())->IsIgnored());
-  EXPECT_GE(*GetStart(ignored_range_win.Get()),
-            *GetStart(normalized_range_win.Get()));
-  EXPECT_GE(*GetEnd(ignored_range_win.Get()),
-            *GetEnd(normalized_range_win.Get()));
-  EXPECT_LE(*GetStart(normalized_range_win.Get()),
-            *GetEnd(normalized_range_win.Get()));
+  normalized_start = GetStart(ignored_range_win.Get())->Clone();
+  normalized_end = GetEnd(ignored_range_win.Get())->Clone();
+  NormalizeTextRange(ignored_range_win.Get(), normalized_start, normalized_end);
+  // Verify that the original range was not changed by normalization.
+  ExpectPositionsEqual(original_start, GetStart(ignored_range_win.Get()));
+  ExpectPositionsEqual(original_end, GetEnd(ignored_range_win.Get()));
+
+  EXPECT_FALSE(normalized_start->IsIgnored());
+  EXPECT_FALSE(normalized_end->IsIgnored());
+  EXPECT_GE(*GetStart(ignored_range_win.Get()), *normalized_start);
+  EXPECT_GE(*GetEnd(ignored_range_win.Get()), *normalized_end);
+  EXPECT_LE(*normalized_start, *normalized_end);
 }
 
 TEST_F(AXPlatformNodeTextRangeProviderTest,
@@ -5477,7 +5517,7 @@
   AXPlatformNodeWin* owner = static_cast<AXPlatformNodeWin*>(
       AXPlatformNodeFromNode(GetNodeFromTree(tree_id, 1)));
 
-  // Text range before NormalizeTextRange()
+  // Original range before NormalizeTextRange()
   // |before<>||ignored1||ignored2||<a>fter|
   //         |-----------------------|
   // start: TextPosition, anchor_id=2, text_offset=6, annotated_text=before<>
@@ -5490,22 +5530,34 @@
       /*end_anchor_id=*/5, /*end_offset=*/0,
       /*end_affinity*/ ax::mojom::TextAffinity::kDownstream);
 
-  // Text range after NormalizeTextRange()
+  auto original_start = GetStart(range_span_ignored_nodes.Get())->Clone();
+  auto original_end = GetEnd(range_span_ignored_nodes.Get())->Clone();
+
+  // Normalized range after NormalizeTextRange()
   // |before||ignored1||ignored2||<a>fter|
   //                              |-|
-  NormalizeTextRange(range_span_ignored_nodes.Get());
-  EXPECT_EQ(*GetStart(range_span_ignored_nodes.Get()),
-            *GetEnd(range_span_ignored_nodes.Get()));
+  AXNodePosition::AXPositionInstance normalized_start =
+      GetStart(range_span_ignored_nodes.Get())->Clone();
+  AXNodePosition::AXPositionInstance normalized_end =
+      GetEnd(range_span_ignored_nodes.Get())->Clone();
+  NormalizeTextRange(range_span_ignored_nodes.Get(), normalized_start,
+                     normalized_end);
+  // Verify that the original range was not changed by normalization.
+  ExpectPositionsEqual(original_start,
+                       GetStart(range_span_ignored_nodes.Get()));
+  ExpectPositionsEqual(original_end, GetEnd(range_span_ignored_nodes.Get()));
 
-  EXPECT_EQ(true, GetStart(range_span_ignored_nodes.Get())->IsTextPosition());
-  EXPECT_EQ(true, GetStart(range_span_ignored_nodes.Get())->AtStartOfAnchor());
-  EXPECT_EQ(5, GetStart(range_span_ignored_nodes.Get())->anchor_id());
-  EXPECT_EQ(0, GetStart(range_span_ignored_nodes.Get())->text_offset());
+  EXPECT_EQ(*normalized_start, *normalized_end);
 
-  EXPECT_EQ(true, GetEnd(range_span_ignored_nodes.Get())->IsTextPosition());
-  EXPECT_EQ(true, GetEnd(range_span_ignored_nodes.Get())->AtStartOfAnchor());
-  EXPECT_EQ(5, GetEnd(range_span_ignored_nodes.Get())->anchor_id());
-  EXPECT_EQ(0, GetEnd(range_span_ignored_nodes.Get())->text_offset());
+  EXPECT_TRUE(normalized_start->IsTextPosition());
+  EXPECT_TRUE(normalized_start->AtStartOfAnchor());
+  EXPECT_EQ(5, normalized_start->anchor_id());
+  EXPECT_EQ(0, normalized_start->text_offset());
+
+  EXPECT_TRUE(normalized_end->IsTextPosition());
+  EXPECT_TRUE(normalized_end->AtStartOfAnchor());
+  EXPECT_EQ(5, normalized_end->anchor_id());
+  EXPECT_EQ(0, normalized_end->text_offset());
 }
 
 TEST_F(AXPlatformNodeTextRangeProviderTest,
@@ -5586,13 +5638,24 @@
       /*end_anchor_id=*/7, /*end_offset=*/0,
       /*end_affinity*/ ax::mojom::TextAffinity::kDownstream);
 
-  NormalizeTextRange(range.Get());
-  EXPECT_EQ(*GetStart(range.Get()), *GetEnd(range.Get()));
+  auto original_start = GetStart(range.Get())->Clone();
+  auto original_end = GetEnd(range.Get())->Clone();
 
-  EXPECT_EQ(true, GetStart(range.Get())->AtStartOfAnchor());
-  EXPECT_EQ(true, GetEnd(range.Get())->AtStartOfAnchor());
-  EXPECT_EQ(7, GetStart(range.Get())->anchor_id());
-  EXPECT_EQ(7, GetEnd(range.Get())->anchor_id());
+  AXNodePosition::AXPositionInstance normalized_start =
+      GetStart(range.Get())->Clone();
+  AXNodePosition::AXPositionInstance normalized_end =
+      GetEnd(range.Get())->Clone();
+  NormalizeTextRange(range.Get(), normalized_start, normalized_end);
+  // Verify that the original range was not changed by normalization.
+  ExpectPositionsEqual(original_start, GetStart(range.Get()));
+  ExpectPositionsEqual(original_end, GetEnd(range.Get()));
+
+  EXPECT_EQ(*normalized_start, *normalized_start);
+
+  EXPECT_TRUE(normalized_start->AtStartOfAnchor());
+  EXPECT_TRUE(normalized_end->AtStartOfAnchor());
+  EXPECT_EQ(7, normalized_start->anchor_id());
+  EXPECT_EQ(7, normalized_end->anchor_id());
 }
 
 TEST_F(AXPlatformNodeTextRangeProviderTest, TestValidateStartAndEnd) {
diff --git a/ui/base/BUILD.gn b/ui/base/BUILD.gn
index 62010c7..d7254d4d 100644
--- a/ui/base/BUILD.gn
+++ b/ui/base/BUILD.gn
@@ -307,10 +307,6 @@
     ]
   }
 
-  if (is_posix) {
-    sources += [ "l10n/l10n_util_posix.cc" ]
-  }
-
   if (is_ios) {
     sources += [
       "device_form_factor_ios.mm",
@@ -409,10 +405,7 @@
   }
 
   if (is_fuchsia) {
-    sources += [
-      "l10n/l10n_util_posix.cc",
-      "resource/resource_bundle_fuchsia.cc",
-    ]
+    sources += [ "resource/resource_bundle_fuchsia.cc" ]
   }
 
   configs += [ "//build/config/compiler:wexit_time_destructors" ]
diff --git a/ui/base/l10n/l10n_util.cc b/ui/base/l10n/l10n_util.cc
index fdfc14e..3be0c69 100644
--- a/ui/base/l10n/l10n_util.cc
+++ b/ui/base/l10n/l10n_util.cc
@@ -270,9 +270,6 @@
   // under a system locale Chrome is not localized to (e.g.Farsi on Linux),
   // but it'd slow down the start up time a little bit for locales Chrome is
   // localized to. So, we don't call it here.
-  if (!l10n_util::IsLocaleSupportedByOS(locale))
-    return false;
-
   return ui::ResourceBundle::LocaleDataPakExists(locale);
 }
 #endif
@@ -309,8 +306,6 @@
       // and to which Chrome is not localized.
       if (IsLocalePartiallyPopulated(locale_name))
         continue;
-      if (!l10n_util::IsLocaleSupportedByOS(locale_name))
-        continue;
       // Normalize underscores to hyphens because that's what our locale files
       // use.
       std::replace(locale_name.begin(), locale_name.end(), '_', '-');
diff --git a/ui/base/l10n/l10n_util.h b/ui/base/l10n/l10n_util.h
index 124248d..b821be44 100644
--- a/ui/base/l10n/l10n_util.h
+++ b/ui/base/l10n/l10n_util.h
@@ -58,11 +58,6 @@
 bool IsLocaleNameTranslated(const char* locale,
                             const std::string& display_locale);
 
-// Given a locale code, return true if the OS is capable of supporting it.
-// For instance, Oriya is not well supported on Windows XP and we return
-// false for "or".
-bool IsLocaleSupportedByOS(const std::string& locale);
-
 // This method returns the display name of the locale code in |display_locale|.
 
 // For example, for |locale| = "fr" and |display_locale| = "en",
diff --git a/ui/base/l10n/l10n_util_posix.cc b/ui/base/l10n/l10n_util_posix.cc
deleted file mode 100644
index 6b89259..0000000
--- a/ui/base/l10n/l10n_util_posix.cc
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include <stddef.h>
-
-#include <string>
-
-#include "base/stl_util.h"
-#include "build/build_config.h"
-
-#if defined(OS_CHROMEOS)
-#include "base/strings/string_util.h"
-#endif
-
-namespace l10n_util {
-
-bool IsLocaleSupportedByOS(const std::string& locale) {
-  // Return true blindly for now.
-  return true;
-}
-
-}  // namespace l10n_util
diff --git a/ui/base/l10n/l10n_util_win.cc b/ui/base/l10n/l10n_util_win.cc
index b244cb74..fec321f 100644
--- a/ui/base/l10n/l10n_util_win.cc
+++ b/ui/base/l10n/l10n_util_win.cc
@@ -63,10 +63,6 @@
   }
 }
 
-bool IsLocaleSupportedByOS(const std::string& locale) {
-  return true;
-}
-
 bool NeedOverrideDefaultUIFont(std::wstring* override_font_family,
                                double* font_size_scaler) {
   // This is rather simple-minded to deal with the UI font size
diff --git a/ui/chromeos/translations/ui_chromeos_strings_bn.xtb b/ui/chromeos/translations/ui_chromeos_strings_bn.xtb
index 1fd8805..af7e4eb 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_bn.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_bn.xtb
@@ -60,6 +60,7 @@
 <translation id="1538729222189715449">Linux ফাইল খোলা হচ্ছে...</translation>
 <translation id="1547964879613821194">কানাডীয় ইংরেজি</translation>
 <translation id="1556189134700913550">সবগুলিতে প্রয়োগ করুন</translation>
+<translation id="1561842594491319104">Chrome ডিভাইস</translation>
 <translation id="1572585716423026576">ওয়ালপেপার হিসেবে সেট করুন</translation>
 <translation id="158809615184981282">ফেয়ারোইজ কীবোর্ড</translation>
 <translation id="1589128298353575783"><ph name="NUMBER_OF_PB" /> পিবি</translation>
@@ -189,6 +190,7 @@
 <translation id="3064388234319122767">লিপ্যন্তরকরণ (zdravo → здраво)</translation>
 <translation id="3067790092342515856">Windows ফাইল</translation>
 <translation id="3078461028045006476"><ph name="EXTENSION_NAME" /> এর সাথে শেয়ার করুন</translation>
+<translation id="3083975830683400843">Chromebits</translation>
 <translation id="3116361045094675131">ইউকে কীবোর্ড</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3144126448740580210">সম্পন্ন হয়েছে</translation>
@@ -341,6 +343,7 @@
 <translation id="4804827417948292437">অ্যাভোকাডো</translation>
 <translation id="4823651846660089135">ডিভাইস শুধুমাত্র পঠনযোগ্য</translation>
 <translation id="4839847978919684242"><ph name="SELCTED_FILES_COUNT" /> টি আইটেম নির্বাচিত</translation>
+<translation id="4843566743023903107">Chromebases</translation>
 <translation id="4849981557599196363">জার্মান (বেলজিয়াম)</translation>
 <translation id="4850886885716139402">দেখুন</translation>
 <translation id="485316830061041779">জার্মান</translation>
@@ -469,6 +472,7 @@
 <translation id="5932901536148835538">Chromebit</translation>
 <translation id="5949281959820712067">Linux অ্যাপকে আপনার Google ড্রাইভ-এর ফাইলগুলি পরিবর্তন করার অনুমতি দিন। পরিবর্তনগুলি আপনার অন্যান্য ডিভাইসের সাথে সিঙ্ক হয়ে যাবে।</translation>
 <translation id="5955954492236143329"><ph name="NUMBER_OF_ITEMS" />টি আইটেম</translation>
+<translation id="5957366693331451795">Chromeboxes</translation>
 <translation id="5982621672636444458">বাছাই বিকল্পগুলি</translation>
 <translation id="6005282720244019462">লাতিন আমেরিকান কীবোর্ড</translation>
 <translation id="6007237601604674381">স্থানান্তরণ ব্যর্থ হয়েছে৷ <ph name="ERROR_MESSAGE" /></translation>
@@ -628,6 +632,7 @@
        <ph name="MARKUP_4" />আপনার ডাউনলোড ফোল্ডার থেকে ফাইল মুছুন<ph name="MARKUP_5" /></translation>
 <translation id="7794058097940213561">ডিভাইস বিন্যাস করুন</translation>
 <translation id="7799329977874311193"> HTML দস্তাবেজ</translation>
+<translation id="7801354353640549019">Chromebooks</translation>
 <translation id="7805768142964895445">স্থিতি</translation>
 <translation id="7821462174190887129"><ph name="FILE_COUNT" />টি পাওয়া গেছে।
     <ph name="LINE_BREAK1" />
diff --git a/ui/chromeos/translations/ui_chromeos_strings_eu.xtb b/ui/chromeos/translations/ui_chromeos_strings_eu.xtb
index 18f18ba..6790e92 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_eu.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_eu.xtb
@@ -114,7 +114,7 @@
 <translation id="2164862903024139959">Teklatu vietnamdarra (TCVN)</translation>
 <translation id="2168214441502403371">Teklatu persiarra</translation>
 <translation id="2198315389084035571">Txinera (sinplifikatua)</translation>
-<translation id="2208158072373999562">Zip fitxategia</translation>
+<translation id="2208158072373999562">ZIP artxiboa</translation>
 <translation id="2225536596944493418">Ziur <ph name="NUMBER_OF_ITEMS" /> elementu ezabatu nahi dituzula?</translation>
 <translation id="2230062665678605299">Ezin  izan da sortu "<ph name="FOLDER_NAME" />" fitxategia. <ph name="ERROR_MESSAGE" /></translation>
 <translation id="2275059641601412272">Mugitu da.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_kk.xtb b/ui/chromeos/translations/ui_chromeos_strings_kk.xtb
index 47eea753..2e475ca 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_kk.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_kk.xtb
@@ -190,7 +190,7 @@
 <translation id="3064388234319122767">Транслитерация (zdravo → здраво)</translation>
 <translation id="3067790092342515856">Windows файлдары</translation>
 <translation id="3078461028045006476"><ph name="EXTENSION_NAME" /> кеңейтімін бөлісу</translation>
-<translation id="3083975830683400843">Chromebit браузерлері</translation>
+<translation id="3083975830683400843">Chromebit құрылғылары</translation>
 <translation id="3116361045094675131">Ұлыбритания пернетақтасы</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3144126448740580210">ДАЙЫН</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_sr-Latn.xtb b/ui/chromeos/translations/ui_chromeos_strings_sr-Latn.xtb
index 0ee95c9..5f09f294 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_sr-Latn.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_sr-Latn.xtb
@@ -207,7 +207,7 @@
 <translation id="3252266817569339921">francuski</translation>
 <translation id="3254434849914415189">Izaberite podrazumevanu aplikaciju za datoteke <ph name="FILE_TYPE" />:</translation>
 <translation id="3264582393905923483">Kontekst</translation>
-<translation id="3272909651715601089">Nije uspelo otvaranje fajla „<ph name="PATH" />“</translation>
+<translation id="3272909651715601089">Nije uspelo otvaranje arhive „<ph name="PATH" />“</translation>
 <translation id="3280431534455935878">Priprema</translation>
 <translation id="3280987981688031357">Gramofonska ploča</translation>
 <translation id="3296763833017966289">gruzijski</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_sr.xtb b/ui/chromeos/translations/ui_chromeos_strings_sr.xtb
index 7b4d6e6..c799b863 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_sr.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_sr.xtb
@@ -207,7 +207,7 @@
 <translation id="3252266817569339921">француски</translation>
 <translation id="3254434849914415189">Изаберите подразумевану апликацију за датотеке <ph name="FILE_TYPE" />:</translation>
 <translation id="3264582393905923483">Контекст</translation>
-<translation id="3272909651715601089">Није успело отварање фајла „<ph name="PATH" />“</translation>
+<translation id="3272909651715601089">Није успело отварање архиве „<ph name="PATH" />“</translation>
 <translation id="3280431534455935878">Припрема</translation>
 <translation id="3280987981688031357">Грамофонска плоча</translation>
 <translation id="3296763833017966289">грузијски</translation>
diff --git a/ui/ozone/platform/drm/gpu/crtc_controller.cc b/ui/ozone/platform/drm/gpu/crtc_controller.cc
index c25af280..7e3ef3c 100644
--- a/ui/ozone/platform/drm/gpu/crtc_controller.cc
+++ b/ui/ozone/platform/drm/gpu/crtc_controller.cc
@@ -9,6 +9,7 @@
 #include "base/logging.h"
 #include "base/time/time.h"
 #include "ui/gfx/presentation_feedback.h"
+#include "ui/ozone/platform/drm/common/drm_util.h"
 #include "ui/ozone/platform/drm/gpu/drm_device.h"
 #include "ui/ozone/platform/drm/gpu/drm_dumb_buffer.h"
 #include "ui/ozone/platform/drm/gpu/drm_framebuffer.h"
@@ -22,10 +23,11 @@
                                uint32_t connector)
     : drm_(drm),
       crtc_(crtc),
-      connector_(connector) {}
+      connector_(connector),
+      state_(drm->plane_manager()->GetCrtcStateForCrtcId(crtc)) {}
 
 CrtcController::~CrtcController() {
-  if (!is_disabled_) {
+  if (!is_disabled()) {
     const std::vector<std::unique_ptr<HardwareDisplayPlane>>& all_planes =
         drm_->plane_manager()->planes();
     for (const auto& plane : all_planes) {
@@ -35,57 +37,27 @@
       }
     }
 
-    DisableCursor();
-    drm_->plane_manager()->DisableModeset(crtc_, connector_);
+    // Disable CRTC controller.
+    CommitRequest commit_request;
+    CrtcRequest crtc_request{crtc_, connector_, nullptr, {}};
+    commit_request.commit_state.push_back(std::move(crtc_request));
+    drm_->plane_manager()->Commit(std::move(commit_request),
+                                  DRM_MODE_ATOMIC_ALLOW_MODESET);
   }
 }
 
-bool CrtcController::Modeset(const DrmOverlayPlane& plane,
-                             const drmModeModeInfo& mode,
-                             const ui::HardwareDisplayPlaneList& plane_list) {
-  if (!drm_->plane_manager()->Modeset(crtc_,
-                                      plane.buffer->opaque_framebuffer_id(),
-                                      connector_, mode, plane_list)) {
-    PLOG(ERROR) << "Failed to modeset: crtc=" << crtc_
-                << " connector=" << connector_
-                << " framebuffer_id=" << plane.buffer->opaque_framebuffer_id()
-                << " mode=" << mode.hdisplay << "x" << mode.vdisplay << "@"
-                << mode.vrefresh;
-    return false;
-  }
-
-  mode_ = mode;
-  is_disabled_ = false;
-
-  // Hold modeset buffer until page flip. This fixes a crash on entering
-  // hardware mirror mode in some circumstances (bug 888553).
-  // TODO(spang): Fix this better by changing how mirrors are set up (bug
-  // 899352).
-  modeset_framebuffer_ = plane.buffer;
-
-  return true;
-}
-
-bool CrtcController::Disable() {
-  if (is_disabled_)
-    return true;
-
-  is_disabled_ = true;
-  DisableCursor();
-  return drm_->plane_manager()->DisableModeset(crtc_, connector_);
-}
-
 bool CrtcController::AssignOverlayPlanes(HardwareDisplayPlaneList* plane_list,
                                          const DrmOverlayPlaneList& overlays,
                                          bool is_modesetting) {
   // If we're in the process of modesetting, the CRTC is still disabled.
   // Once the modeset is done, we expect it to be enabled.
-  DCHECK(is_modesetting || !is_disabled_);
+  DCHECK(is_modesetting || !is_disabled());
 
   const DrmOverlayPlane* primary = DrmOverlayPlane::GetPrimaryPlane(overlays);
-  if (primary && !drm_->plane_manager()->ValidatePrimarySize(*primary, mode_)) {
+  if (primary &&
+      !drm_->plane_manager()->ValidatePrimarySize(*primary, state_.mode)) {
     VLOG(2) << "Trying to pageflip a buffer with the wrong size. Expected "
-            << mode_.hdisplay << "x" << mode_.vdisplay << " got "
+            << ModeSize(state_.mode).ToString() << " got "
             << primary->buffer->size().ToString() << " for"
             << " crtc=" << crtc_ << " connector=" << connector_;
     return true;
@@ -104,7 +76,7 @@
 }
 
 void CrtcController::SetCursor(uint32_t handle, const gfx::Size& size) {
-  if (is_disabled_)
+  if (is_disabled())
     return;
   if (!drm_->SetCursor(crtc_, handle, size)) {
     PLOG(ERROR) << "drmModeSetCursor: device " << drm_->device_path().value()
@@ -114,20 +86,9 @@
 }
 
 void CrtcController::MoveCursor(const gfx::Point& location) {
-  if (is_disabled_)
+  if (is_disabled())
     return;
   drm_->MoveCursor(crtc_, location);
 }
 
-void CrtcController::OnPageFlipComplete() {
-  modeset_framebuffer_ = nullptr;
-}
-
-void CrtcController::DisableCursor() {
-  if (!drm_->SetCursor(crtc_, 0, gfx::Size())) {
-    PLOG(ERROR) << "drmModeSetCursor: device " << drm_->device_path().value()
-                << " crtc " << crtc_ << " disable";
-  }
-}
-
 }  // namespace ui
diff --git a/ui/ozone/platform/drm/gpu/crtc_controller.h b/ui/ozone/platform/drm/gpu/crtc_controller.h
index 258093f..0ecb830 100644
--- a/ui/ozone/platform/drm/gpu/crtc_controller.h
+++ b/ui/ozone/platform/drm/gpu/crtc_controller.h
@@ -34,21 +34,11 @@
                  uint32_t connector);
   ~CrtcController();
 
-  drmModeModeInfo mode() const { return mode_; }
+  drmModeModeInfo mode() const { return state_.mode; }
   uint32_t crtc() const { return crtc_; }
   uint32_t connector() const { return connector_; }
   const scoped_refptr<DrmDevice>& drm() const { return drm_; }
-  bool is_disabled() const { return is_disabled_; }
-
-  // Calls the appropriate Plane Manager to perform the initial modesetting
-  // operation using |plane| as the buffer for the primary plane. The CRTC
-  // configuration is specified by |mode|.
-  bool Modeset(const DrmOverlayPlane& plane,
-               const drmModeModeInfo& mode,
-               const ui::HardwareDisplayPlaneList& plane_list);
-
-  // Disables the controller.
-  bool Disable();
+  bool is_disabled() const { return !state_.properties.active.value; }
 
   bool AssignOverlayPlanes(HardwareDisplayPlaneList* plane_list,
                            const DrmOverlayPlaneList& planes,
@@ -67,11 +57,7 @@
   void SetCursor(uint32_t handle, const gfx::Size& size);
   void MoveCursor(const gfx::Point& location);
 
-  void OnPageFlipComplete();
-
  private:
-  void DisableCursor();
-
   const scoped_refptr<DrmDevice> drm_;
 
   const uint32_t crtc_;
@@ -79,13 +65,7 @@
   // TODO(dnicoara) Add support for hardware mirroring (multiple connectors).
   const uint32_t connector_;
 
-  drmModeModeInfo mode_ = {};
-
-  scoped_refptr<DrmFramebuffer> modeset_framebuffer_;
-
-  // Keeps track of the CRTC state. If a surface has been bound, then the value
-  // is set to false. Otherwise it is true.
-  bool is_disabled_ = true;
+  const HardwareDisplayPlaneManager::CrtcState& state_;
 
   DISALLOW_COPY_AND_ASSIGN(CrtcController);
 };
diff --git a/ui/ozone/platform/drm/gpu/drm_display_unittest.cc b/ui/ozone/platform/drm/gpu/drm_display_unittest.cc
index 62dffaba..b8af256 100644
--- a/ui/ozone/platform/drm/gpu/drm_display_unittest.cc
+++ b/ui/ozone/platform/drm/gpu/drm_display_unittest.cc
@@ -52,14 +52,7 @@
                     const std::vector<display::GammaRampRGBEntry>& degamma_lut,
                     const std::vector<display::GammaRampRGBEntry>& gamma_lut));
 
-  bool Modeset(uint32_t crtc_id,
-               uint32_t framebuffer_id,
-               uint32_t connector_id,
-               const drmModeModeInfo& mode,
-               const HardwareDisplayPlaneList& plane_list) override {
-    return false;
-  }
-  bool DisableModeset(uint32_t crtc_id, uint32_t connector) override {
+  bool Commit(CommitRequest commit_request, uint32_t flags) override {
     return false;
   }
   bool Commit(HardwareDisplayPlaneList* plane_list,
diff --git a/ui/ozone/platform/drm/gpu/drm_window_unittest.cc b/ui/ozone/platform/drm/gpu/drm_window_unittest.cc
index 389d3d7c..1edd0cb2 100644
--- a/ui/ozone/platform/drm/gpu/drm_window_unittest.cc
+++ b/ui/ozone/platform/drm/gpu/drm_window_unittest.cc
@@ -85,6 +85,8 @@
   }
 
  protected:
+  void InitializeDrmState(ui::MockDrmDevice* drm, bool is_atomic = true);
+
   base::test::SingleThreadTaskEnvironment task_environment_{
       base::test::SingleThreadTaskEnvironment::MainThreadType::UI};
   scoped_refptr<ui::MockDrmDevice> drm_;
@@ -96,6 +98,14 @@
   gfx::PresentationFeedback last_presentation_feedback_;
 
  private:
+  struct PlaneState {
+    std::vector<uint32_t> formats;
+  };
+
+  struct CrtcState {
+    std::vector<PlaneState> planes;
+  };
+
   DISALLOW_COPY_AND_ASSIGN(DrmWindowTest);
 };
 
@@ -107,11 +117,13 @@
   drm_ = new ui::MockDrmDevice(std::move(gbm_device));
   screen_manager_ = std::make_unique<ui::ScreenManager>();
 
+  InitializeDrmState(drm_.get());
+
   screen_manager_->AddDisplayController(drm_, kDefaultCrtc, kDefaultConnector);
   std::vector<ui::ScreenManager::ControllerConfigParams> controllers_to_enable;
-  controllers_to_enable.push_back(
-      {1 /*display_id*/, drm_, kDefaultCrtc, kDefaultConnector, gfx::Point(),
-       std::make_unique<drmModeModeInfo>(kDefaultMode)});
+  controllers_to_enable.emplace_back(
+      1 /*display_id*/, drm_, kDefaultCrtc, kDefaultConnector, gfx::Point(),
+      std::make_unique<drmModeModeInfo>(kDefaultMode));
   screen_manager_->ConfigureDisplayControllers(controllers_to_enable);
 
   drm_device_manager_ = std::make_unique<ui::DrmDeviceManager>(nullptr);
@@ -130,6 +142,110 @@
   window->Shutdown();
 }
 
+void DrmWindowTest::InitializeDrmState(ui::MockDrmDevice* drm, bool is_atomic) {
+  // A Sample of CRTC states.
+  std::vector<CrtcState> crtc_states = {
+      {
+          /* .planes = */
+          {{/* .formats = */ {DRM_FORMAT_XRGB8888}}},
+      },
+      {
+          /* .planes = */
+          {{/* .formats = */ {DRM_FORMAT_XRGB8888}}},
+      },
+  };
+
+  constexpr uint32_t kPlaneIdBase = 300;
+  constexpr uint32_t kInFormatsBlobPropIdBase = 400;
+
+  std::vector<ui::MockDrmDevice::CrtcProperties> crtc_properties(
+      crtc_states.size());
+  std::map<uint32_t, std::string> crtc_property_names = {
+      {1000, "ACTIVE"},
+      {1001, "MODE_ID"},
+  };
+
+  std::vector<ui::MockDrmDevice::ConnectorProperties> connector_properties(3);
+  std::map<uint32_t, std::string> connector_property_names = {
+      {2000, "CRTC_ID"},
+  };
+  for (size_t i = 0; i < connector_properties.size(); ++i) {
+    connector_properties[i].id = kDefaultConnector + i;
+    for (const auto& pair : connector_property_names) {
+      connector_properties[i].properties.push_back(
+          {/* .id = */ pair.first, /* .value = */ 0});
+    }
+  }
+
+  std::vector<ui::MockDrmDevice::PlaneProperties> plane_properties;
+  std::map<uint32_t, std::string> plane_property_names = {
+      // Add all required properties.
+      {3000, "CRTC_ID"},
+      {3001, "CRTC_X"},
+      {3002, "CRTC_Y"},
+      {3003, "CRTC_W"},
+      {3004, "CRTC_H"},
+      {3005, "FB_ID"},
+      {3006, "SRC_X"},
+      {3007, "SRC_Y"},
+      {3008, "SRC_W"},
+      {3009, "SRC_H"},
+      // Defines some optional properties we use for convenience.
+      {3010, "type"},
+      {3011, "IN_FORMATS"},
+  };
+
+  uint32_t plane_id = kPlaneIdBase;
+  uint32_t property_id = kInFormatsBlobPropIdBase;
+
+  for (size_t crtc_idx = 0; crtc_idx < crtc_states.size(); ++crtc_idx) {
+    crtc_properties[crtc_idx].id = kDefaultCrtc + crtc_idx;
+    for (const auto& pair : crtc_property_names) {
+      crtc_properties[crtc_idx].properties.push_back(
+          {/* .id = */ pair.first, /* .value = */ 0});
+    }
+
+    std::vector<ui::MockDrmDevice::PlaneProperties> crtc_plane_properties(
+        crtc_states[crtc_idx].planes.size());
+    for (size_t plane_idx = 0; plane_idx < crtc_states[crtc_idx].planes.size();
+         ++plane_idx) {
+      crtc_plane_properties[plane_idx].id = plane_id++;
+      crtc_plane_properties[plane_idx].crtc_mask = 1 << crtc_idx;
+
+      for (const auto& pair : plane_property_names) {
+        uint64_t value = 0;
+        if (pair.first == 3010) {
+          value =
+              plane_idx == 0 ? DRM_PLANE_TYPE_PRIMARY : DRM_PLANE_TYPE_OVERLAY;
+        } else if (pair.first == 3011) {
+          value = property_id++;
+          drm->SetPropertyBlob(ui::MockDrmDevice::AllocateInFormatsBlob(
+              value, crtc_states[crtc_idx].planes[plane_idx].formats,
+              std::vector<drm_format_modifier>()));
+        } else if (pair.first >= 3001 && pair.first <= 3009) {
+          value = 27;
+        }
+
+        crtc_plane_properties[plane_idx].properties.push_back(
+            {/* .id = */ pair.first, /* .value = */ value});
+      }
+    }
+
+    plane_properties.insert(plane_properties.end(),
+                            crtc_plane_properties.begin(),
+                            crtc_plane_properties.end());
+  }
+
+  std::map<uint32_t, std::string> property_names;
+  property_names.insert(crtc_property_names.begin(), crtc_property_names.end());
+  property_names.insert(connector_property_names.begin(),
+                        connector_property_names.end());
+  property_names.insert(plane_property_names.begin(),
+                        plane_property_names.end());
+  drm->InitializeState(crtc_properties, connector_properties, plane_properties,
+                       property_names, /*is_atomic=*/false);
+}
+
 TEST_F(DrmWindowTest, SetCursorImage) {
   const gfx::Size cursor_size(6, 4);
   screen_manager_->GetWindow(kDefaultWidgetHandle)
@@ -166,14 +282,15 @@
   auto gbm_device = std::make_unique<ui::MockGbmDevice>();
   scoped_refptr<ui::MockDrmDevice> drm =
       new ui::MockDrmDevice(std::move(gbm_device));
+  InitializeDrmState(drm.get());
 
   screen_manager_->AddDisplayController(drm, kDefaultCrtc, kDefaultConnector);
 
   std::vector<ui::ScreenManager::ControllerConfigParams> controllers_to_enable;
-  controllers_to_enable.push_back(
-      {2 /*display_id*/, drm, kDefaultCrtc, kDefaultConnector,
-       gfx::Point(0, kDefaultMode.vdisplay),
-       std::make_unique<drmModeModeInfo>(kDefaultMode)});
+  controllers_to_enable.emplace_back(
+      2 /*display_id*/, drm, kDefaultCrtc, kDefaultConnector,
+      gfx::Point(0, kDefaultMode.vdisplay),
+      std::make_unique<drmModeModeInfo>(kDefaultMode));
   screen_manager_->ConfigureDisplayControllers(controllers_to_enable);
 
   // Move window to the display on the new device.
diff --git a/ui/ozone/platform/drm/gpu/hardware_display_controller.cc b/ui/ozone/platform/drm/gpu/hardware_display_controller.cc
index 6f24033..3a7ae18 100644
--- a/ui/ozone/platform/drm/gpu/hardware_display_controller.cc
+++ b/ui/ozone/platform/drm/gpu/hardware_display_controller.cc
@@ -89,22 +89,23 @@
                                             bool use_current_crtc_mode,
                                             const drmModeModeInfo& mode) {
   DCHECK(primary.buffer.get());
-  bool status = true;
+  CommitRequest commit_request;
 
   GetDrmDevice()->plane_manager()->BeginFrame(&owned_hardware_planes_);
-  DrmOverlayPlaneList plane_list;
-  plane_list.push_back(primary.Clone());
+
+  commit_request.plane_list = &owned_hardware_planes_;
 
   for (const auto& controller : crtc_controllers_) {
-    status &=
-        controller->AssignOverlayPlanes(&owned_hardware_planes_, plane_list,
-                                        /*is_modesetting=*/true);
-
-    status &= controller->Modeset(
-        primary, use_current_crtc_mode ? controller->mode() : mode,
-        owned_hardware_planes_);
+    drmModeModeInfo modeset_mode =
+        use_current_crtc_mode ? controller->mode() : mode;
+    CrtcRequest crtc_request{controller->crtc(), controller->connector(),
+                             &primary, modeset_mode};
+    commit_request.commit_state.push_back(std::move(crtc_request));
   }
 
+  bool status = GetDrmDevice()->plane_manager()->Commit(
+      std::move(commit_request), DRM_MODE_ATOMIC_ALLOW_MODESET);
+
   is_disabled_ = false;
   ResetCursor();
   OnModesetComplete(primary);
@@ -114,16 +115,17 @@
 void HardwareDisplayController::Disable() {
   TRACE_EVENT0("drm", "HDC::Disable");
 
-  for (const auto& controller : crtc_controllers_)
-    // TODO(crbug.com/1015104): Modeset and Disable operations should go
-    // together. The current split is due to how the legacy/atomic split
-    // evolved. It should be cleaned up under the more generic
-    // HardwareDisplayPlaneManager{Legacy,Atomic} calls.
-    controller->Disable();
+  CommitRequest commit_request;
+  commit_request.plane_list = &owned_hardware_planes_;
 
-  bool ret = GetDrmDevice()->plane_manager()->DisableOverlayPlanes(
-      &owned_hardware_planes_);
-  LOG_IF(ERROR, !ret) << "Can't disable overlays when disabling HDC.";
+  for (const auto& controller : crtc_controllers_) {
+    CrtcRequest crtc_request{
+        controller->crtc(), controller->connector(), nullptr, {}};
+    commit_request.commit_state.push_back(std::move(crtc_request));
+  }
+
+  GetDrmDevice()->plane_manager()->Commit(std::move(commit_request),
+                                          DRM_MODE_ATOMIC_ALLOW_MODESET);
 
   is_disabled_ = true;
 }
@@ -356,8 +358,10 @@
     return;  // Modeset occured during this page flip.
   time_of_last_flip_ = presentation_feedback.timestamp;
   current_planes_ = std::move(pending_planes);
-  for (const auto& controller : crtc_controllers_)
-    controller->OnPageFlipComplete();
+  for (const auto& controller : crtc_controllers_) {
+    GetDrmDevice()->plane_manager()->ResetModesetBufferOfCrtc(
+        controller->crtc());
+  }
   page_flip_request_ = nullptr;
 }
 
diff --git a/ui/ozone/platform/drm/gpu/hardware_display_controller_unittest.cc b/ui/ozone/platform/drm/gpu/hardware_display_controller_unittest.cc
index 841cf8f..74a4718 100644
--- a/ui/ozone/platform/drm/gpu/hardware_display_controller_unittest.cc
+++ b/ui/ozone/platform/drm/gpu/hardware_display_controller_unittest.cc
@@ -129,11 +129,6 @@
   auto gbm_device = std::make_unique<ui::MockGbmDevice>();
   drm_ = new ui::MockDrmDevice(std::move(gbm_device));
   InitializeDrmDevice(/* use_atomic= */ true);
-
-  controller_ = std::make_unique<ui::HardwareDisplayController>(
-      std::make_unique<ui::CrtcController>(drm_.get(), kPrimaryCrtc,
-                                           kConnectorIdBase),
-      gfx::Point());
 }
 
 void HardwareDisplayControllerTest::TearDown() {
@@ -216,8 +211,20 @@
                         connector_property_names.end());
   property_names.insert(plane_property_names.begin(),
                         plane_property_names.end());
+
+  // This will change the plane_manager of the drm.
+  // HardwareDisplayController is tied to the plane_manager CRTC states.
+  // Destruct the controller before destructing the plane manager its CRTC
+  // controllers are tied to.
+  controller_ = nullptr;
   drm_->InitializeState(crtc_properties, connector_properties, plane_properties,
                         property_names, use_atomic);
+  // Initialize a new HardwareDisplayController with the new Plane Manager of
+  // the DRM.
+  controller_ = std::make_unique<ui::HardwareDisplayController>(
+      std::make_unique<ui::CrtcController>(drm_.get(), kPrimaryCrtc,
+                                           kConnectorIdBase),
+      gfx::Point());
 }
 
 void HardwareDisplayControllerTest::SchedulePageFlip(
@@ -505,13 +512,12 @@
 }
 
 TEST_F(HardwareDisplayControllerTest, PageflipMirroredControllers) {
-  controller_->AddCrtc(
-      std::unique_ptr<ui::CrtcController>(new ui::CrtcController(
-          drm_.get(), kSecondaryCrtc, kConnectorIdBase + 1)));
+  controller_->AddCrtc(std::make_unique<ui::CrtcController>(
+      drm_.get(), kSecondaryCrtc, kConnectorIdBase + 1));
 
   ui::DrmOverlayPlane plane1(CreateBuffer(), nullptr);
   EXPECT_TRUE(controller_->Modeset(plane1, kDefaultMode));
-  EXPECT_EQ(2, drm_->get_commit_count());
+  EXPECT_EQ(1, drm_->get_commit_count());
 
   ui::DrmOverlayPlane plane2(CreateBuffer(), nullptr);
   std::vector<ui::DrmOverlayPlane> planes;
@@ -520,7 +526,7 @@
   drm_->RunCallbacks();
   EXPECT_EQ(gfx::SwapResult::SWAP_ACK, last_swap_result_);
   EXPECT_EQ(1, page_flips_);
-  EXPECT_EQ(3, drm_->get_commit_count());
+  EXPECT_EQ(2, drm_->get_commit_count());
   // Verify only the displays have a valid framebuffer on the primary plane.
   // First display:
   EXPECT_NE(0u, GetPlanePropertyValue(kPlaneOffset, "FB_ID"));
diff --git a/ui/ozone/platform/drm/gpu/hardware_display_plane_atomic.cc b/ui/ozone/platform/drm/gpu/hardware_display_plane_atomic.cc
index c47cedb..acff6ed 100644
--- a/ui/ozone/platform/drm/gpu/hardware_display_plane_atomic.cc
+++ b/ui/ozone/platform/drm/gpu/hardware_display_plane_atomic.cc
@@ -153,7 +153,6 @@
     return false;
   }
 
-  crtc_id_ = assigned_props_.crtc_id.value;
   // Update properties_ if the setting the props succeeded.
   properties_ = assigned_props_;
   return true;
@@ -168,4 +167,8 @@
   return AddPropertyIfValid(property_set, id_, properties_.plane_ctm);
 }
 
+uint32_t HardwareDisplayPlaneAtomic::AssignedCrtcId() const {
+  return assigned_props_.crtc_id.value;
+}
+
 }  // namespace ui
diff --git a/ui/ozone/platform/drm/gpu/hardware_display_plane_atomic.h b/ui/ozone/platform/drm/gpu/hardware_display_plane_atomic.h
index 077e586c..5043b987 100644
--- a/ui/ozone/platform/drm/gpu/hardware_display_plane_atomic.h
+++ b/ui/ozone/platform/drm/gpu/hardware_display_plane_atomic.h
@@ -37,10 +37,9 @@
 
   bool SetPlaneCtm(drmModeAtomicReq* property_set, uint32_t ctm_blob_id);
 
-  uint32_t crtc_id() { return crtc_id_; }
+  uint32_t AssignedCrtcId() const;
 
  private:
-  uint32_t crtc_id_ = 0;  // Updated after commit.
   // Intermediate variable between Assign()ment and Set()ting.
   HardwareDisplayPlane::Properties assigned_props_;
 
diff --git a/ui/ozone/platform/drm/gpu/hardware_display_plane_manager.cc b/ui/ozone/platform/drm/gpu/hardware_display_plane_manager.cc
index c3d7fdc..c27423b 100644
--- a/ui/ozone/platform/drm/gpu/hardware_display_plane_manager.cc
+++ b/ui/ozone/platform/drm/gpu/hardware_display_plane_manager.cc
@@ -26,6 +26,13 @@
 
 HardwareDisplayPlaneList::~HardwareDisplayPlaneList() = default;
 
+CommitRequest::CommitRequest() = default;
+CommitRequest::CommitRequest(const CommitRequest& other) {
+  commit_state = other.commit_state;
+  plane_list = other.plane_list;
+}
+CommitRequest::~CommitRequest() = default;
+
 HardwareDisplayPlaneList::PageFlipInfo::PageFlipInfo(uint32_t crtc_id,
                                                      uint32_t framebuffer)
     : crtc_id(crtc_id), framebuffer(framebuffer) {}
@@ -429,4 +436,59 @@
   }
 }
 
+const HardwareDisplayPlaneManager::CrtcState&
+HardwareDisplayPlaneManager::GetCrtcStateForCrtcId(uint32_t crtc_id) {
+  return CrtcStateForCrtcId(crtc_id);
+}
+
+HardwareDisplayPlaneManager::CrtcState&
+HardwareDisplayPlaneManager::CrtcStateForCrtcId(uint32_t crtc_id) {
+  int crtc_index = LookupCrtcIndex(crtc_id);
+  DCHECK_GE(crtc_index, 0);
+  return crtc_state_[crtc_index];
+}
+
+void HardwareDisplayPlaneManager::UpdateCrtcAndPlaneStatesAfterModeset(
+    const CommitRequest& commit_request) {
+  bool should_disable_overlay_planes = false;
+
+  for (const auto& crtc_request : commit_request.commit_state) {
+    bool is_enabled = !!crtc_request.primary_plane;
+
+    int connector_index = LookupConnectorIndex(crtc_request.connector_id);
+    DCHECK_GE(connector_index, 0);
+    ConnectorProperties& connector_props = connectors_props_[connector_index];
+    connector_props.crtc_id.value = is_enabled ? crtc_request.crtc_id : 0;
+
+    CrtcState& crtc_state = CrtcStateForCrtcId(crtc_request.crtc_id);
+    crtc_state.properties.active.value = static_cast<uint64_t>(is_enabled);
+
+    if (is_enabled) {
+      crtc_state.mode = crtc_request.mode;
+      crtc_state.modeset_framebuffer = crtc_request.primary_plane->buffer;
+    } else {
+      crtc_state.properties.mode_id.value = 0;
+      should_disable_overlay_planes = true;
+      // TODO(crbug/1135291): Use atomic APIs to reset cursor plane.
+      if (!drm_->SetCursor(crtc_request.crtc_id, 0, gfx::Size())) {
+        PLOG(ERROR) << "Failed to drmModeSetCursor: device:"
+                    << drm_->device_path().value()
+                    << " crtc:" << crtc_request.crtc_id;
+      }
+    }
+  }
+
+  if (should_disable_overlay_planes && commit_request.plane_list) {
+    // TODO(markyacoub): DisableOverlayPlanes can be part of the commit request.
+    bool status = DisableOverlayPlanes(commit_request.plane_list);
+    LOG_IF(ERROR, !status) << "Can't disable overlays when disabling HDC.";
+    commit_request.plane_list->plane_list.clear();
+  }
+}
+
+void HardwareDisplayPlaneManager::ResetModesetBufferOfCrtc(uint32_t crtc_id) {
+  CrtcState& crtc_state = CrtcStateForCrtcId(crtc_id);
+  crtc_state.modeset_framebuffer = nullptr;
+}
+
 }  // namespace ui
diff --git a/ui/ozone/platform/drm/gpu/hardware_display_plane_manager.h b/ui/ozone/platform/drm/gpu/hardware_display_plane_manager.h
index 92d24a5..89fc0cc 100644
--- a/ui/ozone/platform/drm/gpu/hardware_display_plane_manager.h
+++ b/ui/ozone/platform/drm/gpu/hardware_display_plane_manager.h
@@ -54,8 +54,63 @@
   ScopedDrmAtomicReqPtr atomic_property_set;
 };
 
+// Container holding information for a single CRTC that need to be modeset.
+// TODO(markyacoub): PAGE_FLIP could re-use the same CrtcRequest. The difference
+// between MODESET and PAGE_FLIP are minimal.
+struct CrtcRequest {
+  uint32_t crtc_id = 0;
+  uint32_t connector_id = 0;
+  const DrmOverlayPlane* primary_plane = nullptr;
+  drmModeModeInfo mode = {};
+};
+
+// Container holding all parameters required to perform a modeset.
+struct CommitRequest {
+  CommitRequest();
+  CommitRequest(const CommitRequest& other);
+  ~CommitRequest();
+  std::vector<CrtcRequest> commit_state;
+  HardwareDisplayPlaneList* plane_list = nullptr;
+};
+
 class HardwareDisplayPlaneManager {
  public:
+  struct CrtcProperties {
+    // Unique identifier for the CRTC. This must be greater than 0 to be valid.
+    uint32_t id;
+    // Keeps track of the CRTC state. If a surface has been bound, then the
+    // value is set to true. Otherwise it is false.
+    DrmDevice::Property active;
+    DrmDevice::Property mode_id;
+    // Optional properties.
+    DrmDevice::Property ctm;
+    DrmDevice::Property gamma_lut;
+    DrmDevice::Property gamma_lut_size;
+    DrmDevice::Property degamma_lut;
+    DrmDevice::Property degamma_lut_size;
+    DrmDevice::Property out_fence_ptr;
+    DrmDevice::Property background_color;
+  };
+
+  struct CrtcState {
+    CrtcState();
+    ~CrtcState();
+    CrtcState(const CrtcState&) = delete;
+    CrtcState& operator=(const CrtcState&) = delete;
+    CrtcState(CrtcState&&);
+
+    drmModeModeInfo mode = {};
+    scoped_refptr<DrmFramebuffer> modeset_framebuffer;
+
+    CrtcProperties properties = {};
+
+    // Cached blobs for the properties since the CRTC properties are applied on
+    // the next page flip and we need to keep the properties valid until then.
+    ScopedDrmPropertyBlob ctm_blob;
+    ScopedDrmPropertyBlob gamma_lut_blob;
+    ScopedDrmPropertyBlob degamma_lut_blob;
+  };
+
   explicit HardwareDisplayPlaneManager(DrmDevice* drm);
   virtual ~HardwareDisplayPlaneManager();
 
@@ -63,14 +118,13 @@
   // or crtcs found.
   bool Initialize();
 
-  // Performs modesetting, either atomic or legacy, depending on the device.
-  virtual bool Modeset(uint32_t crtc_id,
-                       uint32_t framebuffer_id,
-                       uint32_t connector_id,
-                       const drmModeModeInfo& mode,
-                       const HardwareDisplayPlaneList& plane_list) = 0;
-
-  virtual bool DisableModeset(uint32_t crtc_id, uint32_t connector) = 0;
+  // |commit_request| contains all the necessary information to build the
+  // atomic/legacy request. It acts as a thin wrapper that looks like the atomic
+  // request. It then gets converted into an atomic request for DRM atomic and
+  // has all the parameters for a legacy request.
+  // TODO(markyacoub): Consolidate this Commit() with the overloaded page flip
+  // Commit() down below.
+  virtual bool Commit(CommitRequest commit_request, uint32_t flags) = 0;
 
   // Clears old frame state out. Must be called before any AssignOverlayPlanes
   // calls.
@@ -146,45 +200,26 @@
   // called whenever a DRM hotplug event is received via UDEV.
   void ResetConnectorsCache(const ScopedDrmResourcesPtr& resources);
 
+  // Get Immutable CRTC State.
+  const CrtcState& GetCrtcStateForCrtcId(uint32_t crtc_id);
+
+  // TODO(markyacoub): this seems hacky, this could be cleaned up a bit. Clarify
+  // which resources needed to be tracked internally in
+  // HardwareDisplayPlaneManager and which should be taken care of by the
+  // caller.
+  void ResetModesetBufferOfCrtc(uint32_t crtc_id);
+
  protected:
   struct ConnectorProperties {
     uint32_t id;
     DrmDevice::Property crtc_id;
   };
 
-  struct CrtcProperties {
-    // Unique identifier for the CRTC. This must be greater than 0 to be valid.
-    uint32_t id;
-    DrmDevice::Property active;
-    DrmDevice::Property mode_id;
-    // Optional properties.
-    DrmDevice::Property ctm;
-    DrmDevice::Property gamma_lut;
-    DrmDevice::Property gamma_lut_size;
-    DrmDevice::Property degamma_lut;
-    DrmDevice::Property degamma_lut_size;
-    DrmDevice::Property out_fence_ptr;
-    DrmDevice::Property background_color;
-  };
-
-  struct CrtcState {
-    CrtcState();
-    ~CrtcState();
-    CrtcState(CrtcState&&);
-
-    CrtcProperties properties = {};
-
-    // Cached blobs for the properties since the CRTC properties are applied on
-    // the next page flip and we need to keep the properties valid until then.
-    ScopedDrmPropertyBlob ctm_blob;
-    ScopedDrmPropertyBlob gamma_lut_blob;
-    ScopedDrmPropertyBlob degamma_lut_blob;
-
-    DISALLOW_COPY_AND_ASSIGN(CrtcState);
-  };
-
   bool InitializeCrtcState();
 
+  void UpdateCrtcAndPlaneStatesAfterModeset(
+      const CommitRequest& commit_request);
+
   // As the CRTC is being initialized, all connectors connected to it should
   // be disabled. This is a workaround for a bug on Hatch where Puff enables
   // a connector in dev mode before Chrome even starts. The kernel maps the HW
@@ -217,6 +252,9 @@
   int LookupCrtcIndex(uint32_t crtc_id) const;
   int LookupConnectorIndex(uint32_t connector_idx) const;
 
+  // Get Mutable CRTC State.
+  CrtcState& CrtcStateForCrtcId(uint32_t crtc_id);
+
   // Returns true if |plane| can support |overlay| and compatible with
   // |crtc_index|.
   virtual bool IsCompatible(HardwareDisplayPlane* plane,
diff --git a/ui/ozone/platform/drm/gpu/hardware_display_plane_manager_atomic.cc b/ui/ozone/platform/drm/gpu/hardware_display_plane_manager_atomic.cc
index c27d80e..32b3544 100644
--- a/ui/ozone/platform/drm/gpu/hardware_display_plane_manager_atomic.cc
+++ b/ui/ozone/platform/drm/gpu/hardware_display_plane_manager_atomic.cc
@@ -51,6 +51,18 @@
   return nullptr;
 }
 
+std::vector<uint32_t> GetCrtcIdsOfPlanes(
+    const HardwareDisplayPlaneList& plane_list) {
+  std::vector<uint32_t> crtcs;
+  for (HardwareDisplayPlane* plane : plane_list.plane_list) {
+    HardwareDisplayPlaneAtomic* atomic_plane =
+        static_cast<HardwareDisplayPlaneAtomic*>(plane);
+    if (crtcs.empty() || crtcs.back() != atomic_plane->AssignedCrtcId())
+      crtcs.push_back(atomic_plane->AssignedCrtcId());
+  }
+  return crtcs;
+}
+
 }  // namespace
 
 HardwareDisplayPlaneManagerAtomic::HardwareDisplayPlaneManagerAtomic(
@@ -60,74 +72,120 @@
 HardwareDisplayPlaneManagerAtomic::~HardwareDisplayPlaneManagerAtomic() =
     default;
 
-bool HardwareDisplayPlaneManagerAtomic::Modeset(
+bool HardwareDisplayPlaneManagerAtomic::SetCrtcProps(
+    drmModeAtomicReq* atomic_request,
     uint32_t crtc_id,
-    uint32_t framebuffer_id,
+    bool set_active,
+    uint32_t mode_id) {
+  // Only making a copy here to retrieve the the props IDs. The state will be
+  // updated only after a successful modeset.
+  CrtcProperties modeset_props = GetCrtcStateForCrtcId(crtc_id).properties;
+  modeset_props.active.value = static_cast<uint64_t>(set_active);
+  modeset_props.mode_id.value = mode_id;
+
+  bool status =
+      AddPropertyIfValid(atomic_request, crtc_id, modeset_props.active);
+  status &= AddPropertyIfValid(atomic_request, crtc_id, modeset_props.mode_id);
+  return status;
+}
+
+bool HardwareDisplayPlaneManagerAtomic::SetConnectorProps(
+    drmModeAtomicReq* atomic_request,
     uint32_t connector_id,
-    const drmModeModeInfo& mode,
-    const HardwareDisplayPlaneList& plane_list) {
-  const int connector_idx = LookupConnectorIndex(connector_id);
-  DCHECK_GE(connector_idx, 0);
-  connectors_props_[connector_idx].crtc_id.value = crtc_id;
-  bool res =
-      AddPropertyIfValid(plane_list.atomic_property_set.get(), connector_id,
-                         connectors_props_[connector_idx].crtc_id);
+    uint32_t crtc_id) {
+  int connector_index = LookupConnectorIndex(connector_id);
+  DCHECK_GE(connector_index, 0);
+  // Only making a copy here to retrieve the the props IDs. The state will be
+  // updated only after a successful modeset.
+  ConnectorProperties connector_props = connectors_props_[connector_index];
+  connector_props.crtc_id.value = crtc_id;
 
-  const int crtc_idx = LookupCrtcIndex(crtc_id);
-  DCHECK_GE(crtc_idx, 0);
-  crtc_state_[crtc_idx].properties.active.value = 1UL;
-  ScopedDrmPropertyBlob mode_blob =
-      drm_->CreatePropertyBlob(&mode, sizeof(mode));
-  crtc_state_[crtc_idx].properties.mode_id.value =
-      mode_blob ? mode_blob->id() : 0;
-
-  res &= AddPropertyIfValid(plane_list.atomic_property_set.get(), crtc_id,
-                            crtc_state_[crtc_idx].properties.active);
-  res &= AddPropertyIfValid(plane_list.atomic_property_set.get(), crtc_id,
-                            crtc_state_[crtc_idx].properties.mode_id);
-
-  DCHECK(res);
-  return Commit(const_cast<HardwareDisplayPlaneList*>(&plane_list),
-                /*should_modeset=*/true,
-                /*page_flip_request=*/nullptr,
-                /*out_fence=*/nullptr);
+  return AddPropertyIfValid(atomic_request, connector_id,
+                            connector_props.crtc_id);
 }
 
-bool HardwareDisplayPlaneManagerAtomic::DisableModeset(uint32_t crtc_id,
-                                                       uint32_t connector) {
-  ScopedDrmAtomicReqPtr property_set(drmModeAtomicAlloc());
+bool HardwareDisplayPlaneManagerAtomic::Commit(CommitRequest commit_request,
+                                               uint32_t flags) {
+  bool status = true;
+  bool should_set_props_for_enable = false;
+  ScopedDrmAtomicReqPtr atomic_request(drmModeAtomicAlloc());
 
-  const int connector_idx = LookupConnectorIndex(connector);
-  DCHECK_GE(connector_idx, 0);
-  connectors_props_[connector_idx].crtc_id.value = 0UL;
-  bool res = AddPropertyIfValid(property_set.get(), connector,
-                                connectors_props_[connector_idx].crtc_id);
+  std::vector<ScopedDrmPropertyBlob> scoped_blobs;
+  std::vector<DrmOverlayPlaneList> scoped_overlay_lists;
 
-  const int crtc_idx = LookupCrtcIndex(crtc_id);
-  DCHECK_GE(crtc_idx, 0);
-  crtc_state_[crtc_idx].properties.active.value = 0UL;
-  crtc_state_[crtc_idx].properties.mode_id.value = 0UL;
-  res &= AddPropertyIfValid(property_set.get(), crtc_id,
-                            crtc_state_[crtc_idx].properties.active);
-  res &= AddPropertyIfValid(property_set.get(), crtc_id,
-                            crtc_state_[crtc_idx].properties.mode_id);
+  for (const auto& crtc_request : commit_request.commit_state) {
+    uint32_t crtc_id = crtc_request.crtc_id;
+    bool should_enable = crtc_request.primary_plane;
 
-  DCHECK(res);
-  return drm_->CommitProperties(property_set.get(),
-                                DRM_MODE_ATOMIC_ALLOW_MODESET, 1, nullptr);
+    if (should_enable) {
+      auto mode_blob = drm_->CreatePropertyBlob(&crtc_request.mode,
+                                                sizeof(crtc_request.mode));
+      // TODO(markyacoub): failed |status|'s should be made as DCHECKs. The only
+      // reason some of these would be failing is OOM. If we OOM-ed there's no
+      // point in trying to recover.
+      status &= (mode_blob != nullptr);
+      uint32_t mode_id = 0;
+      if (mode_blob) {
+        scoped_blobs.push_back(std::move(mode_blob));
+        mode_id = scoped_blobs.back()->id();
+      }
+      status &= SetCrtcProps(atomic_request.get(), crtc_request.crtc_id,
+                             /*set_active=*/true, mode_id);
+
+      status &= SetConnectorProps(atomic_request.get(),
+                                  crtc_request.connector_id, crtc_id);
+
+      // Set Plane props.
+      scoped_overlay_lists.emplace_back();
+      scoped_overlay_lists.back().push_back(
+          crtc_request.primary_plane->Clone());
+      status &= AssignOverlayPlanes(commit_request.plane_list,
+                                    scoped_overlay_lists.back(), crtc_id);
+
+      should_set_props_for_enable = true;
+    } else {
+      status &= SetCrtcProps(atomic_request.get(), crtc_request.crtc_id,
+                             /*set_active=*/false, /*mode_id=*/0UL);
+      status &= SetConnectorProps(atomic_request.get(),
+                                  crtc_request.connector_id, /*crtc_id=*/0UL);
+    }
+  }
+
+  if (!status) {
+    PLOG(ERROR) << "Failed to Set Props for Commit.";
+    return false;
+  }
+
+  // TODO(markyacoub): Ideally this doesn't need to be a separate step. It
+  // should all be handled in Set{Crtc,Connector,Plane}Props() modulo some state
+  // tracking changes that should be done post commit.
+  // Break it apart when both Commit() are consolidated.
+  if (should_set_props_for_enable) {
+    SetAtomicPropsForCommit(atomic_request.get(), commit_request.plane_list,
+                            GetCrtcIdsOfPlanes(*commit_request.plane_list),
+                            /*test_only=*/false);
+  }
+
+  if (!drm_->CommitProperties(atomic_request.get(), flags, 1, nullptr)) {
+    PLOG(ERROR) << "Failed to commit properties for modeset.";
+    if (commit_request.plane_list)
+      ResetCurrentPlaneList(commit_request.plane_list);
+    return false;
+  }
+
+  UpdateCrtcAndPlaneStatesAfterModeset(commit_request);
+  return true;
 }
 
-bool HardwareDisplayPlaneManagerAtomic::Commit(
+void HardwareDisplayPlaneManagerAtomic::SetAtomicPropsForCommit(
+    drmModeAtomicReq* atomic_request,
     HardwareDisplayPlaneList* plane_list,
-    bool should_modeset,
-    scoped_refptr<PageFlipRequest> page_flip_request,
-    std::unique_ptr<gfx::GpuFence>* out_fence) {
-  bool test_only = !should_modeset && !page_flip_request;
-
+    const std::vector<uint32_t>& crtcs,
+    bool test_only) {
   for (HardwareDisplayPlane* plane : plane_list->plane_list) {
     HardwareDisplayPlaneAtomic* atomic_plane =
         static_cast<HardwareDisplayPlaneAtomic*>(plane);
-    atomic_plane->SetPlaneProps(plane_list->atomic_property_set.get());
+    atomic_plane->SetPlaneProps(atomic_request);
   }
 
   for (HardwareDisplayPlane* plane : plane_list->old_plane_list) {
@@ -144,19 +202,10 @@
       atomic_plane->AssignPlaneProps(0, 0, gfx::Rect(), gfx::Rect(),
                                      gfx::OVERLAY_TRANSFORM_NONE,
                                      base::kInvalidPlatformFile);
-      atomic_plane->SetPlaneProps(plane_list->atomic_property_set.get());
+      atomic_plane->SetPlaneProps(atomic_request);
     }
   }
 
-  std::vector<uint32_t> crtcs;
-  for (HardwareDisplayPlane* plane : plane_list->plane_list) {
-    HardwareDisplayPlaneAtomic* atomic_plane =
-        static_cast<HardwareDisplayPlaneAtomic*>(plane);
-    if (crtcs.empty() || crtcs.back() != atomic_plane->crtc_id())
-      crtcs.push_back(atomic_plane->crtc_id());
-  }
-
-  drmModeAtomicReqPtr request = plane_list->atomic_property_set.get();
   for (uint32_t crtc : crtcs) {
     int idx = LookupCrtcIndex(crtc);
 
@@ -165,12 +214,14 @@
     // swap chain for a vsync.
     // TODO(dnicoara): See if we can apply these properties async using
     // DRM_MODE_ATOMIC_ASYNC_UPDATE flag when committing.
-    AddPropertyIfValid(request, crtc, crtc_state_[idx].properties.degamma_lut);
-    AddPropertyIfValid(request, crtc, crtc_state_[idx].properties.gamma_lut);
-    AddPropertyIfValid(request, crtc, crtc_state_[idx].properties.ctm);
+    AddPropertyIfValid(atomic_request, crtc,
+                       crtc_state_[idx].properties.degamma_lut);
+    AddPropertyIfValid(atomic_request, crtc,
+                       crtc_state_[idx].properties.gamma_lut);
+    AddPropertyIfValid(atomic_request, crtc, crtc_state_[idx].properties.ctm);
 #endif
 
-    AddPropertyIfValid(request, crtc,
+    AddPropertyIfValid(atomic_request, crtc,
                        crtc_state_[idx].properties.background_color);
   }
 
@@ -184,6 +235,19 @@
   } else {
     plane_list->plane_list.swap(plane_list->old_plane_list);
   }
+}
+
+bool HardwareDisplayPlaneManagerAtomic::Commit(
+    HardwareDisplayPlaneList* plane_list,
+    bool should_modeset,
+    scoped_refptr<PageFlipRequest> page_flip_request,
+    std::unique_ptr<gfx::GpuFence>* out_fence) {
+  bool test_only = !should_modeset && !page_flip_request;
+
+  std::vector<uint32_t> crtcs = GetCrtcIdsOfPlanes(*plane_list);
+
+  SetAtomicPropsForCommit(plane_list->atomic_property_set.get(), plane_list,
+                          crtcs, test_only);
 
   // After we perform the atomic commit, and if the caller has requested an
   // out-fence, the out_fence_fds vector will contain any provided out-fence
@@ -406,7 +470,7 @@
 }
 
 bool HardwareDisplayPlaneManagerAtomic::AddOutFencePtrProperties(
-    drmModeAtomicReqPtr property_set,
+    drmModeAtomicReq* property_set,
     const std::vector<uint32_t>& crtcs,
     std::vector<base::ScopedFD>* out_fence_fds,
     std::vector<base::ScopedFD::Receiver>* out_fence_fd_receivers) {
diff --git a/ui/ozone/platform/drm/gpu/hardware_display_plane_manager_atomic.h b/ui/ozone/platform/drm/gpu/hardware_display_plane_manager_atomic.h
index 2aa11b73..b6d71774 100644
--- a/ui/ozone/platform/drm/gpu/hardware_display_plane_manager_atomic.h
+++ b/ui/ozone/platform/drm/gpu/hardware_display_plane_manager_atomic.h
@@ -19,12 +19,8 @@
   ~HardwareDisplayPlaneManagerAtomic() override;
 
   // HardwareDisplayPlaneManager:
-  bool Modeset(uint32_t crtc_id,
-               uint32_t framebuffer_id,
-               uint32_t connector_id,
-               const drmModeModeInfo& mode,
-               const HardwareDisplayPlaneList& plane_list) override;
-  bool DisableModeset(uint32_t crtc_id, uint32_t connector) override;
+  bool Commit(CommitRequest commit_request, uint32_t flags) override;
+
   bool Commit(HardwareDisplayPlaneList* plane_list,
               bool should_modeset,
               scoped_refptr<PageFlipRequest> page_flip_request,
@@ -50,10 +46,23 @@
  private:
   bool InitializePlanes() override;
   std::unique_ptr<HardwareDisplayPlane> CreatePlane(uint32_t plane_id) override;
+  void SetAtomicPropsForCommit(drmModeAtomicReq* atomic_request,
+                               HardwareDisplayPlaneList* plane_list,
+                               const std::vector<uint32_t>& crtcs,
+                               bool test_only);
+
+  bool SetCrtcProps(drmModeAtomicReq* atomic_request,
+                    uint32_t crtc_id,
+                    bool set_active,
+                    uint32_t mode_id);
+  bool SetConnectorProps(drmModeAtomicReq* atomic_request,
+                         uint32_t connector_id,
+                         uint32_t crtc_id);
+
   bool CommitColorMatrix(const CrtcProperties& crtc_props) override;
   bool CommitGammaCorrection(const CrtcProperties& crtc_props) override;
   bool AddOutFencePtrProperties(
-      drmModeAtomicReqPtr property_set,
+      drmModeAtomicReq* property_set,
       const std::vector<uint32_t>& crtcs,
       std::vector<base::ScopedFD>* out_fence_fds,
       std::vector<base::ScopedFD::Receiver>* out_fence_fd_receivers);
diff --git a/ui/ozone/platform/drm/gpu/hardware_display_plane_manager_legacy.cc b/ui/ozone/platform/drm/gpu/hardware_display_plane_manager_legacy.cc
index 1fbdc30f..8f6e9d9 100644
--- a/ui/ozone/platform/drm/gpu/hardware_display_plane_manager_legacy.cc
+++ b/ui/ozone/platform/drm/gpu/hardware_display_plane_manager_legacy.cc
@@ -46,19 +46,28 @@
 HardwareDisplayPlaneManagerLegacy::~HardwareDisplayPlaneManagerLegacy() =
     default;
 
-bool HardwareDisplayPlaneManagerLegacy::Modeset(
-    uint32_t crtc_id,
-    uint32_t framebuffer_id,
-    uint32_t connector_id,
-    const drmModeModeInfo& mode,
-    const HardwareDisplayPlaneList&) {
-  return drm_->SetCrtc(crtc_id, framebuffer_id,
-                       std::vector<uint32_t>(1, connector_id), mode);
-}
+bool HardwareDisplayPlaneManagerLegacy::Commit(CommitRequest commit_request,
+                                               uint32_t flags) {
+  bool status = true;
 
-bool HardwareDisplayPlaneManagerLegacy::DisableModeset(uint32_t crtc_id,
-                                                       uint32_t connector) {
-  return drm_->DisableCrtc(crtc_id);
+  for (const auto& crtc_request : commit_request.commit_state) {
+    bool should_enable = crtc_request.primary_plane;
+
+    if (should_enable) {
+      status &= drm_->SetCrtc(
+          crtc_request.crtc_id,
+          crtc_request.primary_plane->buffer->opaque_framebuffer_id(),
+          std::vector<uint32_t>(1, crtc_request.connector_id),
+          crtc_request.mode);
+    } else {
+      drm_->DisableCrtc(crtc_request.crtc_id);
+    }
+  }
+
+  if (status)
+    UpdateCrtcAndPlaneStatesAfterModeset(commit_request);
+
+  return status;
 }
 
 bool HardwareDisplayPlaneManagerLegacy::Commit(
diff --git a/ui/ozone/platform/drm/gpu/hardware_display_plane_manager_legacy.h b/ui/ozone/platform/drm/gpu/hardware_display_plane_manager_legacy.h
index 668ffde7..5d03f97 100644
--- a/ui/ozone/platform/drm/gpu/hardware_display_plane_manager_legacy.h
+++ b/ui/ozone/platform/drm/gpu/hardware_display_plane_manager_legacy.h
@@ -19,12 +19,8 @@
   ~HardwareDisplayPlaneManagerLegacy() override;
 
   // HardwareDisplayPlaneManager:
-  bool Modeset(uint32_t crtc_id,
-               uint32_t framebuffer_id,
-               uint32_t connector_id,
-               const drmModeModeInfo& mode,
-               const HardwareDisplayPlaneList& plane_list) override;
-  bool DisableModeset(uint32_t crtc_id, uint32_t connector) override;
+  bool Commit(CommitRequest commit_request, uint32_t flags) override;
+
   bool Commit(HardwareDisplayPlaneList* plane_list,
               bool should_modeset,
               scoped_refptr<PageFlipRequest> page_flip_request,
diff --git a/ui/ozone/platform/drm/gpu/hardware_display_plane_manager_unittest.cc b/ui/ozone/platform/drm/gpu/hardware_display_plane_manager_unittest.cc
index aff014c..f8101885 100644
--- a/ui/ozone/platform/drm/gpu/hardware_display_plane_manager_unittest.cc
+++ b/ui/ozone/platform/drm/gpu/hardware_display_plane_manager_unittest.cc
@@ -276,13 +276,23 @@
                              plane_properties_, property_names_,
                              /*use_atomic=*/true);
 
-  constexpr uint32_t kFrameBuffer = 2;
   ui::HardwareDisplayPlaneList state;
-  // Check all 3 connectors exist
-  for (size_t i = 0; i < connector_and_crtc_count; ++i) {
-    EXPECT_TRUE(fake_drm_->plane_manager()->Modeset(
-        crtc_properties_[i].id, kFrameBuffer, connector_properties[i].id,
-        kDefaultMode, state));
+
+  {
+    ui::DrmOverlayPlane primary_plane(fake_buffer_, nullptr);
+
+    ui::CommitRequest commit_request;
+    commit_request.plane_list = &state;
+    fake_drm_->plane_manager()->BeginFrame(&state);
+    // Check all 3 connectors exist
+    for (size_t i = 0; i < connector_and_crtc_count; ++i) {
+      ui::CrtcRequest crtc_request{crtc_properties_[i].id,
+                                   connector_properties[i].id, &primary_plane,
+                                   kDefaultMode};
+      commit_request.commit_state.push_back(std::move(crtc_request));
+    }
+    EXPECT_TRUE(fake_drm_->plane_manager()->Commit(
+        std::move(commit_request), DRM_MODE_ATOMIC_ALLOW_MODESET));
   }
 
   // Replace last connector and update state.
@@ -291,15 +301,23 @@
                          plane_properties_, property_names_);
   fake_drm_->plane_manager()->ResetConnectorsCache(fake_drm_->GetResources());
 
-  EXPECT_TRUE(fake_drm_->plane_manager()->Modeset(
-      crtc_properties_[0].id, kFrameBuffer, kConnectorIdBase, kDefaultMode,
-      state));
-  EXPECT_TRUE(fake_drm_->plane_manager()->Modeset(
-      crtc_properties_[1].id, kFrameBuffer, kConnectorIdBase + 1, kDefaultMode,
-      state));
-  EXPECT_TRUE(fake_drm_->plane_manager()->Modeset(
-      crtc_properties_[2].id, kFrameBuffer, kConnectorIdBase + 3, kDefaultMode,
-      state));
+  {
+    ui::DrmOverlayPlane primary_plane(fake_buffer_, nullptr);
+    ui::CommitRequest commit_request;
+    commit_request.plane_list = &state;
+    fake_drm_->plane_manager()->BeginFrame(&state);
+    commit_request.commit_state.push_back({crtc_properties_[0].id,
+                                           kConnectorIdBase, &primary_plane,
+                                           kDefaultMode});
+    commit_request.commit_state.push_back({crtc_properties_[1].id,
+                                           kConnectorIdBase + 1, &primary_plane,
+                                           kDefaultMode});
+    commit_request.commit_state.push_back({crtc_properties_[2].id,
+                                           kConnectorIdBase + 3, &primary_plane,
+                                           kDefaultMode});
+    EXPECT_TRUE(fake_drm_->plane_manager()->Commit(
+        std::move(commit_request), DRM_MODE_ATOMIC_ALLOW_MODESET));
+  }
 }
 
 TEST_P(HardwareDisplayPlaneManagerLegacyTest, Modeset) {
@@ -309,12 +327,18 @@
                              /*use_atomic=*/false);
   fake_drm_->set_set_crtc_expectation(false);
 
-  constexpr uint32_t kFrameBuffer = 2;
   ui::HardwareDisplayPlaneList state;
-  EXPECT_FALSE(fake_drm_->plane_manager()->Modeset(
-      crtc_properties_[0].id, kFrameBuffer, connector_properties_[0].id,
-      kDefaultMode, state));
-  EXPECT_EQ(kFrameBuffer, fake_drm_->current_framebuffer());
+  ui::DrmOverlayPlane primary_plane(fake_buffer_, nullptr);
+  ui::CommitRequest commit_request;
+  commit_request.plane_list = &state;
+  commit_request.commit_state.push_back({crtc_properties_[0].id,
+                                         connector_properties_[0].id,
+                                         &primary_plane, kDefaultMode});
+  EXPECT_FALSE(fake_drm_->plane_manager()->Commit(
+      std::move(commit_request), DRM_MODE_ATOMIC_ALLOW_MODESET));
+
+  EXPECT_EQ(primary_plane.buffer->framebuffer_id(),
+            fake_drm_->current_framebuffer());
   EXPECT_EQ(1, fake_drm_->get_set_crtc_call_count());
 }
 
@@ -324,8 +348,13 @@
                              plane_properties_, property_names_,
                              /*use_atomic*/ false);
 
-  EXPECT_TRUE(
-      fake_drm_->plane_manager()->DisableModeset(crtc_properties_[0].id, 0));
+  ui::HardwareDisplayPlaneList state;
+  ui::CommitRequest commit_request;
+  commit_request.plane_list = &state;
+  commit_request.commit_state.push_back(
+      {crtc_properties_[0].id, connector_properties_[0].id, nullptr, {}});
+  EXPECT_TRUE(fake_drm_->plane_manager()->Commit(
+      std::move(commit_request), DRM_MODE_ATOMIC_ALLOW_MODESET));
 }
 
 TEST_P(HardwareDisplayPlaneManagerLegacyTest, SinglePlaneAssignment) {
@@ -448,11 +477,15 @@
                              plane_properties_, property_names_,
                              /*use_atomic=*/true);
 
-  constexpr uint32_t kFrameBuffer = 2;
   ui::HardwareDisplayPlaneList state;
-  EXPECT_TRUE(fake_drm_->plane_manager()->Modeset(
-      crtc_properties_[0].id, kFrameBuffer, connector_properties_[0].id,
-      kDefaultMode, state));
+  ui::DrmOverlayPlane primary_plane(fake_buffer_, nullptr);
+  ui::CommitRequest commit_request;
+  commit_request.plane_list = &state;
+  commit_request.commit_state.push_back({crtc_properties_[0].id,
+                                         connector_properties_[0].id,
+                                         &primary_plane, kDefaultMode});
+  EXPECT_TRUE(fake_drm_->plane_manager()->Commit(
+      std::move(commit_request), DRM_MODE_ATOMIC_ALLOW_MODESET));
 
   EXPECT_EQ(1, fake_drm_->get_commit_count());
 }
@@ -463,9 +496,15 @@
                              plane_properties_, property_names_,
                              /*use_atomic*/ true);
 
-  EXPECT_TRUE(fake_drm_->plane_manager()->DisableModeset(
-      crtc_properties_[0].id, connector_properties_[0].id));
-  EXPECT_EQ(1, fake_drm_->get_commit_count());
+  ui::HardwareDisplayPlaneList state;
+  ui::CommitRequest commit_request;
+  commit_request.plane_list = &state;
+  commit_request.commit_state.push_back(
+      {crtc_properties_[0].id, connector_properties_[0].id, nullptr, {}});
+  EXPECT_TRUE(fake_drm_->plane_manager()->Commit(
+      std::move(commit_request), DRM_MODE_ATOMIC_ALLOW_MODESET));
+
+  EXPECT_EQ(2, fake_drm_->get_commit_count());
 }
 
 TEST_P(HardwareDisplayPlaneManagerAtomicTest, CheckPropsAfterModeset) {
@@ -474,11 +513,15 @@
                              plane_properties_, property_names_,
                              /*use_atomic=*/true);
 
-  constexpr uint32_t kFrameBuffer = 2;
   ui::HardwareDisplayPlaneList state;
-  EXPECT_TRUE(fake_drm_->plane_manager()->Modeset(
-      crtc_properties_[0].id, kFrameBuffer, connector_properties_[0].id,
-      kDefaultMode, state));
+  ui::DrmOverlayPlane primary_plane(fake_buffer_, nullptr);
+  ui::CommitRequest commit_request;
+  commit_request.plane_list = &state;
+  commit_request.commit_state.push_back({crtc_properties_[0].id,
+                                         connector_properties_[0].id,
+                                         &primary_plane, kDefaultMode});
+  EXPECT_TRUE(fake_drm_->plane_manager()->Commit(
+      std::move(commit_request), DRM_MODE_ATOMIC_ALLOW_MODESET));
 
   // Test props values after modesetting.
   ui::DrmDevice::Property connector_prop_crtc_id;
@@ -508,15 +551,23 @@
                              plane_properties_, property_names_,
                              /*use_atomic=*/true);
 
-  constexpr uint32_t kFrameBuffer = 2;
   ui::HardwareDisplayPlaneList state;
-  EXPECT_TRUE(fake_drm_->plane_manager()->Modeset(
-      crtc_properties_[0].id, kFrameBuffer, connector_properties_[0].id,
-      kDefaultMode, state));
+  ui::DrmOverlayPlane primary_plane(fake_buffer_, nullptr);
+  ui::CommitRequest commit_request;
+  commit_request.plane_list = &state;
+  commit_request.commit_state.push_back({crtc_properties_[0].id,
+                                         connector_properties_[0].id,
+                                         &primary_plane, kDefaultMode});
+  EXPECT_TRUE(fake_drm_->plane_manager()->Commit(
+      std::move(commit_request), DRM_MODE_ATOMIC_ALLOW_MODESET));
 
-  //  Test props values after disabling.
-  EXPECT_TRUE(fake_drm_->plane_manager()->DisableModeset(
-      crtc_properties_[0].id, connector_properties_[0].id));
+  // Test props values after disabling.
+  ui::CommitRequest commit_request_2;
+  commit_request_2.plane_list = &state;
+  commit_request_2.commit_state.push_back(
+      {crtc_properties_[0].id, connector_properties_[0].id, nullptr, {}});
+  EXPECT_TRUE(fake_drm_->plane_manager()->Commit(
+      std::move(commit_request_2), DRM_MODE_ATOMIC_ALLOW_MODESET));
 
   ui::DrmDevice::Property crtc_prop_for_name;
   ui::ScopedDrmObjectPropertyPtr crtc_props =
diff --git a/ui/ozone/platform/drm/gpu/screen_manager_unittest.cc b/ui/ozone/platform/drm/gpu/screen_manager_unittest.cc
index 564b2017..943c3fd 100644
--- a/ui/ozone/platform/drm/gpu/screen_manager_unittest.cc
+++ b/ui/ozone/platform/drm/gpu/screen_manager_unittest.cc
@@ -79,7 +79,9 @@
                      kDefaultMode.vdisplay);
   }
 
-  void InitializeDrmState(const std::vector<CrtcState>& crtc_states) {
+  void InitializeDrmState(ui::MockDrmDevice* drm,
+                          const std::vector<CrtcState>& crtc_states,
+                          bool is_atomic = true) {
     std::vector<ui::MockDrmDevice::CrtcProperties> crtc_properties(
         crtc_states.size());
     std::map<uint32_t, std::string> crtc_property_names = {
@@ -87,7 +89,7 @@
         {1001, "MODE_ID"},
     };
 
-    std::vector<ui::MockDrmDevice::ConnectorProperties> connector_properties(2);
+    std::vector<ui::MockDrmDevice::ConnectorProperties> connector_properties(3);
     std::map<uint32_t, std::string> connector_property_names = {
         {2000, "CRTC_ID"},
     };
@@ -141,7 +143,7 @@
                                    : DRM_PLANE_TYPE_OVERLAY;
           } else if (pair.first == kInFormatsPropId) {
             value = property_id++;
-            drm_->SetPropertyBlob(ui::MockDrmDevice::AllocateInFormatsBlob(
+            drm->SetPropertyBlob(ui::MockDrmDevice::AllocateInFormatsBlob(
                 value, crtc_states[crtc_idx].planes[plane_idx].formats,
                 std::vector<drm_format_modifier>()));
           }
@@ -163,9 +165,24 @@
                           connector_property_names.end());
     property_names.insert(plane_property_names.begin(),
                           plane_property_names.end());
-    drm_->InitializeState(crtc_properties, connector_properties,
-                          plane_properties, property_names,
-                          /* use_atomic= */ true);
+    drm->InitializeState(crtc_properties, connector_properties,
+                         plane_properties, property_names, is_atomic);
+  }
+
+  void InitializeDrmStateWithDefault(ui::MockDrmDevice* drm,
+                                     bool is_atomic = true) {
+    // A Sample of CRTC states.
+    std::vector<CrtcState> crtc_states = {
+        {/* .planes = */
+         {
+             {/* .formats = */ {DRM_FORMAT_XRGB8888}},
+         }},
+        {/* .planes = */
+         {
+             {/* .formats = */ {DRM_FORMAT_XRGB8888}},
+         }},
+    };
+    InitializeDrmState(drm, crtc_states, is_atomic);
   }
 
   void SetUp() override {
@@ -211,6 +228,8 @@
 }
 
 TEST_F(ScreenManagerTest, CheckWithValidController) {
+  InitializeDrmStateWithDefault(drm_.get());
+
   screen_manager_->AddDisplayController(drm_, kPrimaryCrtc, kPrimaryConnector);
 
   std::vector<ScreenManager::ControllerConfigParams> controllers_to_enable;
@@ -228,6 +247,8 @@
 }
 
 TEST_F(ScreenManagerTest, CheckWithInvalidBounds) {
+  InitializeDrmStateWithDefault(drm_.get());
+
   screen_manager_->AddDisplayController(drm_, kPrimaryCrtc, kPrimaryConnector);
 
   std::vector<ScreenManager::ControllerConfigParams> controllers_to_enable;
@@ -242,6 +263,8 @@
 }
 
 TEST_F(ScreenManagerTest, CheckForSecondValidController) {
+  InitializeDrmStateWithDefault(drm_.get());
+
   screen_manager_->AddDisplayController(drm_, kPrimaryCrtc, kPrimaryConnector);
   screen_manager_->AddDisplayController(drm_, kSecondaryCrtc,
                                         kSecondaryConnector);
@@ -263,6 +286,8 @@
 }
 
 TEST_F(ScreenManagerTest, CheckControllerAfterItIsRemoved) {
+  InitializeDrmStateWithDefault(drm_.get());
+
   screen_manager_->AddDisplayController(drm_, kPrimaryCrtc, kPrimaryConnector);
 
   std::vector<ScreenManager::ControllerConfigParams> controllers_to_enable;
@@ -279,6 +304,8 @@
 }
 
 TEST_F(ScreenManagerTest, CheckDuplicateConfiguration) {
+  InitializeDrmStateWithDefault(drm_.get(), /*is_atomic*/ false);
+
   screen_manager_->AddDisplayController(drm_, kPrimaryCrtc, kPrimaryConnector);
 
   std::vector<ScreenManager::ControllerConfigParams> controllers_to_enable;
@@ -305,6 +332,8 @@
 }
 
 TEST_F(ScreenManagerTest, CheckChangingMode) {
+  InitializeDrmStateWithDefault(drm_.get());
+
   screen_manager_->AddDisplayController(drm_, kPrimaryCrtc, kPrimaryConnector);
 
   std::vector<ScreenManager::ControllerConfigParams> controllers_to_enable;
@@ -330,6 +359,8 @@
 }
 
 TEST_F(ScreenManagerTest, CheckForControllersInMirroredMode) {
+  InitializeDrmStateWithDefault(drm_.get());
+
   screen_manager_->AddDisplayController(drm_, kPrimaryCrtc, kPrimaryConnector);
   screen_manager_->AddDisplayController(drm_, kSecondaryCrtc,
                                         kSecondaryConnector);
@@ -367,7 +398,7 @@
           },
       },
   };
-  InitializeDrmState(crtc_states);
+  InitializeDrmState(drm_.get(), crtc_states);
 
   screen_manager_->AddDisplayController(drm_, kPrimaryCrtc, kPrimaryConnector);
   screen_manager_->AddDisplayController(drm_, kSecondaryCrtc,
@@ -424,6 +455,8 @@
 // Make sure we're using each display's mode when doing mirror mode otherwise
 // the timings may be off.
 TEST_F(ScreenManagerTest, CheckMirrorModeModesettingWithDisplaysMode) {
+  InitializeDrmStateWithDefault(drm_.get());
+
   screen_manager_->AddDisplayController(drm_, kPrimaryCrtc, kPrimaryConnector);
   screen_manager_->AddDisplayController(drm_, kSecondaryCrtc,
                                         kSecondaryConnector);
@@ -457,6 +490,8 @@
 }
 
 TEST_F(ScreenManagerTest, MonitorGoneInMirrorMode) {
+  InitializeDrmStateWithDefault(drm_.get());
+
   screen_manager_->AddDisplayController(drm_, kPrimaryCrtc, kPrimaryConnector);
   screen_manager_->AddDisplayController(drm_, kSecondaryCrtc,
                                         kSecondaryConnector);
@@ -485,6 +520,8 @@
 }
 
 TEST_F(ScreenManagerTest, MonitorDisabledInMirrorMode) {
+  InitializeDrmStateWithDefault(drm_.get());
+
   screen_manager_->AddDisplayController(drm_, kPrimaryCrtc, kPrimaryConnector);
   screen_manager_->AddDisplayController(drm_, kSecondaryCrtc,
                                         kSecondaryConnector);
@@ -514,6 +551,8 @@
 }
 
 TEST_F(ScreenManagerTest, DoNotEnterMirrorModeUnlessSameBounds) {
+  InitializeDrmStateWithDefault(drm_.get());
+
   screen_manager_->AddDisplayController(drm_, kPrimaryCrtc, kPrimaryConnector);
   screen_manager_->AddDisplayController(drm_, kSecondaryCrtc,
                                         kSecondaryConnector);
@@ -544,6 +583,8 @@
 }
 
 TEST_F(ScreenManagerTest, ReuseFramebufferIfDisabledThenReEnabled) {
+  InitializeDrmStateWithDefault(drm_.get(), /*is_atomic=*/false);
+
   screen_manager_->AddDisplayController(drm_, kPrimaryCrtc, kPrimaryConnector);
   std::vector<ScreenManager::ControllerConfigParams> controllers_to_enable;
   controllers_to_enable.emplace_back(
@@ -590,7 +631,7 @@
           },
       },
   };
-  InitializeDrmState(crtc_states);
+  InitializeDrmState(drm_.get(), crtc_states);
 
   screen_manager_->AddDisplayController(drm_, kPrimaryCrtc, kPrimaryConnector);
   screen_manager_->AddDisplayController(drm_, kSecondaryCrtc,
@@ -632,6 +673,22 @@
   scoped_refptr<ui::MockDrmDevice> drm2 =
       new ui::MockDrmDevice(std::move(gbm_device));
 
+  InitializeDrmStateWithDefault(drm_.get(), /*is_atomic=*/false);
+  std::vector<CrtcState> crtc_states = {
+      {/* .planes = */
+       {
+           {/* .formats = */ {DRM_FORMAT_XRGB8888}},
+       }},
+      {/* .planes = */
+       {
+           {/* .formats = */ {DRM_FORMAT_XRGB8888}},
+       }},
+      {/* .planes = */
+       {
+           {/* .formats = */ {DRM_FORMAT_XRGB8888}},
+       }}};
+  InitializeDrmState(drm2.get(), crtc_states, /*is_atomic=*/false);
+
   screen_manager_->AddDisplayController(drm_, kPrimaryCrtc, kPrimaryConnector);
   screen_manager_->AddDisplayController(drm2, kSecondaryCrtc,
                                         kSecondaryConnector);
@@ -665,6 +722,9 @@
   scoped_refptr<ui::MockDrmDevice> drm2 =
       new ui::MockDrmDevice(std::move(gbm_device));
 
+  InitializeDrmStateWithDefault(drm_.get());
+  InitializeDrmStateWithDefault(drm2.get());
+
   screen_manager_->AddDisplayController(drm_, kPrimaryCrtc, kPrimaryConnector);
   screen_manager_->AddDisplayController(drm2, kPrimaryCrtc, kPrimaryConnector);
 
@@ -691,6 +751,8 @@
 }
 
 TEST_F(ScreenManagerTest, CheckControllerToWindowMappingWithSameBounds) {
+  InitializeDrmStateWithDefault(drm_.get());
+
   std::unique_ptr<ui::DrmWindow> window(
       new ui::DrmWindow(1, device_manager_.get(), screen_manager_.get()));
   window->Initialize();
@@ -712,6 +774,8 @@
 }
 
 TEST_F(ScreenManagerTest, CheckControllerToWindowMappingWithDifferentBounds) {
+  InitializeDrmStateWithDefault(drm_.get());
+
   std::unique_ptr<ui::DrmWindow> window(
       new ui::DrmWindow(1, device_manager_.get(), screen_manager_.get()));
   window->Initialize();
@@ -736,6 +800,8 @@
 
 TEST_F(ScreenManagerTest,
        CheckControllerToWindowMappingWithOverlappingWindows) {
+  InitializeDrmStateWithDefault(drm_.get());
+
   const size_t kWindowCount = 2;
   for (size_t i = 1; i < kWindowCount + 1; ++i) {
     std::unique_ptr<ui::DrmWindow> window(
@@ -765,6 +831,8 @@
 }
 
 TEST_F(ScreenManagerTest, ShouldDissociateWindowOnControllerRemoval) {
+  InitializeDrmStateWithDefault(drm_.get());
+
   gfx::AcceleratedWidget window_id = 1;
   std::unique_ptr<ui::DrmWindow> window(new ui::DrmWindow(
       window_id, device_manager_.get(), screen_manager_.get()));
@@ -791,6 +859,8 @@
 }
 
 TEST_F(ScreenManagerTest, EnableControllerWhenWindowHasNoBuffer) {
+  InitializeDrmStateWithDefault(drm_.get(), /*is_atomic=*/false);
+
   std::unique_ptr<ui::DrmWindow> window(
       new ui::DrmWindow(1, device_manager_.get(), screen_manager_.get()));
   window->Initialize();
@@ -826,6 +896,8 @@
 }
 
 TEST_F(ScreenManagerTest, EnableControllerWhenWindowHasBuffer) {
+  InitializeDrmStateWithDefault(drm_.get(), /*is_atomic=*/false);
+
   std::unique_ptr<ui::DrmWindow> window(
       new ui::DrmWindow(1, device_manager_.get(), screen_manager_.get()));
   window->Initialize();
@@ -886,6 +958,8 @@
 }
 
 TEST_F(ScreenManagerTest, ConfigureDisplayControllerShouldModesetOnce) {
+  InitializeDrmStateWithDefault(drm_.get(), /*is_atomic=*/false);
+
   std::unique_ptr<ui::DrmWindow> window(
       new ui::DrmWindow(1, device_manager_.get(), screen_manager_.get()));
   window->Initialize();
@@ -912,16 +986,20 @@
   auto gbm_device1 = std::make_unique<MockGbmDevice>();
   auto drm_device1 =
       base::MakeRefCounted<MockDrmDevice>(std::move(gbm_device1));
+  InitializeDrmStateWithDefault(drm_device1.get());
+
   auto gbm_device2 = std::make_unique<MockGbmDevice>();
   auto drm_device2 =
       base::MakeRefCounted<MockDrmDevice>(std::move(gbm_device2));
+  InitializeDrmStateWithDefault(drm_device2.get());
+
   DrmDeviceManager drm_device_manager(nullptr);
   ScreenManager screen_manager;
 
-  constexpr uint32_t kCrtc19 = 19;
-  constexpr uint32_t kConnector28 = 28;
-  constexpr uint32_t kCrtc20 = 20;
-  constexpr uint32_t kConnector22 = 22;
+  constexpr uint32_t kCrtc1 = kPrimaryCrtc;
+  constexpr uint32_t kConnector1 = kPrimaryConnector;
+  constexpr uint32_t kCrtc2 = kSecondaryCrtc;
+  constexpr uint32_t kConnector2 = kSecondaryConnector;
 
   drmModeModeInfo k1920x1080Screen = ConstructMode(1920, 1080);
   std::unique_ptr<drmModeModeInfo> primary_mode =
@@ -944,20 +1022,20 @@
     window1->Initialize();
     screen_manager.AddWindow(1, std::move(window1));
     screen_manager.GetWindow(1)->SetBounds(gfx::Rect(0, 0, 1920, 1080));
-    screen_manager.AddDisplayController(drm_device1, kCrtc19, kConnector28);
-    screen_manager.AddDisplayController(drm_device2, kCrtc20, kConnector22);
+    screen_manager.AddDisplayController(drm_device1, kCrtc1, kConnector1);
+    screen_manager.AddDisplayController(drm_device2, kCrtc2, kConnector2);
 
     std::vector<ScreenManager::ControllerConfigParams> controllers_to_enable;
     std::unique_ptr<drmModeModeInfo> primary_mode =
         std::make_unique<drmModeModeInfo>(k1920x1080Screen);
     std::unique_ptr<drmModeModeInfo> secondary_mode =
         std::make_unique<drmModeModeInfo>(k1920x1080Screen);
-    controllers_to_enable.emplace_back(kPrimaryDisplayId, drm_device1, kCrtc19,
-                                       kConnector28, gfx::Point(0, 0),
+    controllers_to_enable.emplace_back(kPrimaryDisplayId, drm_device1, kCrtc1,
+                                       kConnector1, gfx::Point(0, 0),
                                        std::move(primary_mode));
-    controllers_to_enable.emplace_back(
-        kSecondaryDisplayId, drm_device2, kCrtc20, kConnector22,
-        gfx::Point(0, 1140), std::move(secondary_mode));
+    controllers_to_enable.emplace_back(kSecondaryDisplayId, drm_device2, kCrtc2,
+                                       kConnector2, gfx::Point(0, 1140),
+                                       std::move(secondary_mode));
     screen_manager.ConfigureDisplayControllers(controllers_to_enable);
 
     auto window2 =
@@ -974,19 +1052,19 @@
     HardwareDisplayController* controller2 =
         screen_manager.GetWindow(2)->GetController();
     EXPECT_NE(controller1, controller2);
-    EXPECT_TRUE(controller1->HasCrtc(drm_device1, kCrtc19));
-    EXPECT_TRUE(controller2->HasCrtc(drm_device2, kCrtc20));
+    EXPECT_TRUE(controller1->HasCrtc(drm_device1, kCrtc1));
+    EXPECT_TRUE(controller2->HasCrtc(drm_device2, kCrtc2));
   }
 
   // Disconnect first display. Second display moves to origin.
   {
-    screen_manager.RemoveDisplayController(drm_device1, kCrtc19);
+    screen_manager.RemoveDisplayController(drm_device1, kCrtc1);
 
     std::vector<ScreenManager::ControllerConfigParams> controllers_to_enable;
     std::unique_ptr<drmModeModeInfo> secondary_mode =
         std::make_unique<drmModeModeInfo>(k1920x1080Screen);
-    controllers_to_enable.emplace_back(kSecondaryDisplayId, drm_device2,
-                                       kCrtc20, kConnector22, gfx::Point(0, 0),
+    controllers_to_enable.emplace_back(kSecondaryDisplayId, drm_device2, kCrtc2,
+                                       kConnector2, gfx::Point(0, 0),
                                        std::move(secondary_mode));
     screen_manager.ConfigureDisplayControllers(controllers_to_enable);
 
@@ -997,12 +1075,12 @@
 
   // Reconnect first display. Original configuration restored.
   {
-    screen_manager.AddDisplayController(drm_device1, kCrtc19, kConnector28);
+    screen_manager.AddDisplayController(drm_device1, kCrtc1, kConnector1);
     std::vector<ScreenManager::ControllerConfigParams> controllers_to_enable;
     std::unique_ptr<drmModeModeInfo> primary_mode =
         std::make_unique<drmModeModeInfo>(k1920x1080Screen);
-    controllers_to_enable.emplace_back(kPrimaryDisplayId, drm_device1, kCrtc19,
-                                       kConnector28, gfx::Point(0, 0),
+    controllers_to_enable.emplace_back(kPrimaryDisplayId, drm_device1, kCrtc1,
+                                       kConnector1, gfx::Point(0, 0),
                                        std::move(primary_mode));
     screen_manager.ConfigureDisplayControllers(controllers_to_enable);
     // At this point, both displays are in the same location.
@@ -1010,17 +1088,17 @@
       HardwareDisplayController* controller =
           screen_manager.GetWindow(1)->GetController();
       EXPECT_FALSE(controller->IsMirrored());
-      // We don't really care which crtc it has, but it should have just one.
+      // We don't really care which crtc it has, but it should have just
       EXPECT_EQ(1U, controller->crtc_controllers().size());
-      EXPECT_TRUE(controller->HasCrtc(drm_device1, kCrtc19) ||
-                  controller->HasCrtc(drm_device2, kCrtc20));
+      EXPECT_TRUE(controller->HasCrtc(drm_device1, kCrtc1) ||
+                  controller->HasCrtc(drm_device2, kCrtc2));
     }
     controllers_to_enable.clear();
     std::unique_ptr<drmModeModeInfo> secondary_mode =
         std::make_unique<drmModeModeInfo>(k1920x1080Screen);
-    controllers_to_enable.emplace_back(
-        kSecondaryDisplayId, drm_device2, kCrtc20, kConnector22,
-        gfx::Point(0, 1140), std::move(secondary_mode));
+    controllers_to_enable.emplace_back(kSecondaryDisplayId, drm_device2, kCrtc2,
+                                       kConnector2, gfx::Point(0, 1140),
+                                       std::move(secondary_mode));
     screen_manager.ConfigureDisplayControllers(controllers_to_enable);
     auto window3 =
         std::make_unique<DrmWindow>(3, &drm_device_manager, &screen_manager);
@@ -1039,8 +1117,8 @@
     HardwareDisplayController* controller3 =
         screen_manager.GetWindow(3)->GetController();
     EXPECT_NE(controller1, controller3);
-    EXPECT_TRUE(controller1->HasCrtc(drm_device1, kCrtc19));
-    EXPECT_TRUE(controller3->HasCrtc(drm_device2, kCrtc20));
+    EXPECT_TRUE(controller1->HasCrtc(drm_device1, kCrtc1));
+    EXPECT_TRUE(controller3->HasCrtc(drm_device2, kCrtc2));
   }
 
   // Cleanup.
@@ -1052,13 +1130,15 @@
 TEST_F(ScreenManagerTest, ShouldNotUnbindFramebufferOnJoiningMirror) {
   auto gbm_device = std::make_unique<MockGbmDevice>();
   auto drm_device = base::MakeRefCounted<MockDrmDevice>(std::move(gbm_device));
+  InitializeDrmStateWithDefault(drm_device.get(), /*is_atomic=*/false);
+
   DrmDeviceManager drm_device_manager(nullptr);
   ScreenManager screen_manager;
 
-  constexpr uint32_t kCrtc39 = 39;
-  constexpr uint32_t kConnector43 = 43;
-  constexpr uint32_t kCrtc41 = 41;
-  constexpr uint32_t kConnector46 = 46;
+  constexpr uint32_t kCrtc1 = kPrimaryCrtc;
+  constexpr uint32_t kConnector1 = kPrimaryConnector;
+  constexpr uint32_t kCrtc2 = kSecondaryCrtc;
+  constexpr uint32_t kConnector2 = kSecondaryConnector;
 
   constexpr drmModeModeInfo k1080p60Screen = {
       /* clock= */ 148500,
@@ -1085,25 +1165,25 @@
     window1->Initialize();
     screen_manager.AddWindow(1, std::move(window1));
     screen_manager.GetWindow(1)->SetBounds(gfx::Rect(0, 0, 1920, 1080));
-    screen_manager.AddDisplayController(drm_device, kCrtc39, kConnector43);
-    screen_manager.AddDisplayController(drm_device, kCrtc41, kConnector46);
+    screen_manager.AddDisplayController(drm_device, kCrtc1, kConnector1);
+    screen_manager.AddDisplayController(drm_device, kCrtc2, kConnector2);
 
     std::vector<ScreenManager::ControllerConfigParams> controllers_to_enable;
     std::unique_ptr<drmModeModeInfo> primary_mode =
         std::make_unique<drmModeModeInfo>(k1080p60Screen);
     std::unique_ptr<drmModeModeInfo> secondary_mode =
         std::make_unique<drmModeModeInfo>(k1080p60Screen);
-    controllers_to_enable.emplace_back(kPrimaryDisplayId, drm_device, kCrtc39,
-                                       kConnector43, gfx::Point(0, 0),
+    controllers_to_enable.emplace_back(kPrimaryDisplayId, drm_device, kCrtc1,
+                                       kConnector1, gfx::Point(0, 0),
                                        std::move(primary_mode));
-    controllers_to_enable.emplace_back(kSecondaryDisplayId, drm_device, kCrtc41,
-                                       kConnector46, gfx::Point(0, 0),
+    controllers_to_enable.emplace_back(kSecondaryDisplayId, drm_device, kCrtc2,
+                                       kConnector2, gfx::Point(0, 0),
                                        std::move(secondary_mode));
     screen_manager.ConfigureDisplayControllers(controllers_to_enable);
   }
 
-  EXPECT_NE(0u, drm_device->GetFramebufferForCrtc(kCrtc39));
-  EXPECT_NE(0u, drm_device->GetFramebufferForCrtc(kCrtc41));
+  EXPECT_NE(0u, drm_device->GetFramebufferForCrtc(kCrtc1));
+  EXPECT_NE(0u, drm_device->GetFramebufferForCrtc(kCrtc2));
 
   // Cleanup.
   screen_manager.RemoveWindow(1)->Shutdown();
diff --git a/ui/views/examples/box_layout_example.cc b/ui/views/examples/box_layout_example.cc
index b65adbec3..ba7955ed 100644
--- a/ui/views/examples/box_layout_example.cc
+++ b/ui/views/examples/box_layout_example.cc
@@ -53,11 +53,6 @@
   RefreshLayoutPanel(false);
 }
 
-void BoxLayoutExample::ButtonPressedImpl(Button* sender) {
-  if (sender == collapse_margins_)
-    RefreshLayoutPanel(true);
-}
-
 void BoxLayoutExample::CreateAdditionalControls() {
   constexpr const char* kOrientationValues[2] = {"Horizontal", "Vertical"};
   orientation_ = CreateAndAddCombobox(
@@ -89,8 +84,10 @@
 
   CreateMarginsTextFields(base::ASCIIToUTF16("Insets"), &border_insets_);
 
-  collapse_margins_ =
-      CreateAndAddCheckbox(base::ASCIIToUTF16("Collapse margins"));
+  collapse_margins_ = CreateAndAddCheckbox(
+      base::ASCIIToUTF16("Collapse margins"),
+      base::BindRepeating(&LayoutExampleBase::RefreshLayoutPanel,
+                          base::Unretained(this), true));
 
   UpdateLayoutManager();
 }
diff --git a/ui/views/examples/box_layout_example.h b/ui/views/examples/box_layout_example.h
index 254bd8d..28d326c 100644
--- a/ui/views/examples/box_layout_example.h
+++ b/ui/views/examples/box_layout_example.h
@@ -29,7 +29,6 @@
   // LayoutExampleBase:
   void ContentsChanged(Textfield* sender,
                        const base::string16& new_contents) override;
-  void ButtonPressedImpl(Button* sender) override;
   void CreateAdditionalControls() override;
   void UpdateLayoutManager() override;
 
diff --git a/ui/views/examples/flex_layout_example.cc b/ui/views/examples/flex_layout_example.cc
index 52cd4d9..af233be 100644
--- a/ui/views/examples/flex_layout_example.cc
+++ b/ui/views/examples/flex_layout_example.cc
@@ -41,16 +41,6 @@
   RefreshLayoutPanel(false);
 }
 
-void FlexLayoutExample::ButtonPressedImpl(Button* sender) {
-  if (sender == collapse_margins_) {
-    layout_->SetCollapseMargins(collapse_margins_->GetChecked());
-  } else if (sender == ignore_default_main_axis_margins_) {
-    layout_->SetIgnoreDefaultMainAxisMargins(
-        ignore_default_main_axis_margins_->GetChecked());
-  }
-  RefreshLayoutPanel(false);
-}
-
 void FlexLayoutExample::CreateAdditionalControls() {
   constexpr const char* kOrientationValues[2] = {"Horizontal", "Vertical"};
   orientation_ = CreateAndAddCombobox(
@@ -81,10 +71,24 @@
                           &default_child_margins_);
 
   collapse_margins_ =
-      CreateAndAddCheckbox(base::ASCIIToUTF16("Collapse margins"));
+      CreateAndAddCheckbox(base::ASCIIToUTF16("Collapse margins"),
+                           base::BindRepeating(
+                               [](FlexLayoutExample* example) {
+                                 example->layout_->SetCollapseMargins(
+                                     example->collapse_margins_->GetChecked());
+                                 example->RefreshLayoutPanel(false);
+                               },
+                               base::Unretained(this)));
 
-  ignore_default_main_axis_margins_ =
-      CreateAndAddCheckbox(base::ASCIIToUTF16("Ignore main axis margins"));
+  ignore_default_main_axis_margins_ = CreateAndAddCheckbox(
+      base::ASCIIToUTF16("Ignore main axis margins"),
+      base::BindRepeating(
+          [](FlexLayoutExample* example) {
+            example->layout_->SetIgnoreDefaultMainAxisMargins(
+                example->ignore_default_main_axis_margins_->GetChecked());
+            example->RefreshLayoutPanel(false);
+          },
+          base::Unretained(this)));
 
   layout_ = layout_panel()->SetLayoutManager(std::make_unique<FlexLayout>());
 }
diff --git a/ui/views/examples/flex_layout_example.h b/ui/views/examples/flex_layout_example.h
index 64cc32e..fe32000e 100644
--- a/ui/views/examples/flex_layout_example.h
+++ b/ui/views/examples/flex_layout_example.h
@@ -30,7 +30,6 @@
   // LayoutExampleBase:
   void ContentsChanged(Textfield* sender,
                        const base::string16& new_contents) override;
-  void ButtonPressedImpl(Button* sender) override;
   void CreateAdditionalControls() override;
   void UpdateLayoutManager() override;
 
diff --git a/ui/views/examples/layout_example_base.cc b/ui/views/examples/layout_example_base.cc
index 4a0729e3..7bb72994 100644
--- a/ui/views/examples/layout_example_base.cc
+++ b/ui/views/examples/layout_example_base.cc
@@ -229,9 +229,10 @@
 }
 
 Checkbox* LayoutExampleBase::CreateAndAddCheckbox(
-    const base::string16& label_text) {
+    const base::string16& label_text,
+    base::RepeatingClosure checkbox_callback) {
   return control_panel_->AddChildView(
-      std::make_unique<Checkbox>(label_text, this));
+      std::make_unique<Checkbox>(label_text, std::move(checkbox_callback)));
 }
 
 void LayoutExampleBase::CreateExampleView(View* container) {
@@ -259,7 +260,9 @@
                             kLayoutExampleVerticalSpacing))
       ->set_cross_axis_alignment(BoxLayout::CrossAxisAlignment::kCenter);
   add_button_ = row->AddChildView(std::make_unique<MdTextButton>(
-      this, l10n_util::GetStringUTF16(IDS_LAYOUT_BASE_ADD_LABEL)));
+      base::BindRepeating(&LayoutExampleBase::AddButtonPressed,
+                          base::Unretained(this)),
+      l10n_util::GetStringUTF16(IDS_LAYOUT_BASE_ADD_LABEL)));
 
   preferred_width_view_ = row->AddChildView(CreateCommonTextfield(this));
   preferred_width_view_->SetText(
@@ -272,19 +275,6 @@
   CreateAdditionalControls();
 }
 
-void LayoutExampleBase::ButtonPressed(Button* sender, const ui::Event& event) {
-  if (sender == add_button_) {
-    auto* const panel =
-        layout_panel_->AddChildView(std::make_unique<ChildPanel>(this));
-    panel->SetPreferredSize(GetNewChildPanelPreferredSize());
-    constexpr int kChildPanelGroup = 100;
-    panel->SetGroup(kChildPanelGroup);
-    RefreshLayoutPanel(false);
-  } else {
-    ButtonPressedImpl(sender);
-  }
-}
-
 gfx::Size LayoutExampleBase::GetNewChildPanelPreferredSize() {
   int width;
   if (!base::StringToInt(preferred_width_view_->GetText(), &width))
@@ -297,5 +287,14 @@
   return gfx::Size(std::max(0, width), std::max(0, height));
 }
 
+void LayoutExampleBase::AddButtonPressed() {
+  auto* const panel =
+      layout_panel_->AddChildView(std::make_unique<ChildPanel>(this));
+  panel->SetPreferredSize(GetNewChildPanelPreferredSize());
+  constexpr int kChildPanelGroup = 100;
+  panel->SetGroup(kChildPanelGroup);
+  RefreshLayoutPanel(false);
+}
+
 }  // namespace examples
 }  // namespace views
diff --git a/ui/views/examples/layout_example_base.h b/ui/views/examples/layout_example_base.h
index 0d7e793..7448c17 100644
--- a/ui/views/examples/layout_example_base.h
+++ b/ui/views/examples/layout_example_base.h
@@ -7,7 +7,6 @@
 
 #include "ui/gfx/geometry/insets.h"
 #include "ui/gfx/geometry/size.h"
-#include "ui/views/controls/button/button.h"
 #include "ui/views/controls/button/checkbox.h"
 #include "ui/views/controls/button/label_button.h"
 #include "ui/views/controls/textfield/textfield_controller.h"
@@ -23,7 +22,6 @@
 // controls. Lays out a sequence of ChildPanels in a view using the layout
 // manager of choice.
 class VIEWS_EXAMPLES_EXPORT LayoutExampleBase : public ExampleBase,
-                                                public ButtonListener,
                                                 public TextfieldController {
  public:
   // Grouping of multiple textfields that provide insets.
@@ -103,13 +101,10 @@
   void CreateMarginsTextFields(const base::string16& label_text,
                                InsetTextfields* textfields);
 
-  // Creates and adds a Checkbox with label |label_text|.
-  Checkbox* CreateAndAddCheckbox(const base::string16& label_text);
-
-  // ButtonListener:
-  // Be sure to call LayoutExampleBase::ButtonPressed() to ensure the "add"
-  // button works correctly.
-  void ButtonPressed(Button* sender, const ui::Event& event) final;
+  // Creates and adds a Checkbox with label |label_text|. Sets
+  // |checkbox_callback| as the callback for the created checkbox.
+  Checkbox* CreateAndAddCheckbox(const base::string16& label_text,
+                                 base::RepeatingClosure checkbox_callback);
 
   // ExampleBase:
   // Be sure to call LayoutExampleBase::CreateExampleView() to ensure default
@@ -122,14 +117,12 @@
   // the specific layout.
   virtual void CreateAdditionalControls() = 0;
 
-  // Handles buttons added by derived classes after button handling for
-  // common controls is done.
-  virtual void ButtonPressedImpl(Button* sender) = 0;
-
   // Performs layout-specific update of the layout manager.
   virtual void UpdateLayoutManager() = 0;
 
  private:
+  void AddButtonPressed();
+
   View* layout_panel_ = nullptr;
   View* control_panel_ = nullptr;
   LabelButton* add_button_ = nullptr;
diff --git a/ui/views/examples/login_bubble_dialog_example.cc b/ui/views/examples/login_bubble_dialog_example.cc
index c7502cc8..dd53f311 100644
--- a/ui/views/examples/login_bubble_dialog_example.cc
+++ b/ui/views/examples/login_bubble_dialog_example.cc
@@ -138,7 +138,11 @@
 
   layout->StartRowWithPadding(0, 0, 0, related_control_padding);
   button_ = layout->AddView(std::make_unique<MdTextButton>(
-      this, GetStringUTF16(IDS_LOGIN_SHOW_BUTTON_LABEL)));
+      Button::PressedCallback(), GetStringUTF16(IDS_LOGIN_SHOW_BUTTON_LABEL)));
+  button_->SetCallback(base::BindRepeating(
+      &LoginBubbleDialogView::Show, button_, BubbleBorder::TOP_LEFT,
+      base::BindRepeating(&LoginBubbleDialogExample::OnSubmit,
+                          base::Unretained(this))));
 
   layout->StartRowWithPadding(0, 0, 0, related_control_padding);
   username_label_ = layout->AddView(std::make_unique<Label>(
@@ -153,14 +157,6 @@
   password_input_ = layout->AddView(std::make_unique<Label>());
 }
 
-void LoginBubbleDialogExample::ButtonPressed(Button* sender,
-                                             const ui::Event& event) {
-  LoginBubbleDialogView::Show(
-      button_, BubbleBorder::TOP_LEFT,
-      base::BindOnce(&LoginBubbleDialogExample::OnSubmit,
-                     base::Unretained(this)));
-}
-
 void LoginBubbleDialogExample::OnSubmit(base::string16 username,
                                         base::string16 password) {
   username_label_->SetVisible(true);
diff --git a/ui/views/examples/login_bubble_dialog_example.h b/ui/views/examples/login_bubble_dialog_example.h
index d4323ad..30c7781 100644
--- a/ui/views/examples/login_bubble_dialog_example.h
+++ b/ui/views/examples/login_bubble_dialog_example.h
@@ -8,7 +8,6 @@
 #include "base/strings/string16.h"
 #include "ui/views/bubble/bubble_border.h"
 #include "ui/views/bubble/bubble_dialog_delegate_view.h"
-#include "ui/views/controls/button/button.h"
 #include "ui/views/controls/textfield/textfield.h"
 #include "ui/views/controls/textfield/textfield_controller.h"
 #include "ui/views/examples/example_base.h"
@@ -45,7 +44,7 @@
 };
 
 // Instantiates the login dialog example.
-class LoginBubbleDialogExample : public ExampleBase, public ButtonListener {
+class LoginBubbleDialogExample : public ExampleBase {
  public:
   LoginBubbleDialogExample();
   ~LoginBubbleDialogExample() override;
@@ -53,9 +52,6 @@
   // ExampleBase:
   void CreateExampleView(View* container) override;
 
-  // ButtonListener:
-  void ButtonPressed(Button* sender, const ui::Event& event) override;
-
   // LoginBubbleDialogController:
   void OnSubmit(base::string16 username, base::string16 password);
 
diff --git a/ui/views/examples/menu_example.cc b/ui/views/examples/menu_example.cc
index 7eae61cc..b0a9e13 100644
--- a/ui/views/examples/menu_example.cc
+++ b/ui/views/examples/menu_example.cc
@@ -60,14 +60,13 @@
   DISALLOW_COPY_AND_ASSIGN(ExampleMenuModel);
 };
 
-class ExampleMenuButton : public MenuButton, public ButtonListener {
+class ExampleMenuButton : public MenuButton {
  public:
   explicit ExampleMenuButton(const base::string16& test);
   ~ExampleMenuButton() override;
 
  private:
-  // ButtonListener:
-  void ButtonPressed(Button* source, const ui::Event& event) override;
+  void ButtonPressed();
 
   ui::SimpleMenuModel* GetMenuModel();
 
@@ -172,22 +171,23 @@
 // ExampleMenuButton -----------------------------------------------------------
 
 ExampleMenuButton::ExampleMenuButton(const base::string16& test)
-    : MenuButton(this, test) {}
+    : MenuButton(base::BindRepeating(&ExampleMenuButton::ButtonPressed,
+                                     base::Unretained(this)),
+                 test) {}
 
 ExampleMenuButton::~ExampleMenuButton() = default;
 
-void ExampleMenuButton::ButtonPressed(Button* source, const ui::Event& event) {
+void ExampleMenuButton::ButtonPressed() {
   menu_runner_ =
       std::make_unique<MenuRunner>(GetMenuModel(), MenuRunner::HAS_MNEMONICS);
 
-  menu_runner_->RunMenuAt(source->GetWidget()->GetTopLevelWidget(),
-                          button_controller(),
-                          gfx::Rect(source->GetMenuPosition(), gfx::Size()),
+  menu_runner_->RunMenuAt(GetWidget()->GetTopLevelWidget(), button_controller(),
+                          gfx::Rect(GetMenuPosition(), gfx::Size()),
                           MenuAnchorPosition::kTopRight, ui::MENU_SOURCE_NONE);
 }
 
 ui::SimpleMenuModel* ExampleMenuButton::GetMenuModel() {
-  if (!menu_model_.get())
+  if (!menu_model_)
     menu_model_ = std::make_unique<ExampleMenuModel>();
   return menu_model_.get();
 }
diff --git a/ui/views/examples/message_box_example.cc b/ui/views/examples/message_box_example.cc
index 1f7d60ba..8f663a6 100644
--- a/ui/views/examples/message_box_example.cc
+++ b/ui/views/examples/message_box_example.cc
@@ -42,26 +42,26 @@
       ->SetOrientation(LayoutOrientation::kHorizontal)
       .SetMainAxisAlignment(LayoutAlignment::kStart);
 
-  status_ = button_panel->AddChildView(std::make_unique<LabelButton>(
-      this, GetStringUTF16(IDS_MESSAGE_STATUS_LABEL)));
-  toggle_ = button_panel->AddChildView(std::make_unique<LabelButton>(
-      this, GetStringUTF16(IDS_MESSAGE_TOGGLE_LABEL)));
+  button_panel->AddChildView(std::make_unique<LabelButton>(
+      base::BindRepeating(&MessageBoxExample::StatusButtonPressed,
+                          base::Unretained(this)),
+      GetStringUTF16(IDS_MESSAGE_STATUS_LABEL)));
+  button_panel->AddChildView(std::make_unique<LabelButton>(
+      base::BindRepeating(
+          [](MessageBoxView* message_box) {
+            message_box->SetCheckBoxSelected(message_box->IsCheckBoxSelected());
+          },
+          base::Unretained(message_box_view_)),
+      GetStringUTF16(IDS_MESSAGE_TOGGLE_LABEL)));
 }
 
-void MessageBoxExample::ButtonPressed(Button* sender, const ui::Event& event) {
-  if (sender == status_) {
-    message_box_view_->SetCheckBoxLabel(
-        message_box_view_->IsCheckBoxSelected()
-            ? GetStringUTF16(IDS_MESSAGE_ON_LABEL)
-            : GetStringUTF16(IDS_MESSAGE_OFF_LABEL));
-    LogStatus(
-        message_box_view_->IsCheckBoxSelected()
-            ? GetStringUTF8(IDS_MESSAGE_CHECK_SELECTED_LABEL).c_str()
-            : GetStringUTF8(IDS_MESSAGE_CHECK_NOT_SELECTED_LABEL).c_str());
-  } else if (sender == toggle_) {
-    message_box_view_->SetCheckBoxSelected(
-        !message_box_view_->IsCheckBoxSelected());
-  }
+void MessageBoxExample::StatusButtonPressed() {
+  const bool selected = message_box_view_->IsCheckBoxSelected();
+  message_box_view_->SetCheckBoxLabel(
+      GetStringUTF16(selected ? IDS_MESSAGE_ON_LABEL : IDS_MESSAGE_OFF_LABEL));
+  LogStatus(GetStringUTF8(selected ? IDS_MESSAGE_CHECK_SELECTED_LABEL
+                                   : IDS_MESSAGE_CHECK_NOT_SELECTED_LABEL)
+                .c_str());
 }
 
 }  // namespace examples
diff --git a/ui/views/examples/message_box_example.h b/ui/views/examples/message_box_example.h
index 2bed43b0..d8648c5 100644
--- a/ui/views/examples/message_box_example.h
+++ b/ui/views/examples/message_box_example.h
@@ -8,7 +8,6 @@
 #include <string>
 
 #include "base/macros.h"
-#include "ui/views/controls/button/button.h"
 #include "ui/views/examples/example_base.h"
 
 namespace views {
@@ -17,8 +16,7 @@
 namespace examples {
 
 // A MessageBoxView example. This tests some of checkbox features as well.
-class VIEWS_EXAMPLES_EXPORT MessageBoxExample : public ExampleBase,
-                                                public ButtonListener {
+class VIEWS_EXAMPLES_EXPORT MessageBoxExample : public ExampleBase {
  public:
   MessageBoxExample();
   ~MessageBoxExample() override;
@@ -27,17 +25,11 @@
   void CreateExampleView(View* container) override;
 
  private:
-  // ButtonListener:
-  void ButtonPressed(Button* sender, const ui::Event& event) override;
+  void StatusButtonPressed();
 
   // The MessageBoxView to be tested.
   MessageBoxView* message_box_view_;
 
-  // Control buttons to show the status and toggle checkbox in the
-  // message box.
-  Button* status_;
-  Button* toggle_;
-
   DISALLOW_COPY_AND_ASSIGN(MessageBoxExample);
 };
 
diff --git a/ui/views/examples/multiline_example.cc b/ui/views/examples/multiline_example.cc
index afc0bdf..186cd382 100644
--- a/ui/views/examples/multiline_example.cc
+++ b/ui/views/examples/multiline_example.cc
@@ -145,13 +145,26 @@
   label->SetMultiLine(true);
   label->SetBorder(CreateSolidBorder(2, SK_ColorCYAN));
 
-  auto label_checkbox =
-      std::make_unique<Checkbox>(GetStringUTF16(IDS_MULTILINE_LABEL), this);
+  auto label_checkbox = std::make_unique<Checkbox>(
+      GetStringUTF16(IDS_MULTILINE_LABEL),
+      base::BindRepeating(
+          [](MultilineExample* example) {
+            example->label_->SetText(example->label_checkbox_->GetChecked()
+                                         ? example->textfield_->GetText()
+                                         : base::string16());
+          },
+          base::Unretained(this)));
   label_checkbox->SetChecked(true);
   label_checkbox->SetRequestFocusOnPress(false);
 
   auto elision_checkbox = std::make_unique<Checkbox>(
-      GetStringUTF16(IDS_MULTILINE_ELIDE_LABEL), this);
+      GetStringUTF16(IDS_MULTILINE_ELIDE_LABEL),
+      base::BindRepeating(
+          [](MultilineExample* example) {
+            example->render_text_view_->SetMaxLines(
+                example->elision_checkbox_->GetChecked() ? 3 : 0);
+          },
+          base::Unretained(this)));
   elision_checkbox->SetChecked(false);
   elision_checkbox->SetRequestFocusOnPress(false);
 
@@ -195,16 +208,5 @@
   example_view()->SchedulePaint();
 }
 
-void MultilineExample::ButtonPressed(Button* sender, const ui::Event& event) {
-  if (sender == label_checkbox_) {
-    label_->SetText(label_checkbox_->GetChecked() ? textfield_->GetText()
-                                                  : base::string16());
-  } else if (sender == elision_checkbox_) {
-    render_text_view_->SetMaxLines(elision_checkbox_->GetChecked() ? 3 : 0);
-  }
-  example_view()->InvalidateLayout();
-  example_view()->SchedulePaint();
-}
-
 }  // namespace examples
 }  // namespace views
diff --git a/ui/views/examples/multiline_example.h b/ui/views/examples/multiline_example.h
index 7bcdbe9..34342820c 100644
--- a/ui/views/examples/multiline_example.h
+++ b/ui/views/examples/multiline_example.h
@@ -6,7 +6,6 @@
 #define UI_VIEWS_EXAMPLES_MULTILINE_EXAMPLE_H_
 
 #include "base/macros.h"
-#include "ui/views/controls/button/button.h"
 #include "ui/views/controls/textfield/textfield_controller.h"
 #include "ui/views/examples/example_base.h"
 
@@ -19,8 +18,7 @@
 
 // An example that compares the multiline rendering of different controls.
 class VIEWS_EXAMPLES_EXPORT MultilineExample : public ExampleBase,
-                                               public TextfieldController,
-                                               public ButtonListener {
+                                               public TextfieldController {
  public:
   MultilineExample();
   ~MultilineExample() override;
@@ -28,9 +26,6 @@
   // ExampleBase:
   void CreateExampleView(View* container) override;
 
-  // ButtonListener:
-  void ButtonPressed(Button* sender, const ui::Event& event) override;
-
  private:
   class RenderTextView;
 
diff --git a/ui/views/examples/progress_bar_example.cc b/ui/views/examples/progress_bar_example.cc
index b101feb..b8bf1404 100644
--- a/ui/views/examples/progress_bar_example.cc
+++ b/ui/views/examples/progress_bar_example.cc
@@ -43,11 +43,15 @@
                         GridLayout::ColumnSize::kUsePreferred, 0, 0);
 
   layout->StartRow(0, 0);
-  minus_button_ = layout->AddView(
-      std::make_unique<views::MdTextButton>(this, base::ASCIIToUTF16("-")));
+  layout->AddView(std::make_unique<views::MdTextButton>(
+      base::BindRepeating(&ProgressBarExample::ButtonPressed,
+                          base::Unretained(this), -0.1),
+      base::ASCIIToUTF16("-")));
   progress_bar_ = layout->AddView(std::make_unique<ProgressBar>());
-  plus_button_ = layout->AddView(
-      std::make_unique<views::MdTextButton>(this, base::ASCIIToUTF16("+")));
+  layout->AddView(std::make_unique<views::MdTextButton>(
+      base::BindRepeating(&ProgressBarExample::ButtonPressed,
+                          base::Unretained(this), 0.1),
+      base::ASCIIToUTF16("+")));
 
   layout->StartRowWithPadding(0, 0, 0, 10);
   layout->AddView(
@@ -64,9 +68,7 @@
   layout->AddView(std::move(shorter_bar));
 }
 
-void ProgressBarExample::ButtonPressed(Button* sender, const ui::Event& event) {
-  constexpr double kStepSize = 0.1;
-  const double step = (sender == minus_button_) ? -kStepSize : kStepSize;
+void ProgressBarExample::ButtonPressed(double step) {
   current_percent_ = base::ClampToRange(current_percent_ + step, 0.0, 1.0);
   progress_bar_->SetValue(current_percent_);
 }
diff --git a/ui/views/examples/progress_bar_example.h b/ui/views/examples/progress_bar_example.h
index a38751bd..b76ff85d 100644
--- a/ui/views/examples/progress_bar_example.h
+++ b/ui/views/examples/progress_bar_example.h
@@ -6,7 +6,6 @@
 #define UI_VIEWS_EXAMPLES_PROGRESS_BAR_EXAMPLE_H_
 
 #include "base/macros.h"
-#include "ui/views/controls/button/button.h"
 #include "ui/views/examples/example_base.h"
 
 namespace views {
@@ -14,8 +13,7 @@
 
 namespace examples {
 
-class VIEWS_EXAMPLES_EXPORT ProgressBarExample : public ExampleBase,
-                                                 public ButtonListener {
+class VIEWS_EXAMPLES_EXPORT ProgressBarExample : public ExampleBase {
  public:
   ProgressBarExample();
   ~ProgressBarExample() override;
@@ -24,11 +22,8 @@
   void CreateExampleView(View* container) override;
 
  private:
-  // ButtonListener:
-  void ButtonPressed(Button* button, const ui::Event& event) override;
+  void ButtonPressed(double step);
 
-  Button* minus_button_ = nullptr;
-  Button* plus_button_ = nullptr;
   ProgressBar* progress_bar_ = nullptr;
   double current_percent_ = 0.0;
 
diff --git a/ui/views/examples/radio_button_example.cc b/ui/views/examples/radio_button_example.cc
index 6345a5f..76de2e9 100644
--- a/ui/views/examples/radio_button_example.cc
+++ b/ui/views/examples/radio_button_example.cc
@@ -51,22 +51,22 @@
             group)));
   }
 
-  select_ = container->AddChildView(std::make_unique<LabelButton>(
-      this, GetStringUTF16(IDS_RADIO_BUTTON_SELECT_BUTTON_LABEL)));
-  status_ = container->AddChildView(std::make_unique<LabelButton>(
-      this, GetStringUTF16(IDS_RADIO_BUTTON_STATUS_LABEL)));
+  container->AddChildView(std::make_unique<LabelButton>(
+      base::BindRepeating(&RadioButton::SetChecked,
+                          base::Unretained(radio_buttons_[2]), true),
+      GetStringUTF16(IDS_RADIO_BUTTON_SELECT_BUTTON_LABEL)));
+  container->AddChildView(std::make_unique<LabelButton>(
+      base::BindRepeating(&RadioButtonExample::StatusButtonPressed,
+                          base::Unretained(this)),
+      GetStringUTF16(IDS_RADIO_BUTTON_STATUS_LABEL)));
 }
 
-void RadioButtonExample::ButtonPressed(Button* sender, const ui::Event& event) {
-  if (sender == select_) {
-    radio_buttons_[2]->SetChecked(true);
-  } else if (sender == status_) {
-    // Show the state of radio buttons.
-    PrintStatus("Group: 1:%s, 2:%s, 3:%s",
-                BoolToOnOff(radio_buttons_[0]->GetChecked()),
-                BoolToOnOff(radio_buttons_[1]->GetChecked()),
-                BoolToOnOff(radio_buttons_[2]->GetChecked()));
-  }
+void RadioButtonExample::StatusButtonPressed() {
+  // Show the state of radio buttons.
+  PrintStatus("Group: 1:%s, 2:%s, 3:%s",
+              BoolToOnOff(radio_buttons_[0]->GetChecked()),
+              BoolToOnOff(radio_buttons_[1]->GetChecked()),
+              BoolToOnOff(radio_buttons_[2]->GetChecked()));
 }
 
 }  // namespace examples
diff --git a/ui/views/examples/radio_button_example.h b/ui/views/examples/radio_button_example.h
index 889934e..0b9cb09a 100644
--- a/ui/views/examples/radio_button_example.h
+++ b/ui/views/examples/radio_button_example.h
@@ -9,18 +9,15 @@
 #include <vector>
 
 #include "base/macros.h"
-#include "ui/views/controls/button/button.h"
 #include "ui/views/examples/example_base.h"
 
 namespace views {
 
-class LabelButton;
 class RadioButton;
 
 namespace examples {
 
-class VIEWS_EXAMPLES_EXPORT RadioButtonExample : public ExampleBase,
-                                                 public ButtonListener {
+class VIEWS_EXAMPLES_EXPORT RadioButtonExample : public ExampleBase {
  public:
   RadioButtonExample();
   ~RadioButtonExample() override;
@@ -29,16 +26,11 @@
   void CreateExampleView(View* container) override;
 
  private:
-  // ButtonListener:
-  void ButtonPressed(Button* sender, const ui::Event& event) override;
+  void StatusButtonPressed();
 
   // Group of 3 radio buttons.
   std::vector<RadioButton*> radio_buttons_;
 
-  // Control button to select radio buttons, and show the status of buttons.
-  LabelButton* select_;
-  LabelButton* status_;
-
   DISALLOW_COPY_AND_ASSIGN(RadioButtonExample);
 };
 
diff --git a/ui/views/examples/scroll_view_example.cc b/ui/views/examples/scroll_view_example.cc
index 91c3756..35bc512 100644
--- a/ui/views/examples/scroll_view_example.cc
+++ b/ui/views/examples/scroll_view_example.cc
@@ -101,39 +101,41 @@
   button_panel->SetLayoutManager(std::make_unique<FlexLayout>())
       ->SetOrientation(LayoutOrientation::kHorizontal);
 
-  wide_ = button_panel->AddChildView(std::make_unique<LabelButton>(
-      this, GetStringUTF16(IDS_SCROLL_VIEW_WIDE_LABEL)));
-  tall_ = button_panel->AddChildView(std::make_unique<LabelButton>(
-      this, GetStringUTF16(IDS_SCROLL_VIEW_TALL_LABEL)));
-  big_square_ = button_panel->AddChildView(std::make_unique<LabelButton>(
-      this, GetStringUTF16(IDS_SCROLL_VIEW_BIG_SQUARE_LABEL)));
-  small_square_ = button_panel->AddChildView(std::make_unique<LabelButton>(
-      this, GetStringUTF16(IDS_SCROLL_VIEW_SMALL_SQUARE_LABEL)));
-  scroll_to_ = button_panel->AddChildView(std::make_unique<LabelButton>(
-      this, GetStringUTF16(IDS_SCROLL_VIEW_SCROLL_TO_LABEL)));
+  button_panel->AddChildView(std::make_unique<LabelButton>(
+      base::BindRepeating(&ScrollViewExample::ButtonPressed,
+                          base::Unretained(this), gfx::Rect(0, 0, 1000, 100),
+                          SK_ColorYELLOW, SK_ColorCYAN),
+      GetStringUTF16(IDS_SCROLL_VIEW_WIDE_LABEL)));
+  button_panel->AddChildView(std::make_unique<LabelButton>(
+      base::BindRepeating(&ScrollViewExample::ButtonPressed,
+                          base::Unretained(this), gfx::Rect(0, 0, 100, 1000),
+                          SK_ColorRED, SK_ColorCYAN),
+      GetStringUTF16(IDS_SCROLL_VIEW_TALL_LABEL)));
+  button_panel->AddChildView(std::make_unique<LabelButton>(
+      base::BindRepeating(&ScrollViewExample::ButtonPressed,
+                          base::Unretained(this), gfx::Rect(0, 0, 1000, 1000),
+                          SK_ColorRED, SK_ColorGREEN),
+      GetStringUTF16(IDS_SCROLL_VIEW_BIG_SQUARE_LABEL)));
+  button_panel->AddChildView(std::make_unique<LabelButton>(
+      base::BindRepeating(&ScrollViewExample::ButtonPressed,
+                          base::Unretained(this), gfx::Rect(0, 0, 100, 100),
+                          SK_ColorYELLOW, SK_ColorGREEN),
+      GetStringUTF16(IDS_SCROLL_VIEW_SMALL_SQUARE_LABEL)));
+  button_panel->AddChildView(std::make_unique<LabelButton>(
+      base::BindRepeating(&View::ScrollRectToVisible,
+                          base::Unretained(scroll_view_->contents()),
+                          gfx::Rect(20, 500, 1000, 500)),
+      GetStringUTF16(IDS_SCROLL_VIEW_SCROLL_TO_LABEL)));
 
   for (View* child : button_panel->children())
     child->SetProperty(views::kFlexBehaviorKey, full_flex);
 }
 
-void ScrollViewExample::ButtonPressed(Button* sender, const ui::Event& event) {
-  if (sender == wide_) {
-    scrollable_->SetBounds(0, 0, 1000, 100);
-    scrollable_->SetColor(SK_ColorYELLOW, SK_ColorCYAN);
-  } else if (sender == tall_) {
-    scrollable_->SetBounds(0, 0, 100, 1000);
-    scrollable_->SetColor(SK_ColorRED, SK_ColorCYAN);
-  } else if (sender == big_square_) {
-    scrollable_->SetBounds(0, 0, 1000, 1000);
-    scrollable_->SetColor(SK_ColorRED, SK_ColorGREEN);
-  } else if (sender == small_square_) {
-    scrollable_->SetBounds(0, 0, 100, 100);
-    scrollable_->SetColor(SK_ColorYELLOW, SK_ColorGREEN);
-  } else if (sender == scroll_to_) {
-    scroll_view_->contents()->ScrollRectToVisible(
-        gfx::Rect(20, 500, 1000, 500));
-  }
-  scroll_view_->InvalidateLayout();
+void ScrollViewExample::ButtonPressed(gfx::Rect bounds,
+                                      SkColor from,
+                                      SkColor to) {
+  scrollable_->SetBoundsRect(std::move(bounds));
+  scrollable_->SetColor(from, to);
 }
 
 }  // namespace examples
diff --git a/ui/views/examples/scroll_view_example.h b/ui/views/examples/scroll_view_example.h
index ce21110..9283b14 100644
--- a/ui/views/examples/scroll_view_example.h
+++ b/ui/views/examples/scroll_view_example.h
@@ -8,18 +8,13 @@
 #include <string>
 
 #include "base/macros.h"
-#include "ui/views/controls/button/button.h"
 #include "ui/views/controls/scroll_view.h"
 #include "ui/views/examples/example_base.h"
 
 namespace views {
-
-class LabelButton;
-
 namespace examples {
 
-class VIEWS_EXAMPLES_EXPORT ScrollViewExample : public ExampleBase,
-                                                public ButtonListener {
+class VIEWS_EXAMPLES_EXPORT ScrollViewExample : public ExampleBase {
  public:
   ScrollViewExample();
   ~ScrollViewExample() override;
@@ -28,18 +23,10 @@
   void CreateExampleView(View* container) override;
 
  private:
-  // ButtonListener:
-  void ButtonPressed(Button* sender, const ui::Event& event) override;
-
-  // Control buttons to change the size of scrollable and jump to
-  // predefined position.
-  LabelButton* wide_;
-  LabelButton* tall_;
-  LabelButton* big_square_;
-  LabelButton* small_square_;
-  LabelButton* scroll_to_;
-
   class ScrollableView;
+
+  void ButtonPressed(gfx::Rect bounds, SkColor from, SkColor to);
+
   // The content of the scroll view.
   ScrollableView* scrollable_;
 
diff --git a/ui/views/examples/tabbed_pane_example.cc b/ui/views/examples/tabbed_pane_example.cc
index 11bcdcf1..226b55b0 100644
--- a/ui/views/examples/tabbed_pane_example.cc
+++ b/ui/views/examples/tabbed_pane_example.cc
@@ -32,11 +32,22 @@
   auto tabbed_pane = std::make_unique<TabbedPane>();
   tabbed_pane->set_listener(this);
   auto add = std::make_unique<LabelButton>(
-      this, GetStringUTF16(IDS_TABBED_PANE_ADD_LABEL));
+      base::BindRepeating(&TabbedPaneExample::AddButton, base::Unretained(this),
+                          GetStringUTF16(IDS_TABBED_PANE_ADDED_LABEL)),
+      GetStringUTF16(IDS_TABBED_PANE_ADD_LABEL));
+
   auto add_at = std::make_unique<LabelButton>(
-      this, GetStringUTF16(IDS_TABBED_PANE_ADD_1_LABEL));
+      base::BindRepeating(&TabbedPaneExample::AddAtButtonPressed,
+                          base::Unretained(this)),
+      GetStringUTF16(IDS_TABBED_PANE_ADD_1_LABEL));
   auto select_at = std::make_unique<LabelButton>(
-      this, GetStringUTF16(IDS_TABBED_PANE_SELECT_1_LABEL));
+      base::BindRepeating(
+          [](TabbedPane* pane) {
+            if (pane->GetTabCount() > 1)
+              pane->SelectTabAt(1);
+          },
+          base::Unretained(tabbed_pane_)),
+      GetStringUTF16(IDS_TABBED_PANE_SELECT_1_LABEL));
 
   container->SetLayoutManager(std::make_unique<views::FlexLayout>())
       ->SetOrientation(LayoutOrientation::kVertical);
@@ -64,20 +75,6 @@
     view->SetProperty(views::kFlexBehaviorKey, full_flex);
 }
 
-void TabbedPaneExample::ButtonPressed(Button* sender, const ui::Event& event) {
-  if (sender == add_) {
-    AddButton(GetStringUTF16(IDS_TABBED_PANE_ADDED_LABEL));
-  } else if (sender == add_at_) {
-    const base::string16 label = GetStringUTF16(IDS_TABBED_PANE_ADDED_1_LABEL);
-    tabbed_pane_->AddTabAtIndex(1, label,
-                                std::make_unique<LabelButton>(nullptr, label));
-  } else if (sender == select_at_) {
-    if (tabbed_pane_->GetTabCount() > 1)
-      tabbed_pane_->SelectTabAt(1);
-  }
-  PrintCurrentStatus();
-}
-
 void TabbedPaneExample::TabSelectedAt(int index) {
   // Just print the status when selection changes.
   PrintCurrentStatus();
@@ -90,6 +87,15 @@
 
 void TabbedPaneExample::AddButton(const base::string16& label) {
   tabbed_pane_->AddTab(label, std::make_unique<LabelButton>(nullptr, label));
+  PrintCurrentStatus();
+}
+
+void TabbedPaneExample::AddAtButtonPressed() {
+  const base::string16 label = GetStringUTF16(IDS_TABBED_PANE_ADDED_1_LABEL);
+  tabbed_pane_->AddTabAtIndex(
+      1, label,
+      std::make_unique<LabelButton>(Button::PressedCallback(), label));
+  PrintCurrentStatus();
 }
 
 }  // namespace examples
diff --git a/ui/views/examples/tabbed_pane_example.h b/ui/views/examples/tabbed_pane_example.h
index ce4fe34d4..c9f4cf09 100644
--- a/ui/views/examples/tabbed_pane_example.h
+++ b/ui/views/examples/tabbed_pane_example.h
@@ -8,18 +8,18 @@
 #include <string>
 
 #include "base/macros.h"
-#include "ui/views/controls/button/button.h"
+#include "base/strings/string16.h"
 #include "ui/views/controls/tabbed_pane/tabbed_pane_listener.h"
 #include "ui/views/examples/example_base.h"
 
 namespace views {
+class Button;
 class TabbedPane;
 
 namespace examples {
 
 // A TabbedPane example tests adding and selecting tabs.
 class VIEWS_EXAMPLES_EXPORT TabbedPaneExample : public ExampleBase,
-                                                public ButtonListener,
                                                 public TabbedPaneListener {
  public:
   TabbedPaneExample();
@@ -29,9 +29,6 @@
   void CreateExampleView(View* container) override;
 
  private:
-  // ButtonListener:
-  void ButtonPressed(Button* sender, const ui::Event& event) override;
-
   // TabbedPaneListener:
   void TabSelectedAt(int index) override;
 
@@ -40,6 +37,8 @@
 
   void AddButton(const base::string16& label);
 
+  void AddAtButtonPressed();
+
   // The tabbed pane to be tested.
   TabbedPane* tabbed_pane_;
 
diff --git a/ui/views/examples/table_example.cc b/ui/views/examples/table_example.cc
index 22b0536..647d527 100644
--- a/ui/views/examples/table_example.cc
+++ b/ui/views/examples/table_example.cc
@@ -77,25 +77,30 @@
   canvas1.drawColor(SK_ColorRED);
   canvas2.drawColor(SK_ColorBLUE);
 
-  auto make_checkbox =
-      [this](base::string16 text) -> std::unique_ptr<Checkbox> {
-    auto result = std::make_unique<Checkbox>(text, this);
-    result->SetChecked(true);
-    return result;
-  };
-
-  // Make buttons
   auto* button_panel = container->AddChildView(std::make_unique<View>());
   button_panel->SetLayoutManager(std::make_unique<views::FlexLayout>())
       ->SetOrientation(LayoutOrientation::kHorizontal);
-  column1_visible_checkbox_ = button_panel->AddChildView(
-      make_checkbox(ASCIIToUTF16("Fruit column visible")));
-  column2_visible_checkbox_ = button_panel->AddChildView(
-      make_checkbox(ASCIIToUTF16("Color column visible")));
-  column3_visible_checkbox_ = button_panel->AddChildView(
-      make_checkbox(ASCIIToUTF16("Origin column visible")));
-  column4_visible_checkbox_ = button_panel->AddChildView(
-      make_checkbox(ASCIIToUTF16("Price column visible")));
+
+  const auto make_checkbox = [&](base::string16 label, int id) {
+    auto* const checkbox =
+        button_panel->AddChildView(std::make_unique<Checkbox>(
+            std::move(label), Button::PressedCallback()));
+    checkbox->SetCallback(base::BindRepeating(
+        [](TableView* table, int id, Checkbox* checkbox) {
+          table->SetColumnVisibility(id, checkbox->GetChecked());
+        },
+        base::Unretained(table_), id, checkbox));
+    checkbox->SetChecked(true);
+    return checkbox;
+  };
+  column1_visible_checkbox_ =
+      make_checkbox(ASCIIToUTF16("Fruit column visible"), 0);
+  column2_visible_checkbox_ =
+      make_checkbox(ASCIIToUTF16("Color column visible"), 1);
+  column3_visible_checkbox_ =
+      make_checkbox(ASCIIToUTF16("Origin column visible"), 2);
+  column4_visible_checkbox_ =
+      make_checkbox(ASCIIToUTF16("Price column visible"), 3);
 
   for (View* child : button_panel->children())
     child->SetProperty(views::kFlexBehaviorKey, full_flex);
@@ -169,24 +174,5 @@
 
 void TableExample::OnKeyDown(ui::KeyboardCode virtual_keycode) {}
 
-void TableExample::ButtonPressed(Button* sender, const ui::Event& event) {
-  int index = 0;
-  bool show = true;
-  if (sender == column1_visible_checkbox_) {
-    index = 0;
-    show = column1_visible_checkbox_->GetChecked();
-  } else if (sender == column2_visible_checkbox_) {
-    index = 1;
-    show = column2_visible_checkbox_->GetChecked();
-  } else if (sender == column3_visible_checkbox_) {
-    index = 2;
-    show = column3_visible_checkbox_->GetChecked();
-  } else if (sender == column4_visible_checkbox_) {
-    index = 3;
-    show = column4_visible_checkbox_->GetChecked();
-  }
-  table_->SetColumnVisibility(index, show);
-}
-
 }  // namespace examples
 }  // namespace views
diff --git a/ui/views/examples/table_example.h b/ui/views/examples/table_example.h
index a12ac53..ba04483 100644
--- a/ui/views/examples/table_example.h
+++ b/ui/views/examples/table_example.h
@@ -10,7 +10,6 @@
 #include "base/macros.h"
 #include "third_party/skia/include/core/SkBitmap.h"
 #include "ui/base/models/table_model.h"
-#include "ui/views/controls/button/button.h"
 #include "ui/views/controls/table/table_grouper.h"
 #include "ui/views/controls/table/table_view.h"
 #include "ui/views/controls/table/table_view_observer.h"
@@ -29,8 +28,7 @@
 class VIEWS_EXAMPLES_EXPORT TableExample : public ExampleBase,
                                            public ui::TableModel,
                                            public TableGrouper,
-                                           public TableViewObserver,
-                                           public ButtonListener {
+                                           public TableViewObserver {
  public:
   TableExample();
   ~TableExample() override;
@@ -54,9 +52,6 @@
   void OnMiddleClick() override;
   void OnKeyDown(ui::KeyboardCode virtual_keycode) override;
 
-  // ButtonListener:
-  void ButtonPressed(Button* sender, const ui::Event& event) override;
-
  private:
   // The table to be tested.
   TableView* table_ = nullptr;
diff --git a/ui/views/examples/text_example.cc b/ui/views/examples/text_example.cc
index 9ba9a15..4eed781 100644
--- a/ui/views/examples/text_example.cc
+++ b/ui/views/examples/text_example.cc
@@ -106,8 +106,9 @@
 TextExample::~TextExample() = default;
 
 Checkbox* TextExample::AddCheckbox(GridLayout* layout, const char* name) {
-  return layout->AddView(
-      std::make_unique<Checkbox>(base::ASCIIToUTF16(name), this));
+  return layout->AddView(std::make_unique<Checkbox>(
+      base::ASCIIToUTF16(name),
+      base::BindRepeating(&TextExample::UpdateStyle, base::Unretained(this))));
 }
 
 Combobox* TextExample::AddCombobox(GridLayout* layout,
@@ -208,7 +209,7 @@
   TextComboboxChanged();  // Sets initial text content.
 }
 
-void TextExample::ButtonPressed(Button* button, const ui::Event& event) {
+void TextExample::UpdateStyle() {
   int flags = text_view_->GetFlags();
   int style = text_view_->GetStyle();
   SetFlagFromCheckbox(multiline_checkbox_, &flags, gfx::Canvas::MULTI_LINE);
diff --git a/ui/views/examples/text_example.h b/ui/views/examples/text_example.h
index 6d6a6367..eb76a150 100644
--- a/ui/views/examples/text_example.h
+++ b/ui/views/examples/text_example.h
@@ -9,7 +9,6 @@
 #include <vector>
 
 #include "base/macros.h"
-#include "ui/views/controls/button/button.h"
 #include "ui/views/examples/example_base.h"
 
 namespace views {
@@ -19,8 +18,7 @@
 
 namespace examples {
 
-class VIEWS_EXAMPLES_EXPORT TextExample : public ExampleBase,
-                                          public ButtonListener {
+class VIEWS_EXAMPLES_EXPORT TextExample : public ExampleBase {
  public:
   TextExample();
   ~TextExample() override;
@@ -29,6 +27,8 @@
   void CreateExampleView(View* container) override;
 
  private:
+  class TextExampleView;
+
   // Creates and adds a check box to the layout.
   Checkbox* AddCheckbox(GridLayout* layout, const char* name);
 
@@ -46,10 +46,8 @@
   void PrefixComboboxChanged();
   void WeightComboboxChanged();
 
-  // ButtonListener:
-  void ButtonPressed(Button* button, const ui::Event& event) override;
+  void UpdateStyle();
 
-  class TextExampleView;
   // The content of the scroll view.
   TextExampleView* text_view_;
 
diff --git a/ui/views/examples/textfield_example.cc b/ui/views/examples/textfield_example.cc
index 7f1d9b2..9748909d 100644
--- a/ui/views/examples/textfield_example.cc
+++ b/ui/views/examples/textfield_example.cc
@@ -104,27 +104,44 @@
   show_password_ = MakeRow<View, LabelButton>(
       layout, nullptr,
       std::make_unique<LabelButton>(
-          this, GetStringUTF16(IDS_TEXTFIELD_SHOW_PASSWORD_LABEL)));
+          base::BindRepeating(
+              [](TextfieldExample* example) {
+                PrintStatus(
+                    "Password [%s]",
+                    base::UTF16ToUTF8(example->password_->GetText()).c_str());
+              },
+              base::Unretained(this)),
+          GetStringUTF16(IDS_TEXTFIELD_SHOW_PASSWORD_LABEL)));
   set_background_ = MakeRow<View, LabelButton>(
       layout, nullptr,
       std::make_unique<LabelButton>(
-          this, GetStringUTF16(IDS_TEXTFIELD_BACKGROUND_LABEL)));
+          base::BindRepeating(&Textfield::SetBackgroundColor,
+                              base::Unretained(password_), gfx::kGoogleRed300),
+          GetStringUTF16(IDS_TEXTFIELD_BACKGROUND_LABEL)));
   clear_all_ = MakeRow<View, LabelButton>(
       layout, nullptr,
-      std::make_unique<LabelButton>(this,
-                                    GetStringUTF16(IDS_TEXTFIELD_CLEAR_LABEL)));
+      std::make_unique<LabelButton>(
+          base::BindRepeating(&TextfieldExample::ClearAllButtonPressed,
+                              base::Unretained(this)),
+          GetStringUTF16(IDS_TEXTFIELD_CLEAR_LABEL)));
   append_ = MakeRow<View, LabelButton>(
       layout, nullptr,
       std::make_unique<LabelButton>(
-          this, GetStringUTF16(IDS_TEXTFIELD_APPEND_LABEL)));
+          base::BindRepeating(&TextfieldExample::AppendButtonPressed,
+                              base::Unretained(this)),
+          GetStringUTF16(IDS_TEXTFIELD_APPEND_LABEL)));
   set_ = MakeRow<View, LabelButton>(
       layout, nullptr,
-      std::make_unique<LabelButton>(this,
-                                    GetStringUTF16(IDS_TEXTFIELD_SET_LABEL)));
+      std::make_unique<LabelButton>(
+          base::BindRepeating(&TextfieldExample::SetButtonPressed,
+                              base::Unretained(this)),
+          GetStringUTF16(IDS_TEXTFIELD_SET_LABEL)));
   set_style_ = MakeRow<View, LabelButton>(
       layout, nullptr,
       std::make_unique<LabelButton>(
-          this, GetStringUTF16(IDS_TEXTFIELD_SET_STYLE_LABEL)));
+          base::BindRepeating(&TextfieldExample::SetStyleButtonPressed,
+                              base::Unretained(this)),
+          GetStringUTF16(IDS_TEXTFIELD_SET_STYLE_LABEL)));
 }
 
 bool TextfieldExample::HandleKeyEvent(Textfield* sender,
@@ -138,51 +155,53 @@
   return false;
 }
 
-void TextfieldExample::ButtonPressed(Button* sender, const ui::Event& event) {
-  if (sender == show_password_) {
-    PrintStatus("Password [%s]",
-                base::UTF16ToUTF8(password_->GetText()).c_str());
-  } else if (sender == set_background_) {
-    password_->SetBackgroundColor(gfx::kGoogleRed300);
-  } else if (sender == clear_all_) {
-    base::string16 empty;
-    name_->SetText(empty);
-    password_->SetText(empty);
-    disabled_->SetText(empty);
-    read_only_->SetText(empty);
-    invalid_->SetText(empty);
-    rtl_->SetText(empty);
-  } else if (sender == append_) {
-    name_->AppendText(GetStringUTF16(IDS_TEXTFIELD_APPEND_UPDATE_TEXT));
-    password_->AppendText(GetStringUTF16(IDS_TEXTFIELD_APPEND_UPDATE_TEXT));
-    disabled_->SetText(GetStringUTF16(IDS_TEXTFIELD_APPEND_UPDATE_TEXT));
-    read_only_->AppendText(GetStringUTF16(IDS_TEXTFIELD_APPEND_UPDATE_TEXT));
-    invalid_->AppendText(GetStringUTF16(IDS_TEXTFIELD_APPEND_UPDATE_TEXT));
-    rtl_->AppendText(GetStringUTF16(IDS_TEXTFIELD_APPEND_UPDATE_TEXT));
-  } else if (sender == set_) {
-    name_->SetText(GetStringUTF16(IDS_TEXTFIELD_SET_UPDATE_TEXT));
-    password_->SetText(GetStringUTF16(IDS_TEXTFIELD_SET_UPDATE_TEXT));
-    disabled_->SetText(GetStringUTF16(IDS_TEXTFIELD_SET_UPDATE_TEXT));
-    read_only_->SetText(GetStringUTF16(IDS_TEXTFIELD_SET_UPDATE_TEXT));
-    invalid_->SetText(GetStringUTF16(IDS_TEXTFIELD_SET_UPDATE_TEXT));
-    rtl_->SetText(GetStringUTF16(IDS_TEXTFIELD_SET_UPDATE_TEXT));
-  } else if (sender == set_style_) {
-    if (!name_->GetText().empty()) {
-      name_->SetColor(SK_ColorGREEN);
+void TextfieldExample::ClearAllButtonPressed() {
+  name_->SetText(base::string16());
+  password_->SetText(base::string16());
+  disabled_->SetText(base::string16());
+  read_only_->SetText(base::string16());
+  invalid_->SetText(base::string16());
+  rtl_->SetText(base::string16());
+}
 
-      if (name_->GetText().length() >= 5) {
-        size_t fifth = name_->GetText().length() / 5;
-        const gfx::Range big_range(1 * fifth, 4 * fifth);
-        name_->ApplyStyle(gfx::TEXT_STYLE_UNDERLINE, true, big_range);
-        name_->ApplyColor(SK_ColorBLUE, big_range);
+void TextfieldExample::AppendButtonPressed() {
+  const base::string16 append_text =
+      GetStringUTF16(IDS_TEXTFIELD_APPEND_UPDATE_TEXT);
+  name_->AppendText(append_text);
+  password_->AppendText(append_text);
+  disabled_->SetText(append_text);
+  read_only_->AppendText(append_text);
+  invalid_->AppendText(append_text);
+  rtl_->AppendText(append_text);
+}
 
-        const gfx::Range small_range(2 * fifth, 3 * fifth);
-        name_->ApplyStyle(gfx::TEXT_STYLE_ITALIC, true, small_range);
-        name_->ApplyStyle(gfx::TEXT_STYLE_UNDERLINE, false, small_range);
-        name_->ApplyColor(SK_ColorRED, small_range);
-      }
-    }
-  }
+void TextfieldExample::SetButtonPressed() {
+  const base::string16 set_text = GetStringUTF16(IDS_TEXTFIELD_SET_UPDATE_TEXT);
+  name_->SetText(set_text);
+  password_->SetText(set_text);
+  disabled_->SetText(set_text);
+  read_only_->SetText(set_text);
+  invalid_->SetText(set_text);
+  rtl_->SetText(set_text);
+}
+
+void TextfieldExample::SetStyleButtonPressed() {
+  if (name_->GetText().empty())
+    return;
+  name_->SetColor(SK_ColorGREEN);
+
+  const size_t fifth = name_->GetText().length() / 5;
+  if (!fifth)
+    return;
+
+  const gfx::Range big_range(1 * fifth, 4 * fifth);
+  name_->ApplyStyle(gfx::TEXT_STYLE_UNDERLINE, true, big_range);
+  name_->ApplyColor(SK_ColorBLUE, big_range);
+
+  const gfx::Range small_range(2 * fifth, 3 * fifth);
+  name_->ApplyStyle(gfx::TEXT_STYLE_ITALIC, true, small_range);
+  name_->ApplyStyle(gfx::TEXT_STYLE_UNDERLINE, false, small_range);
+  name_->ApplyColor(SK_ColorRED, small_range);
 }
 
 }  // namespace examples
diff --git a/ui/views/examples/textfield_example.h b/ui/views/examples/textfield_example.h
index 6ab66ff4..90a4371 100644
--- a/ui/views/examples/textfield_example.h
+++ b/ui/views/examples/textfield_example.h
@@ -8,7 +8,6 @@
 #include <string>
 
 #include "base/macros.h"
-#include "ui/views/controls/button/button.h"
 #include "ui/views/controls/textfield/textfield_controller.h"
 #include "ui/views/examples/example_base.h"
 
@@ -20,8 +19,7 @@
 
 // TextfieldExample mimics login screen.
 class VIEWS_EXAMPLES_EXPORT TextfieldExample : public ExampleBase,
-                                               public TextfieldController,
-                                               public ButtonListener {
+                                               public TextfieldController {
  public:
   TextfieldExample();
   ~TextfieldExample() override;
@@ -36,8 +34,10 @@
   bool HandleMouseEvent(Textfield* sender,
                         const ui::MouseEvent& mouse_event) override;
 
-  // ButtonListener:
-  void ButtonPressed(Button* sender, const ui::Event& event) override;
+  void ClearAllButtonPressed();
+  void AppendButtonPressed();
+  void SetButtonPressed();
+  void SetStyleButtonPressed();
 
   // Textfields for name and password.
   Textfield* name_ = nullptr;
diff --git a/ui/views/examples/toggle_button_example.cc b/ui/views/examples/toggle_button_example.cc
index 3bc279f..66f63eb0 100644
--- a/ui/views/examples/toggle_button_example.cc
+++ b/ui/views/examples/toggle_button_example.cc
@@ -29,12 +29,12 @@
   auto layout = std::make_unique<BoxLayout>(BoxLayout::Orientation::kVertical);
   layout->set_cross_axis_alignment(BoxLayout::CrossAxisAlignment::kCenter);
   container->SetLayoutManager(std::move(layout));
-  button_ = container->AddChildView(std::make_unique<ToggleButton>(this));
-}
-
-void ToggleButtonExample::ButtonPressed(Button* sender,
-                                        const ui::Event& event) {
-  PrintStatus("Pressed! count: %d", ++count_);
+  button_ = container->AddChildView(
+      std::make_unique<ToggleButton>(base::BindRepeating(
+          [](ToggleButtonExample* example) {
+            PrintStatus("Pressed! count: %d", ++example->count_);
+          },
+          base::Unretained(this))));
 }
 
 }  // namespace examples
diff --git a/ui/views/examples/toggle_button_example.h b/ui/views/examples/toggle_button_example.h
index 90a5891..1fca2e5 100644
--- a/ui/views/examples/toggle_button_example.h
+++ b/ui/views/examples/toggle_button_example.h
@@ -6,7 +6,6 @@
 #define UI_VIEWS_EXAMPLES_TOGGLE_BUTTON_EXAMPLE_H_
 
 #include "base/macros.h"
-#include "ui/views/controls/button/button.h"
 #include "ui/views/examples/example_base.h"
 
 namespace views {
@@ -15,8 +14,7 @@
 namespace examples {
 
 // ToggleButtonExample exercises a ToggleButton control.
-class VIEWS_EXAMPLES_EXPORT ToggleButtonExample : public ExampleBase,
-                                                  public ButtonListener {
+class VIEWS_EXAMPLES_EXPORT ToggleButtonExample : public ExampleBase {
  public:
   ToggleButtonExample();
   ~ToggleButtonExample() override;
@@ -25,9 +23,6 @@
   void CreateExampleView(View* container) override;
 
  private:
-  // ButtonListener:
-  void ButtonPressed(Button* sender, const ui::Event& event) override;
-
   // The only control in this test.
   ToggleButton* button_ = nullptr;
 
diff --git a/ui/views/examples/tree_view_example.cc b/ui/views/examples/tree_view_example.cc
index 372bfbc..56024aa 100644
--- a/ui/views/examples/tree_view_example.cc
+++ b/ui/views/examples/tree_view_example.cc
@@ -95,15 +95,20 @@
   tree_view->SetDrawingProvider(
       std::make_unique<ExampleTreeViewDrawingProvider>());
   auto add = std::make_unique<LabelButton>(
-      this, GetStringUTF16(IDS_TREE_VIEW_ADD_BUTTON_LABEL));
+      base::BindRepeating(&TreeViewExample::AddNewNode, base::Unretained(this)),
+      GetStringUTF16(IDS_TREE_VIEW_ADD_BUTTON_LABEL));
   add->SetFocusForPlatform();
   add->SetRequestFocusOnPress(true);
   auto remove = std::make_unique<LabelButton>(
-      this, GetStringUTF16(IDS_TREE_VIEW_REMOVE_BUTTON_LABEL));
+      base::BindRepeating(&TreeViewExample::RemoveSelectedNode,
+                          base::Unretained(this)),
+      GetStringUTF16(IDS_TREE_VIEW_REMOVE_BUTTON_LABEL));
   remove->SetFocusForPlatform();
   remove->SetRequestFocusOnPress(true);
   auto change_title = std::make_unique<LabelButton>(
-      this, GetStringUTF16(IDS_TREE_VIEW_CHANGE_TITLE_LABEL));
+      base::BindRepeating(&TreeViewExample::SetSelectedNodeTitle,
+                          base::Unretained(this)),
+      GetStringUTF16(IDS_TREE_VIEW_CHANGE_TITLE_LABEL));
   change_title->SetFocusForPlatform();
   change_title->SetRequestFocusOnPress(true);
 
@@ -142,28 +147,26 @@
   tree_view_->SetSelectedNode(new_node);
 }
 
+void TreeViewExample::RemoveSelectedNode() {
+  auto* selected_node = static_cast<NodeType*>(tree_view_->GetSelectedNode());
+  DCHECK(selected_node);
+  DCHECK_NE(model_.GetRoot(), selected_node);
+  model_.Remove(selected_node->parent(), selected_node);
+}
+
+void TreeViewExample::SetSelectedNodeTitle() {
+  auto* selected_node = static_cast<NodeType*>(tree_view_->GetSelectedNode());
+  DCHECK(selected_node);
+  model_.SetTitle(
+      selected_node,
+      selected_node->GetTitle() + GetStringUTF16(IDS_TREE_VIEW_NEW_NODE_LABEL));
+}
+
 bool TreeViewExample::IsCommandIdEnabled(int command_id) {
   return command_id != ID_REMOVE ||
          tree_view_->GetSelectedNode() != model_.GetRoot();
 }
 
-void TreeViewExample::ButtonPressed(Button* sender, const ui::Event& event) {
-  NodeType* selected_node =
-      static_cast<NodeType*>(tree_view_->GetSelectedNode());
-  if (sender == add_) {
-    AddNewNode();
-  } else if (sender == remove_) {
-    DCHECK(selected_node);
-    DCHECK_NE(model_.GetRoot(), selected_node);
-    model_.Remove(selected_node->parent(), selected_node);
-  } else if (sender == change_title_) {
-    DCHECK(selected_node);
-    model_.SetTitle(selected_node,
-                    selected_node->GetTitle() +
-                        GetStringUTF16(IDS_TREE_VIEW_NEW_NODE_LABEL));
-  }
-}
-
 void TreeViewExample::OnTreeViewSelectionChanged(TreeView* tree_view) {
   ui::TreeModelNode* node = tree_view_->GetSelectedNode();
   if (node) {
diff --git a/ui/views/examples/tree_view_example.h b/ui/views/examples/tree_view_example.h
index 31fa197..2a184f8 100644
--- a/ui/views/examples/tree_view_example.h
+++ b/ui/views/examples/tree_view_example.h
@@ -11,7 +11,6 @@
 #include "ui/base/models/simple_menu_model.h"
 #include "ui/base/models/tree_node_model.h"
 #include "ui/views/context_menu_controller.h"
-#include "ui/views/controls/button/button.h"
 #include "ui/views/controls/tree/tree_view.h"
 #include "ui/views/controls/tree/tree_view_controller.h"
 #include "ui/views/examples/example_base.h"
@@ -29,7 +28,6 @@
 
 class VIEWS_EXAMPLES_EXPORT TreeViewExample
     : public ExampleBase,
-      public ButtonListener,
       public TreeViewController,
       public ContextMenuController,
       public ui::SimpleMenuModel::Delegate {
@@ -44,15 +42,13 @@
   // IDs used by the context menu.
   enum MenuIDs { ID_EDIT, ID_REMOVE, ID_ADD };
 
-  // Adds a new node.
   void AddNewNode();
+  void RemoveSelectedNode();
+  void SetSelectedNodeTitle();
 
   // Non-const version of IsCommandIdEnabled.
   bool IsCommandIdEnabled(int command_id);
 
-  // ButtonListener:
-  void ButtonPressed(Button* sender, const ui::Event& event) override;
-
   // TreeViewController:
   void OnTreeViewSelectionChanged(TreeView* tree_view) override;
   bool CanEdit(TreeView* tree_view, ui::TreeModelNode* node) override;
diff --git a/ui/views/examples/vector_example.cc b/ui/views/examples/vector_example.cc
index 6ba3ef0..26b9cf9e 100644
--- a/ui/views/examples/vector_example.cc
+++ b/ui/views/examples/vector_example.cc
@@ -37,9 +37,7 @@
 
 namespace {
 
-class VectorIconGallery : public View,
-                          public TextfieldController,
-                          public ButtonListener {
+class VectorIconGallery : public View, public TextfieldController {
  public:
   VectorIconGallery() {
     size_input_ = AddChildView(std::make_unique<Textfield>());
@@ -72,7 +70,9 @@
     file_chooser_ = file_container->AddChildView(std::move(file_chooser));
     file_go_button_ =
         file_container->AddChildView(std::make_unique<MdTextButton>(
-            this, GetStringUTF16(IDS_VECTOR_RENDER_LABEL)));
+            base::BindRepeating(&VectorIconGallery::FileGoButtonPressed,
+                                base::Unretained(this)),
+            GetStringUTF16(IDS_VECTOR_RENDER_LABEL)));
     file_box->SetFlexForView(file_chooser_, 1);
     AddChildView(std::move(file_container));
 
@@ -109,9 +109,8 @@
     }
   }
 
-  // ButtonListener
-  void ButtonPressed(Button* sender, const ui::Event& event) override {
-    DCHECK_EQ(file_go_button_, sender);
+ private:
+  void FileGoButtonPressed() {
     base::ScopedAllowBlockingForTesting allow_blocking;
 #if defined(OS_WIN)
     base::FilePath path(file_chooser_->GetText());
@@ -128,7 +127,6 @@
     Update();
   }
 
- private:
   void Update() {
     if (!contents_.empty()) {
       image_view_->SetImage(
diff --git a/ui/views/examples/widget_example.cc b/ui/views/examples/widget_example.cc
index 5365784..673c84e 100644
--- a/ui/views/examples/widget_example.cc
+++ b/ui/views/examples/widget_example.cc
@@ -27,33 +27,6 @@
 namespace views {
 namespace examples {
 
-namespace {
-
-// TODO(ellyjones): This should return unique_ptr<> instead, but
-// CreateDialogWidget doesn't yet have an override that takes that, and can't
-// pending sorting out the mess around WidgetDelegate ownership.
-DialogDelegate* MakeExampleDialog(bool modal) {
-  auto dialog = std::make_unique<DialogDelegateView>();
-  dialog->SetTitle(IDS_WIDGET_WINDOW_TITLE);
-
-  dialog->SetBackground(CreateSolidBackground(SK_ColorGRAY));
-  dialog->SetLayoutManager(std::make_unique<BoxLayout>(
-      BoxLayout::Orientation::kVertical, gfx::Insets(10), 10));
-  dialog->SetExtraView(std::make_unique<MdTextButton>(
-      nullptr, GetStringUTF16(IDS_WIDGET_EXTRA_BUTTON)));
-  dialog->SetFootnoteView(
-      std::make_unique<Label>(GetStringUTF16(IDS_WIDGET_FOOTNOTE_LABEL)));
-  dialog->AddChildView(std::make_unique<Label>(
-      GetStringUTF16(IDS_WIDGET_DIALOG_CONTENTS_LABEL)));
-
-  if (modal)
-    dialog->SetModalType(ui::MODAL_TYPE_WINDOW);
-
-  return dialog.release();
-}
-
-}  // namespace
-
 WidgetExample::WidgetExample()
     : ExampleBase(GetStringUTF8(IDS_WIDGET_SELECT_LABEL).c_str()) {}
 
@@ -62,30 +35,62 @@
 void WidgetExample::CreateExampleView(View* container) {
   container->SetLayoutManager(std::make_unique<BoxLayout>(
       BoxLayout::Orientation::kHorizontal, gfx::Insets(), 10));
-  BuildButton(container, GetStringUTF16(IDS_WIDGET_POPUP_BUTTON_LABEL), POPUP);
-  BuildButton(container, GetStringUTF16(IDS_WIDGET_DIALOG_BUTTON_LABEL),
-              DIALOG);
-  BuildButton(container, GetStringUTF16(IDS_WIDGET_MODAL_BUTTON_LABEL),
-              MODAL_DIALOG);
+  LabelButton* popup_button =
+      BuildButton(container, GetStringUTF16(IDS_WIDGET_POPUP_BUTTON_LABEL));
+  popup_button->SetCallback(
+      base::BindRepeating(&WidgetExample::ShowWidget, base::Unretained(this),
+                          popup_button, Widget::InitParams::TYPE_POPUP));
+  LabelButton* dialog_button =
+      BuildButton(container, GetStringUTF16(IDS_WIDGET_DIALOG_BUTTON_LABEL));
+  dialog_button->SetCallback(
+      base::BindRepeating(&WidgetExample::CreateDialogWidget,
+                          base::Unretained(this), dialog_button, false));
+  LabelButton* modal_button =
+      BuildButton(container, GetStringUTF16(IDS_WIDGET_MODAL_BUTTON_LABEL));
+  modal_button->SetCallback(
+      base::BindRepeating(&WidgetExample::CreateDialogWidget,
+                          base::Unretained(this), modal_button, true));
 #if defined(OS_LINUX) || defined(OS_CHROMEOS)
   // Windows does not support TYPE_CONTROL top-level widgets.
-  BuildButton(container, GetStringUTF16(IDS_WIDGET_CHILD_WIDGET_BUTTON_LABEL),
-              CHILD);
+  LabelButton* control_button = BuildButton(
+      container, GetStringUTF16(IDS_WIDGET_CHILD_WIDGET_BUTTON_LABEL));
+  control_button->SetCallback(
+      base::BindRepeating(&WidgetExample::ShowWidget, base::Unretained(this),
+                          control_button, Widget::InitParams::TYPE_CONTROL));
 #endif
 }
 
-void WidgetExample::BuildButton(View* container,
-                                const base::string16& label,
-                                int tag) {
-  LabelButton* button =
-      container->AddChildView(std::make_unique<LabelButton>(this, label));
+LabelButton* WidgetExample::BuildButton(View* container,
+                                        const base::string16& label) {
+  LabelButton* button = container->AddChildView(
+      std::make_unique<LabelButton>(Button::PressedCallback(), label));
   button->SetFocusForPlatform();
   button->SetRequestFocusOnPress(true);
-  button->set_tag(tag);
+  return button;
 }
 
-void WidgetExample::ShowWidget(View* sender, Widget::InitParams params) {
+void WidgetExample::CreateDialogWidget(View* sender, bool modal) {
+  auto dialog = std::make_unique<DialogDelegateView>();
+  dialog->SetTitle(IDS_WIDGET_WINDOW_TITLE);
+  dialog->SetBackground(CreateSolidBackground(SK_ColorGRAY));
+  dialog->SetLayoutManager(std::make_unique<BoxLayout>(
+      BoxLayout::Orientation::kVertical, gfx::Insets(10), 10));
+  dialog->SetExtraView(std::make_unique<MdTextButton>(
+      Button::PressedCallback(), GetStringUTF16(IDS_WIDGET_EXTRA_BUTTON)));
+  dialog->SetFootnoteView(
+      std::make_unique<Label>(GetStringUTF16(IDS_WIDGET_FOOTNOTE_LABEL)));
+  dialog->AddChildView(std::make_unique<Label>(
+      GetStringUTF16(IDS_WIDGET_DIALOG_CONTENTS_LABEL)));
+  if (modal)
+    dialog->SetModalType(ui::MODAL_TYPE_WINDOW);
+  DialogDelegate::CreateDialogWidget(dialog.release(), nullptr,
+                                     sender->GetWidget()->GetNativeView())
+      ->Show();
+}
+
+void WidgetExample::ShowWidget(View* sender, Widget::InitParams::Type type) {
   // Setup shared Widget hierarchy and bounds parameters.
+  Widget::InitParams params(type);
   params.parent = sender->GetWidget()->GetNativeView();
   params.bounds =
       gfx::Rect(sender->GetBoundsInScreen().CenterPoint(), gfx::Size(300, 200));
@@ -100,42 +105,13 @@
     contents->SetLayoutManager(
         std::make_unique<BoxLayout>(BoxLayout::Orientation::kHorizontal));
     contents->SetBackground(CreateSolidBackground(SK_ColorGRAY));
-    BuildButton(contents, GetStringUTF16(IDS_WIDGET_CLOSE_BUTTON_LABEL),
-                CLOSE_WIDGET);
+    BuildButton(contents, GetStringUTF16(IDS_WIDGET_CLOSE_BUTTON_LABEL))
+        ->SetCallback(
+            base::BindRepeating(&Widget::Close, base::Unretained(widget)));
   }
 
   widget->Show();
 }
 
-void WidgetExample::ButtonPressed(Button* sender, const ui::Event& event) {
-  switch (sender->tag()) {
-    case POPUP:
-      ShowWidget(sender, Widget::InitParams(Widget::InitParams::TYPE_POPUP));
-      break;
-    case DIALOG: {
-      // The DialogDelegate will be destroyed by the widget when the created
-      // widget is destroyed.
-      DialogDelegate::CreateDialogWidget(MakeExampleDialog(false), nullptr,
-                                         sender->GetWidget()->GetNativeView())
-          ->Show();
-      break;
-    }
-    case MODAL_DIALOG: {
-      // ModalDialogExample will be destroyed by the widget when the created
-      // widget is destroyed.
-      DialogDelegate::CreateDialogWidget(MakeExampleDialog(true), nullptr,
-                                         sender->GetWidget()->GetNativeView())
-          ->Show();
-      break;
-    }
-    case CHILD:
-      ShowWidget(sender, Widget::InitParams(Widget::InitParams::TYPE_CONTROL));
-      break;
-    case CLOSE_WIDGET:
-      sender->GetWidget()->Close();
-      break;
-  }
-}
-
 }  // namespace examples
 }  // namespace views
diff --git a/ui/views/examples/widget_example.h b/ui/views/examples/widget_example.h
index 1094f13..57d8a8ee 100644
--- a/ui/views/examples/widget_example.h
+++ b/ui/views/examples/widget_example.h
@@ -8,16 +8,17 @@
 #include <string>
 
 #include "base/macros.h"
-#include "ui/views/controls/button/button.h"
 #include "ui/views/examples/example_base.h"
 #include "ui/views/widget/widget.h"
 
 namespace views {
+
+class LabelButton;
+
 namespace examples {
 
 // WidgetExample demonstrates how to create a popup widget.
-class VIEWS_EXAMPLES_EXPORT WidgetExample : public ExampleBase,
-                                            public ButtonListener {
+class VIEWS_EXAMPLES_EXPORT WidgetExample : public ExampleBase {
  public:
   WidgetExample();
   ~WidgetExample() override;
@@ -26,23 +27,13 @@
   void CreateExampleView(View* container) override;
 
  private:
-  // Button tags used to identify various commands.
-  enum Command {
-    POPUP,         // Show a popup widget.
-    DIALOG,        // Show a dialog widget.
-    MODAL_DIALOG,  // Show a modal dialog widget.
-    CHILD,         // Show a child widget.
-    CLOSE_WIDGET,  // Close the sender button's widget.
-  };
+  // Construct a button with the specified |label| in |container|.
+  LabelButton* BuildButton(View* container, const base::string16& label);
 
-  // Construct a button with the specified |label| and |tag| in |container|.
-  void BuildButton(View* container, const base::string16& label, int tag);
+  void CreateDialogWidget(View* sender, bool modal);
 
-  // Construct a Widget for |sender|, initialize with |params|, and call Show().
-  void ShowWidget(View* sender, Widget::InitParams params);
-
-  // ButtonListener:
-  void ButtonPressed(Button* sender, const ui::Event& event) override;
+  // Construct a Widget for |sender|, initialize with |type|, and call Show().
+  void ShowWidget(View* sender, Widget::InitParams::Type type);
 
   DISALLOW_COPY_AND_ASSIGN(WidgetExample);
 };
diff --git a/weblayer/app/content_main_delegate_impl.cc b/weblayer/app/content_main_delegate_impl.cc
index 4368897..11bfb119 100644
--- a/weblayer/app/content_main_delegate_impl.cc
+++ b/weblayer/app/content_main_delegate_impl.cc
@@ -144,10 +144,6 @@
   // TODO(crbug.com/1025610): make notifications work with WebLayer.
   // This also turns off Push messaging.
   cl->AppendSwitch(::switches::kDisableNotifications);
-  // TODO(crbug.com/1057099): make presentation-api work with WebLayer.
-  cl->AppendSwitch(::switches::kDisablePresentationAPI);
-  // TODO(crbug.com/1057100): make remote-playback-api work with WebLayer.
-  cl->AppendSwitch(::switches::kDisableRemotePlaybackAPI);
 
   std::vector<base::Feature> enabled_features = {};
   std::vector<base::Feature> disabled_features = {