diff --git a/DEPS b/DEPS
index 20bd350..0a1ab7b 100644
--- a/DEPS
+++ b/DEPS
@@ -297,11 +297,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': 'b6a7a4a011b81b9743dbf3c50e671e55feca81e6',
+  'skia_revision': '9f08d3ebfddaabc05434f70b9e50d86a01ca4924',
   # 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': 'd2ee35406cbb30f2244ca7c423b90dc83f5848af',
+  'v8_revision': '744b5679da9970b6332684ef61778571a63656ae',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling ANGLE
   # and whatever else without interference from each other.
@@ -313,7 +313,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling PDFium
   # and whatever else without interference from each other.
-  'pdfium_revision': 'c49ebf0b57c81f87aa2958f09459d9ebce7f877d',
+  'pdfium_revision': '5337c83fbb82c66079a412d83df775443f25ed79',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling BoringSSL
   # and whatever else without interference from each other.
@@ -324,7 +324,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling Fuchsia sdk
   # and whatever else without interference from each other.
-  'fuchsia_version': 'version:9.20220820.0.1',
+  'fuchsia_version': 'version:9.20220821.0.1',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling google-toolbox-for-mac
   # and whatever else without interference from each other.
@@ -412,11 +412,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': '16791e67d5c055d53056452810168df54cd3e2cf',
+  'dawn_revision': '0d84a31364d6b6a053f00fddf195aa62347fcb20',
   # 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': '866ce9fefe2a2ef108b1ff193b45a18411f49ac8',
+  'quiche_revision': '0e5ea736a587b096b3d615ba5c41ac3144704447',
   # 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.
@@ -456,11 +456,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.
-  'libcxxabi_revision':    'ee4f792d1c270b8cc451fa28851d62f41a714ff3',
+  'libcxxabi_revision':    '6c17e7c6365ba04c25d746e5857046962034b1f1',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
-  'libunwind_revision':    '49d0f0ce881cf0620a18790f33010ffe6c6e312a',
+  'libunwind_revision':    '42aa6de5544ec1ccc27da640a044bd3f474ee75a',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
@@ -480,7 +480,7 @@
 
   # If you change this, also update the libc++ revision in
   # //buildtools/deps_revisions.gni.
-  'libcxx_revision':       '8b1c50618df7677fb1bd4bdf40d15a55b1733293',
+  'libcxx_revision':       'af1968ac52c132d40f80797f0baca8f942d5c96d',
 
   # GN CIPD package version.
   'gn_version': 'git_revision:0bcd37bd2b83f1a9ee17088037ebdfe6eab6d31a',
@@ -773,7 +773,7 @@
     Var('chromium_git') + '/external/github.com/toji/webvr.info.git' + '@' + 'c58ae99b9ff9e2aa4c524633519570bf33536248',
 
   'src/docs/website': {
-    'url': Var('chromium_git') + '/website.git' + '@' + '32cb4368116e8eb8d71e22fcf3a50397c5cb144b',
+    'url': Var('chromium_git') + '/website.git' + '@' + '8cc6301c5a6e0bc9a72c606712997db36d6387c6',
   },
 
   'src/ios/third_party/earl_grey2/src': {
@@ -862,7 +862,7 @@
       'packages': [
         {
           'package': 'chromium/rts/model/linux-amd64',
-          'version': 'DRFR2o6v2PlDCaTVoo2QesAdncE9ssvKEdkVCaFkSNUC',
+          'version': 'UD_TOS2jnbZQRMi0jLFnYYZ0FiomOclnY1KK5YpgRUUC',
         },
       ],
       'dep_type': 'cipd',
@@ -873,7 +873,7 @@
       'packages': [
         {
           'package': 'chromium/rts/model/mac-amd64',
-          'version': 'AD0RPrNJPAmLU42D6TRmyl_oyaX9DwtzHkISlAWK7u8C',
+          'version': 'XSpW5Z8xdllSeyZiEjwy8GjsU5nNVx5rjFCoQbuTLvIC',
         },
       ],
       'dep_type': 'cipd',
@@ -884,7 +884,7 @@
       'packages': [
         {
           'package': 'chromium/rts/model/windows-amd64',
-          'version': '7zef0kzBuMJE9Cq4I_l9c89UHmnW_LoJpXw7oAmm8HIC',
+          'version': '2FbQDBm1u3MXdt0zr2nkbqQMZpykPKjIYYhh9TP1MpAC',
         },
       ],
       'dep_type': 'cipd',
@@ -1398,7 +1398,7 @@
     Var('chromium_git') + '/external/libaddressinput.git' + '@' + 'df35d6c42da4fa2759e4cfb592afe33817993b89',
 
   'src/third_party/libaom/source/libaom':
-    Var('aomedia_git') + '/aom.git' + '@' +  '121f3851459d5ee2ca1b5b23c6187bda79984eb2',
+    Var('aomedia_git') + '/aom.git' + '@' +  '2fcb0760ea632ef250465819f7d979a695b7c149',
 
   'src/third_party/libavif/src':
     Var('chromium_git') + '/external/github.com/AOMediaCodec/libavif.git' + '@' + Var('libavif_revision'),
@@ -1693,7 +1693,7 @@
       'dep_type': 'cipd',
   },
 
-  'src/third_party/vulkan-deps': '{chromium_git}/vulkan-deps@691fb8dbe91e834e87f0e1dbe23ffbe22bfd4fa2',
+  'src/third_party/vulkan-deps': '{chromium_git}/vulkan-deps@c6c1ac59e076029249df2eca3e0eb9d68684e7f1',
 
   'src/third_party/vulkan_memory_allocator':
     Var('chromium_git') + '/external/github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator.git' + '@' + 'ebe84bec02c041d28f902da0214bf442743fc907',
@@ -1732,7 +1732,7 @@
     Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + 'e204a3c377547e11d2be1edecb1593c3259acc8e',
 
   'src/third_party/webrtc':
-    Var('webrtc_git') + '/src.git' + '@' + 'a9627e770ecfd33313b0e532bbf38d093527517d',
+    Var('webrtc_git') + '/src.git' + '@' + '75bda4dfd0c5c708f1d4369db1ee4abd9250fdd1',
 
   'src/third_party/libgifcodec':
      Var('skia_git') + '/libgifcodec' + '@'+  Var('libgifcodec_revision'),
@@ -1805,7 +1805,7 @@
     Var('chromium_git') + '/v8/v8.git' + '@' +  Var('v8_revision'),
 
   'src-internal': {
-    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@ead2cb8098ae642b5d02d8545bd3c98c20f24c58',
+    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@c6adff44c6578de9a072a1268d245e6585ba49c9',
     'condition': 'checkout_src_internal',
   },
 
@@ -1835,7 +1835,7 @@
     'packages': [
       {
         'package': 'chromeos_internal/apps/help_app/app',
-        'version': 'JguFhnIRqhjDLOaBM_AnteXyfHNvajamY9tfqId2QAwC',
+        'version': 'CBlZRwb43ggeJgQ964ULe9QqxNwvCbdsWhCNw-OLIdsC',
       },
     ],
     'condition': 'checkout_chromeos and checkout_src_internal',
@@ -1846,7 +1846,7 @@
     'packages': [
       {
         'package': 'chromeos_internal/apps/media_app/app',
-        'version': 'p6yXpwzNA-pohu1ZVgaTtuoVemyUR6Nyj0zEPx-EDuEC',
+        'version': 'kkZsgoM0UALwqjZQEDGp7GgkspqWdGPfYlD_3SZ3jhgC',
       },
     ],
     'condition': 'checkout_chromeos and checkout_src_internal',
@@ -1857,7 +1857,7 @@
     'packages': [
       {
         'package': 'chromeos_internal/apps/projector_app/app',
-        'version': 'PnoXr4Z_iPPPP3Y8_CPucOz1BAE_hW6pbAkkXdTxYb0C',
+        'version': 'qP7RAVop7wcvb7oCLU0qJE_yTM8UregFFXrrrQVxIhgC',
       },
     ],
     'condition': 'checkout_chromeos and checkout_src_internal',
diff --git a/ash/strings/ash_strings_ar.xtb b/ash/strings/ash_strings_ar.xtb
index 89d4fb28..fe880a9 100644
--- a/ash/strings/ash_strings_ar.xtb
+++ b/ash/strings/ash_strings_ar.xtb
@@ -1263,6 +1263,7 @@
 <translation id="8214996719228530800">‏قناة إصدار Canary</translation>
 <translation id="8219451629189078428">‏يجب أن يكون جهاز Chromebook قيد التشغيل ومتّصلاً بمصدر طاقة خلال هذه المدة. ويجب توصيل كابلات الشاحن أو المحوِّل بشكل محكم بكلٍ من جهاز Chromebook والمقبس الكهربائي. يُرجى عدم إيقاف تشغيل جهاز Chromebook.</translation>
 <translation id="8236042855478648955">حان وقت الراحة</translation>
+<translation id="8246282815785366524">مرحبًا بك من جديد، <ph name="GIVEN_NAME" /></translation>
 <translation id="8247060538831475781">حالة الاتصال <ph name="CONNECTION_STATUS" />، قوة الإشارة <ph name="SIGNAL_STRENGTH" />، بطارية الهاتف <ph name="BATTERY_STATUS" /></translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />، تطبيق</translation>
 <translation id="8255234195843591763">إعادة الضبط لتحديث النظام</translation>
diff --git a/ash/strings/ash_strings_az.xtb b/ash/strings/ash_strings_az.xtb
index 7ff280b6..a4a1700 100644
--- a/ash/strings/ash_strings_az.xtb
+++ b/ash/strings/ash_strings_az.xtb
@@ -671,6 +671,7 @@
 <translation id="479989351350248267">axtarın</translation>
 <translation id="4804818685124855865">Ayırın</translation>
 <translation id="4814539958450445987">Giriş ekranı</translation>
+<translation id="481455355267255546">Növbəti</translation>
 <translation id="4831034276697007977">Avtomatik klikləri deaktiv etmək istədiyinizə əminsiniz?</translation>
 <translation id="4849058404725798627">Obyekti klaviatura fokusu ilə vurğulayın</translation>
 <translation id="485592688953820832">Əməliyyat yoxdur (fasilə)</translation>
@@ -852,6 +853,7 @@
 <translation id="5860033963881614850">Deaktiv</translation>
 <translation id="5860491529813859533">Aktiv edin</translation>
 <translation id="5867217927013474703">Şəbəkə məlumatları toplanır</translation>
+<translation id="5867606971598166637">Sistem administratorunuz ekranlarınıza nəzarət edir</translation>
 <translation id="5876666360658629066">Valideyn kodunu daxil edin</translation>
 <translation id="5881540930187678962">Telefon Mərkəzini daha sonra ayarlayın</translation>
 <translation id="5887954372087850114"><ph name="WINDOW_TITLE" /> pəncərəsi <ph name="DESK_TITLE" /> masasına təyin edilib və bütün digər masalardan ləğv edilib</translation>
@@ -1013,6 +1015,7 @@
 <translation id="6757237461819837179">Oxudulan media yoxdur</translation>
 <translation id="6777216307882431711">Qoşulmuş USB-C cihazları qidalandırılır</translation>
 <translation id="6786750046913594791">Qovluğu qapadın</translation>
+<translation id="6787595647772650851">Son sessiyanı bərpa edin</translation>
 <translation id="6790428901817661496">Oxudun</translation>
 <translation id="6801878137098616817">Bu yaxınlarda redaktə edilib</translation>
 <translation id="6803622936009808957">Heç bir dəstəklənən həll tapılmadığı üçün displeyləri güzgüləyə bilmədi. Əvəzinə artırılmış desktop daxil edildi.</translation>
diff --git a/ash/strings/ash_strings_fa.xtb b/ash/strings/ash_strings_fa.xtb
index 4751a760..1474d898 100644
--- a/ash/strings/ash_strings_fa.xtb
+++ b/ash/strings/ash_strings_fa.xtb
@@ -1261,6 +1261,7 @@
 <translation id="8214996719228530800">‏کانال Canary</translation>
 <translation id="8219451629189078428">‏Chromebook باید در این مدت روشن بماند و به برق متصل باشد. مطمئن شوید سیم شارژر یا آداپتور کاملاً متصل باشد، هم به Chromebook و هم به پریز برق. Chromebook را خاموش نکنید.</translation>
 <translation id="8236042855478648955">وقت استراحت</translation>
+<translation id="8246282815785366524"><ph name="GIVEN_NAME" />، دوباره خوش آمدید</translation>
 <translation id="8247060538831475781"><ph name="CONNECTION_STATUS" />، قدرت سیگنال <ph name="SIGNAL_STRENGTH" />، باتری تلفن<ph name="BATTERY_STATUS" /></translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />، برنامه</translation>
 <translation id="8255234195843591763">برای به‌روزرسانی، دستگاه را بازنشانی کنید</translation>
diff --git a/ash/strings/ash_strings_km.xtb b/ash/strings/ash_strings_km.xtb
index febb641..dfb121d0 100644
--- a/ash/strings/ash_strings_km.xtb
+++ b/ash/strings/ash_strings_km.xtb
@@ -671,6 +671,7 @@
 <translation id="479989351350248267">ស្វែងរក</translation>
 <translation id="4804818685124855865">ផ្តាច់</translation>
 <translation id="4814539958450445987">អេក្រង់ចូល</translation>
+<translation id="481455355267255546">បន្ទាប់</translation>
 <translation id="4831034276697007977">តើអ្នកពិតជាចង់​បិទការចុច​ដោយស្វ័យប្រវត្តិ​មែនឬ?</translation>
 <translation id="4849058404725798627">រំលេច​របស់​ដោយប្រើ​ការផ្តោត​ក្តារចុច</translation>
 <translation id="485592688953820832">គ្មាន​សកម្មភាព (ផ្អាក)</translation>
@@ -1013,6 +1014,7 @@
 <translation id="6757237461819837179">គ្មានការចាក់មេឌៀទេ</translation>
 <translation id="6777216307882431711">កំពុង​សាកថ្ម​ឧបករណ៍ USB-C ដែលបានភ្ជាប់</translation>
 <translation id="6786750046913594791">បិទថតឯកសារ</translation>
+<translation id="6787595647772650851">ស្ដារវគ្គចុងក្រោយ</translation>
 <translation id="6790428901817661496">លេង</translation>
 <translation id="6801878137098616817">បានកែ​ថ្មីៗនេះ</translation>
 <translation id="6803622936009808957">មិនអាចឆ្លុះអេក្រង់ទេ ដោយសារមិនមានកម្រិតច្បាស់ដែលគាំទ្រត្រូវបានរកឃើញទេ។</translation>
diff --git a/ash/strings/ash_strings_lt.xtb b/ash/strings/ash_strings_lt.xtb
index 5039149..def48d0 100644
--- a/ash/strings/ash_strings_lt.xtb
+++ b/ash/strings/ash_strings_lt.xtb
@@ -671,6 +671,7 @@
 <translation id="479989351350248267">ieškoti</translation>
 <translation id="4804818685124855865">Atsijungti</translation>
 <translation id="4814539958450445987">Prisijungimo ekranas</translation>
+<translation id="481455355267255546">Toliau</translation>
 <translation id="4831034276697007977">Ar tikrai norite išjungti automatinius paspaudimus?</translation>
 <translation id="4849058404725798627">Paryškinti objektą jį suaktyvinus klaviatūra</translation>
 <translation id="485592688953820832">Nesiimti jokių veiksmų (pristabdyti)</translation>
@@ -1013,6 +1014,7 @@
 <translation id="6757237461819837179">Medija neleidžiama</translation>
 <translation id="6777216307882431711">Teikia maitinimą prijungtiems USB-C įrenginiams</translation>
 <translation id="6786750046913594791">Uždaryti aplanką</translation>
+<translation id="6787595647772650851">Atkurti paskutinį seansą</translation>
 <translation id="6790428901817661496">Žaisti</translation>
 <translation id="6801878137098616817">Neseniai redaguota</translation>
 <translation id="6803622936009808957">Nepavyko dubliuoti vaizdų, nes nepavyko rasti palaikomų skyrų. Vietoje to įjungtas išplėstinio darbalaukio režimas.</translation>
diff --git a/ash/strings/ash_strings_mn.xtb b/ash/strings/ash_strings_mn.xtb
index b80b39f..baf38a92 100644
--- a/ash/strings/ash_strings_mn.xtb
+++ b/ash/strings/ash_strings_mn.xtb
@@ -672,6 +672,7 @@
 <translation id="479989351350248267">хайлт</translation>
 <translation id="4804818685124855865">Таслах</translation>
 <translation id="4814539958450445987">Нэвтрэх дэлгэц</translation>
+<translation id="481455355267255546">Дараагийн</translation>
 <translation id="4831034276697007977">Автомат даралтыг унтраахдаа итгэлтэй байна уу?</translation>
 <translation id="4849058404725798627">Объектыг гарын фокусаар тодруулах</translation>
 <translation id="485592688953820832">Үйлдэл алга (түр зогсоох)</translation>
@@ -1014,6 +1015,7 @@
 <translation id="6757237461819837179">Медиа тоглуулаагүй байна</translation>
 <translation id="6777216307882431711">Холбогдсон USB-C төхөөрөмжүүдийг цэнэглэж байна</translation>
 <translation id="6786750046913594791">Хавтасыг хаах</translation>
+<translation id="6787595647772650851">Сүүлийн харилцан үйлдлийг сэргээх</translation>
 <translation id="6790428901817661496">Тоглуулах</translation>
 <translation id="6801878137098616817">Саяхан зассан</translation>
 <translation id="6803622936009808957">Ямар нэг холбогдох шийдэл олдоогүй учраас дэлгэцүүдийг ойлгож чадахгүй байна. Оронд нь сунгасан десктопыг орууллаа.</translation>
diff --git a/ash/strings/ash_strings_or.xtb b/ash/strings/ash_strings_or.xtb
index f5bdf4c..ec5a8497 100644
--- a/ash/strings/ash_strings_or.xtb
+++ b/ash/strings/ash_strings_or.xtb
@@ -1260,6 +1260,7 @@
 <translation id="8214996719228530800">କାନାରି ଚ୍ୟାନେଲ</translation>
 <translation id="8219451629189078428">ଏହି ସମୟରେ ଆପଣଙ୍କ Chromebook ଚାଲୁ ରହି ପାୱାର୍ ସହିତ ସଂଯୁକ୍ତ ରହିବା ଆବଶ୍ୟକ। ଆପଣଙ୍କର ଉଭୟ Chromebook ଓ ପାୱାର୍ ଆଉଟଲେଟ୍ ସହ ଚାର୍ଜର କିମ୍ବା ଆଡପ୍ଟର କେବୁଲଗୁଡ଼ିକ ସମ୍ପୂର୍ଣ୍ଣ ରୂପେ ପ୍ଲଗ୍ ଇନ୍ ହୋଇଥିବା ନିଶ୍ଚିତ କରନ୍ତୁ। ଆପଣଙ୍କ Chromebookକୁ ବନ୍ଦ କରନ୍ତୁ ନାହିଁ।</translation>
 <translation id="8236042855478648955">ବିରତିର ସମୟ ହୋଇଛି</translation>
+<translation id="8246282815785366524">ଆପଣଙ୍କୁ ପୁଣି ସ୍ୱାଗତ, <ph name="GIVEN_NAME" /></translation>
 <translation id="8247060538831475781"><ph name="CONNECTION_STATUS" />, ସିଗ୍‍ନାଲ୍‍ର କ୍ଷମତା <ph name="SIGNAL_STRENGTH" />, ଫୋନ୍ ବ୍ୟାଟେରୀ <ph name="BATTERY_STATUS" /></translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />, ଆପ୍</translation>
 <translation id="8255234195843591763">ଅପଡେଟ କରିବାକୁ ରିସେଟ କରନ୍ତୁ</translation>
diff --git a/ash/strings/ash_strings_ta.xtb b/ash/strings/ash_strings_ta.xtb
index 8b81a7d..48d1952 100644
--- a/ash/strings/ash_strings_ta.xtb
+++ b/ash/strings/ash_strings_ta.xtb
@@ -671,6 +671,7 @@
 <translation id="479989351350248267">தேடல்</translation>
 <translation id="4804818685124855865">தொடர்பைத் துண்டி</translation>
 <translation id="4814539958450445987">உள்நுழைவுத் திரை</translation>
+<translation id="481455355267255546">அடுத்து</translation>
 <translation id="4831034276697007977">தானாகக் கிளிக் செய்யும் அம்சத்தை ஆஃப் செய்ய விரும்புகிறீர்களா?</translation>
 <translation id="4849058404725798627">கீபோர்டு ஃபோகஸ் மூலம் ஆப்ஜெக்ட்டைத் தனிப்படுத்து</translation>
 <translation id="485592688953820832">எந்தச் செயலும் இல்லை (இடைநிறுத்தும்)</translation>
@@ -1013,6 +1014,7 @@
 <translation id="6757237461819837179">மீடியா எதுவும் பிளேயாகவில்லை</translation>
 <translation id="6777216307882431711">இணைக்கப்பட்ட USB-C சாதனங்களுக்கு சார்ஜ் ஏற்றப்படுகிறது</translation>
 <translation id="6786750046913594791">ஃபோல்டரை மூடு</translation>
+<translation id="6787595647772650851">கடைசி அமர்வை மீட்டெடு</translation>
 <translation id="6790428901817661496">இயக்கு</translation>
 <translation id="6801878137098616817">சமீபத்தில் திருத்தப்பட்டது</translation>
 <translation id="6803622936009808957">ஆதரிக்கும் தெளிவுகள் கிடைக்காததால் காட்சிகளைப் பிரதிபலிக்க முடியவில்லை. பதிலாக நீட்டிக்கப்பட்ட டெஸ்க்டாப்பிற்குச் சென்றது.</translation>
diff --git a/ash/strings/ash_strings_ur.xtb b/ash/strings/ash_strings_ur.xtb
index 047d81d..2b4740d 100644
--- a/ash/strings/ash_strings_ur.xtb
+++ b/ash/strings/ash_strings_ur.xtb
@@ -1260,6 +1260,7 @@
 <translation id="8214996719228530800">‏Canary چینل</translation>
 <translation id="8219451629189078428">‏اس دوران آپ کے Chromebook کو آن اور پاور سے منسلک رہنے کی ضرورت ہے۔ یقینی بنائیں کہ چارجر یا ایڈاپٹر کیبلز آپ کے Chromebook اور پاور آؤٹ لیٹ دونوں میں مکمل طور پر پلگ کی ہوئی ہیں۔ اپنے Chromebook کو آف نہ کریں۔</translation>
 <translation id="8236042855478648955">وقفے کا وقت ہو گیا</translation>
+<translation id="8246282815785366524">واپسی پر خوش آمدید، <ph name="GIVEN_NAME" /></translation>
 <translation id="8247060538831475781"><ph name="CONNECTION_STATUS" />، سگنل کی مضبوطی <ph name="SIGNAL_STRENGTH" />، فون کی بیٹری <ph name="BATTERY_STATUS" /></translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />، ایپ</translation>
 <translation id="8255234195843591763">اپ ڈیٹ کرنے کے لیے ری سیٹ کریں</translation>
diff --git a/ash/strings/ash_strings_uz.xtb b/ash/strings/ash_strings_uz.xtb
index b876b2bd..f1e6587 100644
--- a/ash/strings/ash_strings_uz.xtb
+++ b/ash/strings/ash_strings_uz.xtb
@@ -853,6 +853,7 @@
 <translation id="5860033963881614850">O‘chiq</translation>
 <translation id="5860491529813859533">Yoqish</translation>
 <translation id="5867217927013474703">Tarmoq axboroti yigʻilmoqda</translation>
+<translation id="5867606971598166637">Tizim administratori ekranlarni nazorat qiladi</translation>
 <translation id="5876666360658629066">Ota-ona kodini kiriting</translation>
 <translation id="5881540930187678962">Phone Hub funksiyasini keyin sozlash</translation>
 <translation id="5887954372087850114"><ph name="WINDOW_TITLE" /> oynasi <ph name="DESK_TITLE" /> ish stoliga biriktirildi va barcha boshqa ish stollaridan yechildi</translation>
diff --git a/ash/strings/ash_strings_zh-HK.xtb b/ash/strings/ash_strings_zh-HK.xtb
index 863ac92..bcba909 100644
--- a/ash/strings/ash_strings_zh-HK.xtb
+++ b/ash/strings/ash_strings_zh-HK.xtb
@@ -671,6 +671,7 @@
 <translation id="479989351350248267">search</translation>
 <translation id="4804818685124855865">中斷連線</translation>
 <translation id="4814539958450445987">登入畫面</translation>
+<translation id="481455355267255546">即將到來的活動</translation>
 <translation id="4831034276697007977">確定要關閉自動點擊功能嗎?</translation>
 <translation id="4849058404725798627">突顯鍵盤焦點所在的物件</translation>
 <translation id="485592688953820832">不執行任何操作 (暫停)</translation>
@@ -1011,6 +1012,7 @@
 <translation id="6757237461819837179">目前沒有播放任何媒體</translation>
 <translation id="6777216307882431711">正在為已連接的 USB-C 裝置充電</translation>
 <translation id="6786750046913594791">關閉資料夾</translation>
+<translation id="6787595647772650851">還原上一個工作階段</translation>
 <translation id="6790428901817661496">播放</translation>
 <translation id="6801878137098616817">最近編輯過</translation>
 <translation id="6803622936009808957">找不到系統支援的解析度,因此無法顯示鏡像。已改為進入延伸桌面。</translation>
@@ -1259,6 +1261,7 @@
 <translation id="8214996719228530800">Canary 版本</translation>
 <translation id="8219451629189078428">Chromebook 在這段期間需要保持開啟並接上電源。請確保充電器或適配器連接線完全插入 Chromebook 和電源插座。請勿關閉 Chromebook。</translation>
 <translation id="8236042855478648955">休息時間到了</translation>
+<translation id="8246282815785366524">歡迎回來,<ph name="GIVEN_NAME" /></translation>
 <translation id="8247060538831475781"><ph name="CONNECTION_STATUS" />,訊號強度係 <ph name="SIGNAL_STRENGTH" />,手機電量係 <ph name="BATTERY_STATUS" /></translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />,應用程式</translation>
 <translation id="8255234195843591763">重設以更新</translation>
diff --git a/ash/strings/ash_strings_zh-TW.xtb b/ash/strings/ash_strings_zh-TW.xtb
index da5ff9f..aaec5528 100644
--- a/ash/strings/ash_strings_zh-TW.xtb
+++ b/ash/strings/ash_strings_zh-TW.xtb
@@ -671,6 +671,7 @@
 <translation id="479989351350248267">search</translation>
 <translation id="4804818685124855865">中斷連線</translation>
 <translation id="4814539958450445987">登入畫面</translation>
+<translation id="481455355267255546">即將到來的活動</translation>
 <translation id="4831034276697007977">確定要關閉自動點擊功能嗎?</translation>
 <translation id="4849058404725798627">醒目顯示鍵盤焦點所在物件</translation>
 <translation id="485592688953820832">不執行任何動作 (暫停)</translation>
@@ -1012,6 +1013,7 @@
 <translation id="6757237461819837179">目前未播放任何媒體</translation>
 <translation id="6777216307882431711">為連接的 USB-C 裝置供電</translation>
 <translation id="6786750046913594791">關閉資料夾</translation>
+<translation id="6787595647772650851">還原上一個工作階段</translation>
 <translation id="6790428901817661496">播放</translation>
 <translation id="6801878137098616817">最近編輯過</translation>
 <translation id="6803622936009808957">找不到系統支援的解析度,因此無法顯示鏡像。已改為進入延伸桌面。</translation>
@@ -1260,6 +1262,7 @@
 <translation id="8214996719228530800">Canary 版</translation>
 <translation id="8219451629189078428">在這段期間內,你的 Chromebook 需要保持開啟並接上電源。請確認充電器或變壓器電源線已完全插入 Chromebook 和電源插座。請勿將 Chromebook 關機。</translation>
 <translation id="8236042855478648955">休息時間到了</translation>
+<translation id="8246282815785366524">歡迎回來,<ph name="GIVEN_NAME" /></translation>
 <translation id="8247060538831475781"><ph name="CONNECTION_STATUS" />,訊號強度 <ph name="SIGNAL_STRENGTH" />,手機電量:<ph name="BATTERY_STATUS" /></translation>
 <translation id="8247998213073982446"><ph name="APP_NAME" />,應用程式</translation>
 <translation id="8255234195843591763">重設以更新</translation>
diff --git a/ash/webui/file_manager/resources/BUILD.gn b/ash/webui/file_manager/resources/BUILD.gn
index 481104e..81ad3f7 100644
--- a/ash/webui/file_manager/resources/BUILD.gn
+++ b/ash/webui/file_manager/resources/BUILD.gn
@@ -86,7 +86,6 @@
   out_manifest = "$target_gen_dir/manifest_preprocess.json"
 
   in_files = [
-    "init_globals.js",
     "main.js",
     "runtime_loaded_test_util_swa.js",
     "script_loader.js",
@@ -94,7 +93,6 @@
   ]
 
   deps = [
-    ":init_globals",
     ":main",
     ":script_loader",
   ]
@@ -163,7 +161,10 @@
 
   input_files_base_dir = rebase_path(".", "//")
 
-  input_files = [ "images/icon192.png" ]
+  input_files = [
+    "images/icon192.png",
+    "init_globals.js",
+  ]
 }
 
 grd_prefix = "file_manager_swa"
diff --git a/ash/webui/file_manager/resources/gen_main_html.py b/ash/webui/file_manager/resources/gen_main_html.py
index d4d287544..ca8e1b0 100755
--- a/ash/webui/file_manager/resources/gen_main_html.py
+++ b/ash/webui/file_manager/resources/gen_main_html.py
@@ -14,6 +14,7 @@
 import shutil
 import sys
 
+_INIT = '<script src="chrome://file-manager/init_globals.js"></script>'
 _SWA = '<script type="module" src="chrome://file-manager/main.js"></script>'
 
 def GenerateSwaMainHtml(source, target):
@@ -26,7 +27,8 @@
   for line in fileinput.input(target, inplace=True):
     # Add _SWA <script> tag after the <head> tag.
     if line.find('<head>') >= 0:
-      print(line + '    ' + _SWA)
+      print(line + '    ' + _INIT)
+      print('    ' + _SWA)
     # Add <meta> charset="utf-8" attribute.
     elif line.find('<meta ') >= 0:
       sys.stdout.write(line.replace('<meta ', '<meta charset="utf-8" '))
diff --git a/ash/webui/file_manager/resources/main.js b/ash/webui/file_manager/resources/main.js
index 9015c80..fe3fe49 100644
--- a/ash/webui/file_manager/resources/main.js
+++ b/ash/webui/file_manager/resources/main.js
@@ -2,13 +2,11 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-// init_globals.js must be the first loaded module.
-import './init_globals.js';
 import './strings.m.js';
 import 'chrome://file-manager/background/js/metrics_start.js';
 import './test_util_swa.js';
 
-import {background} from 'chrome://file-manager/background/js/background.js';
+import {background} from 'chrome://file-manager/background/js/file_manager_base.js';
 import {VolumeManagerImpl} from 'chrome://file-manager/background/js/volume_manager_impl.js';
 import {GlitchType, reportGlitch} from 'chrome://file-manager/common/js/glitch.js';
 
diff --git a/base/allocator/partition_allocator/partition_alloc_unittest.cc b/base/allocator/partition_allocator/partition_alloc_unittest.cc
index 5de9197..11551bc4 100644
--- a/base/allocator/partition_allocator/partition_alloc_unittest.cc
+++ b/base/allocator/partition_allocator/partition_alloc_unittest.cc
@@ -460,8 +460,18 @@
   size_t test_bucket_index_;
 };
 
+// Death tests misbehave on Android, http://crbug.com/643760.
+#if defined(GTEST_HAS_DEATH_TEST) && !BUILDFLAG(IS_ANDROID)
+#define PA_HAS_DEATH_TESTS
+
 class PartitionAllocDeathTest : public PartitionAllocTest {};
 
+INSTANTIATE_TEST_SUITE_P(AlternateBucketDistribution,
+                         PartitionAllocDeathTest,
+                         testing::Values(false, true));
+
+#endif
+
 namespace {
 
 void FreeFullSlotSpan(PartitionRoot<internal::ThreadSafe>* root,
@@ -2037,12 +2047,7 @@
   EXPECT_TRUE(bucket->decommitted_slot_spans_head);
 }
 
-// Death tests misbehave on Android, http://crbug.com/643760.
-#if defined(GTEST_HAS_DEATH_TEST) && !BUILDFLAG(IS_ANDROID)
-
-INSTANTIATE_TEST_SUITE_P(AlternateBucketDistribution,
-                         PartitionAllocDeathTest,
-                         testing::Values(false, true));
+#if defined(PA_HAS_DEATH_TESTS)
 
 // Unit tests that check if an allocation fails in "return null" mode,
 // repeating it doesn't crash, and still returns null. The tests need to
@@ -2341,7 +2346,7 @@
 #endif  // !BUILDFLAG(USE_BACKUP_REF_PTR) &&
         // defined(PA_HAS_FREELIST_SHADOW_ENTRY)
 
-#endif  // !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_IOS)
+#endif  // !defined(PA_HAS_DEATH_TESTS)
 
 // Tests that |PartitionDumpStats| and |PartitionDumpStats| run without
 // crashing and return non-zero values when memory is allocated.
@@ -4023,6 +4028,8 @@
   EXPECT_EQ(g_dangling_raw_ptr_released_count, 0);
 }
 
+#if defined(PA_HAS_DEATH_TESTS)
+
 // Acquire() once, Release() twice => CRASH
 TEST_P(PartitionAllocDeathTest, ReleaseUnderflowRawPtr) {
   void* ptr = allocator.root()->Alloc(64 - kExtraAllocSize, type_name);
@@ -4045,6 +4052,7 @@
   allocator.root()->Free(ptr);
 }
 
+#endif  // defined(PA_HAS_DEATH_TESTS)
 #endif  // BUILDFLAG(ENABLE_DANGLING_RAW_PTR_CHECKS)
 
 TEST_P(PartitionAllocTest, ReservationOffset) {
@@ -4245,8 +4253,7 @@
   allocator.root()->FreeNoHooks(ptr2);
 }
 
-// Death tests misbehave on Android, http://crbug.com/643760.
-#if defined(GTEST_HAS_DEATH_TEST) && !BUILDFLAG(IS_ANDROID)
+#if defined(PA_HAS_DEATH_TESTS)
 #if !defined(OFFICIAL_BUILD) || !defined(NDEBUG)
 
 TEST_P(PartitionAllocDeathTest, CheckTriggered) {
@@ -4258,13 +4265,12 @@
 }
 
 #endif  // !defined(OFFICIAL_BUILD) && !defined(NDEBUG)
-#endif  // defined(GTEST_HAS_DEATH_TEST) && !BUILDFLAG(IS_ANDROID)
+#endif  // defined(PA_HAS_DEATH_TESTS)
 
 // Not on chromecast, since gtest considers extra output from itself as a test
 // failure:
 // https://ci.chromium.org/ui/p/chromium/builders/ci/Cast%20Audio%20Linux/98492/overview
-#if BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC) &&                \
-    defined(GTEST_HAS_DEATH_TEST) && !BUILDFLAG(IS_ANDROID) && \
+#if BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC) && defined(PA_HAS_DEATH_TESTS) && \
     !BUILDFLAG(PA_IS_CASTOS)
 
 namespace {
@@ -4342,8 +4348,7 @@
 }
 
 #endif  // BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC) &&
-        // defined(GTEST_HAS_DEATH_TEST) && !BUILDFLAG(IS_ANDROID) &&
-        // !BUILDFLAG(PA_IS_CASTOS)
+        // defined(PA_HAS_DEATH_TESTS) &&  !BUILDFLAG(PA_IS_CASTOS)
 
 // Checks the bucket index logic.
 TEST_P(PartitionAllocTest, GetIndex) {
diff --git a/base/check_unittest.cc b/base/check_unittest.cc
index f6e65ce3..8feb87b 100644
--- a/base/check_unittest.cc
+++ b/base/check_unittest.cc
@@ -57,7 +57,7 @@
 // Macro which expects a CHECK to fire with a certain message. If msg starts
 // with "=~", it's interpreted as a regular expression.
 // Example: EXPECT_CHECK("Check failed: false.", CHECK(false));
-#if defined(OFFICIAL_BUILD) && defined(NDEBUG)
+#if !CHECK_WILL_STREAM()
 #define EXPECT_CHECK(msg, check_expr) \
   do {                                \
     EXPECT_CHECK_DEATH(check_expr);   \
@@ -68,7 +68,7 @@
     ScopedCheckExpectation check_exp(__FILE__, __LINE__, msg); \
     check_expr;                                                \
   } while (0)
-#endif
+#endif  // !CHECK_WILL_STREAM()
 
 // Macro which expects a DCHECK to fire if DCHECKs are enabled.
 #define EXPECT_DCHECK(msg, check_expr)                                         \
@@ -353,11 +353,11 @@
 struct StructWithOstream {
   bool operator==(const StructWithOstream& o) const { return &o == this; }
 };
-#if !(defined(OFFICIAL_BUILD) && defined(NDEBUG))
+#if CHECK_WILL_STREAM()
 std::ostream& operator<<(std::ostream& out, const StructWithOstream&) {
   return out << "ostream";
 }
-#endif
+#endif  // CHECK_WILL_STREAM()
 
 struct StructWithToString {
   bool operator==(const StructWithToString& o) const { return &o == this; }
@@ -370,12 +370,12 @@
   }
   std::string ToString() const { return "ToString"; }
 };
-#if !(defined(OFFICIAL_BUILD) && defined(NDEBUG))
+#if CHECK_WILL_STREAM()
 std::ostream& operator<<(std::ostream& out,
                          const StructWithToStringAndOstream&) {
   return out << "ostream";
 }
-#endif
+#endif  // CHECK_WILL_STREAM()
 
 struct StructWithToStringNotStdString {
   struct PseudoString {};
@@ -385,12 +385,12 @@
   }
   PseudoString ToString() const { return PseudoString(); }
 };
-#if !(defined(OFFICIAL_BUILD) && defined(NDEBUG))
+#if CHECK_WILL_STREAM()
 std::ostream& operator<<(std::ostream& out,
                          const StructWithToStringNotStdString::PseudoString&) {
   return out << "ToString+ostream";
 }
-#endif
+#endif  // CHECK_WILL_STREAM()
 
 TEST_F(CheckTest, OstreamVsToString) {
   StructWithOstream a, b;
diff --git a/buildtools/deps_revisions.gni b/buildtools/deps_revisions.gni
index 8181a9d..65b71e1 100644
--- a/buildtools/deps_revisions.gni
+++ b/buildtools/deps_revisions.gni
@@ -5,5 +5,5 @@
 declare_args() {
   # Used to cause full rebuilds on libc++ rolls. This should be kept in sync
   # with the libcxx_revision vars in //DEPS.
-  libcxx_revision = "8b1c50618df7677fb1bd4bdf40d15a55b1733293"
+  libcxx_revision = "af1968ac52c132d40f80797f0baca8f942d5c96d"
 }
diff --git a/chrome/VERSION b/chrome/VERSION
index db8b101..7095fb4b 100644
--- a/chrome/VERSION
+++ b/chrome/VERSION
@@ -1,4 +1,4 @@
 MAJOR=107
 MINOR=0
-BUILD=5252
+BUILD=5254
 PATCH=0
diff --git a/chrome/android/chrome_test_java_sources.gni b/chrome/android/chrome_test_java_sources.gni
index 1617820..f1bfb8e 100644
--- a/chrome/android/chrome_test_java_sources.gni
+++ b/chrome/android/chrome_test_java_sources.gni
@@ -149,6 +149,7 @@
   "javatests/src/org/chromium/chrome/browser/customtabs/TabReparentingTest.java",
   "javatests/src/org/chromium/chrome/browser/customtabs/TrustedCdnPublisherUrlTest.java",
   "javatests/src/org/chromium/chrome/browser/customtabs/content/TabObserverRegistrarTest.java",
+  "javatests/src/org/chromium/chrome/browser/customtabs/features/branding/CustomTabBrandingTest.java",
   "javatests/src/org/chromium/chrome/browser/dependency_injection/ModuleOverridesRule.java",
   "javatests/src/org/chromium/chrome/browser/device_dialog/BluetoothChooserDialogTest.java",
   "javatests/src/org/chromium/chrome/browser/device_dialog/BluetoothScanningPermissionDialogTest.java",
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ky.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ky.xtb
index 4d79c24..7ad2a1b1 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ky.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ky.xtb
@@ -58,6 +58,7 @@
 <translation id="575494663145460764">Баалардын арзандаганы жөнүндө эскертүүлөрдү алгыңыз келеби?</translation>
 <translation id="58326064309361797">Топтоо үчүн өтмөктөрдү сүйрөп келиңиз</translation>
 <translation id="5846292395804797011"><ph name="TITLE_OF_GROUP" /> тобундагы <ph name="NUMBER_OF_TABS" /> өтмөктү жабуу</translation>
+<translation id="5972844218283131174">Баарын тандоодон чыгаруу</translation>
 <translation id="6040143037577758943">Жабуу</translation>
 <translation id="6054741997831917303"><ph name="PREVIOUS_PRICE" /> турган бул нерсенин баасы <ph name="NEW_PRICE" /> болуп калды</translation>
 <translation id="6193448654517602979">Өтмөктөрдү тандоо</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ta.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ta.xtb
index 95ab9d461..197ecc5 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ta.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ta.xtb
@@ -58,6 +58,7 @@
 <translation id="575494663145460764">விலைச் சரிவு குறித்து விழிப்பூட்டல்களைப் பெற வேண்டுமா?</translation>
 <translation id="58326064309361797">தாவல்களை இழுப்பதன் மூலம் அவற்றைக் குழுவாக்கலாம்</translation>
 <translation id="5846292395804797011"><ph name="NUMBER_OF_TABS" /> தாவல்கள் உள்ள <ph name="TITLE_OF_GROUP" /> குழுவை மூடும்</translation>
+<translation id="5972844218283131174">அனைத்தையும் தேர்வுநீக்கு</translation>
 <translation id="6040143037577758943">மூடு</translation>
 <translation id="6054741997831917303">இந்தப் பொருளின் விலை சமீபத்தில் <ph name="PREVIOUS_PRICE" /> இல் இருந்து <ph name="NEW_PRICE" /> ஆகக் குறைந்துள்ளது</translation>
 <translation id="6193448654517602979">தாவல்களைத் தேர்ந்தெடுக்கவும்</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_uz.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_uz.xtb
index 5201c7b..87d1818 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_uz.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_uz.xtb
@@ -58,6 +58,7 @@
 <translation id="575494663145460764">Narxlar tushganda xabar qilinsinmi?</translation>
 <translation id="58326064309361797">Varaqlarni guruhlash uchun bir-birining ustiga torting</translation>
 <translation id="5846292395804797011"><ph name="NUMBER_OF_TABS" /> varaqli <ph name="TITLE_OF_GROUP" /> guruhini yopish</translation>
+<translation id="5972844218283131174">Tanlamani bekor qilish</translation>
 <translation id="6040143037577758943">Yopish</translation>
 <translation id="6054741997831917303">Bu mahsulot narxi yaqinda <ph name="PREVIOUS_PRICE" /> dan <ph name="NEW_PRICE" /> ga tushdi</translation>
 <translation id="6193448654517602979">Varaqlarni tanlang</translation>
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/features/branding/CustomTabBrandingTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/features/branding/CustomTabBrandingTest.java
new file mode 100644
index 0000000..3e2b793
--- /dev/null
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/features/branding/CustomTabBrandingTest.java
@@ -0,0 +1,135 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.customtabs.features.branding;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.net.Uri;
+import android.support.test.InstrumentationRegistry;
+
+import androidx.test.filters.SmallTest;
+
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.ClassRule;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import org.chromium.base.ContextUtils;
+import org.chromium.base.test.util.Batch;
+import org.chromium.base.test.util.CommandLineFlags;
+import org.chromium.base.test.util.Feature;
+import org.chromium.chrome.R;
+import org.chromium.chrome.browser.IntentHandler;
+import org.chromium.chrome.browser.customtabs.CustomTabsIntentTestUtils;
+import org.chromium.chrome.browser.customtabs.IncognitoCustomTabActivityTestRule;
+import org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbar;
+import org.chromium.chrome.browser.flags.ChromeFeatureList;
+import org.chromium.chrome.browser.flags.ChromeSwitches;
+import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
+import org.chromium.chrome.test.util.browser.Features;
+import org.chromium.components.embedder_support.util.UrlConstants;
+import org.chromium.content_public.browser.test.util.TestThreadUtils;
+import org.chromium.net.test.EmbeddedTestServerRule;
+import org.chromium.ui.test.util.RenderTestRule;
+
+import java.io.IOException;
+
+/** Integration test for CCT Branding. */
+@RunWith(ChromeJUnit4ClassRunner.class)
+@CommandLineFlags.Add(ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE)
+@Features.EnableFeatures({ChromeFeatureList.CCT_BRAND_TRANSPARENCY})
+@Batch(Batch.PER_CLASS)
+public class CustomTabBrandingTest {
+    private static final String TEST_PAGE = "/chrome/test/data/android/google.html";
+    // Keep consistent with the key in SharedPreferencesBrandingTimeStorage.
+    private static final String BRANDING_SHARED_PREF_KEY = "pref_cct_brand_show_time";
+    private static final String TOOLBAR_BRANDING_RENDER_IMAGE_ID = "cct_branding_toolbar";
+
+    @Rule
+    public final RenderTestRule mRenderTestRule =
+            RenderTestRule.Builder.withPublicCorpus()
+                    .setRevision(0)
+                    .setBugComponent(RenderTestRule.Component.UI_BROWSER_MOBILE_CUSTOM_TABS)
+                    .build();
+
+    @Rule
+    public IncognitoCustomTabActivityTestRule mCctActivityTestRule =
+            new IncognitoCustomTabActivityTestRule();
+
+    @ClassRule
+    public static EmbeddedTestServerRule sEmbeddedTestServerRule = new EmbeddedTestServerRule();
+
+    private SharedPreferences mBrandingSharedPref;
+    private Intent mIntent;
+
+    @Before
+    public void setup() {
+        Context appContext = ContextUtils.getApplicationContext();
+        mBrandingSharedPref =
+                appContext.getSharedPreferences(BRANDING_SHARED_PREF_KEY, Context.MODE_PRIVATE);
+        String url = sEmbeddedTestServerRule.getServer().getURL(TEST_PAGE);
+        mIntent = CustomTabsIntentTestUtils.createMinimalCustomTabIntent(
+                InstrumentationRegistry.getContext(), url);
+
+        // Set the referrer so branding controller can identify the client app.
+        mIntent.putExtra(Intent.EXTRA_REFERRER,
+                new Uri.Builder()
+                        .scheme(UrlConstants.APP_INTENT_SCHEME)
+                        .authority(appContext.getPackageName())
+                        .build());
+    }
+
+    @After
+    public void tearDown() {
+        mBrandingSharedPref.edit().clear().apply();
+    }
+
+    @Test
+    @SmallTest
+    public void showToastBrandingAndStoreBrandingInfo() {
+        // TODO(wenyufu): Verify the toast is shown on screen.
+        mCctActivityTestRule.startCustomTabActivityWithIntent(mIntent);
+        Assert.assertEquals("Branding launch time should get recorded.", 1,
+                mBrandingSharedPref.getAll().size());
+    }
+
+    @Test
+    @SmallTest
+    @Feature({"RenderTest"})
+    public void renderToolbarBranding() throws IOException {
+        markBrandingLaunchedForPackage(ContextUtils.getApplicationContext().getPackageName());
+        mCctActivityTestRule.startCustomTabActivityWithIntent(mIntent);
+
+        CustomTabToolbar toolbar = mCctActivityTestRule.getActivity().findViewById(R.id.toolbar);
+        TestThreadUtils.runOnUiThreadBlocking(
+                () -> toolbar.getBrandingDelegate().showBrandingLocationBar());
+        mRenderTestRule.render(toolbar, TOOLBAR_BRANDING_RENDER_IMAGE_ID);
+    }
+
+    @Test
+    @SmallTest
+    @Features.EnableFeatures({ChromeFeatureList.CCT_INCOGNITO,
+            ChromeFeatureList.CCT_INCOGNITO_AVAILABLE_TO_THIRD_PARTY})
+    // clang-format off
+    public void doesntStoreBrandingInfoForIncognito() {
+        // clang-format on
+        mIntent.putExtra(IntentHandler.EXTRA_OPEN_NEW_INCOGNITO_TAB, true);
+        mCctActivityTestRule.startCustomTabActivityWithIntent(mIntent);
+        Assert.assertEquals("Branding info should not be stored in Incognito mode.", 0,
+                mBrandingSharedPref.getAll().size());
+    }
+
+    /**
+     * Populate a random value for package in branding storage, as if the branding has launched
+     * before for the given client app.
+     */
+    private void markBrandingLaunchedForPackage(String packageName) {
+        SharedPreferencesBrandingTimeStorage.getInstance().put(packageName, 1L);
+    }
+}
diff --git a/chrome/android/profiles/newest.txt b/chrome/android/profiles/newest.txt
index e5806d3..a3796875 100644
--- a/chrome/android/profiles/newest.txt
+++ b/chrome/android/profiles/newest.txt
@@ -1 +1 @@
-chromeos-chrome-amd64-106.0.5249.4_rc-r1-merged.afdo.bz2
+chromeos-chrome-amd64-106.0.5249.5_rc-r1-merged.afdo.bz2
diff --git a/chrome/app/resources/generated_resources_az.xtb b/chrome/app/resources/generated_resources_az.xtb
index 27cddc2..2d54c7f 100644
--- a/chrome/app/resources/generated_resources_az.xtb
+++ b/chrome/app/resources/generated_resources_az.xtb
@@ -719,6 +719,7 @@
 <translation id="1676902103953506022"><ph name="DOMAIN" /> domenindəki <ph name="USERNAME" /> üçün giriş məlumatı detalları</translation>
 <translation id="1677306805708094828"><ph name="EXTENSION_TYPE_PARAMETER" /> artırmasını əlavə etmək mümkün deyil</translation>
 <translation id="1677472565718498478"><ph name="TIME" /> qaldı</translation>
+<translation id="1678794218766467608">Yuxu rejimində və ya qapaq bağlı olduqda kilidləyin</translation>
 <translation id="1679068421605151609">Gəlişdirici Alətləri</translation>
 <translation id="1679810534535368772">Çıxmaq istədiyinizə əminsiniz?</translation>
 <translation id="167983332380191032">İdarəetmə xidməti HTTP xətası göndərdi.</translation>
@@ -2550,6 +2551,7 @@
 <translation id="3406290648907941085">Virtual reallıq cihazları və verilənlərindən istifadə etmək icazəsi verilib</translation>
 <translation id="3406396172897554194">Dil və ya daxiletmə adı üzrə axtarın</translation>
 <translation id="3406605057700382950">Əlfəcin panelini göstərin</translation>
+<translation id="3408849592677950451">{NUM_PASSWORDS,plural, =1{1 parol <ph name="USER_EMAIL" /> üçün Google Parol Menecerinə import edilib}other{{NUM_PASSWORDS} parol <ph name="USER_EMAIL" /> üçün Google Parol Menecerinə import edilib}}</translation>
 <translation id="3409785640040772790">Xəritə</translation>
 <translation id="3412265149091626468">Seçimə Keçin</translation>
 <translation id="3413122095806433232">CA emitentləri: <ph name="LOCATION" /></translation>
@@ -3731,6 +3733,7 @@
 <translation id="4541123282641193691">Hesabınızı doğrulamaq mümkün olmadı. Yenidən cəhd edin və ya Chromebook'u yenidən başladın.</translation>
 <translation id="4541662893742891060">Bu profilə qoşulmaq olmur. Texniki dəstək üçün operatorunuzla əlaqə saxlayın.</translation>
 <translation id="4541706525461326392">Profil silinir. Bu, bir neçə dəqiqə çəkə bilər.</translation>
+<translation id="4542332958571335077">{NUM_PASSWORDS,plural, =1{1 parol bu cihazda Google Parol Menecerinə import edilib}other{{NUM_PASSWORDS} parol bu cihazda Google Parol Menecerinə import edilib}}</translation>
 <translation id="4542520061254486227">Datanızı <ph name="WEBSITE_1" /> və <ph name="WEBSITE_2" /> üzərində oxuyun</translation>
 <translation id="4543778593405494224">Sertifikat meneceri</translation>
 <translation id="4544174279960331769">Defolt mavi avatar</translation>
@@ -3786,6 +3789,7 @@
 <translation id="4586275095964870617">Alternativ brauzerdə <ph name="URL" /> linkini açmaq mümkün olmadı. Sistem administratoru ilə əlaqə saxlayın.</translation>
 <translation id="4589713469967853491">Loqlar Endirmələr kataloquna uğurla yazıldı.</translation>
 <translation id="4590324241397107707">Databaza yaddaş ehtiyatı</translation>
+<translation id="459204634473266369"><ph name="PRIMARY_EMAIL" /> hesabında cihaz saxlanmayıb</translation>
 <translation id="4592891116925567110">Stilus rəsm tətbiqi</translation>
 <translation id="4593021220803146968"><ph name="URL" /> linkinə keçin</translation>
 <translation id="4594577641390224176">Sistemin haqqında səhifəsini axtarırsınız? Ziyarət edin</translation>
@@ -4344,6 +4348,7 @@
 <translation id="5155327081870541046">Ünvan panelinə axtarmaq istədiyiniz saytın qısayolunu daxil edin (məsələn: "@əlfəcinlər"). Sonra, istədiyiniz klaviatura qısayolunu basın və axtarış sözünü daxil edin.</translation>
 <translation id="5156638757840305347">Kursor göründükdə və ya hərəkət etdikdə vurğulanır</translation>
 <translation id="5157635116769074044">Ekrana başlamaq üçün bu səhifəyə sancın...</translation>
+<translation id="5158206172605340248">Vurğu işarələri menyusu qapadılıb.</translation>
 <translation id="5159094275429367735">Crostini'ni ayarlayın</translation>
 <translation id="5159419673777902220">Valideyniniz artırma icazələrini deaktiv edib</translation>
 <translation id="5159643365935452998">Avtomatik data silinməsini nəzərdən keçirin</translation>
@@ -6215,6 +6220,7 @@
 <translation id="6968288415730398122">Ekran kilidini konfiqurasiya etmək üçün parolu daxil edin</translation>
 <translation id="6969047215179982698">Yaxındakılarla Paylaşmanı deaktiv edin</translation>
 <translation id="6970480684834282392">Başlanğıc növü</translation>
+<translation id="6970543303783413625">Parolları import etmək mümkün deyil. Hər dəfə maksimum <ph name="COUNT" /> parol import edə bilərsiniz.</translation>
 <translation id="6970856801391541997">Xüsusi Səhifələri Çap edin</translation>
 <translation id="6970861306198150268">Bu sayt üçün cari parolunuzu saxladığınıza əmin olun</translation>
 <translation id="6972180789171089114">Audio/Video</translation>
@@ -6446,6 +6452,7 @@
 <translation id="720715819012336933">{NUM_PAGES,plural, =1{Səhifədən Çıxın}other{Səhifələrdən Çıxın}}</translation>
 <translation id="7207457272187520234">İstifadə və diaqnostika datasını göndərin. Bu cihaz hazırda diaqnostika, cihaz və tətbiqdən istifadə datasını avtomatik Google'a göndərir. Bu, sistem və tətbiq sabitliyi və digər təkmilləşdirmələrə kömək edəcək. Bəzi ümumiləşdirilmiş məlumatlar Google tətbiqlərinə və Android tərtibatçıları kimi partnyorlara da kömək edəcək. Bu ayar sahibi tərəfindən tətbiq edilir. Əlavə Veb və Tətbiq Fəaliyyəti ayarı aktiv edilərsə, bu data Google Hesabınızda yadda saxlanıla bilər.</translation>
 <translation id="7207631048330366454">Tətbiqlərdə axtarın</translation>
+<translation id="7210471695184432500">Parolları bu cihazda Google Parol Menecerinə import etmək üçün CSV faylı seçin</translation>
 <translation id="7210499381659830293">Artırma printerləri</translation>
 <translation id="7211783048245131419">Hələ heç bir düymə təyin edilməyib</translation>
 <translation id="7212097698621322584">Dəyişmək üçün cari PIN-i daxil edin. PIN-i bilmirsinizsə, güvənlik açarını sıfırlamalı, sonra isə yeni PIN yaratmalısınız.</translation>
@@ -6470,6 +6477,7 @@
 <translation id="7235716375204803342">Fəaliyyətlər əldə edilir...</translation>
 <translation id="7235737137505019098">Daha çox hesab əlavə etmək üçün güvənlik açarında kifayət qədər boş yer yoxdur.</translation>
 <translation id="7235873936132740888">E-poçt klientinizdə yeni bir mesaj yaratmaq və ya onlayn təqviminizə yeni hadisələr əlavə etmək kimi müəyyən növ keçidlərə toxunduğunuzda saytlar xüsusi tapşırıqları yerinə yetirə bilər.</translation>
+<translation id="7238609589076576185">Vurğu işarəsi daxil edilib.</translation>
 <translation id="7239108166256782787"><ph name="DEVICE_NAME" /> ötürməni ləğv etdi</translation>
 <translation id="7240339475467890413">Yeni hotspota qoşulsun?</translation>
 <translation id="7241389281993241388">Klient sertifikatını import etmək üçün <ph name="TOKEN_NAME" /> üzərinə daxil olun.</translation>
@@ -7310,6 +7318,7 @@
 <translation id="8030852056903932865">Təsdiq edin</translation>
 <translation id="8032244173881942855">Tabeli yayımlamaq mümkün olmadı.</translation>
 <translation id="8032569120109842252">İzlənilir</translation>
+<translation id="8033023935541439900">Vurğu işarələri menyusu açıqdır. Hərəkət etmək üçün sol və ya sağ, daxil etmək üçün isə enter düyməsinə basın.</translation>
 <translation id="8033827949643255796">seçilib</translation>
 <translation id="8033958968890501070">Vaxtın bitməsi</translation>
 <translation id="8035059678007243127">Anonim Geri/İrəli Keşlənmiş Səhifə: <ph name="BACK_FORWARD_CACHE_INCOGNITO_PAGE_URL" /></translation>
@@ -7502,6 +7511,7 @@
 <translation id="8206859287963243715">Mobil</translation>
 <translation id="8208216423136871611">Yadda saxlamayın</translation>
 <translation id="8210398899759134986">{MUTED_NOTIFICATIONS_COUNT,plural, =1{Yeni bildiriş}other{# yeni bildiriş}}</translation>
+<translation id="821119981794423735">Parolları <ph name="USER_EMAIL" /> üçün Google Parol Menecerinə import etmək üçün CSV faylı seçin</translation>
 <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Endirmə gözlənilir}other{Endirmə gözlənilir}}</translation>
 <translation id="8213449224684199188">Foto rejimi daxil edildi</translation>
 <translation id="8214489666383623925">Fayl Açın...</translation>
diff --git a/chrome/app/resources/generated_resources_km.xtb b/chrome/app/resources/generated_resources_km.xtb
index 868d53c..ad71f8a 100644
--- a/chrome/app/resources/generated_resources_km.xtb
+++ b/chrome/app/resources/generated_resources_km.xtb
@@ -726,6 +726,7 @@
 <translation id="1676902103953506022">សេចក្ដី​លម្អិត​នៃ​​ព័ត៌មានផ្ទៀងផ្ទាត់​សម្រាប់ <ph name="USERNAME" /> នៅលើ <ph name="DOMAIN" /></translation>
 <translation id="1677306805708094828">មិនអាច​បញ្ចូល <ph name="EXTENSION_TYPE_PARAMETER" /> បានទេ</translation>
 <translation id="1677472565718498478">នៅសល់ <ph name="TIME" /></translation>
+<translation id="1678794218766467608">ចាក់សោក្នុងមុខងារដេក ឬនៅពេលគម្របត្រូវបានបិទ</translation>
 <translation id="1679068421605151609">ឧបករណ៍អ្នកអភិវឌ្ឍន៍</translation>
 <translation id="1679810534535368772">តើអ្នក​ពិតជាចង់ចាក​ចេញមែនឬ?</translation>
 <translation id="167983332380191032">សេវាកម្មគ្រប់គ្រង​បានផ្ញើ​បញ្ហា HTTP ។</translation>
@@ -3805,6 +3806,7 @@
 <translation id="4586275095964870617">មិនអាចបើក <ph name="URL" /> នៅក្នុងកម្មវិធី​រុករកតាមអ៊ីនធឺណិត​ផ្សេងបានទេ។ សូមទាក់ទង​អ្នកគ្រប់គ្រង​ប្រព័ន្ធរបស់អ្នក។</translation>
 <translation id="4589713469967853491">បានចម្លងកំណត់ហេតុ​ទៅក្នុងបញ្ជី​ទាញយក​ដោយជោគជ័យហើយ។</translation>
 <translation id="4590324241397107707">ឧបករណ៍ផ្ទុកទិន្នន័យមូលដ្ឋាន</translation>
+<translation id="459204634473266369">គ្មានឧបករណ៍ដែលបានរក្សាទុកទៅ <ph name="PRIMARY_EMAIL" /> ទេ</translation>
 <translation id="4592891116925567110">កម្មវិធី​គូរដោយប្រើ​ប៊ិក</translation>
 <translation id="4593021220803146968">ទៅកាន់ <ph name="URL" /></translation>
 <translation id="4594577641390224176">កំពុង​រកមើល​ទំព័រ "អំពី" របស់ប្រព័ន្ធឬ? ចូលមើល</translation>
@@ -4363,6 +4365,7 @@
 <translation id="5155327081870541046">បញ្ចូល​ផ្លូវកាត់​សម្រាប់គេហទំព័រ​ដែលអ្នកចង់ស្វែងរក​ដូចជា "@bookmarks" នៅក្នុង​របារអាសយដ្ឋាន។ បន្ទាប់មក ចុច​ផ្លូវកាត់​ក្ដារចុច​ដែលអ្នកចង់ប្រើ រួចបញ្ចូល​ពាក្យ​ស្វែងរក​របស់អ្នក។</translation>
 <translation id="5156638757840305347">ទស្សន៍ទ្រនិច​ត្រូវបាន​រំលេច​នៅពេល​វា​បង្ហាញ ឬ​ផ្លាស់ទី</translation>
 <translation id="5157635116769074044">ដៅទំព័រនេះដើម្បី ចាប់ផ្តើម អេក្រង់...</translation>
+<translation id="5158206172605340248">ម៉ឺនុយសញ្ញា​សម្គាល់សំឡេងត្រូវបានច្រានចោល។</translation>
 <translation id="5159094275429367735">រៀបចំ Crostini</translation>
 <translation id="5159419673777902220">មាតាបិតា​របស់អ្នក​បានបិទ​ការអនុញ្ញាត​កម្មវិធីបន្ថែម</translation>
 <translation id="5159643365935452998">ពិនិត្យមើល​ការសម្អាត​ទិន្នន័យ​ដោយស្វ័យប្រវត្តិ</translation>
@@ -6491,6 +6494,7 @@
 <translation id="7235716375204803342">កំពុងទាញយក​សកម្មភាព...</translation>
 <translation id="7235737137505019098">សោសុវត្ថិភាព​របស់អ្នក​មិនមាន​ទំហំផ្ទុក​គ្រប់គ្រាន់​សម្រាប់គណនី​បន្ថែម​ទៀតទេ។</translation>
 <translation id="7235873936132740888">គេហទំព័រអាចចាត់ចែងកិច្ចការពិសេសៗ នៅពេលអ្នកចុចលើប្រភេទតំណជាក់លាក់ដូចជា ការបង្កើតសារថ្មីនៅក្នុងកម្មវិធីផ្ញើអ៊ីមែលរបស់អ្នក ឬការបញ្ចូលព្រឹត្តិការណ៍ថ្មីទៅក្នុងប្រតិទិនលើអ៊ីនធឺណិតរបស់អ្នកជាដើម</translation>
+<translation id="7238609589076576185">សញ្ញា​សម្គាល់​សំឡេងត្រូវបានបញ្ចូល។</translation>
 <translation id="7239108166256782787"><ph name="DEVICE_NAME" /> បានបោះបង់​ការផ្ទេរ</translation>
 <translation id="7240339475467890413">ភ្ជាប់​ទៅ​ហតស្ប៉ត​ថ្មី?</translation>
 <translation id="7241389281993241388">សូមចូលទៅកាន់ <ph name="TOKEN_NAME" /> ដើម្បីនាំចូលវិញ្ញាបនប័ត្រអតិថិជន។</translation>
@@ -7330,6 +7334,7 @@
 <translation id="8030852056903932865">យល់ព្រម</translation>
 <translation id="8032244173881942855">មិនអាចខាសផ្ទាំងបានទេ</translation>
 <translation id="8032569120109842252">កំពុងតាមដាន</translation>
+<translation id="8033023935541439900">ម៉ឺនុយសញ្ញា​សម្គាល់សំឡេងត្រូវបានបើក។ សូមចុចទៅឆ្វេង ឬទៅស្ដាំ ដើម្បីរុករក និងចុច "enter" ដើម្បីបញ្ចូល។</translation>
 <translation id="8033827949643255796">បានជ្រើសរើស</translation>
 <translation id="8033958968890501070">អស់​ម៉ោង</translation>
 <translation id="8035059678007243127">ទំព័រឯកជនដែលបានរក្សាទុកក្នុង​ឃ្លាំងបម្រុងទុក​ទំព័រក្នុងសភាពដើម​ទាំងស្រុង៖ <ph name="BACK_FORWARD_CACHE_INCOGNITO_PAGE_URL" /></translation>
diff --git a/chrome/app/resources/generated_resources_ky.xtb b/chrome/app/resources/generated_resources_ky.xtb
index 17ee1285..bb876c0b 100644
--- a/chrome/app/resources/generated_resources_ky.xtb
+++ b/chrome/app/resources/generated_resources_ky.xtb
@@ -5296,6 +5296,7 @@
 <translation id="6065289257230303064">Тастыктама объектисинин каталог атрибуттары</translation>
 <translation id="6066794465984119824">Сүрөттүн хеши жөндөлгөн жок</translation>
 <translation id="6069464830445383022">Chromebook'ка Google аккаунтуңуз менен киресиз</translation>
+<translation id="6070311415473175157">Издөө үчүн сүрөт аймагын тандаңыз</translation>
 <translation id="6071181508177083058">сырсөздү ырастоо</translation>
 <translation id="6071576563962215370">Тутум түзмөктү орнотуу убагында анын атрибуттарын кулпулай албай койду.</translation>
 <translation id="6072442788591997866"><ph name="APP_NAME" /> колдонмосун бул түзмөктө пайдаланууга болбойт. Администраторуңуз менен байланышыңыз. Ката коду: <ph name="ERROR_CODE" />.</translation>
@@ -7126,6 +7127,7 @@
 <translation id="7842692330619197998">Жаңы аккаунтту түзүү үчүн g.co/ChromeEnterpriseAccount дарегине өтүңүз.</translation>
 <translation id="78427265591841839">Барактын бир бөлүгүн <ph name="VISUAL_SEARCH_PROVIDER" /> менен издөө</translation>
 <translation id="784273751836026224">Linux'ту чыгарып салуу</translation>
+<translation id="7842851769217535639">Издөө үчүн барактын каалаган бөлүгүн тандаңыз</translation>
 <translation id="7843786652787044762"><ph name="WEB_DRIVE" /> кызматына кирүү</translation>
 <translation id="7844992432319478437">Айырма жаңыртылууда</translation>
 <translation id="7846634333498149051">Баскычтоп</translation>
@@ -7182,6 +7184,7 @@
 <translation id="7893008570150657497">Сүрөттөрдү, музыканы жана башка медиа файлдарын компьютериңиз аркылуу колдонуу мүмкүнчүлүгүн алыңыз</translation>
 <translation id="7893153962594818789"><ph name="DEVICE_TYPE" /> түзмөгүндөгү Bluetooth өчүк. Сырсөзүңүздү киргизип туруп, Bluetooth'ду күйгүзүңүз.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (Демейки)</translation>
+<translation id="7896292361319775586"><ph name="FILE" /> файлы сакталсынбы?</translation>
 <translation id="789722939441020330">Сайттар бир нече файлды автоматтык түрдө жүктөп ала албасын</translation>
 <translation id="7897900149154324287">Кийинки жолу тышкы дискти түзмөктөн сууруп алаардан мурун, аны Файлдар колдонмосунан чыгарыңыз. Болбосо, дайындарды жоготуп алышыңыз мүмкүн.</translation>
 <translation id="7898725031477653577">Ар дайым которуу</translation>
@@ -8318,6 +8321,7 @@
 <translation id="899403249577094719">Netscape тастыктама негизинин URL</translation>
 <translation id="899657321862108550">Chrome'ду бардык жерде ала жүрүңүз</translation>
 <translation id="899676909165543803">Манжа изинин сенсору баскычтобуңуздун төмөнкү оң жагында жайгашкан. Ага манжаңыздын бирөө менен акырын тийип коюңуз.</translation>
+<translation id="8998078711690114234">Мындай файл түрү кооптуу болушу мүмкүн. <ph name="ORIGIN" /> булагына ишенсеңиз гана бул файлды сактаңыз</translation>
 <translation id="8999560016882908256">Бөлүмдүн синтаксис катасы: <ph name="ERROR_LINE" /></translation>
 <translation id="9003185744423389627">Түзмөктөрдү башкаргычтын серверине туташуу <ph name="FAILURE_TIME" /> ишке ашпай калды (<ph name="STATUS_TEXT" />)</translation>
 <translation id="9003647077635673607">Бардык вебсайттарда уруксат берүү</translation>
diff --git a/chrome/app/resources/generated_resources_lt.xtb b/chrome/app/resources/generated_resources_lt.xtb
index d9d3b7d..4217ca5 100644
--- a/chrome/app/resources/generated_resources_lt.xtb
+++ b/chrome/app/resources/generated_resources_lt.xtb
@@ -729,6 +729,7 @@
 <translation id="1676902103953506022">Išsamūs <ph name="USERNAME" /> prisijungimo duomenys <ph name="DOMAIN" /></translation>
 <translation id="1677306805708094828">Nepavyko pridėti <ph name="EXTENSION_TYPE_PARAMETER" /></translation>
 <translation id="1677472565718498478">Liko <ph name="TIME" /></translation>
+<translation id="1678794218766467608">Užrakinti miego režimu arba uždarius dangtelį</translation>
 <translation id="1679068421605151609">Kūrėjo įrankiai</translation>
 <translation id="1679810534535368772">Ar tikrai norite išeiti?</translation>
 <translation id="167983332380191032">Tvarkymo paslauga išsiuntė HTTP klaidą.</translation>
@@ -3808,6 +3809,7 @@
 <translation id="4586275095964870617">Nepavyko atidaryti <ph name="URL" /> alternatyvioje naršyklėje. Susisiekite su sistemos administratoriumi.</translation>
 <translation id="4589713469967853491">Žurnalai sėkmingai įrašyti kataloge „Atsisiuntimai“.</translation>
 <translation id="4590324241397107707">Duomenų atmintinė</translation>
+<translation id="459204634473266369">Jokie įrenginiai neišsaugoti adresu <ph name="PRIMARY_EMAIL" /></translation>
 <translation id="4592891116925567110">Piešimo rašikliu programa</translation>
 <translation id="4593021220803146968">&amp;Eiti į <ph name="URL" /></translation>
 <translation id="4594577641390224176">Ieškote sistemos puslapio „Apie“? Apsilankykite adresu</translation>
@@ -4366,6 +4368,7 @@
 <translation id="5155327081870541046">Adreso juostoje įveskite svetainės, kurios norite ieškoti, šaukinį, pvz., „@bookmarks“. Tada paspauskite norimą spartųjį klavišą ir įveskite paieškos terminą.</translation>
 <translation id="5156638757840305347">Žymeklis paryškinamas, kai parodomas arba judinamas</translation>
 <translation id="5157635116769074044">Prisegti šį puslapį pradžios ekrane...</translation>
+<translation id="5158206172605340248">Atsisakyta kirčio ženklų meniu.</translation>
 <translation id="5159094275429367735">Nustatyti „Crostini“</translation>
 <translation id="5159419673777902220">Vienas iš tėvų išjungė plėtinio leidimus</translation>
 <translation id="5159643365935452998">Automatinio duomenų išvalymo peržiūra</translation>
@@ -6500,6 +6503,7 @@
 <translation id="7235716375204803342">Renkamos veiklos...</translation>
 <translation id="7235737137505019098">Saugos rakte nepakanka vietos jokioms kitoms paskyroms.</translation>
 <translation id="7235873936132740888">„Google“ svetainės gali atlikti specialias užduotis, kai spustelite konkrečių tipų nuorodas, pvz., sukurti naują pranešimą el. pašto programoje ar pridėti naujų įvykių interneto kalendoriuje</translation>
+<translation id="7238609589076576185">Kirčio ženklas įterptas.</translation>
 <translation id="7239108166256782787">„<ph name="DEVICE_NAME" />“ atšaukė perkėlimą</translation>
 <translation id="7240339475467890413">Prisijungti prie naujo viešosios interneto prieigos taško?</translation>
 <translation id="7241389281993241388">Jei norite importuoti programos sertifikatą, prisijunkite prie „<ph name="TOKEN_NAME" />“.</translation>
@@ -7340,6 +7344,7 @@
 <translation id="8030852056903932865">Patvirtinti</translation>
 <translation id="8032244173881942855">Nepavyko perduoti skirtuko.</translation>
 <translation id="8032569120109842252">Stebima</translation>
+<translation id="8033023935541439900">Atidarytas kirčio ženklų meniu. Norėdami naršyti, spauskite rodyklę kairėn arba dešinėn, norėdami įvesti – „Enter“.</translation>
 <translation id="8033827949643255796">pasirinkta</translation>
 <translation id="8033958968890501070">Skirtojo laiko pabaiga</translation>
 <translation id="8035059678007243127">Ilgalaikis viso inkognito puslapio saugojimas talpykloje: <ph name="BACK_FORWARD_CACHE_INCOGNITO_PAGE_URL" /></translation>
diff --git a/chrome/app/resources/generated_resources_mn.xtb b/chrome/app/resources/generated_resources_mn.xtb
index e2881a6..852b47c 100644
--- a/chrome/app/resources/generated_resources_mn.xtb
+++ b/chrome/app/resources/generated_resources_mn.xtb
@@ -722,6 +722,7 @@
 <translation id="1676902103953506022"><ph name="DOMAIN" /> дээрх <ph name="USERNAME" />-н мандат үнэмлэхийн дэлгэрэнгүй</translation>
 <translation id="1677306805708094828"><ph name="EXTENSION_TYPE_PARAMETER" />-г нэмэх боломжгүй байна</translation>
 <translation id="1677472565718498478"><ph name="TIME" /> үлдсэн</translation>
+<translation id="1678794218766467608">Амраах горимд байгаа эсвэл таг хаалттай үед түгжих</translation>
 <translation id="1679068421605151609">Хөгжүүлэгч багаж</translation>
 <translation id="1679810534535368772">Та эндээс гарахдаа итгэлтэй байна уу?</translation>
 <translation id="167983332380191032">Менежментийн үйлчилгээ HTTP-н алдааг илгээсэн.</translation>
@@ -3800,6 +3801,7 @@
 <translation id="4586275095964870617"><ph name="URL" />-г өөр хөтчид нээж чадсангүй. Системийнхээ админтай холбогдоно уу.</translation>
 <translation id="4589713469967853491">Логуудыг Татаж авсан файлын лавлахад амжилттай бичлээ.</translation>
 <translation id="4590324241397107707">Өгөгдлийн сангийн хадгалалт</translation>
+<translation id="459204634473266369"><ph name="PRIMARY_EMAIL" />-д хадгалсан төхөөрөмж байхгүй</translation>
 <translation id="4592891116925567110">Мэдрэгч үзгийн зурдаг апп</translation>
 <translation id="4593021220803146968">&amp;<ph name="URL" /> руу очих</translation>
 <translation id="4594577641390224176">Системийн талаарх хуудсыг хайж байна уу? Зочлох</translation>
@@ -4358,6 +4360,7 @@
 <translation id="5155327081870541046">Та хаяг оруулах хэсэгт хайхыг хүсэж буй сайтынхаа "@хавчуурга" гэх мэт товчлолыг оруулна уу. Дараа нь сонгосон товчлуурын шууд холбоосыг дарж, хайлтын үгээ оруулна уу.</translation>
 <translation id="5156638757840305347">Курсорыг гарч ирэх эсвэл хөдлөх үед нь тодруулдаг</translation>
 <translation id="5157635116769074044">Энэ хуудсыг Эхлэх дэлгэц рүү тусгайлан оруулах...</translation>
+<translation id="5158206172605340248">Өргөлтийн тэмдгийн цэс хаалттай байна.</translation>
 <translation id="5159094275429367735">Crostini-г тохируулах</translation>
 <translation id="5159419673777902220">Таны эцэг эх өргөтгөлийн зөвшөөрлийг идэвхгүй болгосон.</translation>
 <translation id="5159643365935452998">Өгөгдлийг автоматаар арилгахыг шалгах</translation>
@@ -6486,6 +6489,7 @@
 <translation id="7235716375204803342">Үйл ажиллагааг дуудаж байна...</translation>
 <translation id="7235737137505019098">Таны аюулгүй байдлын түлхүүрт бусад бүртгэлд зориулах хангалттай зай алга байна.</translation>
 <translation id="7235873936132740888">Сайтууд таныг тодорхой төрлийн холбоос дээр дарах үед таны имэйл хэрэглэгчид шинэ мессеж үүсгэх эсвэл таны онлайн календарьд шинэ арга хэмжээ нэмэх зэргээр тусгай ажлуудыг хийх боломжтой.</translation>
+<translation id="7238609589076576185">Өргөлтийн тэмдэг оруулсан.</translation>
 <translation id="7239108166256782787"><ph name="DEVICE_NAME" /> шилжүүлгийг цуцалсан</translation>
 <translation id="7240339475467890413">Шинэ сүлжээний цэгт холбогдох уу?</translation>
 <translation id="7241389281993241388">Хэрэглэгчийн гэрчилгээг оруулах зорилгоор <ph name="TOKEN_NAME" />-д нэвтрэнэ үү.</translation>
@@ -7325,6 +7329,7 @@
 <translation id="8030852056903932865">Зөвшөөрөх</translation>
 <translation id="8032244173881942855">Табыг дамжуулах боломжгүй.</translation>
 <translation id="8032569120109842252">Дагаж буй</translation>
+<translation id="8033023935541439900">Өргөлтийн тэмдгийн цэс нээлттэй байна. Шилжихийн тулд зүүн эсвэл баруун дээр, оруулахын тулд enter дээр дарна уу.</translation>
 <translation id="8033827949643255796">Сонгогдсон</translation>
 <translation id="8033958968890501070">Хугацаа хэтэрсэн</translation>
 <translation id="8035059678007243127">Нууцлалтай Back/Forward Cache хийсэн хуудас: <ph name="BACK_FORWARD_CACHE_INCOGNITO_PAGE_URL" /></translation>
diff --git a/chrome/app/resources/generated_resources_ta.xtb b/chrome/app/resources/generated_resources_ta.xtb
index d871cc5..1c3ed133e 100644
--- a/chrome/app/resources/generated_resources_ta.xtb
+++ b/chrome/app/resources/generated_resources_ta.xtb
@@ -726,6 +726,7 @@
 <translation id="1676902103953506022"><ph name="DOMAIN" /> தளத்தில் <ph name="USERNAME" /> கணக்கிற்கான அனுமதிச் சான்று விவரங்கள்</translation>
 <translation id="1677306805708094828"><ph name="EXTENSION_TYPE_PARAMETER" /> ஐச் சேர்க்க முடியாது</translation>
 <translation id="1677472565718498478"><ph name="TIME" /> மணி நேரம்</translation>
+<translation id="1678794218766467608">உறக்கப் பயன்முறையின்போது அல்லது கவர் மூடப்பட்டால் லாக் செய்</translation>
 <translation id="1679068421605151609">டெவெலப்பர் கருவிகள்</translation>
 <translation id="1679810534535368772">உறுதியாக வெளியேற வேண்டுமா?</translation>
 <translation id="167983332380191032">நிர்வாகச் சேவை தவறான HTTP குறியீட்டை அனுப்பியது.</translation>
@@ -3805,6 +3806,7 @@
 <translation id="4586275095964870617">மாற்று உலாவியில் <ph name="URL" />ஐத் திறக்க முடியவில்லை. உங்கள் சிஸ்டம் நிர்வாகியைத் தொடர்புகொள்ளவும்.</translation>
 <translation id="4589713469967853491">’பதிவிறக்கங்கள்’ கோப்பகத்தில் பதிவுகள் எழுதப்பட்டன.</translation>
 <translation id="4590324241397107707">தரவுத்தளச் சேகரிப்பு</translation>
+<translation id="459204634473266369"><ph name="PRIMARY_EMAIL" /> கணக்கில் சாதனங்கள் எதுவும் சேமிக்கப்படவில்லை</translation>
 <translation id="4592891116925567110">ஸ்டைலஸ் கொண்டு வரையும் ஆப்ஸ்</translation>
 <translation id="4593021220803146968"><ph name="URL" /> க்குச் &amp;செல்க</translation>
 <translation id="4594577641390224176">சிஸ்டத்தின் அறிமுகப் பக்கத்தைத் தேடுகிறீர்களா? இந்தத் தளத்திற்குச் செல்க</translation>
@@ -4363,6 +4365,7 @@
 <translation id="5155327081870541046">தேட விரும்பும் தளத்திற்கான ஷார்ட்கட்டை முகவரிப் பட்டியில் டைப் செய்யவும் (எ.கா. "@bookmarks"). அதன்பிறகு உங்களுக்கு விருப்பமான கீபோர்டு ஷார்ட்கட்டை அழுத்தி தேடல் வார்த்தையை டைப் செய்யவும்.</translation>
 <translation id="5156638757840305347">கர்சர் தோன்றும்போதும் நகரும்போதும் ஹைலைட் செய்யப்படும்</translation>
 <translation id="5157635116769074044">தொடக்கத் திரையில் இந்தப் பக்கத்தைப் பொருத்து...</translation>
+<translation id="5158206172605340248">உச்சரிப்புக் குறிகள் மெனு மூடப்பட்டது.</translation>
 <translation id="5159094275429367735">Crostiniயை அமைத்திடுங்கள்</translation>
 <translation id="5159419673777902220">நீட்டிப்புக்கான அனுமதிகளை உங்கள் பெற்றோர் முடக்கியுள்ளார்</translation>
 <translation id="5159643365935452998">தரவைத் தானாக அழிப்பதற்கான அமைப்பைச் சரிபாருங்கள்</translation>
@@ -5297,6 +5300,7 @@
 <translation id="6065289257230303064">சான்றிதழ் பொருள் கோப்பக பண்புக்கூறுகள்</translation>
 <translation id="6066794465984119824">படத்தின் ஹேஷ் அமைக்கப்படவில்லை</translation>
 <translation id="6069464830445383022">Chromebookகில் உள்நுழைய Google கணக்கைப் பயன்படுத்துங்கள்</translation>
+<translation id="6070311415473175157">தேடுவதற்கான படப்பகுதியைத் தேர்ந்தெடுங்கள்</translation>
 <translation id="6071181508177083058">கடவுச்சொல்லை உறுதிசெய்க</translation>
 <translation id="6071576563962215370">சிஸ்டத்தால் சாதன நிறுவல்-நேரப் பண்புக்கூறுகளைப் பூட்ட முடியவில்லை.</translation>
 <translation id="6072442788591997866">இந்தச் சாதனத்தில் <ph name="APP_NAME" /> ஆப்ஸ் அனுமதிக்கப்படவில்லை. உங்கள் நிர்வாகியைத் தொடர்புகொள்ளவும். பிழைக் குறியீடு: <ph name="ERROR_CODE" />.</translation>
@@ -6491,6 +6495,7 @@
 <translation id="7235716375204803342">செயல்பாடுகளைப் பெறுகிறது...</translation>
 <translation id="7235737137505019098">உங்கள் பாதுகாப்பு விசையில் கூடுதலாகக் கணக்குகளைச் சேர்ப்பதற்குப் போதிய இடமில்லை.</translation>
 <translation id="7235873936132740888">மின்னஞ்சல் கிளையண்ட்டில் புதிய மெசேஜை உருவாக்குவது அல்லது ஆன்லைன் கேலெண்டரில் புதிய நிகழ்வுகளைச் சேர்ப்பது போன்ற குறிப்பிட்ட வகை இணைப்புகளைக் கிளிக் செய்யும்போது சிறப்புப் பணிகளைத் தளங்கள் மேற்கொள்ள முடியும்</translation>
+<translation id="7238609589076576185">உச்சரிப்புக் குறி சேர்க்கப்பட்டது.</translation>
 <translation id="7239108166256782787">அனுப்புவதை <ph name="DEVICE_NAME" /> ரத்துசெய்தது</translation>
 <translation id="7240339475467890413">புதிய ஹாட்ஸ்பாட்டுடன் இணைக்கவா?</translation>
 <translation id="7241389281993241388">கிளையண்ட் சான்றிதழை இறக்குமதி செய்ய தயவுசெய்து <ph name="TOKEN_NAME" /> இல் உள்நுழைக.</translation>
@@ -7127,6 +7132,7 @@
 <translation id="7842692330619197998">புதிய கணக்கை உருவாக்க g.co/ChromeEnterpriseAccount என்பதற்குச் செல்லவும்.</translation>
 <translation id="78427265591841839">பக்கத்தின் எந்தப் பகுதியையும் <ph name="VISUAL_SEARCH_PROVIDER" /> மூலம் தேடு</translation>
 <translation id="784273751836026224">Linuxஸை நிறுவல் நீக்கு</translation>
+<translation id="7842851769217535639">பக்கத்தின் எந்தப் பகுதியை வேண்டுமானாலும் தேடத் தேர்ந்தெடுங்கள்</translation>
 <translation id="7843786652787044762"><ph name="WEB_DRIVE" /> இல் உள்நுழைக</translation>
 <translation id="7844992432319478437">வேறுபாட்டைப் புதுப்பிக்கிறது</translation>
 <translation id="7846634333498149051">கீபோர்டு</translation>
@@ -7183,6 +7189,7 @@
 <translation id="7893008570150657497">உங்கள் கம்ப்யூட்டரிலிருந்து புகைப்படங்கள், இசை மற்றும் பிற மீடியாவை அணுகலாம்</translation>
 <translation id="7893153962594818789"><ph name="DEVICE_TYPE" /> இன் புளூடூத் முடக்கப்பட்டுள்ளது. உங்கள் கடவுச்சொல்லை உள்ளிட்டு, புளூடூத்தை இயக்கவும்.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (இயல்புநிலை)</translation>
+<translation id="7896292361319775586"><ph name="FILE" /> ஃபைலைச் சேமிக்கவா?</translation>
 <translation id="789722939441020330">பல ஃபைல்களைத் தானாகப் பதிவிறக்க தளங்களை அனுமதிக்காதே</translation>
 <translation id="7897900149154324287">எதிர்காலத்தில், துண்டிப்பதற்கு முன் ஃபைல்கள்  பயன்பாட்டிலிருந்து அகற்றக்கூடிய சாதனம் வெளியேற்றப்பட்டதை உறுதிப்படுத்திக்கொள்ளவும். இல்லையெனில், தரவை இழக்க நேரிடலாம்.</translation>
 <translation id="7898725031477653577">எப்போதும் மொழிபெயர்</translation>
@@ -7331,6 +7338,7 @@
 <translation id="8030852056903932865">அனுமதி</translation>
 <translation id="8032244173881942855">தாவலை அலைபரப்ப முடியவில்லை.</translation>
 <translation id="8032569120109842252">பின்தொடர்கிறீர்கள்</translation>
+<translation id="8033023935541439900">உச்சரிப்புக் குறிகள் மெனு திறக்கப்பட்டது. தேர்வுசெய்ய இடது அல்லது வலது அம்புக்குறியை அழுத்துங்கள், சேர்ப்பதற்கு Enter அழுத்துங்கள்.</translation>
 <translation id="8033827949643255796">தேர்ந்தெடுக்கப்பட்டன</translation>
 <translation id="8033958968890501070">நேரம் முடிந்தது</translation>
 <translation id="8035059678007243127">‘முன் பின் பக்கங்களைத் தற்காலிகமாகச் சேமித்தல்’ அம்சத்தில் சேமிக்கப்பட்ட மறைநிலைப் பக்கம்: <ph name="BACK_FORWARD_CACHE_INCOGNITO_PAGE_URL" /></translation>
@@ -8320,6 +8328,7 @@
 <translation id="899403249577094719">Netscape சான்றிதழ் அடிப்படை URL</translation>
 <translation id="899657321862108550">உங்கள் Chrome எங்கெங்கிலும்</translation>
 <translation id="899676909165543803">உங்கள் கீபோர்டின் கீழே வலது ஓரத்தில் கைரேகை சென்சார் உள்ளது. அதை ஏதேனும் ஒரு விரலால் மெதுவாகத் தொடவும்.</translation>
+<translation id="8998078711690114234">இதுபோன்ற ஃபைல்கள் தீங்கு விளைவிக்கலாம். <ph name="ORIGIN" /> தளத்தை நம்பினால் மட்டுமே இந்த ஃபைலைச் சேமியுங்கள்</translation>
 <translation id="8999560016882908256">பிரிவில் சின்டாக்ஸ் பிழை: <ph name="ERROR_LINE" /></translation>
 <translation id="9003185744423389627">சாதன நிர்வாகச் சேவையுடன் இணைக்க முடியவில்லை. பிழைச் செய்தி: <ph name="STATUS_TEXT" />, நேரம்: <ph name="FAILURE_TIME" /></translation>
 <translation id="9003647077635673607">எல்லா இணையதளங்களிலும் அனுமதி</translation>
diff --git a/chrome/app/resources/generated_resources_uz.xtb b/chrome/app/resources/generated_resources_uz.xtb
index f90fe2d1..b33cad8 100644
--- a/chrome/app/resources/generated_resources_uz.xtb
+++ b/chrome/app/resources/generated_resources_uz.xtb
@@ -2554,6 +2554,7 @@
 <translation id="3406290648907941085">Virtual reallik qurilmalari va axborotidan foydalanishga ruxsat berilgan</translation>
 <translation id="3406396172897554194">Til yoki klaviatura nomi orqali qidirish</translation>
 <translation id="3406605057700382950">&amp;Xatcho‘plar panelini ko‘rsatish</translation>
+<translation id="3408849592677950451">{NUM_PASSWORDS,plural, =1{1 ta parol <ph name="USER_EMAIL" /> uchun Google Parollar menejeriga import qilindi}other{{NUM_PASSWORDS} ta parol <ph name="USER_EMAIL" /> uchun Google Parollar menejeriga import qilindi}}</translation>
 <translation id="3409785640040772790">Xaritalar</translation>
 <translation id="3412265149091626468">Belgilanishga o‘tish</translation>
 <translation id="3413122095806433232">Sertifikatlash markazi noshiri: <ph name="LOCATION" /></translation>
@@ -3738,6 +3739,7 @@
 <translation id="4541123282641193691">Hisobingizni tekshirib bo‘lmadi. Qayta urinib ko‘ring yoki Chromebook qurilmangizni o‘chirib yoqing.</translation>
 <translation id="4541662893742891060">Bu profilga ulana olmadi. Texnik yordam uchun mobil aloqa operatoringizga murojaat qiling.</translation>
 <translation id="4541706525461326392">Profil olib tashlanmoqda. Bu bir necha daqiqa vaqt olishi mumkin.</translation>
+<translation id="4542332958571335077">{NUM_PASSWORDS,plural, =1{Bu qurilmadagi 1 ta parol Google Parollar menejeriga import qilindi}other{Bu qurilmadagi {NUM_PASSWORDS} ta parol Google Parollar menejeriga import qilindi}}</translation>
 <translation id="4542520061254486227"><ph name="WEBSITE_1" /> va <ph name="WEBSITE_2" /> saytlaridagi ma’lumotlarni ko‘rish</translation>
 <translation id="4543778593405494224">Sertifikatlar menejeri</translation>
 <translation id="4544174279960331769">Standart ko‘k avatar</translation>
@@ -5286,6 +5288,7 @@
 <translation id="6065289257230303064">Sertifikat subyekti katalogi atributlari</translation>
 <translation id="6066794465984119824">Rasm heshi belgilanmagan</translation>
 <translation id="6069464830445383022">Chromebook qurilmangizga Google hisobingizdan kirasiz</translation>
+<translation id="6070311415473175157">Qidirish uchun rasm hududini tanlang</translation>
 <translation id="6071181508177083058">parolni tasdiqlang</translation>
 <translation id="6071576563962215370">Tizim qurilma atributlarini oʻrnatish vaqtida qulflay olmadi.</translation>
 <translation id="6072442788591997866">Bu qurilmada <ph name="APP_NAME" /> ilovasini ishlatish taqiqlangan. Administratorga murojaat qiling. Xatolik kodi: <ph name="ERROR_CODE" />.</translation>
@@ -6225,6 +6228,7 @@
 <translation id="6968288415730398122">Ekran qulfini sozlash uchun parolingizni kiriting</translation>
 <translation id="6969047215179982698">Nearby Share’ni faolsizlantirish</translation>
 <translation id="6970480684834282392">Boshlanish turi</translation>
+<translation id="6970543303783413625">Parollar import qilinmadi. Bir vaqtda faqat <ph name="COUNT" /> ta parolni import qilishingiz mumkin.</translation>
 <translation id="6970856801391541997">Tanlangan sahifalarni chop etish</translation>
 <translation id="6970861306198150268">Bu sayt uchun parolni saqlab qoʻying</translation>
 <translation id="6972180789171089114">Audio/Video</translation>
@@ -6456,6 +6460,7 @@
 <translation id="720715819012336933">{NUM_PAGES,plural, =1{Sahifani yopish}other{Sahifalarni yopish}}</translation>
 <translation id="7207457272187520234">Foydalanish statistikasi va diagnostika axborotini yuborish. Bu qurilma hozirda qurilma va ilovalardan foydalanish haqidagi hamda diagnostika axborotini avtomatik tarzda Google kompaniyasiga yubormoqda. Ular tizim va ilovalar barqarorligi kabilarni yaxshilash uchun ishlatiladi. Ayrim toʻplangan maʼlumotlar Android dasturchilar kabi hamkorlarimizga ham oʻz ilovalari va mahsulotlarini yanada yaxshilashga yordam beradi. Bu parametr qurilma egasi tomonidan oʻrnatilgan. Agar Kengaytirilgan veb-qidiruv va ilovalar tarixi yoqilsa, bu maʼlumotlar Google hisobingizda saqlanadi.</translation>
 <translation id="7207631048330366454">Ilovalar ichidan qidirish</translation>
+<translation id="7210471695184432500">Bu qurilmadagi Google Parollar menejeriga parollarni import qilish uchun CSV faylni tanlang</translation>
 <translation id="7210499381659830293">Kengaytmalar ishlatuvchi printerlar</translation>
 <translation id="7211783048245131419">Hech qaysi tugma belgilanmagan</translation>
 <translation id="7212097698621322584">PIN kodni oʻzgartirish uchun joriy kodni kiriting. PIN kodni bilmasangiz, avval elektron kalit sozlamalarini qayta tiklab, keyingina yangi PIN belgilash mumkin.</translation>
@@ -7116,6 +7121,7 @@
 <translation id="7842692330619197998">Yangi hisob yaratish uchun g.co/ChromeEnterpriseAccount sahifasini oching.</translation>
 <translation id="78427265591841839">Sahifaning istalgan qismidan <ph name="VISUAL_SEARCH_PROVIDER" /> orqali qidirish</translation>
 <translation id="784273751836026224">Linux tizimini oʻchirish</translation>
+<translation id="7842851769217535639">Qidirish uchun sahifaning biror qismini tanlang</translation>
 <translation id="7843786652787044762"><ph name="WEB_DRIVE" /> hisobiga kirish</translation>
 <translation id="7844992432319478437">diff vositasi yangilanmoqda</translation>
 <translation id="7846634333498149051">Klaviatura</translation>
@@ -7172,6 +7178,7 @@
 <translation id="7893008570150657497">Kompyuteringizdagi rasmlar, musiqa va boshqa media fayllarga ruxsat</translation>
 <translation id="7893153962594818789"><ph name="DEVICE_TYPE" /> qurilmasida Bluetooth o‘chiq. Parolingizni kiriting va Bluetooth adapterini yoqing.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (birlamchi)</translation>
+<translation id="7896292361319775586"><ph name="FILE" /> saqlansinmi?</translation>
 <translation id="789722939441020330">Saytlarga bir nechta faylni avtomatik yuklashni taqiqlash</translation>
 <translation id="7897900149154324287">Kelgusida, olinadigan qurilmani chiqarib olishdan oldin uni Fayllar ilovasida chiqarishni unutmang. Aks holda, ma’lumotlar o‘chib ketishi mumkin.</translation>
 <translation id="7898725031477653577">Har doim tarjima qilinsin</translation>
@@ -7512,6 +7519,7 @@
 <translation id="8206859287963243715">Uyali</translation>
 <translation id="8208216423136871611">Saqlanmasin</translation>
 <translation id="8210398899759134986">{MUTED_NOTIFICATIONS_COUNT,plural, =1{Yangi bildirishnoma}other{# ta yangi bildirishnoma}}</translation>
+<translation id="821119981794423735">Parollarni <ph name="USER_EMAIL" /> uchun Google Parollar menejeriga import qilish uchun CSV faylni tanlang</translation>
 <translation id="8212008074015601248">{NUM_DOWNLOAD,plural, =1{Yuklab olinmoqda}other{Yuklab olinmoqda}}</translation>
 <translation id="8213449224684199188">Foto rejimi yoqildi</translation>
 <translation id="8214489666383623925">Faylni ochish...</translation>
@@ -8309,6 +8317,7 @@
 <translation id="899403249577094719">Netscape sertifikatlar omborining URL manzili</translation>
 <translation id="899657321862108550">Chrome – barcha qurilmalaringizda</translation>
 <translation id="899676909165543803">Barmoq izi sensori klaviaturaning quyi oʻng burchagidagi tugma. Istalgan barmoq bilan unga asta tegining.</translation>
+<translation id="8998078711690114234">Bunday turdagi fayl xavfli boʻlishi mumkin. <ph name="ORIGIN" /> saytiga ishonsangiz, bu faylni saqlang</translation>
 <translation id="8999560016882908256">Boʻlim bilan bogʻliq imloviy xato: <ph name="ERROR_LINE" /></translation>
 <translation id="9003185744423389627">Qurilmalar boshqaruvi serveriga ulanish “<ph name="STATUS_TEXT" />” holati bilan <ph name="FAILURE_TIME" /> da amalga oshmadi</translation>
 <translation id="9003647077635673607">Barcha satlarga ruxsat berish</translation>
diff --git a/chrome/app/resources/generated_resources_zh-HK.xtb b/chrome/app/resources/generated_resources_zh-HK.xtb
index 8e5e1699..25cdb8cd 100644
--- a/chrome/app/resources/generated_resources_zh-HK.xtb
+++ b/chrome/app/resources/generated_resources_zh-HK.xtb
@@ -726,6 +726,7 @@
 <translation id="1676902103953506022">喺 <ph name="DOMAIN" />上面顯示 <ph name="USERNAME" /> 嘅憑證詳情</translation>
 <translation id="1677306805708094828">無法新增<ph name="EXTENSION_TYPE_PARAMETER" /></translation>
 <translation id="1677472565718498478">電量尚餘 <ph name="TIME" /></translation>
+<translation id="1678794218766467608">進入休眠模式或蓋上保護蓋時鎖定</translation>
 <translation id="1679068421605151609">開發人員工具</translation>
 <translation id="1679810534535368772">確定要離開嗎?</translation>
 <translation id="167983332380191032">裝置管理服務已傳送 HTTP 錯誤。</translation>
@@ -3805,6 +3806,7 @@
 <translation id="4586275095964870617"><ph name="URL" /> 無法在替代瀏覽器中開啟。請聯絡您的系統管理員。</translation>
 <translation id="4589713469967853491">記錄已成功寫入「下載」目錄。</translation>
 <translation id="4590324241397107707">數據庫儲存空間</translation>
+<translation id="459204634473266369"><ph name="PRIMARY_EMAIL" /> 中未儲存任何裝置</translation>
 <translation id="4592891116925567110">觸控筆繪圖應用程式</translation>
 <translation id="4593021220803146968">前往 <ph name="URL" /> (&amp;G)</translation>
 <translation id="4594577641390224176">要查看系統的「關於」頁面嗎?請前往</translation>
@@ -4363,6 +4365,7 @@
 <translation id="5155327081870541046">在網址列輸入您想搜尋網站的捷徑,例如「例如「@bookmarks」),然後按下您偏好的鍵盤快速鍵,並輸入搜尋字詞。</translation>
 <translation id="5156638757840305347">游標在顯示或移動時會突顯</translation>
 <translation id="5157635116769074044">將網頁固定到 [開始] 螢幕…</translation>
+<translation id="5158206172605340248">重音符號選單已關閉。</translation>
 <translation id="5159094275429367735">設定 Crostini</translation>
 <translation id="5159419673777902220">您的家長已停用擴充程式權限</translation>
 <translation id="5159643365935452998">檢查自動資料清除設定</translation>
@@ -6489,6 +6492,7 @@
 <translation id="7235716375204803342">正在擷取活動…</translation>
 <translation id="7235737137505019098">安全密鑰的空間不足,無法建立帳戶。</translation>
 <translation id="7235873936132740888">網站可在您點擊特定類型的連結時處理特殊工作,例如在電子郵件用戶端建立新郵件,或在線上日曆中新增活動</translation>
+<translation id="7238609589076576185">已插入重音符號。</translation>
 <translation id="7239108166256782787"><ph name="DEVICE_NAME" /> 已取消傳送</translation>
 <translation id="7240339475467890413">要連線至新熱點嗎?</translation>
 <translation id="7241389281993241388">請登入 <ph name="TOKEN_NAME" /> 以匯入用戶端憑證。</translation>
@@ -7331,6 +7335,7 @@
 <translation id="8030852056903932865">核准</translation>
 <translation id="8032244173881942855">無法投放分頁。</translation>
 <translation id="8032569120109842252">追蹤中</translation>
+<translation id="8033023935541439900">重音符號選單已開啟。按向左鍵或向右鍵即可移動位置,按下 Enter 鍵即可插入重音符號。</translation>
 <translation id="8033827949643255796">已選取</translation>
 <translation id="8033958968890501070">逾時</translation>
 <translation id="8035059678007243127">向前/返回快取中的無痕頁面:<ph name="BACK_FORWARD_CACHE_INCOGNITO_PAGE_URL" /></translation>
diff --git a/chrome/app/resources/generated_resources_zh-TW.xtb b/chrome/app/resources/generated_resources_zh-TW.xtb
index d674ebb..3a634cb 100644
--- a/chrome/app/resources/generated_resources_zh-TW.xtb
+++ b/chrome/app/resources/generated_resources_zh-TW.xtb
@@ -723,6 +723,7 @@
 <translation id="1676902103953506022">在 <ph name="DOMAIN" /> 上顯示 <ph name="USERNAME" /> 的憑證詳細資料</translation>
 <translation id="1677306805708094828">無法新增<ph name="EXTENSION_TYPE_PARAMETER" /></translation>
 <translation id="1677472565718498478"><ph name="TIME" /> 後用盡</translation>
+<translation id="1678794218766467608">進入休眠模式或蓋上保護蓋時鎖定</translation>
 <translation id="1679068421605151609">開發人員工具</translation>
 <translation id="1679810534535368772">確定要離開嗎?</translation>
 <translation id="167983332380191032">管理服務傳回了 HTTP 錯誤。</translation>
@@ -3788,6 +3789,7 @@
 <translation id="4586275095964870617">無法在替代瀏覽器中開啟 <ph name="URL" />。請與你的系統管理員聯絡。</translation>
 <translation id="4589713469967853491">記錄已成功寫入「下載」目錄。</translation>
 <translation id="4590324241397107707">資料庫儲存空間</translation>
+<translation id="459204634473266369"><ph name="PRIMARY_EMAIL" /> 中未儲存任何裝置</translation>
 <translation id="4592891116925567110">觸控筆繪圖應用程式</translation>
 <translation id="4593021220803146968">前往 <ph name="URL" />(&amp;G)</translation>
 <translation id="4594577641390224176">要查看系統的「關於」頁面嗎?請前往</translation>
@@ -4346,6 +4348,7 @@
 <translation id="5155327081870541046">在網址列中針對想搜尋的網站輸入快捷字詞 (例如「@bookmarks」),然後按下你慣用的鍵盤快速鍵並輸入搜尋字詞。</translation>
 <translation id="5156638757840305347">游標會在出現或移動時醒目顯示</translation>
 <translation id="5157635116769074044">將網頁固定到開始畫面...</translation>
+<translation id="5158206172605340248">重音符號選單已關閉。</translation>
 <translation id="5159094275429367735">設定 Crostini</translation>
 <translation id="5159419673777902220">貴家長已停用擴充功能權限</translation>
 <translation id="5159643365935452998">檢查自動資料清除設定</translation>
@@ -6471,6 +6474,7 @@
 <translation id="7235716375204803342">正在擷取活動...</translation>
 <translation id="7235737137505019098">安全金鑰的空間不足,無法建立帳戶。</translation>
 <translation id="7235873936132740888">網站可以在你點選特定類型的連結時處理特殊工作,例如在你的電子郵件用戶端建立新郵件,或在線上日曆中新增活動</translation>
+<translation id="7238609589076576185">已插入重音符號。</translation>
 <translation id="7239108166256782787">「<ph name="DEVICE_NAME" />」已取消傳輸作業</translation>
 <translation id="7240339475467890413">確定要連線至新的無線基地台嗎?</translation>
 <translation id="7241389281993241388">登入 <ph name="TOKEN_NAME" /> 即可匯入用戶端憑證。</translation>
@@ -7313,6 +7317,7 @@
 <translation id="8030852056903932865">核准</translation>
 <translation id="8032244173881942855">無法投放分頁。</translation>
 <translation id="8032569120109842252">追蹤中</translation>
+<translation id="8033023935541439900">重音符號選單已開啟。按向左鍵或向右鍵即可移動位置,按下 Enter 鍵即可插入重音符號。</translation>
 <translation id="8033827949643255796">已選取</translation>
 <translation id="8033958968890501070">逾時</translation>
 <translation id="8035059678007243127">無痕模式往返快取頁面:<ph name="BACK_FORWARD_CACHE_INCOGNITO_PAGE_URL" /></translation>
diff --git a/chrome/browser/ash/file_manager/file_manager_browsertest.cc b/chrome/browser/ash/file_manager/file_manager_browsertest.cc
index 2f56d3e5..4a84a04e 100644
--- a/chrome/browser/ash/file_manager/file_manager_browsertest.cc
+++ b/chrome/browser/ash/file_manager/file_manager_browsertest.cc
@@ -1926,6 +1926,14 @@
             .EnableFiltersInRecents()
             .EnableFiltersInRecentsV2()
             .FilesSwa(),
+        TestCase("recentsRespondToTimezoneChangeForGridView")
+            .EnableFiltersInRecents()
+            .EnableFiltersInRecentsV2()
+            .FilesSwa(),
+        TestCase("recentsRespondToTimezoneChangeForListView")
+            .EnableFiltersInRecents()
+            .EnableFiltersInRecentsV2()
+            .FilesSwa(),
         TestCase("recentsTimePeriodHeadings")
             .EnableFiltersInRecents()
             .EnableFiltersInRecentsV2(),
diff --git a/chrome/browser/ash/file_manager/file_manager_browsertest_base.cc b/chrome/browser/ash/file_manager/file_manager_browsertest_base.cc
index ebc3cc0..f223cc0 100644
--- a/chrome/browser/ash/file_manager/file_manager_browsertest_base.cc
+++ b/chrome/browser/ash/file_manager/file_manager_browsertest_base.cc
@@ -78,6 +78,7 @@
 #include "chrome/browser/ash/guest_os/public/types.h"
 #include "chrome/browser/ash/smb_client/smb_service.h"
 #include "chrome/browser/ash/smb_client/smb_service_factory.h"
+#include "chrome/browser/ash/system/timezone_util.h"
 #include "chrome/browser/ash/system_web_apps/system_web_app_manager.h"
 #include "chrome/browser/ash/system_web_apps/types/system_web_app_type.h"
 #include "chrome/browser/browser_process.h"
@@ -111,6 +112,7 @@
 #include "components/drive/drive_pref_names.h"
 #include "components/prefs/pref_service.h"
 #include "components/services/app_service/public/cpp/app_launch_util.h"
+#include "components/user_manager/user_manager.h"
 #include "content/public/browser/browser_thread.h"
 #include "content/public/browser/navigation_handle.h"
 #include "content/public/browser/render_view_host.h"
@@ -3101,6 +3103,14 @@
     return;
   }
 
+  if (name == "setTimezone") {
+    const std::string* timezone = value.FindString("timezone");
+    ASSERT_TRUE(timezone);
+    auto* user = user_manager::UserManager::Get()->GetActiveUser();
+    chromeos::system::SetSystemTimezone(user, *timezone);
+    return;
+  }
+
   if (name == "blockFileTaskRunner") {
     BlockFileTaskRunner(profile());
     return;
diff --git a/chrome/browser/ash/file_manager/volume_manager.cc b/chrome/browser/ash/file_manager/volume_manager.cc
index 18456c6d..6d24f0d 100644
--- a/chrome/browser/ash/file_manager/volume_manager.cc
+++ b/chrome/browser/ash/file_manager/volume_manager.cc
@@ -931,7 +931,7 @@
 bool VolumeManager::RemoveAndroidFilesDirectoryForTesting(
     const base::FilePath& path) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
-  DoUnmountEvent(ash::MountError::kNone, *Volume::CreateForAndroidFiles(path));
+  DoUnmountEvent(*Volume::CreateForAndroidFiles(path));
   return true;
 }
 
@@ -939,7 +939,7 @@
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
   base::FilePath path;
   if (FindDownloadsMountPointPath(profile_, &path)) {
-    DoUnmountEvent(ash::MountError::kNone, *Volume::CreateForDownloads(path));
+    DoUnmountEvent(*Volume::CreateForDownloads(path));
   }
 }
 
@@ -949,8 +949,7 @@
 
   base::FilePath old_path;
   if (FindDownloadsMountPointPath(profile_, &old_path)) {
-    DoUnmountEvent(ash::MountError::kNone,
-                   *Volume::CreateForDownloads(old_path));
+    DoUnmountEvent(*Volume::CreateForDownloads(old_path));
   }
 
   bool success = RegisterDownloadsMountPoint(profile_, path);
@@ -1003,10 +1002,9 @@
     const std::string& drive_label,
     const std::string& file_system_type) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
-  DoUnmountEvent(
-      ash::MountError::kNone,
-      *Volume::CreateForTesting(path, volume_type, device_type, read_only,
-                                device_path, drive_label, file_system_type));
+  DoUnmountEvent(*Volume::CreateForTesting(path, volume_type, device_type,
+                                           read_only, device_path, drive_label,
+                                           file_system_type));
 }
 
 void VolumeManager::OnFileSystemMounted() {
@@ -1022,8 +1020,7 @@
 void VolumeManager::OnFileSystemBeingUnmounted() {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
 
-  DoUnmountEvent(ash::MountError::kNone,
-                 *Volume::CreateForDrive(GetDriveMountPointPath()));
+  DoUnmountEvent(*Volume::CreateForDrive(GetDriveMountPointPath()));
 }
 
 void VolumeManager::OnAutoMountableDiskEvent(
@@ -1132,7 +1129,7 @@
     }
 
     case ash::disks::DiskMountManager::UNMOUNTING:
-      DoUnmountEvent(error_code, *volume);
+      DoUnmountEvent(*volume, error_code);
       return;
   }
 
@@ -1387,7 +1384,7 @@
                                           : ash::MountError::kUnknown;
   std::unique_ptr<Volume> volume = Volume::CreateForProvidedFileSystem(
       file_system_info, MOUNT_CONTEXT_UNKNOWN);
-  DoUnmountEvent(mount_error, *volume);
+  DoUnmountEvent(*volume, mount_error);
 
   // The fusebox_mounter_ is enabled by a chrome flag.
   if (!fusebox_mounter_)
@@ -1404,7 +1401,7 @@
   std::unique_ptr<Volume> fusebox_volume =
       Volume::CreateForFuseBoxProvidedFileSystem(mount_path, file_system_info,
                                                  MOUNT_CONTEXT_UNKNOWN);
-  DoUnmountEvent(mount_error, *fusebox_volume);
+  DoUnmountEvent(*fusebox_volume, mount_error);
 
   // Remove the fusebox FSP storage device from chrome::storage.
   auto* mount_points = storage::ExternalMountPoints::GetSystemInstance();
@@ -1462,18 +1459,13 @@
                    Volume::CreateForAndroidFiles(
                        base::FilePath(util::kAndroidFilesPath)));
   } else {
-    DoUnmountEvent(ash::MountError::kNone,
-                   *Volume::CreateForMediaView(arc::kImagesRootDocumentId));
-    DoUnmountEvent(ash::MountError::kNone,
-                   *Volume::CreateForMediaView(arc::kVideosRootDocumentId));
-    DoUnmountEvent(ash::MountError::kNone,
-                   *Volume::CreateForMediaView(arc::kAudioRootDocumentId));
-    DoUnmountEvent(ash::MountError::kNone,
-                   *Volume::CreateForMediaView(arc::kDocumentsRootDocumentId));
+    DoUnmountEvent(*Volume::CreateForMediaView(arc::kImagesRootDocumentId));
+    DoUnmountEvent(*Volume::CreateForMediaView(arc::kVideosRootDocumentId));
+    DoUnmountEvent(*Volume::CreateForMediaView(arc::kAudioRootDocumentId));
+    DoUnmountEvent(*Volume::CreateForMediaView(arc::kDocumentsRootDocumentId));
     if (!base::FeatureList::IsEnabled(arc::kEnableVirtioBlkForData))
-      DoUnmountEvent(ash::MountError::kNone,
-                     *Volume::CreateForAndroidFiles(
-                         base::FilePath(util::kAndroidFilesPath)));
+      DoUnmountEvent(*Volume::CreateForAndroidFiles(
+          base::FilePath(util::kAndroidFilesPath)));
   }
 
   documents_provider_root_manager_->SetEnabled(enabled);
@@ -1641,7 +1633,7 @@
 
     // Unmount the MTP storage device in files app.
     const std::string volume_id = mounted_volume->volume_id();
-    DoUnmountEvent(ash::MountError::kNone, *mounted_volume);
+    DoUnmountEvent(*mounted_volume);
 
     // Remove the MTP storage device from chrome::storage.
     const std::string fsid = GetMountPointNameForMediaStorage(info);
@@ -1662,7 +1654,7 @@
     // Unmount the fusebox MTP storage device in files app.
     base::WeakPtr<Volume> volume = FindVolumeById(util::kFuseBox + volume_id);
     if (volume.get())
-      DoUnmountEvent(ash::MountError::kNone, *volume.get());
+      DoUnmountEvent(*volume.get());
 
     // Remove the fusebox MTP storage device from chrome::storage.
     mount_points->RevokeFileSystem(util::kFuseBox + fsid);
@@ -1695,10 +1687,9 @@
     const std::string& authority,
     const std::string& root_id,
     const std::string& document_id) {
-  DoUnmountEvent(ash::MountError::kNone,
-                 *Volume::CreateForDocumentsProvider(
-                     authority, root_id, std::string(), std::string(),
-                     std::string(), GURL(), false));
+  DoUnmountEvent(*Volume::CreateForDocumentsProvider(
+      authority, root_id, std::string(), std::string(), std::string(), GURL(),
+      false));
   arc::ArcDocumentsProviderRootMap::GetForArcBrowserContext()->UnregisterRoot(
       authority, document_id);
 }
@@ -1712,8 +1703,7 @@
 void VolumeManager::RemoveSmbFsVolume(const base::FilePath& mount_point) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
 
-  DoUnmountEvent(ash::MountError::kNone,
-                 *Volume::CreateForSmb(mount_point, ""));
+  DoUnmountEvent(*Volume::CreateForSmb(mount_point, ""));
 }
 
 void VolumeManager::OnDiskMountManagerRefreshed(bool success) {
@@ -1863,19 +1853,16 @@
     observer.OnVolumeMounted(error_code, volume);
 }
 
-void VolumeManager::DoUnmountEvent(ash::MountError error_code,
-                                   const Volume& volume) {
-  const Volumes::const_iterator it = mounted_volumes_.find(volume.volume_id());
-  if (it == mounted_volumes_.end())
-    return;
-
-  DCHECK_EQ(volume.volume_id(), it->get()->volume_id());
+void VolumeManager::DoUnmountEvent(Volumes::const_iterator it,
+                                   const ash::MountError error_code) {
+  DCHECK(it != mounted_volumes_.end());
 
   // Hold a reference to the removed Volume from |mounted_volumes_|, because
   // OnVolumeMounted() will access it.
+  const Volume& volume = **it;
   Volumes::node_type node_to_delete;
   if (error_code == ash::MountError::kNone)
-    node_to_delete = mounted_volumes_.extract(it);
+    node_to_delete = mounted_volumes_.extract(std::move(it));
 
   for (auto& observer : observers_)
     observer.OnVolumeUnmounted(error_code, volume);
@@ -1894,7 +1881,6 @@
     // Remove metadata associated with the mount. It will be a no-op if it
     // wasn't mounted or unmounted out of band.
     DoUnmountEvent(
-        ash::MountError::kNone,
         *Volume::CreateForSshfsCrostini(sshfs_mount_path, base::FilePath()));
     if (callback)
       std::move(callback).Run(true);
@@ -1918,8 +1904,7 @@
     // consistent, which means the mount path needs to be the same.
     // display_name, remote_mount_path and vm_type aren't needed and we don't
     // know them at unmount so leave them blank.
-    DoUnmountEvent(ash::MountError::kNone,
-                   *Volume::CreateForSftpGuestOs("", sftp_mount_path,
+    DoUnmountEvent(*Volume::CreateForSftpGuestOs("", sftp_mount_path,
                                                  base::FilePath(), vm_type));
     if (callback)
       std::move(callback).Run(true);
diff --git a/chrome/browser/ash/file_manager/volume_manager.h b/chrome/browser/ash/file_manager/volume_manager.h
index dbb0076d..2e54ebe9 100644
--- a/chrome/browser/ash/file_manager/volume_manager.h
+++ b/chrome/browser/ash/file_manager/volume_manager.h
@@ -586,7 +586,22 @@
   void DoAttachMtpStorage(const storage_monitor::StorageInfo& info,
                           device::mojom::MtpStorageInfoPtr mtp_storage_info);
   void DoMountEvent(ash::MountError error_code, std::unique_ptr<Volume> volume);
-  void DoUnmountEvent(ash::MountError error_code, const Volume& volume);
+
+  void DoUnmountEvent(Volumes::const_iterator it,
+                      ash::MountError error_code = ash::MountError::kNone);
+
+  void DoUnmountEvent(base::StringPiece volume_id,
+                      ash::MountError error_code = ash::MountError::kNone) {
+    const Volumes::const_iterator it = mounted_volumes_.find(volume_id);
+    if (it != mounted_volumes_.end())
+      DoUnmountEvent(it, error_code);
+  }
+
+  void DoUnmountEvent(const Volume& volume,
+                      ash::MountError error_code = ash::MountError::kNone) {
+    DoUnmountEvent(volume.volume_id(), error_code);
+  }
+
   void OnExternalStorageDisabledChangedUnmountCallback(
       std::vector<std::string> remaining_mount_paths,
       ash::MountError error_code);
diff --git a/chrome/browser/ash/input_method/autocorrect_manager.cc b/chrome/browser/ash/input_method/autocorrect_manager.cc
index 5e7c236..41d3b72 100644
--- a/chrome/browser/ash/input_method/autocorrect_manager.cc
+++ b/chrome/browser/ash/input_method/autocorrect_manager.cc
@@ -54,7 +54,6 @@
   base::UmaHistogramEnumeration("InputMethod.Assistive.Success", type);
 }
 
-constexpr int kKeysUntilUnderlineHides = 4;
 constexpr int kDistanceUntilUnderlineHides = 3;
 
 }  // namespace
@@ -94,7 +93,6 @@
 
   ResetStateVars(); // Ensure all state variables are reset.
   autocorrect_pending_ = true;
-  key_presses_until_underline_hide_ = kKeysUntilUnderlineHides;
 
   LogAssistiveAutocorrectAction(AutocorrectActions::kUnderlined);
   RecordAssistiveCoverage(AssistiveType::kAutocorrectUnderlined);
@@ -127,35 +125,21 @@
 }
 
 bool AutocorrectManager::OnKeyEvent(const ui::KeyEvent& event) {
-  if (!autocorrect_pending_ || event.type() != ui::ET_KEY_PRESSED) {
+  // OnKeyEvent is only used for interacting with the undo UI.
+  if (!autocorrect_pending_ || !window_visible_ ||
+      event.type() != ui::ET_KEY_PRESSED) {
     return false;
   }
-  if (event.code() == ui::DomCode::ARROW_UP && window_visible_) {
+
+  if (event.code() == ui::DomCode::ARROW_UP) {
     HighlightUndoButton();
     return true;
   }
-  if (event.code() == ui::DomCode::ENTER && window_visible_ &&
-      button_highlighted_) {
+  if (event.code() == ui::DomCode::ENTER && button_highlighted_) {
     UndoAutocorrect();
     return true;
   }
-  if (key_presses_until_underline_hide_ >= 0) {
-    --key_presses_until_underline_hide_;
-  }
 
-  // TODO(b/161490813): Move the logic to OnSurroundingTextChanged.
-  //   There are issues with the current logic:
-  //   1. This logic does not clear autocorrect for VK as OnKeyEvent is only
-  //      called for PK key presses.
-  //   2. It causes a difference between the behaviour of Autocorrect for VK
-  //      and PK.
-  //   3. If a user changes the autocorrect suggestion and clears it, the logic
-  //      will not count the "cleared" metric unless the user adds a few more
-  //      characters. Meanwhile, other logics such as undo or OnFocus might
-  //      process the pending autocorrect and make measurements inaccurate.
-  if (key_presses_until_underline_hide_ == 0) {
-    AcceptOrClearPendingAutocorrect();
-  }
   return false;
 }
 
@@ -220,7 +204,6 @@
   if (cursor_pos_unsigned >= range.start() &&
       cursor_pos_unsigned <= range.end() && cursor_pos == anchor_pos) {
     ShowUndoWindow(range, text);
-    key_presses_until_underline_hide_ = kKeysUntilUnderlineHides;
   } else {
     // Ensure undo window is hidden when cursor is not inside the autocorrect
     // range.
@@ -371,7 +354,6 @@
   autocorrect_pending_ = false;
   num_inserted_chars_ = -1;
   text_length_ = -1;
-  key_presses_until_underline_hide_ = -1;
 }
 
 void AutocorrectManager::OnTextFieldContextualInfoChanged(
diff --git a/chrome/browser/ash/input_method/autocorrect_manager.h b/chrome/browser/ash/input_method/autocorrect_manager.h
index af413ed..3ba769c 100644
--- a/chrome/browser/ash/input_method/autocorrect_manager.h
+++ b/chrome/browser/ash/input_method/autocorrect_manager.h
@@ -54,8 +54,7 @@
                          const std::u16string& original_text,
                          const std::u16string& current_text);
 
-  // To hide the underline after enough keypresses, this class intercepts
-  // keystrokes. Returns whether the keypress has now been handled.
+  // Handles interactions with Undo UI.
   bool OnKeyEvent(const ui::KeyEvent& event);
 
   // Indicates a new text field is focused, used to save context ID.
@@ -101,7 +100,6 @@
 
   SuggestionHandlerInterface* suggestion_handler_;
   int context_id_ = 0;
-  int key_presses_until_underline_hide_ = 0;
   std::u16string original_text_;
   bool window_visible_ = false;
   bool button_highlighted_ = false;
diff --git a/chrome/browser/ash/input_method/autocorrect_manager_unittest.cc b/chrome/browser/ash/input_method/autocorrect_manager_unittest.cc
index f84a22c..e85ac67 100644
--- a/chrome/browser/ash/input_method/autocorrect_manager_unittest.cc
+++ b/chrome/browser/ash/input_method/autocorrect_manager_unittest.cc
@@ -234,20 +234,7 @@
             gfx::Range());
 }
 
-TEST_F(AutocorrectManagerTest, FewKeyPressesDoesNotClearAutocorrectRange) {
-  manager_.HandleAutocorrect(gfx::Range(0, 3), u"teh", u"the");
-
-  const ui::KeyEvent key_event =
-      CreateKeyEvent(ui::DomKey::FromCharacter('a'), ui::DomCode::US_A);
-  EXPECT_FALSE(manager_.OnKeyEvent(key_event));
-  EXPECT_FALSE(manager_.OnKeyEvent(key_event));
-  EXPECT_FALSE(manager_.OnKeyEvent(key_event));
-
-  EXPECT_TRUE(
-      !mock_ime_input_context_handler_.GetAutocorrectRange().is_empty());
-}
-
-TEST_F(AutocorrectManagerTest, EnoughKeyPressesClearsAutocorrectRange) {
+TEST_F(AutocorrectManagerTest, OnKeyEventDoesNotClearAutocorrectRange) {
   manager_.HandleAutocorrect(gfx::Range(0, 3), u"teh", u"the");
 
   const ui::KeyEvent key_event =
@@ -256,8 +243,10 @@
   EXPECT_FALSE(manager_.OnKeyEvent(key_event));
   EXPECT_FALSE(manager_.OnKeyEvent(key_event));
   EXPECT_FALSE(manager_.OnKeyEvent(key_event));
+  EXPECT_FALSE(manager_.OnKeyEvent(key_event));
 
-  EXPECT_TRUE(mock_ime_input_context_handler_.GetAutocorrectRange().is_empty());
+  EXPECT_EQ(mock_ime_input_context_handler_.GetAutocorrectRange(),
+            gfx::Range(0, 3));
 }
 
 TEST_F(AutocorrectManagerTest,
@@ -711,7 +700,8 @@
                               /*cleared_underline=*/0);
 }
 
-TEST_F(AutocorrectManagerTest, KeyPressRecordsMetricsWhenAcceptingAutocorrect) {
+TEST_F(AutocorrectManagerTest,
+       OnKeyEventDoesNotRecordMetricsForAcceptingOrClearingAutocorrect) {
   manager_.HandleAutocorrect(gfx::Range(0, 3), u"teh", u"the");
 
   const ui::KeyEvent key_event =
@@ -720,40 +710,22 @@
   manager_.OnKeyEvent(key_event);
   manager_.OnKeyEvent(key_event);
   manager_.OnKeyEvent(key_event);
-
-  ExpectAutocorrectHistograms(histogram_tester_, /*visible_vk=*/false,
-                              /*window_shown=*/0, /*underlined=*/1,
-                              /*reverted=*/0, /*accepted=*/1,
-                              /*cleared_underline=*/0);
-}
-
-TEST_F(AutocorrectManagerTest, KeyPressRecordsMetricsWhenClearingAutocorrect) {
-  manager_.HandleAutocorrect(gfx::Range(0, 3), u"teh", u"the");
-
-  mock_ime_input_context_handler_.SetAutocorrectRange(gfx::Range());
-
-  const ui::KeyEvent key_event =
-      CreateKeyEvent(ui::DomKey::FromCharacter('a'), ui::DomCode::US_A);
-  // TODO(b/161490813): Remove extra calls after fixing OnKeyEvent logic.
-  //  Currently, OnKeyEvent waits for four keys before updating metrics for
-  //  cleared range.
-  manager_.OnKeyEvent(key_event);
-  manager_.OnKeyEvent(key_event);
-  manager_.OnKeyEvent(key_event);
   manager_.OnKeyEvent(key_event);
 
   ExpectAutocorrectHistograms(histogram_tester_, /*visible_vk=*/false,
                               /*window_shown=*/0, /*underlined=*/1,
                               /*reverted=*/0, /*accepted=*/0,
-                              /*cleared_underline=*/1);
+                              /*cleared_underline=*/0);
 }
 
 TEST_F(AutocorrectManagerTest,
-       KeyPressDoesNotRecordMetricsWhenAutocorrectIsStillPending) {
+       OnKeyEventDoesNotRecordMetricsAfterClearingRange) {
   manager_.HandleAutocorrect(gfx::Range(0, 3), u"teh", u"the");
+  mock_ime_input_context_handler_.SetAutocorrectRange(gfx::Range());
   const ui::KeyEvent key_event =
       CreateKeyEvent(ui::DomKey::FromCharacter('a'), ui::DomCode::US_A);
-
+  manager_.OnKeyEvent(key_event);
+  manager_.OnKeyEvent(key_event);
   manager_.OnKeyEvent(key_event);
   manager_.OnKeyEvent(key_event);
   manager_.OnKeyEvent(key_event);
@@ -873,37 +845,6 @@
 }
 
 TEST_F(AutocorrectManagerTest,
-       KeyPressDoesNotRecordMetricsForStaleAutocorrectRange) {
-  manager_.HandleAutocorrect(gfx::Range(0, 3), u"teh", u"the");
-
-  // Press enough keys to be on the boundary of accepting autocorrect
-  // with key presses.
-  const ui::KeyEvent key_event =
-      CreateKeyEvent(ui::DomKey::FromCharacter('a'), ui::DomCode::US_A);
-  manager_.OnKeyEvent(key_event);
-  manager_.OnKeyEvent(key_event);
-  manager_.OnKeyEvent(key_event);
-
-  // Accept autocorrect implicitly.
-  manager_.OnSurroundingTextChanged(u"the abc", 7, 7);
-  ExpectAutocorrectHistograms(histogram_tester_, /*visible_vk=*/false,
-                              /*window_shown=*/0, /*underlined=*/1,
-                              /*reverted=*/0, /*accepted=*/1,
-                              /*cleared_underline=*/0);
-
-  // Set stale autocorrect range.
-  mock_ime_input_context_handler_.SetAutocorrectRange(gfx::Range(0, 3));
-
-  // Trigger the logic for implicitly accepting autocorrect by keypress
-  // and ensure duplicate count is not happening.
-  manager_.OnKeyEvent(key_event);
-  ExpectAutocorrectHistograms(histogram_tester_, /*visible_vk=*/false,
-                              /*window_shown=*/0, /*underlined=*/1,
-                              /*reverted=*/0, /*accepted=*/1,
-                              /*cleared_underline=*/0);
-}
-
-TEST_F(AutocorrectManagerTest,
        InsertingCharsDoesNotRecordMetricsForStaleAndAcceptedRange) {
   manager_.HandleAutocorrect(gfx::Range(0, 3), u"teh", u"the");
 
diff --git a/chrome/browser/ash/input_method/native_input_method_engine_without_ime_service_browsertest.cc b/chrome/browser/ash/input_method/native_input_method_engine_without_ime_service_browsertest.cc
index 3a3a259..0ebbfef0 100644
--- a/chrome/browser/ash/input_method/native_input_method_engine_without_ime_service_browsertest.cc
+++ b/chrome/browser/ash/input_method/native_input_method_engine_without_ime_service_browsertest.cc
@@ -623,35 +623,31 @@
 IN_PROC_BROWSER_TEST_F(NativeInputMethodEngineWithoutImeServiceTest,
                        HighlightsOnAutocorrectThenDismissesHighlight) {
   engine_->Enable(kEngineIdUs);
+  TextInputTestHelper helper(GetBrowserInputMethod());
   ui::DummyTextInputClient text_input_client(ui::TEXT_INPUT_TYPE_TEXT);
   SetFocus(&text_input_client);
   // Input the corrected word.
-  DispatchKeyPresses(
-      {
-          ui::VKEY_C,
-          ui::VKEY_O,
-          ui::VKEY_R,
-          ui::VKEY_R,
-          ui::VKEY_E,
-          ui::VKEY_C,
-          ui::VKEY_T,
-          ui::VKEY_E,
-          ui::VKEY_D,
-      },
-      false);
+  helper.GetTextInputClient()->InsertText(
+      u"corrected ",
+      ui::TextInputClient::InsertTextCursorBehavior::kMoveCursorAfterText);
+  helper.WaitForSurroundingTextChanged(u"corrected ");
 
   engine_->OnAutocorrect(u"typed", u"corrected", 0);
 
   EXPECT_FALSE(engine_->GetAutocorrectRange().is_empty());
 
-  DispatchKeyPress(ui::KeyboardCode::VKEY_A, false);
-  DispatchKeyPress(ui::KeyboardCode::VKEY_A, false);
-  DispatchKeyPress(ui::KeyboardCode::VKEY_A, false);
+  helper.GetTextInputClient()->InsertText(
+      u"aa",
+      ui::TextInputClient::InsertTextCursorBehavior::kMoveCursorAfterText);
+  helper.WaitForSurroundingTextChanged(u"corrected aa");
 
-  // Highlighting should only go away after 4 keypresses.
+  // Highlighting should only go away after inserting 3 characters.
   EXPECT_FALSE(engine_->GetAutocorrectRange().is_empty());
 
-  DispatchKeyPress(ui::KeyboardCode::VKEY_A, false);
+  helper.GetTextInputClient()->InsertText(
+      u"a",
+      ui::TextInputClient::InsertTextCursorBehavior::kMoveCursorAfterText);
+  helper.WaitForSurroundingTextChanged(u"corrected aaa");
 
   EXPECT_TRUE(engine_->GetAutocorrectRange().is_empty());
 
diff --git a/chrome/browser/ash/printing/cups_printer_status_creator.cc b/chrome/browser/ash/printing/cups_printer_status_creator.cc
index e946b7e9..2276950d 100644
--- a/chrome/browser/ash/printing/cups_printer_status_creator.cc
+++ b/chrome/browser/ash/printing/cups_printer_status_creator.cc
@@ -4,6 +4,8 @@
 
 #include "chrome/browser/ash/printing/cups_printer_status_creator.h"
 
+#include "chrome/browser/ash/printing/printer_info.h"
+#include "chromeos/printing/cups_printer_status.h"
 #include "components/device_event_log/device_event_log.h"
 
 namespace ash {
@@ -16,7 +18,8 @@
 
 CupsPrinterStatus PrinterStatusToCupsPrinterStatus(
     const std::string& printer_id,
-    const printing::PrinterStatus& printer_status) {
+    const printing::PrinterStatus& printer_status,
+    const chromeos::PrinterAuthenticationInfo& auth_info) {
   CupsPrinterStatus cups_printer_status(printer_id);
 
   for (const auto& reason : printer_status.reasons) {
@@ -27,6 +30,7 @@
     cups_printer_status.AddStatusReason(
         PrinterReasonToCupsReason(reason.reason),
         PrinterSeverityToCupsSeverity(reason.severity));
+    cups_printer_status.SetAuthenticationInfo(auth_info);
   }
 
   return cups_printer_status;
diff --git a/chrome/browser/ash/printing/cups_printer_status_creator.h b/chrome/browser/ash/printing/cups_printer_status_creator.h
index be57371..c58a075 100644
--- a/chrome/browser/ash/printing/cups_printer_status_creator.h
+++ b/chrome/browser/ash/printing/cups_printer_status_creator.h
@@ -10,10 +10,6 @@
 #include "chromeos/printing/cups_printer_status.h"
 #include "printing/printer_status.h"
 
-namespace chromeos {
-class CupsPrinterStatus;
-}
-
 namespace printing {
 struct PrinterStatus;
 }  // namespace printing
@@ -22,7 +18,8 @@
 
 chromeos::CupsPrinterStatus PrinterStatusToCupsPrinterStatus(
     const std::string& printer_id,
-    const printing::PrinterStatus& printer_status);
+    const printing::PrinterStatus& printer_status,
+    const chromeos::PrinterAuthenticationInfo& auth_info);
 
 chromeos::CupsPrinterStatus::CupsPrinterStatusReason::Reason
 PrinterReasonToCupsReason(
diff --git a/chrome/browser/ash/printing/cups_printer_status_creator_unittest.cc b/chrome/browser/ash/printing/cups_printer_status_creator_unittest.cc
index be0e370..20e8d11 100644
--- a/chrome/browser/ash/printing/cups_printer_status_creator_unittest.cc
+++ b/chrome/browser/ash/printing/cups_printer_status_creator_unittest.cc
@@ -6,6 +6,7 @@
 
 #include <vector>
 
+#include "chromeos/printing/cups_printer_status.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -31,8 +32,10 @@
   printer_status.reasons.push_back(reason2);
 
   std::string printer_id = "id";
+  chromeos::PrinterAuthenticationInfo auth_info{.oauth_server = "a",
+                                                .oauth_scope = "b"};
   CupsPrinterStatus cups_printer_status =
-      PrinterStatusToCupsPrinterStatus(printer_id, printer_status);
+      PrinterStatusToCupsPrinterStatus(printer_id, printer_status, auth_info);
 
   EXPECT_EQ("id", cups_printer_status.GetPrinterId());
   EXPECT_EQ(2u, cups_printer_status.GetStatusReasons().size());
@@ -43,6 +46,9 @@
       CupsPrinterStatus::CupsPrinterStatusReason(CupsReason::kDoorOpen,
                                                  CupsSeverity::kWarning)};
   EXPECT_THAT(cups_printer_status.GetStatusReasons(), expected_reasons);
+
+  EXPECT_EQ(cups_printer_status.GetAuthenticationInfo().oauth_server, "a");
+  EXPECT_EQ(cups_printer_status.GetAuthenticationInfo().oauth_scope, "b");
 }
 
 TEST(CupsPrinterStatusCreatorTest, PrinterSeverityToCupsSeverity) {
diff --git a/chrome/browser/ash/printing/cups_printers_manager.cc b/chrome/browser/ash/printing/cups_printers_manager.cc
index 82f1750..fa645f00 100644
--- a/chrome/browser/ash/printing/cups_printers_manager.cc
+++ b/chrome/browser/ash/printing/cups_printers_manager.cc
@@ -410,20 +410,24 @@
   }
 
   // Callback for FetchPrinterStatus
-  void OnPrinterInfoFetched(const std::string& printer_id,
-                            PrinterStatusCallback cb,
-                            PrinterQueryResult result,
-                            const ::printing::PrinterStatus& printer_status,
-                            const std::string& make_and_model,
-                            const std::vector<std::string>& document_formats,
-                            bool ipp_everywhere) {
-    SendPrinterStatus(printer_id, std::move(cb), result, printer_status);
+  void OnPrinterInfoFetched(
+      const std::string& printer_id,
+      PrinterStatusCallback cb,
+      PrinterQueryResult result,
+      const ::printing::PrinterStatus& printer_status,
+      const std::string& make_and_model,
+      const std::vector<std::string>& document_formats,
+      bool ipp_everywhere,
+      const chromeos::PrinterAuthenticationInfo& auth_info) {
+    SendPrinterStatus(printer_id, std::move(cb), result, printer_status,
+                      auth_info);
   }
 
   void SendPrinterStatus(const std::string& printer_id,
                          PrinterStatusCallback cb,
                          PrinterQueryResult result,
-                         const ::printing::PrinterStatus& printer_status) {
+                         const ::printing::PrinterStatus& printer_status,
+                         const chromeos::PrinterAuthenticationInfo& auth_info) {
     base::UmaHistogramEnumeration("Printing.CUPS.PrinterStatusQueryResult",
                                   result);
     switch (result) {
@@ -462,7 +466,8 @@
 
         // Convert printing::PrinterStatus to printing::CupsPrinterStatus
         CupsPrinterStatus cups_printers_status =
-            PrinterStatusToCupsPrinterStatus(printer_id, printer_status);
+            PrinterStatusToCupsPrinterStatus(printer_id, printer_status,
+                                             auth_info);
 
         // Save the PrinterStatus so it can be attached along side future
         // Printer retrievals.
diff --git a/chrome/browser/ash/printing/printer_info.h b/chrome/browser/ash/printing/printer_info.h
index 707085a..20bcd67 100644
--- a/chrome/browser/ash/printing/printer_info.h
+++ b/chrome/browser/ash/printing/printer_info.h
@@ -11,6 +11,10 @@
 #include "base/callback_forward.h"
 #include "printing/printer_query_result.h"
 
+namespace chromeos {
+struct PrinterAuthenticationInfo;
+}  // namespace chromeos
+
 namespace printing {
 struct PrinterStatus;
 }  // namespace printing
@@ -21,12 +25,15 @@
 // succeeded at all. |status| contains current status. |make_and_model| is
 // the raw printer-make-and-model value from the printer. |autoconf| indicates
 // if we think we can compute the printer capabilities without a PPD.
-using PrinterInfoCallback =
-    base::OnceCallback<void(printing::PrinterQueryResult result,
-                            const printing::PrinterStatus& status,
-                            const std::string& make_and_model,
-                            const std::vector<std::string>& document_formats,
-                            bool autoconf)>;
+// |auth_info| holds the information about authentication required by the
+// printer.
+using PrinterInfoCallback = base::OnceCallback<void(
+    printing::PrinterQueryResult result,
+    const printing::PrinterStatus& status,
+    const std::string& make_and_model,
+    const std::vector<std::string>& document_formats,
+    bool autoconf,
+    const chromeos::PrinterAuthenticationInfo& auth_info)>;
 
 // Dispatch an IPP request to |host| on |port| for |path| to obtain
 // basic printer information.
diff --git a/chrome/browser/ash/printing/printer_info_cups.cc b/chrome/browser/ash/printing/printer_info_cups.cc
index 100a0ac9..e1221c0e 100644
--- a/chrome/browser/ash/printing/printer_info_cups.cc
+++ b/chrome/browser/ash/printing/printer_info_cups.cc
@@ -15,6 +15,7 @@
 #include "base/task/task_traits.h"
 #include "base/task/thread_pool.h"
 #include "base/version.h"
+#include "chromeos/printing/cups_printer_status.h"
 #include "printing/backend/cups_jobs.h"
 #include "printing/printer_status.h"
 
@@ -135,7 +136,7 @@
   if (result != ::printing::PrinterQueryResult::kSuccess) {
     VLOG(1) << "Could not reach printer";
     std::move(callback).Run(result, ::printing::PrinterStatus(), std::string(),
-                            {}, false);
+                            {}, false, {});
     return;
   }
 
@@ -148,7 +149,9 @@
 
   std::move(callback).Run(result, printer_status, printer_info.make_and_model,
                           printer_info.document_formats,
-                          IsAutoconf(printer_info));
+                          IsAutoconf(printer_info),
+                          {.oauth_server = printer_info.oauth_server,
+                           .oauth_scope = printer_info.oauth_scope});
 }
 
 }  // namespace
diff --git a/chrome/browser/ash/printing/printer_info_stub.cc b/chrome/browser/ash/printing/printer_info_stub.cc
index f41f3c1..046ac4a0 100644
--- a/chrome/browser/ash/printing/printer_info_stub.cc
+++ b/chrome/browser/ash/printing/printer_info_stub.cc
@@ -7,6 +7,7 @@
 #include "base/bind.h"
 #include "base/check.h"
 #include "base/threading/sequenced_task_runner_handle.h"
+#include "chromeos/printing/cups_printer_status.h"
 #include "printing/printer_status.h"
 
 namespace ash {
@@ -22,7 +23,8 @@
       FROM_HERE, base::BindOnce(std::move(callback),
                                 printing::PrinterQueryResult::kUnknownFailure,
                                 printing::PrinterStatus(), "Foo Bar",
-                                std::vector<std::string>{}, false));
+                                std::vector<std::string>{}, false,
+                                chromeos::PrinterAuthenticationInfo{}));
 }
 
 }  // namespace ash
diff --git a/chrome/browser/devtools/devtools_browser_context_manager.cc b/chrome/browser/devtools/devtools_browser_context_manager.cc
index 21a783b..b48b4f4e 100644
--- a/chrome/browser/devtools/devtools_browser_context_manager.cc
+++ b/chrome/browser/devtools/devtools_browser_context_manager.cc
@@ -14,6 +14,12 @@
 #include "chrome/browser/ui/browser_list.h"
 #include "chrome/browser/ui/browser_window.h"
 
+namespace {
+
+const int64_t kDestroyProfileTimeoutSeconds = 60;
+
+}  // namespace
+
 DevToolsBrowserContextManager::DevToolsBrowserContextManager() {}
 
 DevToolsBrowserContextManager::~DevToolsBrowserContextManager() = default;
@@ -88,7 +94,8 @@
   if (!has_opened_browser) {
     otr_profiles_.erase(it);
     profile->RemoveObserver(this);
-    ProfileDestroyer::DestroyProfileWhenAppropriate(profile);
+    ProfileDestroyer::DestroyProfileWhenAppropriateWithTimeout(
+        profile, base::Seconds(kDestroyProfileTimeoutSeconds));
     std::move(callback).Run(true, "");
     return;
   }
@@ -134,8 +141,10 @@
   // during the browser tear-down process.
   base::ThreadTaskRunnerHandle::Get()->PostTask(
       FROM_HERE,
-      base::BindOnce(&ProfileDestroyer::DestroyProfileWhenAppropriate,
-                     base::Unretained(otr_profile)));
+      base::BindOnce(
+          &ProfileDestroyer::DestroyProfileWhenAppropriateWithTimeout,
+          base::Unretained(otr_profile),
+          base::Seconds(kDestroyProfileTimeoutSeconds)));
 
   std::move(pending_disposal->second).Run(true, "");
   pending_context_disposals_.erase(pending_disposal);
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
index 75c5655..69bbfa7 100644
--- a/chrome/browser/flag-metadata.json
+++ b/chrome/browser/flag-metadata.json
@@ -6198,7 +6198,7 @@
   {
     "name": "terminal-tmux-integration",
     "owners": [ "lxj", "easy", "//chrome/browser/ash/guest_os/OWNERS" ],
-    "expiry_milestone": 106
+    "expiry_milestone": 112
   },
   {
     "name": "third-party-storage-partitioning",
diff --git a/chrome/browser/media/cast_remoting_connector.cc b/chrome/browser/media/cast_remoting_connector.cc
index f60cb0957..aa092b6 100644
--- a/chrome/browser/media/cast_remoting_connector.cc
+++ b/chrome/browser/media/cast_remoting_connector.cc
@@ -33,9 +33,9 @@
 #endif
 
 using content::BrowserThread;
+using media::mojom::RemotingSinkMetadata;
 using media::mojom::RemotingStartFailReason;
 using media::mojom::RemotingStopReason;
-using media::mojom::RemotingSinkMetadata;
 
 bool MediaRemotingDialogCoordinator::Show(
     PermissionCallback permission_callback) {
@@ -88,9 +88,7 @@
   void OnStopped(RemotingStopReason reason) { source_->OnStopped(reason); }
 
   // The CastRemotingConnector calls this when it is no longer valid.
-  void OnCastRemotingConnectorDestroyed() {
-    connector_ = nullptr;
-  }
+  void OnCastRemotingConnectorDestroyed() { connector_ = nullptr; }
 
   // media::mojom::Remoter implementation. The source calls these to start/stop
   // media remoting and send messages to the sink. These simply delegate to the
@@ -155,11 +153,12 @@
         media_router::MediaRouterFactory::GetApiForBrowserContext(
             contents->GetBrowserContext()),
         user_prefs::UserPrefs::Get(contents->GetBrowserContext()),
-        sessions::SessionTabHelper::IdForTab(contents)
+        sessions::SessionTabHelper::IdForTab(contents),
 #if defined(TOOLKIT_VIEWS)
-            ,
         std::make_unique<media_router::MediaRemotingDialogCoordinatorViews>(
             contents)
+#else
+        std::make_unique<MediaRemotingDialogCoordinator>()
 #endif
     );
     contents->SetUserData(kUserDataKey, base::WrapUnique(connector));
@@ -207,7 +206,7 @@
 }
 
 void CastRemotingConnector::ResetRemotingPermission() {
-  remoting_allowed_.reset();
+  remoting_allowed_ = GetRemotingAllowedUserPref();
 }
 
 void CastRemotingConnector::ConnectWithMediaRemoter(
@@ -296,19 +295,12 @@
 
   active_bridge_ = bridge;
 
-  if (!remoting_allowed_.has_value()) {
-    if (!dialog_coordinator_) {
-      remoting_allowed_ = true;
-    } else if (dialog_coordinator_->Show(
-                   base::BindOnce(&CastRemotingConnector::OnDialogClosed,
-                                  weak_factory_.GetWeakPtr()))) {
-      return;
-    } else {
-      remoting_allowed_ = false;
-    }
+  if (remoting_allowed_.has_value()) {
+    StartRemotingIfPermitted();
+    return;
   }
-
-  StartRemotingIfPermitted();
+  dialog_coordinator_->Show(base::BindOnce(
+      &CastRemotingConnector::OnDialogClosed, weak_factory_.GetWeakPtr()));
 }
 
 void CastRemotingConnector::OnDialogClosed(bool remoting_allowed) {
@@ -356,10 +348,9 @@
     return;
   }
 
-    DCHECK(remoter_);
-    remoter_->StartDataStreams(std::move(audio_pipe), std::move(video_pipe),
-                               std::move(audio_sender),
-                               std::move(video_sender));
+  DCHECK(remoter_);
+  remoter_->StartDataStreams(std::move(audio_pipe), std::move(video_pipe),
+                             std::move(audio_sender), std::move(video_sender));
 }
 
 void CastRemotingConnector::StopRemoting(RemotingBridge* bridge,
@@ -375,7 +366,7 @@
   // Cancel all outstanding callbacks related to the remoting session.
   weak_factory_.InvalidateWeakPtrs();
 
-  if (dialog_coordinator_ && dialog_coordinator_->IsShowing()) {
+  if (dialog_coordinator_->IsShowing()) {
     dialog_coordinator_->Hide();
     if (is_initiated_by_source && remoter_) {
       // The source requested remoting be stopped before the permission request
@@ -421,7 +412,8 @@
 }
 
 void CastRemotingConnector::SendMessageToSink(
-    RemotingBridge* bridge, const std::vector<uint8_t>& message) {
+    RemotingBridge* bridge,
+    const std::vector<uint8_t>& message) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
 
   // During an active remoting session, simply pass all binary messages through
@@ -444,7 +436,7 @@
 
 void CastRemotingConnector::EstimateTransmissionCapacity(
     media::mojom::Remoter::EstimateTransmissionCapacityCallback callback) {
-    std::move(callback).Run(0);
+  std::move(callback).Run(0);
 }
 
 void CastRemotingConnector::OnSinkAvailable(
@@ -513,11 +505,7 @@
       media_router::prefs::kMediaRouterMediaRemotingEnabled,
       base::BindRepeating(&CastRemotingConnector::OnPrefChanged,
                           base::Unretained(this)));
-  if (const PrefService::Preference* pref = pref_service_->FindPreference(
-          media_router::prefs::kMediaRouterMediaRemotingEnabled);
-      pref && !pref->IsDefaultValue()) {
-    remoting_allowed_ = pref->GetValue()->GetBool();
-  }
+  remoting_allowed_ = GetRemotingAllowedUserPref();
 #endif
 }
 
@@ -531,3 +519,16 @@
     OnStopped(media::mojom::RemotingStopReason::USER_DISABLED);
 #endif
 }
+
+absl::optional<bool> CastRemotingConnector::GetRemotingAllowedUserPref() const {
+#if BUILDFLAG(IS_ANDROID)
+  return absl::nullopt;
+#else
+  const PrefService::Preference* pref = pref_service_->FindPreference(
+      media_router::prefs::kMediaRouterMediaRemotingEnabled);
+  if (!pref || pref->IsDefaultValue()) {
+    return absl::nullopt;
+  }
+  return pref->GetValue()->GetBool();
+#endif
+}
diff --git a/chrome/browser/media/cast_remoting_connector.h b/chrome/browser/media/cast_remoting_connector.h
index a8408afa..ea505d4 100644
--- a/chrome/browser/media/cast_remoting_connector.h
+++ b/chrome/browser/media/cast_remoting_connector.h
@@ -135,11 +135,11 @@
 
   // Main constructor. |tab_id| refers to any remoted content managed
   // by this instance (i.e., any remoted content from one tab/WebContents).
-  CastRemotingConnector(media_router::MediaRouter* router,
-                        PrefService* pref_service,
-                        SessionID tab_id,
-                        std::unique_ptr<MediaRemotingDialogCoordinator>
-                            dialog_coordinator = nullptr);
+  CastRemotingConnector(
+      media_router::MediaRouter* router,
+      PrefService* pref_service,
+      SessionID tab_id,
+      std::unique_ptr<MediaRemotingDialogCoordinator> dialog_coordinator);
 
   // Creates a RemotingBridge that implements the requested Remoter service, and
   // binds it to the interface |receiver|.
@@ -219,6 +219,9 @@
   // remoting if necessary.
   void OnPrefChanged();
 
+  // Returns the user's remoting preference, or nullopt if it isn't set.
+  absl::optional<bool> GetRemotingAllowedUserPref() const;
+
   void set_remoting_allowed_for_testing(bool remoting_allowed) {
     remoting_allowed_ = remoting_allowed;
   }
diff --git a/chrome/browser/media/cast_remoting_connector_unittest.cc b/chrome/browser/media/cast_remoting_connector_unittest.cc
index 2be32229..cab10a7d 100644
--- a/chrome/browser/media/cast_remoting_connector_unittest.cc
+++ b/chrome/browser/media/cast_remoting_connector_unittest.cc
@@ -16,6 +16,7 @@
 #include "components/media_router/browser/test/mock_media_router.h"
 #include "components/media_router/common/media_route.h"
 #include "components/media_router/common/media_source.h"
+#include "components/media_router/common/pref_names.h"
 #include "components/sync_preferences/testing_pref_service_syncable.h"
 #include "content/public/browser/browser_thread.h"
 #include "content/public/test/browser_task_environment.h"
@@ -153,9 +154,7 @@
     return remoter_pending_remote;
   }
 
-  static void RunUntilIdle() {
-    base::RunLoop().RunUntilIdle();
-  }
+  static void RunUntilIdle() { base::RunLoop().RunUntilIdle(); }
 
   void DisableRemoting() {
     connector_->OnStopped(RemotingStopReason::USER_DISABLED);
@@ -163,17 +162,19 @@
 
   void CreateConnector(bool remoting_allowed) {
     connector_.reset();  // Call dtor first if there is one created.
-    connector_.reset(new CastRemotingConnector(&media_router_, &pref_service_,
-                                               kRemotingTabId));
+    connector_.reset(new CastRemotingConnector(
+        &media_router_, &pref_service_, kRemotingTabId,
+        std::make_unique<MediaRemotingDialogCoordinator>()));
     connector_->set_remoting_allowed_for_testing(remoting_allowed);
   }
 
   CastRemotingConnector* GetConnector() const { return connector_.get(); }
 
+  sync_preferences::TestingPrefServiceSyncable pref_service_;
+
  private:
   content::BrowserTaskEnvironment task_environment_;
   media_router::MockMediaRouter media_router_;
-  sync_preferences::TestingPrefServiceSyncable pref_service_;
   std::unique_ptr<CastRemotingConnector> connector_;
 };
 
@@ -300,6 +301,27 @@
   RunUntilIdle();
 }
 
+TEST_F(CastRemotingConnectorTest, PrefPersistsAcrossReset) {
+  CreateConnector(false);
+  pref_service_.registry()->RegisterBooleanPref(
+      media_router::prefs::kMediaRouterMediaRemotingEnabled, true);
+  pref_service_.SetBoolean(
+      media_router::prefs::kMediaRouterMediaRemotingEnabled, true);
+
+  // This resets the per-session remoting allowed/disallowed state, but the
+  // pref set above should not be affected.
+  GetConnector()->ResetRemotingPermission();
+
+  MockRemotingSource source;
+  mojo::Remote<media::mojom::Remoter> remoter(CreateRemoter(&source));
+  std::unique_ptr<MockMediaRemoter> media_remoter =
+      std::make_unique<MockMediaRemoter>(GetConnector());
+
+  EXPECT_CALL(source, OnStarted());
+  remoter->Start();
+  RunUntilIdle();
+}
+
 namespace {
 
 // The possible ways a remoting session may be terminated in the "full
@@ -358,20 +380,21 @@
 
   // The |source| should now be able to send binary messages to the sink.
   // |other_source| should not!
-  const std::vector<uint8_t> message_to_sink = { 3, 1, 4, 1, 5, 9 };
+  const std::vector<uint8_t> message_to_sink = {3, 1, 4, 1, 5, 9};
   EXPECT_CALL(*media_remoter, SendMessageToSink(message_to_sink))
       .Times(1)
       .RetiresOnSaturation();
   remoter->SendMessageToSink(message_to_sink);
-  const std::vector<uint8_t> ignored_message_to_sink = { 1, 2, 3 };
+  const std::vector<uint8_t> ignored_message_to_sink = {1, 2, 3};
   EXPECT_CALL(*media_remoter, SendMessageToSink(ignored_message_to_sink))
       .Times(0);
   other_remoter->SendMessageToSink(ignored_message_to_sink);
   RunUntilIdle();
 
   // The sink should also be able to send binary messages to the |source|.
-  const std::vector<uint8_t> message_to_source = { 2, 7, 1, 8, 2, 8 };
-  EXPECT_CALL(*source, OnMessageFromSink(message_to_source)).Times(1)
+  const std::vector<uint8_t> message_to_source = {2, 7, 1, 8, 2, 8};
+  EXPECT_CALL(*source, OnMessageFromSink(message_to_source))
+      .Times(1)
       .RetiresOnSaturation();
   media_remoter->SendMessageToSource(message_to_source);
   RunUntilIdle();
@@ -379,7 +402,8 @@
   // The |other_source| should not be allowed to start a remoting session.
   EXPECT_CALL(*other_source,
               OnStartFailed(RemotingStartFailReason::CANNOT_START_MULTIPLE))
-      .Times(1).RetiresOnSaturation();
+      .Times(1)
+      .RetiresOnSaturation();
   other_remoter->Start();
   RunUntilIdle();
 
@@ -467,7 +491,8 @@
       // remoting session and notifies the |source|.
       EXPECT_CALL(*source, OnSinkGone()).Times(1).RetiresOnSaturation();
       EXPECT_CALL(*source, OnStopped(RemotingStopReason::UNEXPECTED_FAILURE))
-          .Times(1).RetiresOnSaturation();
+          .Times(1)
+          .RetiresOnSaturation();
       EXPECT_CALL(*media_remoter, Stop(RemotingStopReason::UNEXPECTED_FAILURE))
           .Times(1)
           .RetiresOnSaturation();
diff --git a/chrome/browser/profiles/profile_destroyer.cc b/chrome/browser/profiles/profile_destroyer.cc
index 517fd2a8..a6e4576 100644
--- a/chrome/browser/profiles/profile_destroyer.cc
+++ b/chrome/browser/profiles/profile_destroyer.cc
@@ -53,6 +53,14 @@
 
 // static
 void ProfileDestroyer::DestroyProfileWhenAppropriate(Profile* const profile) {
+  DestroyProfileWhenAppropriateWithTimeout(profile,
+                                           base::Seconds(kTimerDelaySeconds));
+}
+
+// static
+void ProfileDestroyer::DestroyProfileWhenAppropriateWithTimeout(
+    Profile* const profile,
+    base::TimeDelta timeout) {
   if (!profile)  // profile might have been reset in ResetPendingDestroyers();
     return;
 
@@ -96,7 +104,7 @@
     // The instance will destroy itself once all (non-spare) render process
     // hosts referring to it are properly terminated. This happens in the two
     // "final" state: Retry() and Timeout().
-    new ProfileDestroyer(profile, profile_hosts);
+    new ProfileDestroyer(profile, profile_hosts, timeout);
     return;
   }
 
@@ -219,8 +227,12 @@
   }
 }
 
-ProfileDestroyer::ProfileDestroyer(Profile* const profile, const HostSet& hosts)
-    : profile_(profile), profile_ptr_(reinterpret_cast<uint64_t>(profile)) {
+ProfileDestroyer::ProfileDestroyer(Profile* const profile,
+                                   const HostSet& hosts,
+                                   base::TimeDelta timeout)
+    : profile_(profile),
+      timeout_(timeout),
+      profile_ptr_(reinterpret_cast<uint64_t>(profile)) {
   TRACE_EVENT("shutdown", "ProfileDestroyer::ProfileDestroyer",
               [&](perfetto::EventContext ctx) {
                 auto* proto =
@@ -236,8 +248,8 @@
   DCHECK(observations_.IsObservingAnySource());
 
   // We don't want to wait for RenderProcessHost to be destroyed longer than
-  // kTimerDelaySeconds.
-  timer_.Start(FROM_HERE, base::Seconds(kTimerDelaySeconds),
+  // timeout.
+  timer_.Start(FROM_HERE, timeout,
                base::BindOnce(&ProfileDestroyer::Timeout,
                               weak_ptr_factory_.GetWeakPtr()));
 }
@@ -305,7 +317,7 @@
 }
 
 void ProfileDestroyer::Retry() {
-  DestroyProfileWhenAppropriate(profile_);
+  DestroyProfileWhenAppropriateWithTimeout(profile_, timeout_);
   delete this;  // Final state.
 }
 
diff --git a/chrome/browser/profiles/profile_destroyer.h b/chrome/browser/profiles/profile_destroyer.h
index 4dcf492..5432a9f 100644
--- a/chrome/browser/profiles/profile_destroyer.h
+++ b/chrome/browser/profiles/profile_destroyer.h
@@ -15,6 +15,7 @@
 #include "content/public/browser/render_process_host.h"
 #include "content/public/browser/render_process_host_observer.h"
 
+class DevToolsBrowserContextManager;
 class Profile;
 class ProfileImpl;
 
@@ -39,9 +40,20 @@
   friend class ProfileImpl;
   friend class base::RefCounted<ProfileDestroyer>;
 
+  // For custom timeout, see DestroyProfileWhenAppropriateWithTimeout.
+  friend class DevToolsBrowserContextManager;
+
   using HostSet = std::set<content::RenderProcessHost*>;
 
-  ProfileDestroyer(Profile* const profile, const HostSet& hosts);
+  // Same as DestroyProfileWhenAppropriate, but configures how long to wait
+  // for render process hosts to be destroyed. Intended for testing/automation
+  // scenarios, where default timeout is too short.
+  static void DestroyProfileWhenAppropriateWithTimeout(Profile* const profile,
+                                                       base::TimeDelta timeout);
+
+  ProfileDestroyer(Profile* const profile,
+                   const HostSet& hosts,
+                   base::TimeDelta timeout);
   ~ProfileDestroyer() override;
 
   // content::RenderProcessHostObserver override.
@@ -90,6 +102,9 @@
   // another instance of ProfileDestroyer that this instance is canceled.
   Profile* profile_;
 
+  // Force-destruction timeout.
+  const base::TimeDelta timeout_;
+
   // The initial value of |profile_| stored as uint64_t for traces. It is useful
   // for use in the destructor, because at the end, |profile_| is nullptr.
   const uint64_t profile_ptr_;
diff --git a/chrome/browser/ui/android/fast_checkout/internal/BUILD.gn b/chrome/browser/ui/android/fast_checkout/internal/BUILD.gn
index 5d29064..5adb8ee 100644
--- a/chrome/browser/ui/android/fast_checkout/internal/BUILD.gn
+++ b/chrome/browser/ui/android/fast_checkout/internal/BUILD.gn
@@ -37,6 +37,15 @@
     ":java_strings_grd",
     "//ui/android:ui_java_resources",
   ]
+  sources = [
+    "java/res/drawable-v24/fast_checkout_item_background_bottom.xml",
+    "java/res/drawable-v24/fast_checkout_item_background_top.xml",
+    "java/res/drawable/fast_checkout_item_background_bottom.xml",
+    "java/res/drawable/fast_checkout_item_background_top.xml",
+    "java/res/layout/fast_checkout_bottom_sheet.xml",
+    "java/res/layout/fast_checkout_home_screen_sheet.xml",
+    "java/res/values/dimens.xml",
+  ]
   custom_package = "org.chromium.chrome.browser.ui.fast_checkout"
 }
 
diff --git a/chrome/browser/ui/android/fast_checkout/internal/java/res/drawable-v24/fast_checkout_item_background_bottom.xml b/chrome/browser/ui/android/fast_checkout/internal/java/res/drawable-v24/fast_checkout_item_background_bottom.xml
new file mode 100644
index 0000000..5c17a70
--- /dev/null
+++ b/chrome/browser/ui/android/fast_checkout/internal/java/res/drawable-v24/fast_checkout_item_background_bottom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2022 The Chromium Authors. All rights reserved.
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file. -->
+<org.chromium.components.browser_ui.widget.SurfaceColorDrawable
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:shape="rectangle"
+    app:surfaceElevation="@dimen/default_elevation_1">
+    <!-- TODO(crbug.com/1354596): Merge background resource for TTF Payments/Passwords and FC. -->
+    <corners android:topLeftRadius="@dimen/fast_checkout_inner_corner_radius"
+    android:topRightRadius="@dimen/fast_checkout_inner_corner_radius"
+    android:bottomLeftRadius="@dimen/fast_checkout_outer_corner_radius"
+    android:bottomRightRadius="@dimen/fast_checkout_outer_corner_radius"/>
+</org.chromium.components.browser_ui.widget.SurfaceColorDrawable>
diff --git a/chrome/browser/ui/android/fast_checkout/internal/java/res/drawable-v24/fast_checkout_item_background_top.xml b/chrome/browser/ui/android/fast_checkout/internal/java/res/drawable-v24/fast_checkout_item_background_top.xml
new file mode 100644
index 0000000..addcd05c
--- /dev/null
+++ b/chrome/browser/ui/android/fast_checkout/internal/java/res/drawable-v24/fast_checkout_item_background_top.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2022 The Chromium Authors. All rights reserved.
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file. -->
+<org.chromium.components.browser_ui.widget.SurfaceColorDrawable
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:shape="rectangle"
+    app:surfaceElevation="@dimen/default_elevation_1">
+    <!-- TODO(crbug.com/1354596): Merge background resource for TTF Payments/Passwords and FC. -->
+    <corners android:topLeftRadius="@dimen/fast_checkout_outer_corner_radius"
+    android:topRightRadius="@dimen/fast_checkout_outer_corner_radius"
+    android:bottomLeftRadius="@dimen/fast_checkout_inner_corner_radius"
+    android:bottomRightRadius="@dimen/fast_checkout_inner_corner_radius"/>
+</org.chromium.components.browser_ui.widget.SurfaceColorDrawable>
diff --git a/chrome/browser/ui/android/fast_checkout/internal/java/res/drawable/fast_checkout_item_background_bottom.xml b/chrome/browser/ui/android/fast_checkout/internal/java/res/drawable/fast_checkout_item_background_bottom.xml
new file mode 100644
index 0000000..6e676cb
--- /dev/null
+++ b/chrome/browser/ui/android/fast_checkout/internal/java/res/drawable/fast_checkout_item_background_bottom.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2022 The Chromium Authors. All rights reserved.
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file. -->
+
+<shape
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+  <!-- TODO(crbug.com/1354596): Merge background resource for TTF Payments/Passwords and FC. -->
+  <corners android:topLeftRadius="@dimen/fast_checkout_inner_corner_radius"
+    android:topRightRadius="@dimen/fast_checkout_inner_corner_radius"
+    android:bottomLeftRadius="@dimen/fast_checkout_outer_corner_radius"
+    android:bottomRightRadius="@dimen/fast_checkout_outer_corner_radius"/>
+</shape>
diff --git a/chrome/browser/ui/android/fast_checkout/internal/java/res/drawable/fast_checkout_item_background_top.xml b/chrome/browser/ui/android/fast_checkout/internal/java/res/drawable/fast_checkout_item_background_top.xml
new file mode 100644
index 0000000..5e5d0ca
--- /dev/null
+++ b/chrome/browser/ui/android/fast_checkout/internal/java/res/drawable/fast_checkout_item_background_top.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2022 The Chromium Authors. All rights reserved.
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file. -->
+
+<shape
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+  <!-- TODO(crbug.com/1354596): Merge background resource for TTF Payments/Passwords and FC. -->
+  <corners android:topLeftRadius="@dimen/fast_checkout_outer_corner_radius"
+    android:topRightRadius="@dimen/fast_checkout_outer_corner_radius"
+    android:bottomLeftRadius="@dimen/fast_checkout_inner_corner_radius"
+    android:bottomRightRadius="@dimen/fast_checkout_inner_corner_radius"/>
+</shape>
diff --git a/chrome/browser/ui/android/fast_checkout/internal/java/res/layout/fast_checkout_bottom_sheet.xml b/chrome/browser/ui/android/fast_checkout/internal/java/res/layout/fast_checkout_bottom_sheet.xml
new file mode 100644
index 0000000..7013e089
--- /dev/null
+++ b/chrome/browser/ui/android/fast_checkout/internal/java/res/layout/fast_checkout_bottom_sheet.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2022 The Chromium Authors. All rights reserved.
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file. -->
+
+<ViewFlipper
+  xmlns:android="http://schemas.android.com/apk/res/android"
+  xmlns:app="http://schemas.android.com/apk/res-auto"
+  xmlns:tools="http://schemas.android.com/tools"
+  android:layout_width="match_parent"
+  android:layout_height="wrap_content"
+  android:paddingLeft="@dimen/fast_checkout_sheet_margin"
+  android:paddingRight="@dimen/fast_checkout_sheet_margin"
+  android:measureAllChildren="false" >
+
+    <include
+        android:id="@+id/fast_checkout_home_screen_sheet"
+        layout="@layout/fast_checkout_home_screen_sheet" />
+    <!-- TODO(crbug.com/1334642): Create views for the remaining 2 screens. -->
+</ViewFlipper>
diff --git a/chrome/browser/ui/android/fast_checkout/internal/java/res/layout/fast_checkout_home_screen_sheet.xml b/chrome/browser/ui/android/fast_checkout/internal/java/res/layout/fast_checkout_home_screen_sheet.xml
new file mode 100644
index 0000000..2eeaf73
--- /dev/null
+++ b/chrome/browser/ui/android/fast_checkout/internal/java/res/layout/fast_checkout_home_screen_sheet.xml
@@ -0,0 +1,160 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2022 The Chromium Authors. All rights reserved.
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file. -->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_height="wrap_content"
+    android:layout_width="match_parent"
+    android:orientation="vertical">
+
+    <!-- Header section -->
+    <ImageView
+      android:layout_width="wrap_content"
+      android:layout_height="@dimen/fast_checkout_product_icon_height"
+      android:layout_gravity="center_horizontal"
+      android:layout_marginTop="@dimen/fast_checkout_home_sheet_items_spacing"
+      android:importantForAccessibility="no"
+      app:srcCompat="@drawable/fre_product_logo"/>
+
+    <TextView
+      android:layout_width="match_parent"
+      android:layout_height="wrap_content"
+      android:layout_marginTop="16dp"
+      android:gravity="center_horizontal"
+      android:textAppearance="@style/TextAppearance.Headline"
+      android:text="@string/fast_checkout_home_sheet_title" />
+
+    <TextView
+      android:layout_width="match_parent"
+      android:layout_height="wrap_content"
+      android:gravity="center_horizontal"
+      android:textAppearance="@style/TextAppearance.TextMedium.Secondary"
+      android:text="@string/fast_checkout_home_sheet_subtitle" />
+
+    <!-- Autofill Options -->
+    <LinearLayout
+      android:layout_height="wrap_content"
+      android:layout_width="match_parent"
+      android:layout_marginTop="@dimen/fast_checkout_home_sheet_items_spacing"
+      android:orientation="vertical">
+      <!-- Selected Address  -->
+      <LinearLayout
+          android:layout_height="wrap_content"
+          android:layout_width="match_parent"
+          android:paddingTop="@dimen/fast_checkout_home_sheet_address_card_padding"
+          android:paddingBottom="@dimen/fast_checkout_home_sheet_address_card_padding"
+          android:background="@drawable/fast_checkout_item_background_top"
+          android:orientation="horizontal">
+        <ImageView
+            android:layout_width="@dimen/fast_checkout_address_icon"
+            android:layout_height="@dimen/fast_checkout_address_icon"
+            android:background="@null"
+            android:layout_marginTop="1dp"
+            android:layout_marginStart="18dp"
+            android:layout_marginEnd="18dp"
+            android:importantForAccessibility="no"
+            app:srcCompat="@drawable/gm_filled_location_on_24" />
+        <LinearLayout
+          android:layout_height="wrap_content"
+          android:layout_width="0dp"
+          android:layout_weight="1"
+          android:orientation="vertical">
+            <TextView
+              android:id="@+id/fast_checkout_home_sheet_profile_name"
+              android:layout_width="match_parent"
+              android:layout_height="wrap_content"
+              android:textAppearance="@style/TextAppearance.TextMedium.Primary" />
+            <TextView
+              android:id="@+id/fast_checkout_home_sheet_profile_street"
+              android:layout_width="match_parent"
+              android:layout_height="wrap_content"
+              android:textAppearance="@style/TextAppearance.TextMedium.Primary" />
+            <TextView
+              android:id="@+id/fast_checkout_home_sheet_profile_email"
+              android:layout_width="match_parent"
+              android:layout_height="wrap_content"
+              android:layout_marginTop="8dp"
+              android:layout_marginEnd="@dimen/fast_checkout_sheet_margin"
+              android:textAppearance="@style/TextAppearance.TextMedium.Primary" />
+            <TextView
+              android:id="@+id/fast_checkout_home_sheet_profile_phone_number"
+              android:layout_width="match_parent"
+              android:layout_height="wrap_content"
+              android:textAppearance="@style/TextAppearance.TextMedium.Primary" />
+        </LinearLayout>
+        <ImageView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginEnd="@dimen/fast_checkout_home_sheet_expand_option_icon_margin"
+            android:layout_gravity="center_vertical"
+            android:importantForAccessibility="no"
+            app:tint="@color/default_icon_color_secondary_tint_list"
+            app:srcCompat="@drawable/ic_expand_more_horizontal_black_24dp" />
+      </LinearLayout>
+
+      <View
+          android:layout_width="match_parent"
+          android:layout_height="2dp"/>
+
+      <!-- Selected Credit Card -->
+      <LinearLayout
+          android:layout_height="wrap_content"
+          android:layout_width="match_parent"
+          android:gravity="center_vertical"
+          android:minHeight="@dimen/fast_checkout_sheet_home_screen_cc_min_height"
+          android:background="@drawable/fast_checkout_item_background_bottom">
+
+          <ImageView
+              android:id="@+id/fast_checkout_credit_card_icon"
+              android:layout_width="@dimen/fast_checkout_credit_card_icon_width"
+              android:layout_height="@dimen/fast_checkout_credit_card_icon_height"
+              android:layout_marginStart="12dp"
+              android:layout_marginEnd="12dp"
+              android:importantForAccessibility="no"
+              app:srcCompat="@drawable/mc_card" />
+
+          <TextView
+              android:id="@+id/fast_checkout_sheet_selected_credit_card_header"
+              android:layout_height="wrap_content"
+              android:layout_width="0dp"
+              android:layout_weight="1"
+              android:textAppearance="@style/TextAppearance.TextMedium.Primary" />
+          <ImageView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginEnd="@dimen/fast_checkout_home_sheet_expand_option_icon_margin"
+            android:importantForAccessibility="no"
+            app:tint="@color/default_icon_color_secondary_tint_list"
+            app:srcCompat="@drawable/ic_expand_more_horizontal_black_24dp" />
+      </LinearLayout>
+    </LinearLayout>
+
+    <!-- Action buttons -->
+    <org.chromium.ui.widget.ButtonCompat
+        android:id="@+id/fast_checkout_button_accept"
+        style="@style/FilledButton.Flat"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="@dimen/fast_checkout_home_sheet_items_spacing"
+        android:ellipsize="end"
+        android:gravity="center"
+        android:singleLine="true"
+        android:text="@string/fast_checkout_home_sheet_accept" />
+
+    <org.chromium.ui.widget.ButtonCompat
+        android:id="@+id/fast_checkout_button_reject"
+        style="@style/TextButton"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="18dp"
+        android:layout_marginBottom="@dimen/fast_checkout_home_sheet_items_spacing"
+        android:ellipsize="end"
+        android:gravity="center"
+        android:singleLine="true"
+        android:text="@string/fast_checkout_home_sheet_decline" />
+
+</LinearLayout>
diff --git a/chrome/browser/ui/android/fast_checkout/internal/java/res/values/dimens.xml b/chrome/browser/ui/android/fast_checkout/internal/java/res/values/dimens.xml
new file mode 100644
index 0000000..cdb52a96
--- /dev/null
+++ b/chrome/browser/ui/android/fast_checkout/internal/java/res/values/dimens.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2022 The Chromium Authors. All rights reserved.
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file. -->
+
+<resources>
+    <dimen name="fast_checkout_sheet_margin">24dp</dimen>
+    <dimen name="fast_checkout_address_icon">20dp</dimen>
+    <dimen name="fast_checkout_product_icon_height">32dp</dimen>
+    <dimen name="fast_checkout_credit_card_icon_width">32dp</dimen>
+    <dimen name="fast_checkout_credit_card_icon_height">20dp</dimen>
+    <dimen name="fast_checkout_home_sheet_items_spacing">24dp</dimen>
+    <dimen name="fast_checkout_home_sheet_address_card_padding">16dp</dimen>
+    <dimen name="fast_checkout_home_sheet_expand_option_icon_margin">8dp</dimen>
+    <dimen name="fast_checkout_sheet_home_screen_cc_min_height">56dp</dimen>
+    <dimen name="fast_checkout_inner_corner_radius">4dp</dimen>
+    <dimen name="fast_checkout_outer_corner_radius">16dp</dimen>
+</resources>
diff --git a/chrome/browser/ui/android/fast_checkout/internal/java/src/org/chromium/chrome/browser/ui/fast_checkout/FastCheckoutCoordinator.java b/chrome/browser/ui/android/fast_checkout/internal/java/src/org/chromium/chrome/browser/ui/fast_checkout/FastCheckoutCoordinator.java
index fb9c96e..7138d2c3 100644
--- a/chrome/browser/ui/android/fast_checkout/internal/java/src/org/chromium/chrome/browser/ui/fast_checkout/FastCheckoutCoordinator.java
+++ b/chrome/browser/ui/android/fast_checkout/internal/java/src/org/chromium/chrome/browser/ui/fast_checkout/FastCheckoutCoordinator.java
@@ -5,8 +5,8 @@
 package org.chromium.chrome.browser.ui.fast_checkout;
 
 import android.content.Context;
-import android.view.ViewGroup;
-import android.widget.LinearLayout;
+import android.view.LayoutInflater;
+import android.widget.ViewFlipper;
 
 import org.chromium.chrome.browser.ui.fast_checkout.data.FastCheckoutAutofillProfile;
 import org.chromium.chrome.browser.ui.fast_checkout.data.FastCheckoutCreditCard;
@@ -23,17 +23,13 @@
             FastCheckoutComponent.Delegate delegate) {
         mMediator.initialize(delegate, mModel, sheetController);
 
-        LinearLayout rootView = new LinearLayout(context);
-        rootView.setLayoutParams(new ViewGroup.LayoutParams(
-                ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
-        rootView.setOrientation(LinearLayout.VERTICAL);
-
+        ViewFlipper rootView = (ViewFlipper) LayoutInflater.from(context).inflate(
+                R.layout.fast_checkout_bottom_sheet, null);
         mContent = new FastCheckoutSheetContent(rootView);
 
-        // TODO(crbug.com/1334642): Create views for all 3 screens.
         mModel.addObserver((source, propertyKey) -> {
             if (FastCheckoutModel.CURRENT_SCREEN == propertyKey) {
-                mContent.updateCurrentScreen(mModel.get(FastCheckoutModel.CURRENT_SCREEN));
+                rootView.setDisplayedChild(mModel.get(FastCheckoutModel.CURRENT_SCREEN));
             } else if (FastCheckoutModel.VISIBLE == propertyKey) {
                 // Dismiss the sheet if it can't be immediately shown.
                 boolean visibilityChangeSuccessful =
diff --git a/chrome/browser/ui/android/fast_checkout/internal/java/src/org/chromium/chrome/browser/ui/fast_checkout/FastCheckoutSheetContent.java b/chrome/browser/ui/android/fast_checkout/internal/java/src/org/chromium/chrome/browser/ui/fast_checkout/FastCheckoutSheetContent.java
index eb59092..36cfdfcf 100644
--- a/chrome/browser/ui/android/fast_checkout/internal/java/src/org/chromium/chrome/browser/ui/fast_checkout/FastCheckoutSheetContent.java
+++ b/chrome/browser/ui/android/fast_checkout/internal/java/src/org/chromium/chrome/browser/ui/fast_checkout/FastCheckoutSheetContent.java
@@ -23,14 +23,6 @@
         mContentView = contentView;
     }
 
-    /**
-     * Sets the screen to show on the bottom sheet.
-     * @param screenType A {@link ScreenType} specifying the screen to show.
-     */
-    void updateCurrentScreen(int screenType) {
-        // TODO(crbug.com/1334642): Implement.
-    }
-
     @Override
     public View getContentView() {
         return mContentView;
@@ -54,7 +46,7 @@
 
     @Override
     public int getPriority() {
-        return BottomSheetContent.ContentPriority.HIGH;
+        return ContentPriority.HIGH;
     }
 
     @Override
@@ -69,19 +61,19 @@
 
     @Override
     public int getPeekHeight() {
-        return BottomSheetContent.HeightMode.DISABLED;
+        return HeightMode.DISABLED;
     }
 
     @Override
     public float getFullHeightRatio() {
         // TODO(crbug.com/1334642): Implement.
-        return HeightMode.DEFAULT;
+        return HeightMode.WRAP_CONTENT;
     }
 
     @Override
     public float getHalfHeightRatio() {
         // TODO(crbug.com/1334642): Implement.
-        return BottomSheetContent.HeightMode.DEFAULT;
+        return HeightMode.WRAP_CONTENT;
     }
 
     @Override
diff --git a/chrome/browser/ui/android/fast_checkout/internal/java/strings/android_fast_checkout_strings.grd b/chrome/browser/ui/android/fast_checkout/internal/java/strings/android_fast_checkout_strings.grd
index a3e83af..19793ed 100644
--- a/chrome/browser/ui/android/fast_checkout/internal/java/strings/android_fast_checkout_strings.grd
+++ b/chrome/browser/ui/android/fast_checkout/internal/java/strings/android_fast_checkout_strings.grd
@@ -176,6 +176,18 @@
   <release allow_pseudo="false" seq="1">
     <messages fallback_to_english="true">
       <!-- Fast Checkout -->
+      <message name="IDS_FAST_CHECKOUT_HOME_SHEET_TITLE" desc="Header for Fast Checkout sheet where a user can pick an address and payment option to fill during checkout flows.">
+        Check out faster?
+      </message>
+      <message name="IDS_FAST_CHECKOUT_HOME_SHEET_SUBTITLE" desc="Subtitle for Fast Checkout sheet where a user can pick an address and payment option to fill during checkout flows.">
+        Autofill shipping and payment info as you check out
+      </message>
+      <message name="IDS_FAST_CHECKOUT_HOME_SHEET_ACCEPT" desc="Text for accepting autofilling the selected options on the site.">
+        Autofill my info
+      </message>
+      <message name="IDS_FAST_CHECKOUT_HOME_SHEET_DECLINE" desc="Text for declining autofilling the selected options on the site.">
+        No thanks
+      </message>
       <message name="IDS_FAST_CHECKOUT_CONTENT_DESCRIPTION" desc="Accessibility string read when the Fast Checkout bottom sheet is opened. It describes the bottom sheet where a user can pick an address and payment option to fill during checkout flows">
         List of addresses and payment options to be filled during checkout flows.
       </message>
diff --git a/chrome/browser/ui/android/fast_checkout/internal/java/strings/android_fast_checkout_strings_grd/IDS_FAST_CHECKOUT_HOME_SHEET_ACCEPT.png.sha1 b/chrome/browser/ui/android/fast_checkout/internal/java/strings/android_fast_checkout_strings_grd/IDS_FAST_CHECKOUT_HOME_SHEET_ACCEPT.png.sha1
new file mode 100644
index 0000000..413fb5a
--- /dev/null
+++ b/chrome/browser/ui/android/fast_checkout/internal/java/strings/android_fast_checkout_strings_grd/IDS_FAST_CHECKOUT_HOME_SHEET_ACCEPT.png.sha1
@@ -0,0 +1 @@
+7536bf3c61acf2dbc814ac68882a5ec5d4f783f4
diff --git a/chrome/browser/ui/android/fast_checkout/internal/java/strings/android_fast_checkout_strings_grd/IDS_FAST_CHECKOUT_HOME_SHEET_DECLINE.png.sha1 b/chrome/browser/ui/android/fast_checkout/internal/java/strings/android_fast_checkout_strings_grd/IDS_FAST_CHECKOUT_HOME_SHEET_DECLINE.png.sha1
new file mode 100644
index 0000000..413fb5a
--- /dev/null
+++ b/chrome/browser/ui/android/fast_checkout/internal/java/strings/android_fast_checkout_strings_grd/IDS_FAST_CHECKOUT_HOME_SHEET_DECLINE.png.sha1
@@ -0,0 +1 @@
+7536bf3c61acf2dbc814ac68882a5ec5d4f783f4
diff --git a/chrome/browser/ui/android/fast_checkout/internal/java/strings/android_fast_checkout_strings_grd/IDS_FAST_CHECKOUT_HOME_SHEET_SUBTITLE.png.sha1 b/chrome/browser/ui/android/fast_checkout/internal/java/strings/android_fast_checkout_strings_grd/IDS_FAST_CHECKOUT_HOME_SHEET_SUBTITLE.png.sha1
new file mode 100644
index 0000000..413fb5a
--- /dev/null
+++ b/chrome/browser/ui/android/fast_checkout/internal/java/strings/android_fast_checkout_strings_grd/IDS_FAST_CHECKOUT_HOME_SHEET_SUBTITLE.png.sha1
@@ -0,0 +1 @@
+7536bf3c61acf2dbc814ac68882a5ec5d4f783f4
diff --git a/chrome/browser/ui/android/fast_checkout/internal/java/strings/android_fast_checkout_strings_grd/IDS_FAST_CHECKOUT_HOME_SHEET_TITLE.png.sha1 b/chrome/browser/ui/android/fast_checkout/internal/java/strings/android_fast_checkout_strings_grd/IDS_FAST_CHECKOUT_HOME_SHEET_TITLE.png.sha1
new file mode 100644
index 0000000..413fb5a
--- /dev/null
+++ b/chrome/browser/ui/android/fast_checkout/internal/java/strings/android_fast_checkout_strings_grd/IDS_FAST_CHECKOUT_HOME_SHEET_TITLE.png.sha1
@@ -0,0 +1 @@
+7536bf3c61acf2dbc814ac68882a5ec5d4f783f4
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ar.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ar.xtb
index 186fd39..7fd678c 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ar.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ar.xtb
@@ -984,6 +984,7 @@
 <translation id="6397616442223433927">تمّت استعادة الاتصال بالإنترنت.</translation>
 <translation id="6401458660421980302">‏لإرسال علامة التبويب هذه إلى جهاز آخر، عليك تسجيل الدخول إلى Chrome على ذلك الجهاز.</translation>
 <translation id="6402652558933147609"><ph name="ERROR_CODE" /> في <ph name="VIOLATED_URL" /></translation>
+<translation id="6403371459378431832">مزامنة بياناتك على جميع الأجهزة</translation>
 <translation id="6404511346730675251">تعديل الإشارة المرجعية</translation>
 <translation id="6406506848690869874">المزامنة</translation>
 <translation id="6407224748847589805">تعذّر الاتصال بجهاز الكمبيوتر. يمكنك تجربة خيار آخر لإثبات الهوية.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_az.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_az.xtb
index 5c1d826..34ae195c 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_az.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_az.xtb
@@ -433,6 +433,7 @@
 <translation id="3290249595466894471">Həmçinin yeni təhlükələri aşkarlamaqda kömək məqsədilə səhifə, endirmə, artırma fəaliyyətindən ibarət kiçik nümunə göndərir</translation>
 <translation id="3297344142967351106">Səsli yardım</translation>
 <translation id="3303414029551471755">Kontentin endirilməsinə davam etmək istəyirsiniz?</translation>
+<translation id="3305795716056605962">"Digər seçimlər" düyməsi ilə səhifələri tərcümə edin</translation>
 <translation id="3334729583274622784">Fayl artırması dəyişdirilsin?</translation>
 <translation id="3341262203274374114">İzləmədən çıxarmaq olmur. Xəta baş verdi.</translation>
 <translation id="3359667936385849800">Cari xidmət təminatçınızı istifadə edin</translation>
@@ -1266,6 +1267,7 @@
 <translation id="7853202427316060426">Fəalliyyət</translation>
 <translation id="7857691613771368249">Faylların nə zaman yadda saxlanacağını soruşun</translation>
 <translation id="7859988229622350291">Neç vaxt tərcümə etməyin</translation>
+<translation id="7866213166286285359">Səhifələri burada tərcümə edin</translation>
 <translation id="78707286264420418"><ph name="PRODUCT_NAME" /> cihazınıza qoşulmaq üçün Yaxınlıqdakı cihazlar icazəsini tələb edir</translation>
 <translation id="7875915731392087153">E-poçt yaradın</translation>
 <translation id="7876243839304621966">Hamısını silin</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb
index 66d1011..bfc6639 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb
@@ -983,6 +983,7 @@
 <translation id="6397616442223433927">دوباره آنلاین شدید</translation>
 <translation id="6401458660421980302">‏برای ارسال این برگه به دستگاهی دیگر، در آنجا به سیستم Chrome وارد شوید</translation>
 <translation id="6402652558933147609"><ph name="ERROR_CODE" /> در <ph name="VIOLATED_URL" /></translation>
+<translation id="6403371459378431832">داده‌هایتان را در همه دستگاه‌ها همگام‌سازی کنید</translation>
 <translation id="6404511346730675251">ویرایش نشانک</translation>
 <translation id="6406506848690869874">همگام‌سازی</translation>
 <translation id="6407224748847589805">اتصال به رایانه ممکن نیست. گزینه تأیید دیگری را امتحان کنید.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ky.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ky.xtb
index 419d6f3d..23d16be 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ky.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ky.xtb
@@ -557,6 +557,7 @@
 <translation id="4062305924942672200">Юридикалык маалымат</translation>
 <translation id="4084682180776658562">Кыстарма</translation>
 <translation id="4084712963632273211"><ph name="PUBLISHER_ORIGIN" /> веб сайтынан – <ph name="BEGIN_DEEMPHASIZED" />Google аркылуу жеткирилген<ph name="END_DEEMPHASIZED" /></translation>
+<translation id="409109920254068737">Бул планшет менен ушул QR коду көрүнүп турган түзмөккө кире аласыз.</translation>
 <translation id="4095146165863963773">Колдонмонун дайындары жок кылынсынбы?</translation>
 <translation id="4096227151372679484">Тематикасына жараша сакталган кыстармалар жарым экранда ачылды</translation>
 <translation id="4099578267706723511">Google'га колдонуу статистикасын жөнөтүп, ката жөнүндө кабарлап, Chrome өркүндөтүлүшүнө жардам бериңиз.</translation>
@@ -591,6 +592,7 @@
 <translation id="4262915912852657291"><ph name="BEGIN_BOLD" />Кайсы маалымат колдонулат:<ph name="END_BOLD" /> Бул түзмөктө Chrome аркылуу баш баккан жана көргөн сайттарыңыз.</translation>
 <translation id="4263656433980196874">Жардамчыга айтып издөөгө уруксат берүү интерфейси толук ачылды</translation>
 <translation id="4269820728363426813">Шилтеме дарегин көчүрүү</translation>
+<translation id="4283102315569707115">Демейки компьютердик версияларды суранасызбы?</translation>
 <translation id="4291407919474070700"><ph name="BEGIN_LINK" />Android'дин жөндөөлөрүнөн экранды кулпулоону күйгүзүңүз<ph name="END_LINK" /></translation>
 <translation id="4293476595220860475">Chrome'ду колдонуу менен, <ph name="BEGIN_TOS_LINK" />Google'дун Тейлөө шарттарына<ph name="END_TOS_LINK" /> жана <ph name="BEGIN_ATOS_LINK" />Google Chrome менен ChromeOS'тун Кошумча Тейлөө шарттарына<ph name="END_ATOS_LINK" /> макулдугуңузду билдиресиз. <ph name="BEGIN_PRIVACY_LINK" />Купуялык саясаты<ph name="END_PRIVACY_LINK" /> да колдонулат.</translation>
 <translation id="4296252229500326964">Жаңы жашыруун өтмөк</translation>
@@ -970,6 +972,7 @@
 <translation id="6342069812937806050">Жаңы эле</translation>
 <translation id="6343495912647200061">{SHIPPING_ADDRESS,plural, =1{<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="6357653805084533597">Бул телефон менен ушул QR коду көрүнүп турган түзмөккө кире аласыз.</translation>
 <translation id="6363990818884053551">Шайкештирүүнү баштоо үчүн өзүңүз экениңизди ырастаңыз</translation>
 <translation id="6364438453358674297">Сунуш таржымалдан алынып салынсынбы?</translation>
 <translation id="6380100320871303656">Көбүнчө Chrome сизди баш багат деп болжолдогон барактарды алдын ала жүктөйт. Бул параметр менен көбүрөөк маалымат колдонулушу мүмкүн.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_or.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_or.xtb
index 1bbe333..92e68a6 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_or.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_or.xtb
@@ -983,6 +983,7 @@
 <translation id="6397616442223433927">ପୁଣି ଅନଲାଇନ୍ ହୋଇଛି</translation>
 <translation id="6401458660421980302">ଏହି ଟାବକୁ ଅନ୍ୟ ଏକ ଡିଭାଇସକୁ ପଠାଇବା ପାଇଁ ସେଥିରେ Chromeକୁ ସାଇନ ଇନ କରନ୍ତୁ</translation>
 <translation id="6402652558933147609"><ph name="VIOLATED_URL" />ରେ <ph name="ERROR_CODE" /></translation>
+<translation id="6403371459378431832">ସମସ୍ତ ଡିଭାଇସରେ ଆପଣଙ୍କ ଡାଟା ସିଙ୍କ କରନ୍ତୁ</translation>
 <translation id="6404511346730675251">ବୁକ୍‍ମାର୍କ ଏଡିଟ୍ କରନ୍ତୁ</translation>
 <translation id="6406506848690869874">ସିଙ୍କ୍‌ କରନ୍ତୁ</translation>
 <translation id="6407224748847589805">ଆପଣଙ୍କ କମ୍ପ୍ୟୁଟରରେ ସଂଯୋଗ କରାଯାଇପାରିବ ନାହିଁ। ଅନ୍ୟ ଏକ ଯାଞ୍ଚକରଣ ବିକଳ୍ପ ବ୍ୟବହାର କରି ଦେଖନ୍ତୁ।</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ta.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ta.xtb
index 51379866..76b0f4d 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ta.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ta.xtb
@@ -557,6 +557,7 @@
 <translation id="4062305924942672200">சட்டப்பூர்வத் தகவல்</translation>
 <translation id="4084682180776658562">புக்மார்க்</translation>
 <translation id="4084712963632273211">வெளியிடுவது: <ph name="PUBLISHER_ORIGIN" /> (<ph name="BEGIN_DEEMPHASIZED" />Google வழங்குவது<ph name="END_DEEMPHASIZED" />)</translation>
+<translation id="409109920254068737">இந்த QR குறியீட்டைக் காட்டும் சாதனத்தில் உள்நுழைய இந்த டேப்லெட்டைப் பயன்படுத்தலாம்.</translation>
 <translation id="4095146165863963773">பயன்பாட்டுத் தரவை நீக்கவா?</translation>
 <translation id="4096227151372679484">புக்மார்க் சேமிப்புச் செயல்முறை பாதித் திரையில் காட்டப்பட்டுள்ளது</translation>
 <translation id="4099578267706723511">பயன்பாட்டுப் புள்ளிவிவரங்களையும், சிதைவு அறிக்கைகளையும் Googleளுக்கு அனுப்புவதன் மூலம் Chromeஐ மேலும் சிறப்பானதாக்க உதவவும்.</translation>
@@ -591,6 +592,7 @@
 <translation id="4262915912852657291"><ph name="BEGIN_BOLD" />எந்தெந்தத் தரவு பயன்படுத்தப்படுகின்றது?<ph name="END_BOLD" /> நீங்கள் இதுவரை இணையத்தில் பார்த்தவை மற்றும் Chrome மூலம் நீங்கள் இந்தச் சாதனத்தில் பார்த்த தளங்களின் பதிவு.</translation>
 <translation id="4263656433980196874">குரல் தேடலுக்கு Assistantடைப் பயன்படுத்துவதற்கான ஒப்புதல் UI முழுத் திரையில் காட்டப்படுகிறது</translation>
 <translation id="4269820728363426813">இணைப்பு முகவரியை நகலெடு</translation>
+<translation id="4283102315569707115">இயல்பாக டெஸ்க்டாப் தளங்களுக்குக் கோரிக்கை விடுக்கவா?</translation>
 <translation id="4291407919474070700"><ph name="BEGIN_LINK" />Android அமைப்புகளில் திரைப் பூட்டு அம்சத்தை இயக்கவும்<ph name="END_LINK" /></translation>
 <translation id="4293476595220860475">Chromeமைப் பயன்படுத்துவதன் மூலம் <ph name="BEGIN_TOS_LINK" />Google சேவை விதிமுறைகள்<ph name="END_TOS_LINK" />, <ph name="BEGIN_ATOS_LINK" />Google Chrome &amp; ChromeOS தொடர்பான கூடுதல் சேவை விதிமுறைகள்<ph name="END_ATOS_LINK" /> ஆகியவற்றை ஏற்கிறீர்கள். <ph name="BEGIN_PRIVACY_LINK" />தனியுரிமைக் கொள்கையையும்<ph name="END_PRIVACY_LINK" /> ஏற்கிறீர்கள்.</translation>
 <translation id="4296252229500326964">புதிய மறைநிலைத் தாவல்</translation>
@@ -970,6 +972,7 @@
 <translation id="6342069812937806050">இப்போது</translation>
 <translation id="6343495912647200061">{SHIPPING_ADDRESS,plural, =1{<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="6357653805084533597">இந்த QR குறியீட்டைக் காட்டும் சாதனத்தில் உள்நுழைய இந்த ஃபோனைப் பயன்படுத்தலாம்.</translation>
 <translation id="6363990818884053551">ஒத்திசைவைத் தொடங்க, இது நீங்கள்தான் என உறுதிசெய்யவும்</translation>
 <translation id="6364438453358674297">வரலாற்றிலிருந்து பரிந்துரையை அகற்றவா?</translation>
 <translation id="6380100320871303656">நீங்கள் பார்வையிடக்கூடும் என Chrome கணிக்கும் பக்கங்களைப் பெரும்பாலும் முன்கூட்டியே ஏற்றும். இந்த அமைப்பின் காரணமாக டேட்டா உபயோகம் அதிகரிக்கக்கூடும்.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ur.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ur.xtb
index 49ca91a..eaf7503 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ur.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ur.xtb
@@ -986,6 +986,7 @@
 <translation id="6397616442223433927">نیٹ ورک کنکشن بحال ہو گیا</translation>
 <translation id="6401458660421980302">‏اس ٹیب کو کسی اور آلے میں بھیجنے کے لیے وہاں Chrome میں سائن ان کریں</translation>
 <translation id="6402652558933147609"><ph name="VIOLATED_URL" /> پر <ph name="ERROR_CODE" /></translation>
+<translation id="6403371459378431832">تمام آلات پر اپنے ڈیٹا کی مطابقت پذیری کریں</translation>
 <translation id="6404511346730675251">بک مارک میں ترمیم کریں</translation>
 <translation id="6406506848690869874">مطابقت پذیر بنائیں</translation>
 <translation id="6407224748847589805">آپ کے کمپیوٹر سے منسلک نہیں ہو سکا۔ توثیق کا دوسرا اختیار آزمائیں۔</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_uz.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_uz.xtb
index f02a2b00..af965c7 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_uz.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_uz.xtb
@@ -433,6 +433,7 @@
 <translation id="3290249595466894471">Sahifa, yuklanma, kengaytma harakati va tizim axboroti parchalarini ham yangi tahdidlarni aniqlashga yordam berishi uchun yuboradi</translation>
 <translation id="3297344142967351106">Ovozli yordam</translation>
 <translation id="3303414029551471755">Yuklab olinsinmi?</translation>
+<translation id="3305795716056605962">“Boshqa parametrlar” tugmasi orqali sahifalarni tajrima qiling</translation>
 <translation id="3334729583274622784">Fayl kengaytmasi oʻzgartirilsinmi?</translation>
 <translation id="3341262203274374114">Obuna bekor qilinmadi. Xatolik yuz berdi.</translation>
 <translation id="3359667936385849800">Joriy xizmat provayderingiz orqali</translation>
@@ -557,6 +558,7 @@
 <translation id="4062305924942672200">Yuridik ma’lumot</translation>
 <translation id="4084682180776658562">Xatcho‘p</translation>
 <translation id="4084712963632273211">Muallifi: <ph name="PUBLISHER_ORIGIN" /> – <ph name="BEGIN_DEEMPHASIZED" />Google tomonidan taqdim etildi<ph name="END_DEEMPHASIZED" /></translation>
+<translation id="409109920254068737">Bu QR kod chiqqan qurilma hisobiga shu planshet orqali kirish mumkin.</translation>
 <translation id="4095146165863963773">Bu ilova maʼlumotlari oʻchirilsinmi?</translation>
 <translation id="4096227151372679484">Bukmarklarni saqlash jarayoni yarim balandlikda ochiq</translation>
 <translation id="4099578267706723511">Google’ga foydalanish statistikasi va ishdan chiqish hisobotlarini jo‘natish orqali Chrome’ning takomillashtirishga yordam bering</translation>
@@ -591,6 +593,7 @@
 <translation id="4262915912852657291"><ph name="BEGIN_BOLD" />Qanday maʼlumotlar ishlatilishi:<ph name="END_BOLD" /> Bu qurilmada Chrome orqali siz kirgan saytlar tarixidagi qaydlar.</translation>
 <translation id="4263656433980196874">Assistent ovozli qidiruv paneli interfeysi toʻliq hajmda ochildi</translation>
 <translation id="4269820728363426813">Havola manzilini nusxalash</translation>
+<translation id="4283102315569707115">Standart holatda saytning kompyuter versiyasini ochish soʻralsinmi?</translation>
 <translation id="4291407919474070700"><ph name="BEGIN_LINK" />Android sozlamalari orqali ekran qulfini yoqing<ph name="END_LINK" /></translation>
 <translation id="4293476595220860475">Siz Chrome brauzeridan foydalanish orqali <ph name="BEGIN_TOS_LINK" />Google Xizmat shartlari<ph name="END_TOS_LINK" /> hamda <ph name="BEGIN_ATOS_LINK" />Google Chrome va ChromeOS Qoʻshimcha xizmat shartlari<ph name="END_ATOS_LINK" /> uchun rozilik berasiz. <ph name="BEGIN_PRIVACY_LINK" />Maxfiylik siyosati<ph name="END_PRIVACY_LINK" /> ham tatbiq etiladi.</translation>
 <translation id="4296252229500326964">Yangi inkognito varaq</translation>
@@ -970,6 +973,7 @@
 <translation id="6342069812937806050">Hozirgina</translation>
 <translation id="6343495912647200061">{SHIPPING_ADDRESS,plural, =1{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 va yana <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> ta}other{<ph name="SHIPPING_ADDRESS_PREVIEW" />\u2026 va yana <ph name="NUMBER_OF_ADDITIONAL_ADDRESSES" /> ta}}</translation>
 <translation id="6345878117466430440">Ochildi deb belgilash</translation>
+<translation id="6357653805084533597">Bu QR kod chiqqan qurilma hisobiga shu telefon orqali kirish mumkin.</translation>
 <translation id="6363990818884053551">Sinxronlashni boshlash uchun shaxsingizni tasdiqlang</translation>
 <translation id="6364438453358674297">Bu taklif tarixdan o‘chirib tashlansinmi?</translation>
 <translation id="6380100320871303656">Aksariyat oldindan yuklanadigan sahifalar – Chrome sizni ularga kirishni istaydi, deb hisoblagan sahifalardir. Bu sozlama ortiqcha trafik sarfiga sabab boʻlishi mumkin.</translation>
@@ -1265,6 +1269,7 @@
 <translation id="7853202427316060426">Harakat</translation>
 <translation id="7857691613771368249">Fayllarni saqlash uchun ruxsat soʻralsin</translation>
 <translation id="7859988229622350291">Hech qachon tarjima qilinmasin</translation>
+<translation id="7866213166286285359">Sahifalarni bu yerda tarjima qiling</translation>
 <translation id="78707286264420418">Qurilmangizga ulanishi uchun <ph name="PRODUCT_NAME" /> yaqin-atrofdagi qurilmalarga ulanish ruxsatiga ega emas</translation>
 <translation id="7875915731392087153">Email yaratish</translation>
 <translation id="7876243839304621966">Hammasini olib tashlash</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-HK.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-HK.xtb
index 393ddc47..304fbac4 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-HK.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-HK.xtb
@@ -986,6 +986,7 @@
 <translation id="6397616442223433927">已重新連線</translation>
 <translation id="6401458660421980302">如要將此分頁傳送至其他裝置,請在該裝置上登入 Chrome</translation>
 <translation id="6402652558933147609"><ph name="ERROR_CODE" /> (<ph name="VIOLATED_URL" />)</translation>
+<translation id="6403371459378431832">同步處理所有裝置上的資料</translation>
 <translation id="6404511346730675251">編輯書籤</translation>
 <translation id="6406506848690869874">同步處理</translation>
 <translation id="6407224748847589805">無法連接電腦。請改用其他驗證選項。</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb
index a560ac5..335de60a 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb
@@ -983,6 +983,7 @@
 <translation id="6397616442223433927">已恢復連線</translation>
 <translation id="6401458660421980302">如要將這個分頁傳送到其他裝置,請在該裝置上登入 Chrome</translation>
 <translation id="6402652558933147609"><ph name="VIOLATED_URL" /> 上發生 <ph name="ERROR_CODE" /> 錯誤</translation>
+<translation id="6403371459378431832">同步處理所有裝置上的資料</translation>
 <translation id="6404511346730675251">編輯書籤</translation>
 <translation id="6406506848690869874">同步</translation>
 <translation id="6407224748847589805">無法連線至你的電腦。請改用其他驗證選項。</translation>
diff --git a/chrome/browser/ui/views/frame/browser_desktop_window_tree_host_lacros.cc b/chrome/browser/ui/views/frame/browser_desktop_window_tree_host_lacros.cc
index b93a39a..611cb8d 100644
--- a/chrome/browser/ui/views/frame/browser_desktop_window_tree_host_lacros.cc
+++ b/chrome/browser/ui/views/frame/browser_desktop_window_tree_host_lacros.cc
@@ -15,8 +15,16 @@
 #include "ui/compositor/layer.h"
 #include "ui/platform_window/extensions/wayland_extension.h"
 #include "ui/platform_window/platform_window.h"
-#include "ui/views/layout/layout_provider.h"
-#include "ui/views/widget/desktop_aura/desktop_native_widget_aura.h"
+
+namespace {
+
+bool ShouldHaveRoundedCorners(chromeos::WindowStateType window_state) {
+  return window_state == chromeos::WindowStateType::kNormal ||
+         window_state == chromeos::WindowStateType::kDefault ||
+         window_state == chromeos::WindowStateType::kFloated;
+}
+
+}  // namespace
 
 ////////////////////////////////////////////////////////////////////////////////
 // BrowserDesktopWindowTreeHostLacros, public:
@@ -50,7 +58,9 @@
       view->GetWidget()->GetWindowBoundsInScreen().size();
 
   std::vector<gfx::Rect> opaque_region;
-  if (showing_frame) {
+  if (showing_frame &&
+      ShouldHaveRoundedCorners(browser_view_->GetNativeWindow()->GetProperty(
+          chromeos::kWindowStateTypeKey))) {
     const float corner_radius = chromeos::kTopCornerRadiusWhenRestored;
     GetContentWindow()->layer()->SetRoundedCornerRadius(
         gfx::RoundedCornersF(corner_radius, corner_radius, 0, 0));
diff --git a/chrome/browser/ui/views/media_router/media_remoting_dialog_view.cc b/chrome/browser/ui/views/media_router/media_remoting_dialog_view.cc
index cafe4d4..21ef38c 100644
--- a/chrome/browser/ui/views/media_router/media_remoting_dialog_view.cc
+++ b/chrome/browser/ui/views/media_router/media_remoting_dialog_view.cc
@@ -37,8 +37,10 @@
   Hide();  // Close the previous dialog if it is still showing.
 
   Browser* const browser = chrome::FindBrowserWithWebContents(web_contents_);
-  if (!browser)
+  if (!browser) {
+    std::move(permission_callback).Run(false);
     return false;
+  }
   views::View* const icon_view =
       BrowserView::GetBrowserViewForBrowser(browser)->toolbar()->cast_button();
   Profile* const profile =
diff --git a/chrome/browser/ui/webui/settings/chromeos/cups_printers_handler.cc b/chrome/browser/ui/webui/settings/chromeos/cups_printers_handler.cc
index 4ae582a..4fe2b06 100644
--- a/chrome/browser/ui/webui/settings/chromeos/cups_printers_handler.cc
+++ b/chrome/browser/ui/webui/settings/chromeos/cups_printers_handler.cc
@@ -40,6 +40,7 @@
 #include "chrome/common/chrome_paths.h"
 #include "chrome/common/pref_names.h"
 #include "chromeos/ash/components/dbus/debug_daemon/debug_daemon_client.h"
+#include "chromeos/printing/cups_printer_status.h"
 #include "chromeos/printing/ppd_line_reader.h"
 #include "chromeos/printing/printer_configuration.h"
 #include "chromeos/printing/printer_translator.h"
@@ -499,7 +500,7 @@
       !IsValidPrinterUri(uri)) {
     // Run the failure callback.
     OnAutoconfQueried(callback_id, PrinterQueryResult::kUnknownFailure,
-                      printing::PrinterStatus(), "", {}, false);
+                      printing::PrinterStatus(), "", {}, false, {});
     return;
   }
 
@@ -512,10 +513,11 @@
     const std::string& callback_id,
     Printer printer,
     PrinterQueryResult result,
-    const printing::PrinterStatus& printer_status,
+    const printing::PrinterStatus& /*printer_status*/,
     const std::string& make_and_model,
-    const std::vector<std::string>& document_formats,
-    bool ipp_everywhere) {
+    const std::vector<std::string>& /*document_formats*/,
+    bool ipp_everywhere,
+    const PrinterAuthenticationInfo& /*auth_info*/) {
   RecordIppQueryResult(result);
 
   const bool success = result == PrinterQueryResult::kSuccess;
@@ -552,10 +554,11 @@
 void CupsPrintersHandler::OnAutoconfQueried(
     const std::string& callback_id,
     PrinterQueryResult result,
-    const printing::PrinterStatus& printer_status,
+    const printing::PrinterStatus& /*printer_status*/,
     const std::string& make_and_model,
     const std::vector<std::string>& document_formats,
-    bool ipp_everywhere) {
+    bool ipp_everywhere,
+    const PrinterAuthenticationInfo& /*auth_info*/) {
   RecordIppQueryResult(result);
   const bool success = result == PrinterQueryResult::kSuccess;
 
diff --git a/chrome/browser/ui/webui/settings/chromeos/cups_printers_handler.h b/chrome/browser/ui/webui/settings/chromeos/cups_printers_handler.h
index 62b64a3..8d2624e 100644
--- a/chrome/browser/ui/webui/settings/chromeos/cups_printers_handler.h
+++ b/chrome/browser/ui/webui/settings/chromeos/cups_printers_handler.h
@@ -39,6 +39,9 @@
 class Profile;
 
 namespace chromeos {
+
+struct PrinterAuthenticationInfo;
+
 namespace settings {
 
 // Chrome OS CUPS printing settings page UI handler.
@@ -88,13 +91,15 @@
   // printer. |make_and_model| is the unparsed printer-make-and-model string.
   // |ipp_everywhere| indicates if configuration using the CUPS IPP Everywhere
   // driver should be attempted. If |result| is not SUCCESS, the values of
-  // |printer_status|, |make_and_model|, and |ipp_everywhere| are not specified.
+  // |printer_status|, |make_and_model|, |document_formats|, |ipp_everywhere|,
+  // and |auth_info| are not specified.
   void OnAutoconfQueried(const std::string& callback_id,
                          printing::PrinterQueryResult result,
                          const printing::PrinterStatus& printer_status,
                          const std::string& make_and_model,
                          const std::vector<std::string>& document_formats,
-                         bool ipp_everywhere);
+                         bool ipp_everywhere,
+                         const PrinterAuthenticationInfo& auth_info);
 
   // Handles the callback for HandleGetPrinterInfo for a discovered printer.
   void OnAutoconfQueriedDiscovered(
@@ -104,7 +109,8 @@
       const printing::PrinterStatus& printer_status,
       const std::string& make_and_model,
       const std::vector<std::string>& document_formats,
-      bool ipp_everywhere);
+      bool ipp_everywhere,
+      const PrinterAuthenticationInfo& auth_info);
 
   // Callback for PPD matching attempts;
   void OnPpdResolved(const std::string& callback_id,
diff --git a/chrome/build/linux.pgo.txt b/chrome/build/linux.pgo.txt
index 133c8a3a..f4e53f2 100644
--- a/chrome/build/linux.pgo.txt
+++ b/chrome/build/linux.pgo.txt
@@ -1 +1 @@
-chrome-linux-main-1660995807-4bbc9b61e7948760260d866f8ac4021f5e60fecb.profdata
+chrome-linux-main-1661125664-a4d78e7c5fe8a84686282d78cdf857ace60aadb7.profdata
diff --git a/chrome/build/mac-arm.pgo.txt b/chrome/build/mac-arm.pgo.txt
index fcb5198..45274194 100644
--- a/chrome/build/mac-arm.pgo.txt
+++ b/chrome/build/mac-arm.pgo.txt
@@ -1 +1 @@
-chrome-mac-arm-main-1660995807-950a99a1f2d946f145b681be49da2bcb2eafeb78.profdata
+chrome-mac-arm-main-1661104277-820f9300024ebb843d5d204c5c252df830dcd4f8.profdata
diff --git a/chrome/build/mac.pgo.txt b/chrome/build/mac.pgo.txt
index a61c974..77998d5 100644
--- a/chrome/build/mac.pgo.txt
+++ b/chrome/build/mac.pgo.txt
@@ -1 +1 @@
-chrome-mac-main-1660995807-13a4017a57bfade5f665ff755d76e0e8ae5f6ec4.profdata
+chrome-mac-main-1661104277-7991b145d7fbc693cad582235e1601cd8b45839c.profdata
diff --git a/chrome/build/win32.pgo.txt b/chrome/build/win32.pgo.txt
index 75829334..3d46fee 100644
--- a/chrome/build/win32.pgo.txt
+++ b/chrome/build/win32.pgo.txt
@@ -1 +1 @@
-chrome-win32-main-1660995807-b97690f864b4a7be6844eb1dcbd47d62349710de.profdata
+chrome-win32-main-1661115352-348059e71f0ed1f4b2911d5c49cfec18f4c5695b.profdata
diff --git a/chrome/build/win64.pgo.txt b/chrome/build/win64.pgo.txt
index 6d455e9b..704d8d5 100644
--- a/chrome/build/win64.pgo.txt
+++ b/chrome/build/win64.pgo.txt
@@ -1 +1 @@
-chrome-win64-main-1660995807-beb177a92493776afd52633c6f842cc9b24a13ed.profdata
+chrome-win64-main-1661115352-a2a650c3314bbe068765a60232552e7220881102.profdata
diff --git a/chromeos/printing/cups_printer_status.cc b/chromeos/printing/cups_printer_status.cc
index d58493c..fe86fa4 100644
--- a/chromeos/printing/cups_printer_status.cc
+++ b/chromeos/printing/cups_printer_status.cc
@@ -54,4 +54,9 @@
   status_reasons_.emplace(CupsPrinterStatusReason(reason, severity));
 }
 
+void CupsPrinterStatus::SetAuthenticationInfo(
+    const PrinterAuthenticationInfo& auth_info) {
+  auth_info_ = auth_info;
+}
+
 }  // namespace chromeos
diff --git a/chromeos/printing/cups_printer_status.h b/chromeos/printing/cups_printer_status.h
index 56444b8..cc5d384 100644
--- a/chromeos/printing/cups_printer_status.h
+++ b/chromeos/printing/cups_printer_status.h
@@ -14,6 +14,13 @@
 
 namespace chromeos {
 
+// Holds information about authentication required by a printer.
+struct PrinterAuthenticationInfo {
+  // URI of OAuth2 Authorization Server and scope. Empty strings if not set.
+  std::string oauth_server;
+  std::string oauth_scope;
+};
+
 // A container for the results of a printer status query. A printer status query
 // can return multiple error reasons so CupsPrinterStatus contains multiple
 // CupsPrinterStatusReasons. |timestamp| is set at the time of CupsPrinterStatus
@@ -65,15 +72,22 @@
   // printer.
   const base::flat_set<CupsPrinterStatusReason>& GetStatusReasons() const;
 
+  const PrinterAuthenticationInfo& GetAuthenticationInfo() const {
+    return auth_info_;
+  }
+
   const base::Time& GetTimestamp() const;
 
   // Adds a new CupsPrinterStatusReason to an existing CupsPrinterStatus.
   void AddStatusReason(const CupsPrinterStatusReason::Reason& reason,
                        const CupsPrinterStatusReason::Severity& severity);
 
+  void SetAuthenticationInfo(const PrinterAuthenticationInfo& auth_info);
+
  private:
   std::string printer_id_;
   base::flat_set<CupsPrinterStatusReason> status_reasons_;
+  PrinterAuthenticationInfo auth_info_;
   base::Time timestamp_;
 };
 
diff --git a/chromeos/profiles/atom.afdo.newest.txt b/chromeos/profiles/atom.afdo.newest.txt
index fcd0ba8..1ae58bc 100644
--- a/chromeos/profiles/atom.afdo.newest.txt
+++ b/chromeos/profiles/atom.afdo.newest.txt
@@ -1 +1 @@
-chromeos-chrome-amd64-atom-106-5226.0-1660558034-benchmark-106.0.5249.4-r1-redacted.afdo.xz
+chromeos-chrome-amd64-atom-106-5226.0-1660558034-benchmark-106.0.5249.5-r1-redacted.afdo.xz
diff --git a/chromeos/profiles/bigcore.afdo.newest.txt b/chromeos/profiles/bigcore.afdo.newest.txt
index c7507b5..acdf515 100644
--- a/chromeos/profiles/bigcore.afdo.newest.txt
+++ b/chromeos/profiles/bigcore.afdo.newest.txt
@@ -1 +1 @@
-chromeos-chrome-amd64-bigcore-106-5195.24-1660556265-benchmark-106.0.5249.4-r1-redacted.afdo.xz
+chromeos-chrome-amd64-bigcore-106-5195.24-1660556265-benchmark-106.0.5249.5-r1-redacted.afdo.xz
diff --git a/chromeos/strings/chromeos_strings_az.xtb b/chromeos/strings/chromeos_strings_az.xtb
index 56c6f6e..a7c943c 100644
--- a/chromeos/strings/chromeos_strings_az.xtb
+++ b/chromeos/strings/chromeos_strings_az.xtb
@@ -67,6 +67,7 @@
 <translation id="152892567002884378">Səsi artırın</translation>
 <translation id="1555130319947370107">Mavi</translation>
 <translation id="155865706765934889">Taçped</translation>
+<translation id="1561927818299383735">fon işığı rəngi</translation>
 <translation id="1565038567006703504"><ph name="DEVICE_NAME" /> cihazını güncəlləmək mümkün deyil</translation>
 <translation id="1567064801249837505">Albomlar</translation>
 <translation id="1572585716423026576">Divar kağızı kimi ayarlayın</translation>
@@ -436,6 +437,7 @@
 <translation id="5267975978099728568"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="ERROR_STATUS" /></translation>
 <translation id="5275828089655680674">Rejimləri yenidən işə salın</translation>
 <translation id="5286252187236914003">L2TP/IPsec</translation>
+<translation id="5286263799730375393">arxa işıq rəngi</translation>
 <translation id="5294769550414936029">versiya <ph name="MILESTONE_VERSION" /></translation>
 <translation id="5300814202279832142">Pəncərəni masaya keçirin</translation>
 <translation id="5304899856529773394">EVDO</translation>
@@ -496,6 +498,7 @@
 <translation id="5895138241574237353">Yenidən başladın</translation>
 <translation id="5901630391730855834">Sarı</translation>
 <translation id="5903200662178656908">Cihaz klaviatura və maus kombinidir.</translation>
+<translation id="5907649332524363701">açar rəngi</translation>
 <translation id="5916084858004523819">Qadağan olunub</translation>
 <translation id="5916664084637901428">Aktiv</translation>
 <translation id="5921506667911082617">{COUNT,plural, =1{Faylınız uğurla skanlandı və <ph name="LINK_BEGIN" /><ph name="FOLDER_NAME" /><ph name="LINK_END" /> qovluğunda saxlanıldı.}other{Fayllarınız uğurla skanlandı və <ph name="LINK_BEGIN" /><ph name="FOLDER_NAME" /><ph name="LINK_END" /> qovluğunda saxlanıldı.}}</translation>
@@ -597,6 +600,7 @@
 <translation id="6760706756348334449">Səsi azaldın</translation>
 <translation id="6766275201586212568">DNS həlləri alınmadı</translation>
 <translation id="6768237774506518020">DNS həllinin alınmama faizi yüksəkdir</translation>
+<translation id="6791471867139427246">klaviatura işıq rəngi</translation>
 <translation id="680983167891198932">Açar</translation>
 <translation id="6816797338148849397">Seçiminizlə əlaqəli məlumat əlçatandır. Giriş üçün Yuxarı ox düyməsini istifadə edin.</translation>
 <translation id="6853312040151791195">Deşarj faizi</translation>
@@ -642,6 +646,7 @@
 <translation id="7302860742311162920">ICCID</translation>
 <translation id="7305884605064981971">EDGE</translation>
 <translation id="7308203371573257315">Chromebook yardım forumunda ekspertlərdən soruşun</translation>
+<translation id="7311368985037279727">klaviatura rəngi</translation>
 <translation id="7319430975418800333">A3</translation>
 <translation id="7343581795491695942"><ph name="QUERY_TEXT" />; <ph name="RESULT_TEXT" />; Google Axtarışda nəticəni görmək üçün Axtarış və Boşluq düyməsinə basın.</translation>
 <translation id="7343649194310845056">Şəbəkə Cihazları</translation>
diff --git a/chromeos/strings/chromeos_strings_km.xtb b/chromeos/strings/chromeos_strings_km.xtb
index 0af7009..2baf5d3 100644
--- a/chromeos/strings/chromeos_strings_km.xtb
+++ b/chromeos/strings/chromeos_strings_km.xtb
@@ -67,6 +67,7 @@
 <translation id="152892567002884378">បង្កើន​សំឡេង</translation>
 <translation id="1555130319947370107">ខៀវ</translation>
 <translation id="155865706765934889">ផ្ទាំងប៉ះ</translation>
+<translation id="1561927818299383735">ពណ៌ពន្លឺពីក្រោម</translation>
 <translation id="1565038567006703504">មិនអាចដំឡើងកំណែ <ph name="DEVICE_NAME" /> បានទេ</translation>
 <translation id="1567064801249837505">អាល់ប៊ុម</translation>
 <translation id="1572585716423026576">កំណត់​ជា​ផ្ទាំង​រូបភាព</translation>
@@ -436,6 +437,7 @@
 <translation id="5267975978099728568"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="ERROR_STATUS" /></translation>
 <translation id="5275828089655680674">ដំណើរការ​ទម្លាប់ឡើងវិញ</translation>
 <translation id="5286252187236914003">L2TP/IPsec</translation>
+<translation id="5286263799730375393">ពណ៌ពន្លឺចាំងពីក្រោយ</translation>
 <translation id="5294769550414936029">កំណែ <ph name="MILESTONE_VERSION" /></translation>
 <translation id="5300814202279832142">ផ្លាស់ទី​វិនដូទៅតុ</translation>
 <translation id="5304899856529773394">EVDO</translation>
@@ -496,6 +498,7 @@
 <translation id="5895138241574237353">ចាប់ផ្តើមឡើងវិញ</translation>
 <translation id="5901630391730855834">លឿង</translation>
 <translation id="5903200662178656908">ឧបករណ៍គឺជាការរួមបញ្ចូលគ្នារវាងក្ដារចុច និងកណ្ដុរ។</translation>
+<translation id="5907649332524363701">ពណ៌គ្រាប់ចុច</translation>
 <translation id="5916084858004523819">ត្រូវបាន​ហាមឃាត់</translation>
 <translation id="5916664084637901428">បើក</translation>
 <translation id="5921506667911082617">{COUNT,plural, =1{ឯកសាររបស់អ្នកត្រូវបានស្កេន និងរក្សាទុកនៅក្នុង <ph name="LINK_BEGIN" /><ph name="FOLDER_NAME" /><ph name="LINK_END" /> ដោយជោគជ័យហើយ។}other{ឯកសាររបស់អ្នកត្រូវបានស្កេន និងរក្សាទុកនៅក្នុង <ph name="LINK_BEGIN" /><ph name="FOLDER_NAME" /><ph name="LINK_END" /> ដោយជោគជ័យហើយ។}}</translation>
@@ -597,6 +600,7 @@
 <translation id="6760706756348334449">បន្ថយ​សំឡេង</translation>
 <translation id="6766275201586212568">កម្រិតច្បាស់ DNS ដែលមិនដំណើរការ</translation>
 <translation id="6768237774506518020">អត្រាមិនដំណើរការ​នៃកម្រិតច្បាស់ DNS ខ្ពស់</translation>
+<translation id="6791471867139427246">ពណ៌ពន្លឺក្តារចុច</translation>
 <translation id="680983167891198932">សោ</translation>
 <translation id="6816797338148849397">ព័ត៌មានពាក់ព័ន្ធនឹងការផ្ដល់ជូនការជ្រើសរើសរបស់អ្នក។ ប្រើគ្រាប់ចុចព្រួញឡើងលើ ដើម្បីចូលប្រើ។</translation>
 <translation id="6853312040151791195">អត្រា​ឈប់សាកថ្ម</translation>
@@ -642,6 +646,7 @@
 <translation id="7302860742311162920">ICCID</translation>
 <translation id="7305884605064981971">EDGE</translation>
 <translation id="7308203371573257315">សួរ​អ្នកជំនាញ​នៅក្នុង​វេទិកា​ជំនួយ Chromebook</translation>
+<translation id="7311368985037279727">ពណ៌ក្ដារចុច</translation>
 <translation id="7319430975418800333">A3</translation>
 <translation id="7343581795491695942"><ph name="QUERY_TEXT" />; <ph name="RESULT_TEXT" />; ចុច "ស្វែងរក" រួមជាមួយ "ដកឃ្លា" ដើម្បីមើល​លទ្ធផល​នៅក្នុង​កម្មវិធីស្វែងរក​នៅលើ Google។</translation>
 <translation id="7343649194310845056">ឧបករណ៍​បណ្ដាញ</translation>
diff --git a/chromeos/strings/chromeos_strings_lt.xtb b/chromeos/strings/chromeos_strings_lt.xtb
index f6ceab1..1eb3c47 100644
--- a/chromeos/strings/chromeos_strings_lt.xtb
+++ b/chromeos/strings/chromeos_strings_lt.xtb
@@ -67,6 +67,7 @@
 <translation id="152892567002884378">Padidinti garsumą</translation>
 <translation id="1555130319947370107">Mėlyna</translation>
 <translation id="155865706765934889">Jutiklinis kilimėlis</translation>
+<translation id="1561927818299383735">fono spalva</translation>
 <translation id="1565038567006703504">Nepavyksta atnaujinti įrenginio „<ph name="DEVICE_NAME" />“</translation>
 <translation id="1567064801249837505">Albumai</translation>
 <translation id="1572585716423026576">Nustatyti kaip foną</translation>
@@ -437,6 +438,7 @@
 <translation id="5267975978099728568"><ph name="DOCUMENT_TITLE" />, „<ph name="PRINTER_NAME" />“, <ph name="CREATION_TIME" />, <ph name="ERROR_STATUS" /></translation>
 <translation id="5275828089655680674">Iš naujo vykdyti veiksmų sekas</translation>
 <translation id="5286252187236914003">L2TP / „IPsec“</translation>
+<translation id="5286263799730375393">apšvietimo spalva</translation>
 <translation id="5294769550414936029"><ph name="MILESTONE_VERSION" /> versija</translation>
 <translation id="5300814202279832142">Perkelti langą į darbalaukį</translation>
 <translation id="5304899856529773394">EVDO</translation>
@@ -497,6 +499,7 @@
 <translation id="5895138241574237353">Paleisti iš naujo</translation>
 <translation id="5901630391730855834">Geltona</translation>
 <translation id="5903200662178656908">Įrenginį sudaro klaviatūra ir pelė.</translation>
+<translation id="5907649332524363701">klavišo spalva</translation>
 <translation id="5916084858004523819">Draudžiama</translation>
 <translation id="5916664084637901428">Įjungta</translation>
 <translation id="5921506667911082617">{COUNT,plural, =1{Failas sėkmingai nuskaitytas ir išsaugotas aplanke <ph name="LINK_BEGIN" />„<ph name="FOLDER_NAME" />“<ph name="LINK_END" />.}one{Failai sėkmingai nuskaityti ir išsaugoti aplanke <ph name="LINK_BEGIN" />„<ph name="FOLDER_NAME" />“<ph name="LINK_END" />.}few{Failai sėkmingai nuskaityti ir išsaugoti aplanke <ph name="LINK_BEGIN" />„<ph name="FOLDER_NAME" />“<ph name="LINK_END" />.}many{Failai sėkmingai nuskaityti ir išsaugoti aplanke <ph name="LINK_BEGIN" />„<ph name="FOLDER_NAME" />“<ph name="LINK_END" />.}other{Failai sėkmingai nuskaityti ir išsaugoti aplanke <ph name="LINK_BEGIN" />„<ph name="FOLDER_NAME" />“<ph name="LINK_END" />.}}</translation>
@@ -598,6 +601,7 @@
 <translation id="6760706756348334449">Sumažinti garsumą</translation>
 <translation id="6766275201586212568">Nepavykę DNS nustatymo veiksmai</translation>
 <translation id="6768237774506518020">Aukštas DNS nustatymo trikčių rodiklis</translation>
+<translation id="6791471867139427246">klaviatūros šviesos spalva</translation>
 <translation id="680983167891198932">Raktas</translation>
 <translation id="6816797338148849397">Pasiekiama su pasirinkimu susijusi informacija Norėdami pasiekti, spustelėkite rodyklės aukštyn klavišą.</translation>
 <translation id="6853312040151791195">Išsikrovimo rodiklis</translation>
@@ -643,6 +647,7 @@
 <translation id="7302860742311162920">ICCID</translation>
 <translation id="7305884605064981971">EDGE</translation>
 <translation id="7308203371573257315">Paklauskite ekspertų „Chromebook“ pagalbos forume</translation>
+<translation id="7311368985037279727">klaviatūros spalva</translation>
 <translation id="7319430975418800333">A3</translation>
 <translation id="7343581795491695942"><ph name="QUERY_TEXT" />; <ph name="RESULT_TEXT" />; paspauskite paieškos ir tarpo klavišus, kad rezultatą galėtumėte peržiūrėti naudodami „Google“ paiešką.</translation>
 <translation id="7343649194310845056">Tinklo įrenginiai</translation>
diff --git a/chromeos/strings/chromeos_strings_mn.xtb b/chromeos/strings/chromeos_strings_mn.xtb
index 82e217b..3c41eddf 100644
--- a/chromeos/strings/chromeos_strings_mn.xtb
+++ b/chromeos/strings/chromeos_strings_mn.xtb
@@ -67,6 +67,7 @@
 <translation id="152892567002884378">Дууны түвшинг нэмэх</translation>
 <translation id="1555130319947370107">Цэнхэр</translation>
 <translation id="155865706765934889">Мэдрэгч самбар</translation>
+<translation id="1561927818299383735">арын гэрлийн өнгө</translation>
 <translation id="1565038567006703504"><ph name="DEVICE_NAME" />-г шинэчлэх боломжгүй</translation>
 <translation id="1567064801249837505">Цомог</translation>
 <translation id="1572585716423026576">Дэлгэцийн зураг болгох</translation>
@@ -437,6 +438,7 @@
 <translation id="5267975978099728568"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="ERROR_STATUS" /></translation>
 <translation id="5275828089655680674">Хэвшлийг дахин ажиллуулах</translation>
 <translation id="5286252187236914003">L2TP/IPsec</translation>
+<translation id="5286263799730375393">арын гэрлийн өнгө</translation>
 <translation id="5294769550414936029"><ph name="MILESTONE_VERSION" />-р хувилбар</translation>
 <translation id="5300814202279832142">Цонхыг дэлгэц рүү зөөх</translation>
 <translation id="5304899856529773394">EVDO</translation>
@@ -497,6 +499,7 @@
 <translation id="5895138241574237353">Дахин асаах</translation>
 <translation id="5901630391730855834">Шар</translation>
 <translation id="5903200662178656908">Төхөөрөмж нь гар болон хулганын хослол юм.</translation>
+<translation id="5907649332524363701">товчны өнгө</translation>
 <translation id="5916084858004523819">Хориглосон</translation>
 <translation id="5916664084637901428">Асаах</translation>
 <translation id="5921506667911082617">{COUNT,plural, =1{Таны файлыг амжилттай скан хийсэн бөгөөд <ph name="LINK_BEGIN" /><ph name="FOLDER_NAME" /><ph name="LINK_END" />-д хадгалсан.}other{Таны файлуудыг амжилттай скан хийсэн бөгөөд <ph name="LINK_BEGIN" /><ph name="FOLDER_NAME" /><ph name="LINK_END" />-д хадгалсан.}}</translation>
@@ -598,6 +601,7 @@
 <translation id="6760706756348334449">Дууны түвшинг бууруулах</translation>
 <translation id="6766275201586212568">DNS-н тайлал амжилтгүй</translation>
 <translation id="6768237774506518020">DNS-н тайллын алдааны өндөр хувь</translation>
+<translation id="6791471867139427246">гарын гэрлийн өнгө</translation>
 <translation id="680983167891198932">Түлхүүр</translation>
 <translation id="6816797338148849397">Таны сонголттой холбоотой мэдээлэл боломжтой байна. Хандахын тулд Дээш суман товчийг ашиглана уу.</translation>
 <translation id="6853312040151791195">Цэнэггүй болох хурд</translation>
@@ -643,6 +647,7 @@
 <translation id="7302860742311162920">ICCID</translation>
 <translation id="7305884605064981971">EDGE</translation>
 <translation id="7308203371573257315">Chromebook-н тусламжийн хэлэлцүүлгийн мэргэжилтнүүдээс асуугаарай</translation>
+<translation id="7311368985037279727">гарын өнгө</translation>
 <translation id="7319430975418800333">A3</translation>
 <translation id="7343581795491695942"><ph name="QUERY_TEXT" />; <ph name="RESULT_TEXT" />; Google Хайлтад илэрц харахын тулд Search болон Space-г дарна уу.</translation>
 <translation id="7343649194310845056">Сүлжээний төхөөрөмжүүд</translation>
diff --git a/chromeos/strings/chromeos_strings_ta.xtb b/chromeos/strings/chromeos_strings_ta.xtb
index 6efd3684..bf6e99a 100644
--- a/chromeos/strings/chromeos_strings_ta.xtb
+++ b/chromeos/strings/chromeos_strings_ta.xtb
@@ -67,6 +67,7 @@
 <translation id="152892567002884378">ஒலியளவை அதிகரிக்கும்</translation>
 <translation id="1555130319947370107">நீலம்</translation>
 <translation id="155865706765934889">டச்பேட்</translation>
+<translation id="1561927818299383735">பேக்லிட் வண்ணம்</translation>
 <translation id="1565038567006703504"><ph name="DEVICE_NAME" /> ஐப் புதுப்பிக்க முடியவில்லை</translation>
 <translation id="1567064801249837505">ஆல்பங்கள்</translation>
 <translation id="1572585716423026576">வால்பேப்பராக அமை</translation>
@@ -437,6 +438,7 @@
 <translation id="5267975978099728568"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="ERROR_STATUS" /></translation>
 <translation id="5275828089655680674">வழக்கங்களை மீண்டும் இயக்கு</translation>
 <translation id="5286252187236914003">L2TP/IPsec</translation>
+<translation id="5286263799730375393">பின்னொளி வண்ணம்</translation>
 <translation id="5294769550414936029">பதிப்பு <ph name="MILESTONE_VERSION" /></translation>
 <translation id="5300814202279832142">சாளரத்தை டெஸ்கிற்கு நகர்த்து</translation>
 <translation id="5304899856529773394">EVDO</translation>
@@ -497,6 +499,7 @@
 <translation id="5895138241574237353">மறுதொடக்கம்</translation>
 <translation id="5901630391730855834">மஞ்சள்</translation>
 <translation id="5903200662178656908">கீபோர்டும் மவுஸும் இணைந்ததே சாதனமாகும்.</translation>
+<translation id="5907649332524363701">கீபோர்டு வண்ணம்</translation>
 <translation id="5916084858004523819">தடைசெய்யப்பட்டது</translation>
 <translation id="5916664084637901428">இயக்கு</translation>
 <translation id="5921506667911082617">{COUNT,plural, =1{உங்கள் ஃபைல் ஸ்கேன் செய்யப்பட்டு <ph name="LINK_BEGIN" /><ph name="FOLDER_NAME" /><ph name="LINK_END" /> ஃபைல்றையில் சேமிக்கப்பட்டது.}other{உங்கள் ஃபைல்கள்  ஸ்கேன் செய்யப்பட்டு <ph name="LINK_BEGIN" /><ph name="FOLDER_NAME" /><ph name="LINK_END" /> ஃபைல்றையில் சேமிக்கப்பட்டன.}}</translation>
@@ -598,6 +601,7 @@
 <translation id="6760706756348334449">ஒலியளவைக் குறைக்கும்</translation>
 <translation id="6766275201586212568">DNS ரெசல்யூஷன்கள் தோல்வி அடைந்தது</translation>
 <translation id="6768237774506518020">DNS ரெசல்யூஷன் தோல்வி விகிதம் அதிகமாக உள்ளது</translation>
+<translation id="6791471867139427246">கீபோர்டு லைட் கலர்</translation>
 <translation id="680983167891198932">குறியீடு</translation>
 <translation id="6816797338148849397">நீங்கள் தேர்ந்தெடுத்தவற்றுடன் தொடர்புடைய தகவல்கள். இவற்றை அணுக மேல்நோக்கிய அம்புக்குறி விசையைப் பயன்படுத்துங்கள்.</translation>
 <translation id="6853312040151791195">சார்ஜ் இறங்கும் விகிதம்</translation>
@@ -643,6 +647,7 @@
 <translation id="7302860742311162920">ICCID</translation>
 <translation id="7305884605064981971">EDGE</translation>
 <translation id="7308203371573257315">Chromebook உதவி மன்றத்தில் உள்ள நிபுணர்களிடம் உதவி கேட்கலாம்</translation>
+<translation id="7311368985037279727">கீபோர்டு பேக்லிட் வண்ணம்</translation>
 <translation id="7319430975418800333">A3</translation>
 <translation id="7343581795491695942"><ph name="QUERY_TEXT" />; <ph name="RESULT_TEXT" />; Google Searchசில் முடிவைப் பார்க்க Search + Space அழுத்தவும்.</translation>
 <translation id="7343649194310845056">நெட்வொர்க் சாதனங்கள்</translation>
diff --git a/chromeos/strings/chromeos_strings_zh-HK.xtb b/chromeos/strings/chromeos_strings_zh-HK.xtb
index c8b6e7e..ce66a5a 100644
--- a/chromeos/strings/chromeos_strings_zh-HK.xtb
+++ b/chromeos/strings/chromeos_strings_zh-HK.xtb
@@ -67,6 +67,7 @@
 <translation id="152892567002884378">調高音量</translation>
 <translation id="1555130319947370107">藍色</translation>
 <translation id="155865706765934889">觸控板</translation>
+<translation id="1561927818299383735">背光顏色</translation>
 <translation id="1565038567006703504">無法更新「<ph name="DEVICE_NAME" />」</translation>
 <translation id="1567064801249837505">相簿</translation>
 <translation id="1572585716423026576">設為桌布</translation>
@@ -437,6 +438,7 @@
 <translation id="5267975978099728568"><ph name="DOCUMENT_TITLE" />,<ph name="PRINTER_NAME" />,<ph name="CREATION_TIME" />,<ph name="ERROR_STATUS" /></translation>
 <translation id="5275828089655680674">重新執行日常安排</translation>
 <translation id="5286252187236914003">L2TP/IPsec</translation>
+<translation id="5286263799730375393">背光顏色</translation>
 <translation id="5294769550414936029">版本 <ph name="MILESTONE_VERSION" /></translation>
 <translation id="5300814202279832142">將視窗移至桌面</translation>
 <translation id="5304899856529773394">EVDO</translation>
@@ -497,6 +499,7 @@
 <translation id="5895138241574237353">重新啟動</translation>
 <translation id="5901630391730855834">黃色</translation>
 <translation id="5903200662178656908">裝置係鍵盤同滑鼠組合。</translation>
+<translation id="5907649332524363701">按鍵顏色</translation>
 <translation id="5916084858004523819">禁止</translation>
 <translation id="5916664084637901428">開啟</translation>
 <translation id="5921506667911082617">{COUNT,plural, =1{您的檔案已成功掃瞄,並儲存至「<ph name="LINK_BEGIN" /><ph name="FOLDER_NAME" /><ph name="LINK_END" />」資料夾。}other{您的檔案已成功掃瞄,並儲存至「<ph name="LINK_BEGIN" /><ph name="FOLDER_NAME" /><ph name="LINK_END" />」資料夾。}}</translation>
@@ -598,6 +601,7 @@
 <translation id="6760706756348334449">調低音量</translation>
 <translation id="6766275201586212568">DNS 解析失敗</translation>
 <translation id="6768237774506518020">DNS 解析失敗率高</translation>
+<translation id="6791471867139427246">鍵盤背光顏色</translation>
 <translation id="680983167891198932">金鑰</translation>
 <translation id="6816797338148849397">你所揀嘅項目有相關資料可以提供。用向上箭咀掣就可以存取。</translation>
 <translation id="6853312040151791195">放電率</translation>
@@ -643,6 +647,7 @@
 <translation id="7302860742311162920">ICCID</translation>
 <translation id="7305884605064981971">EDGE</translation>
 <translation id="7308203371573257315">在 Chromebook 說明論壇中詢問專家</translation>
+<translation id="7311368985037279727">鍵盤顏色</translation>
 <translation id="7319430975418800333">A3</translation>
 <translation id="7343581795491695942"><ph name="QUERY_TEXT" />;<ph name="RESULT_TEXT" />;㩒搜尋鍵加空白鍵就可以睇到 Google 搜尋入面嘅結果。</translation>
 <translation id="7343649194310845056">網絡裝置</translation>
diff --git a/chromeos/strings/chromeos_strings_zh-TW.xtb b/chromeos/strings/chromeos_strings_zh-TW.xtb
index 604d65cc..b4d88119 100644
--- a/chromeos/strings/chromeos_strings_zh-TW.xtb
+++ b/chromeos/strings/chromeos_strings_zh-TW.xtb
@@ -67,6 +67,7 @@
 <translation id="152892567002884378">調高音量</translation>
 <translation id="1555130319947370107">藍色</translation>
 <translation id="155865706765934889">觸控板</translation>
+<translation id="1561927818299383735">背光顏色</translation>
 <translation id="1565038567006703504">無法更新「<ph name="DEVICE_NAME" />」</translation>
 <translation id="1567064801249837505">相簿</translation>
 <translation id="1572585716423026576">設為桌布</translation>
@@ -437,6 +438,7 @@
 <translation id="5267975978099728568"><ph name="DOCUMENT_TITLE" />,<ph name="PRINTER_NAME" />,<ph name="CREATION_TIME" />,<ph name="ERROR_STATUS" /></translation>
 <translation id="5275828089655680674">返回日常診斷</translation>
 <translation id="5286252187236914003">L2TP/IPsec</translation>
+<translation id="5286263799730375393">背光顏色</translation>
 <translation id="5294769550414936029">版本 <ph name="MILESTONE_VERSION" /></translation>
 <translation id="5300814202279832142">將視窗移至桌面</translation>
 <translation id="5304899856529773394">EVDO</translation>
@@ -497,6 +499,7 @@
 <translation id="5895138241574237353">重新啟動</translation>
 <translation id="5901630391730855834">黃色</translation>
 <translation id="5903200662178656908">裝置是鍵盤與滑鼠組合。</translation>
+<translation id="5907649332524363701">按鍵顏色</translation>
 <translation id="5916084858004523819">禁止</translation>
 <translation id="5916664084637901428">開啟</translation>
 <translation id="5921506667911082617">{COUNT,plural, =1{檔案掃描完成,現已存放在「<ph name="LINK_BEGIN" /><ph name="FOLDER_NAME" /><ph name="LINK_END" />」資料夾。}other{檔案掃描完成,現已存放在「<ph name="LINK_BEGIN" /><ph name="FOLDER_NAME" /><ph name="LINK_END" />」資料夾。}}</translation>
@@ -598,6 +601,7 @@
 <translation id="6760706756348334449">調低音量</translation>
 <translation id="6766275201586212568">DNS 解析失敗</translation>
 <translation id="6768237774506518020">高 DNS 解析失敗率</translation>
+<translation id="6791471867139427246">鍵盤背光顏色</translation>
 <translation id="680983167891198932">金鑰</translation>
 <translation id="6816797338148849397">提供所選內容的相關資訊。請使用向上鍵存取。</translation>
 <translation id="6853312040151791195">放電率</translation>
@@ -643,6 +647,7 @@
 <translation id="7302860742311162920">ICCID</translation>
 <translation id="7305884605064981971">EDGE</translation>
 <translation id="7308203371573257315">在 Chromebook 說明論壇中詢問專家</translation>
+<translation id="7311368985037279727">鍵盤顏色</translation>
 <translation id="7319430975418800333">A3</translation>
 <translation id="7343581795491695942"><ph name="QUERY_TEXT" />;<ph name="RESULT_TEXT" />;按下搜尋鍵加空白鍵即可在 Google 搜尋中查看結果。</translation>
 <translation id="7343649194310845056">網路裝置</translation>
diff --git a/components/certificate_transparency/data/log_list.json b/components/certificate_transparency/data/log_list.json
index 5131fab..283f336 100644
--- a/components/certificate_transparency/data/log_list.json
+++ b/components/certificate_transparency/data/log_list.json
@@ -1,6 +1,6 @@
 {
-  "version": "10.79",
-  "log_list_timestamp": "2022-08-20T12:55:27Z",
+  "version": "10.80",
+  "log_list_timestamp": "2022-08-21T12:54:08Z",
   "operators": [
     {
       "name": "Google",
diff --git a/components/policy/resources/policy_templates_zh-TW.xtb b/components/policy/resources/policy_templates_zh-TW.xtb
index 35dbab5a..964762b 100644
--- a/components/policy/resources/policy_templates_zh-TW.xtb
+++ b/components/policy/resources/policy_templates_zh-TW.xtb
@@ -1093,6 +1093,7 @@
 <translation id="2058055310819710697">啟用已隔離應用程式的開發人員模式</translation>
 <translation id="2061123930713023976">允許針對網路封包擷取作業進行偵錯</translation>
 <translation id="2061810934846663491">為遠端存取主機設定必要的網域名稱</translation>
+<translation id="2062632109797189011">重新啟用已淘汰的 window.webkitStorageInfo API</translation>
 <translation id="2069350366303315077">如果將這項政策設為啟用,<ph name="PRODUCT_NAME" /> 會強制執行訪客工作階段,並禁止使用者登入設定檔。訪客可以登入 <ph name="PRODUCT_NAME" /> 設定檔,登入後,視窗會以無痕模式開啟。
 
       如果將這項政策設為停用或不設定,或是透過 <ph name="BROWSER_GUEST_MODE_ENABLED_POLICY_NAME" /> 停用瀏覽器訪客模式,系統會允許使用新的設定檔和現有設定檔。</translation>
@@ -1858,6 +1859,7 @@
 
       如果將這項政策設為停用或不設定,已註冊的裝置不會回報 Android 狀態資訊</translation>
 <translation id="288923520817177650">允許建立 <ph name="WEBXR_API_NAME_SHORT" /> 的 <ph name="WEBXR_AR_SESSION_ENUM_VALUE" /> 工作階段</translation>
+<translation id="2889842394011108075">系統將開放使用 window.webkitStorageInfo。</translation>
 <translation id="2890645751406497668">自動授予權限給這些網站,以連結至指定廠商和產品 ID 的 USB 裝置。</translation>
 <translation id="2891049933730408118">你可以透過這項政策指定哪些來源允許 <ph name="PRODUCT_NAME" /> 支援的所有 HTTP 驗證機制 (無論 <ph name="AUTH_SCHEMES_POLICY_NAME" /> 政策設定的值為何)。
 
@@ -2109,6 +2111,7 @@
 <translation id="3118552207903834734">允許使用者設定裝置主機名稱</translation>
 <translation id="3122082892722698079">控管可使用不安全內容的例外網站</translation>
 <translation id="3128072319047570212">Keygen 設定</translation>
+<translation id="3131703464330936425">不允許行動數據漫遊服務</translation>
 <translation id="3135820765957090754">如果啟用這項設定,使用者將可在搭載 <ph name="PRODUCT_OS_NAME" /> 的裝置和已連結的 Android 手機上,將 Wi-Fi 網路設定保持同步。使用者必須完成設定流程來明確選擇要啟用這項功能,才能同步 Wi-Fi 網路設定。
 
       如果停用這項設定,使用者就無法同步 Wi-Fi 網路設定。
@@ -2529,6 +2532,7 @@
 <translation id="35668690622495904">
           呼叫不會因為來源結構定義未列入許可清單而遭到拒絕 (但仍可能基於其他原因而遭拒絕)。</translation>
 <translation id="3568762199045490351">逾時 0 毫秒的 JavaScript setTimeout() 將會延遲到 1 毫秒。</translation>
+<translation id="3574450691573438824">停用裝置系統記錄上傳功能</translation>
 <translation id="3575011234198230041">HTTP 驗證</translation>
 <translation id="3577251398714997599">含侵入式廣告的網站的廣告設定</translation>
 <translation id="3577628175311752799">使用預設的參照政策 no-referrer-when-downgrade。</translation>
@@ -2649,6 +2653,7 @@
       如果未設定,系統會套用 3 小時的預設間隔。</translation>
 <translation id="3756011779061588474">封鎖開發人員模式</translation>
 <translation id="3756516139200532906">允許受管理的使用者設定裝置主機名稱</translation>
+<translation id="3756737071958233151">啟用裝置系統記錄上傳功能</translation>
 <translation id="3758089716224084329">允許你指定 <ph name="PRODUCT_NAME" /> 使用的 Proxy 伺服器,並禁止使用者變更 Proxy 設定。
 
       如果你決定完全不使用 Proxy 伺服器,一律採用直接連線,系統會忽略其他所有選項。
@@ -2694,6 +2699,7 @@
 
       注意:如果是 <ph name="MS_AD_NAME" /> 管理的裝置,這項政策支援將 <ph name="MACHINE_NAME_VARIABLE" /> 擴充為 <ph name="MS_AD_NAME" /> 電腦名稱或其子字串。舉例來說,如果電腦名稱為 <ph name="MACHINE_NAME_EXAMPLE" />,系統將以第 6 個字元後的 4 個字元取代 <ph name="MACHINE_NAME_VARIABLE_EXAMPLE" />,也就是 <ph name="MACHINE_NAME_PART_EXAMPLE" />。字元序數是從 0 開始計算。</translation>
 <translation id="377044054160169374">強制干預濫用行為</translation>
+<translation id="3777833753656885744">在登入畫面和螢幕鎖定畫面上針對清單中的網址啟用認證流程</translation>
 <translation id="3778689139323007309">針對由本機裝載 CA 憑證所簽署並經過成功驗證的伺服器憑證,執行撤銷檢查</translation>
 <translation id="3780152581321609624">Kerberos SPN 包含非標準連接埠</translation>
 <translation id="378495749480642482">設定使用者前往的網站是否能透過 <ph name="WEBXR_API_NAME" /> 建立沉浸式擴增實境工作階段。
@@ -3486,6 +3492,7 @@
 <translation id="4700190441681139987">不允許任何網站存取感應器</translation>
 <translation id="4703402283970867140">啟用智慧型調光模式來延長使用時間,直到螢幕變暗為止</translation>
 <translation id="4704958130749494760">自動授權網站連線至 USB 序列裝置。</translation>
+<translation id="471360812659157054">window.webkitStorageInfo 將無法使用。</translation>
 <translation id="4722122254122249791">為指定來源啟用網站隔離</translation>
 <translation id="4723829699367336876">允許遠端存取用戶端穿越防火牆</translation>
 <translation id="4725528134735324213">啟用 Android 備份服務</translation>
@@ -4214,6 +4221,7 @@
 
       版本切換不適用這項政策。</translation>
 <translation id="5519331583722582543">布林值標記,表示螢幕小鍵盤是否能透過手寫辨識技術提供輸入功能。</translation>
+<translation id="5519619299971727565">停用 Linux 應用程式使用情形報告功能</translation>
 <translation id="5521875416764302911">禁止使用者登入 <ph name="PRODUCT_NAME" /></translation>
 <translation id="5526184558582921522">允許向 Quirks Server 發送查詢,並有機會下載硬體專屬設定檔</translation>
 <translation id="5526701598901867718">全部 (不安全)</translation>
@@ -4234,6 +4242,7 @@
 
       如果未指定這項政策,則系統不會修改變異版本種子網址。</translation>
 <translation id="5561811616825571914">在登入畫面自動為這些網站選取用戶端憑證</translation>
+<translation id="5563240289883266691">啟用 Linux 應用程式使用情形報告功能</translation>
 <translation id="5565178130821694365">每兩天 (48 小時) 須輸入一次密碼</translation>
 <translation id="5566210228171064229">不論是否使用 PIN 碼,都允許列印</translation>
 <translation id="5572971233886879856">指定系統尋找伺服器印表機時,要查詢符合何種條件的列印伺服器。這項設定僅適用於 <ph name="DEVICE_EXTERNAL_PRINT_SERVERS_POLICY" /> 政策。
@@ -4743,6 +4752,7 @@
 <translation id="6155936611791017817">設定大型游標在登入畫面的預設狀態</translation>
 <translation id="6157537876488211233">以逗號間隔的 Proxy 略過規則清單</translation>
 <translation id="6158324314836466367">企業線上應用程式商店名稱 (已不適用)</translation>
+<translation id="6164441518097008843">限制只有清單中的使用者才能登入</translation>
 <translation id="6169768162756928771">GAIA 使用者身分管理設定</translation>
 <translation id="6172896675583897796">如果將這項政策設為啟用,Google 助理將可存取畫面內容,並將該項資料傳送給伺服器。如果將這項政策設為停用,Google 助理無法存取畫面內容。
 
@@ -4811,6 +4821,19 @@
      這項政策的用途是讓企業能彈性停用音訊沙箱,避免安全性軟體的設定干擾沙箱運作。</translation>
 <translation id="624818583115864448">通訊埠 554 (2021 年 10 月 15 日前可解除封鎖)</translation>
 <translation id="6252773211180267325">允許使用者執行 <ph name="BOREALIS_NAME" /></translation>
+<translation id="6255671003289033162">針對清單中的網址啟用 <ph name="CHROME_ENTERPRISE_PLATFORM_IDENTITY_CONNECTOR" />。
+
+      透過這項政策,你可以指定要讓哪些網址加入認證流程,以接收裝置傳送的信號。
+
+      如果不設定這項政策或留空,就表示沒有端點能啟動認證流程,以及接收裝置傳送的信號。
+
+      網址必須採用 HTTPS 架構,例如「https://example.com」。
+
+      附註:可以使用萬用字元 <ph name="WILDCARD_VALUE" />。
+
+      就 ChromeOS 而言,與這項政策相關的是遠端認證,其中的憑證會自動產生並上傳至裝置管理伺服器。
+
+      想進一步瞭解有效的<ph name="URL_LABEL" />模式,請參閱 https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns。</translation>
 <translation id="6258658183356534534">控制 User-Agent Client Hints GREASE Update 功能。</translation>
 <translation id="6261643884958898336">回報裝置識別資訊</translation>
 <translation id="6265892395051519509">允許在這些網站上存取感應器</translation>
@@ -4855,6 +4878,7 @@
 <translation id="6282524907402492171">顯示 <ph name="CLOUD_PRINT_NAME" />淘汰警告訊息</translation>
 <translation id="6282799760374509080">允許或拒絕擷取音訊</translation>
 <translation id="6284362063448764300">TLS 1.1</translation>
+<translation id="6287128640500683781">允許任何使用者登入</translation>
 <translation id="6287310684159482272">Cookie 設定</translation>
 <translation id="6299147100249359151">允許政策範圍偵測。</translation>
 <translation id="6300871921951390976">必須將這項政策設為 True,使用者才可變更裝置的發布版本。如果將這項政策設為 False 或不設定,使用者就不可變更版本。
@@ -5631,6 +5655,7 @@
 <translation id="7007283257527015835">布林值標記,表示是否應將通訊協定處理常式設為預設值。</translation>
 <translation id="7008308728445338159">已啟用 DNS 攔截檢查功能</translation>
 <translation id="7010006999849135962">針對遠端存取主機啟用無 PIN 碼驗證機制</translation>
+<translation id="7016587686120059767">停用訪客模式</translation>
 <translation id="7016736684656067099">如果將這項政策設為 1,所有網站皆可顯示圖片。如果將這項政策設為 2,所有網站都無法顯示圖片。
 
       如果不設定,所有網站皆可顯示圖片,但使用者可以變更這項設定。</translation>
@@ -5638,6 +5663,7 @@
 
       如果將這項政策設為停用,當 Chrome 分頁改以其他瀏覽器開啟後,<ph name="PRODUCT_NAME" /> 將關閉該分頁,即使該分頁是最後一個分頁也一樣。這會導致 <ph name="PRODUCT_NAME" /> 完全關閉。</translation>
 <translation id="7019805045859631636">快</translation>
+<translation id="7021590945154530517">啟用裝置健康狀態監控功能</translation>
 <translation id="7025332601572838001">設定第一次執行 CCT 時的《服務條款》相關行為</translation>
 <translation id="7026351325994257733">允許在搭載 <ph name="PRODUCT_OS_NAME" />的裝置和已連結的 Android 手機上,將 Wi-Fi 網路設定保持同步。</translation>
 <translation id="7027057540229843762">使用淺色主題</translation>
@@ -5900,6 +5926,7 @@
       如果將這項政策設為停用或不設定,支援平台會忽略 KDC 政策,只遵循 <ph name="AUTH_NEGOTIATE_DELEGATE_ALLOWLIST_POLICY_NAME" /> 政策。
 
       <ph name="MS_WIN_NAME" /> 一律遵循 KDC 政策。</translation>
+<translation id="7273785848231509306">一律不顯示使用者名稱和相片</translation>
 <translation id="7274077256421167535">啟用 USB 電力共享功能</translation>
 <translation id="7275334191706090484">受管理書籤</translation>
 <translation id="7275689301063927473">預設拒絕對所有網站授予本機字型權限</translation>
@@ -5920,6 +5947,19 @@
 <translation id="7323896582714668701"><ph name="PRODUCT_NAME" /> 額外命令列參數</translation>
 <translation id="7325801934761922681">禁止 Chrome 封鎖在沙箱 iframe 中瀏覽外部通訊協定的作業</translation>
 <translation id="7326394567531622570">與 Wipe (值 2) 類似,但會嘗試保留登入憑證,因此使用者不必重新登入。</translation>
+<translation id="7328028920258952696">在登入畫面和螢幕鎖定畫面上針對清單中的網址啟用 <ph name="CHROME_ENTERPRISE_PLATFORM_IDENTITY_CONNECTOR" />。
+
+      你可以透過這項政策指定要讓哪些網址加入認證流程,接收裝置傳送的信號。
+
+      如果不設定這項政策或留空,就表示沒有端點能啟動認證流程,以及接收裝置傳送的信號。
+
+      網址必須採用 HTTPS 架構,例如「https://example.com」。
+
+      附註:可以使用萬用字元 <ph name="WILDCARD_VALUE" />。
+
+      這項政策只會影響登入畫面和螢幕鎖定畫面上的認證流程。如要變更工作階段中認證流程,請使用 <ph name="CONTEXT_AWARE_ACCESS_SIGNALS_ALLOWLIST_POLICY_NAME" /> 政策。
+
+      想進一步瞭解有效的<ph name="URL_LABEL" />模式,請參閱 https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns。</translation>
 <translation id="7331962793961469250">設為 True 時,新分頁上將不會顯示「Chrome 線上應用程式商店」應用程式的宣傳資訊。將這個選項設為 False 或不設定選項時,新分頁上會顯示「Chrome 線上應用程式商店」應用程式的宣傳資訊</translation>
 <translation id="7332963785317884918">這項政策已被取代。<ph name="PRODUCT_OS_NAME" /> 將一律使用「RemoveLRU」清理策略。
 
@@ -6508,6 +6548,7 @@
 <translation id="7974114691960514888">系統不再支援這項政策。連線至遠端用戶時,啟用 STUN 使用量和轉送伺服器。如果啟用這項設定,那麼即使遠端主機電腦被防火牆隔開,這台電腦也能發現遠端主機電腦並建立連結。如果停用這項設定,並且外傳 UDP 連結遭到防火牆篩選,則這台電腦只會與當地網路內的主機電腦建立連線。</translation>
 <translation id="7976157349247117979">「<ph name="PRODUCT_NAME" />」目的地名稱</translation>
 <translation id="7985242821674907985"><ph name="PRODUCT_NAME" /></translation>
+<translation id="7986473886676689183">啟用 Android 報告功能</translation>
 <translation id="7991022023019679916">請注意,這項政策已遭淘汰,並將在 <ph name="PRODUCT_OS_NAME" />第 85 版中移除。請改用 <ph name="POWER_MANAGEMENT_IDLE_SETTINGS_POLICY_NAME" />。
 
           指定 AC 供電時的閒置時間長度。如果使用者在這段時間內沒有任何動作,系統就會關閉螢幕。
@@ -6593,6 +6634,8 @@
 <translation id="8091982561085048989">布林值標記,表示是否要使用 IPP Everywhere 設定印表機。<ph name="PRODUCT_OS_NAME" /> 76 以上版本支援這個標記。</translation>
 <translation id="8099880303030573137">在電池供電環境下執行時的閒置延遲時間</translation>
 <translation id="8101381354936029836">政策不可部分完成的群組:</translation>
+<translation id="8102504778644322990">自 M106 起,非標準 API window.webkitStorageInfo 將遭到移除。這項政策會重新啟用這個 API,直到 M107 推出為止。如果將這項政策設為啟用,系統將開放使用 window.webkitStorageInfo API。如果將這項政策設為停用或不設定,window.webkitStorageInfo API 就無法使用。
+      </translation>
 <translation id="8102913158860568230">預設媒體串流設定</translation>
 <translation id="8104962233214241919">自動為這些網站選取用戶端憑證</translation>
 <translation id="8114382167597081590">不強制執行 YouTube 嚴格篩選模式</translation>
@@ -6676,6 +6719,7 @@
 <translation id="8164687848393015214">如果將這項政策設為啟用,系統會將監控網路封包 (<ph name="HEARTBEATS_TERM" />) 傳送到可監控上線狀態的管理伺服器,讓伺服器偵測裝置是否處於離線狀態。
 
       如果將這項政策設為停用或不設定,系統不會傳送任何封包。</translation>
+<translation id="8169452762291746260">停用裝置健康狀態監控功能</translation>
 <translation id="8171924760436219650">在登入畫面上將滑鼠的主要按鈕切換為右鍵</translation>
 <translation id="8173864651667424191">在 PDF 文件的列印預覽畫面中,「以圖片形式列印」是預設選項 (如果有)。</translation>
 <translation id="8176035528522326671">僅允許企業使用者成為多重設定檔的主要使用者 (受企業管理的使用者的預設行為)</translation>
@@ -6926,6 +6970,7 @@
 
        這項政策將在 <ph name="PRODUCT_NAME" /> 第 95 版中移除。</translation>
 <translation id="8427466947904008809">允許 CRD 執行遠端主機透過 Proxy 傳送的 WebAuthn API 要求。</translation>
+<translation id="8428635849021776523">停用 Android 報告功能</translation>
 <translation id="8433186206711564395">網路設定</translation>
 <translation id="8433769814000220721">啟用推薦內容</translation>
 <translation id="843609873781525167">如果將這項政策設為 True,<ph name="PRODUCT_NAME" /> 一律會在啟動時檢查其是否為預設瀏覽器,並在情況允許時自動登錄。如果將這項政策設為 False,<ph name="PRODUCT_NAME" /> 一律不會檢查其是否為預設瀏覽器,且會停用設定這個選項的使用者控制項。
@@ -7522,6 +7567,7 @@
 <translation id="9073405975862312795">如果將這項政策設為啟用或不設定,已註冊的裝置會回報使用者的裝置使用時間範圍。
 
       如果將這項政策設為停用,已註冊的裝置不會記錄或回報活動時間。</translation>
+<translation id="9076477053438828079">一律顯示使用者名稱和相片</translation>
 <translation id="9077227880520270584">裝置本機帳戶自動登入計時器</translation>
 <translation id="9079531125758468956">不允許在第一次執行時匯入書籤</translation>
 <translation id="9084985621503260744">指定會影響電源管理的視訊活動</translation>
diff --git a/components/strings/components_strings_af.xtb b/components/strings/components_strings_af.xtb
index 6c95b4b7..2299f76 100644
--- a/components/strings/components_strings_af.xtb
+++ b/components/strings/components_strings_af.xtb
@@ -911,6 +911,7 @@
 <translation id="3427342743765426898">Herdoen wysiging</translation>
 <translation id="342781501876943858">Chromium beveel aan dat jy jou wagwoord terugstel as jy dit ook op ander werwe gebruik het.</translation>
 <translation id="3428151540071562330">Een of meer van die DnsOverHttpsTemplates-bedienertemplaat se URI's is ongeldig en sal nie gebruik word nie.</translation>
+<translation id="3431216045099978607">Druk |<ph name="ACCELERATOR" />| om volskerm te verlaat en aflaai te sien.</translation>
 <translation id="3431636764301398940">Stoor hierdie kaart op hierdie toestel</translation>
 <translation id="3432601291244612633">Maak bladsy toe</translation>
 <translation id="3435738964857648380">Sekuriteit</translation>
diff --git a/components/strings/components_strings_az.xtb b/components/strings/components_strings_az.xtb
index 3e531873..0bf9d17 100644
--- a/components/strings/components_strings_az.xtb
+++ b/components/strings/components_strings_az.xtb
@@ -421,6 +421,7 @@
 <translation id="2040894699575719559">Məkan blok edildi</translation>
 <translation id="2042213636306070719">Qab 7</translation>
 <translation id="204357726431741734">Google Hesabınızda saxlanılan parollardan istifadə etmək üçün daxil olun</translation>
+<translation id="2048261947532620704">Səhifə tərcümə edilir</translation>
 <translation id="205212645995975601">Kabab və qrill</translation>
 <translation id="2053111141626950936"><ph name="LANGUAGE" /> dilindəki səhifələr tərcümə edilməyəcək.</translation>
 <translation id="2053373601901562871">{NUM_DAYS,plural, =0{Bu kontrol aktiv olduqda və status "aktiv" olduğu zaman Chrome axtarış fəaliyyətinizin ən çox bənzədiyi çox iştirakçısı olan qrupu, yaxud "kohortu" müəyyən edir. Reklamçılar qrup üçün reklamlar seçə bilər və axtarış fəaliyyətiniz cihazınızda məxfi saxlanılır. Qrupunuz hər gün yenilənir.}=1{Bu kontrol aktiv olduqda və status "aktiv" olduğu zaman Chrome axtarış fəaliyyətinizin ən çox bənzədiyi çox iştirakçısı olan qrupu, yaxud "kohortu" müəyyən edir. Reklamçılar qrup üçün reklamlar seçə bilər və axtarış fəaliyyətiniz cihazınızda məxfi saxlanılır. Qrupunuz hər gün yenilənir.}other{Bu kontrol aktiv olduqda və status "aktiv" olduğu zaman Chrome axtarış fəaliyyətinizin ən çox bənzədiyi çox iştirakçısı olan qrupu, yaxud "kohortu" müəyyən edir. Reklamçılar qrup üçün reklamlar seçə bilər və axtarış fəaliyyətiniz cihazınızda məxfi saxlanılır. Qrupunuz {NUM_DAYS} gündən bir yenilənir.}}</translation>
@@ -2053,6 +2054,7 @@
 <translation id="6591833882275308647"><ph name="DEVICE_TYPE" /> idarə edilmir</translation>
 <translation id="6592952801936330159">"Sayt ayarlarının idarə edin" düyməsi, Chrome ayarlarında saytlarda saxlanılan icazələri və datanı idarə etmək üçün Enter düyməsinə basın</translation>
 <translation id="6596325263575161958">Şifrələmə variantları</translation>
+<translation id="6599642189720630047">İzlənilən Məhsullar</translation>
 <translation id="6609880536175561541">Prc7 (Zərf)</translation>
 <translation id="6611723696964473273">İqtisadiyyat xəbərləri</translation>
 <translation id="6612010098632894193">Onlayn video</translation>
diff --git a/components/strings/components_strings_km.xtb b/components/strings/components_strings_km.xtb
index da411151..238b21b 100644
--- a/components/strings/components_strings_km.xtb
+++ b/components/strings/components_strings_km.xtb
@@ -423,6 +423,7 @@
 <translation id="2040894699575719559">បានទប់ស្កាត់​ទីតាំង</translation>
 <translation id="2042213636306070719">ទម្រទី 7</translation>
 <translation id="204357726431741734">ចូលគណនី ដើម្បីប្រើ​ពាក្យសម្ងាត់​ដែលរក្សាទុក​នៅក្នុងគណនី Google របស់អ្នក</translation>
+<translation id="2048261947532620704">កំពុងបកប្រែទំព័រ</translation>
 <translation id="205212645995975601">BBQ និង​ការអាំងសាច់</translation>
 <translation id="2053111141626950936">ទំព័រជា <ph name="LANGUAGE" /> នឹងមិនត្រូវ​បានបកប្រែទេ។</translation>
 <translation id="2053373601901562871">{NUM_DAYS,plural, =0{នៅពេលបើកការគ្រប់គ្រងនេះ ហើយស្ថានភាពកំពុងសកម្ម នោះ Chrome កំណត់ថាតើក្រុមមនុស្សមួយក្រុមធំ ឬ "ក្រុមមនុស្សដូចគ្នា" ណា ដែលសកម្មភាព​រុករក​តាមអ៊ីនធឺណិតថ្មីៗរបស់អ្នកស្រដៀងបំផុត។ អ្នកផ្សាយ​ពាណិជ្ជកម្ម​អាចជ្រើសរើស​ការផ្សាយពាណិជ្ជកម្ម​សម្រាប់ក្រុម​នោះ ហើយសកម្មភាព​រុករក​តាមអ៊ីនធឺណិតរបស់អ្នកត្រូវបានរក្សាជាលក្ខណៈឯកជននៅលើឧបករណ៍របស់អ្នក។ ក្រុមរបស់អ្នកត្រូវបានធ្វើបច្ចុប្បន្នភាពរៀងរាល់ថ្ងៃ។}=1{នៅពេលបើកការគ្រប់គ្រងនេះ ហើយស្ថានភាពកំពុងសកម្ម នោះ Chrome កំណត់ថាតើក្រុមមនុស្សមួយក្រុមធំ ឬ "ក្រុមមនុស្សដូចគ្នា" ណា ដែលសកម្មភាព​រុករក​តាមអ៊ីនធឺណិតថ្មីៗរបស់អ្នកស្រដៀងបំផុត។ អ្នកផ្សាយ​ពាណិជ្ជកម្ម​អាចជ្រើសរើស​ការផ្សាយពាណិជ្ជកម្ម​សម្រាប់ក្រុម​នោះ ហើយសកម្មភាព​រុករក​តាមអ៊ីនធឺណិតរបស់អ្នកត្រូវបានរក្សាជាលក្ខណៈឯកជននៅលើឧបករណ៍របស់អ្នក។ ក្រុមរបស់អ្នកត្រូវបានធ្វើបច្ចុប្បន្នភាពរៀងរាល់ថ្ងៃ។}other{នៅពេលបើកការគ្រប់គ្រងនេះ ហើយស្ថានភាពកំពុងសកម្ម នោះ Chrome កំណត់ថាតើក្រុមមនុស្សមួយក្រុមធំ ឬ "ក្រុមមនុស្សដូចគ្នា" ណា ដែលសកម្មភាព​រុករក​តាមអ៊ីនធឺណិតថ្មីៗរបស់អ្នកស្រដៀងបំផុត។ អ្នកផ្សាយ​ពាណិជ្ជកម្ម​អាចជ្រើសរើស​ការផ្សាយពាណិជ្ជកម្ម​សម្រាប់ក្រុម​នោះ ហើយសកម្មភាព​រុករក​តាមអ៊ីនធឺណិតរបស់អ្នកត្រូវបានរក្សាជាលក្ខណៈឯកជននៅលើឧបករណ៍របស់អ្នក។ ក្រុមរបស់អ្នកត្រូវបានធ្វើបច្ចុប្បន្នភាពរៀងរាល់ {NUM_DAYS} ថ្ងៃ។}}</translation>
diff --git a/components/strings/components_strings_lt.xtb b/components/strings/components_strings_lt.xtb
index 46c71f0..781cdc0 100644
--- a/components/strings/components_strings_lt.xtb
+++ b/components/strings/components_strings_lt.xtb
@@ -421,6 +421,7 @@
 <translation id="2040894699575719559">Vietovė užblokuota</translation>
 <translation id="2042213636306070719">7 dėklas</translation>
 <translation id="204357726431741734">Prisijunkite, kad galėtumėte naudoti „Google“ paskyroje išsaugotus slaptažodžius</translation>
+<translation id="2048261947532620704">Verčiamas puslapis</translation>
 <translation id="205212645995975601">Kepsniai ir kepimas ant grotelių</translation>
 <translation id="2053111141626950936">Puslapiai, parašyti <ph name="LANGUAGE" />, verčiami nebus.</translation>
 <translation id="2053373601901562871">{NUM_DAYS,plural, =0{Kai šis valdiklis įjungtas ir būsena aktyvi, „Chrome“ nustato, į kurią didelę žmonių grupę panašiausia jūsų pastaroji naršymo veikla. Reklamuotojai gali pasirinkti grupės skelbimus, o jūsų naršymo veikla saugoma privačiai jūsų įrenginyje. Grupė atnaujinama kiekvieną dieną.}=1{Kai šis valdiklis įjungtas ir būsena aktyvi, „Chrome“ nustato, į kurią didelę žmonių grupę panašiausia jūsų pastaroji naršymo veikla. Reklamuotojai gali pasirinkti grupės skelbimus, o jūsų naršymo veikla saugoma privačiai jūsų įrenginyje. Grupė atnaujinama kiekvieną dieną.}one{Kai šis valdiklis įjungtas ir būsena aktyvi, „Chrome“ nustato, į kurią didelę žmonių grupę panašiausia jūsų pastaroji naršymo veikla. Reklamuotojai gali pasirinkti grupės skelbimus, o jūsų naršymo veikla saugoma privačiai jūsų įrenginyje. Grupė atnaujinama kas {NUM_DAYS} dieną.}few{Kai šis valdiklis įjungtas ir būsena aktyvi, „Chrome“ nustato, į kurią didelę žmonių grupę panašiausia jūsų pastaroji naršymo veikla. Reklamuotojai gali pasirinkti grupės skelbimus, o jūsų naršymo veikla saugoma privačiai jūsų įrenginyje. Grupė atnaujinama kas {NUM_DAYS} dienas.}many{Kai šis valdiklis įjungtas ir būsena aktyvi, „Chrome“ nustato, į kurią didelę žmonių grupę panašiausia jūsų pastaroji naršymo veikla. Reklamuotojai gali pasirinkti grupės skelbimus, o jūsų naršymo veikla saugoma privačiai jūsų įrenginyje. Grupė atnaujinama kas {NUM_DAYS} dienos.}other{Kai šis valdiklis įjungtas ir būsena aktyvi, „Chrome“ nustato, į kurią didelę žmonių grupę panašiausia jūsų pastaroji naršymo veikla. Reklamuotojai gali pasirinkti grupės skelbimus, o jūsų naršymo veikla saugoma privačiai jūsų įrenginyje. Grupė atnaujinama kas {NUM_DAYS} dienų.}}</translation>
diff --git a/components/strings/components_strings_mn.xtb b/components/strings/components_strings_mn.xtb
index 1c059246..f3c9c1a 100644
--- a/components/strings/components_strings_mn.xtb
+++ b/components/strings/components_strings_mn.xtb
@@ -421,6 +421,7 @@
 <translation id="2040894699575719559">Байршлыг блоклосон</translation>
 <translation id="2042213636306070719">Гарах цаасны тавиур 7</translation>
 <translation id="204357726431741734">Google Бүртгэлдээ хадгалсан нууц үгсийг ашиглахын тулд нэвтрэх</translation>
+<translation id="2048261947532620704">Хуудсыг орчуулж байна</translation>
 <translation id="205212645995975601">BBQ, мах шарах</translation>
 <translation id="2053111141626950936"><ph name="LANGUAGE" /> хэл дээрх хуудсыг орчуулахгүй.</translation>
 <translation id="2053373601901562871">{NUM_DAYS,plural, =0{Энэ хяналт асаалттай бөгөөд төлөв нь идэвхтэй үед Chrome таны саяхны хөтчийн үйл ажиллагаа аль том хэмжээний бүлэг хүн эсвэл "нэг үеийнхэн"-тэй хамгийн төстэй болохыг тодорхойлно. Сурталчлагчид бүлэгт зориулж зар сонгох боломжтой бөгөөд хөтчийн үйл ажиллагааг таны төхөөрөмж дээр хувийн байлгадаг. Таны бүлгийг өдөр тутам шинэчилдэг.}=1{Энэ хяналт асаалттай бөгөөд төлөв нь идэвхтэй үед Chrome таны саяхны хөтчийн үйл ажиллагаа аль том хэмжээний бүлэг хүн эсвэл "нэг үеийнхэн"-тэй хамгийн төстэй болохыг тодорхойлно. Сурталчлагчид бүлэгт зориулж зар сонгох боломжтой бөгөөд хөтчийн үйл ажиллагааг таны төхөөрөмж дээр хувийн байлгадаг. Таны бүлгийг өдөр тутам шинэчилдэг.}other{Энэ хяналт асаалттай бөгөөд төлөв нь идэвхтэй үед Chrome таны саяхны хөтчийн үйл ажиллагаа аль том хэмжээний бүлэг хүн эсвэл "нэг үеийнхэн"-тэй хамгийн төстэй болохыг тодорхойлно. Сурталчлагчид бүлэгт зориулж зар сонгох боломжтой бөгөөд хөтчийн үйл ажиллагааг таны төхөөрөмж дээр хувийн байлгадаг. Таны бүлгийг {NUM_DAYS} өдөр тутам шинэчилдэг.}}</translation>
diff --git a/components/strings/components_strings_my.xtb b/components/strings/components_strings_my.xtb
index ac2c47d..3ad6177 100644
--- a/components/strings/components_strings_my.xtb
+++ b/components/strings/components_strings_my.xtb
@@ -651,6 +651,7 @@
 <translation id="2649259151839507861"><ph name="CLEAR_BROWSING_DATA_FOCUSED_FRIENDLY_MATCH_TEXT" />၊ Chrome ဆက်တင်များရှိ သင့်ကြည့်ရှုခြင်းမှတ်တမ်း၊ ကွတ်ကီးများ၊ ကက်ရှ်နှင့် အခြားအရာများကို ရှင်းရန် Tab နှိပ်ပြီးနောက် Enter နှိပ်ပါ</translation>
 <translation id="2650446666397867134">ဖိုင်အား ရယူမှု ငြင်းပယ်ခံခဲ့ရ</translation>
 <translation id="2653659639078652383">ပေးပို့ရန်</translation>
+<translation id="2657637947725373811">{0,plural, =1{လျှို့ဝှက်ဖိုင်ကို လွှဲပြောင်းမလား။}other{လျှို့ဝှက်ဖိုင်များကို လွှဲပြောင်းမလား။}}</translation>
 <translation id="2660779039299703961">ဖြစ်ရပ်</translation>
 <translation id="2664887757054927933">{COUNT,plural, =0{မရှိ}=1{စကားဝှက် ၁ ခု (<ph name="DOMAIN_LIST" /> အတွက်)}=2{စကားဝှက် ၂ ခု (<ph name="DOMAIN_LIST" /> အတွက်)}other{စကားဝှက် # ခု (<ph name="DOMAIN_LIST" /> အတွက်)}}</translation>
 <translation id="2666092431469916601">ထိပ်</translation>
@@ -795,6 +796,7 @@
 <translation id="3108943290502734357">အလယ်ဗန်း</translation>
 <translation id="3109728660330352905">သင်သည် ဤစာမျက်နှာကို ကြည့်ရှုခွင့် မရှိပါ။</translation>
 <translation id="3113284927548439113">တတိယ အရွှေ့</translation>
+<translation id="3115363211799416195">{0,plural, =1{လျှို့ဝှက်ဖိုင်ကို ဒေါင်းလုဒ်လုပ်မလား။}other{လျှို့ဝှက်ဖိုင်များကို ဒေါင်းလုဒ်လုပ်မလား။}}</translation>
 <translation id="3115874930288085374">သင့်ဒေတာများကို အရန်သိမ်းပြီး ဤ <ph name="DEVICE_TYPE" /> ကို ပြန်ပို့ရန် <ph name="ENROLLMENT_DOMAIN" /> က လိုအပ်သည်။</translation>
 <translation id="3116158981186517402">ပလတ်စတစ်လောင်းရန်</translation>
 <translation id="3120730422813725195">Elo</translation>
@@ -981,6 +983,7 @@
 <translation id="3615877443314183785">မှန်ကန်သည့် ကုန်ဆုံးမည့်ရက်ကို ထည့်ပါ</translation>
 <translation id="36224234498066874">ဖွင့်ကြည့်ထားသည့် ဒေတာများကို ရှင်းလင်းရန်...</translation>
 <translation id="362276910939193118">မှတ်တမ်း အပြည့် ပြရန်</translation>
+<translation id="3628905806504633297">{0,plural, =1{<ph name="DESTINATION_NAME" /> သို့ ဤဖိုင် လွှဲပြောင်းခြင်းကို စီမံခန့်ခွဲသူမူဝါဒက အကြံပြုထားခြင်းမရှိပါ}other{<ph name="DESTINATION_NAME" /> သို့ ဤဖိုင်များ လွှဲပြောင်းခြင်းကို စီမံခန့်ခွဲသူမူဝါဒက အကြံပြုထားခြင်းမရှိပါ}}</translation>
 <translation id="3630155396527302611">၎င်းကို ကွန်ရက်အသုံးပြုသည့် ပရိုဂရမ်အဖြစ် စာရင်းထည့်သွင်းပြီးဖြစ်လျှင်၊ စာရင်းမှ ဖယ်ရှားပြီး ထပ်မံထည့်သွင်းကြည့်ပါ။</translation>
 <translation id="3630699740441428070">ဤစက်ကိုစီမံခန့်ခွဲသူများသည် သင်ဝင်ကြည့်ခဲ့သော ဝဘ်ဆိုက်များအပါအဝင် ကွန်ရက်ဒေတာ စီးဆင်းမှုအား ကြည့်ခွင့်ရစေရန် သင့်ကွန်ရက်ချိတ်ဆက်မှုကို စီစဉ်သတ်မှတ်ထားသည်။</translation>
 <translation id="3631244953324577188">ဇီဝမက်ထရစ် အချက်အလက်များ</translation>
@@ -1340,6 +1343,7 @@
 <translation id="4607603470419975064">Chrome အကြံပြုချက်များ ကြည့်ရန် ခလုတ်၊ Chrome ဝန်ဆောင်မှုများအကြောင်း လေ့လာရန် Enter ခလုတ် နှိပ်ပါ</translation>
 <translation id="4607608436550361748">Chrome အကြံပြုချက်များ ကြည့်ရန်</translation>
 <translation id="4617273035598175554">ဂရပ်ဖစ်နှင့် လှုပ်ရှားသက်ဝင်ရေးသည့် ဆော့ဖ်ဝဲ</translation>
+<translation id="4622292761762557753">မည်သို့ပင်ဖြစ်စေ လွှဲပြောင်းရန်</translation>
 <translation id="4627675673814409125">ဤမူဝါဒကို Chrome ပရိုဖိုင်အဆင့်မှာ မထည့်သွင်းနိုင်ဘဲ လျစ်လျူရှုထားပါမည်။</translation>
 <translation id="4628948037717959914">ဓာတ်ပုံ</translation>
 <translation id="4631649115723685955">ငွေပြန်ပေးခြင်းကို လင့်ခ်ချိတ်ထားသည်</translation>
@@ -1655,6 +1659,7 @@
 <translation id="540969355065856584">ဤဆာဗာသည် <ph name="DOMAIN" /> ဖြစ်ကြောင်း သက်သေမပြနိုင်ပါ; ၎င်း၏လုံခြုံရေး အသိမှတ်ပြုလက်မှတ်သည် ယခုအချိန်တွင် တရားမဝင်ပါ။ ဖွဲ့စည်းမှု အမှားကြောင့် သို့မဟုတ် တိုက်ခိုက်လိုသူက သင်၏ချိတ်ဆက်မှုကို ကြားဖြတ်ယူနေ၍ ထိုသို့ဖြစ်လာနိုင်ခဲ့ပါသည်။</translation>
 <translation id="5412040515238827314">ပုံစံမမှန်ပါ- ပုံစံစာရင်း ဖြစ်ရမည်။</translation>
 <translation id="5412236728747081950">နောက်ထပ်သက်ဆိုင်ရာ ကြော်ငြာများ ပြရန် Chrome မှ သင့်စိတ်ဝင်စားမှုများကို ဤဝဘ်ဆိုက်က ရယူပါသည်</translation>
+<translation id="5412245327974352290"><ph name="TRADITIONAL_TEXT" /> - <ph name="ADDITIONAL_TEXT" /></translation>
 <translation id="541416427766103491">စီထည့်သည့်ပုံး ၄</translation>
 <translation id="5421136146218899937">ဘရောင်ဇာ ဒေတာကို ရှင်းရန်...</translation>
 <translation id="5426179911063097041"><ph name="SITE" /> သည် သင့်ထံသို့ အကြောင်းကြားချက်များ ပို့လိုသည်</translation>
@@ -2588,6 +2593,7 @@
 <translation id="8004582292198964060">ဘရောင်ဇာ</translation>
 <translation id="8009225694047762179">စကားဝှက်များကို စီမံခြင်း</translation>
 <translation id="8012116502927253373">{NUM_CARDS,plural, =1{ဤကတ်နှင့် ၎င်း၏ငွေတောင်းခံမှု လိပ်စာကို သိမ်းဆည်းသွားပါမည်။ <ph name="USER_EMAIL" /> သို့ လက်မှတ်ထိုးဝင်ထားသည့်အခါ သင်အသုံးပြုနိုင်ပါမည်။}other{ဤကတ်များနှင့် ၎င်းတို့၏ ငွေတောင်းခံမှု လိပ်စာများကို သိမ်းဆည်းသွားပါမည်။ <ph name="USER_EMAIL" /> သို့ လက်မှတ်ထိုးဝင်ထားသည့်အခါ ၎င်းတို့ကို သင်အသုံးပြုနိုင်ပါမည်။}}</translation>
+<translation id="8019861005170389898"><ph name="TRADITIONAL_TEXT" /> (<ph name="ADDITIONAL_TEXT" />)</translation>
 <translation id="8025119109950072390">ဤဆိုက်ပေါ်ရှိ တိုက်ခိုက်သူများသည် ဆော့ဖ်ဝဲထည့်သွင်းခြင်း သို့မဟုတ် သင့်ကိုယ်ရေးကိုယ်တာ အချက်အလက်များ (ဥပမာ၊ စကားဝှက်များ၊ ဖုန်းနံပါတ်များ သို့မဟုတ် ခရက်တစ်ကတ်များ) ကို ပြခိုင်းခြင်းကဲ့သို့ အန္တရာယ်ရှိသည့် အရာများကို သင့်အား လှည့်ဖြားစေခိုင်းနိုင်ပါသည်။</translation>
 <translation id="8026334261755873520">ဘရောက်လုပ်ထားသည့် အချက်လက်များ ရှင်းလင်းရန်</translation>
 <translation id="8027077570865220386">ဗန်း ၁၅</translation>
@@ -2639,6 +2645,7 @@
 <translation id="8148608574971654810">PDF ဗားရှင်း-</translation>
 <translation id="8149426793427495338">သင့်ကွန်ပျူတာ အိပ်သွားပါသည်။</translation>
 <translation id="8150722005171944719"><ph name="URL" />မှာ ရှိသော ဖိုင်ကို ဖတ်မရပါ။ ၎င်းကို ရွှေ့ပစ်ခဲ့တာ၊ ဖယ်ရှားပစ်ခဲ့တာ ဖြစ်နိုင်သည်၊ သို့မဟုတ် ဖိုင် ခွင်ပြုချက်များက ရယူမှုကို ဟန့်တားနေတာ ဖြစ်နိုင်သည်။</translation>
+<translation id="8153865548451212769">{0,plural, =1{<ph name="DESTINATION_NAME" /> သို့ ဤဖိုင် ဒေါင်းလုဒ်လုပ်ခြင်းကို စီမံခန့်ခွဲသူမူဝါဒက အကြံပြုထားခြင်းမရှိပါ}other{<ph name="DESTINATION_NAME" /> သို့ ဤဖိုင်များ ဒေါင်းလုဒ်လုပ်ခြင်းကို စီမံခန့်ခွဲသူမူဝါဒက အကြံပြုထားခြင်းမရှိပါ}}</translation>
 <translation id="8157295877370077682">ဝဘ်ဆိုက်မှ ထွက်ရန်</translation>
 <translation id="8163866351304776260">ဘယ်ဘက်တွင် လေးချက်ဖောက်ရန်</translation>
 <translation id="8175796834047840627">လက်မှတ်ထိုးဝင်ထားသဖြင့် သင်၏ ကတ်များကို သင့် Google အကောင့်တွင် သိမ်းရန် Chrome က ကမ်းလှမ်းထားပါသည်။ ဤလုပ်ဆောင်ပုံကို ဆက်တင်များတွင် ပြောင်းနိုင်သည်။</translation>
diff --git a/components/strings/components_strings_pl.xtb b/components/strings/components_strings_pl.xtb
index 7b28066..bb6e5524 100644
--- a/components/strings/components_strings_pl.xtb
+++ b/components/strings/components_strings_pl.xtb
@@ -350,7 +350,7 @@
 <translation id="1807246157184219062">Jasny</translation>
 <translation id="1807528111851433570">Arkusz początkowy</translation>
 <translation id="1812527064848182527">orientacja pozioma</translation>
-<translation id="1813414402673211292">Wyczyść historię przeglądania</translation>
+<translation id="1813414402673211292">Wyczyść dane przeglądania</translation>
 <translation id="182139138257690338">pobieranie automatyczne</translation>
 <translation id="1821930232296380041">Nieprawidłowe żądanie lub jego parametry</translation>
 <translation id="1822540298136254167">Odwiedzone strony internetowe i spędzony na nich czas</translation>
diff --git a/components/strings/components_strings_ta.xtb b/components/strings/components_strings_ta.xtb
index 2d727d98..a6927e5e 100644
--- a/components/strings/components_strings_ta.xtb
+++ b/components/strings/components_strings_ta.xtb
@@ -421,6 +421,7 @@
 <translation id="2040894699575719559">இருப்பிடத் தகவலுக்கான அணுகல் தடுக்கப்பட்டுள்ளது</translation>
 <translation id="2042213636306070719">தட்டு 7</translation>
 <translation id="204357726431741734">உங்கள் Google கணக்கில் சேமிக்கப்பட்டுள்ள கடவுச்சொற்களைப் பயன்படுத்த உள்நுழைக</translation>
+<translation id="2048261947532620704">பக்கம் மொழிபெயர்க்கப்படுகிறது</translation>
 <translation id="205212645995975601">BBQ &amp; கிரில்லிங்</translation>
 <translation id="2053111141626950936"><ph name="LANGUAGE" /> மொழியில் உள்ள பக்கங்கள் மொழிபெயர்க்கப்படாது.</translation>
 <translation id="2053373601901562871">{NUM_DAYS,plural, =0{இந்தக் கட்டுப்பாடு இயக்கப்பட்டு ‘செயலில் உள்ளது’ என்ற நிலையில் இருந்தால் உங்கள் சமீபத்திய உலாவல் செயல்பாட்டிற்கு மிகவும் பொருந்தக்கூடிய பெரிய குழு அல்லது “குழுவினரை” Chrome அறிந்துகொள்ளும். விளம்பரதாரர்கள் குழுவிற்கான விளம்பரங்களைத் தேர்ந்தெடுக்கலாம். மேலும் உங்கள் உலாவல் செயல்பாடு உங்கள் சாதனத்தில் தனிப்பட்ட முறையில் சேமிக்கப்படும். தினமும் உங்கள் குழு புதுப்பிக்கப்படும்.}=1{இந்தக் கட்டுப்பாடு இயக்கப்பட்டு ‘செயலில் உள்ளது’ என்ற நிலையில் இருந்தால் உங்கள் சமீபத்திய உலாவல் செயல்பாட்டிற்கு மிகவும் பொருந்தக்கூடிய பெரிய குழு அல்லது “குழுவினரை” Chrome அறிந்துகொள்ளும். விளம்பரதாரர்கள் குழுவிற்கான விளம்பரங்களைத் தேர்ந்தெடுக்கலாம். மேலும் உங்கள் உலாவல் செயல்பாடு உங்கள் சாதனத்தில் தனிப்பட்ட முறையில் சேமிக்கப்படும். தினமும் உங்கள் குழு புதுப்பிக்கப்படும்.}other{இந்தக் கட்டுப்பாடு இயக்கப்பட்டு ‘செயலில் உள்ளது’ என்ற நிலையில் இருந்தால் உங்கள் சமீபத்திய உலாவல் செயல்பாட்டிற்கு மிகவும் பொருந்தக்கூடிய பெரிய குழு அல்லது “குழுவினரை” Chrome அறிந்துகொள்ளும். விளம்பரதாரர்கள் குழுவிற்கான விளம்பரங்களைத் தேர்ந்தெடுக்கலாம். மேலும் உங்கள் உலாவல் செயல்பாடு உங்கள் சாதனத்தில் தனிப்பட்ட முறையில் சேமிக்கப்படும். {NUM_DAYS} நாட்களுக்கு ஒருமுறை உங்கள் குழு புதுப்பிக்கப்படும்.}}</translation>
diff --git a/components/strings/components_strings_uz.xtb b/components/strings/components_strings_uz.xtb
index d9e130b3..a17cf68 100644
--- a/components/strings/components_strings_uz.xtb
+++ b/components/strings/components_strings_uz.xtb
@@ -2053,6 +2053,7 @@
 <translation id="6591833882275308647"><ph name="DEVICE_TYPE" /> qurilmangiz mustaqil</translation>
 <translation id="6592952801936330159">Sayt sozlamalarini boshqarish tugmasi, Chrome sozlamalari orqali ruxsatlar va saytlarda saqlanadigan maʼlumotlarni boshqarish uchun Enter tugmasini bosing</translation>
 <translation id="6596325263575161958">Shifrlash parametrlari</translation>
+<translation id="6599642189720630047">Kuzatiladigan mahsulotlar</translation>
 <translation id="6609880536175561541">Prc7 (Envelope)</translation>
 <translation id="6611723696964473273">Iqtisodiyot yangiliklari</translation>
 <translation id="6612010098632894193">Onlayn video</translation>
diff --git a/components/strings/components_strings_zh-HK.xtb b/components/strings/components_strings_zh-HK.xtb
index 49dee5c4..11cb2b3 100644
--- a/components/strings/components_strings_zh-HK.xtb
+++ b/components/strings/components_strings_zh-HK.xtb
@@ -421,6 +421,7 @@
 <translation id="2040894699575719559">位置已封鎖</translation>
 <translation id="2042213636306070719">紙匣 7</translation>
 <translation id="204357726431741734">登入即可使用儲存在 Google 帳戶中的密碼</translation>
+<translation id="2048261947532620704">正在翻譯頁面</translation>
 <translation id="205212645995975601">燒烤</translation>
 <translation id="2053111141626950936">系統將不會翻譯<ph name="LANGUAGE" />網頁。</translation>
 <translation id="2053373601901562871">{NUM_DAYS,plural, =0{如果此功能已啟用且處於有效狀態,Chrome 就會判斷您最近的瀏覽活動與哪個大型使用者群組 (又稱「組別」) 最為相似。廣告客戶可以選擇要向該群組顯示的廣告,而您的瀏覽活動會保留在裝置上,絕不會外洩。系統會每日更新您所屬的群組。}=1{如果此功能已啟用且處於有效狀態,Chrome 就會判斷您最近的瀏覽活動與哪個大型使用者群組 (又稱「組別」) 最為相似。廣告客戶可以選擇要向該群組顯示的廣告,而您的瀏覽活動會保留在裝置上,絕不會外洩。系統會每日更新您所屬的群組。}other{如果此功能已啟用且處於有效狀態,Chrome 就會判斷您最近的瀏覽活動與哪個大型使用者群組 (又稱「組別」) 最為相似。廣告客戶可以選擇要向該群組顯示的廣告,而您的瀏覽活動會保留在裝置上,絕不會外洩。系統會每隔 {NUM_DAYS} 日更新您所屬的群組。}}</translation>
diff --git a/components/strings/components_strings_zh-TW.xtb b/components/strings/components_strings_zh-TW.xtb
index 0a982573..7ce038e 100644
--- a/components/strings/components_strings_zh-TW.xtb
+++ b/components/strings/components_strings_zh-TW.xtb
@@ -421,6 +421,7 @@
 <translation id="2040894699575719559">禁止取得位置資訊</translation>
 <translation id="2042213636306070719">紙匣 7</translation>
 <translation id="204357726431741734">登入以使用儲存在 Google 帳戶中的密碼</translation>
+<translation id="2048261947532620704">正在翻譯頁面</translation>
 <translation id="205212645995975601">烤肉與燒烤</translation>
 <translation id="2053111141626950936">系統不會翻譯<ph name="LANGUAGE" />網頁。</translation>
 <translation id="2053373601901562871">{NUM_DAYS,plural, =0{如果這項功能已啟用且處於有效狀態,Chrome 就能判斷你近期的瀏覽活動與哪個大型使用者群組 (或稱「同類群組」) 最為相近。廣告客戶可以選擇要向該群組顯示的廣告,而你的瀏覽記錄會保留在裝置上,僅供本人存取。你所在的群組會每天更新。}=1{如果這項功能已啟用且處於有效狀態,Chrome 就能判斷你近期的瀏覽活動與哪個大型使用者群組 (或稱「同類群組」) 最為相近。廣告客戶可以選擇要向該群組顯示的廣告,而你的瀏覽記錄會保留在裝置上,僅供本人存取。你所在的群組會每天更新。}other{如果這項功能已啟用且處於有效狀態,Chrome 就能判斷你近期的瀏覽活動與哪個大型使用者群組 (或稱「同類群組」) 最為相近。廣告客戶可以選擇要向該群組顯示的廣告,而你的瀏覽記錄會保留在裝置上,僅供本人存取。你所在的群組會每隔 {NUM_DAYS} 天更新。}}</translation>
diff --git a/components/viz/service/display/dc_layer_overlay.cc b/components/viz/service/display/dc_layer_overlay.cc
index e2fa757c..2b7fb7af 100644
--- a/components/viz/service/display/dc_layer_overlay.cc
+++ b/components/viz/service/display/dc_layer_overlay.cc
@@ -331,6 +331,42 @@
   return occluding_damage_rect;
 }
 
+bool IsFullScreenLetterboxing(const QuadList::Iterator& it,
+                              QuadList::ConstIterator quad_list_end,
+                              const gfx::RectF& display_rect) {
+  bool is_fullscreen = false;
+
+  // Two cases are considered as fullscreen letterboxing:
+  // 1. If the quad beneath the overlay quad is DrawQuad::Material::kSolidColor
+  // with black, and it covers the display size.
+  // 2. If the quad beneath the overlay quad is
+  // DrawQuad::Material::kTiledContent, and it touches two sides of the screen,
+  // while starting at display origin (0, 0).
+  // For YouTube with F11 page fullscreen mode, the kTiledContent beneath the
+  // overlay does not touch the right edge due to the existing of a scrolling
+  // bar.
+  auto beneath_overlay_it = it;
+  beneath_overlay_it++;
+
+  if (beneath_overlay_it != quad_list_end) {
+    if (beneath_overlay_it->material == DrawQuad::Material::kSolidColor &&
+        SolidColorDrawQuad::MaterialCast(*beneath_overlay_it)->color ==
+            SkColors::kBlack) {
+      gfx::RectF black_background_rect =
+          ClippedQuadRectangleF(*beneath_overlay_it);
+      is_fullscreen = (black_background_rect == display_rect);
+    } else if (beneath_overlay_it->material ==
+               DrawQuad::Material::kTiledContent) {
+      gfx::RectF tiled_rect = ClippedQuadRectangleF(*beneath_overlay_it);
+      is_fullscreen = (tiled_rect.origin() == display_rect.origin() &&
+                       (tiled_rect.width() == display_rect.width() ||
+                        tiled_rect.height() == display_rect.height()));
+    }
+  }
+
+  return is_fullscreen;
+}
+
 void RecordVideoDCLayerResult(DCLayerResult result,
                               gfx::ProtectedVideoType protected_video_type) {
   switch (protected_video_type) {
@@ -679,7 +715,7 @@
     SurfaceDamageRectList surface_damage_rect_list,
     DCLayerOverlayList* dc_layer_overlays,
     bool is_video_capture_enabled,
-    bool is_video_fullscreen_mode) {
+    bool is_page_fullscreen_mode) {
   bool this_frame_has_occluding_damage_rect = false;
   processed_yuv_overlay_count_ = 0;
   surface_damage_rect_list_ = std::move(surface_damage_rect_list);
@@ -895,7 +931,7 @@
     UpdateDCLayerOverlays(display_rect, render_pass, it,
                           quad_rectangle_in_target_space, occluding_damage_rect,
                           is_overlay, &prev_it, &prev_index, damage_rect,
-                          dc_layer_overlays, is_video_fullscreen_mode);
+                          dc_layer_overlays, is_page_fullscreen_mode);
   }
 
   // Update previous frame state after processing root pass. If there is no
@@ -978,12 +1014,16 @@
     size_t* new_index,
     gfx::Rect* damage_rect,
     DCLayerOverlayList* dc_layer_overlays,
-    bool is_video_fullscreen_mode) {
+    bool is_page_fullscreen_mode) {
   // Record the result first before ProcessForOverlay().
   RecordDCLayerResult(DC_LAYER_SUCCESS, it);
 
   DCLayerOverlay dc_layer;
-  dc_layer.is_video_fullscreen_mode = is_video_fullscreen_mode;
+  dc_layer.is_video_fullscreen_mode =
+      is_page_fullscreen_mode
+          ? IsFullScreenLetterboxing(it, render_pass->quad_list.end(),
+                                     display_rect)
+          : false;
   switch (it->material) {
     case DrawQuad::Material::kYuvVideoContent:
       FromYUVQuad(YUVVideoDrawQuad::MaterialCast(*it),
diff --git a/components/viz/service/display/dc_layer_overlay.h b/components/viz/service/display/dc_layer_overlay.h
index 46bcd5e..f07dcdc0 100644
--- a/components/viz/service/display/dc_layer_overlay.h
+++ b/components/viz/service/display/dc_layer_overlay.h
@@ -103,7 +103,7 @@
                        SurfaceDamageRectList surface_damage_rect_list,
                        DCLayerOverlayList* dc_layer_overlays,
                        bool is_video_capture_enabled,
-                       bool is_video_fullscreen_mode);
+                       bool is_page_fullscreen_mode);
   void ClearOverlayState();
   // This is the damage contribution due to previous frame's overlays which can
   // be empty.
@@ -134,7 +134,7 @@
                              size_t* new_index,
                              gfx::Rect* damage_rect,
                              DCLayerOverlayList* dc_layer_overlays,
-                             bool is_video_fullscreen_mode);
+                             bool is_page_fullscreen_mode);
 
   // Returns an iterator to the element after |it|.
   QuadList::Iterator ProcessForOverlay(const gfx::RectF& display_rect,
diff --git a/components/viz/service/display/display.cc b/components/viz/service/display/display.cc
index f1571da..ee02fec 100644
--- a/components/viz/service/display/display.cc
+++ b/components/viz/service/display/display.cc
@@ -846,7 +846,7 @@
     renderer_->DecideRenderPassAllocationsForFrame(frame.render_pass_list);
     overlay_processor_->SetFrameSequenceNumber(frame_sequence_number_);
     overlay_processor_->SetIsVideoCaptureEnabled(frame.video_capture_enabled);
-    overlay_processor_->SetIsVideoFullscreen(frame.page_fullscreen_mode);
+    overlay_processor_->SetIsPageFullscreen(frame.page_fullscreen_mode);
     renderer_->DrawFrame(&frame.render_pass_list, device_scale_factor_,
                          current_surface_size, display_color_spaces_,
                          std::move(frame.surface_damage_rect_list_));
diff --git a/components/viz/service/display/overlay_processor_interface.h b/components/viz/service/display/overlay_processor_interface.h
index 77394d8..3c6651d 100644
--- a/components/viz/service/display/overlay_processor_interface.h
+++ b/components/viz/service/display/overlay_processor_interface.h
@@ -200,8 +200,8 @@
   // If true, video capture is enabled for this frame.
   virtual void SetIsVideoCaptureEnabled(bool enabled) {}
 
-  // If true, video fullscreen mode is enabled for this frame.
-  virtual void SetIsVideoFullscreen(bool enabled) {}
+  // If true, page fullscreen mode is enabled for this frame.
+  virtual void SetIsPageFullscreen(bool enabled) {}
 
   virtual gfx::CALayerResult GetCALayerErrorCode() const;
 
diff --git a/components/viz/service/display/overlay_processor_win.cc b/components/viz/service/display/overlay_processor_win.cc
index 8f094b5..8398a26 100644
--- a/components/viz/service/display/overlay_processor_win.cc
+++ b/components/viz/service/display/overlay_processor_win.cc
@@ -72,7 +72,7 @@
       resource_provider, gfx::RectF(root_render_pass->output_rect),
       render_pass_filters, render_pass_backdrop_filters, root_render_pass,
       damage_rect, std::move(surface_damage_rect_list), candidates,
-      is_video_capture_enabled_, is_video_fullscreen_mode_);
+      is_video_capture_enabled_, is_page_fullscreen_mode_);
 
   bool was_using_dc_layers = using_dc_layers_;
   if (!candidates->empty()) {
@@ -100,8 +100,8 @@
   is_video_capture_enabled_ = enabled;
 }
 
-void OverlayProcessorWin::SetIsVideoFullscreen(bool enabled) {
-  is_video_fullscreen_mode_ = enabled;
+void OverlayProcessorWin::SetIsPageFullscreen(bool enabled) {
+  is_page_fullscreen_mode_ = enabled;
 }
 
 }  // namespace viz
diff --git a/components/viz/service/display/overlay_processor_win.h b/components/viz/service/display/overlay_processor_win.h
index 6cf84df..5c56ac47 100644
--- a/components/viz/service/display/overlay_processor_win.h
+++ b/components/viz/service/display/overlay_processor_win.h
@@ -49,8 +49,8 @@
   // Sets |is_video_capture_enabled_|.
   void SetIsVideoCaptureEnabled(bool enabled) override;
 
-  // Sets |is_video_fullscreen_mode_|.
-  void SetIsVideoFullscreen(bool enabled) override;
+  // Sets |is_page_fullscreen_mode_|.
+  void SetIsPageFullscreen(bool enabled) override;
 
   void AdjustOutputSurfaceOverlay(absl::optional<OutputSurfaceOverlayPlane>*
                                       output_surface_plane) override {}
@@ -93,7 +93,7 @@
 
   bool is_video_capture_enabled_ = false;
 
-  bool is_video_fullscreen_mode_ = false;
+  bool is_page_fullscreen_mode_ = false;
 };
 
 }  // namespace viz
diff --git a/components/web_package/web_bundle_url_loader_factory_unittest.cc b/components/web_package/web_bundle_url_loader_factory_unittest.cc
index daa2233..beb0f98 100644
--- a/components/web_package/web_bundle_url_loader_factory_unittest.cc
+++ b/components/web_package/web_bundle_url_loader_factory_unittest.cc
@@ -11,6 +11,7 @@
 #include "components/web_package/web_bundle_memory_quota_consumer.h"
 #include "mojo/public/cpp/bindings/remote.h"
 #include "mojo/public/cpp/system/data_pipe_utils.h"
+#include "mojo/public/cpp/system/functions.h"
 #include "net/traffic_annotation/network_traffic_annotation_test_helper.h"
 #include "services/network/public/cpp/resource_request.h"
 #include "services/network/public/mojom/url_loader.mojom.h"
diff --git a/content/browser/preloading/prerender/prerender_browsertest.cc b/content/browser/preloading/prerender/prerender_browsertest.cc
index 842e4b36..bebec65 100644
--- a/content/browser/preloading/prerender/prerender_browsertest.cc
+++ b/content/browser/preloading/prerender/prerender_browsertest.cc
@@ -81,6 +81,7 @@
 #include "content/test/test_mojo_binder_policy_applier_unittest.mojom.h"
 #include "mojo/public/cpp/bindings/receiver_set.h"
 #include "mojo/public/cpp/bindings/remote_set.h"
+#include "mojo/public/cpp/system/functions.h"
 #include "net/dns/mock_host_resolver.h"
 #include "net/test/embedded_test_server/controllable_http_response.h"
 #include "net/test/embedded_test_server/default_handlers.h"
@@ -3339,9 +3340,14 @@
             RenderFrameHost::kNoFrameTreeNodeId);
 }
 
-#if BUILDFLAG(ENABLE_PLUGINS)
+#if BUILDFLAG(ENABLE_PPAPI)
 // Tests that we will cancel the prerendering if the prerendering page attempts
 // to use plugins.
+//
+// TODO(crbug.com/1205920): This does not cover embedders that override
+// `ContentRendererClient::OverrideCreatePlugin()` (such as for Chrome's PDF
+// viewer), as cancellation depends on the renderer attempting to bind
+// `content::mojom::PepperHost`.
 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PluginsCancelPrerendering) {
   base::HistogramTester histogram_tester;
   const GURL kInitialUrl = GetUrl("/empty.html");
@@ -3391,7 +3397,7 @@
                      EvalJsOptions::EXECUTE_SCRIPT_NO_RESOLVE_PROMISES));
   WaitForRequest(GetUrl("/title1.html"), 1);
 }
-#endif  // BUILDFLAG(ENABLE_PLUGINS)
+#endif  // BUILDFLAG(ENABLE_PPAPI)
 
 #if BUILDFLAG(IS_ANDROID)
 // On Android the Notification constructor throws an exception regardless of
diff --git a/content/browser/renderer_host/pending_beacon_host_unittest.cc b/content/browser/renderer_host/pending_beacon_host_unittest.cc
index 49ab731..cffb3aa 100644
--- a/content/browser/renderer_host/pending_beacon_host_unittest.cc
+++ b/content/browser/renderer_host/pending_beacon_host_unittest.cc
@@ -10,6 +10,7 @@
 #include "base/test/bind.h"
 #include "content/browser/renderer_host/pending_beacon_service.h"
 #include "content/public/test/test_renderer_host.h"
+#include "mojo/public/cpp/system/functions.h"
 #include "net/http/http_request_headers.h"
 #include "services/network/public/cpp/weak_wrapper_shared_url_loader_factory.h"
 #include "services/network/test/test_url_loader_factory.h"
diff --git a/content/browser/service_worker/service_worker_controllee_request_handler.cc b/content/browser/service_worker/service_worker_controllee_request_handler.cc
index 92e9d561..b1aaa44 100644
--- a/content/browser/service_worker/service_worker_controllee_request_handler.cc
+++ b/content/browser/service_worker/service_worker_controllee_request_handler.cc
@@ -425,6 +425,11 @@
   DCHECK_NE(active_version->fetch_handler_existence(),
             ServiceWorkerVersion::FetchHandlerExistence::UNKNOWN);
 
+  base::UmaHistogramEnumeration(
+      "ServiceWorker.FetchHandler."
+      "TypeAtContinueWithActivatedVersion",
+      active_version->fetch_handler_type());
+
   if (blink::IsRequestDestinationFrame(destination_))
     container_host_->AddServiceWorkerToUpdate(active_version);
 
diff --git a/content/browser/service_worker/service_worker_controllee_request_handler_unittest.cc b/content/browser/service_worker/service_worker_controllee_request_handler_unittest.cc
index 4356a04c..b1aaa20 100644
--- a/content/browser/service_worker/service_worker_controllee_request_handler_unittest.cc
+++ b/content/browser/service_worker/service_worker_controllee_request_handler_unittest.cc
@@ -469,6 +469,86 @@
   EXPECT_EQ(GURL("https://host/scope/doc"), container_host_->url());
 }
 
+TEST_F(ServiceWorkerControlleeRequestHandlerTest, HasNotSkippedMetrics) {
+  base::HistogramTester tester;
+
+  version_->set_fetch_handler_type(
+      ServiceWorkerVersion::FetchHandlerType::kNotSkippable);
+  version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
+  registration_->SetWaitingVersion(version_);
+  base::RunLoop loop;
+  context()->registry()->StoreRegistration(
+      registration_.get(), version_.get(),
+      base::BindLambdaForTesting(
+          [&loop](blink::ServiceWorkerStatusCode status) { loop.Quit(); }));
+  loop.Run();
+
+  // Conduct a main resource load.
+  ServiceWorkerRequestTestResources test_resources(
+      this, GURL("https://host/scope/doc"),
+      network::mojom::RequestDestination::kDocument);
+  test_resources.MaybeCreateLoader();
+  EXPECT_FALSE(test_resources.loader());
+  EXPECT_FALSE(version_->HasControllee());
+
+  base::RunLoop().RunUntilIdle();
+
+  EXPECT_TRUE(test_resources.loader());
+  EXPECT_TRUE(version_->HasControllee());
+  tester.ExpectUniqueSample("ServiceWorker.FetchHandler.SkipReason",
+                            ServiceWorkerControlleeRequestHandler::
+                                FetchHandlerSkipReason::kNotSkipped,
+                            1);
+  tester.ExpectUniqueSample(
+      "ServiceWorker.FetchHandler."
+      "TypeAtContinueWithActivatedVersion",
+      ServiceWorkerVersion::FetchHandlerType::kNotSkippable, 1);
+
+  test_resources.ResetHandler();
+}
+
+TEST_F(ServiceWorkerControlleeRequestHandlerTest,
+       HasSkippedForEmptyFetchHandlerMetrics) {
+  base::HistogramTester tester;
+
+  version_->set_fetch_handler_type(
+      ServiceWorkerVersion::FetchHandlerType::kEmptyFetchHandler);
+  version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
+  registration_->SetWaitingVersion(version_);
+  base::RunLoop loop;
+  context()->registry()->StoreRegistration(
+      registration_.get(), version_.get(),
+      base::BindLambdaForTesting(
+          [&loop](blink::ServiceWorkerStatusCode status) { loop.Quit(); }));
+  loop.Run();
+
+  // Conduct a main resource load.
+  ServiceWorkerRequestTestResources test_resources(
+      this, GURL("https://host/scope/doc"),
+      network::mojom::RequestDestination::kDocument);
+  test_resources.MaybeCreateLoader();
+  EXPECT_FALSE(test_resources.loader());
+  EXPECT_FALSE(version_->HasControllee());
+
+  base::RunLoop().RunUntilIdle();
+
+  // Since the ServiceWorkerSkipIgnorableFetchHandler feature is disabled,
+  // the loader should be true.
+  EXPECT_TRUE(test_resources.loader());
+  EXPECT_TRUE(version_->HasControllee());
+  // Since the feature is disabled, the fetch handler should not be skipped.
+  tester.ExpectUniqueSample("ServiceWorker.FetchHandler.SkipReason",
+                            ServiceWorkerControlleeRequestHandler::
+                                FetchHandlerSkipReason::kNotSkipped,
+                            1);
+  tester.ExpectUniqueSample(
+      "ServiceWorker.FetchHandler."
+      "TypeAtContinueWithActivatedVersion",
+      ServiceWorkerVersion::FetchHandlerType::kEmptyFetchHandler, 1);
+
+  test_resources.ResetHandler();
+}
+
 class ServiceWorkerSkipEmptyFetchHandlerTest
     : public ServiceWorkerControlleeRequestHandlerTest {
  public:
@@ -513,6 +593,10 @@
                             ServiceWorkerControlleeRequestHandler::
                                 FetchHandlerSkipReason::kNotSkipped,
                             1);
+  tester.ExpectUniqueSample(
+      "ServiceWorker.FetchHandler."
+      "TypeAtContinueWithActivatedVersion",
+      ServiceWorkerVersion::FetchHandlerType::kNotSkippable, 1);
 
   test_resources.ResetHandler();
 }
@@ -549,6 +633,10 @@
       ServiceWorkerControlleeRequestHandler::FetchHandlerSkipReason::
           kSkippedForEmptyFetchHandler,
       1);
+  tester.ExpectUniqueSample(
+      "ServiceWorker.FetchHandler."
+      "TypeAtContinueWithActivatedVersion",
+      ServiceWorkerVersion::FetchHandlerType::kEmptyFetchHandler, 1);
 
   test_resources.ResetHandler();
 }
diff --git a/content/browser/webauth/authenticator_impl_unittest.cc b/content/browser/webauth/authenticator_impl_unittest.cc
index 9e5f52db..3b08529 100644
--- a/content/browser/webauth/authenticator_impl_unittest.cc
+++ b/content/browser/webauth/authenticator_impl_unittest.cc
@@ -86,6 +86,7 @@
 #include "mojo/public/cpp/base/big_buffer.h"
 #include "mojo/public/cpp/bindings/pending_receiver.h"
 #include "mojo/public/cpp/bindings/remote.h"
+#include "mojo/public/cpp/system/functions.h"
 #include "services/data_decoder/gzipper.h"
 #include "services/data_decoder/public/cpp/test_support/in_process_data_decoder.h"
 #include "services/network/public/mojom/network_context.mojom.h"
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_ar.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_ar.xtb
index e9ff6f30..e3d6c62 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_ar.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_ar.xtb
@@ -41,6 +41,7 @@
 <translation id="2918709798697875261">‏تطلُب مؤسستك منك البقاء في وضع تسجيل الخروج من Chromium.</translation>
 <translation id="2942241131342758843">‏يمكنك استخدام Chromium كمتصفّح تلقائي لفتح الروابط والبحث من خلال الأدوات وملء كلمات المرور تلقائيًا في التطبيقات الأخرى.</translation>
 <translation id="2977470724722393594">‏Chromium محدّث</translation>
+<translation id="3102849287235003384">‏للخروج من حسابك على Google في جميع المواقع الإلكترونية، عليك <ph name="BEGIN_LINK" />الخروج من Chromium<ph name="END_LINK" />.</translation>
 <translation id="3256316712990552818">‏تم النسخ إلى Chromium</translation>
 <translation id="3344973607274501920">‏تعذّر على متصفِّح Chromium التحقُّق من كلمات المرور. يُرجى التحقُّق من اتصال الإنترنت.</translation>
 <translation id="3472200483164753384">‏غير متاح على Chromium Canary</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_fa.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_fa.xtb
index b1e4905..45668fec 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_fa.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_fa.xtb
@@ -41,6 +41,7 @@
 <translation id="2918709798697875261">‏سازمانتان از شما می‌خواهد خارج از سیستم Chromium باقی بمانید.</translation>
 <translation id="2942241131342758843">‏برای باز کردن پیوندها، جستجوی ابزارک‌ها، و تکمیل خودکار گذرواژه‌ها در دیگر برنامه‌ها، به‌طور پیش‌فرض از Chromium استفاده کنید</translation>
 <translation id="2977470724722393594">‏Chromium به‌روز است</translation>
+<translation id="3102849287235003384">‏برای خارج شدن از سیستم «حساب Google» خود در همه وب‌سایت‌ها، <ph name="BEGIN_LINK" />از سیستم Chromium خارج شوید<ph name="END_LINK" />.</translation>
 <translation id="3256316712990552818">‏به Chromium کپی شد</translation>
 <translation id="3344973607274501920">‏Chromium نمی‌تواند گذرواژه‌هایتان را بررسی کند. اتصال اینترنت را بررسی کنید.</translation>
 <translation id="3472200483164753384">‏در Chromium Canary پشتیبانی نمی‌شود</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_my.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_my.xtb
index 2ec3c09..ca2676b 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_my.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_my.xtb
@@ -67,6 +67,7 @@
 <translation id="5308226104666789935">Chromium က အပ်ဒိတ်များကို စစ်ဆေး၍မရပါ</translation>
 <translation id="5396916991083608703">Chromium ကို မူရင်းအဖြစ် သတ်မှတ်မလား။</translation>
 <translation id="5521125884468363740">Chromium အသုံးပြုသည့် နေရာမှန်သမျှမှ သင့်တဘ်များကိုကြည့်ရန် လက်မှတ်ထိုးဝင်ပြီး စင့်ခ်လုပ်ခြင်းကိုဖွင့်ပါ</translation>
+<translation id="5522297504975449419">Chromium ဝန်ဆောင်မှုအချို့ကို ရနိုင်တော့မည်မဟုတ်ပါ။</translation>
 <translation id="5573014823074921752">Chromium အကြံပြုချက်။ နောက်ထပ် တဘ်ရွေးချယ်စရာများအတွက် ဖန်သားပြင်၏ အောက်ခြေ သို့မဟုတ် ထိပ်ဘက်ရှိ ကိရိယာဘားအတွင်း 'တဘ်ကို ပြရန်' ခလုတ်ကို တို့၍ဖိထားပါ။</translation>
 <translation id="5700709190537129682">Chromium က သင့်စကားဝှက်များကို စစ်ဆေး၍မရပါ</translation>
 <translation id="5777187867430702742">Chromium စာမျက်နှာ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_or.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_or.xtb
index a48d5e2..9096b58 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_or.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_or.xtb
@@ -41,6 +41,7 @@
 <translation id="2918709798697875261">ଆପଣଙ୍କ ସଂସ୍ଥା ପାଇଁ ଆପଣଙ୍କୁ Chromiumରୁ ସାଇନ୍ ଆଉଟ୍ କରି ରହିବାର ଆବଶ୍ୟକତା ଅଛି।</translation>
 <translation id="2942241131342758843">ଲିଙ୍କଗୁଡ଼ିକୁ ଖୋଲିବା, ୱିଜେଟଗୁଡ଼ିକରୁ ସନ୍ଧାନ କରିବା ଏବଂ ଅନ୍ୟ ଆପଗୁଡ଼ିକରେ ପାସୱାର୍ଡଗୁଡ଼ିକୁ ସ୍ୱତଃପୂରଣ କରିବା ପାଇଁ Chromiumକୁ ଡିଫଲ୍ଟ ଭାବେ ବ୍ୟବହାର କରନ୍ତୁ</translation>
 <translation id="2977470724722393594">Chromium ଅପ୍‍-ଟୁ-ଡେଟ୍‍ ଅଛି</translation>
+<translation id="3102849287235003384">ସମସ୍ତ ୱେବସାଇଟରେ ଆପଣଙ୍କ Google ଆକାଉଣ୍ଟରୁ ସାଇନ ଆଉଟ କରିବା ପାଇଁ, <ph name="BEGIN_LINK" />Chromiumରୁ ସାଇନ ଆଉଟ କରନ୍ତୁ<ph name="END_LINK" />।</translation>
 <translation id="3256316712990552818">Chromiumକୁ କପି କରାଗଲା</translation>
 <translation id="3344973607274501920">Chromium ଆପଣଙ୍କ ପାସୱାର୍ଡଗୁଡ଼ିକୁ ଯାଞ୍ଚ କରିପାରିଲା ନାହିଁ। ଆପଣଙ୍କ ଇଣ୍ଟର୍ନେଟ୍ ସଂଯୋଗ ଯାଞ୍ଚ କରି ଦେଖନ୍ତୁ।</translation>
 <translation id="3472200483164753384">Chromium Canaryରେ ସମର୍ଥିତ ନୁହେଁ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_ur.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_ur.xtb
index 109f4a1..2c3cf9e 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_ur.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_ur.xtb
@@ -41,6 +41,7 @@
 <translation id="2918709798697875261">‏آپ کی تنظیم کا تقاضہ ہے کہ آپ Chromium سے سائن آؤٹ رہیں۔</translation>
 <translation id="2942241131342758843">‏لنکس کھولنے، ویجیٹس سے تلاش کرنے اور دیگر ایپس میں پاس ورڈز کو آٹو فل کرنے کیلئے، Chromium کا بطور ڈیفالٹ استعمال کریں</translation>
 <translation id="2977470724722393594">‏Chromium اپ ٹو ڈیٹ ہے</translation>
+<translation id="3102849287235003384">‏سبھی ویب سائٹس پر اپنے Google اکاؤنٹ سے سائن آؤٹ کرنے کے لیے <ph name="BEGIN_LINK" />Chromium سے سائن آؤٹ کریں<ph name="END_LINK" />۔</translation>
 <translation id="3256316712990552818">‏Chromium میں کاپی کر دیا گیا</translation>
 <translation id="3344973607274501920">‏Chromium آپ کے پاس ورڈز چیک نہیں کر سکا۔ اپنا انٹرنیٹ کنکشن چیک کرنے کی کوشش کریں۔</translation>
 <translation id="3472200483164753384">‏Chromium Canary پر تعاون یافتہ نہیں ہے</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_zh-HK.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_zh-HK.xtb
index e6cb92d..3630055 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_zh-HK.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_zh-HK.xtb
@@ -41,6 +41,7 @@
 <translation id="2918709798697875261">您的機構要求您保持登出 Chromium。</translation>
 <translation id="2942241131342758843">預設使用 Chromium 來開啟連結、從小工具搜尋,以及在其他應用程式中自動填入密碼</translation>
 <translation id="2977470724722393594">Chromium 已是最新版本</translation>
+<translation id="3102849287235003384">如要從所有網站中登出 Google 帳戶,請<ph name="BEGIN_LINK" />登出 Chromium<ph name="END_LINK" />。</translation>
 <translation id="3256316712990552818">已複製至 Chromium</translation>
 <translation id="3344973607274501920">Chromium 無法檢查密碼,請檢查互聯網連線。</translation>
 <translation id="3472200483164753384">Chromium Canary 上不支援此功能</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_zh-TW.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_zh-TW.xtb
index c170d841..cd07353 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_zh-TW.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_zh-TW.xtb
@@ -41,6 +41,7 @@
 <translation id="2918709798697875261">貴機構要求你在 Chromium 保持登出狀態。</translation>
 <translation id="2942241131342758843">預設使用 Chromium 來開啟連結、從小工具搜尋,以及自動在其他應用程式中填入密碼</translation>
 <translation id="2977470724722393594">Chromium 目前是最新版本</translation>
+<translation id="3102849287235003384">如要從所有網站中登出 Google 帳戶,請<ph name="BEGIN_LINK" />登出 Chromium<ph name="END_LINK" />。</translation>
 <translation id="3256316712990552818">已複製到 Chromium</translation>
 <translation id="3344973607274501920">Chromium 無法檢查你的密碼,請查看網際網路連線狀態。</translation>
 <translation id="3472200483164753384">Chromium Canary 不支援這項功能</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ar.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ar.xtb
index 783307d..002c371 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ar.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ar.xtb
@@ -28,6 +28,7 @@
 <translation id="2576431527583832481">‏لقد أصبح Chrome أفضل من ذي قبل! يتوفر إصدار جديد.</translation>
 <translation id="257708665678654955">‏هل تريد أن يعرض Google Chrome ترجمة صفحات <ph name="LANGUAGE_NAME" /> من الموقع الإلكتروني هذا في المرة القادمة؟</translation>
 <translation id="2671426118752779020">‏يمكنك استخدام كلمات المرور التي حفظتها في "مدير كلمات المرور" من Google في التطبيقات الأخرى على هاتف iPhone.</translation>
+<translation id="2689064829982324496">‏للخروج من حسابك على Google في جميع المواقع الإلكترونية، عليك <ph name="BEGIN_LINK" />تسجيل الخروج من Chrome<ph name="END_LINK" />.</translation>
 <translation id="2695886661449553974">‏تعذّر على Chrome البحث عن تحديثات. يُرجى إعادة المحاولة لاحقًا.</translation>
 <translation id="2732745070297234559">‏تعذّر على متصفِّح Chrome التحقُّق من جميع كلمات المرور. يُرجى إعادة المحاولة غدًا.</translation>
 <translation id="2869959624320573933">‏تسجيل الدخول إلى Chrome</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_fa.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_fa.xtb
index 9d34e9f1..1b63f68 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_fa.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_fa.xtb
@@ -28,6 +28,7 @@
 <translation id="2576431527583832481">‏‫Chrome بهتر شده است! نسخه جدید آن در دسترس است.</translation>
 <translation id="257708665678654955">‏می‌خواهید دفعه بعد Google Chrome ترجمه صفحات <ph name="LANGUAGE_NAME" /> این سایت را به شما پیشنهاد دهد؟</translation>
 <translation id="2671426118752779020">‏می‌توانید از گذرواژه‌های ذخیره‌شده در «مدیر گذرواژه Google» در برنامه‌های دیگر iPhone خودتان استفاده کنید.</translation>
+<translation id="2689064829982324496">‏برای خارج شدن از سیستم «حساب Google» خود در همه وب‌سایت‌ها، <ph name="BEGIN_LINK" />از سیستم Chrome خارج شوید<ph name="END_LINK" />.</translation>
 <translation id="2695886661449553974">‏Chrome موفق نشد به‌روزرسانی‌ها را بررسی کند. بعداً دوباره امتحان کنید.</translation>
 <translation id="2732745070297234559">‏Chrome نمی‌تواند همه گذرواژه‌هایتان را بررسی کند. فردا دوباره امتحان کنید.</translation>
 <translation id="2869959624320573933">‏ورود به سیستم Chrome</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_my.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_my.xtb
index 538460d..0edcc70 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_my.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_my.xtb
@@ -78,6 +78,7 @@
 <translation id="5998675059699164418">Chrome သုံးရန်အတွက် လက်မှတ်ထိုးဝင်ရန် သင့်အဖွဲ့အစည်းက သတ်မှတ်ထားသည်။</translation>
 <translation id="6054613632208573261">Chrome ကို ပုံသေသုံးပါ</translation>
 <translation id="6063091872902370735">Chrome သို့ လက်မှတ်ထိုးဝင်ခွင့်ပြုရန်</translation>
+<translation id="6110625574506755980">Chrome ဝန်ဆောင်မှုအချို့ကို ရနိုင်တော့မည်မဟုတ်ပါ။</translation>
 <translation id="6181930887571472871">Chrome သို့ ပြောင်းပါ</translation>
 <translation id="6238746320622508509">သင့် 'ရုပ်ဖျက်တဘ်များ' လော့ခ်ချရန် Chrome ကို ခွင့်ပြုပါ။</translation>
 <translation id="6387994324662817823">စကားဝှက်များကို ဤစက်တွင်သာရှိသော ‘Google စကားဝှက်မန်နေဂျာ’ သို့ သိမ်းထားသည်။</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_or.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_or.xtb
index b4242aad..8dc8ae2 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_or.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_or.xtb
@@ -28,6 +28,7 @@
 <translation id="2576431527583832481">Chromium ଏବେ ଉନ୍ନତ ହୋଇଯାଇଛି! ଗୋଟିଏ ନୂଆ ସଂସ୍କରଣ ଉପଲବ୍ଧ ଅଛି।</translation>
 <translation id="257708665678654955">ଆପଣ କ’ଣ ଚାହୁଁଛନ୍ତି ଯେ Google Chrome ପରବର୍ତ୍ତୀ ସମୟରେ ଏହି ସାଇଟ୍‌ର <ph name="LANGUAGE_NAME" /> ପୃଷ୍ଠାଗୁଡ଼ିକର ଅନୁବାଦ କରିବା ଅଫର୍‌ ଦେଉ?</translation>
 <translation id="2671426118752779020">ଆପଣଙ୍କ iPhoneରେ ଅନ୍ୟ ଆପଗୁଡ଼ିକରେ ଥିବା Google ପାସୱାର୍ଡ ମ୍ୟାନେଜରରେ ଆପଣ ସେଭ କରିଥିବା ପାସୱାର୍ଡଗୁଡ଼ିକୁ ବ୍ୟବହାର କରିପାରିବେ।</translation>
+<translation id="2689064829982324496">ସମସ୍ତ ୱେବସାଇଟରେ ଆପଣଙ୍କ Google ଆକାଉଣ୍ଟରୁ ସାଇନ ଆଉଟ କରିବା ପାଇଁ, <ph name="BEGIN_LINK" />Chromeରୁ ସାଇନ ଆଉଟ କରନ୍ତୁ<ph name="END_LINK" />।</translation>
 <translation id="2695886661449553974">ଅପଡେଟଗୁଡ଼ିକ ଅଛି କି ନାହିଁ ତାହା Chrome ଯାଞ୍ଚ କରିପାରିଲା ନାହିଁ। ପରେ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।</translation>
 <translation id="2732745070297234559">Chrome ସମସ୍ତ ପାସୱାର୍ଡକୁ ଯାଞ୍ଚ କରିପାରିଲା ନାହିଁ। ଆସନ୍ତାକାଲି ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।</translation>
 <translation id="2869959624320573933">Chromeରେ ସାଇନ୍ ଇନ୍ କରନ୍ତୁ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ur.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ur.xtb
index 46fa75b..dc19ae8 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ur.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ur.xtb
@@ -28,6 +28,7 @@
 <translation id="2576431527583832481">‏Chrome اب بہتر ہو گیا! ایک نیا ورژن دستیاب ہے۔</translation>
 <translation id="257708665678654955">‏کیا آپ چاہیں گے کہ Google Chrome اگلی بار اس سائٹ سے <ph name="LANGUAGE_NAME" /> صفحات کا ترجمہ کرنے کی پیشکش کرے؟</translation>
 <translation id="2671426118752779020">‏آپ اپنے iPhone پر Google پاس ورڈ مینیجر میں اپنے محفوظ کردہ پاس ورڈز کو دیگر ایپس میں استعمال کر سکتے ہیں۔</translation>
+<translation id="2689064829982324496">‏سبھی ویب سائٹس پر اپنے Google اکاؤنٹ سے سائن آؤٹ کرنے کے لیے <ph name="BEGIN_LINK" />Chrome سے سائن آؤٹ کریں<ph name="END_LINK" />۔</translation>
 <translation id="2695886661449553974">‏Chrome اپ ڈیٹس چیک نہیں کر سکا۔ بعد میں دوبارہ کوشش کریں۔</translation>
 <translation id="2732745070297234559">‏Chrome سبھی پاس ورڈز چیک نہیں کر سکا۔ کل دوبارہ کوشش کریں۔</translation>
 <translation id="2869959624320573933">‏Chrome میں سائن ان کریں</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_zh-HK.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_zh-HK.xtb
index a66d75e..e589a64c 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_zh-HK.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_zh-HK.xtb
@@ -28,6 +28,7 @@
 <translation id="2576431527583832481">Chrome 現在更進一步!歡迎您升級使用新版本。</translation>
 <translation id="257708665678654955">您希望 Google Chrome 將來翻譯此網站的<ph name="LANGUAGE_NAME" />頁面嗎?</translation>
 <translation id="2671426118752779020">您可在 iPhone 上的其他應用程式使用您儲存到「Google 密碼管理工具」的密碼。</translation>
+<translation id="2689064829982324496">如要從所有網站中登出 Google 帳戶,請<ph name="BEGIN_LINK" />登出 Chrome<ph name="END_LINK" />。</translation>
 <translation id="2695886661449553974">Chrome 無法檢查更新,請稍後再試。</translation>
 <translation id="2732745070297234559">Chrome 無法檢查所有密碼。請明天再試。</translation>
 <translation id="2869959624320573933">登入 Chrome</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_zh-TW.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_zh-TW.xtb
index c41cee7..2f152b3 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_zh-TW.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_zh-TW.xtb
@@ -28,6 +28,7 @@
 <translation id="2576431527583832481">Chrome 現在變得更進步了!歡迎你升級使用新版本。</translation>
 <translation id="257708665678654955">下次造訪這個網站時,需要 Google Chrome 為您翻譯其中的<ph name="LANGUAGE_NAME" />網頁嗎?</translation>
 <translation id="2671426118752779020">你可以在 iPhone 上的其他應用程式,使用儲存至 Google 密碼管理員的密碼。</translation>
+<translation id="2689064829982324496">如要從所有網站中登出 Google 帳戶,請<ph name="BEGIN_LINK" />登出 Chrome<ph name="END_LINK" />。</translation>
 <translation id="2695886661449553974">Chrome 無法檢查更新,請稍後再試。</translation>
 <translation id="2732745070297234559">Chrome 無法檢查所有密碼,請明天再試。</translation>
 <translation id="2869959624320573933">登入 Chrome</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ky.xtb b/ios/chrome/app/strings/resources/ios_strings_ky.xtb
index 5389a554..7341e4e 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ky.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ky.xtb
@@ -280,6 +280,7 @@
 <translation id="3277021493514034324">Сайттын дареги көчүрүлдү</translation>
 <translation id="3285962946108803577">Баракты бөлүшүү...</translation>
 <translation id="3290875554372353449">Аккаунт тандаңыз</translation>
+<translation id="3305294846493618482">дагы</translation>
 <translation id="3311748811247479259">Өчүк</translation>
 <translation id="3324193307694657476">2-дарек</translation>
 <translation id="3328801116991980348">Сайт жөнүндө маалымат</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_pl.xtb b/ios/chrome/app/strings/resources/ios_strings_pl.xtb
index ff23bc5..eebb95c 100644
--- a/ios/chrome/app/strings/resources/ios_strings_pl.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_pl.xtb
@@ -108,7 +108,7 @@
 <translation id="1753905327828125965">Najczęstsze</translation>
 <translation id="1803264062614276815">Imię i nazwisko posiadacza karty</translation>
 <translation id="1809939268435598390">Usuń folder</translation>
-<translation id="1813414402673211292">Wyczyść historię przeglądania</translation>
+<translation id="1813414402673211292">Wyczyść dane przeglądania</translation>
 <translation id="1815941218935345331">Kod dostępu</translation>
 <translation id="1820259098641718022">Dodano do listy Do przeczytania</translation>
 <translation id="1832848789136765277">Aby zapewnić sobie stały dostęp do zsynchronizowanych danych, potwierdź swoją tożsamość</translation>
@@ -595,7 +595,7 @@
 <translation id="6012140227487808125">Szyfruję…</translation>
 <translation id="6021332621416007159">Otwórz w...</translation>
 <translation id="6027945736510816438">Czy chodziło Ci o <ph name="WEBSITE" />?</translation>
-<translation id="6036215966221662377">Wyczyść historię przeglądania</translation>
+<translation id="6036215966221662377">Wyczyść dane przeglądania</translation>
 <translation id="6036514205982097558">Wszystkie Twoje karty w 1 przeglądarce</translation>
 <translation id="6039429417015973673"><ph name="TITLE" />, <ph name="PUBLISHER_INFORMATION" />, <ph name="PUBLICATION_DATE" /></translation>
 <translation id="6040143037577758943">Zamknij</translation>
@@ -834,7 +834,7 @@
 <translation id="7884694604461143138">Historia wyszukiwania (liczba wyników: <ph name="COUNT" />)</translation>
 <translation id="7887198238286927132">Aby chronić Twoją prywatność, Chrome nie będzie automatycznie wypełniać tego pola.</translation>
 <translation id="7911190106180361398">Twoja organizacja nie pozwala Ci synchronizować wszystkich danych.</translation>
-<translation id="7920949005883349320">Prywatność i zabezpieczenia</translation>
+<translation id="7920949005883349320">Prywatność i bezpieczeństwo</translation>
 <translation id="7930998711684428189">Ostrzega, jeśli wskutek naruszenia bezpieczeństwa danych doszło do ujawnienia haseł.</translation>
 <translation id="7938254975914653459">FaceTime</translation>
 <translation id="7939128259257418052">Eksportuj hasła…</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ta.xtb b/ios/chrome/app/strings/resources/ios_strings_ta.xtb
index 82872010..7bf3e7f 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ta.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ta.xtb
@@ -280,6 +280,7 @@
 <translation id="3277021493514034324">தள முகவரி நகலெடுக்கப்பட்டது</translation>
 <translation id="3285962946108803577">பக்கத்தைப் பகிர்...</translation>
 <translation id="3290875554372353449">கணக்கைத் தேர்வுசெய்க</translation>
+<translation id="3305294846493618482">மேலும்</translation>
 <translation id="3311748811247479259">ஆஃப்</translation>
 <translation id="3324193307694657476">முகவரி 2</translation>
 <translation id="3328801116991980348">தளம் குறித்த தகவல்</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_uz.xtb b/ios/chrome/app/strings/resources/ios_strings_uz.xtb
index 16276ee8..2015b54 100644
--- a/ios/chrome/app/strings/resources/ios_strings_uz.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_uz.xtb
@@ -280,6 +280,7 @@
 <translation id="3277021493514034324">Sayt manzilidan nusxa olindi</translation>
 <translation id="3285962946108803577">Sahifani ulashish...</translation>
 <translation id="3290875554372353449">Hisobni tanlang</translation>
+<translation id="3305294846493618482">yana</translation>
 <translation id="3311748811247479259">Yoqilmagan</translation>
 <translation id="3324193307694657476">Manzil, 2-qator</translation>
 <translation id="3328801116991980348">Sayt haqida ma’lumot</translation>
diff --git a/ios/chrome/browser/ui/ntp/new_tab_page_view_controller.mm b/ios/chrome/browser/ui/ntp/new_tab_page_view_controller.mm
index 3ae0c5f..cee9002 100644
--- a/ios/chrome/browser/ui/ntp/new_tab_page_view_controller.mm
+++ b/ios/chrome/browser/ui/ntp/new_tab_page_view_controller.mm
@@ -1171,7 +1171,7 @@
 // Sets the y content offset of the NTP collection view.
 - (void)setContentOffset:(CGFloat)offset {
   self.collectionView.contentOffset = CGPointMake(0, offset);
-  self.scrolledIntoFeed = offset >= -[self offsetWhenScrolledIntoFeed];
+  self.scrolledIntoFeed = offset > [self offsetWhenScrolledIntoFeed];
   if (self.feedHeaderViewController) {
     [self.feedHeaderViewController toggleBackgroundBlur:self.scrolledIntoFeed
                                                animated:NO];
diff --git a/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_ar.xtb b/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_ar.xtb
index 7d3e45e..fdebfbf 100644
--- a/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_ar.xtb
+++ b/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_ar.xtb
@@ -1,20 +1,32 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="ar">
+<translation id="2513892053093488070">البحث الصوتي</translation>
+<translation id="2535710892645968259">‏يمكنك الانتقال إلى لعبة الديناصور في Chrome من شاشة القفل.</translation>
 <translation id="2542770169955243077">‏لعبة الديناصور في Chrome</translation>
 <translation id="302608144225178783">‏انتقِل إلى لعبة الديناصور في Chrome من الشاشة الرئيسية.</translation>
+<translation id="3296938369177810197">البحث الصوتي</translation>
 <translation id="3464120926993669599">البحث في وضع التصفُّح المتخفي</translation>
+<translation id="3501428580460217920">‏يمكنك استخدام متصفِّح Chrome للبحث أو التنقّل في علامة تبويب جديدة في وضع التصفُّح المتخفي.</translation>
 <translation id="3528874492835415837">‏البحث عن عنوان URL أو إدخاله</translation>
+<translation id="3798529146539130967">‏يمكنك البحث في متصفِّح Chrome باستخدام صوتك.</translation>
 <translation id="405442954313519726">البحث أو الانتقال إلى علامة تبويب جديدة في وضع التصفُّح المتخفي باستخدام صوتك أو رمز استجابة سريعة.</translation>
+<translation id="4557098988773644458">‏الانتقال إلى لعبة الديناصور في Chrome</translation>
 <translation id="4954445889641385956">‏البحث عن عنوان URL أو إدخاله</translation>
+<translation id="5234725349196694896">‏يمكنك البحث في متصفِّح Chrome باستخدام محرك البحث المفضَّل لديك.</translation>
 <translation id="5277852985315196237">‏البحث عن عنوان URL أو إدخاله</translation>
 <translation id="529497070985873480">‏لعبة الديناصور في Chrome</translation>
 <translation id="5683557219437283801">البحث الصوتي</translation>
 <translation id="6179961764474023795">إجراءات سريعة</translation>
+<translation id="6336802729091778259">‏لعبة الديناصور في Chrome</translation>
+<translation id="6663288906398689853">بحث</translation>
 <translation id="6855322554930231468">بحث</translation>
+<translation id="7010831364920321713">البحث في وضع التصفُّح المتخفي</translation>
 <translation id="7048549665319929185">‏البحث عن 
 عنوان URL أو إدخاله</translation>
 <translation id="7317302007099170473">مسح رمز الاستجابة السريعة ضوئيًا</translation>
+<translation id="744668050028871192">بحث</translation>
 <translation id="8104498668011127805">‏الانتقال إلى لعبة الديناصور في Chrome</translation>
+<translation id="8171952085734471362">البحث في وضع التصفُّح المتخفي</translation>
 <translation id="8564942608461410346">‏يمكنك البحث في متصفِّح Chrome باستخدام محرك البحث المفضَّل لديك.</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_fa.xtb b/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_fa.xtb
index e6f668a2..645d53e 100644
--- a/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_fa.xtb
+++ b/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_fa.xtb
@@ -1,20 +1,32 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="fa">
+<translation id="2513892053093488070">جستجوی گفتاری</translation>
+<translation id="2535710892645968259">‏از صفحه قفل سریع به «بازی دایناسور Chrome» بروید.</translation>
 <translation id="2542770169955243077">‏بازی Chrome Dino</translation>
 <translation id="302608144225178783">‏از «صفحه اصلی» سریع به بازی Chrome Dino بروید.</translation>
+<translation id="3296938369177810197">جستجوی گفتاری</translation>
 <translation id="3464120926993669599">جستجوی ناشناس</translation>
+<translation id="3501428580460217920">‏در «برگه ناشناس» جدید Chrome جستجو یا پیمایش کنید.</translation>
 <translation id="3528874492835415837">جستجو یا تایپ نشانی وب</translation>
+<translation id="3798529146539130967">‏با صدایتان در Chrome جستجو کنید.</translation>
 <translation id="405442954313519726">در «حالت ناشناس» بااستفاده از رمزینه پاسخ‌سریع یا صدای خود، در برگه‌ای جدید جستجو یا پیمایش کنید.</translation>
+<translation id="4557098988773644458">‏رفتن به بازی دایناسور Chrome</translation>
 <translation id="4954445889641385956">جستجو یا تایپ نشانی وب</translation>
+<translation id="5234725349196694896">‏با موتور جستجوی دلخواهتان در Chrome جستجو کنید.</translation>
 <translation id="5277852985315196237">جستجو یا تایپ نشانی وب</translation>
 <translation id="529497070985873480">Chrome Dino</translation>
 <translation id="5683557219437283801">جستجوی گفتاری</translation>
 <translation id="6179961764474023795">کنش‌های سریع</translation>
+<translation id="6336802729091778259">‏بازی دایناسور Chrome</translation>
+<translation id="6663288906398689853">جستجو</translation>
 <translation id="6855322554930231468">جستجو</translation>
+<translation id="7010831364920321713">جستجوی ناشناس</translation>
 <translation id="7048549665319929185">جستجو یا
 تایپ نشانی وب</translation>
 <translation id="7317302007099170473">اسکن رمزینه پاسخ‌سریع</translation>
+<translation id="744668050028871192">جستجو</translation>
 <translation id="8104498668011127805">‏رفتن به بازی Chrome Dino</translation>
+<translation id="8171952085734471362">جستجوی ناشناس</translation>
 <translation id="8564942608461410346">‏با موتور جستجوی دلخواهتان در Chrome جستجو کنید.</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_or.xtb b/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_or.xtb
index 6ceae58..340c021 100644
--- a/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_or.xtb
+++ b/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_or.xtb
@@ -1,19 +1,31 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="or">
+<translation id="2513892053093488070">ଭଏସ ସନ୍ଧାନ</translation>
+<translation id="2535710892645968259">ଆପଣଙ୍କ ଲକ ସ୍କ୍ରିନରୁ ସିଧା Chrome Dino ଗେମକୁ ଯାଆନ୍ତୁ।</translation>
 <translation id="2542770169955243077">Chrome Dino ଗେମ୍</translation>
 <translation id="302608144225178783">ଆପଣଙ୍କ ମୂଳ ସ୍କ୍ରିନରୁ ସିଧା Chrome Dino ଗେମକୁ ଯାଆନ୍ତୁ।</translation>
+<translation id="3296938369177810197">ଭଏସ ସନ୍ଧାନ</translation>
 <translation id="3464120926993669599">ଇନକଗ୍ନିଟୋ ମୋଡରେ ସନ୍ଧାନ</translation>
+<translation id="3501428580460217920">Chromeରେ ଏକ ନୂଆ ଇନକଗ୍ନିଟୋ ଟାବରେ ସନ୍ଧାନ କରନ୍ତୁ କିମ୍ବା ନାଭିଗେଟ କରନ୍ତୁ।</translation>
 <translation id="3528874492835415837">ସନ୍ଧାନ କରନ୍ତୁ କିମ୍ବା URL ଟାଇପ୍ କରନ୍ତୁ</translation>
+<translation id="3798529146539130967">ଆପଣଙ୍କ ଭଏସ ବ୍ୟବହାର କରି Chromeରେ ସନ୍ଧାନ କରନ୍ତୁ।</translation>
 <translation id="405442954313519726">ଆପଣଙ୍କ ଭଏସ୍ ବ୍ୟବହାର କରି କିମ୍ବା ଏକ QR କୋଡ୍ ସହିତ ଇନକଗ୍ନିଟୋ ମୋଡରେ, ଏକ ନୂଆ ଟାବରେ ସନ୍ଧାନ କିମ୍ବା ନାଭିଗେଟ୍ କରନ୍ତୁ।</translation>
+<translation id="4557098988773644458">Chrome Dino ଗେମକୁ ସିଧା ଯାଆନ୍ତୁ</translation>
 <translation id="4954445889641385956">ସନ୍ଧାନ କରନ୍ତୁ କିମ୍ବା URL ଟାଇପ୍ କରନ୍ତୁ</translation>
+<translation id="5234725349196694896">ଆପଣଙ୍କ ପସନ୍ଦର ସନ୍ଧାନ ଇଞ୍ଜିନ ବ୍ୟବହାର କରି Chromeରେ ସନ୍ଧାନ କରନ୍ତୁ।</translation>
 <translation id="5277852985315196237">ସନ୍ଧାନ କରନ୍ତୁ କିମ୍ବା URL ଟାଇପ୍ କରନ୍ତୁ</translation>
 <translation id="529497070985873480">Chrome Dino</translation>
 <translation id="5683557219437283801">ଭଏସ୍ ସନ୍ଧାନ କରନ୍ତୁ</translation>
 <translation id="6179961764474023795">ଦ୍ରୁତ କାର୍ଯ୍ୟଗୁଡ଼ିକ</translation>
+<translation id="6336802729091778259">Chrome Dino ଗେମ</translation>
+<translation id="6663288906398689853">ସନ୍ଧାନ କରନ୍ତୁ</translation>
 <translation id="6855322554930231468">ସନ୍ଧାନ କରନ୍ତୁ</translation>
+<translation id="7010831364920321713">ଇନକଗ୍ନିଟୋ ମୋଡରେ ସନ୍ଧାନ</translation>
 <translation id="7048549665319929185">ସନ୍ଧାନ କରନ୍ତୁ କିମ୍ବା URL ଟାଇପ୍ କରନ୍ତୁ</translation>
 <translation id="7317302007099170473">QR କୋଡ୍ ସ୍କାନ୍ କରନ୍ତୁ</translation>
+<translation id="744668050028871192">ସନ୍ଧାନ କରନ୍ତୁ</translation>
 <translation id="8104498668011127805">Chrome Dino ଗେମକୁ ସିଧା ଯାଆନ୍ତୁ</translation>
+<translation id="8171952085734471362">ଇନକଗ୍ନିଟୋ ମୋଡରେ ସନ୍ଧାନ</translation>
 <translation id="8564942608461410346">ଆପଣଙ୍କ ପସନ୍ଦର ସର୍ଚ୍ଚ ଇଞ୍ଜିନ୍ ବ୍ୟବହାର କରି Chromeରେ ସନ୍ଧାନ କରନ୍ତୁ।</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_ur.xtb b/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_ur.xtb
index 8d66bdaca0..5f17c5fb 100644
--- a/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_ur.xtb
+++ b/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_ur.xtb
@@ -1,19 +1,31 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="ur">
+<translation id="2513892053093488070">صوتی تلاش</translation>
+<translation id="2535710892645968259">‏اپنی مقفل اسکرین سے Chrome ڈائنوسار گیم کھیلیں۔</translation>
 <translation id="2542770169955243077">‏Chrome Dino گیم</translation>
 <translation id="302608144225178783">‏اپنی ہوم اسکرین سے Chrome ڈائنوسار گیم کھیلیں۔</translation>
+<translation id="3296938369177810197">صوتی تلاش</translation>
 <translation id="3464120926993669599">پوشیدگی تلاش</translation>
+<translation id="3501428580460217920">‏Chrome میں ایک نئے پوشیدگی ٹیب میں تلاش یا نیویگیٹ کریں۔</translation>
 <translation id="3528874492835415837">‏URL تلاش یا ٹائپ کریں</translation>
+<translation id="3798529146539130967">‏اپنی آواز کا استعمال کرتے ہوئے Chrome میں تلاش کریں۔</translation>
 <translation id="405442954313519726">‏نئے ٹیب میں، پوشیدگی وضع میں، اپنی آواز سے یا QR کوڈ سے تلاش کریں یا نیویگيٹ کریں۔</translation>
+<translation id="4557098988773644458">‏Chrome ڈائنوسار گیم کھیلیں</translation>
 <translation id="4954445889641385956">‏URL تلاش یا ٹائپ کریں</translation>
+<translation id="5234725349196694896">‏اپنے پسندیدہ سرچ انجن کے ساتھ Chrome میں تلاش کریں۔</translation>
 <translation id="5277852985315196237">‏URL تلاش یا ٹائپ کریں</translation>
 <translation id="529497070985873480">‏Chrome ڈائنوسار گیم</translation>
 <translation id="5683557219437283801">صوتی تلاش</translation>
 <translation id="6179961764474023795">فوری کارروائیاں</translation>
+<translation id="6336802729091778259">‏Chrome ڈائنوسار گیم</translation>
+<translation id="6663288906398689853">تلاش کریں</translation>
 <translation id="6855322554930231468">تلاش</translation>
+<translation id="7010831364920321713">پوشیدگی تلاش</translation>
 <translation id="7048549665319929185">‏تلاش یا URL ٹائپ کریں</translation>
 <translation id="7317302007099170473">‏QR کوڈ اسکین کریں</translation>
+<translation id="744668050028871192">تلاش کریں</translation>
 <translation id="8104498668011127805">‏Chrome ڈائنوسار گیم کھیلیں</translation>
+<translation id="8171952085734471362">پوشیدگی تلاش</translation>
 <translation id="8564942608461410346">‏اپنے پسندیدہ سرچ انجن کے ساتھ Chrome میں تلاش کریں۔</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_zh-HK.xtb b/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_zh-HK.xtb
index 9908d56..df785740 100644
--- a/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_zh-HK.xtb
+++ b/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_zh-HK.xtb
@@ -1,20 +1,32 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="zh-HK">
+<translation id="2513892053093488070">語音搜尋</translation>
+<translation id="2535710892645968259">從螢幕鎖定畫面進入 Chrome 恐龍遊戲。</translation>
 <translation id="2542770169955243077">Chrome 恐龍遊戲</translation>
 <translation id="302608144225178783">從主畫面進入 Chrome 恐龍遊戲。</translation>
+<translation id="3296938369177810197">語音搜尋</translation>
 <translation id="3464120926993669599">無痕搜尋</translation>
+<translation id="3501428580460217920">在 Chrome 中使用全新無痕分頁搜尋或瀏覽內容。</translation>
 <translation id="3528874492835415837">搜尋或者輸入網址</translation>
+<translation id="3798529146539130967">在 Chrome 中使用語音進行搜尋。</translation>
 <translation id="405442954313519726">透過新分頁、無痕模式、語音搜尋或 QR 碼來搜尋或瀏覽。</translation>
+<translation id="4557098988773644458">進入 Chrome 恐龍遊戲</translation>
 <translation id="4954445889641385956">搜尋或輸入網址</translation>
+<translation id="5234725349196694896">在 Chrome 中使用你喜好的搜尋引擎進行搜尋。</translation>
 <translation id="5277852985315196237">搜尋或輸入網址</translation>
 <translation id="529497070985873480">Chrome 恐龍</translation>
 <translation id="5683557219437283801">語音搜尋</translation>
 <translation id="6179961764474023795">快速操作</translation>
+<translation id="6336802729091778259">Chrome 恐龍遊戲</translation>
+<translation id="6663288906398689853">搜尋</translation>
 <translation id="6855322554930231468">搜尋</translation>
+<translation id="7010831364920321713">無痕搜尋</translation>
 <translation id="7048549665319929185">搜尋或
 輸入網址</translation>
 <translation id="7317302007099170473">掃瞄 QR 碼</translation>
+<translation id="744668050028871192">搜尋</translation>
 <translation id="8104498668011127805">進入 Chrome 恐龍遊戲</translation>
+<translation id="8171952085734471362">無痕搜尋</translation>
 <translation id="8564942608461410346">在 Chrome 使用您喜愛的搜尋引擎進行搜尋。</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_zh-TW.xtb b/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_zh-TW.xtb
index 448efc8..96cba3b 100644
--- a/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_zh-TW.xtb
+++ b/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_zh-TW.xtb
@@ -1,20 +1,32 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="zh-TW">
+<translation id="2513892053093488070">語音搜尋</translation>
+<translation id="2535710892645968259">從螢幕鎖定畫面進入 Chrome 恐龍遊戲。</translation>
 <translation id="2542770169955243077">Chrome 恐龍遊戲</translation>
 <translation id="302608144225178783">從主畫面進入 Chrome 恐龍遊戲。</translation>
+<translation id="3296938369177810197">語音搜尋</translation>
 <translation id="3464120926993669599">無痕搜尋</translation>
+<translation id="3501428580460217920">在 Chrome 中使用全新無痕分頁搜尋或瀏覽內容。</translation>
 <translation id="3528874492835415837">搜尋或輸入網址</translation>
+<translation id="3798529146539130967">在 Chrome 中使用語音進行搜尋。</translation>
 <translation id="405442954313519726">使用無痕模式、語音搜尋,或是 QR 圖碼進行搜尋,或在新分頁中瀏覽。</translation>
+<translation id="4557098988773644458">進入 Chrome 恐龍遊戲</translation>
 <translation id="4954445889641385956">搜尋或輸入網址</translation>
+<translation id="5234725349196694896">在 Chrome 中使用你喜好的搜尋引擎進行搜尋。</translation>
 <translation id="5277852985315196237">搜尋或輸入網址</translation>
 <translation id="529497070985873480">Chrome 恐龍</translation>
 <translation id="5683557219437283801">語音搜尋</translation>
 <translation id="6179961764474023795">快速操作</translation>
+<translation id="6336802729091778259">Chrome 恐龍遊戲</translation>
+<translation id="6663288906398689853">搜尋</translation>
 <translation id="6855322554930231468">搜尋</translation>
+<translation id="7010831364920321713">無痕搜尋</translation>
 <translation id="7048549665319929185">搜尋或
 輸入網址</translation>
 <translation id="7317302007099170473">掃描 QR 圖碼</translation>
+<translation id="744668050028871192">搜尋</translation>
 <translation id="8104498668011127805">進入 Chrome 恐龍遊戲</translation>
+<translation id="8171952085734471362">無痕搜尋</translation>
 <translation id="8564942608461410346">在 Chrome 中使用你最喜愛的搜尋引擎進行搜尋。</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.ios.zip.sha1 b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.ios.zip.sha1
index dd62e78..5cb0d2d1 100644
--- a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.ios.zip.sha1
+++ b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.ios.zip.sha1
@@ -1 +1 @@
-292b01a988bf83c426722c982c85c64990506093
\ No newline at end of file
+a1832948c434df7643b8f3caaf829493d1fe81aa
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.iossimulator.zip.sha1 b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.iossimulator.zip.sha1
index d528e85..ea4561f 100644
--- a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.iossimulator.zip.sha1
+++ b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.iossimulator.zip.sha1
@@ -1 +1 @@
-2f31b844e2662550d89a5f48874977eeb76bf168
\ No newline at end of file
+99c930a5ee8dfc56e89efd0b0776eb29793f84c6
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.ios.zip.sha1 b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.ios.zip.sha1
index 7b75665..fd1e05c 100644
--- a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.ios.zip.sha1
+++ b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.ios.zip.sha1
@@ -1 +1 @@
-226acd15289b4c0bcee7235a24fbb357556fdc9e
\ No newline at end of file
+9054ea5e1c1500c4f0f879e9e7147d29072e756d
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.iossimulator.zip.sha1 b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.iossimulator.zip.sha1
index d46ab57..6f12ef4 100644
--- a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.iossimulator.zip.sha1
+++ b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.iossimulator.zip.sha1
@@ -1 +1 @@
-d7eb29b9caf15def2b1d6093f8428402f240c013
\ No newline at end of file
+d6e8cf338456e072ccec5e10d9521e1777a05340
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.ios.zip.sha1 b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.ios.zip.sha1
index d2eabfa1..81cd7c1 100644
--- a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.ios.zip.sha1
+++ b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.ios.zip.sha1
@@ -1 +1 @@
-e26f56ebf41c4e45a1847205dab787eab24ef8f5
\ No newline at end of file
+48a2adb6b0a14beea9438d8802c81cac7cb91469
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.iossimulator.zip.sha1 b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.iossimulator.zip.sha1
index 5d3b7f0..560adfff 100644
--- a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.iossimulator.zip.sha1
+++ b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.iossimulator.zip.sha1
@@ -1 +1 @@
-e73658ed2303c5ab55ce6fe19d7cda1994405b4c
\ No newline at end of file
+a8e3560697dfd633936a826f5eec00a51316058f
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.ios.zip.sha1 b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.ios.zip.sha1
index a6669280..508ead5 100644
--- a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.ios.zip.sha1
+++ b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.ios.zip.sha1
@@ -1 +1 @@
-587a2e34c27cfc645eebd6b4742151ac70b5713f
\ No newline at end of file
+d07f2fb9a23a9ecc0580da8ceae636c6a145123c
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.iossimulator.zip.sha1 b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.iossimulator.zip.sha1
index 1bcf6cf..0526687 100644
--- a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.iossimulator.zip.sha1
+++ b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.iossimulator.zip.sha1
@@ -1 +1 @@
-66c3f911424e56141667a45064077a0750adc43f
\ No newline at end of file
+0b3ede7d285f41f817bf447e0399aa2128f17c90
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.ios.zip.sha1 b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.ios.zip.sha1
index 9002d64..024b477 100644
--- a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.ios.zip.sha1
+++ b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.ios.zip.sha1
@@ -1 +1 @@
-07ceb477e8e6a8c3bd2023102e8017bbd5bc3cd1
\ No newline at end of file
+5a6747a1ce7a59f9d226ac8376f852ab79f5cacb
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.iossimulator.zip.sha1 b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.iossimulator.zip.sha1
index e948427..1e57fa65 100644
--- a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.iossimulator.zip.sha1
+++ b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.iossimulator.zip.sha1
@@ -1 +1 @@
-719118d60825f72bfecd7bb77dfb603e9d6a8d24
\ No newline at end of file
+7882fa9961376c358dd89e26bb649881bdf4fd09
\ No newline at end of file
diff --git a/mojo/public/cpp/bindings/tests/associated_interface_unittest.cc b/mojo/public/cpp/bindings/tests/associated_interface_unittest.cc
index 438f05aa..9fc4bc87 100644
--- a/mojo/public/cpp/bindings/tests/associated_interface_unittest.cc
+++ b/mojo/public/cpp/bindings/tests/associated_interface_unittest.cc
@@ -32,6 +32,7 @@
 #include "mojo/public/cpp/bindings/remote.h"
 #include "mojo/public/cpp/bindings/shared_associated_remote.h"
 #include "mojo/public/cpp/bindings/unique_associated_receiver_set.h"
+#include "mojo/public/cpp/system/functions.h"
 #include "mojo/public/interfaces/bindings/tests/ping_service.mojom.h"
 #include "mojo/public/interfaces/bindings/tests/test_associated_interfaces.mojom.h"
 #include "testing/gtest/include/gtest/gtest.h"
diff --git a/mojo/public/cpp/test_support/lib/test_utils.cc b/mojo/public/cpp/test_support/lib/test_utils.cc
index 6fa00a53..71c74b8 100644
--- a/mojo/public/cpp/test_support/lib/test_utils.cc
+++ b/mojo/public/cpp/test_support/lib/test_utils.cc
@@ -12,6 +12,7 @@
 #include "base/bind.h"
 #include "base/callback_helpers.h"
 #include "mojo/public/cpp/system/core.h"
+#include "mojo/public/cpp/system/functions.h"
 #include "mojo/public/cpp/system/wait.h"
 #include "mojo/public/cpp/test_support/test_support.h"
 
diff --git a/net/http/transport_security_state_static.pins b/net/http/transport_security_state_static.pins
index a1ccf14..0a25b66a 100644
--- a/net/http/transport_security_state_static.pins
+++ b/net/http/transport_security_state_static.pins
@@ -43,9 +43,9 @@
 #   hash function for preloaded entries again (we have already done so once).
 #
 
-# Last updated: 2022-08-20 12:55 UTC
+# Last updated: 2022-08-21 12:54 UTC
 PinsListTimestamp
-1661000127
+1661086448
 
 TestSPKI
 sha256/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
diff --git a/net/quic/quic_chromium_client_stream.cc b/net/quic/quic_chromium_client_stream.cc
index 7a7c1ac..fe7e3a5 100644
--- a/net/quic/quic_chromium_client_stream.cc
+++ b/net/quic/quic_chromium_client_stream.cc
@@ -73,6 +73,9 @@
 }
 
 void QuicChromiumClientStream::Handle::OnInitialHeadersAvailable() {
+  if (headers_received_start_time_.is_null())
+    headers_received_start_time_ = base::TimeTicks::Now();
+
   if (!read_headers_callback_)
     return;  // Wait for ReadInitialHeaders to be called.
 
diff --git a/net/quic/quic_chromium_client_stream.h b/net/quic/quic_chromium_client_stream.h
index 9dd20919..f67150e 100644
--- a/net/quic/quic_chromium_client_stream.h
+++ b/net/quic/quic_chromium_client_stream.h
@@ -135,6 +135,10 @@
       return first_early_hints_time_;
     }
 
+    base::TimeTicks headers_received_start_time() const {
+      return headers_received_start_time_;
+    }
+
     // TODO(rch): Move these test-only methods to a peer, or else remove.
     void OnPromiseHeaderList(quic::QuicStreamId promised_id,
                              size_t frame_len,
@@ -213,6 +217,8 @@
     // The time at which the first 103 Early Hints response is received.
     base::TimeTicks first_early_hints_time_;
 
+    base::TimeTicks headers_received_start_time_;
+
     base::WeakPtrFactory<Handle> weak_factory_{this};
   };
 
diff --git a/net/quic/quic_http_stream.cc b/net/quic/quic_http_stream.cc
index 4eb5f99..8d78f375 100644
--- a/net/quic/quic_http_stream.cc
+++ b/net/quic/quic_http_stream.cc
@@ -381,6 +381,8 @@
     is_first_stream = stream_->IsFirstStream();
     load_timing_info->first_early_hints_time =
         stream_->first_early_hints_time();
+    load_timing_info->receive_headers_start =
+        stream_->headers_received_start_time();
   }
 
   if (is_first_stream) {
diff --git a/net/quic/quic_proxy_client_socket_unittest.cc b/net/quic/quic_proxy_client_socket_unittest.cc
index f237705..9dd9c00d 100644
--- a/net/quic/quic_proxy_client_socket_unittest.cc
+++ b/net/quic/quic_proxy_client_socket_unittest.cc
@@ -132,13 +132,13 @@
       quic::QuicConnectionIdLength connection_id_length,
       quic::QuicPacketNumberLength packet_number_length,
       quic::QuicStreamOffset offset) {
-    quic::QuicVariableLengthIntegerLength retry_token_length_length =
-        quic::VARIABLE_LENGTH_INTEGER_LENGTH_0;
-    quic::QuicVariableLengthIntegerLength length_length =
+    quiche::QuicheVariableLengthIntegerLength retry_token_length_length =
+        quiche::VARIABLE_LENGTH_INTEGER_LENGTH_0;
+    quiche::QuicheVariableLengthIntegerLength length_length =
         quic::QuicVersionHasLongHeaderLengths(version.transport_version) &&
                 include_version
-            ? quic::VARIABLE_LENGTH_INTEGER_LENGTH_2
-            : quic::VARIABLE_LENGTH_INTEGER_LENGTH_0;
+            ? quiche::VARIABLE_LENGTH_INTEGER_LENGTH_2
+            : quiche::VARIABLE_LENGTH_INTEGER_LENGTH_0;
     size_t min_data_length = 1;
     size_t min_packet_length =
         quic::NullEncrypter(quic::Perspective::IS_CLIENT)
diff --git a/net/quic/quic_test_packet_maker.cc b/net/quic/quic_test_packet_maker.cc
index b853ce4..373c1f17 100644
--- a/net/quic/quic_test_packet_maker.cc
+++ b/net/quic/quic_test_packet_maker.cc
@@ -1312,9 +1312,9 @@
       header_.version_flag) {
     if (long_header_type_ == quic::INITIAL) {
       header_.retry_token_length_length =
-          quic::VARIABLE_LENGTH_INTEGER_LENGTH_1;
+          quiche::VARIABLE_LENGTH_INTEGER_LENGTH_1;
     }
-    header_.length_length = quic::VARIABLE_LENGTH_INTEGER_LENGTH_2;
+    header_.length_length = quiche::VARIABLE_LENGTH_INTEGER_LENGTH_2;
   }
 }
 
diff --git a/net/third_party/quiche/BUILD.gn b/net/third_party/quiche/BUILD.gn
index 66aab49..4c4933b 100644
--- a/net/third_party/quiche/BUILD.gn
+++ b/net/third_party/quiche/BUILD.gn
@@ -262,6 +262,7 @@
     "src/quiche/quic/core/congestion_control/uber_loss_algorithm.cc",
     "src/quiche/quic/core/congestion_control/uber_loss_algorithm.h",
     "src/quiche/quic/core/congestion_control/windowed_filter.h",
+    "src/quiche/quic/core/connection_id_generator.h",
     "src/quiche/quic/core/crypto/aead_base_decrypter.cc",
     "src/quiche/quic/core/crypto/aead_base_decrypter.h",
     "src/quiche/quic/core/crypto/aead_base_encrypter.cc",
@@ -362,6 +363,8 @@
     "src/quiche/quic/core/crypto/transport_parameters.h",
     "src/quiche/quic/core/crypto/web_transport_fingerprint_proof_verifier.cc",
     "src/quiche/quic/core/crypto/web_transport_fingerprint_proof_verifier.h",
+    "src/quiche/quic/core/deterministic_connection_id_generator.cc",
+    "src/quiche/quic/core/deterministic_connection_id_generator.h",
     "src/quiche/quic/core/frames/quic_ack_frame.cc",
     "src/quiche/quic/core/frames/quic_ack_frame.h",
     "src/quiche/quic/core/frames/quic_ack_frequency_frame.cc",
@@ -776,6 +779,10 @@
       "src/quiche/epoll_server/platform/api/epoll_thread.h",
       "src/quiche/epoll_server/simple_epoll_server.cc",
       "src/quiche/epoll_server/simple_epoll_server.h",
+      "src/quiche/quic/core/io/event_loop_socket_factory.cc",
+      "src/quiche/quic/core/io/event_loop_socket_factory.h",
+      "src/quiche/quic/core/io/event_loop_tcp_client_socket.cc",
+      "src/quiche/quic/core/io/event_loop_tcp_client_socket.h",
       "src/quiche/quic/core/io/quic_default_event_loop.cc",
       "src/quiche/quic/core/io/quic_default_event_loop.h",
       "src/quiche/quic/core/io/quic_poll_event_loop.cc",
@@ -820,6 +827,8 @@
       "src/quiche/quic/platform/api/quic_ip_address_family.cc",
       "src/quiche/quic/platform/api/quic_ip_address_family.h",
       "src/quiche/quic/platform/api/quic_udp_socket_platform_api.h",
+      "src/quiche/quic/tools/connect_tunnel.cc",
+      "src/quiche/quic/tools/connect_tunnel.h",
       "src/quiche/quic/tools/quic_client.cc",
       "src/quiche/quic/tools/quic_client.h",
       "src/quiche/quic/tools/quic_client_default_network_helper.cc",
@@ -828,6 +837,8 @@
       "src/quiche/quic/tools/quic_client_epoll_network_helper.h",
       "src/quiche/quic/tools/quic_default_client.cc",
       "src/quiche/quic/tools/quic_default_client.h",
+      "src/quiche/quic/tools/quic_name_lookup.cc",
+      "src/quiche/quic/tools/quic_name_lookup.h",
       "src/quiche/quic/tools/quic_server.cc",
       "src/quiche/quic/tools/quic_server.h",
     ]
diff --git a/net/tools/quic/quic_simple_server.cc b/net/tools/quic/quic_simple_server.cc
index e3fe4489..a9dbd68 100644
--- a/net/tools/quic/quic_simple_server.cc
+++ b/net/tools/quic/quic_simple_server.cc
@@ -61,7 +61,8 @@
                      std::move(proof_source),
                      quic::KeyExchangeSource::Default()),
       read_buffer_(base::MakeRefCounted<IOBufferWithSize>(kReadBufferSize)),
-      quic_simple_server_backend_(quic_simple_server_backend) {
+      quic_simple_server_backend_(quic_simple_server_backend),
+      connection_id_generator_(quic::kQuicDefaultConnectionIdLength) {
   DCHECK(quic_simple_server_backend);
   Initialize();
 }
@@ -114,7 +115,8 @@
       std::make_unique<QuicSimpleServerSessionHelper>(
           quic::QuicRandom::GetInstance()),
       std::unique_ptr<quic::QuicAlarmFactory>(alarm_factory_),
-      quic_simple_server_backend_, quic::kQuicDefaultConnectionIdLength);
+      quic_simple_server_backend_, quic::kQuicDefaultConnectionIdLength,
+      connection_id_generator_);
   QuicSimpleServerPacketWriter* writer =
       new QuicSimpleServerPacketWriter(socket_.get(), dispatcher_.get());
   dispatcher_->InitializeWithWriter(writer);
diff --git a/net/tools/quic/quic_simple_server.h b/net/tools/quic/quic_simple_server.h
index c6f6f48..28e96bd 100644
--- a/net/tools/quic/quic_simple_server.h
+++ b/net/tools/quic/quic_simple_server.h
@@ -16,6 +16,7 @@
 #include "net/quic/quic_chromium_alarm_factory.h"
 #include "net/quic/quic_chromium_connection_helper.h"
 #include "net/third_party/quiche/src/quiche/quic/core/crypto/quic_crypto_server_config.h"
+#include "net/third_party/quiche/src/quiche/quic/core/deterministic_connection_id_generator.h"
 #include "net/third_party/quiche/src/quiche/quic/core/quic_config.h"
 #include "net/third_party/quiche/src/quiche/quic/core/quic_version_manager.h"
 #include "net/third_party/quiche/src/quiche/quic/tools/quic_simple_server_backend.h"
@@ -123,6 +124,8 @@
 
   quic::QuicSimpleServerBackend* quic_simple_server_backend_;
 
+  quic::DeterministicConnectionIdGenerator connection_id_generator_;
+
   base::WeakPtrFactory<QuicSimpleServer> weak_factory_{this};
 };
 
diff --git a/net/tools/quic/quic_simple_server_test.cc b/net/tools/quic/quic_simple_server_test.cc
index 9681310e..a0a28322 100644
--- a/net/tools/quic/quic_simple_server_test.cc
+++ b/net/tools/quic/quic_simple_server_test.cc
@@ -8,6 +8,7 @@
 
 #include "net/quic/address_utils.h"
 #include "net/third_party/quiche/src/quiche/quic/core/crypto/quic_random.h"
+#include "net/third_party/quiche/src/quiche/quic/core/deterministic_connection_id_generator.h"
 #include "net/third_party/quiche/src/quiche/quic/core/quic_crypto_stream.h"
 #include "net/third_party/quiche/src/quiche/quic/core/quic_utils.h"
 #include "net/third_party/quiche/src/quiche/quic/platform/api/quic_test.h"
@@ -31,28 +32,32 @@
                        quic::test::crypto_test_utils::ProofSourceForTesting(),
                        quic::KeyExchangeSource::Default()),
         version_manager_(quic::AllSupportedVersions()),
-        dispatcher_(&config_,
-                    &crypto_config_,
-                    &version_manager_,
-                    std::make_unique<quic::test::MockQuicConnectionHelper>(),
-                    std::make_unique<QuicSimpleServerSessionHelper>(
-                        quic::QuicRandom::GetInstance()),
-                    std::make_unique<quic::test::MockAlarmFactory>(),
-                    &memory_cache_backend_) {
-    dispatcher_.InitializeWithWriter(nullptr);
+        connection_id_generator_(quic::kQuicDefaultConnectionIdLength),
+        dispatcher_(std::make_unique<quic::test::MockQuicDispatcher>(
+            &config_,
+            &crypto_config_,
+            &version_manager_,
+            std::make_unique<quic::test::MockQuicConnectionHelper>(),
+            std::make_unique<QuicSimpleServerSessionHelper>(
+                quic::QuicRandom::GetInstance()),
+            std::make_unique<quic::test::MockAlarmFactory>(),
+            &memory_cache_backend_,
+            connection_id_generator_)) {
+    dispatcher_->InitializeWithWriter(nullptr);
   }
 
   void DispatchPacket(const quic::QuicReceivedPacket& packet) {
     IPEndPoint client_addr, server_addr;
-    dispatcher_.ProcessPacket(ToQuicSocketAddress(server_addr),
-                              ToQuicSocketAddress(client_addr), packet);
+    dispatcher_->ProcessPacket(ToQuicSocketAddress(server_addr),
+                               ToQuicSocketAddress(client_addr), packet);
   }
 
  protected:
   quic::QuicConfig config_;
   quic::QuicCryptoServerConfig crypto_config_;
   quic::QuicVersionManager version_manager_;
-  quic::test::MockQuicDispatcher dispatcher_;
+  quic::DeterministicConnectionIdGenerator connection_id_generator_;
+  std::unique_ptr<quic::test::MockQuicDispatcher> dispatcher_;
   quic::QuicMemoryCacheBackend memory_cache_backend_;
 };
 
@@ -70,7 +75,7 @@
       reinterpret_cast<char*>(valid_packet), std::size(valid_packet),
       quic::QuicTime::Zero(), false);
 
-  EXPECT_CALL(dispatcher_, ProcessPacket(_, _, _)).Times(1);
+  EXPECT_CALL(*dispatcher_, ProcessPacket(_, _, _)).Times(1);
   DispatchPacket(encrypted_valid_packet);
 }
 
diff --git a/net/url_request/url_request_quic_unittest.cc b/net/url_request/url_request_quic_unittest.cc
index ad623f2..b6736ea9 100644
--- a/net/url_request/url_request_quic_unittest.cc
+++ b/net/url_request/url_request_quic_unittest.cc
@@ -12,6 +12,7 @@
 #include "base/strings/string_number_conversions.h"
 #include "base/test/bind.h"
 #include "base/test/scoped_feature_list.h"
+#include "base/time/time.h"
 #include "build/build_config.h"
 #include "net/base/features.h"
 #include "net/base/isolation_info.h"
@@ -23,6 +24,7 @@
 #include "net/cert/mock_cert_verifier.h"
 #include "net/dns/mapped_host_resolver.h"
 #include "net/dns/mock_host_resolver.h"
+#include "net/http/http_response_headers.h"
 #include "net/http/transport_security_state.h"
 #include "net/log/net_log_event_type.h"
 #include "net/log/test_net_log_util.h"
@@ -33,6 +35,7 @@
 #include "net/test/test_data_directory.h"
 #include "net/test/test_with_task_environment.h"
 #include "net/third_party/quiche/src/quiche/quic/core/quic_dispatcher.h"
+#include "net/third_party/quiche/src/quiche/quic/core/quic_time.h"
 #include "net/third_party/quiche/src/quiche/quic/test_tools/crypto_test_utils.h"
 #include "net/third_party/quiche/src/quiche/quic/tools/quic_memory_cache_backend.h"
 #include "net/third_party/quiche/src/quiche/quic/tools/quic_simple_dispatcher.h"
@@ -219,6 +222,14 @@
            std::string(path);
   }
 
+  void SetDelay(absl::string_view host,
+                absl::string_view path,
+                base::TimeDelta delay) {
+    memory_cache_backend_.SetResponseDelay(
+        host, path,
+        quic::QuicTime::Delta::FromMilliseconds(delay.InMilliseconds()));
+  }
+
  private:
   void StartQuicServer(quic::ParsedQuicVersion version) {
     // Set up in-memory cache.
@@ -449,6 +460,25 @@
   EXPECT_EQ(OK, delegate.request_status());
 }
 
+TEST_P(URLRequestQuicTest, DelayedResponseStart) {
+  auto context = BuildContext();
+  TestDelegate delegate;
+  std::unique_ptr<URLRequest> request =
+      CreateRequest(context.get(), GURL(UrlFromPath(kHelloPath)), &delegate);
+
+  constexpr auto delay = base::Milliseconds(300);
+
+  this->SetDelay(kTestServerHost, kHelloPath, delay);
+  request->Start();
+  ASSERT_TRUE(request->is_pending());
+  delegate.RunUntilComplete();
+  LoadTimingInfo timing_info;
+  request->GetLoadTimingInfo(&timing_info);
+  EXPECT_EQ(OK, delegate.request_status());
+  EXPECT_GE((timing_info.receive_headers_start - timing_info.request_start),
+            delay);
+}
+
 // Tests that if there's an Expect-CT failure at the QUIC layer, a report is
 // generated.
 TEST_P(URLRequestQuicTest, ExpectCT) {
diff --git a/printing/backend/cups_jobs.cc b/printing/backend/cups_jobs.cc
index 93d3aa2..b2881252 100644
--- a/printing/backend/cups_jobs.cc
+++ b/printing/backend/cups_jobs.cc
@@ -36,10 +36,15 @@
 constexpr char kPrinterStateReasons[] = "printer-state-reasons";
 constexpr char kPrinterStateMessage[] = "printer-state-message";
 
-constexpr char kPrinterMakeAndModel[] = "printer-make-and-model";
-constexpr char kIppVersionsSupported[] = "ipp-versions-supported";
-constexpr char kIppFeaturesSupported[] = "ipp-features-supported";
-constexpr char kDocumentFormatSupported[] = "document-format-supported";
+constexpr base::StringPiece kPrinterMakeAndModel = "printer-make-and-model";
+constexpr base::StringPiece kIppVersionsSupported = "ipp-versions-supported";
+constexpr base::StringPiece kIppFeaturesSupported = "ipp-features-supported";
+constexpr base::StringPiece kDocumentFormatSupported =
+    "document-format-supported";
+constexpr base::StringPiece kOauthAuthorizationServerUri =
+    "oauth-authorization-server-uri";
+constexpr base::StringPiece kOauthAuthorizationScope =
+    "oauth-authorization-scope";
 
 // job attributes
 constexpr char kJobUri[] = "job-uri";
@@ -117,10 +122,11 @@
 constexpr std::array<const char* const, 3> kPrinterAttributes{
     {kPrinterState, kPrinterStateReasons, kPrinterStateMessage}};
 
-constexpr std::array<const char* const, 7> kPrinterInfoAndStatus{
-    {kPrinterMakeAndModel, kIppVersionsSupported, kIppFeaturesSupported,
-     kDocumentFormatSupported, kPrinterState, kPrinterStateReasons,
-     kPrinterStateMessage}};
+constexpr std::array<const char* const, 9> kPrinterInfoAndStatus{
+    {kPrinterMakeAndModel.data(), kIppVersionsSupported.data(),
+     kIppFeaturesSupported.data(), kDocumentFormatSupported.data(),
+     kPrinterState, kPrinterStateReasons, kPrinterStateMessage,
+     kOauthAuthorizationServerUri.data(), kOauthAuthorizationScope.data()}};
 
 // Converts an IPP attribute `attr` to the appropriate JobState enum.
 CupsJob::JobState ToJobState(ipp_attribute_t* attr) {
@@ -314,6 +320,9 @@
 // Returns true if at least printer-make-and-model and ipp-versions-supported
 // were read.
 bool ParsePrinterInfo(ipp_t* response, PrinterInfo* printer_info) {
+  // Set to true when parsing of one of oauth-authorization-* attributes fails.
+  bool oauth_error = false;
+
   for (ipp_attribute_t* attr = ippFirstAttribute(response); attr != nullptr;
        attr = ippNextAttribute(response)) {
     const char* const value = ippGetName(attr);
@@ -321,7 +330,7 @@
       continue;
     }
     base::StringPiece name(value);
-    if (name == base::StringPiece(kPrinterMakeAndModel)) {
+    if (name == kPrinterMakeAndModel) {
       int tag = ippGetValueTag(attr);
       if (tag != IPP_TAG_TEXT && tag != IPP_TAG_TEXTLANG) {
         LOG(WARNING) << "printer-make-and-model value tag is " << tag << ".";
@@ -330,7 +339,7 @@
       if (make_and_model_string) {
         printer_info->make_and_model = make_and_model_string;
       }
-    } else if (name == base::StringPiece(kIppVersionsSupported)) {
+    } else if (name == kIppVersionsSupported) {
       std::vector<std::string> ipp_versions;
       ParseCollection(attr, &ipp_versions);
       for (const std::string& version : ipp_versions) {
@@ -339,12 +348,37 @@
           printer_info->ipp_versions.push_back(major_minor);
         }
       }
-    } else if (name == base::StringPiece(kIppFeaturesSupported)) {
+    } else if (name == kIppFeaturesSupported) {
       std::vector<std::string> features;
       ParseCollection(attr, &features);
       printer_info->ipp_everywhere = base::Contains(features, kIppEverywhere);
-    } else if (name == base::StringPiece(kDocumentFormatSupported)) {
+    } else if (name == kDocumentFormatSupported) {
       ParseCollection(attr, &printer_info->document_formats);
+    } else if (name == kOauthAuthorizationServerUri) {
+      int tag = ippGetValueTag(attr);
+      if (tag != IPP_TAG_URI) {
+        LOG(WARNING) << "oauth-authorization-server-uri value tag is " << tag
+                     << ".";
+      }
+      const char* oauth_server_string = ippGetString(attr, 0, nullptr);
+      if (oauth_server_string) {
+        printer_info->oauth_server = oauth_server_string;
+      } else {
+        oauth_error = true;
+        LOG(WARNING) << "Cannot parse oauth-authorization-server-uri.";
+      }
+    } else if (name == kOauthAuthorizationScope) {
+      int tag = ippGetValueTag(attr);
+      if (tag != IPP_TAG_NAME) {
+        LOG(WARNING) << "oauth-authorization-scope value tag is " << tag << ".";
+      }
+      const char* oauth_scope_string = ippGetString(attr, 0, nullptr);
+      if (oauth_scope_string) {
+        printer_info->oauth_scope = oauth_scope_string;
+      } else {
+        oauth_error = true;
+        LOG(WARNING) << "Cannot parse oauth-authorization-scope.";
+      }
     }
   }
 
@@ -353,6 +387,15 @@
     printer_info->ipp_versions.push_back(base::Version({1, 0}));
   }
 
+  if (!printer_info->oauth_scope.empty() &&
+      printer_info->oauth_server.empty()) {
+    oauth_error = true;
+  }
+  if (oauth_error) {
+    printer_info->oauth_server.clear();
+    printer_info->oauth_scope.clear();
+  }
+
   // All IPP versions require make and model to be populated so we use it to
   // verify that we parsed the response.
   return !printer_info->make_and_model.empty();
diff --git a/printing/backend/cups_jobs.h b/printing/backend/cups_jobs.h
index b05904b2..02082d4 100644
--- a/printing/backend/cups_jobs.h
+++ b/printing/backend/cups_jobs.h
@@ -88,6 +88,10 @@
 
   // Does ipp-features-supported contain 'ipp-everywhere'.
   bool ipp_everywhere = false;
+
+  // URI of OAuth2 Authorization Server and scope. Empty strings if not set.
+  std::string oauth_server;
+  std::string oauth_scope;
 };
 
 // Specifies classes of jobs.
diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/features.cc
index 443887e..ab96da2 100644
--- a/third_party/blink/common/features.cc
+++ b/third_party/blink/common/features.cc
@@ -1601,7 +1601,7 @@
     "CSSOverflowForReplacedElements", base::FEATURE_ENABLED_BY_DEFAULT};
 
 const base::Feature kScrollUpdateOptimizations{
-    "ScrollUpdateOptimizations", base::FEATURE_DISABLED_BY_DEFAULT};
+    "ScrollUpdateOptimizations", base::FEATURE_ENABLED_BY_DEFAULT};
 
 const base::Feature kClipboardUnsanitizedContent{
     "ClipboardUnsanitizedContent", base::FEATURE_DISABLED_BY_DEFAULT};
diff --git a/third_party/blink/public/mojom/service_worker/service_worker_fetch_handler_type.mojom b/third_party/blink/public/mojom/service_worker/service_worker_fetch_handler_type.mojom
index 8309a24..89f5bd4 100644
--- a/third_party/blink/public/mojom/service_worker/service_worker_fetch_handler_type.mojom
+++ b/third_party/blink/public/mojom/service_worker/service_worker_fetch_handler_type.mojom
@@ -6,8 +6,11 @@
 
 // Indicates the service worker fetch handler can be skipped.
 // Experimental feature. Not followed by the spec.
+//
+// These values are persisted to logs. Entries should not be renumbered and
+// numeric values should never be reused.
 enum ServiceWorkerFetchHandlerType {
-  kNoHandler,
-  kNotSkippable,
-  kEmptyFetchHandler,
+  kNoHandler = 0,
+  kNotSkippable = 1,
+  kEmptyFetchHandler = 2,
 };
diff --git a/third_party/blink/renderer/core/css/properties/css_parsing_utils.cc b/third_party/blink/renderer/core/css/properties/css_parsing_utils.cc
index 6a6e1f3d..f8498b4aa 100644
--- a/third_party/blink/renderer/core/css/properties/css_parsing_utils.cc
+++ b/third_party/blink/renderer/core/css/properties/css_parsing_utils.cc
@@ -1686,13 +1686,13 @@
   // below.
 
   SkColor resolved_background_color =
-      static_cast<SkColor>(ResolveColor(background_color));
+      ResolveColor(background_color).ToSkColorDeprecated();
   int highest_contrast_index = -1;
   float highest_contrast_ratio = 0;
   for (unsigned i = 0; i < colors_to_compare_against.size(); i++) {
     float contrast_ratio = color_utils::GetContrastRatio(
         resolved_background_color,
-        static_cast<SkColor>(ResolveColor(colors_to_compare_against[i])));
+        ResolveColor(colors_to_compare_against[i]).ToSkColorDeprecated());
     if (target_contrast.has_value()) {
       if (contrast_ratio >= target_contrast.value()) {
         highest_contrast_ratio = contrast_ratio;
diff --git a/third_party/blink/renderer/core/css/style_rule_font_palette_values.cc b/third_party/blink/renderer/core/css/style_rule_font_palette_values.cc
index c2e1a342..8e15db4 100644
--- a/third_party/blink/renderer/core/css/style_rule_font_palette_values.cc
+++ b/third_party/blink/renderer/core/css/style_rule_font_palette_values.cc
@@ -96,7 +96,7 @@
     }
     const cssvalue::CSSColor& css_color =
         To<cssvalue::CSSColor>(override_pair.Second());
-    return static_cast<SkColor>(css_color.Value());
+    return css_color.Value().ToSkColorDeprecated();
   };
 
   Vector<FontPalette::FontPaletteOverride> return_overrides;
diff --git a/third_party/blink/renderer/core/frame/local_frame_view.cc b/third_party/blink/renderer/core/frame/local_frame_view.cc
index f3120a5..9235314 100644
--- a/third_party/blink/renderer/core/frame/local_frame_view.cc
+++ b/third_party/blink/renderer/core/frame/local_frame_view.cc
@@ -1709,8 +1709,8 @@
     // content background from the previous page while rendering is blocked in
     // the new page, but for cross process navigations we would paint the
     // default background (typically white) while the rendering is blocked.
-    GetFrame().DidChangeBackgroundColor(SkColor(BaseBackgroundColor()),
-                                        true /* color_adjust */);
+    GetFrame().DidChangeBackgroundColor(
+        BaseBackgroundColor().ToSkColorDeprecated(), true /* color_adjust */);
   }
 
   if (auto* layout_view = GetLayoutView())
@@ -1995,7 +1995,8 @@
     // TODO(https://crbug.com/1351544): The DarkModeFilter operate on SkColor4f,
     // and DocumentBackgroundColor should return an SkColor4f.
     doc_bg = Color::FromSkColor(EnsureDarkModeFilter().InvertColorIfNeeded(
-        SkColor(doc_bg), DarkModeFilter::ElementRole::kBackground));
+        doc_bg.ToSkColorDeprecated(),
+        DarkModeFilter::ElementRole::kBackground));
   }
   if (blend_with_base)
     return result.Blend(doc_bg);
diff --git a/third_party/blink/renderer/core/inspector/inspector_contrast.cc b/third_party/blink/renderer/core/inspector/inspector_contrast.cc
index a661029cf3..9e29eab 100644
--- a/third_party/blink/renderer/core/inspector/inspector_contrast.cc
+++ b/third_party/blink/renderer/core/inspector/inspector_contrast.cc
@@ -232,7 +232,8 @@
   text_color = text_color.CombineWithAlpha(text_opacity);
 
   float contrast_ratio = color_utils::GetContrastRatio(
-      SkColor(bgcolors.at(0).Blend(text_color)), SkColor(bgcolors.at(0)));
+      bgcolors.at(0).Blend(text_color).ToSkColorDeprecated(),
+      bgcolors.at(0).ToSkColorDeprecated());
 
   auto text_info = GetTextInfo(top_element);
   bool is_large_font = IsLargeFont(text_info);
diff --git a/third_party/blink/renderer/core/layout/layout_theme_mac.mm b/third_party/blink/renderer/core/layout/layout_theme_mac.mm
index a95eed4d..0f639c4 100644
--- a/third_party/blink/renderer/core/layout/layout_theme_mac.mm
+++ b/third_party/blink/renderer/core/layout/layout_theme_mac.mm
@@ -141,8 +141,9 @@
     return Color::FromRGBA(0x10, 0x10, 0x10, 0xFF);
   }
 
-  SkColor keyboard_focus_indicator = SkColor(
-      GetSystemColor(MacSystemColorID::kKeyboardFocusIndicator, color_scheme));
+  SkColor keyboard_focus_indicator =
+      GetSystemColor(MacSystemColorID::kKeyboardFocusIndicator, color_scheme)
+          .ToSkColorDeprecated();
   Color focus_ring = Color::FromSkColor(
       ui::NativeTheme::GetInstanceForWeb()->FocusRingColorForBaseColor(
           keyboard_focus_indicator));
diff --git a/third_party/blink/renderer/core/layout/layout_video.cc b/third_party/blink/renderer/core/layout/layout_video.cc
index 6ffe190..0cef90f 100644
--- a/third_party/blink/renderer/core/layout/layout_video.cc
+++ b/third_party/blink/renderer/core/layout/layout_video.cc
@@ -225,9 +225,6 @@
 
 CompositingReasons LayoutVideo::AdditionalCompositingReasons() const {
   NOT_DESTROYED();
-  if (!RuntimeEnabledFeatures::CompositeVideoElementEnabled())
-    return CompositingReason::kNone;
-
   if (GetDisplayMode() == kVideo && SupportsAcceleratedRendering())
     return CompositingReason::kVideo;
 
diff --git a/third_party/blink/renderer/core/layout/layout_video.h b/third_party/blink/renderer/core/layout/layout_video.h
index 4f210cf..e975ae2 100644
--- a/third_party/blink/renderer/core/layout/layout_video.h
+++ b/third_party/blink/renderer/core/layout/layout_video.h
@@ -85,7 +85,7 @@
 
   bool CanHaveAdditionalCompositingReasons() const override {
     NOT_DESTROYED();
-    return RuntimeEnabledFeatures::CompositeVideoElementEnabled();
+    return true;
   }
   CompositingReasons AdditionalCompositingReasons() const override;
 
diff --git a/third_party/blink/renderer/core/paint/box_painter_base.cc b/third_party/blink/renderer/core/paint/box_painter_base.cc
index 62aa460..d56a21a 100644
--- a/third_party/blink/renderer/core/paint/box_painter_base.cc
+++ b/third_party/blink/renderer/core/paint/box_painter_base.cc
@@ -177,7 +177,7 @@
         style.ForceDark()
             ? Color::FromSkColor(
                   context.GetDarkModeFilter()->InvertColorIfNeeded(
-                      SkColor(resolved_shadow_color),
+                      resolved_shadow_color.ToSkColorDeprecated(),
                       DarkModeFilter::ElementRole::kBackground))
             : resolved_shadow_color;
 
@@ -329,7 +329,7 @@
         style.ForceDark()
             ? Color::FromSkColor(
                   context.GetDarkModeFilter()->InvertColorIfNeeded(
-                      SkColor(resolved_shadow_color),
+                      resolved_shadow_color.ToSkColorDeprecated(),
                       DarkModeFilter::ElementRole::kBackground))
             : resolved_shadow_color;
 
diff --git a/third_party/blink/renderer/core/paint/theme_painter_default.cc b/third_party/blink/renderer/core/paint/theme_painter_default.cc
index 4d181c93..71f25d0 100644
--- a/third_party/blink/renderer/core/paint/theme_painter_default.cc
+++ b/third_party/blink/renderer/core/paint/theme_painter_default.cc
@@ -539,8 +539,9 @@
     Color search_field_text_color =
         cancel_button_object.StyleRef().VisitedDependentColor(
             GetCSSPropertyColor());
-    bool text_is_dark = color_utils::GetRelativeLuminance(
-                            SkColor(search_field_text_color)) < 0.5;
+    bool text_is_dark =
+        color_utils::GetRelativeLuminance(
+            search_field_text_color.ToSkColorDeprecated()) < 0.5;
     color_scheme_adjusted_cancel_image =
         text_is_dark ? cancel_image_hc_light_mode : cancel_image_dark_mode;
     color_scheme_adjusted_cancel_pressed_image =
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 a4b03caf..2d0a77fd 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
@@ -71,7 +71,7 @@
     : stroke_style_(MakeGarbageCollected<CanvasStyle>(SK_ColorBLACK)),
       fill_style_(MakeGarbageCollected<CanvasStyle>(SK_ColorBLACK)),
       shadow_blur_(0.0),
-      shadow_color_(Color::kTransparent),
+      shadow_color_(SK_ColorTRANSPARENT),
       global_alpha_(1.0),
       line_dash_offset_(0.0),
       unparsed_font_(defaultFont),
diff --git a/third_party/blink/renderer/platform/fonts/shaping/shaping_line_breaker.cc b/third_party/blink/renderer/platform/fonts/shaping/shaping_line_breaker.cc
index 51684404..e193bd7f 100644
--- a/third_party/blink/renderer/platform/fonts/shaping/shaping_line_breaker.cc
+++ b/third_party/blink/renderer/platform/fonts/shaping/shaping_line_breaker.cc
@@ -314,57 +314,59 @@
   // look for breaking opportunityes after the end of the sequence.
   // https://www.unicode.org/reports/tr14/#BA
   // TODO(jfernandez): if break-spaces, do special handling.
+  BreakOpportunity break_opportunity;
   const bool use_previous_break_opportunity =
       !IsBreakableSpace(text[candidate_break]) || is_break_after_any_space;
-  BreakOpportunity break_opportunity =
-      use_previous_break_opportunity
-          ? PreviousBreakOpportunity(candidate_break, start)
-          : NextBreakOpportunity(std::max(candidate_break, start + 1), start,
-                                 range_end);
+  if (use_previous_break_opportunity) {
+    break_opportunity = PreviousBreakOpportunity(candidate_break, start);
 
-  // There are no break opportunity before candidate_break, overflow.
-  // Find the next break opportunity after the candidate_break.
-  // TODO: (jfernandez): Maybe also non_hangable_run_end <= start ?
-  result_out->is_overflow = break_opportunity.offset <= start;
-  if (result_out->is_overflow) {
-    DCHECK(use_previous_break_opportunity);
-    if (options & kNoResultIfOverflow)
-      return nullptr;
-    // No need to scan past range_end for a break opportunity.
-    break_opportunity = NextBreakOpportunity(
-        std::max(candidate_break, start + 1), start, range_end);
-  }
-
-  // If we were looking for a next break opportunity and found one that is after
-  // candidate_break but doesn't have a corresponding non-hangable run that
-  // spans to at least candidate_break, that would be an overflow. However,
-  // there might still be break opportunities before candidate_break that we
-  // haven't checked, so we look for them first.
-  if (!use_previous_break_opportunity &&
-      break_opportunity.offset > candidate_break &&
-      (!break_opportunity.non_hangable_run_end ||
-       *break_opportunity.non_hangable_run_end > candidate_break)) {
-    DCHECK(!result_out->is_overflow);
-    BreakOpportunity previous_opportunity =
-        PreviousBreakOpportunity(candidate_break, start);
-    if (previous_opportunity.offset > start) {
-      break_opportunity = previous_opportunity;
-    } else {
-      result_out->is_overflow = true;
+    // Overflow if there are no break opportunity before candidate_break.
+    // Find the next break opportunity after the candidate_break.
+    // TODO: (jfernandez): Maybe also non_hangable_run_end <= start ?
+    result_out->is_overflow = break_opportunity.offset <= start;
+    if (result_out->is_overflow) {
+      DCHECK(use_previous_break_opportunity);
       if (options & kNoResultIfOverflow)
         return nullptr;
+      // No need to scan past range_end for a break opportunity.
+      break_opportunity = NextBreakOpportunity(
+          std::max(candidate_break, start + 1), start, range_end);
     }
-  }
+  } else {
+    break_opportunity = NextBreakOpportunity(
+        std::max(candidate_break, start + 1), start, range_end);
+    DCHECK_GT(break_opportunity.offset, start);
+    DCHECK(!result_out->is_overflow);
 
-  // We don't care whether this result contains only spaces if we
-  // are breaking after any space. We shouldn't early return either
-  // in that case.
-  if (!is_break_after_any_space && break_opportunity.non_hangable_run_end &&
-      break_opportunity.non_hangable_run_end <= start) {
-    // TODO (jfenandez): There may be cases where candidate_break is
-    // not a breakable space but we also want to early return for
-    // triggering the trailing spaces handling
-    if (IsBreakableSpace(text[candidate_break])) {
+    // If we were looking for a next break opportunity and found one that is
+    // after candidate_break but doesn't have a corresponding non-hangable run
+    // that spans to at least candidate_break, that would be an overflow.
+    // However, there might still be break opportunities before candidate_break
+    // that we haven't checked, so we look for them first.
+    if (break_opportunity.offset > candidate_break &&
+        (!break_opportunity.non_hangable_run_end ||
+         *break_opportunity.non_hangable_run_end > candidate_break)) {
+      BreakOpportunity previous_opportunity =
+          PreviousBreakOpportunity(candidate_break, start);
+      if (previous_opportunity.offset > start) {
+        break_opportunity = previous_opportunity;
+      } else {
+        result_out->is_overflow = true;
+        if (options & kNoResultIfOverflow)
+          return nullptr;
+      }
+    }
+
+    // We don't care whether this result contains only spaces if we
+    // are breaking after any space. We shouldn't early return either
+    // in that case.
+    DCHECK(!is_break_after_any_space);
+    DCHECK(IsBreakableSpace(text[candidate_break]));
+    if (break_opportunity.non_hangable_run_end &&
+        break_opportunity.non_hangable_run_end <= start) {
+      // TODO (jfenandez): There may be cases where candidate_break is
+      // not a breakable space but we also want to early return for
+      // triggering the trailing spaces handling
       result_out->has_trailing_spaces = true;
       result_out->break_offset = std::min(range_end, break_opportunity.offset);
       result_out->non_hangable_run_end = break_opportunity.non_hangable_run_end;
diff --git a/third_party/blink/renderer/platform/fonts/shaping/shaping_line_breaker.h b/third_party/blink/renderer/platform/fonts/shaping/shaping_line_breaker.h
index ef2389c..756538fe 100644
--- a/third_party/blink/renderer/platform/fonts/shaping/shaping_line_breaker.h
+++ b/third_party/blink/renderer/platform/fonts/shaping/shaping_line_breaker.h
@@ -114,6 +114,7 @@
     STACK_ALLOCATED();
 
    public:
+    BreakOpportunity() = default;
     BreakOpportunity(unsigned new_offset, bool hyphenated)
         : offset(new_offset),
           is_hyphenated(hyphenated) {}
@@ -122,9 +123,9 @@
           non_hangable_run_end(run_end),
           is_hyphenated(hyphenated) {}
 
-    unsigned offset;
+    unsigned offset = 0;
     absl::optional<unsigned> non_hangable_run_end;
-    bool is_hyphenated;
+    bool is_hyphenated = false;
   };
   BreakOpportunity PreviousBreakOpportunity(unsigned offset,
                                             unsigned start) const;
diff --git a/third_party/blink/renderer/platform/graphics/color.cc b/third_party/blink/renderer/platform/graphics/color.cc
index 4eaa3f5..134cc80 100644
--- a/third_party/blink/renderer/platform/graphics/color.cc
+++ b/third_party/blink/renderer/platform/graphics/color.cc
@@ -480,7 +480,7 @@
   return found_color;
 }
 
-Color::operator SkColor() const {
+SkColor Color::ToSkColorDeprecated() const {
   return SkColorSetARGB(Alpha(), Red(), Green(), Blue());
 }
 
diff --git a/third_party/blink/renderer/platform/graphics/color.h b/third_party/blink/renderer/platform/graphics/color.h
index 704b37d0..d521a46 100644
--- a/third_party/blink/renderer/platform/graphics/color.h
+++ b/third_party/blink/renderer/platform/graphics/color.h
@@ -175,9 +175,10 @@
   // Access the color as though it were created using the hwb() syntax.
   void GetHWB(double& h, double& w, double& b) const;
 
+  // Transform to an SkColor. This will clamp to sRGB gamut and 8 bit precision.
   // TODO(crbug.com/1308932): Remove this function, and replace its use with
   // toSkColor4f.
-  explicit operator SkColor() const;
+  SkColor ToSkColorDeprecated() const;
 
   Color Dark() const;
 
diff --git a/third_party/blink/renderer/platform/graphics/gradient.cc b/third_party/blink/renderer/platform/graphics/gradient.cc
index 84ba0e58..62f0663 100644
--- a/third_party/blink/renderer/platform/graphics/gradient.cc
+++ b/third_party/blink/renderer/platform/graphics/gradient.cc
@@ -103,19 +103,21 @@
     // with a stop at (0 + epsilon).
     pos.push_back(WebCoreDoubleToSkScalar(0));
     if (color_filter_) {
-      colors.push_back(
-          color_filter_->filterColor(SkColor(stops_.front().color)));
+      colors.push_back(color_filter_->filterColor(
+          stops_.front().color.ToSkColorDeprecated()));
     } else {
-      colors.push_back(SkColor(stops_.front().color));
+      colors.push_back(stops_.front().color.ToSkColorDeprecated());
     }
   }
 
   for (const auto& stop : stops_) {
     pos.push_back(WebCoreDoubleToSkScalar(stop.stop));
-    if (color_filter_)
-      colors.push_back(color_filter_->filterColor(SkColor(stop.color)));
-    else
-      colors.push_back(SkColor(stop.color));
+    if (color_filter_) {
+      colors.push_back(
+          color_filter_->filterColor(stop.color.ToSkColorDeprecated()));
+    } else {
+      colors.push_back(stop.color.ToSkColorDeprecated());
+    }
   }
 
   // Copy the last stop to 1.0 if needed. See comment above about this float
diff --git a/third_party/blink/renderer/platform/graphics/graphics_context.cc b/third_party/blink/renderer/platform/graphics/graphics_context.cc
index 2bd7f20..6b5109a 100644
--- a/third_party/blink/renderer/platform/graphics/graphics_context.cc
+++ b/third_party/blink/renderer/platform/graphics/graphics_context.cc
@@ -97,7 +97,7 @@
     // TODO(https://crbug.com/1351544): DarkModeFilter should operate on
     // SkColor4f, not SkColor.
     return Color::FromSkColor(context.GetDarkModeFilter()->InvertColorIfNeeded(
-        SkColor(color), auto_dark_mode.role));
+        color.ToSkColorDeprecated(), auto_dark_mode.role));
   }
   return color;
 }
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
index 577437f..558570e 100644
--- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
+++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -411,13 +411,6 @@
       status: "stable"
     },
     {
-      // Compositing of video element is no longer necessary after launch of
-      // CompositeAfterPaint. This feature is to keep the old behavior for A/B
-      // testing. Will disable and remove.
-      name: "CompositeVideoElement",
-      status: "stable",
-    },
-    {
       name: "ComputedAccessibilityInfo",
       status: "experimental",
     },
diff --git a/third_party/blink/web_tests/NeverFixTests b/third_party/blink/web_tests/NeverFixTests
index 89c86c0..c13f3c7 100644
--- a/third_party/blink/web_tests/NeverFixTests
+++ b/third_party/blink/web_tests/NeverFixTests
@@ -1037,15 +1037,6 @@
 # Tests that use too much storage for automation.
 http/tests/cachestorage/large-put.html [ Skip ]
 
-# Tests that work only when LazyImageLoading feature is enabled.
-crbug.com/846170 http/tests/lazyload/* [ Skip ]
-virtual/lazyload-image/http/tests/lazyload/* [ Pass ]
-crbug.com/869492 virtual/unified-autoplay/external/wpt/feature-policy/experimental-features/lazyload/lazyload-enabled-image-tentative.sub.html [ Skip ]
-crbug.com/869492 virtual/unified-autoplay/external/wpt/feature-policy/experimental-features/lazyload/lazyload-image-loading-lazy-tentative.sub.html [ Skip ]
-crbug.com/869492 virtual/threaded/external/wpt/feature-policy/experimental-features/lazyload/lazyload-disabled-image-tentative.html [ Skip ]
-crbug.com/869492 virtual/threaded/external/wpt/feature-policy/experimental-features/lazyload/lazyload-enabled-image-tentative.sub.html [ Skip ]
-crbug.com/869492 virtual/threaded/external/wpt/feature-policy/experimental-features/lazyload/lazyload-image-loading-lazy-tentative.sub.html [ Skip ]
-
 # Not expected to pass in default configuration, only virtual test suite.
 crbug.com/830901 fast/webgl/video-metadata/texImage-video-last-uploaded-metadata.html [ Skip ]
 virtual/webgl-extra-video-texture-metadata/fast/webgl/video-metadata/texImage-video-last-uploaded-metadata.html [ Pass ]
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations
index 73e3f20..5f63da37 100644
--- a/third_party/blink/web_tests/TestExpectations
+++ b/third_party/blink/web_tests/TestExpectations
@@ -1495,8 +1495,8 @@
 crbug.com/1240186 [ Mac ] external/wpt/css/css-fonts/font-variant-ligatures-11.html [ Failure ]
 crbug.com/1212668 external/wpt/css/css-fonts/font-variant-position.html [ Failure ]
 crbug.com/1240186 [ Mac ] external/wpt/css/css-fonts/standard-font-family.html [ Failure ]
-crbug.com/1240186 [ Mac ] external/wpt/css/css-fonts/system-ui-ar.html [ Failure ]
-crbug.com/1240186 [ Mac ] external/wpt/css/css-fonts/system-ui-ur.html [ Failure ]
+crbug.com/1240236 [ Mac ] external/wpt/css/css-fonts/system-ui-ar.html [ Failure ]
+crbug.com/1240236 [ Mac ] external/wpt/css/css-fonts/system-ui-ur.html [ Failure ]
 crbug.com/1240236 external/wpt/css/css-fonts/system-ui-ja-vs-zh.html [ Failure ]
 crbug.com/1240236 external/wpt/css/css-fonts/system-ui-ja.html [ Failure ]
 crbug.com/1240236 external/wpt/css/css-fonts/system-ui-ur-vs-ar.html [ Failure ]
diff --git a/third_party/blink/web_tests/VirtualTestSuites b/third_party/blink/web_tests/VirtualTestSuites
index c6f713a..e78213b 100644
--- a/third_party/blink/web_tests/VirtualTestSuites
+++ b/third_party/blink/web_tests/VirtualTestSuites
@@ -36,12 +36,6 @@
     "args": ["--enable-unsafe-webgpu"]
   },
   {
-    "prefix": "isolated_world_csp",
-    "platforms": ["Linux", "Mac", "Win"],
-    "bases": ["http/tests/security/isolatedWorld"],
-    "args": ["--enable-blink-features=IsolatedWorldCSP"]
-  },
-  {
     "prefix": "threaded",
     "platforms": ["Linux", "Mac", "Win", "Fuchsia"],
     "bases": ["compositing/visibility",
@@ -450,13 +444,6 @@
              "--enable-accelerated-2d-canvas"]
   },
   {
-    "prefix": "lazyload-image",
-    "platforms": ["Linux", "Mac", "Win"],
-    "bases": ["http/tests/lazyload"],
-    "args": ["--enable-blink-features=AutomaticLazyImageLoading",
-             "--disable-blink-features=RestrictAutomaticLazyImageLoadingToDataSaver"]
-  },
-  {
     "prefix": "webgl-extra-video-texture-metadata",
     "platforms": ["Linux", "Mac", "Win"],
     "bases": ["fast/webgl/video-metadata"],
diff --git a/third_party/blink/web_tests/external/Version b/third_party/blink/web_tests/external/Version
index 5f5494d..74c9c9ede 100644
--- a/third_party/blink/web_tests/external/Version
+++ b/third_party/blink/web_tests/external/Version
@@ -1 +1 @@
-Version: 5a8a34738d5bf0e8e86dc581edf44cbf90d483a5
+Version: 69249a1305be98f163ccaeca33062d3b415d602a
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 6208f5b..79053998 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
@@ -256148,6 +256148,10 @@
       "1881e9df09af9e2614c580b158066e8fc3890ad6",
       []
      ],
+     "fedcm-iframe-level2-no-permission.html": [
+      "bb285e40833418aea860bbe18f0786d4a20a6a49",
+      []
+     ],
      "fedcm-iframe-level2.html": [
       "0437f60e483c98b796635daa55b473f0ab4ca40b",
       []
@@ -373515,7 +373519,7 @@
      ]
     ],
     "fedcm-iframe.https.html": [
-     "ea61c55486635347eeb0db42fec49bffed91f6b9",
+     "baecd3318c8c8a34c6a5f99dd15ca90399c525dd",
      [
       null,
       {}
@@ -381598,7 +381602,7 @@
        ]
       ],
       "font-variant-numeric-valid.html": [
-       "ed240cc36d5ac8701e090748fe1ccb24057a2d53",
+       "c7a9fd252c45bc9f68e1f4a552c1f56b0ce1a804",
        [
         null,
         {}
diff --git a/third_party/blink/web_tests/external/wpt/css/css-fonts/parsing/font-variant-numeric-valid.html b/third_party/blink/web_tests/external/wpt/css/css-fonts/parsing/font-variant-numeric-valid.html
index ed240cc36..c7a9fd2 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-fonts/parsing/font-variant-numeric-valid.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-fonts/parsing/font-variant-numeric-valid.html
@@ -32,7 +32,8 @@
 test_valid_value('font-variant-numeric', 'oldstyle-nums tabular-nums diagonal-fractions');
 
 // Blink gives "slashed-zero ordinal stacked-fractions proportional-nums lining-nums".
-test_valid_value('font-variant-numeric', 'slashed-zero ordinal stacked-fractions proportional-nums lining-nums', 'lining-nums proportional-nums stacked-fractions ordinal slashed-zero');
+// Also accept specified order as correct serialization.
+test_valid_value('font-variant-numeric', 'slashed-zero ordinal stacked-fractions proportional-nums lining-nums', ['slashed-zero ordinal stacked-fractions proportional-nums lining-nums', 'lining-nums proportional-nums stacked-fractions ordinal slashed-zero']);
 </script>
 </body>
 </html>
diff --git a/third_party/blink/web_tests/fast/css/sticky/sticky-vertically-overconstrained-expected.html b/third_party/blink/web_tests/fast/css/sticky/sticky-vertically-overconstrained-expected.html
index ad4a88bb..9f9b2190 100644
--- a/third_party/blink/web_tests/fast/css/sticky/sticky-vertically-overconstrained-expected.html
+++ b/third_party/blink/web_tests/fast/css/sticky/sticky-vertically-overconstrained-expected.html
@@ -59,7 +59,7 @@
             <div class="sticky box" style="top: 0;"></div>
         </div>
     </div>
-    <div style="position: absolute; top: 520px;">
+    <div style="position: absolute; top: 520px; will-change: transform;">
       This test checks that sticky positioned table theads are contained by their table.
       There should be no red.
     </div>
diff --git a/third_party/blink/web_tests/fast/css/sticky/sticky-vertically-overconstrained.html b/third_party/blink/web_tests/fast/css/sticky/sticky-vertically-overconstrained.html
index 2728024..a8f2bb4b 100644
--- a/third_party/blink/web_tests/fast/css/sticky/sticky-vertically-overconstrained.html
+++ b/third_party/blink/web_tests/fast/css/sticky/sticky-vertically-overconstrained.html
@@ -69,7 +69,7 @@
             <div class="sticky box"></div>
         </div>
     </div>
-    <div style="position: absolute; top: 620px;">
+    <div style="position: absolute; top: 620px; will-change: transform; ">
         This test checks that sticky positioned table theads are contained by their table.
         There should be no red.
     </div>
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/background-color/background-color-coverage-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/background-color/background-color-coverage-expected.txt
index 7c0b3e7..f480d89 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/background-color/background-color-coverage-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/background-color/background-color-coverage-expected.txt
@@ -54,13 +54,6 @@
       "transform": 5
     },
     {
-      "name": "LayoutBlockFlow (positioned) DIV id='brown3'",
-      "bounds": [85, 10000],
-      "contentsOpaque": true,
-      "backgroundColor": "#664C00",
-      "transform": 5
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [0, 85],
       "bounds": [100, 15],
@@ -75,6 +68,13 @@
       "transform": 5
     },
     {
+      "name": "LayoutBlockFlow (positioned) DIV id='brown3'",
+      "bounds": [85, 10000],
+      "contentsOpaque": true,
+      "backgroundColor": "#664C00",
+      "transform": 5
+    },
+    {
       "name": "LayoutBlockFlow (positioned) DIV id='brown4'",
       "bounds": [100, 100],
       "contentsOpaqueForText": true,
@@ -88,13 +88,6 @@
       "transform": 6
     },
     {
-      "name": "LayoutBlockFlow (positioned) DIV id='brown4'",
-      "bounds": [85, 10000],
-      "contentsOpaque": true,
-      "backgroundColor": "#664C00",
-      "transform": 6
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [0, 85],
       "bounds": [100, 15],
@@ -107,6 +100,13 @@
       "bounds": [15, 85],
       "contentsOpaque": true,
       "transform": 6
+    },
+    {
+      "name": "LayoutBlockFlow (positioned) DIV id='brown4'",
+      "bounds": [85, 10000],
+      "contentsOpaque": true,
+      "backgroundColor": "#664C00",
+      "transform": 6
     }
   ],
   "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/become-overlapped-iframe-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/become-overlapped-iframe-expected.txt
index f045306..e40324bf 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/become-overlapped-iframe-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/become-overlapped-iframe-expected.txt
@@ -7,13 +7,6 @@
       "backgroundColor": "#FFFFFF"
     },
     {
-      "name": "Scrolling background of LayoutView #document",
-      "bounds": [305, 230],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    },
-    {
       "name": "VerticalScrollbar",
       "position": [305, 0],
       "bounds": [15, 170],
@@ -21,6 +14,13 @@
       "transform": 1
     },
     {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [305, 230],
+      "contentsOpaque": true,
+      "backgroundColor": "#C0C0C0",
+      "transform": 1
+    },
+    {
       "name": "LayoutBlockFlow DIV id='iframe-content' class='box'",
       "bounds": [210, 210],
       "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/composited-parent-iframe-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/composited-parent-iframe-expected.txt
index 9470564..e71462ac 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/composited-parent-iframe-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/composited-parent-iframe-expected.txt
@@ -14,13 +14,6 @@
       "transform": 1
     },
     {
-      "name": "Scrolling background of LayoutView #document",
-      "bounds": [285, 230],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 2
-    },
-    {
       "name": "VerticalScrollbar",
       "position": [285, 0],
       "bounds": [15, 150],
@@ -28,6 +21,13 @@
       "transform": 2
     },
     {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [285, 230],
+      "contentsOpaque": true,
+      "backgroundColor": "#C0C0C0",
+      "transform": 2
+    },
+    {
       "name": "LayoutBlockFlow DIV id='iframe-content' class='box'",
       "bounds": [210, 210],
       "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/connect-compositing-iframe-delayed-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/connect-compositing-iframe-delayed-expected.txt
index 374fd2c..c100373 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/connect-compositing-iframe-delayed-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/connect-compositing-iframe-delayed-expected.txt
@@ -9,13 +9,6 @@
       "backgroundColor": "#FFFFFF"
     },
     {
-      "name": "Scrolling background of LayoutView #document",
-      "bounds": [285, 230],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    },
-    {
       "name": "VerticalScrollbar",
       "position": [285, 0],
       "bounds": [15, 150],
@@ -23,6 +16,13 @@
       "transform": 1
     },
     {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [285, 230],
+      "contentsOpaque": true,
+      "backgroundColor": "#C0C0C0",
+      "transform": 1
+    },
+    {
       "name": "LayoutBlockFlow DIV id='iframe-content' class='box'",
       "bounds": [210, 210],
       "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/connect-compositing-iframe-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/connect-compositing-iframe-expected.txt
index 2a60659..1d3c79c 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/connect-compositing-iframe-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/connect-compositing-iframe-expected.txt
@@ -14,13 +14,6 @@
       "transform": 1
     },
     {
-      "name": "Scrolling background of LayoutView #document",
-      "bounds": [285, 230],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 2
-    },
-    {
       "name": "VerticalScrollbar",
       "position": [285, 0],
       "bounds": [15, 150],
@@ -28,6 +21,13 @@
       "transform": 2
     },
     {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [285, 230],
+      "contentsOpaque": true,
+      "backgroundColor": "#C0C0C0",
+      "transform": 2
+    },
+    {
       "name": "LayoutBlockFlow DIV id='test' class='composited box'",
       "bounds": [210, 210],
       "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/connect-compositing-iframe2-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/connect-compositing-iframe2-expected.txt
index 5f9d0ed..d6dca6e1 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/connect-compositing-iframe2-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/connect-compositing-iframe2-expected.txt
@@ -14,13 +14,6 @@
       "transform": 1
     },
     {
-      "name": "Scrolling background of LayoutView #document",
-      "bounds": [285, 230],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 2
-    },
-    {
       "name": "VerticalScrollbar",
       "position": [285, 0],
       "bounds": [15, 150],
@@ -28,6 +21,13 @@
       "transform": 2
     },
     {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [285, 230],
+      "contentsOpaque": true,
+      "backgroundColor": "#C0C0C0",
+      "transform": 2
+    },
+    {
       "name": "LayoutBlockFlow DIV id='iframe-content' class='box'",
       "bounds": [210, 210],
       "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/connect-compositing-iframe3-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/connect-compositing-iframe3-expected.txt
index e9b49ca..3bfb2dcb 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/connect-compositing-iframe3-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/connect-compositing-iframe3-expected.txt
@@ -14,13 +14,6 @@
       "transform": 1
     },
     {
-      "name": "Scrolling background of LayoutView #document",
-      "bounds": [285, 230],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 2
-    },
-    {
       "name": "VerticalScrollbar",
       "position": [285, 0],
       "bounds": [15, 150],
@@ -28,6 +21,13 @@
       "transform": 2
     },
     {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [285, 230],
+      "contentsOpaque": true,
+      "backgroundColor": "#C0C0C0",
+      "transform": 2
+    },
+    {
       "name": "LayoutBlockFlow DIV id='iframe-content' class='box'",
       "bounds": [210, 210],
       "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/enter-compositing-iframe-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/enter-compositing-iframe-expected.txt
index 4951a03..d101427 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/enter-compositing-iframe-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/enter-compositing-iframe-expected.txt
@@ -7,13 +7,6 @@
       "backgroundColor": "#FFFFFF"
     },
     {
-      "name": "Scrolling background of LayoutView #document",
-      "bounds": [285, 230],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    },
-    {
       "name": "VerticalScrollbar",
       "position": [285, 0],
       "bounds": [15, 150],
@@ -21,6 +14,13 @@
       "transform": 1
     },
     {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [285, 230],
+      "contentsOpaque": true,
+      "backgroundColor": "#C0C0C0",
+      "transform": 1
+    },
+    {
       "name": "LayoutBlockFlow DIV id='test' class='composited box'",
       "bounds": [210, 210],
       "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/iframe-resize-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/iframe-resize-expected.txt
index dd77d9d..64255289 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/iframe-resize-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/iframe-resize-expected.txt
@@ -7,13 +7,6 @@
       "backgroundColor": "#FFFFFF"
     },
     {
-      "name": "Scrolling background of LayoutView #document",
-      "bounds": [385, 230],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    },
-    {
       "name": "VerticalScrollbar",
       "position": [385, 0],
       "bounds": [15, 120],
@@ -21,6 +14,13 @@
       "transform": 1
     },
     {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [385, 230],
+      "contentsOpaque": true,
+      "backgroundColor": "#C0C0C0",
+      "transform": 1
+    },
+    {
       "name": "LayoutBlockFlow DIV id='iframe-content' class='box'",
       "bounds": [210, 210],
       "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/iframe-size-from-zero-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/iframe-size-from-zero-expected.txt
index 7b92c80..f7e5b637 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/iframe-size-from-zero-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/iframe-size-from-zero-expected.txt
@@ -7,13 +7,6 @@
       "backgroundColor": "#FFFFFF"
     },
     {
-      "name": "Scrolling background of LayoutView #document",
-      "bounds": [285, 230],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    },
-    {
       "name": "VerticalScrollbar",
       "position": [285, 0],
       "bounds": [15, 150],
@@ -21,6 +14,13 @@
       "transform": 1
     },
     {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [285, 230],
+      "contentsOpaque": true,
+      "backgroundColor": "#C0C0C0",
+      "transform": 1
+    },
+    {
       "name": "LayoutBlockFlow DIV id='iframe-content' class='box'",
       "bounds": [210, 210],
       "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/overlapped-iframe-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/overlapped-iframe-expected.txt
index 7b92c80..f7e5b637 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/overlapped-iframe-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/overlapped-iframe-expected.txt
@@ -7,13 +7,6 @@
       "backgroundColor": "#FFFFFF"
     },
     {
-      "name": "Scrolling background of LayoutView #document",
-      "bounds": [285, 230],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    },
-    {
       "name": "VerticalScrollbar",
       "position": [285, 0],
       "bounds": [15, 150],
@@ -21,6 +14,13 @@
       "transform": 1
     },
     {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [285, 230],
+      "contentsOpaque": true,
+      "backgroundColor": "#C0C0C0",
+      "transform": 1
+    },
+    {
       "name": "LayoutBlockFlow DIV id='iframe-content' class='box'",
       "bounds": [210, 210],
       "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/overlapped-iframe-iframe-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/overlapped-iframe-iframe-expected.txt
index 5be1ba12..98f6f50 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/overlapped-iframe-iframe-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/overlapped-iframe-iframe-expected.txt
@@ -14,18 +14,18 @@
       "transform": 2
     },
     {
-      "name": "Scrolling background of LayoutView #document",
-      "bounds": [285, 1018],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 3
-    },
-    {
       "name": "VerticalScrollbar",
       "position": [285, 0],
       "bounds": [15, 300],
       "contentsOpaque": true,
       "transform": 3
+    },
+    {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [285, 1018],
+      "contentsOpaque": true,
+      "backgroundColor": "#C0C0C0",
+      "transform": 3
     }
   ],
   "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/resizer-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/resizer-expected.txt
index 31e3887..932c29f 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/resizer-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/resizer-expected.txt
@@ -13,13 +13,6 @@
       "transform": 1
     },
     {
-      "name": "Scrolling background of LayoutView #document",
-      "bounds": [285, 230],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 2
-    },
-    {
       "name": "VerticalScrollbar",
       "position": [285, 0],
       "bounds": [15, 150],
@@ -27,6 +20,13 @@
       "transform": 2
     },
     {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [285, 230],
+      "contentsOpaque": true,
+      "backgroundColor": "#C0C0C0",
+      "transform": 2
+    },
+    {
       "name": "LayoutBlockFlow DIV id='iframe-content' class='box'",
       "bounds": [210, 210],
       "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/scrolling-iframe-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/scrolling-iframe-expected.txt
index c0418fb..9ccd8ce 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/scrolling-iframe-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/iframes/scrolling-iframe-expected.txt
@@ -7,13 +7,6 @@
       "backgroundColor": "#FFFFFF"
     },
     {
-      "name": "Scrolling background of LayoutView #document",
-      "bounds": [508, 608],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 2
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [0, 135],
       "bounds": [285, 15],
@@ -35,6 +28,13 @@
       "transform": 1
     },
     {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [508, 608],
+      "contentsOpaque": true,
+      "backgroundColor": "#C0C0C0",
+      "transform": 2
+    },
+    {
       "name": "LayoutBlockFlow DIV id='iframe-content' class='box'",
       "bounds": [200, 200],
       "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/layer-creation/fixed-position-nonscrollable-body-mismatch-containers-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/layer-creation/fixed-position-nonscrollable-body-mismatch-containers-expected.txt
index 4ee3a3e..3fdc385 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/layer-creation/fixed-position-nonscrollable-body-mismatch-containers-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/layer-creation/fixed-position-nonscrollable-body-mismatch-containers-expected.txt
@@ -16,13 +16,6 @@
       "transform": 1
     },
     {
-      "name": "LayoutBlockFlow DIV class='scrollable bigBox'",
-      "position": [1, 1],
-      "bounds": [285, 800],
-      "contentsOpaqueForText": true,
-      "transform": 1
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [1, 286],
       "bounds": [300, 15],
@@ -37,6 +30,13 @@
       "transform": 1
     },
     {
+      "name": "LayoutBlockFlow DIV class='scrollable bigBox'",
+      "position": [1, 1],
+      "bounds": [285, 800],
+      "contentsOpaqueForText": true,
+      "transform": 1
+    },
+    {
       "name": "LayoutBlockFlow (positioned) DIV class='fixed lime box'",
       "bounds": [100, 100],
       "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/overflow/textarea-scroll-touch-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/overflow/textarea-scroll-touch-expected.txt
index 7592f09..299cbf7 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/overflow/textarea-scroll-touch-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/overflow/textarea-scroll-touch-expected.txt
@@ -20,6 +20,13 @@
       "bounds": [261, 140]
     },
     {
+      "name": "VerticalScrollbar",
+      "position": [190, 1],
+      "bounds": [15, 109],
+      "contentsOpaque": true,
+      "transform": 1
+    },
+    {
       "name": "LayoutTextControl TEXTAREA",
       "position": [1, 1],
       "bounds": [189, 328],
@@ -28,13 +35,6 @@
       "transform": 2
     },
     {
-      "name": "VerticalScrollbar",
-      "position": [190, 1],
-      "bounds": [15, 109],
-      "contentsOpaque": true,
-      "transform": 1
-    },
-    {
       "name": "LayoutTextControl TEXTAREA",
       "position": [1, 1],
       "bounds": [189, 124],
@@ -49,19 +49,19 @@
       "transform": 3
     },
     {
+      "name": "VerticalScrollbar",
+      "position": [190, 1],
+      "bounds": [15, 109],
+      "contentsOpaque": true,
+      "transform": 3
+    },
+    {
       "name": "LayoutTextControl TEXTAREA",
       "position": [1, 1],
       "bounds": [189, 328],
       "contentsOpaque": true,
       "backgroundColor": "#CCCCCC",
       "transform": 4
-    },
-    {
-      "name": "VerticalScrollbar",
-      "position": [190, 1],
-      "bounds": [15, 109],
-      "contentsOpaque": true,
-      "transform": 3
     }
   ],
   "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/overflow/universal-accelerated-overflow-scroll-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/overflow/universal-accelerated-overflow-scroll-expected.txt
index e0b8130..00bfad04 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/overflow/universal-accelerated-overflow-scroll-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/overflow/universal-accelerated-overflow-scroll-expected.txt
@@ -14,13 +14,6 @@
       "transform": 1
     },
     {
-      "name": "LayoutBlockFlow DIV id='container-absolute-grandchildren-not-contained' class='overflow'",
-      "position": [2, 6],
-      "bounds": [85, 136],
-      "contentsOpaqueForText": true,
-      "transform": 2
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [10, 97],
       "bounds": [104, 257],
@@ -34,12 +27,27 @@
       "transform": 1
     },
     {
+      "name": "LayoutBlockFlow DIV id='container-absolute-grandchildren-not-contained' class='overflow'",
+      "position": [2, 6],
+      "bounds": [85, 136],
+      "contentsOpaqueForText": true,
+      "drawsContent": false,
+      "transform": 2
+    },
+    {
       "name": "LayoutBlockFlow (positioned) DIV id='positioned-absolute-grandchildren-not-contained' class='positionAbsolute positioned'",
       "position": [35, 10],
       "bounds": [199, 105],
       "contentsOpaqueForText": true
     },
     {
+      "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-grandchildren-not-contained' class='scrolled'",
+      "position": [6, 6],
+      "bounds": [75, 136],
+      "contentsOpaqueForText": true,
+      "transform": 2
+    },
+    {
       "name": "LayoutBlockFlow (positioned) DIV id='container-absolute-grandchildren' class='positionAbsolute overflow'",
       "position": [2, 2],
       "bounds": [85, 85],
@@ -115,13 +123,6 @@
       "transform": 7
     },
     {
-      "name": "LayoutBlockFlow DIV id='container-absolute-sibling-grandchildren-not-contained' class='overflow'",
-      "position": [2, 6],
-      "bounds": [85, 136],
-      "contentsOpaqueForText": true,
-      "transform": 8
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [2, 87],
       "bounds": [100, 15],
@@ -136,6 +137,14 @@
       "transform": 7
     },
     {
+      "name": "LayoutBlockFlow DIV id='container-absolute-sibling-grandchildren-not-contained' class='overflow'",
+      "position": [2, 6],
+      "bounds": [85, 136],
+      "contentsOpaqueForText": true,
+      "drawsContent": false,
+      "transform": 8
+    },
+    {
       "name": "LayoutBlockFlow (positioned) DIV id='positioned-absolute-sibling-grandchildren-not-contained' class='positionAbsolute positioned'",
       "position": [395, 75],
       "bounds": [80, 40],
@@ -143,6 +152,13 @@
       "backgroundColor": "#800080"
     },
     {
+      "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling-grandchildren-not-contained' class='scrolled'",
+      "position": [6, 34],
+      "bounds": [75, 80],
+      "contentsOpaqueForText": true,
+      "transform": 8
+    },
+    {
       "name": "LayoutBlockFlow (positioned) DIV id='container-absolute-sibling-grandchildren' class='positionAbsolute overflow'",
       "position": [2, 2],
       "bounds": [85, 85],
@@ -204,8 +220,8 @@
     },
     {
       "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling-not-contained' class='scrolled'",
-      "position": [6, 6],
-      "bounds": [75, 108],
+      "position": [6, 34],
+      "bounds": [75, 80],
       "contentsOpaqueForText": true,
       "transform": 12
     },
@@ -238,8 +254,8 @@
     },
     {
       "name": "LayoutBlockFlow (positioned) DIV id='positioned-absolute-sibling' class='positionAbsolute positioned'",
-      "position": [6, 6],
-      "bounds": [101, 108],
+      "position": [6, 34],
+      "bounds": [101, 80],
       "contentsOpaqueForText": true,
       "transform": 14
     },
@@ -272,8 +288,8 @@
     },
     {
       "name": "LayoutBlockFlow (positioned) DIV id='positioned-absolute' class='positionAbsolute positioned'",
-      "position": [6, 6],
-      "bounds": [101, 108],
+      "position": [6, 34],
+      "bounds": [101, 80],
       "contentsOpaqueForText": true,
       "transform": 16
     },
@@ -303,6 +319,7 @@
       "position": [2, 6],
       "bounds": [85, 136],
       "contentsOpaqueForText": true,
+      "drawsContent": false,
       "transform": 18
     },
     {
@@ -313,6 +330,13 @@
       "transform": 19
     },
     {
+      "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-fixed-sibling-grandchildren' class='scrolled'",
+      "position": [6, 34],
+      "bounds": [75, 80],
+      "contentsOpaqueForText": true,
+      "transform": 18
+    },
+    {
       "name": "LayoutBlockFlow (positioned) DIV id='container-fixed-sibling' class='positionAbsolute overflow'",
       "position": [2, 2],
       "bounds": [85, 85],
@@ -342,8 +366,8 @@
     },
     {
       "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-fixed-sibling' class='scrolled'",
-      "position": [6, 6],
-      "bounds": [75, 108],
+      "position": [6, 34],
+      "bounds": [75, 80],
       "contentsOpaqueForText": true,
       "transform": 22
     },
@@ -373,6 +397,7 @@
       "position": [2, 6],
       "bounds": [85, 136],
       "contentsOpaqueForText": true,
+      "drawsContent": false,
       "transform": 24
     },
     {
@@ -383,6 +408,13 @@
       "transform": 25
     },
     {
+      "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-fixed-grandchildren' class='scrolled'",
+      "position": [6, 34],
+      "bounds": [75, 80],
+      "contentsOpaqueForText": true,
+      "transform": 24
+    },
+    {
       "name": "LayoutBlockFlow (positioned) DIV id='container-fixed' class='positionAbsolute overflow'",
       "position": [2, 2],
       "bounds": [85, 85],
@@ -412,8 +444,8 @@
     },
     {
       "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-fixed' class='scrolled'",
-      "position": [6, 6],
-      "bounds": [75, 108],
+      "position": [6, 34],
+      "bounds": [75, 80],
       "contentsOpaqueForText": true,
       "transform": 28
     },
@@ -460,72 +492,65 @@
       "transform": 34
     },
     {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-grandchildren-not-contained' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
-      "contentsOpaqueForText": true,
-      "transform": 2
-    },
-    {
       "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling-grandchildren-not-contained' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
+      "position": [6, 6],
+      "bounds": [75, 136],
       "contentsOpaqueForText": true,
       "transform": 8
     },
     {
       "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling-grandchildren' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
+      "position": [6, 6],
+      "bounds": [75, 136],
       "contentsOpaqueForText": true,
       "transform": 10
     },
     {
       "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling-not-contained' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
+      "position": [6, 6],
+      "bounds": [75, 136],
       "contentsOpaqueForText": true,
       "transform": 12
     },
     {
       "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
+      "position": [6, 6],
+      "bounds": [75, 136],
       "contentsOpaqueForText": true,
       "transform": 14
     },
     {
       "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
+      "position": [6, 6],
+      "bounds": [75, 136],
       "contentsOpaqueForText": true,
       "transform": 16
     },
     {
       "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-fixed-sibling-grandchildren' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
+      "position": [6, 6],
+      "bounds": [75, 136],
       "contentsOpaqueForText": true,
       "transform": 18
     },
     {
       "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-fixed-sibling' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
+      "position": [6, 6],
+      "bounds": [75, 136],
       "contentsOpaqueForText": true,
       "transform": 22
     },
     {
       "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-fixed-grandchildren' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
+      "position": [6, 6],
+      "bounds": [75, 136],
       "contentsOpaqueForText": true,
       "transform": 24
     },
     {
       "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-fixed' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
+      "position": [6, 6],
+      "bounds": [75, 136],
       "contentsOpaqueForText": true,
       "transform": 28
     },
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/rtl/rtl-iframe-absolute-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/rtl/rtl-iframe-absolute-overflow-expected.txt
index a7859d2..cab14ea 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/rtl/rtl-iframe-absolute-overflow-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/rtl/rtl-iframe-absolute-overflow-expected.txt
@@ -7,14 +7,6 @@
       "backgroundColor": "#FFFFFF"
     },
     {
-      "name": "Scrolling background of LayoutView #document",
-      "position": [15, 0],
-      "bounds": [1000, 1000],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "transform": 1
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [15, 385],
       "bounds": [385, 15],
@@ -32,6 +24,14 @@
       "contentsOpaque": true
     },
     {
+      "name": "Scrolling background of LayoutView #document",
+      "position": [15, 0],
+      "bounds": [1000, 1000],
+      "contentsOpaque": true,
+      "backgroundColor": "#FFFFFF",
+      "transform": 1
+    },
+    {
       "name": "LayoutBlockFlow (positioned) DIV class='positioned layer'",
       "bounds": [100, 100],
       "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/rtl/rtl-iframe-absolute-overflow-scrolled-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/rtl/rtl-iframe-absolute-overflow-scrolled-expected.txt
index 4ecdd99..aa354bf 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/rtl/rtl-iframe-absolute-overflow-scrolled-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/rtl/rtl-iframe-absolute-overflow-scrolled-expected.txt
@@ -7,14 +7,6 @@
       "backgroundColor": "#FFFFFF"
     },
     {
-      "name": "Scrolling background of LayoutView #document",
-      "position": [15, 0],
-      "bounds": [1000, 1000],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "transform": 1
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [15, 385],
       "bounds": [385, 15],
@@ -32,6 +24,14 @@
       "contentsOpaque": true
     },
     {
+      "name": "Scrolling background of LayoutView #document",
+      "position": [15, 0],
+      "bounds": [1000, 1000],
+      "contentsOpaque": true,
+      "backgroundColor": "#FFFFFF",
+      "transform": 1
+    },
+    {
       "name": "LayoutBlockFlow (positioned) DIV id='layer' class='positioned'",
       "bounds": [100, 100],
       "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/rtl/rtl-iframe-fixed-overflow-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/rtl/rtl-iframe-fixed-overflow-expected.txt
index a9603d8..de138d8 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/rtl/rtl-iframe-fixed-overflow-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/rtl/rtl-iframe-fixed-overflow-expected.txt
@@ -7,14 +7,6 @@
       "backgroundColor": "#FFFFFF"
     },
     {
-      "name": "Scrolling background of LayoutView #document",
-      "position": [15, 0],
-      "bounds": [1000, 1000],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "transform": 1
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [15, 385],
       "bounds": [385, 15],
@@ -32,6 +24,14 @@
       "contentsOpaque": true
     },
     {
+      "name": "Scrolling background of LayoutView #document",
+      "position": [15, 0],
+      "bounds": [1000, 1000],
+      "contentsOpaque": true,
+      "backgroundColor": "#FFFFFF",
+      "transform": 1
+    },
+    {
       "name": "LayoutBlockFlow (positioned) DIV class='positioned indicator'",
       "bounds": [100, 100],
       "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/rtl/rtl-iframe-fixed-overflow-scrolled-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/rtl/rtl-iframe-fixed-overflow-scrolled-expected.txt
index a9603d8..de138d8 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/rtl/rtl-iframe-fixed-overflow-scrolled-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/rtl/rtl-iframe-fixed-overflow-scrolled-expected.txt
@@ -7,14 +7,6 @@
       "backgroundColor": "#FFFFFF"
     },
     {
-      "name": "Scrolling background of LayoutView #document",
-      "position": [15, 0],
-      "bounds": [1000, 1000],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "transform": 1
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [15, 385],
       "bounds": [385, 15],
@@ -32,6 +24,14 @@
       "contentsOpaque": true
     },
     {
+      "name": "Scrolling background of LayoutView #document",
+      "position": [15, 0],
+      "bounds": [1000, 1000],
+      "contentsOpaque": true,
+      "backgroundColor": "#FFFFFF",
+      "transform": 1
+    },
+    {
       "name": "LayoutBlockFlow (positioned) DIV class='positioned indicator'",
       "bounds": [100, 100],
       "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/squashing/squash-above-fixed-1-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/squashing/squash-above-fixed-1-expected.txt
index 2bdc7c07a..67ebee4 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/squashing/squash-above-fixed-1-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/compositing/squashing/squash-above-fixed-1-expected.txt
@@ -19,9 +19,8 @@
       "transform": 1
     },
     {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='paragraph-b' class='overlapping lime'",
-      "position": [0, 100],
-      "bounds": [200, 1300],
+      "name": "LayoutBlockFlow (relative positioned) DIV id='paragraph-a' class='overlapping cyan'",
+      "bounds": [200, 1400],
       "contentsOpaqueForText": true
     },
     {
@@ -62,9 +61,8 @@
       "transform": 2
     },
     {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='paragraph-b' class='overlapping lime'",
-      "position": [0, 100],
-      "bounds": [200, 1300],
+      "name": "LayoutBlockFlow (relative positioned) DIV id='paragraph-a' class='overlapping cyan'",
+      "bounds": [200, 1400],
       "contentsOpaqueForText": true,
       "transform": 1
     },
@@ -115,9 +113,8 @@
       "transform": 2
     },
     {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='paragraph-b' class='overlapping lime'",
-      "position": [0, 100],
-      "bounds": [200, 1300],
+      "name": "LayoutBlockFlow (relative positioned) DIV id='paragraph-a' class='overlapping cyan'",
+      "bounds": [200, 1400],
       "contentsOpaqueForText": true,
       "transform": 1
     },
@@ -168,9 +165,8 @@
       "transform": 2
     },
     {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='paragraph-b' class='overlapping lime'",
-      "position": [0, 100],
-      "bounds": [200, 1300],
+      "name": "LayoutBlockFlow (relative positioned) DIV id='paragraph-a' class='overlapping cyan'",
+      "bounds": [200, 1400],
       "contentsOpaqueForText": true,
       "transform": 1
     },
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/table/multiple-captions-display-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/table/multiple-captions-display-expected.png
new file mode 100644
index 0000000..20660354
--- /dev/null
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/table/multiple-captions-display-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/background/composited-background-on-both-layers-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/background/composited-background-on-both-layers-expected.txt
index c3db611..b5bb9f37 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/background/composited-background-on-both-layers-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/background/composited-background-on-both-layers-expected.txt
@@ -24,17 +24,6 @@
       "transform": 1
     },
     {
-      "name": "LayoutBlockFlow DIV id='target'",
-      "position": [20, 20],
-      "bounds": [185, 3000],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "invalidations": [
-        [0, 0, 185, 3000]
-      ],
-      "transform": 1
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [20, 205],
       "bounds": [200, 15],
@@ -47,6 +36,17 @@
       "bounds": [15, 185],
       "contentsOpaque": true,
       "transform": 1
+    },
+    {
+      "name": "LayoutBlockFlow DIV id='target'",
+      "position": [20, 20],
+      "bounds": [185, 3000],
+      "contentsOpaque": true,
+      "backgroundColor": "#008000",
+      "invalidations": [
+        [0, 0, 185, 3000]
+      ],
+      "transform": 1
     }
   ],
   "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/compositing/scrolling-without-painting-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/compositing/scrolling-without-painting-expected.txt
index cb50b8d..9f24a44b 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/compositing/scrolling-without-painting-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/compositing/scrolling-without-painting-expected.txt
@@ -14,14 +14,6 @@
       "transform": 1
     },
     {
-      "name": "LayoutBlockFlow DIV id='scroller'",
-      "position": [1, 26],
-      "bounds": [185, 1000],
-      "contentsOpaqueForText": true,
-      "drawsContent": false,
-      "transform": 2
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [1, 186],
       "bounds": [200, 15],
@@ -34,6 +26,14 @@
       "bounds": [15, 185],
       "contentsOpaque": true,
       "transform": 1
+    },
+    {
+      "name": "LayoutBlockFlow DIV id='scroller'",
+      "position": [1, 26],
+      "bounds": [185, 1000],
+      "contentsOpaqueForText": true,
+      "drawsContent": false,
+      "transform": 2
     }
   ],
   "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/compositing/should-not-clip-composited-overflow-scrolling-layer-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/compositing/should-not-clip-composited-overflow-scrolling-layer-expected.txt
index f97d56b..bc0bdbf 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/compositing/should-not-clip-composited-overflow-scrolling-layer-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/compositing/should-not-clip-composited-overflow-scrolling-layer-expected.txt
@@ -13,16 +13,6 @@
       "transform": 1
     },
     {
-      "name": "LayoutBlockFlow DIV id='container'",
-      "bounds": [1000, 1000],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "invalidations": [
-        [0, 0, 1000, 1000]
-      ],
-      "transform": 2
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [0, 285],
       "bounds": [385, 15],
@@ -42,6 +32,16 @@
       "bounds": [15, 15],
       "contentsOpaque": true,
       "transform": 1
+    },
+    {
+      "name": "LayoutBlockFlow DIV id='container'",
+      "bounds": [1000, 1000],
+      "contentsOpaque": true,
+      "backgroundColor": "#008000",
+      "invalidations": [
+        [0, 0, 1000, 1000]
+      ],
+      "transform": 2
     }
   ],
   "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/compositing/should-not-repaint-scrolling-contents-outline-change-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/compositing/should-not-repaint-scrolling-contents-outline-change-expected.txt
index 0965ba5..7376932 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/compositing/should-not-repaint-scrolling-contents-outline-change-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/compositing/should-not-repaint-scrolling-contents-outline-change-expected.txt
@@ -20,13 +20,6 @@
       "transform": 1
     },
     {
-      "name": "LayoutBlockFlow DIV id='target'",
-      "bounds": [185, 2000],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 1
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [0, 185],
       "bounds": [200, 15],
@@ -42,6 +35,13 @@
     },
     {
       "name": "LayoutBlockFlow DIV id='target'",
+      "bounds": [185, 2000],
+      "contentsOpaque": true,
+      "backgroundColor": "#0000FF",
+      "transform": 1
+    },
+    {
+      "name": "LayoutBlockFlow DIV id='target'",
       "position": [-10, -10],
       "bounds": [220, 220],
       "contentsOpaqueForText": true,
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/compositing/updating-scrolling-content-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/compositing/updating-scrolling-content-expected.txt
index 91fcad7..14e9cc35 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/compositing/updating-scrolling-content-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/compositing/updating-scrolling-content-expected.txt
@@ -13,15 +13,6 @@
       "transform": 1
     },
     {
-      "name": "LayoutBlockFlow DIV id='scroller'",
-      "bounds": [185, 1200],
-      "contentsOpaqueForText": true,
-      "invalidations": [
-        [0, 0, 185, 200]
-      ],
-      "transform": 1
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [0, 185],
       "bounds": [200, 15],
@@ -34,6 +25,15 @@
       "bounds": [15, 185],
       "contentsOpaque": true,
       "transform": 1
+    },
+    {
+      "name": "LayoutBlockFlow DIV id='scroller'",
+      "bounds": [185, 1200],
+      "contentsOpaqueForText": true,
+      "invalidations": [
+        [0, 0, 185, 200]
+      ],
+      "transform": 1
     }
   ],
   "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/forms/textarea-caret-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/forms/textarea-caret-expected.txt
new file mode 100644
index 0000000..13d03cb
--- /dev/null
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/forms/textarea-caret-expected.txt
@@ -0,0 +1,55 @@
+{
+  "layers": [
+    {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [800, 600],
+      "contentsOpaque": true,
+      "backgroundColor": "#FFFFFF",
+      "invalidations": [
+        [7, 7, 183, 40]
+      ]
+    },
+    {
+      "name": "Caret",
+      "position": [482, 3],
+      "bounds": [1, 16],
+      "contentsOpaque": true,
+      "invalidations": [
+        [0, 0, 1, 16]
+      ],
+      "transform": 2
+    },
+    {
+      "name": "LayoutTextControl TEXTAREA id='editor'",
+      "position": [-1, -1],
+      "bounds": [183, 40],
+      "contentsOpaqueForText": true,
+      "invalidations": [
+        [0, 0, 183, 40]
+      ],
+      "transform": 1
+    }
+  ],
+  "transforms": [
+    {
+      "id": 1,
+      "transform": [
+        [1, 0, 0, 0],
+        [0, 1, 0, 0],
+        [0, 0, 1, 0],
+        [8, 8, 0, 1]
+      ]
+    },
+    {
+      "id": 2,
+      "parent": 1,
+      "transform": [
+        [1, 0, 0, 0],
+        [0, 1, 0, 0],
+        [0, 0, 1, 0],
+        [-303, 0, 0, 1]
+      ]
+    }
+  ]
+}
+
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/invalidation-on-foreground-graphics-layer-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/invalidation-on-foreground-graphics-layer-expected.txt
index 26753e9..300680a 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/invalidation-on-foreground-graphics-layer-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/invalidation-on-foreground-graphics-layer-expected.txt
@@ -20,13 +20,6 @@
       "transform": 1
     },
     {
-      "name": "LayoutBlockFlow DIV",
-      "bounds": [300, 300],
-      "contentsOpaque": true,
-      "backgroundColor": "#D3D3D3",
-      "transform": 1
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [0, 185],
       "bounds": [185, 15],
@@ -48,6 +41,13 @@
       "transform": 1
     },
     {
+      "name": "LayoutBlockFlow DIV",
+      "bounds": [300, 300],
+      "contentsOpaque": true,
+      "backgroundColor": "#D3D3D3",
+      "transform": 1
+    },
+    {
       "name": "LayoutBlockFlow (relative positioned) DIV",
       "bounds": [200, 200],
       "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/overflow/composited-overflow-with-borderbox-background-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/overflow/composited-overflow-with-borderbox-background-expected.txt
index e63344c..112b8e84 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/overflow/composited-overflow-with-borderbox-background-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/overflow/composited-overflow-with-borderbox-background-expected.txt
@@ -17,17 +17,6 @@
       "transform": 1
     },
     {
-      "name": "LayoutBlockFlow DIV id='scroller'",
-      "position": [10, 10],
-      "bounds": [185, 300],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "invalidations": [
-        [0, 0, 185, 300]
-      ],
-      "transform": 1
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [10, 195],
       "bounds": [200, 15],
@@ -40,6 +29,17 @@
       "bounds": [15, 185],
       "contentsOpaque": true,
       "transform": 1
+    },
+    {
+      "name": "LayoutBlockFlow DIV id='scroller'",
+      "position": [10, 10],
+      "bounds": [185, 300],
+      "contentsOpaque": true,
+      "backgroundColor": "#008000",
+      "invalidations": [
+        [0, 0, 185, 300]
+      ],
+      "transform": 1
     }
   ],
   "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/overflow/composited-overflow-with-local-background-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/overflow/composited-overflow-with-local-background-expected.txt
index 88466c6d..b18d12c 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/overflow/composited-overflow-with-local-background-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/overflow/composited-overflow-with-local-background-expected.txt
@@ -20,16 +20,6 @@
       "transform": 1
     },
     {
-      "name": "LayoutBlockFlow DIV id='scroller'",
-      "bounds": [185, 300],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "invalidations": [
-        [0, 0, 185, 300]
-      ],
-      "transform": 1
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [0, 185],
       "bounds": [200, 15],
@@ -42,6 +32,16 @@
       "bounds": [15, 185],
       "contentsOpaque": true,
       "transform": 1
+    },
+    {
+      "name": "LayoutBlockFlow DIV id='scroller'",
+      "bounds": [185, 300],
+      "contentsOpaque": true,
+      "backgroundColor": "#008000",
+      "invalidations": [
+        [0, 0, 185, 300]
+      ],
+      "transform": 1
     }
   ],
   "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/scroll/overflow-scroll-local-background-text-color-change-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/scroll/overflow-scroll-local-background-text-color-change-expected.txt
index b435577..8d52990e4 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/scroll/overflow-scroll-local-background-text-color-change-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/scroll/overflow-scroll-local-background-text-color-change-expected.txt
@@ -20,16 +20,6 @@
       "transform": 1
     },
     {
-      "name": "LayoutBlockFlow DIV id='scroller'",
-      "bounds": [185, 552],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "invalidations": [
-        [0, 0, 185, 552]
-      ],
-      "transform": 2
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [0, 185],
       "bounds": [200, 15],
@@ -45,6 +35,16 @@
       "bounds": [15, 185],
       "contentsOpaque": true,
       "transform": 1
+    },
+    {
+      "name": "LayoutBlockFlow DIV id='scroller'",
+      "bounds": [185, 552],
+      "contentsOpaque": true,
+      "backgroundColor": "#0000FF",
+      "invalidations": [
+        [0, 0, 185, 552]
+      ],
+      "transform": 2
     }
   ],
   "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/selection/selection-within-composited-scroller-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/selection/selection-within-composited-scroller-expected.txt
index 376e9db..e2caab09 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/selection/selection-within-composited-scroller-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/paint/invalidation/selection/selection-within-composited-scroller-expected.txt
@@ -20,16 +20,6 @@
       "transform": 1
     },
     {
-      "name": "LayoutBlockFlow DIV id='scroller'",
-      "bounds": [200, 1620],
-      "contentsOpaque": true,
-      "backgroundColor": "#ADD8E6",
-      "invalidations": [
-        [0, 610, 22, 19]
-      ],
-      "transform": 2
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [0, 185],
       "bounds": [185, 15],
@@ -49,6 +39,16 @@
       "bounds": [15, 15],
       "contentsOpaque": true,
       "transform": 1
+    },
+    {
+      "name": "LayoutBlockFlow DIV id='scroller'",
+      "bounds": [200, 1620],
+      "contentsOpaque": true,
+      "backgroundColor": "#ADD8E6",
+      "invalidations": [
+        [0, 610, 22, 19]
+      ],
+      "transform": 2
     }
   ],
   "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/backface-visibility-interop/compositing/overflow/universal-accelerated-overflow-scroll-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/backface-visibility-interop/compositing/overflow/universal-accelerated-overflow-scroll-expected.txt
index e0b8130..00bfad04 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/backface-visibility-interop/compositing/overflow/universal-accelerated-overflow-scroll-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/backface-visibility-interop/compositing/overflow/universal-accelerated-overflow-scroll-expected.txt
@@ -14,13 +14,6 @@
       "transform": 1
     },
     {
-      "name": "LayoutBlockFlow DIV id='container-absolute-grandchildren-not-contained' class='overflow'",
-      "position": [2, 6],
-      "bounds": [85, 136],
-      "contentsOpaqueForText": true,
-      "transform": 2
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [10, 97],
       "bounds": [104, 257],
@@ -34,12 +27,27 @@
       "transform": 1
     },
     {
+      "name": "LayoutBlockFlow DIV id='container-absolute-grandchildren-not-contained' class='overflow'",
+      "position": [2, 6],
+      "bounds": [85, 136],
+      "contentsOpaqueForText": true,
+      "drawsContent": false,
+      "transform": 2
+    },
+    {
       "name": "LayoutBlockFlow (positioned) DIV id='positioned-absolute-grandchildren-not-contained' class='positionAbsolute positioned'",
       "position": [35, 10],
       "bounds": [199, 105],
       "contentsOpaqueForText": true
     },
     {
+      "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-grandchildren-not-contained' class='scrolled'",
+      "position": [6, 6],
+      "bounds": [75, 136],
+      "contentsOpaqueForText": true,
+      "transform": 2
+    },
+    {
       "name": "LayoutBlockFlow (positioned) DIV id='container-absolute-grandchildren' class='positionAbsolute overflow'",
       "position": [2, 2],
       "bounds": [85, 85],
@@ -115,13 +123,6 @@
       "transform": 7
     },
     {
-      "name": "LayoutBlockFlow DIV id='container-absolute-sibling-grandchildren-not-contained' class='overflow'",
-      "position": [2, 6],
-      "bounds": [85, 136],
-      "contentsOpaqueForText": true,
-      "transform": 8
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [2, 87],
       "bounds": [100, 15],
@@ -136,6 +137,14 @@
       "transform": 7
     },
     {
+      "name": "LayoutBlockFlow DIV id='container-absolute-sibling-grandchildren-not-contained' class='overflow'",
+      "position": [2, 6],
+      "bounds": [85, 136],
+      "contentsOpaqueForText": true,
+      "drawsContent": false,
+      "transform": 8
+    },
+    {
       "name": "LayoutBlockFlow (positioned) DIV id='positioned-absolute-sibling-grandchildren-not-contained' class='positionAbsolute positioned'",
       "position": [395, 75],
       "bounds": [80, 40],
@@ -143,6 +152,13 @@
       "backgroundColor": "#800080"
     },
     {
+      "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling-grandchildren-not-contained' class='scrolled'",
+      "position": [6, 34],
+      "bounds": [75, 80],
+      "contentsOpaqueForText": true,
+      "transform": 8
+    },
+    {
       "name": "LayoutBlockFlow (positioned) DIV id='container-absolute-sibling-grandchildren' class='positionAbsolute overflow'",
       "position": [2, 2],
       "bounds": [85, 85],
@@ -204,8 +220,8 @@
     },
     {
       "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling-not-contained' class='scrolled'",
-      "position": [6, 6],
-      "bounds": [75, 108],
+      "position": [6, 34],
+      "bounds": [75, 80],
       "contentsOpaqueForText": true,
       "transform": 12
     },
@@ -238,8 +254,8 @@
     },
     {
       "name": "LayoutBlockFlow (positioned) DIV id='positioned-absolute-sibling' class='positionAbsolute positioned'",
-      "position": [6, 6],
-      "bounds": [101, 108],
+      "position": [6, 34],
+      "bounds": [101, 80],
       "contentsOpaqueForText": true,
       "transform": 14
     },
@@ -272,8 +288,8 @@
     },
     {
       "name": "LayoutBlockFlow (positioned) DIV id='positioned-absolute' class='positionAbsolute positioned'",
-      "position": [6, 6],
-      "bounds": [101, 108],
+      "position": [6, 34],
+      "bounds": [101, 80],
       "contentsOpaqueForText": true,
       "transform": 16
     },
@@ -303,6 +319,7 @@
       "position": [2, 6],
       "bounds": [85, 136],
       "contentsOpaqueForText": true,
+      "drawsContent": false,
       "transform": 18
     },
     {
@@ -313,6 +330,13 @@
       "transform": 19
     },
     {
+      "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-fixed-sibling-grandchildren' class='scrolled'",
+      "position": [6, 34],
+      "bounds": [75, 80],
+      "contentsOpaqueForText": true,
+      "transform": 18
+    },
+    {
       "name": "LayoutBlockFlow (positioned) DIV id='container-fixed-sibling' class='positionAbsolute overflow'",
       "position": [2, 2],
       "bounds": [85, 85],
@@ -342,8 +366,8 @@
     },
     {
       "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-fixed-sibling' class='scrolled'",
-      "position": [6, 6],
-      "bounds": [75, 108],
+      "position": [6, 34],
+      "bounds": [75, 80],
       "contentsOpaqueForText": true,
       "transform": 22
     },
@@ -373,6 +397,7 @@
       "position": [2, 6],
       "bounds": [85, 136],
       "contentsOpaqueForText": true,
+      "drawsContent": false,
       "transform": 24
     },
     {
@@ -383,6 +408,13 @@
       "transform": 25
     },
     {
+      "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-fixed-grandchildren' class='scrolled'",
+      "position": [6, 34],
+      "bounds": [75, 80],
+      "contentsOpaqueForText": true,
+      "transform": 24
+    },
+    {
       "name": "LayoutBlockFlow (positioned) DIV id='container-fixed' class='positionAbsolute overflow'",
       "position": [2, 2],
       "bounds": [85, 85],
@@ -412,8 +444,8 @@
     },
     {
       "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-fixed' class='scrolled'",
-      "position": [6, 6],
-      "bounds": [75, 108],
+      "position": [6, 34],
+      "bounds": [75, 80],
       "contentsOpaqueForText": true,
       "transform": 28
     },
@@ -460,72 +492,65 @@
       "transform": 34
     },
     {
-      "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-grandchildren-not-contained' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
-      "contentsOpaqueForText": true,
-      "transform": 2
-    },
-    {
       "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling-grandchildren-not-contained' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
+      "position": [6, 6],
+      "bounds": [75, 136],
       "contentsOpaqueForText": true,
       "transform": 8
     },
     {
       "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling-grandchildren' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
+      "position": [6, 6],
+      "bounds": [75, 136],
       "contentsOpaqueForText": true,
       "transform": 10
     },
     {
       "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling-not-contained' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
+      "position": [6, 6],
+      "bounds": [75, 136],
       "contentsOpaqueForText": true,
       "transform": 12
     },
     {
       "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
+      "position": [6, 6],
+      "bounds": [75, 136],
       "contentsOpaqueForText": true,
       "transform": 14
     },
     {
       "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
+      "position": [6, 6],
+      "bounds": [75, 136],
       "contentsOpaqueForText": true,
       "transform": 16
     },
     {
       "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-fixed-sibling-grandchildren' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
+      "position": [6, 6],
+      "bounds": [75, 136],
       "contentsOpaqueForText": true,
       "transform": 18
     },
     {
       "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-fixed-sibling' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
+      "position": [6, 6],
+      "bounds": [75, 136],
       "contentsOpaqueForText": true,
       "transform": 22
     },
     {
       "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-fixed-grandchildren' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
+      "position": [6, 6],
+      "bounds": [75, 136],
       "contentsOpaqueForText": true,
       "transform": 24
     },
     {
       "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-fixed' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
+      "position": [6, 6],
+      "bounds": [75, 136],
       "contentsOpaqueForText": true,
       "transform": 28
     },
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/backface-visibility-interop/paint/invalidation/compositing/should-not-repaint-scrolling-contents-outline-change-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/backface-visibility-interop/paint/invalidation/background/composited-background-on-both-layers-expected.txt
similarity index 69%
rename from third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/backface-visibility-interop/paint/invalidation/compositing/should-not-repaint-scrolling-contents-outline-change-expected.txt
rename to third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/backface-visibility-interop/paint/invalidation/background/composited-background-on-both-layers-expected.txt
index 0965ba5..b5bb9f37 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/backface-visibility-interop/paint/invalidation/compositing/should-not-repaint-scrolling-contents-outline-change-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/backface-visibility-interop/paint/invalidation/background/composited-background-on-both-layers-expected.txt
@@ -8,45 +8,43 @@
     },
     {
       "name": "LayoutBlockFlow DIV id='target'",
-      "bounds": [200, 200],
-      "contentsOpaqueForText": true,
-      "drawsContent": false,
+      "bounds": [240, 240],
+      "contentsOpaque": true,
+      "backgroundColor": "#008000",
+      "invalidations": [
+        [0, 0, 240, 240]
+      ],
       "transform": 1
     },
     {
       "name": "LayoutBlockFlow DIV id='target'",
+      "position": [20, 20],
       "bounds": [185, 185],
       "drawsContent": false,
       "transform": 1
     },
     {
-      "name": "LayoutBlockFlow DIV id='target'",
-      "bounds": [185, 2000],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 1
-    },
-    {
       "name": "HorizontalScrollbar",
-      "position": [0, 185],
+      "position": [20, 205],
       "bounds": [200, 15],
       "contentsOpaqueForText": true,
       "transform": 1
     },
     {
       "name": "VerticalScrollbar",
-      "position": [185, 0],
+      "position": [205, 20],
       "bounds": [15, 185],
       "contentsOpaque": true,
       "transform": 1
     },
     {
       "name": "LayoutBlockFlow DIV id='target'",
-      "position": [-10, -10],
-      "bounds": [220, 220],
-      "contentsOpaqueForText": true,
+      "position": [20, 20],
+      "bounds": [185, 3000],
+      "contentsOpaque": true,
+      "backgroundColor": "#008000",
       "invalidations": [
-        [0, 0, 220, 220]
+        [0, 0, 185, 3000]
       ],
       "transform": 1
     }
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/backface-visibility-interop/paint/invalidation/compositing/scrolling-without-painting-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/backface-visibility-interop/paint/invalidation/compositing/scrolling-without-painting-expected.txt
deleted file mode 100644
index cb50b8d..0000000
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/backface-visibility-interop/paint/invalidation/compositing/scrolling-without-painting-expected.txt
+++ /dev/null
@@ -1,61 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "Scrolling background of LayoutView #document",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='scroller'",
-      "position": [1, 1],
-      "bounds": [185, 185],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='scroller'",
-      "position": [1, 26],
-      "bounds": [185, 1000],
-      "contentsOpaqueForText": true,
-      "drawsContent": false,
-      "transform": 2
-    },
-    {
-      "name": "HorizontalScrollbar",
-      "position": [1, 186],
-      "bounds": [200, 15],
-      "contentsOpaqueForText": true,
-      "transform": 1
-    },
-    {
-      "name": "VerticalScrollbar",
-      "position": [186, 1],
-      "bounds": [15, 185],
-      "contentsOpaque": true,
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -25, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/backface-visibility-interop/paint/invalidation/invalidation-on-foreground-graphics-layer-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/backface-visibility-interop/paint/invalidation/invalidation-on-foreground-graphics-layer-expected.txt
deleted file mode 100644
index 26753e9..0000000
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/backface-visibility-interop/paint/invalidation/invalidation-on-foreground-graphics-layer-expected.txt
+++ /dev/null
@@ -1,81 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "Scrolling background of LayoutView #document",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV",
-      "bounds": [200, 200],
-      "contentsOpaqueForText": true,
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow DIV",
-      "bounds": [185, 185],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow DIV",
-      "bounds": [300, 300],
-      "contentsOpaque": true,
-      "backgroundColor": "#D3D3D3",
-      "transform": 1
-    },
-    {
-      "name": "HorizontalScrollbar",
-      "position": [0, 185],
-      "bounds": [185, 15],
-      "contentsOpaque": true,
-      "transform": 1
-    },
-    {
-      "name": "VerticalScrollbar",
-      "position": [185, 0],
-      "bounds": [15, 185],
-      "contentsOpaque": true,
-      "transform": 1
-    },
-    {
-      "name": "Scroll corner of LayoutBlockFlow DIV",
-      "position": [185, 185],
-      "bounds": [15, 15],
-      "contentsOpaque": true,
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow (relative positioned) DIV",
-      "bounds": [200, 200],
-      "contentsOpaque": true,
-      "backgroundColor": "#ADD8E6",
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow DIV",
-      "position": [100, 100],
-      "bounds": [200, 200],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "invalidations": [
-        [0, 0, 200, 200]
-      ],
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/backface-visibility-interop/paint/invalidation/overflow/composited-overflow-with-local-background-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/backface-visibility-interop/paint/invalidation/overflow/composited-overflow-with-local-background-expected.txt
deleted file mode 100644
index 88466c6d..0000000
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/backface-visibility-interop/paint/invalidation/overflow/composited-overflow-with-local-background-expected.txt
+++ /dev/null
@@ -1,59 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "Scrolling background of LayoutView #document",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='scroller'",
-      "bounds": [200, 200],
-      "contentsOpaqueForText": true,
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='scroller'",
-      "bounds": [185, 185],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "LayoutBlockFlow DIV id='scroller'",
-      "bounds": [185, 300],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "invalidations": [
-        [0, 0, 185, 300]
-      ],
-      "transform": 1
-    },
-    {
-      "name": "HorizontalScrollbar",
-      "position": [0, 185],
-      "bounds": [200, 15],
-      "contentsOpaqueForText": true,
-      "transform": 1
-    },
-    {
-      "name": "VerticalScrollbar",
-      "position": [185, 0],
-      "bounds": [15, 185],
-      "contentsOpaque": true,
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/backface-visibility-interop/paint/invalidation/selection/selection-within-composited-scroller-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/backface-visibility-interop/paint/invalidation/selection/selection-within-composited-scroller-expected.txt
index 376e9db..e2caab09 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/backface-visibility-interop/paint/invalidation/selection/selection-within-composited-scroller-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/backface-visibility-interop/paint/invalidation/selection/selection-within-composited-scroller-expected.txt
@@ -20,16 +20,6 @@
       "transform": 1
     },
     {
-      "name": "LayoutBlockFlow DIV id='scroller'",
-      "bounds": [200, 1620],
-      "contentsOpaque": true,
-      "backgroundColor": "#ADD8E6",
-      "invalidations": [
-        [0, 610, 22, 19]
-      ],
-      "transform": 2
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [0, 185],
       "bounds": [185, 15],
@@ -49,6 +39,16 @@
       "bounds": [15, 15],
       "contentsOpaque": true,
       "transform": 1
+    },
+    {
+      "name": "LayoutBlockFlow DIV id='scroller'",
+      "bounds": [200, 1620],
+      "contentsOpaque": true,
+      "backgroundColor": "#ADD8E6",
+      "invalidations": [
+        [0, 610, 22, 19]
+      ],
+      "transform": 2
     }
   ],
   "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/prefer_compositing_to_lcd_text/compositing/overflow/overflow-auto-with-touch-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/prefer_compositing_to_lcd_text/compositing/overflow/overflow-auto-with-touch-expected.txt
index 7b1bdf57..b9cf2d7 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/prefer_compositing_to_lcd_text/compositing/overflow/overflow-auto-with-touch-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/prefer_compositing_to_lcd_text/compositing/overflow/overflow-auto-with-touch-expected.txt
@@ -13,13 +13,6 @@
       "transform": 1
     },
     {
-      "name": "LayoutBlockFlow DIV class='scroller'",
-      "bounds": [1000, 1000],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [0, 285],
       "bounds": [285, 15],
@@ -39,6 +32,13 @@
       "bounds": [15, 15],
       "contentsOpaque": true,
       "transform": 1
+    },
+    {
+      "name": "LayoutBlockFlow DIV class='scroller'",
+      "bounds": [1000, 1000],
+      "contentsOpaque": true,
+      "backgroundColor": "#C0C0C0",
+      "transform": 1
     }
   ],
   "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/prefer_compositing_to_lcd_text/compositing/overflow/overflow-auto-with-touch-toggle-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/prefer_compositing_to_lcd_text/compositing/overflow/overflow-auto-with-touch-toggle-expected.txt
index 7b1bdf57..b9cf2d7 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/prefer_compositing_to_lcd_text/compositing/overflow/overflow-auto-with-touch-toggle-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/prefer_compositing_to_lcd_text/compositing/overflow/overflow-auto-with-touch-toggle-expected.txt
@@ -13,13 +13,6 @@
       "transform": 1
     },
     {
-      "name": "LayoutBlockFlow DIV class='scroller'",
-      "bounds": [1000, 1000],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [0, 285],
       "bounds": [285, 15],
@@ -39,6 +32,13 @@
       "bounds": [15, 15],
       "contentsOpaque": true,
       "transform": 1
+    },
+    {
+      "name": "LayoutBlockFlow DIV class='scroller'",
+      "bounds": [1000, 1000],
+      "contentsOpaque": true,
+      "backgroundColor": "#C0C0C0",
+      "transform": 1
     }
   ],
   "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/prefer_compositing_to_lcd_text/compositing/overflow/textarea-scroll-touch-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/prefer_compositing_to_lcd_text/compositing/overflow/textarea-scroll-touch-expected.txt
deleted file mode 100644
index 7592f09..0000000
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/prefer_compositing_to_lcd_text/compositing/overflow/textarea-scroll-touch-expected.txt
+++ /dev/null
@@ -1,108 +0,0 @@
- 
-{
-  "layers": [
-    {
-      "name": "Scrolling background of LayoutView #document",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutTextControl TEXTAREA",
-      "position": [1, 1],
-      "bounds": [189, 124],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "Scroll corner of LayoutTextControl TEXTAREA",
-      "position": [193, 18],
-      "bounds": [261, 140]
-    },
-    {
-      "name": "LayoutTextControl TEXTAREA",
-      "position": [1, 1],
-      "bounds": [189, 328],
-      "contentsOpaque": true,
-      "backgroundColor": "#CCCCCC",
-      "transform": 2
-    },
-    {
-      "name": "VerticalScrollbar",
-      "position": [190, 1],
-      "bounds": [15, 109],
-      "contentsOpaque": true,
-      "transform": 1
-    },
-    {
-      "name": "LayoutTextControl TEXTAREA",
-      "position": [1, 1],
-      "bounds": [189, 124],
-      "drawsContent": false,
-      "transform": 3
-    },
-    {
-      "name": "Scroll corner of LayoutTextControl TEXTAREA",
-      "position": [175, 95],
-      "bounds": [30, 30],
-      "contentsOpaqueForText": true,
-      "transform": 3
-    },
-    {
-      "name": "LayoutTextControl TEXTAREA",
-      "position": [1, 1],
-      "bounds": [189, 328],
-      "contentsOpaque": true,
-      "backgroundColor": "#CCCCCC",
-      "transform": 4
-    },
-    {
-      "name": "VerticalScrollbar",
-      "position": [190, 1],
-      "bounds": [15, 109],
-      "contentsOpaque": true,
-      "transform": 3
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [18, 18, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -50, 0, 1]
-      ]
-    },
-    {
-      "id": 3,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [248, 18, 0, 1]
-      ]
-    },
-    {
-      "id": 4,
-      "parent": 3,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -50, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/blink/web_tests/flag-specific/disable-site-isolation-trials/virtual/backface-visibility-interop/compositing/overflow/universal-accelerated-overflow-scroll-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/prefer_compositing_to_lcd_text/compositing/overflow/universal-accelerated-overflow-scroll-expected.txt
similarity index 66%
rename from third_party/blink/web_tests/flag-specific/disable-site-isolation-trials/virtual/backface-visibility-interop/compositing/overflow/universal-accelerated-overflow-scroll-expected.txt
rename to third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/prefer_compositing_to_lcd_text/compositing/overflow/universal-accelerated-overflow-scroll-expected.txt
index 15926bffc..00bfad04 100644
--- a/third_party/blink/web_tests/flag-specific/disable-site-isolation-trials/virtual/backface-visibility-interop/compositing/overflow/universal-accelerated-overflow-scroll-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/prefer_compositing_to_lcd_text/compositing/overflow/universal-accelerated-overflow-scroll-expected.txt
@@ -7,20 +7,13 @@
       "backgroundColor": "#FFFFFF"
     },
     {
-      "name": "LayoutNGBlockFlow DIV id='container-absolute-grandchildren-not-contained' class='overflow'",
+      "name": "LayoutBlockFlow DIV id='container-absolute-grandchildren-not-contained' class='overflow'",
       "position": [2, 2],
       "bounds": [85, 85],
       "drawsContent": false,
       "transform": 1
     },
     {
-      "name": "LayoutNGBlockFlow DIV id='container-absolute-grandchildren-not-contained' class='overflow'",
-      "position": [2, 6],
-      "bounds": [85, 136],
-      "contentsOpaqueForText": true,
-      "transform": 2
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [10, 97],
       "bounds": [104, 257],
@@ -34,13 +27,28 @@
       "transform": 1
     },
     {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='positioned-absolute-grandchildren-not-contained' class='positionAbsolute positioned'",
+      "name": "LayoutBlockFlow DIV id='container-absolute-grandchildren-not-contained' class='overflow'",
+      "position": [2, 6],
+      "bounds": [85, 136],
+      "contentsOpaqueForText": true,
+      "drawsContent": false,
+      "transform": 2
+    },
+    {
+      "name": "LayoutBlockFlow (positioned) DIV id='positioned-absolute-grandchildren-not-contained' class='positionAbsolute positioned'",
       "position": [35, 10],
       "bounds": [199, 105],
       "contentsOpaqueForText": true
     },
     {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='container-absolute-grandchildren' class='positionAbsolute overflow'",
+      "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-grandchildren-not-contained' class='scrolled'",
+      "position": [6, 6],
+      "bounds": [75, 136],
+      "contentsOpaqueForText": true,
+      "transform": 2
+    },
+    {
+      "name": "LayoutBlockFlow (positioned) DIV id='container-absolute-grandchildren' class='positionAbsolute overflow'",
       "position": [2, 2],
       "bounds": [85, 85],
       "drawsContent": false,
@@ -61,20 +69,20 @@
       "transform": 3
     },
     {
-      "name": "Scroll corner of LayoutNGBlockFlow (positioned) DIV id='container-absolute-grandchildren' class='positionAbsolute overflow'",
+      "name": "Scroll corner of LayoutBlockFlow (positioned) DIV id='container-absolute-grandchildren' class='positionAbsolute overflow'",
       "position": [217, 10],
       "bounds": [137, 104],
       "contentsOpaqueForText": true
     },
     {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='container-absolute-grandchildren' class='positionAbsolute overflow'",
+      "name": "LayoutBlockFlow (positioned) DIV id='container-absolute-grandchildren' class='positionAbsolute overflow'",
       "position": [2, 6],
       "bounds": [105, 136],
       "contentsOpaqueForText": true,
       "transform": 4
     },
     {
-      "name": "LayoutNGBlockFlow DIV id='container-absolute-not-contained' class='overflow'",
+      "name": "LayoutBlockFlow DIV id='container-absolute-not-contained' class='overflow'",
       "position": [2, 2],
       "bounds": [85, 85],
       "drawsContent": false,
@@ -95,33 +103,26 @@
       "transform": 5
     },
     {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='positioned-absolute-not-contained' class='positionAbsolute positioned'",
+      "name": "LayoutBlockFlow (positioned) DIV id='positioned-absolute-not-contained' class='positionAbsolute positioned'",
       "position": [275, 10],
       "bounds": [199, 105],
       "contentsOpaqueForText": true
     },
     {
-      "name": "LayoutNGBlockFlow (relative positioned) DIV id='scrolled-absolute-not-contained' class='scrolled'",
+      "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-not-contained' class='scrolled'",
       "position": [6, 6],
       "bounds": [75, 136],
       "contentsOpaqueForText": true,
       "transform": 6
     },
     {
-      "name": "LayoutNGBlockFlow DIV id='container-absolute-sibling-grandchildren-not-contained' class='overflow'",
+      "name": "LayoutBlockFlow DIV id='container-absolute-sibling-grandchildren-not-contained' class='overflow'",
       "position": [2, 2],
       "bounds": [85, 85],
       "drawsContent": false,
       "transform": 7
     },
     {
-      "name": "LayoutNGBlockFlow DIV id='container-absolute-sibling-grandchildren-not-contained' class='overflow'",
-      "position": [2, 6],
-      "bounds": [85, 136],
-      "contentsOpaqueForText": true,
-      "transform": 8
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [2, 87],
       "bounds": [100, 15],
@@ -136,14 +137,29 @@
       "transform": 7
     },
     {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='positioned-absolute-sibling-grandchildren-not-contained' class='positionAbsolute positioned'",
+      "name": "LayoutBlockFlow DIV id='container-absolute-sibling-grandchildren-not-contained' class='overflow'",
+      "position": [2, 6],
+      "bounds": [85, 136],
+      "contentsOpaqueForText": true,
+      "drawsContent": false,
+      "transform": 8
+    },
+    {
+      "name": "LayoutBlockFlow (positioned) DIV id='positioned-absolute-sibling-grandchildren-not-contained' class='positionAbsolute positioned'",
       "position": [395, 75],
       "bounds": [80, 40],
       "contentsOpaque": true,
       "backgroundColor": "#800080"
     },
     {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='container-absolute-sibling-grandchildren' class='positionAbsolute overflow'",
+      "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling-grandchildren-not-contained' class='scrolled'",
+      "position": [6, 34],
+      "bounds": [75, 80],
+      "contentsOpaqueForText": true,
+      "transform": 8
+    },
+    {
+      "name": "LayoutBlockFlow (positioned) DIV id='container-absolute-sibling-grandchildren' class='positionAbsolute overflow'",
       "position": [2, 2],
       "bounds": [85, 85],
       "drawsContent": false,
@@ -164,20 +180,20 @@
       "transform": 9
     },
     {
-      "name": "Scroll corner of LayoutNGBlockFlow (positioned) DIV id='container-absolute-sibling-grandchildren' class='positionAbsolute overflow'",
+      "name": "Scroll corner of LayoutBlockFlow (positioned) DIV id='container-absolute-sibling-grandchildren' class='positionAbsolute overflow'",
       "position": [97, 130],
       "bounds": [137, 104],
       "contentsOpaqueForText": true
     },
     {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='container-absolute-sibling-grandchildren' class='positionAbsolute overflow'",
+      "name": "LayoutBlockFlow (positioned) DIV id='container-absolute-sibling-grandchildren' class='positionAbsolute overflow'",
       "position": [2, 6],
       "bounds": [105, 136],
       "contentsOpaqueForText": true,
       "transform": 10
     },
     {
-      "name": "LayoutNGBlockFlow DIV id='container-absolute-sibling-not-contained' class='overflow'",
+      "name": "LayoutBlockFlow DIV id='container-absolute-sibling-not-contained' class='overflow'",
       "position": [2, 2],
       "bounds": [85, 85],
       "drawsContent": false,
@@ -197,20 +213,20 @@
       "transform": 11
     },
     {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='positioned-absolute-sibling-not-contained' class='positionAbsolute positioned'",
+      "name": "LayoutBlockFlow (positioned) DIV id='positioned-absolute-sibling-not-contained' class='positionAbsolute positioned'",
       "position": [155, 130],
       "bounds": [199, 105],
       "contentsOpaqueForText": true
     },
     {
-      "name": "LayoutNGBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling-not-contained' class='scrolled'",
-      "position": [6, 6],
-      "bounds": [75, 108],
+      "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling-not-contained' class='scrolled'",
+      "position": [6, 34],
+      "bounds": [75, 80],
       "contentsOpaqueForText": true,
       "transform": 12
     },
     {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='container-absolute-sibling' class='positionAbsolute overflow'",
+      "name": "LayoutBlockFlow (positioned) DIV id='container-absolute-sibling' class='positionAbsolute overflow'",
       "position": [2, 2],
       "bounds": [85, 85],
       "drawsContent": false,
@@ -231,20 +247,20 @@
       "transform": 13
     },
     {
-      "name": "Scroll corner of LayoutNGBlockFlow (positioned) DIV id='container-absolute-sibling' class='positionAbsolute overflow'",
+      "name": "Scroll corner of LayoutBlockFlow (positioned) DIV id='container-absolute-sibling' class='positionAbsolute overflow'",
       "position": [337, 130],
       "bounds": [137, 104],
       "contentsOpaqueForText": true
     },
     {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='positioned-absolute-sibling' class='positionAbsolute positioned'",
-      "position": [6, 6],
-      "bounds": [101, 108],
+      "name": "LayoutBlockFlow (positioned) DIV id='positioned-absolute-sibling' class='positionAbsolute positioned'",
+      "position": [6, 34],
+      "bounds": [101, 80],
       "contentsOpaqueForText": true,
       "transform": 14
     },
     {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='container-absolute' class='positionAbsolute overflow'",
+      "name": "LayoutBlockFlow (positioned) DIV id='container-absolute' class='positionAbsolute overflow'",
       "position": [2, 2],
       "bounds": [85, 85],
       "drawsContent": false,
@@ -265,20 +281,20 @@
       "transform": 15
     },
     {
-      "name": "Scroll corner of LayoutNGBlockFlow (positioned) DIV id='container-absolute' class='positionAbsolute overflow'",
+      "name": "Scroll corner of LayoutBlockFlow (positioned) DIV id='container-absolute' class='positionAbsolute overflow'",
       "position": [370, 217],
       "bounds": [104, 137],
       "contentsOpaqueForText": true
     },
     {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='positioned-absolute' class='positionAbsolute positioned'",
-      "position": [6, 6],
-      "bounds": [101, 108],
+      "name": "LayoutBlockFlow (positioned) DIV id='positioned-absolute' class='positionAbsolute positioned'",
+      "position": [6, 34],
+      "bounds": [101, 80],
       "contentsOpaqueForText": true,
       "transform": 16
     },
     {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='container-fixed-sibling-grandchildren' class='positionAbsolute overflow'",
+      "name": "LayoutBlockFlow (positioned) DIV id='container-fixed-sibling-grandchildren' class='positionAbsolute overflow'",
       "position": [2, 2],
       "bounds": [85, 85],
       "drawsContent": false,
@@ -299,21 +315,29 @@
       "transform": 17
     },
     {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='container-fixed-sibling-grandchildren' class='positionAbsolute overflow'",
+      "name": "LayoutBlockFlow (positioned) DIV id='container-fixed-sibling-grandchildren' class='positionAbsolute overflow'",
       "position": [2, 6],
       "bounds": [85, 136],
       "contentsOpaqueForText": true,
+      "drawsContent": false,
       "transform": 18
     },
     {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='positioned-fixed-sibling-grandchildren' class='positionFixed positioned'",
+      "name": "LayoutBlockFlow (positioned) DIV id='positioned-fixed-sibling-grandchildren' class='positionFixed positioned'",
       "bounds": [80, 40],
       "contentsOpaque": true,
       "backgroundColor": "#800080",
       "transform": 19
     },
     {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='container-fixed-sibling' class='positionAbsolute overflow'",
+      "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-fixed-sibling-grandchildren' class='scrolled'",
+      "position": [6, 34],
+      "bounds": [75, 80],
+      "contentsOpaqueForText": true,
+      "transform": 18
+    },
+    {
+      "name": "LayoutBlockFlow (positioned) DIV id='container-fixed-sibling' class='positionAbsolute overflow'",
       "position": [2, 2],
       "bounds": [85, 85],
       "drawsContent": false,
@@ -334,21 +358,21 @@
       "transform": 20
     },
     {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='positioned-fixed-sibling' class='positionFixed positioned'",
+      "name": "LayoutBlockFlow (positioned) DIV id='positioned-fixed-sibling' class='positionFixed positioned'",
       "bounds": [80, 40],
       "contentsOpaque": true,
       "backgroundColor": "#800080",
       "transform": 21
     },
     {
-      "name": "LayoutNGBlockFlow (relative positioned) DIV id='scrolled-fixed-sibling' class='scrolled'",
-      "position": [6, 6],
-      "bounds": [75, 108],
+      "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-fixed-sibling' class='scrolled'",
+      "position": [6, 34],
+      "bounds": [75, 80],
       "contentsOpaqueForText": true,
       "transform": 22
     },
     {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='container-fixed-grandchildren' class='positionAbsolute overflow'",
+      "name": "LayoutBlockFlow (positioned) DIV id='container-fixed-grandchildren' class='positionAbsolute overflow'",
       "position": [2, 2],
       "bounds": [85, 85],
       "drawsContent": false,
@@ -369,21 +393,29 @@
       "transform": 23
     },
     {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='container-fixed-grandchildren' class='positionAbsolute overflow'",
+      "name": "LayoutBlockFlow (positioned) DIV id='container-fixed-grandchildren' class='positionAbsolute overflow'",
       "position": [2, 6],
       "bounds": [85, 136],
       "contentsOpaqueForText": true,
+      "drawsContent": false,
       "transform": 24
     },
     {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='positioned-fixed-grandchildren' class='positionFixed positioned'",
+      "name": "LayoutBlockFlow (positioned) DIV id='positioned-fixed-grandchildren' class='positionFixed positioned'",
       "bounds": [80, 40],
       "contentsOpaque": true,
       "backgroundColor": "#800080",
       "transform": 25
     },
     {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='container-fixed' class='positionAbsolute overflow'",
+      "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-fixed-grandchildren' class='scrolled'",
+      "position": [6, 34],
+      "bounds": [75, 80],
+      "contentsOpaqueForText": true,
+      "transform": 24
+    },
+    {
+      "name": "LayoutBlockFlow (positioned) DIV id='container-fixed' class='positionAbsolute overflow'",
       "position": [2, 2],
       "bounds": [85, 85],
       "drawsContent": false,
@@ -404,128 +436,121 @@
       "transform": 26
     },
     {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='positioned-fixed' class='positionFixed positioned'",
+      "name": "LayoutBlockFlow (positioned) DIV id='positioned-fixed' class='positionFixed positioned'",
       "bounds": [80, 40],
       "contentsOpaque": true,
       "backgroundColor": "#800080",
       "transform": 27
     },
     {
-      "name": "LayoutNGBlockFlow (relative positioned) DIV id='scrolled-fixed' class='scrolled'",
-      "position": [6, 6],
-      "bounds": [75, 108],
+      "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-fixed' class='scrolled'",
+      "position": [6, 34],
+      "bounds": [75, 80],
       "contentsOpaqueForText": true,
       "transform": 28
     },
     {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='sibling-absolute-sibling-grandchildren-not-contained' class='positionFixed sibling'",
+      "name": "LayoutBlockFlow (positioned) DIV id='sibling-absolute-sibling-grandchildren-not-contained' class='positionFixed sibling'",
       "bounds": [50, 100],
       "contentsOpaque": true,
       "backgroundColor": "#008000",
       "transform": 29
     },
     {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='sibling-absolute-sibling-grandchildren' class='positionFixed sibling'",
+      "name": "LayoutBlockFlow (positioned) DIV id='sibling-absolute-sibling-grandchildren' class='positionFixed sibling'",
       "bounds": [50, 100],
       "contentsOpaque": true,
       "backgroundColor": "#008000",
       "transform": 30
     },
     {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='sibling-absolute-sibling-not-contained' class='positionFixed sibling'",
+      "name": "LayoutBlockFlow (positioned) DIV id='sibling-absolute-sibling-not-contained' class='positionFixed sibling'",
       "bounds": [50, 100],
       "contentsOpaque": true,
       "backgroundColor": "#008000",
       "transform": 31
     },
     {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='sibling-absolute-sibling' class='positionFixed sibling'",
+      "name": "LayoutBlockFlow (positioned) DIV id='sibling-absolute-sibling' class='positionFixed sibling'",
       "bounds": [50, 100],
       "contentsOpaque": true,
       "backgroundColor": "#008000",
       "transform": 32
     },
     {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='sibling-fixed-sibling-grandchildren' class='positionFixed sibling'",
+      "name": "LayoutBlockFlow (positioned) DIV id='sibling-fixed-sibling-grandchildren' class='positionFixed sibling'",
       "bounds": [50, 100],
       "contentsOpaque": true,
       "backgroundColor": "#008000",
       "transform": 33
     },
     {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='sibling-fixed-sibling' class='positionFixed sibling'",
+      "name": "LayoutBlockFlow (positioned) DIV id='sibling-fixed-sibling' class='positionFixed sibling'",
       "bounds": [50, 100],
       "contentsOpaque": true,
       "backgroundColor": "#008000",
       "transform": 34
     },
     {
-      "name": "LayoutNGBlockFlow (relative positioned) DIV id='scrolled-absolute-grandchildren-not-contained' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
-      "contentsOpaqueForText": true,
-      "transform": 2
-    },
-    {
-      "name": "LayoutNGBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling-grandchildren-not-contained' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
+      "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling-grandchildren-not-contained' class='scrolled onTop'",
+      "position": [6, 6],
+      "bounds": [75, 136],
       "contentsOpaqueForText": true,
       "transform": 8
     },
     {
-      "name": "LayoutNGBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling-grandchildren' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
+      "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling-grandchildren' class='scrolled onTop'",
+      "position": [6, 6],
+      "bounds": [75, 136],
       "contentsOpaqueForText": true,
       "transform": 10
     },
     {
-      "name": "LayoutNGBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling-not-contained' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
+      "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling-not-contained' class='scrolled onTop'",
+      "position": [6, 6],
+      "bounds": [75, 136],
       "contentsOpaqueForText": true,
       "transform": 12
     },
     {
-      "name": "LayoutNGBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
+      "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling' class='scrolled onTop'",
+      "position": [6, 6],
+      "bounds": [75, 136],
       "contentsOpaqueForText": true,
       "transform": 14
     },
     {
-      "name": "LayoutNGBlockFlow (relative positioned) DIV id='scrolled-absolute' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
+      "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-absolute' class='scrolled onTop'",
+      "position": [6, 6],
+      "bounds": [75, 136],
       "contentsOpaqueForText": true,
       "transform": 16
     },
     {
-      "name": "LayoutNGBlockFlow (relative positioned) DIV id='scrolled-fixed-sibling-grandchildren' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
+      "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-fixed-sibling-grandchildren' class='scrolled onTop'",
+      "position": [6, 6],
+      "bounds": [75, 136],
       "contentsOpaqueForText": true,
       "transform": 18
     },
     {
-      "name": "LayoutNGBlockFlow (relative positioned) DIV id='scrolled-fixed-sibling' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
+      "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-fixed-sibling' class='scrolled onTop'",
+      "position": [6, 6],
+      "bounds": [75, 136],
       "contentsOpaqueForText": true,
       "transform": 22
     },
     {
-      "name": "LayoutNGBlockFlow (relative positioned) DIV id='scrolled-fixed-grandchildren' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
+      "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-fixed-grandchildren' class='scrolled onTop'",
+      "position": [6, 6],
+      "bounds": [75, 136],
       "contentsOpaqueForText": true,
       "transform": 24
     },
     {
-      "name": "LayoutNGBlockFlow (relative positioned) DIV id='scrolled-fixed' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
+      "name": "LayoutBlockFlow (relative positioned) DIV id='scrolled-fixed' class='scrolled onTop'",
+      "position": [6, 6],
+      "bounds": [75, 136],
       "contentsOpaqueForText": true,
       "transform": 28
     },
diff --git a/third_party/blink/web_tests/flag-specific/disable-site-isolation-trials/compositing/iframes/iframe-resize-expected.txt b/third_party/blink/web_tests/flag-specific/disable-site-isolation-trials/compositing/iframes/iframe-resize-expected.txt
deleted file mode 100644
index 3b3e4f7..0000000
--- a/third_party/blink/web_tests/flag-specific/disable-site-isolation-trials/compositing/iframes/iframe-resize-expected.txt
+++ /dev/null
@@ -1,60 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "Scrolling background of LayoutView #document",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "Scrolling background of LayoutView #document",
-      "bounds": [385, 230],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    },
-    {
-      "name": "VerticalScrollbar",
-      "position": [385, 0],
-      "bounds": [15, 120],
-      "contentsOpaque": true,
-      "transform": 1
-    },
-    {
-      "name": "LayoutNGBlockFlow DIV id='iframe-content' class='box'",
-      "bounds": [210, 210],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 2
-    },
-    {
-      "name": "LayoutNGBlockFlow (positioned) DIV class='overlay'",
-      "position": [5, 5],
-      "bounds": [50, 50],
-      "contentsOpaqueForText": true,
-      "backgroundColor": "#00000033"
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [43, 43, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [18, 10, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/blink/web_tests/flag-specific/disable-site-isolation-trials/compositing/iframes/resizer-expected.txt b/third_party/blink/web_tests/flag-specific/disable-site-isolation-trials/compositing/iframes/resizer-expected.txt
deleted file mode 100644
index 719a6de..0000000
--- a/third_party/blink/web_tests/flag-specific/disable-site-isolation-trials/compositing/iframes/resizer-expected.txt
+++ /dev/null
@@ -1,76 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "Scrolling background of LayoutView #document",
-      "bounds": [800, 600],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutIFrame IFRAME class='container'",
-      "bounds": [304, 154],
-      "contentsOpaqueForText": true,
-      "transform": 1
-    },
-    {
-      "name": "Scrolling background of LayoutView #document",
-      "bounds": [285, 230],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 2
-    },
-    {
-      "name": "VerticalScrollbar",
-      "position": [285, 0],
-      "bounds": [15, 150],
-      "contentsOpaque": true,
-      "transform": 2
-    },
-    {
-      "name": "LayoutNGBlockFlow DIV id='iframe-content' class='box'",
-      "bounds": [210, 210],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 3
-    },
-    {
-      "name": "Scroll corner of LayoutIFrame IFRAME class='container'",
-      "position": [287, 137],
-      "bounds": [15, 15],
-      "contentsOpaqueForText": true,
-      "transform": 1
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [8, 8, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [2, 2, 0, 1]
-      ]
-    },
-    {
-      "id": 3,
-      "parent": 2,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [18, 10, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/blink/web_tests/flag-specific/disable-site-isolation-trials/virtual/prefer_compositing_to_lcd_text/compositing/overflow/universal-accelerated-overflow-scroll-expected.txt b/third_party/blink/web_tests/flag-specific/disable-site-isolation-trials/virtual/prefer_compositing_to_lcd_text/compositing/overflow/universal-accelerated-overflow-scroll-expected.txt
deleted file mode 100644
index 15926bffc..0000000
--- a/third_party/blink/web_tests/flag-specific/disable-site-isolation-trials/virtual/prefer_compositing_to_lcd_text/compositing/overflow/universal-accelerated-overflow-scroll-expected.txt
+++ /dev/null
@@ -1,860 +0,0 @@
-{
-  "layers": [
-    {
-      "name": "Scrolling background of LayoutView #document",
-      "bounds": [785, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF"
-    },
-    {
-      "name": "LayoutNGBlockFlow DIV id='container-absolute-grandchildren-not-contained' class='overflow'",
-      "position": [2, 2],
-      "bounds": [85, 85],
-      "drawsContent": false,
-      "transform": 1
-    },
-    {
-      "name": "LayoutNGBlockFlow DIV id='container-absolute-grandchildren-not-contained' class='overflow'",
-      "position": [2, 6],
-      "bounds": [85, 136],
-      "contentsOpaqueForText": true,
-      "transform": 2
-    },
-    {
-      "name": "HorizontalScrollbar",
-      "position": [10, 97],
-      "bounds": [104, 257],
-      "contentsOpaqueForText": true
-    },
-    {
-      "name": "VerticalScrollbar",
-      "position": [87, 2],
-      "bounds": [15, 85],
-      "contentsOpaque": true,
-      "transform": 1
-    },
-    {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='positioned-absolute-grandchildren-not-contained' class='positionAbsolute positioned'",
-      "position": [35, 10],
-      "bounds": [199, 105],
-      "contentsOpaqueForText": true
-    },
-    {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='container-absolute-grandchildren' class='positionAbsolute overflow'",
-      "position": [2, 2],
-      "bounds": [85, 85],
-      "drawsContent": false,
-      "transform": 3
-    },
-    {
-      "name": "HorizontalScrollbar",
-      "position": [2, 87],
-      "bounds": [85, 15],
-      "contentsOpaque": true,
-      "transform": 3
-    },
-    {
-      "name": "VerticalScrollbar",
-      "position": [87, 2],
-      "bounds": [15, 85],
-      "contentsOpaque": true,
-      "transform": 3
-    },
-    {
-      "name": "Scroll corner of LayoutNGBlockFlow (positioned) DIV id='container-absolute-grandchildren' class='positionAbsolute overflow'",
-      "position": [217, 10],
-      "bounds": [137, 104],
-      "contentsOpaqueForText": true
-    },
-    {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='container-absolute-grandchildren' class='positionAbsolute overflow'",
-      "position": [2, 6],
-      "bounds": [105, 136],
-      "contentsOpaqueForText": true,
-      "transform": 4
-    },
-    {
-      "name": "LayoutNGBlockFlow DIV id='container-absolute-not-contained' class='overflow'",
-      "position": [2, 2],
-      "bounds": [85, 85],
-      "drawsContent": false,
-      "transform": 5
-    },
-    {
-      "name": "HorizontalScrollbar",
-      "position": [2, 87],
-      "bounds": [100, 15],
-      "contentsOpaqueForText": true,
-      "transform": 5
-    },
-    {
-      "name": "VerticalScrollbar",
-      "position": [87, 2],
-      "bounds": [15, 85],
-      "contentsOpaque": true,
-      "transform": 5
-    },
-    {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='positioned-absolute-not-contained' class='positionAbsolute positioned'",
-      "position": [275, 10],
-      "bounds": [199, 105],
-      "contentsOpaqueForText": true
-    },
-    {
-      "name": "LayoutNGBlockFlow (relative positioned) DIV id='scrolled-absolute-not-contained' class='scrolled'",
-      "position": [6, 6],
-      "bounds": [75, 136],
-      "contentsOpaqueForText": true,
-      "transform": 6
-    },
-    {
-      "name": "LayoutNGBlockFlow DIV id='container-absolute-sibling-grandchildren-not-contained' class='overflow'",
-      "position": [2, 2],
-      "bounds": [85, 85],
-      "drawsContent": false,
-      "transform": 7
-    },
-    {
-      "name": "LayoutNGBlockFlow DIV id='container-absolute-sibling-grandchildren-not-contained' class='overflow'",
-      "position": [2, 6],
-      "bounds": [85, 136],
-      "contentsOpaqueForText": true,
-      "transform": 8
-    },
-    {
-      "name": "HorizontalScrollbar",
-      "position": [2, 87],
-      "bounds": [100, 15],
-      "contentsOpaqueForText": true,
-      "transform": 7
-    },
-    {
-      "name": "VerticalScrollbar",
-      "position": [87, 2],
-      "bounds": [15, 85],
-      "contentsOpaque": true,
-      "transform": 7
-    },
-    {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='positioned-absolute-sibling-grandchildren-not-contained' class='positionAbsolute positioned'",
-      "position": [395, 75],
-      "bounds": [80, 40],
-      "contentsOpaque": true,
-      "backgroundColor": "#800080"
-    },
-    {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='container-absolute-sibling-grandchildren' class='positionAbsolute overflow'",
-      "position": [2, 2],
-      "bounds": [85, 85],
-      "drawsContent": false,
-      "transform": 9
-    },
-    {
-      "name": "HorizontalScrollbar",
-      "position": [2, 87],
-      "bounds": [85, 15],
-      "contentsOpaque": true,
-      "transform": 9
-    },
-    {
-      "name": "VerticalScrollbar",
-      "position": [87, 2],
-      "bounds": [15, 85],
-      "contentsOpaque": true,
-      "transform": 9
-    },
-    {
-      "name": "Scroll corner of LayoutNGBlockFlow (positioned) DIV id='container-absolute-sibling-grandchildren' class='positionAbsolute overflow'",
-      "position": [97, 130],
-      "bounds": [137, 104],
-      "contentsOpaqueForText": true
-    },
-    {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='container-absolute-sibling-grandchildren' class='positionAbsolute overflow'",
-      "position": [2, 6],
-      "bounds": [105, 136],
-      "contentsOpaqueForText": true,
-      "transform": 10
-    },
-    {
-      "name": "LayoutNGBlockFlow DIV id='container-absolute-sibling-not-contained' class='overflow'",
-      "position": [2, 2],
-      "bounds": [85, 85],
-      "drawsContent": false,
-      "transform": 11
-    },
-    {
-      "name": "HorizontalScrollbar",
-      "position": [130, 217],
-      "bounds": [224, 137],
-      "contentsOpaqueForText": true
-    },
-    {
-      "name": "VerticalScrollbar",
-      "position": [87, 2],
-      "bounds": [15, 85],
-      "contentsOpaque": true,
-      "transform": 11
-    },
-    {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='positioned-absolute-sibling-not-contained' class='positionAbsolute positioned'",
-      "position": [155, 130],
-      "bounds": [199, 105],
-      "contentsOpaqueForText": true
-    },
-    {
-      "name": "LayoutNGBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling-not-contained' class='scrolled'",
-      "position": [6, 6],
-      "bounds": [75, 108],
-      "contentsOpaqueForText": true,
-      "transform": 12
-    },
-    {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='container-absolute-sibling' class='positionAbsolute overflow'",
-      "position": [2, 2],
-      "bounds": [85, 85],
-      "drawsContent": false,
-      "transform": 13
-    },
-    {
-      "name": "HorizontalScrollbar",
-      "position": [2, 87],
-      "bounds": [85, 15],
-      "contentsOpaque": true,
-      "transform": 13
-    },
-    {
-      "name": "VerticalScrollbar",
-      "position": [87, 2],
-      "bounds": [15, 85],
-      "contentsOpaque": true,
-      "transform": 13
-    },
-    {
-      "name": "Scroll corner of LayoutNGBlockFlow (positioned) DIV id='container-absolute-sibling' class='positionAbsolute overflow'",
-      "position": [337, 130],
-      "bounds": [137, 104],
-      "contentsOpaqueForText": true
-    },
-    {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='positioned-absolute-sibling' class='positionAbsolute positioned'",
-      "position": [6, 6],
-      "bounds": [101, 108],
-      "contentsOpaqueForText": true,
-      "transform": 14
-    },
-    {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='container-absolute' class='positionAbsolute overflow'",
-      "position": [2, 2],
-      "bounds": [85, 85],
-      "drawsContent": false,
-      "transform": 15
-    },
-    {
-      "name": "HorizontalScrollbar",
-      "position": [2, 87],
-      "bounds": [85, 15],
-      "contentsOpaque": true,
-      "transform": 15
-    },
-    {
-      "name": "VerticalScrollbar",
-      "position": [87, 2],
-      "bounds": [15, 85],
-      "contentsOpaque": true,
-      "transform": 15
-    },
-    {
-      "name": "Scroll corner of LayoutNGBlockFlow (positioned) DIV id='container-absolute' class='positionAbsolute overflow'",
-      "position": [370, 217],
-      "bounds": [104, 137],
-      "contentsOpaqueForText": true
-    },
-    {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='positioned-absolute' class='positionAbsolute positioned'",
-      "position": [6, 6],
-      "bounds": [101, 108],
-      "contentsOpaqueForText": true,
-      "transform": 16
-    },
-    {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='container-fixed-sibling-grandchildren' class='positionAbsolute overflow'",
-      "position": [2, 2],
-      "bounds": [85, 85],
-      "drawsContent": false,
-      "transform": 17
-    },
-    {
-      "name": "HorizontalScrollbar",
-      "position": [2, 87],
-      "bounds": [100, 15],
-      "contentsOpaqueForText": true,
-      "transform": 17
-    },
-    {
-      "name": "VerticalScrollbar",
-      "position": [87, 2],
-      "bounds": [15, 85],
-      "contentsOpaque": true,
-      "transform": 17
-    },
-    {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='container-fixed-sibling-grandchildren' class='positionAbsolute overflow'",
-      "position": [2, 6],
-      "bounds": [85, 136],
-      "contentsOpaqueForText": true,
-      "transform": 18
-    },
-    {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='positioned-fixed-sibling-grandchildren' class='positionFixed positioned'",
-      "bounds": [80, 40],
-      "contentsOpaque": true,
-      "backgroundColor": "#800080",
-      "transform": 19
-    },
-    {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='container-fixed-sibling' class='positionAbsolute overflow'",
-      "position": [2, 2],
-      "bounds": [85, 85],
-      "drawsContent": false,
-      "transform": 20
-    },
-    {
-      "name": "HorizontalScrollbar",
-      "position": [2, 87],
-      "bounds": [100, 15],
-      "contentsOpaqueForText": true,
-      "transform": 20
-    },
-    {
-      "name": "VerticalScrollbar",
-      "position": [87, 2],
-      "bounds": [15, 85],
-      "contentsOpaque": true,
-      "transform": 20
-    },
-    {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='positioned-fixed-sibling' class='positionFixed positioned'",
-      "bounds": [80, 40],
-      "contentsOpaque": true,
-      "backgroundColor": "#800080",
-      "transform": 21
-    },
-    {
-      "name": "LayoutNGBlockFlow (relative positioned) DIV id='scrolled-fixed-sibling' class='scrolled'",
-      "position": [6, 6],
-      "bounds": [75, 108],
-      "contentsOpaqueForText": true,
-      "transform": 22
-    },
-    {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='container-fixed-grandchildren' class='positionAbsolute overflow'",
-      "position": [2, 2],
-      "bounds": [85, 85],
-      "drawsContent": false,
-      "transform": 23
-    },
-    {
-      "name": "HorizontalScrollbar",
-      "position": [2, 87],
-      "bounds": [100, 15],
-      "contentsOpaqueForText": true,
-      "transform": 23
-    },
-    {
-      "name": "VerticalScrollbar",
-      "position": [87, 2],
-      "bounds": [15, 85],
-      "contentsOpaque": true,
-      "transform": 23
-    },
-    {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='container-fixed-grandchildren' class='positionAbsolute overflow'",
-      "position": [2, 6],
-      "bounds": [85, 136],
-      "contentsOpaqueForText": true,
-      "transform": 24
-    },
-    {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='positioned-fixed-grandchildren' class='positionFixed positioned'",
-      "bounds": [80, 40],
-      "contentsOpaque": true,
-      "backgroundColor": "#800080",
-      "transform": 25
-    },
-    {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='container-fixed' class='positionAbsolute overflow'",
-      "position": [2, 2],
-      "bounds": [85, 85],
-      "drawsContent": false,
-      "transform": 26
-    },
-    {
-      "name": "HorizontalScrollbar",
-      "position": [2, 87],
-      "bounds": [100, 15],
-      "contentsOpaqueForText": true,
-      "transform": 26
-    },
-    {
-      "name": "VerticalScrollbar",
-      "position": [87, 2],
-      "bounds": [15, 85],
-      "contentsOpaque": true,
-      "transform": 26
-    },
-    {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='positioned-fixed' class='positionFixed positioned'",
-      "bounds": [80, 40],
-      "contentsOpaque": true,
-      "backgroundColor": "#800080",
-      "transform": 27
-    },
-    {
-      "name": "LayoutNGBlockFlow (relative positioned) DIV id='scrolled-fixed' class='scrolled'",
-      "position": [6, 6],
-      "bounds": [75, 108],
-      "contentsOpaqueForText": true,
-      "transform": 28
-    },
-    {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='sibling-absolute-sibling-grandchildren-not-contained' class='positionFixed sibling'",
-      "bounds": [50, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 29
-    },
-    {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='sibling-absolute-sibling-grandchildren' class='positionFixed sibling'",
-      "bounds": [50, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 30
-    },
-    {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='sibling-absolute-sibling-not-contained' class='positionFixed sibling'",
-      "bounds": [50, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 31
-    },
-    {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='sibling-absolute-sibling' class='positionFixed sibling'",
-      "bounds": [50, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 32
-    },
-    {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='sibling-fixed-sibling-grandchildren' class='positionFixed sibling'",
-      "bounds": [50, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 33
-    },
-    {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='sibling-fixed-sibling' class='positionFixed sibling'",
-      "bounds": [50, 100],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "transform": 34
-    },
-    {
-      "name": "LayoutNGBlockFlow (relative positioned) DIV id='scrolled-absolute-grandchildren-not-contained' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
-      "contentsOpaqueForText": true,
-      "transform": 2
-    },
-    {
-      "name": "LayoutNGBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling-grandchildren-not-contained' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
-      "contentsOpaqueForText": true,
-      "transform": 8
-    },
-    {
-      "name": "LayoutNGBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling-grandchildren' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
-      "contentsOpaqueForText": true,
-      "transform": 10
-    },
-    {
-      "name": "LayoutNGBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling-not-contained' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
-      "contentsOpaqueForText": true,
-      "transform": 12
-    },
-    {
-      "name": "LayoutNGBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
-      "contentsOpaqueForText": true,
-      "transform": 14
-    },
-    {
-      "name": "LayoutNGBlockFlow (relative positioned) DIV id='scrolled-absolute' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
-      "contentsOpaqueForText": true,
-      "transform": 16
-    },
-    {
-      "name": "LayoutNGBlockFlow (relative positioned) DIV id='scrolled-fixed-sibling-grandchildren' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
-      "contentsOpaqueForText": true,
-      "transform": 18
-    },
-    {
-      "name": "LayoutNGBlockFlow (relative positioned) DIV id='scrolled-fixed-sibling' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
-      "contentsOpaqueForText": true,
-      "transform": 22
-    },
-    {
-      "name": "LayoutNGBlockFlow (relative positioned) DIV id='scrolled-fixed-grandchildren' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
-      "contentsOpaqueForText": true,
-      "transform": 24
-    },
-    {
-      "name": "LayoutNGBlockFlow (relative positioned) DIV id='scrolled-fixed' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
-      "contentsOpaqueForText": true,
-      "transform": 28
-    },
-    {
-      "name": "VerticalScrollbar",
-      "position": [785, 0],
-      "bounds": [15, 600],
-      "contentsOpaque": true
-    }
-  ],
-  "transforms": [
-    {
-      "id": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [10, 10, 0, 1]
-      ]
-    },
-    {
-      "id": 2,
-      "parent": 1,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -59, 0, 1]
-      ]
-    },
-    {
-      "id": 3,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [130, 10, 0, 1]
-      ]
-    },
-    {
-      "id": 4,
-      "parent": 3,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -59, 0, 1]
-      ]
-    },
-    {
-      "id": 5,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [250, 10, 0, 1]
-      ]
-    },
-    {
-      "id": 6,
-      "parent": 5,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -59, 0, 1]
-      ]
-    },
-    {
-      "id": 7,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [370, 10, 0, 1]
-      ]
-    },
-    {
-      "id": 8,
-      "parent": 7,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -59, 0, 1]
-      ]
-    },
-    {
-      "id": 9,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [10, 130, 0, 1]
-      ]
-    },
-    {
-      "id": 10,
-      "parent": 9,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -59, 0, 1]
-      ]
-    },
-    {
-      "id": 11,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [130, 130, 0, 1]
-      ]
-    },
-    {
-      "id": 12,
-      "parent": 11,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -59, 0, 1]
-      ]
-    },
-    {
-      "id": 13,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [250, 130, 0, 1]
-      ]
-    },
-    {
-      "id": 14,
-      "parent": 13,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -59, 0, 1]
-      ]
-    },
-    {
-      "id": 15,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [370, 130, 0, 1]
-      ]
-    },
-    {
-      "id": 16,
-      "parent": 15,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -59, 0, 1]
-      ]
-    },
-    {
-      "id": 17,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [10, 250, 0, 1]
-      ]
-    },
-    {
-      "id": 18,
-      "parent": 17,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -59, 0, 1]
-      ]
-    },
-    {
-      "id": 19,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [35, 315, 0, 1]
-      ]
-    },
-    {
-      "id": 20,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [130, 250, 0, 1]
-      ]
-    },
-    {
-      "id": 21,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [155, 315, 0, 1]
-      ]
-    },
-    {
-      "id": 22,
-      "parent": 20,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -59, 0, 1]
-      ]
-    },
-    {
-      "id": 23,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [250, 250, 0, 1]
-      ]
-    },
-    {
-      "id": 24,
-      "parent": 23,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -59, 0, 1]
-      ]
-    },
-    {
-      "id": 25,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [275, 315, 0, 1]
-      ]
-    },
-    {
-      "id": 26,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [370, 250, 0, 1]
-      ]
-    },
-    {
-      "id": 27,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [395, 315, 0, 1]
-      ]
-    },
-    {
-      "id": 28,
-      "parent": 26,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [0, -59, 0, 1]
-      ]
-    },
-    {
-      "id": 29,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [375, 20, 0, 1]
-      ]
-    },
-    {
-      "id": 30,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [15, 140, 0, 1]
-      ]
-    },
-    {
-      "id": 31,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [135, 140, 0, 1]
-      ]
-    },
-    {
-      "id": 32,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [255, 140, 0, 1]
-      ]
-    },
-    {
-      "id": 33,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [15, 260, 0, 1]
-      ]
-    },
-    {
-      "id": 34,
-      "transform": [
-        [1, 0, 0, 0],
-        [0, 1, 0, 0],
-        [0, 0, 1, 0],
-        [135, 260, 0, 1]
-      ]
-    }
-  ]
-}
-
diff --git a/third_party/blink/web_tests/flag-specific/highdpi/fast/forms/focus-rect/textarea-with-scrollbar-expected.png b/third_party/blink/web_tests/flag-specific/highdpi/fast/forms/focus-rect/textarea-with-scrollbar-expected.png
index b8a6dc69..ada71bf 100644
--- a/third_party/blink/web_tests/flag-specific/highdpi/fast/forms/focus-rect/textarea-with-scrollbar-expected.png
+++ b/third_party/blink/web_tests/flag-specific/highdpi/fast/forms/focus-rect/textarea-with-scrollbar-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/highdpi/fast/sub-pixel/transformed-iframe-copy-on-scroll-expected.png b/third_party/blink/web_tests/flag-specific/highdpi/fast/sub-pixel/transformed-iframe-copy-on-scroll-expected.png
new file mode 100644
index 0000000..9c70391d
--- /dev/null
+++ b/third_party/blink/web_tests/flag-specific/highdpi/fast/sub-pixel/transformed-iframe-copy-on-scroll-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/highdpi/paint/invalidation/forms/textarea-caret-expected.png b/third_party/blink/web_tests/flag-specific/highdpi/paint/invalidation/forms/textarea-caret-expected.png
index d45c97a..8e71051 100644
--- a/third_party/blink/web_tests/flag-specific/highdpi/paint/invalidation/forms/textarea-caret-expected.png
+++ b/third_party/blink/web_tests/flag-specific/highdpi/paint/invalidation/forms/textarea-caret-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/highdpi/paint/invalidation/forms/textarea-caret-expected.txt b/third_party/blink/web_tests/flag-specific/highdpi/paint/invalidation/forms/textarea-caret-expected.txt
index 0d25e15..04e9e85 100644
--- a/third_party/blink/web_tests/flag-specific/highdpi/paint/invalidation/forms/textarea-caret-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/highdpi/paint/invalidation/forms/textarea-caret-expected.txt
@@ -21,13 +21,19 @@
       "position": [225, 7],
       "bounds": [44, 44],
       "contentsOpaqueForText": true,
-      "drawsContent": false,
       "invalidations": [
         [0, 0, 44, 44]
       ],
       "transform": 1
     },
     {
+      "name": "HorizontalScrollbar",
+      "position": [1, 30],
+      "bounds": [246, 22],
+      "contentsOpaque": true,
+      "transform": 1
+    },
+    {
       "name": "LayoutNGTextControlMultiLine TEXTAREA id='editor'",
       "position": [2, 2],
       "bounds": [723, 28],
@@ -38,23 +44,6 @@
       "transform": 2
     },
     {
-      "name": "HorizontalScrollbar",
-      "position": [1, 30],
-      "bounds": [246, 22],
-      "contentsOpaque": true,
-      "transform": 1
-    },
-    {
-      "name": "Scroll corner of LayoutNGTextControlMultiLine TEXTAREA id='editor'",
-      "position": [247, 29],
-      "bounds": [22, 22],
-      "contentsOpaque": true,
-      "invalidations": [
-        [0, 0, 22, 22]
-      ],
-      "transform": 1
-    },
-    {
       "name": "Caret",
       "position": [723, 5],
       "bounds": [1, 22],
diff --git a/third_party/blink/web_tests/flag-specific/highdpi/paint/invalidation/overflow/composited-overflow-with-borderbox-background-expected.txt b/third_party/blink/web_tests/flag-specific/highdpi/paint/invalidation/overflow/composited-overflow-with-borderbox-background-expected.txt
index d45490e..0816346 100644
--- a/third_party/blink/web_tests/flag-specific/highdpi/paint/invalidation/overflow/composited-overflow-with-borderbox-background-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/highdpi/paint/invalidation/overflow/composited-overflow-with-borderbox-background-expected.txt
@@ -17,17 +17,6 @@
       "transform": 1
     },
     {
-      "name": "LayoutNGBlockFlow DIV id='scroller'",
-      "position": [15, 15],
-      "bounds": [278, 450],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "invalidations": [
-        [0, 0, 278, 450]
-      ],
-      "transform": 1
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [15, 293],
       "bounds": [300, 22],
@@ -40,6 +29,17 @@
       "bounds": [22, 278],
       "contentsOpaque": true,
       "transform": 1
+    },
+    {
+      "name": "LayoutNGBlockFlow DIV id='scroller'",
+      "position": [15, 15],
+      "bounds": [278, 450],
+      "contentsOpaque": true,
+      "backgroundColor": "#008000",
+      "invalidations": [
+        [0, 0, 278, 450]
+      ],
+      "transform": 1
     }
   ],
   "transforms": [
diff --git a/third_party/blink/web_tests/flag-specific/highdpi/paint/invalidation/selection/selection-within-composited-scroller-expected.txt b/third_party/blink/web_tests/flag-specific/highdpi/paint/invalidation/selection/selection-within-composited-scroller-expected.txt
index f93a6c0..ee691a3 100644
--- a/third_party/blink/web_tests/flag-specific/highdpi/paint/invalidation/selection/selection-within-composited-scroller-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/highdpi/paint/invalidation/selection/selection-within-composited-scroller-expected.txt
@@ -20,16 +20,6 @@
       "transform": 1
     },
     {
-      "name": "LayoutNGBlockFlow DIV id='scroller'",
-      "bounds": [300, 2430],
-      "contentsOpaque": true,
-      "backgroundColor": "#ADD8E6",
-      "invalidations": [
-        [0, 915, 34, 27]
-      ],
-      "transform": 2
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [0, 278],
       "bounds": [278, 22],
@@ -49,6 +39,16 @@
       "bounds": [22, 22],
       "contentsOpaque": true,
       "transform": 1
+    },
+    {
+      "name": "LayoutNGBlockFlow DIV id='scroller'",
+      "bounds": [300, 2430],
+      "contentsOpaque": true,
+      "backgroundColor": "#ADD8E6",
+      "invalidations": [
+        [0, 915, 34, 27]
+      ],
+      "transform": 2
     }
   ],
   "transforms": [
diff --git a/third_party/blink/web_tests/platform/generic/compositing/background-color/background-color-coverage-expected.txt b/third_party/blink/web_tests/platform/generic/compositing/background-color/background-color-coverage-expected.txt
index 9d4e3ba..186e7d6 100644
--- a/third_party/blink/web_tests/platform/generic/compositing/background-color/background-color-coverage-expected.txt
+++ b/third_party/blink/web_tests/platform/generic/compositing/background-color/background-color-coverage-expected.txt
@@ -54,13 +54,6 @@
       "transform": 5
     },
     {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='brown3'",
-      "bounds": [85, 10000],
-      "contentsOpaque": true,
-      "backgroundColor": "#664C00",
-      "transform": 5
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [0, 85],
       "bounds": [100, 15],
@@ -75,6 +68,13 @@
       "transform": 5
     },
     {
+      "name": "LayoutNGBlockFlow (positioned) DIV id='brown3'",
+      "bounds": [85, 10000],
+      "contentsOpaque": true,
+      "backgroundColor": "#664C00",
+      "transform": 5
+    },
+    {
       "name": "LayoutNGBlockFlow (positioned) DIV id='brown4'",
       "bounds": [100, 100],
       "contentsOpaqueForText": true,
@@ -88,13 +88,6 @@
       "transform": 6
     },
     {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='brown4'",
-      "bounds": [85, 10000],
-      "contentsOpaque": true,
-      "backgroundColor": "#664C00",
-      "transform": 6
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [0, 85],
       "bounds": [100, 15],
@@ -107,6 +100,13 @@
       "bounds": [15, 85],
       "contentsOpaque": true,
       "transform": 6
+    },
+    {
+      "name": "LayoutNGBlockFlow (positioned) DIV id='brown4'",
+      "bounds": [85, 10000],
+      "contentsOpaque": true,
+      "backgroundColor": "#664C00",
+      "transform": 6
     }
   ],
   "transforms": [
diff --git a/third_party/blink/web_tests/platform/generic/compositing/iframes/become-overlapped-iframe-expected.txt b/third_party/blink/web_tests/platform/generic/compositing/iframes/become-overlapped-iframe-expected.txt
index e27c4037..773f41b 100644
--- a/third_party/blink/web_tests/platform/generic/compositing/iframes/become-overlapped-iframe-expected.txt
+++ b/third_party/blink/web_tests/platform/generic/compositing/iframes/become-overlapped-iframe-expected.txt
@@ -7,13 +7,6 @@
       "backgroundColor": "#FFFFFF"
     },
     {
-      "name": "Scrolling background of LayoutView #document",
-      "bounds": [305, 230],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    },
-    {
       "name": "VerticalScrollbar",
       "position": [305, 0],
       "bounds": [15, 170],
@@ -21,6 +14,13 @@
       "transform": 1
     },
     {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [305, 230],
+      "contentsOpaque": true,
+      "backgroundColor": "#C0C0C0",
+      "transform": 1
+    },
+    {
       "name": "LayoutNGBlockFlow DIV id='iframe-content' class='box'",
       "bounds": [210, 210],
       "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/platform/generic/compositing/iframes/composited-parent-iframe-expected.txt b/third_party/blink/web_tests/platform/generic/compositing/iframes/composited-parent-iframe-expected.txt
index a966c50..ee900b25 100644
--- a/third_party/blink/web_tests/platform/generic/compositing/iframes/composited-parent-iframe-expected.txt
+++ b/third_party/blink/web_tests/platform/generic/compositing/iframes/composited-parent-iframe-expected.txt
@@ -14,13 +14,6 @@
       "transform": 1
     },
     {
-      "name": "Scrolling background of LayoutView #document",
-      "bounds": [285, 230],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 2
-    },
-    {
       "name": "VerticalScrollbar",
       "position": [285, 0],
       "bounds": [15, 150],
@@ -28,6 +21,13 @@
       "transform": 2
     },
     {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [285, 230],
+      "contentsOpaque": true,
+      "backgroundColor": "#C0C0C0",
+      "transform": 2
+    },
+    {
       "name": "LayoutNGBlockFlow DIV id='iframe-content' class='box'",
       "bounds": [210, 210],
       "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/platform/generic/compositing/iframes/connect-compositing-iframe-delayed-expected.txt b/third_party/blink/web_tests/platform/generic/compositing/iframes/connect-compositing-iframe-delayed-expected.txt
index 9319217..5c8aa383 100644
--- a/third_party/blink/web_tests/platform/generic/compositing/iframes/connect-compositing-iframe-delayed-expected.txt
+++ b/third_party/blink/web_tests/platform/generic/compositing/iframes/connect-compositing-iframe-delayed-expected.txt
@@ -9,13 +9,6 @@
       "backgroundColor": "#FFFFFF"
     },
     {
-      "name": "Scrolling background of LayoutView #document",
-      "bounds": [285, 230],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    },
-    {
       "name": "VerticalScrollbar",
       "position": [285, 0],
       "bounds": [15, 150],
@@ -23,6 +16,13 @@
       "transform": 1
     },
     {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [285, 230],
+      "contentsOpaque": true,
+      "backgroundColor": "#C0C0C0",
+      "transform": 1
+    },
+    {
       "name": "LayoutNGBlockFlow DIV id='iframe-content' class='box'",
       "bounds": [210, 210],
       "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/platform/generic/compositing/iframes/connect-compositing-iframe-expected.txt b/third_party/blink/web_tests/platform/generic/compositing/iframes/connect-compositing-iframe-expected.txt
index 84076a13..630a2c1 100644
--- a/third_party/blink/web_tests/platform/generic/compositing/iframes/connect-compositing-iframe-expected.txt
+++ b/third_party/blink/web_tests/platform/generic/compositing/iframes/connect-compositing-iframe-expected.txt
@@ -14,13 +14,6 @@
       "transform": 1
     },
     {
-      "name": "Scrolling background of LayoutView #document",
-      "bounds": [285, 230],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 2
-    },
-    {
       "name": "VerticalScrollbar",
       "position": [285, 0],
       "bounds": [15, 150],
@@ -28,6 +21,13 @@
       "transform": 2
     },
     {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [285, 230],
+      "contentsOpaque": true,
+      "backgroundColor": "#C0C0C0",
+      "transform": 2
+    },
+    {
       "name": "LayoutNGBlockFlow DIV id='test' class='composited box'",
       "bounds": [210, 210],
       "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/platform/generic/compositing/iframes/connect-compositing-iframe2-expected.txt b/third_party/blink/web_tests/platform/generic/compositing/iframes/connect-compositing-iframe2-expected.txt
index 7a11d5e..f3171f7 100644
--- a/third_party/blink/web_tests/platform/generic/compositing/iframes/connect-compositing-iframe2-expected.txt
+++ b/third_party/blink/web_tests/platform/generic/compositing/iframes/connect-compositing-iframe2-expected.txt
@@ -14,13 +14,6 @@
       "transform": 1
     },
     {
-      "name": "Scrolling background of LayoutView #document",
-      "bounds": [285, 230],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 2
-    },
-    {
       "name": "VerticalScrollbar",
       "position": [285, 0],
       "bounds": [15, 150],
@@ -28,6 +21,13 @@
       "transform": 2
     },
     {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [285, 230],
+      "contentsOpaque": true,
+      "backgroundColor": "#C0C0C0",
+      "transform": 2
+    },
+    {
       "name": "LayoutNGBlockFlow DIV id='iframe-content' class='box'",
       "bounds": [210, 210],
       "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/platform/generic/compositing/iframes/connect-compositing-iframe3-expected.txt b/third_party/blink/web_tests/platform/generic/compositing/iframes/connect-compositing-iframe3-expected.txt
index 8712a60..db9a2ad 100644
--- a/third_party/blink/web_tests/platform/generic/compositing/iframes/connect-compositing-iframe3-expected.txt
+++ b/third_party/blink/web_tests/platform/generic/compositing/iframes/connect-compositing-iframe3-expected.txt
@@ -14,13 +14,6 @@
       "transform": 1
     },
     {
-      "name": "Scrolling background of LayoutView #document",
-      "bounds": [285, 230],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 2
-    },
-    {
       "name": "VerticalScrollbar",
       "position": [285, 0],
       "bounds": [15, 150],
@@ -28,6 +21,13 @@
       "transform": 2
     },
     {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [285, 230],
+      "contentsOpaque": true,
+      "backgroundColor": "#C0C0C0",
+      "transform": 2
+    },
+    {
       "name": "LayoutNGBlockFlow DIV id='iframe-content' class='box'",
       "bounds": [210, 210],
       "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/platform/generic/compositing/iframes/enter-compositing-iframe-expected.txt b/third_party/blink/web_tests/platform/generic/compositing/iframes/enter-compositing-iframe-expected.txt
index 3341ef1b..f96310fc 100644
--- a/third_party/blink/web_tests/platform/generic/compositing/iframes/enter-compositing-iframe-expected.txt
+++ b/third_party/blink/web_tests/platform/generic/compositing/iframes/enter-compositing-iframe-expected.txt
@@ -7,13 +7,6 @@
       "backgroundColor": "#FFFFFF"
     },
     {
-      "name": "Scrolling background of LayoutView #document",
-      "bounds": [285, 230],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    },
-    {
       "name": "VerticalScrollbar",
       "position": [285, 0],
       "bounds": [15, 150],
@@ -21,6 +14,13 @@
       "transform": 1
     },
     {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [285, 230],
+      "contentsOpaque": true,
+      "backgroundColor": "#C0C0C0",
+      "transform": 1
+    },
+    {
       "name": "LayoutNGBlockFlow DIV id='test' class='composited box'",
       "bounds": [210, 210],
       "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/platform/generic/compositing/iframes/iframe-resize-expected.txt b/third_party/blink/web_tests/platform/generic/compositing/iframes/iframe-resize-expected.txt
index 3b3e4f7..d0bcd0d 100644
--- a/third_party/blink/web_tests/platform/generic/compositing/iframes/iframe-resize-expected.txt
+++ b/third_party/blink/web_tests/platform/generic/compositing/iframes/iframe-resize-expected.txt
@@ -7,13 +7,6 @@
       "backgroundColor": "#FFFFFF"
     },
     {
-      "name": "Scrolling background of LayoutView #document",
-      "bounds": [385, 230],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    },
-    {
       "name": "VerticalScrollbar",
       "position": [385, 0],
       "bounds": [15, 120],
@@ -21,6 +14,13 @@
       "transform": 1
     },
     {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [385, 230],
+      "contentsOpaque": true,
+      "backgroundColor": "#C0C0C0",
+      "transform": 1
+    },
+    {
       "name": "LayoutNGBlockFlow DIV id='iframe-content' class='box'",
       "bounds": [210, 210],
       "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/platform/generic/compositing/iframes/iframe-size-from-zero-expected.txt b/third_party/blink/web_tests/platform/generic/compositing/iframes/iframe-size-from-zero-expected.txt
index 182cb5d8..dc2e25d3 100644
--- a/third_party/blink/web_tests/platform/generic/compositing/iframes/iframe-size-from-zero-expected.txt
+++ b/third_party/blink/web_tests/platform/generic/compositing/iframes/iframe-size-from-zero-expected.txt
@@ -7,13 +7,6 @@
       "backgroundColor": "#FFFFFF"
     },
     {
-      "name": "Scrolling background of LayoutView #document",
-      "bounds": [285, 230],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    },
-    {
       "name": "VerticalScrollbar",
       "position": [285, 0],
       "bounds": [15, 150],
@@ -21,6 +14,13 @@
       "transform": 1
     },
     {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [285, 230],
+      "contentsOpaque": true,
+      "backgroundColor": "#C0C0C0",
+      "transform": 1
+    },
+    {
       "name": "LayoutNGBlockFlow DIV id='iframe-content' class='box'",
       "bounds": [210, 210],
       "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/platform/generic/compositing/iframes/overlapped-iframe-expected.txt b/third_party/blink/web_tests/platform/generic/compositing/iframes/overlapped-iframe-expected.txt
index 182cb5d8..dc2e25d3 100644
--- a/third_party/blink/web_tests/platform/generic/compositing/iframes/overlapped-iframe-expected.txt
+++ b/third_party/blink/web_tests/platform/generic/compositing/iframes/overlapped-iframe-expected.txt
@@ -7,13 +7,6 @@
       "backgroundColor": "#FFFFFF"
     },
     {
-      "name": "Scrolling background of LayoutView #document",
-      "bounds": [285, 230],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 1
-    },
-    {
       "name": "VerticalScrollbar",
       "position": [285, 0],
       "bounds": [15, 150],
@@ -21,6 +14,13 @@
       "transform": 1
     },
     {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [285, 230],
+      "contentsOpaque": true,
+      "backgroundColor": "#C0C0C0",
+      "transform": 1
+    },
+    {
       "name": "LayoutNGBlockFlow DIV id='iframe-content' class='box'",
       "bounds": [210, 210],
       "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/platform/generic/compositing/iframes/overlapped-iframe-iframe-expected.txt b/third_party/blink/web_tests/platform/generic/compositing/iframes/overlapped-iframe-iframe-expected.txt
index 376998d..d53ea9c 100644
--- a/third_party/blink/web_tests/platform/generic/compositing/iframes/overlapped-iframe-iframe-expected.txt
+++ b/third_party/blink/web_tests/platform/generic/compositing/iframes/overlapped-iframe-iframe-expected.txt
@@ -14,18 +14,18 @@
       "transform": 2
     },
     {
-      "name": "Scrolling background of LayoutView #document",
-      "bounds": [285, 1018],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 3
-    },
-    {
       "name": "VerticalScrollbar",
       "position": [285, 0],
       "bounds": [15, 300],
       "contentsOpaque": true,
       "transform": 3
+    },
+    {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [285, 1018],
+      "contentsOpaque": true,
+      "backgroundColor": "#C0C0C0",
+      "transform": 3
     }
   ],
   "transforms": [
diff --git a/third_party/blink/web_tests/platform/generic/compositing/iframes/resizer-expected.txt b/third_party/blink/web_tests/platform/generic/compositing/iframes/resizer-expected.txt
index 719a6de..c48a6542 100644
--- a/third_party/blink/web_tests/platform/generic/compositing/iframes/resizer-expected.txt
+++ b/third_party/blink/web_tests/platform/generic/compositing/iframes/resizer-expected.txt
@@ -13,13 +13,6 @@
       "transform": 1
     },
     {
-      "name": "Scrolling background of LayoutView #document",
-      "bounds": [285, 230],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 2
-    },
-    {
       "name": "VerticalScrollbar",
       "position": [285, 0],
       "bounds": [15, 150],
@@ -27,6 +20,13 @@
       "transform": 2
     },
     {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [285, 230],
+      "contentsOpaque": true,
+      "backgroundColor": "#C0C0C0",
+      "transform": 2
+    },
+    {
       "name": "LayoutNGBlockFlow DIV id='iframe-content' class='box'",
       "bounds": [210, 210],
       "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/platform/generic/compositing/overflow/universal-accelerated-overflow-scroll-expected.txt b/third_party/blink/web_tests/platform/generic/compositing/overflow/universal-accelerated-overflow-scroll-expected.txt
index 15926bffc..6de9046c 100644
--- a/third_party/blink/web_tests/platform/generic/compositing/overflow/universal-accelerated-overflow-scroll-expected.txt
+++ b/third_party/blink/web_tests/platform/generic/compositing/overflow/universal-accelerated-overflow-scroll-expected.txt
@@ -18,6 +18,7 @@
       "position": [2, 6],
       "bounds": [85, 136],
       "contentsOpaqueForText": true,
+      "drawsContent": false,
       "transform": 2
     },
     {
@@ -40,6 +41,13 @@
       "contentsOpaqueForText": true
     },
     {
+      "name": "LayoutNGBlockFlow (relative positioned) DIV id='scrolled-absolute-grandchildren-not-contained' class='scrolled'",
+      "position": [6, 6],
+      "bounds": [75, 136],
+      "contentsOpaqueForText": true,
+      "transform": 2
+    },
+    {
       "name": "LayoutNGBlockFlow (positioned) DIV id='container-absolute-grandchildren' class='positionAbsolute overflow'",
       "position": [2, 2],
       "bounds": [85, 85],
@@ -119,6 +127,7 @@
       "position": [2, 6],
       "bounds": [85, 136],
       "contentsOpaqueForText": true,
+      "drawsContent": false,
       "transform": 8
     },
     {
@@ -143,6 +152,13 @@
       "backgroundColor": "#800080"
     },
     {
+      "name": "LayoutNGBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling-grandchildren-not-contained' class='scrolled'",
+      "position": [6, 34],
+      "bounds": [75, 80],
+      "contentsOpaqueForText": true,
+      "transform": 8
+    },
+    {
       "name": "LayoutNGBlockFlow (positioned) DIV id='container-absolute-sibling-grandchildren' class='positionAbsolute overflow'",
       "position": [2, 2],
       "bounds": [85, 85],
@@ -204,8 +220,8 @@
     },
     {
       "name": "LayoutNGBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling-not-contained' class='scrolled'",
-      "position": [6, 6],
-      "bounds": [75, 108],
+      "position": [6, 34],
+      "bounds": [75, 80],
       "contentsOpaqueForText": true,
       "transform": 12
     },
@@ -238,8 +254,8 @@
     },
     {
       "name": "LayoutNGBlockFlow (positioned) DIV id='positioned-absolute-sibling' class='positionAbsolute positioned'",
-      "position": [6, 6],
-      "bounds": [101, 108],
+      "position": [6, 34],
+      "bounds": [101, 80],
       "contentsOpaqueForText": true,
       "transform": 14
     },
@@ -272,8 +288,8 @@
     },
     {
       "name": "LayoutNGBlockFlow (positioned) DIV id='positioned-absolute' class='positionAbsolute positioned'",
-      "position": [6, 6],
-      "bounds": [101, 108],
+      "position": [6, 34],
+      "bounds": [101, 80],
       "contentsOpaqueForText": true,
       "transform": 16
     },
@@ -303,6 +319,7 @@
       "position": [2, 6],
       "bounds": [85, 136],
       "contentsOpaqueForText": true,
+      "drawsContent": false,
       "transform": 18
     },
     {
@@ -313,6 +330,13 @@
       "transform": 19
     },
     {
+      "name": "LayoutNGBlockFlow (relative positioned) DIV id='scrolled-fixed-sibling-grandchildren' class='scrolled'",
+      "position": [6, 34],
+      "bounds": [75, 80],
+      "contentsOpaqueForText": true,
+      "transform": 18
+    },
+    {
       "name": "LayoutNGBlockFlow (positioned) DIV id='container-fixed-sibling' class='positionAbsolute overflow'",
       "position": [2, 2],
       "bounds": [85, 85],
@@ -342,8 +366,8 @@
     },
     {
       "name": "LayoutNGBlockFlow (relative positioned) DIV id='scrolled-fixed-sibling' class='scrolled'",
-      "position": [6, 6],
-      "bounds": [75, 108],
+      "position": [6, 34],
+      "bounds": [75, 80],
       "contentsOpaqueForText": true,
       "transform": 22
     },
@@ -373,6 +397,7 @@
       "position": [2, 6],
       "bounds": [85, 136],
       "contentsOpaqueForText": true,
+      "drawsContent": false,
       "transform": 24
     },
     {
@@ -383,6 +408,13 @@
       "transform": 25
     },
     {
+      "name": "LayoutNGBlockFlow (relative positioned) DIV id='scrolled-fixed-grandchildren' class='scrolled'",
+      "position": [6, 34],
+      "bounds": [75, 80],
+      "contentsOpaqueForText": true,
+      "transform": 24
+    },
+    {
       "name": "LayoutNGBlockFlow (positioned) DIV id='container-fixed' class='positionAbsolute overflow'",
       "position": [2, 2],
       "bounds": [85, 85],
@@ -412,8 +444,8 @@
     },
     {
       "name": "LayoutNGBlockFlow (relative positioned) DIV id='scrolled-fixed' class='scrolled'",
-      "position": [6, 6],
-      "bounds": [75, 108],
+      "position": [6, 34],
+      "bounds": [75, 80],
       "contentsOpaqueForText": true,
       "transform": 28
     },
@@ -460,72 +492,65 @@
       "transform": 34
     },
     {
-      "name": "LayoutNGBlockFlow (relative positioned) DIV id='scrolled-absolute-grandchildren-not-contained' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
-      "contentsOpaqueForText": true,
-      "transform": 2
-    },
-    {
       "name": "LayoutNGBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling-grandchildren-not-contained' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
+      "position": [6, 6],
+      "bounds": [75, 136],
       "contentsOpaqueForText": true,
       "transform": 8
     },
     {
       "name": "LayoutNGBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling-grandchildren' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
+      "position": [6, 6],
+      "bounds": [75, 136],
       "contentsOpaqueForText": true,
       "transform": 10
     },
     {
       "name": "LayoutNGBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling-not-contained' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
+      "position": [6, 6],
+      "bounds": [75, 136],
       "contentsOpaqueForText": true,
       "transform": 12
     },
     {
       "name": "LayoutNGBlockFlow (relative positioned) DIV id='scrolled-absolute-sibling' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
+      "position": [6, 6],
+      "bounds": [75, 136],
       "contentsOpaqueForText": true,
       "transform": 14
     },
     {
       "name": "LayoutNGBlockFlow (relative positioned) DIV id='scrolled-absolute' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
+      "position": [6, 6],
+      "bounds": [75, 136],
       "contentsOpaqueForText": true,
       "transform": 16
     },
     {
       "name": "LayoutNGBlockFlow (relative positioned) DIV id='scrolled-fixed-sibling-grandchildren' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
+      "position": [6, 6],
+      "bounds": [75, 136],
       "contentsOpaqueForText": true,
       "transform": 18
     },
     {
       "name": "LayoutNGBlockFlow (relative positioned) DIV id='scrolled-fixed-sibling' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
+      "position": [6, 6],
+      "bounds": [75, 136],
       "contentsOpaqueForText": true,
       "transform": 22
     },
     {
       "name": "LayoutNGBlockFlow (relative positioned) DIV id='scrolled-fixed-grandchildren' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
+      "position": [6, 6],
+      "bounds": [75, 136],
       "contentsOpaqueForText": true,
       "transform": 24
     },
     {
       "name": "LayoutNGBlockFlow (relative positioned) DIV id='scrolled-fixed' class='scrolled onTop'",
-      "position": [6, 62],
-      "bounds": [75, 80],
+      "position": [6, 6],
+      "bounds": [75, 136],
       "contentsOpaqueForText": true,
       "transform": 28
     },
diff --git a/third_party/blink/web_tests/platform/generic/compositing/squashing/squash-above-fixed-1-expected.txt b/third_party/blink/web_tests/platform/generic/compositing/squashing/squash-above-fixed-1-expected.txt
index 38ec7513..b2ccbdcc 100644
--- a/third_party/blink/web_tests/platform/generic/compositing/squashing/squash-above-fixed-1-expected.txt
+++ b/third_party/blink/web_tests/platform/generic/compositing/squashing/squash-above-fixed-1-expected.txt
@@ -19,9 +19,8 @@
       "transform": 1
     },
     {
-      "name": "LayoutNGBlockFlow (relative positioned) DIV id='paragraph-b' class='overlapping lime'",
-      "position": [0, 100],
-      "bounds": [200, 1300],
+      "name": "LayoutNGBlockFlow (relative positioned) DIV id='paragraph-a' class='overlapping cyan'",
+      "bounds": [200, 1400],
       "contentsOpaqueForText": true
     },
     {
@@ -62,9 +61,8 @@
       "transform": 2
     },
     {
-      "name": "LayoutNGBlockFlow (relative positioned) DIV id='paragraph-b' class='overlapping lime'",
-      "position": [0, 100],
-      "bounds": [200, 1300],
+      "name": "LayoutNGBlockFlow (relative positioned) DIV id='paragraph-a' class='overlapping cyan'",
+      "bounds": [200, 1400],
       "contentsOpaqueForText": true,
       "transform": 1
     },
@@ -115,9 +113,8 @@
       "transform": 2
     },
     {
-      "name": "LayoutNGBlockFlow (relative positioned) DIV id='paragraph-b' class='overlapping lime'",
-      "position": [0, 100],
-      "bounds": [200, 1300],
+      "name": "LayoutNGBlockFlow (relative positioned) DIV id='paragraph-a' class='overlapping cyan'",
+      "bounds": [200, 1400],
       "contentsOpaqueForText": true,
       "transform": 1
     },
@@ -168,9 +165,8 @@
       "transform": 2
     },
     {
-      "name": "LayoutNGBlockFlow (relative positioned) DIV id='paragraph-b' class='overlapping lime'",
-      "position": [0, 100],
-      "bounds": [200, 1300],
+      "name": "LayoutNGBlockFlow (relative positioned) DIV id='paragraph-a' class='overlapping cyan'",
+      "bounds": [200, 1400],
       "contentsOpaqueForText": true,
       "transform": 1
     },
diff --git a/third_party/blink/web_tests/platform/generic/paint/invalidation/background/composited-background-on-both-layers-expected.txt b/third_party/blink/web_tests/platform/generic/paint/invalidation/background/composited-background-on-both-layers-expected.txt
index da2ccf0..b582dca5 100644
--- a/third_party/blink/web_tests/platform/generic/paint/invalidation/background/composited-background-on-both-layers-expected.txt
+++ b/third_party/blink/web_tests/platform/generic/paint/invalidation/background/composited-background-on-both-layers-expected.txt
@@ -24,17 +24,6 @@
       "transform": 1
     },
     {
-      "name": "LayoutNGBlockFlow DIV id='target'",
-      "position": [20, 20],
-      "bounds": [185, 3000],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "invalidations": [
-        [0, 0, 185, 3000]
-      ],
-      "transform": 1
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [20, 205],
       "bounds": [200, 15],
@@ -47,6 +36,17 @@
       "bounds": [15, 185],
       "contentsOpaque": true,
       "transform": 1
+    },
+    {
+      "name": "LayoutNGBlockFlow DIV id='target'",
+      "position": [20, 20],
+      "bounds": [185, 3000],
+      "contentsOpaque": true,
+      "backgroundColor": "#008000",
+      "invalidations": [
+        [0, 0, 185, 3000]
+      ],
+      "transform": 1
     }
   ],
   "transforms": [
diff --git a/third_party/blink/web_tests/platform/generic/paint/invalidation/compositing/should-not-repaint-scrolling-contents-outline-change-expected.txt b/third_party/blink/web_tests/platform/generic/paint/invalidation/compositing/should-not-repaint-scrolling-contents-outline-change-expected.txt
index c43db24b..69793148 100644
--- a/third_party/blink/web_tests/platform/generic/paint/invalidation/compositing/should-not-repaint-scrolling-contents-outline-change-expected.txt
+++ b/third_party/blink/web_tests/platform/generic/paint/invalidation/compositing/should-not-repaint-scrolling-contents-outline-change-expected.txt
@@ -20,13 +20,6 @@
       "transform": 1
     },
     {
-      "name": "LayoutNGBlockFlow DIV id='target'",
-      "bounds": [185, 2000],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "transform": 1
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [0, 185],
       "bounds": [200, 15],
@@ -42,6 +35,13 @@
     },
     {
       "name": "LayoutNGBlockFlow DIV id='target'",
+      "bounds": [185, 2000],
+      "contentsOpaque": true,
+      "backgroundColor": "#0000FF",
+      "transform": 1
+    },
+    {
+      "name": "LayoutNGBlockFlow DIV id='target'",
       "position": [-10, -10],
       "bounds": [220, 220],
       "contentsOpaqueForText": true,
diff --git a/third_party/blink/web_tests/platform/generic/paint/invalidation/overflow/composited-overflow-with-borderbox-background-expected.txt b/third_party/blink/web_tests/platform/generic/paint/invalidation/overflow/composited-overflow-with-borderbox-background-expected.txt
index e46f277..6f1a77f 100644
--- a/third_party/blink/web_tests/platform/generic/paint/invalidation/overflow/composited-overflow-with-borderbox-background-expected.txt
+++ b/third_party/blink/web_tests/platform/generic/paint/invalidation/overflow/composited-overflow-with-borderbox-background-expected.txt
@@ -17,17 +17,6 @@
       "transform": 1
     },
     {
-      "name": "LayoutNGBlockFlow DIV id='scroller'",
-      "position": [10, 10],
-      "bounds": [185, 300],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "invalidations": [
-        [0, 0, 185, 300]
-      ],
-      "transform": 1
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [10, 195],
       "bounds": [200, 15],
@@ -40,6 +29,17 @@
       "bounds": [15, 185],
       "contentsOpaque": true,
       "transform": 1
+    },
+    {
+      "name": "LayoutNGBlockFlow DIV id='scroller'",
+      "position": [10, 10],
+      "bounds": [185, 300],
+      "contentsOpaque": true,
+      "backgroundColor": "#008000",
+      "invalidations": [
+        [0, 0, 185, 300]
+      ],
+      "transform": 1
     }
   ],
   "transforms": [
diff --git a/third_party/blink/web_tests/platform/generic/paint/invalidation/overflow/composited-overflow-with-local-background-expected.txt b/third_party/blink/web_tests/platform/generic/paint/invalidation/overflow/composited-overflow-with-local-background-expected.txt
index 405ac344..5cf1551f 100644
--- a/third_party/blink/web_tests/platform/generic/paint/invalidation/overflow/composited-overflow-with-local-background-expected.txt
+++ b/third_party/blink/web_tests/platform/generic/paint/invalidation/overflow/composited-overflow-with-local-background-expected.txt
@@ -20,16 +20,6 @@
       "transform": 1
     },
     {
-      "name": "LayoutNGBlockFlow DIV id='scroller'",
-      "bounds": [185, 300],
-      "contentsOpaque": true,
-      "backgroundColor": "#008000",
-      "invalidations": [
-        [0, 0, 185, 300]
-      ],
-      "transform": 1
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [0, 185],
       "bounds": [200, 15],
@@ -42,6 +32,16 @@
       "bounds": [15, 185],
       "contentsOpaque": true,
       "transform": 1
+    },
+    {
+      "name": "LayoutNGBlockFlow DIV id='scroller'",
+      "bounds": [185, 300],
+      "contentsOpaque": true,
+      "backgroundColor": "#008000",
+      "invalidations": [
+        [0, 0, 185, 300]
+      ],
+      "transform": 1
     }
   ],
   "transforms": [
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/textarea/textarea-scrollbar-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/textarea/textarea-scrollbar-expected.png
index 39f18136..72e411a 100644
--- a/third_party/blink/web_tests/platform/linux/fast/forms/textarea/textarea-scrollbar-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/forms/textarea/textarea-scrollbar-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/sub-pixel/transformed-iframe-copy-on-scroll-expected.png b/third_party/blink/web_tests/platform/linux/fast/sub-pixel/transformed-iframe-copy-on-scroll-expected.png
index 4c839791..b8c41ef 100644
--- a/third_party/blink/web_tests/platform/linux/fast/sub-pixel/transformed-iframe-copy-on-scroll-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/sub-pixel/transformed-iframe-copy-on-scroll-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/selection/selection-within-composited-scroller-expected.txt b/third_party/blink/web_tests/platform/linux/paint/invalidation/selection/selection-within-composited-scroller-expected.txt
index 5a4b293ec..5516b25 100644
--- a/third_party/blink/web_tests/platform/linux/paint/invalidation/selection/selection-within-composited-scroller-expected.txt
+++ b/third_party/blink/web_tests/platform/linux/paint/invalidation/selection/selection-within-composited-scroller-expected.txt
@@ -20,16 +20,6 @@
       "transform": 1
     },
     {
-      "name": "LayoutNGBlockFlow DIV id='scroller'",
-      "bounds": [200, 1620],
-      "contentsOpaque": true,
-      "backgroundColor": "#ADD8E6",
-      "invalidations": [
-        [0, 610, 22, 20]
-      ],
-      "transform": 2
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [0, 185],
       "bounds": [185, 15],
@@ -49,6 +39,16 @@
       "bounds": [15, 15],
       "contentsOpaque": true,
       "transform": 1
+    },
+    {
+      "name": "LayoutNGBlockFlow DIV id='scroller'",
+      "bounds": [200, 1620],
+      "contentsOpaque": true,
+      "backgroundColor": "#ADD8E6",
+      "invalidations": [
+        [0, 610, 22, 20]
+      ],
+      "transform": 2
     }
   ],
   "transforms": [
diff --git a/third_party/blink/web_tests/platform/linux/virtual/backface-visibility-interop/paint/invalidation/forms/textarea-caret-expected.png b/third_party/blink/web_tests/platform/linux/virtual/backface-visibility-interop/paint/invalidation/forms/textarea-caret-expected.png
deleted file mode 100644
index 5fb59fe..0000000
--- a/third_party/blink/web_tests/platform/linux/virtual/backface-visibility-interop/paint/invalidation/forms/textarea-caret-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/backface-visibility-interop/paint/invalidation/selection/selection-within-composited-scroller-expected.txt b/third_party/blink/web_tests/platform/linux/virtual/backface-visibility-interop/paint/invalidation/selection/selection-within-composited-scroller-expected.txt
index 5a4b293ec..5516b25 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/backface-visibility-interop/paint/invalidation/selection/selection-within-composited-scroller-expected.txt
+++ b/third_party/blink/web_tests/platform/linux/virtual/backface-visibility-interop/paint/invalidation/selection/selection-within-composited-scroller-expected.txt
@@ -20,16 +20,6 @@
       "transform": 1
     },
     {
-      "name": "LayoutNGBlockFlow DIV id='scroller'",
-      "bounds": [200, 1620],
-      "contentsOpaque": true,
-      "backgroundColor": "#ADD8E6",
-      "invalidations": [
-        [0, 610, 22, 20]
-      ],
-      "transform": 2
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [0, 185],
       "bounds": [185, 15],
@@ -49,6 +39,16 @@
       "bounds": [15, 15],
       "contentsOpaque": true,
       "transform": 1
+    },
+    {
+      "name": "LayoutNGBlockFlow DIV id='scroller'",
+      "bounds": [200, 1620],
+      "contentsOpaque": true,
+      "backgroundColor": "#ADD8E6",
+      "invalidations": [
+        [0, 610, 22, 20]
+      ],
+      "transform": 2
     }
   ],
   "transforms": [
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/fast/events/touch/compositor-touch-hit-rects-iframes-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.13/fast/events/touch/compositor-touch-hit-rects-iframes-expected.txt
index 2118886..d6e5cc45 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.13/fast/events/touch/compositor-touch-hit-rects-iframes-expected.txt
+++ b/third_party/blink/web_tests/platform/mac-mac10.13/fast/events/touch/compositor-touch-hit-rects-iframes-expected.txt
@@ -1,42 +1,42 @@
 This tests verifies the hit test regions given to the compositor when non-composited iframes are involved. It can only be run in DumpRenderTree. The outputted rects should cover the hit test regions of all the listed elements. Enable visualize mode to quickly validate graphically.
 
-iframe: layer(404x31) has hit test rect (387,2 15x25)
 iframe: layer(800x600) has hit test rect (23,130 290x15)
 iframe: layer(800x600) has hit test rect (395,130 15x25)
 iframe: layer(800x600) has hit test rect (395,161 15x35)
 iframe: layer(800x600) has hit test rect (355,168 15x28)
 iframe: layer(800x600) has hit test rect (443,213 18x29)
 iframe: layer(800x600) has hit test rect (395,253 15x25)
+iframe: layer(800x600) has hit test rect (395,284 15x25)
 
-iframe-nested: layer(404x31) has hit test rect (387,2 15x25)
 iframe-nested: layer(800x600) has hit test rect (395,130 15x25)
 iframe-nested: layer(800x600) has hit test rect (395,161 15x35)
 iframe-nested: layer(800x600) has hit test rect (33,168 290x15)
 iframe-nested: layer(800x600) has hit test rect (355,168 15x28)
 iframe-nested: layer(800x600) has hit test rect (443,213 18x29)
 iframe-nested: layer(800x600) has hit test rect (395,253 15x25)
+iframe-nested: layer(800x600) has hit test rect (395,284 15x25)
 
-iframe-transform: layer(404x31) has hit test rect (387,2 15x25)
 iframe-transform: layer(785x817) has hit test rect (395,146 15x25)
 iframe-transform: layer(785x817) has hit test rect (395,177 15x35)
 iframe-transform: layer(785x817) has hit test rect (355,184 15x28)
 iframe-transform: layer(785x817) has hit test rect (34,223 320x23)
 iframe-transform: layer(785x817) has hit test rect (443,229 18x29)
 iframe-transform: layer(785x817) has hit test rect (395,269 15x25)
+iframe-transform: layer(785x817) has hit test rect (395,300 15x25)
 
 iframe-fixed: layer(332x22) has hit test rect (0,0 332x22)
-iframe-fixed: layer(404x31) has hit test rect (387,2 15x25)
 iframe-fixed: layer(785x1057) has hit test rect (395,146 15x25)
 iframe-fixed: layer(785x1057) has hit test rect (395,177 15x35)
 iframe-fixed: layer(785x1057) has hit test rect (355,184 15x28)
 iframe-fixed: layer(785x1057) has hit test rect (443,229 18x29)
 iframe-fixed: layer(785x1057) has hit test rect (395,269 15x25)
+iframe-fixed: layer(785x1057) has hit test rect (395,300 15x25)
 
-iframe-doc: layer(404x31) has hit test rect (2,2 400x25)
 iframe-doc: layer(785x1297) has hit test rect (395,146 15x25)
 iframe-doc: layer(785x1297) has hit test rect (395,177 15x35)
 iframe-doc: layer(785x1297) has hit test rect (355,184 15x28)
 iframe-doc: layer(785x1297) has hit test rect (443,229 18x29)
 iframe-doc: layer(785x1297) has hit test rect (395,269 15x25)
+iframe-doc: layer(785x1297) has hit test rect (10,300 400x25)
 
 
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/fast/forms/textarea/textarea-scrollbar-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/fast/forms/textarea/textarea-scrollbar-expected.png
deleted file mode 100644
index 417dc1c..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.13/fast/forms/textarea/textarea-scrollbar-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/scroll-unification/fast/events/touch/compositor-touch-hit-rects-iframes-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/scroll-unification/fast/events/touch/compositor-touch-hit-rects-iframes-expected.txt
index 2118886..d6e5cc45 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/scroll-unification/fast/events/touch/compositor-touch-hit-rects-iframes-expected.txt
+++ b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/scroll-unification/fast/events/touch/compositor-touch-hit-rects-iframes-expected.txt
@@ -1,42 +1,42 @@
 This tests verifies the hit test regions given to the compositor when non-composited iframes are involved. It can only be run in DumpRenderTree. The outputted rects should cover the hit test regions of all the listed elements. Enable visualize mode to quickly validate graphically.
 
-iframe: layer(404x31) has hit test rect (387,2 15x25)
 iframe: layer(800x600) has hit test rect (23,130 290x15)
 iframe: layer(800x600) has hit test rect (395,130 15x25)
 iframe: layer(800x600) has hit test rect (395,161 15x35)
 iframe: layer(800x600) has hit test rect (355,168 15x28)
 iframe: layer(800x600) has hit test rect (443,213 18x29)
 iframe: layer(800x600) has hit test rect (395,253 15x25)
+iframe: layer(800x600) has hit test rect (395,284 15x25)
 
-iframe-nested: layer(404x31) has hit test rect (387,2 15x25)
 iframe-nested: layer(800x600) has hit test rect (395,130 15x25)
 iframe-nested: layer(800x600) has hit test rect (395,161 15x35)
 iframe-nested: layer(800x600) has hit test rect (33,168 290x15)
 iframe-nested: layer(800x600) has hit test rect (355,168 15x28)
 iframe-nested: layer(800x600) has hit test rect (443,213 18x29)
 iframe-nested: layer(800x600) has hit test rect (395,253 15x25)
+iframe-nested: layer(800x600) has hit test rect (395,284 15x25)
 
-iframe-transform: layer(404x31) has hit test rect (387,2 15x25)
 iframe-transform: layer(785x817) has hit test rect (395,146 15x25)
 iframe-transform: layer(785x817) has hit test rect (395,177 15x35)
 iframe-transform: layer(785x817) has hit test rect (355,184 15x28)
 iframe-transform: layer(785x817) has hit test rect (34,223 320x23)
 iframe-transform: layer(785x817) has hit test rect (443,229 18x29)
 iframe-transform: layer(785x817) has hit test rect (395,269 15x25)
+iframe-transform: layer(785x817) has hit test rect (395,300 15x25)
 
 iframe-fixed: layer(332x22) has hit test rect (0,0 332x22)
-iframe-fixed: layer(404x31) has hit test rect (387,2 15x25)
 iframe-fixed: layer(785x1057) has hit test rect (395,146 15x25)
 iframe-fixed: layer(785x1057) has hit test rect (395,177 15x35)
 iframe-fixed: layer(785x1057) has hit test rect (355,184 15x28)
 iframe-fixed: layer(785x1057) has hit test rect (443,229 18x29)
 iframe-fixed: layer(785x1057) has hit test rect (395,269 15x25)
+iframe-fixed: layer(785x1057) has hit test rect (395,300 15x25)
 
-iframe-doc: layer(404x31) has hit test rect (2,2 400x25)
 iframe-doc: layer(785x1297) has hit test rect (395,146 15x25)
 iframe-doc: layer(785x1297) has hit test rect (395,177 15x35)
 iframe-doc: layer(785x1297) has hit test rect (355,184 15x28)
 iframe-doc: layer(785x1297) has hit test rect (443,229 18x29)
 iframe-doc: layer(785x1297) has hit test rect (395,269 15x25)
+iframe-doc: layer(785x1297) has hit test rect (10,300 400x25)
 
 
diff --git a/third_party/blink/web_tests/platform/mac-mac11/http/tests/misc/acid3-expected.png b/third_party/blink/web_tests/platform/mac-mac11/http/tests/misc/acid3-expected.png
index eaecf5e8..196005e 100644
--- a/third_party/blink/web_tests/platform/mac-mac11/http/tests/misc/acid3-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac11/http/tests/misc/acid3-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac11/virtual/scroll-unification/http/tests/misc/acid3-expected.png b/third_party/blink/web_tests/platform/mac-mac11/virtual/scroll-unification/http/tests/misc/acid3-expected.png
index eaecf5e8..196005e 100644
--- a/third_party/blink/web_tests/platform/mac-mac11/virtual/scroll-unification/http/tests/misc/acid3-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac11/virtual/scroll-unification/http/tests/misc/acid3-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/compositing/iframes/scrolling-iframe-expected.txt b/third_party/blink/web_tests/platform/mac/compositing/iframes/scrolling-iframe-expected.txt
index c74e901..29bab8c3 100644
--- a/third_party/blink/web_tests/platform/mac/compositing/iframes/scrolling-iframe-expected.txt
+++ b/third_party/blink/web_tests/platform/mac/compositing/iframes/scrolling-iframe-expected.txt
@@ -7,13 +7,6 @@
       "backgroundColor": "#FFFFFF"
     },
     {
-      "name": "Scrolling background of LayoutView #document",
-      "bounds": [508, 608],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 2
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [0, 135],
       "bounds": [285, 15],
@@ -35,6 +28,13 @@
       "transform": 1
     },
     {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [508, 608],
+      "contentsOpaque": true,
+      "backgroundColor": "#C0C0C0",
+      "transform": 2
+    },
+    {
       "name": "LayoutNGBlockFlow DIV id='iframe-content' class='box'",
       "bounds": [200, 200],
       "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/platform/mac/compositing/layer-creation/scroll-partial-update-expected.txt b/third_party/blink/web_tests/platform/mac/compositing/layer-creation/scroll-partial-update-expected.txt
index 36b0a020..57aa66e 100644
--- a/third_party/blink/web_tests/platform/mac/compositing/layer-creation/scroll-partial-update-expected.txt
+++ b/third_party/blink/web_tests/platform/mac/compositing/layer-creation/scroll-partial-update-expected.txt
@@ -27,17 +27,17 @@
       "transform": 2
     },
     {
-      "name": "LayoutNGBlockFlow DIV id='scroller'",
-      "bounds": [185, 400],
-      "backgroundColor": "#FFFF0080",
-      "transform": 3
-    },
-    {
       "name": "VerticalScrollbar",
       "position": [185, 0],
       "bounds": [15, 200],
       "contentsOpaque": true,
       "transform": 2
+    },
+    {
+      "name": "LayoutNGBlockFlow DIV id='scroller'",
+      "bounds": [185, 400],
+      "backgroundColor": "#FFFF0080",
+      "transform": 3
     }
   ],
   "transforms": [
diff --git a/third_party/blink/web_tests/platform/mac/compositing/overflow/textarea-scroll-touch-expected.txt b/third_party/blink/web_tests/platform/mac/compositing/overflow/textarea-scroll-touch-expected.txt
index 373b30c..59c51fcd 100644
--- a/third_party/blink/web_tests/platform/mac/compositing/overflow/textarea-scroll-touch-expected.txt
+++ b/third_party/blink/web_tests/platform/mac/compositing/overflow/textarea-scroll-touch-expected.txt
@@ -20,6 +20,13 @@
       "bounds": [261, 140]
     },
     {
+      "name": "VerticalScrollbar",
+      "position": [190, 1],
+      "bounds": [15, 109],
+      "contentsOpaque": true,
+      "transform": 1
+    },
+    {
       "name": "LayoutNGTextControlMultiLine TEXTAREA",
       "position": [1, 1],
       "bounds": [189, 337],
@@ -28,13 +35,6 @@
       "transform": 2
     },
     {
-      "name": "VerticalScrollbar",
-      "position": [190, 1],
-      "bounds": [15, 109],
-      "contentsOpaque": true,
-      "transform": 1
-    },
-    {
       "name": "LayoutNGTextControlMultiLine TEXTAREA",
       "position": [1, 1],
       "bounds": [189, 124],
@@ -49,19 +49,19 @@
       "transform": 3
     },
     {
+      "name": "VerticalScrollbar",
+      "position": [190, 1],
+      "bounds": [15, 109],
+      "contentsOpaque": true,
+      "transform": 3
+    },
+    {
       "name": "LayoutNGTextControlMultiLine TEXTAREA",
       "position": [1, 1],
       "bounds": [189, 337],
       "contentsOpaque": true,
       "backgroundColor": "#CCCCCC",
       "transform": 4
-    },
-    {
-      "name": "VerticalScrollbar",
-      "position": [190, 1],
-      "bounds": [15, 109],
-      "contentsOpaque": true,
-      "transform": 3
     }
   ],
   "transforms": [
diff --git a/third_party/blink/web_tests/platform/mac/compositing/rtl/rtl-iframe-absolute-overflow-expected.txt b/third_party/blink/web_tests/platform/mac/compositing/rtl/rtl-iframe-absolute-overflow-expected.txt
index 1a756de..066d4ae9 100644
--- a/third_party/blink/web_tests/platform/mac/compositing/rtl/rtl-iframe-absolute-overflow-expected.txt
+++ b/third_party/blink/web_tests/platform/mac/compositing/rtl/rtl-iframe-absolute-overflow-expected.txt
@@ -7,14 +7,6 @@
       "backgroundColor": "#FFFFFF"
     },
     {
-      "name": "Scrolling background of LayoutView #document",
-      "position": [15, 0],
-      "bounds": [1000, 1000],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "transform": 1
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [15, 385],
       "bounds": [385, 15],
@@ -32,6 +24,14 @@
       "contentsOpaqueForText": true
     },
     {
+      "name": "Scrolling background of LayoutView #document",
+      "position": [15, 0],
+      "bounds": [1000, 1000],
+      "contentsOpaque": true,
+      "backgroundColor": "#FFFFFF",
+      "transform": 1
+    },
+    {
       "name": "LayoutNGBlockFlow (positioned) DIV class='positioned layer'",
       "bounds": [100, 100],
       "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/platform/mac/compositing/rtl/rtl-iframe-absolute-overflow-scrolled-expected.txt b/third_party/blink/web_tests/platform/mac/compositing/rtl/rtl-iframe-absolute-overflow-scrolled-expected.txt
index 3437236..2ec92d8d 100644
--- a/third_party/blink/web_tests/platform/mac/compositing/rtl/rtl-iframe-absolute-overflow-scrolled-expected.txt
+++ b/third_party/blink/web_tests/platform/mac/compositing/rtl/rtl-iframe-absolute-overflow-scrolled-expected.txt
@@ -7,14 +7,6 @@
       "backgroundColor": "#FFFFFF"
     },
     {
-      "name": "Scrolling background of LayoutView #document",
-      "position": [15, 0],
-      "bounds": [1000, 1000],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "transform": 1
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [15, 385],
       "bounds": [385, 15],
@@ -32,6 +24,14 @@
       "contentsOpaqueForText": true
     },
     {
+      "name": "Scrolling background of LayoutView #document",
+      "position": [15, 0],
+      "bounds": [1000, 1000],
+      "contentsOpaque": true,
+      "backgroundColor": "#FFFFFF",
+      "transform": 1
+    },
+    {
       "name": "LayoutNGBlockFlow (positioned) DIV id='layer' class='positioned'",
       "bounds": [100, 100],
       "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/platform/mac/compositing/rtl/rtl-iframe-fixed-overflow-expected.txt b/third_party/blink/web_tests/platform/mac/compositing/rtl/rtl-iframe-fixed-overflow-expected.txt
index bb8dd5a..4f0b4c6 100644
--- a/third_party/blink/web_tests/platform/mac/compositing/rtl/rtl-iframe-fixed-overflow-expected.txt
+++ b/third_party/blink/web_tests/platform/mac/compositing/rtl/rtl-iframe-fixed-overflow-expected.txt
@@ -7,14 +7,6 @@
       "backgroundColor": "#FFFFFF"
     },
     {
-      "name": "Scrolling background of LayoutView #document",
-      "position": [15, 0],
-      "bounds": [1000, 1000],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "transform": 1
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [15, 385],
       "bounds": [385, 15],
@@ -32,6 +24,14 @@
       "contentsOpaqueForText": true
     },
     {
+      "name": "Scrolling background of LayoutView #document",
+      "position": [15, 0],
+      "bounds": [1000, 1000],
+      "contentsOpaque": true,
+      "backgroundColor": "#FFFFFF",
+      "transform": 1
+    },
+    {
       "name": "LayoutNGBlockFlow (positioned) DIV class='positioned indicator'",
       "bounds": [100, 100],
       "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/platform/mac/compositing/rtl/rtl-iframe-fixed-overflow-scrolled-expected.txt b/third_party/blink/web_tests/platform/mac/compositing/rtl/rtl-iframe-fixed-overflow-scrolled-expected.txt
index bb8dd5a..4f0b4c6 100644
--- a/third_party/blink/web_tests/platform/mac/compositing/rtl/rtl-iframe-fixed-overflow-scrolled-expected.txt
+++ b/third_party/blink/web_tests/platform/mac/compositing/rtl/rtl-iframe-fixed-overflow-scrolled-expected.txt
@@ -7,14 +7,6 @@
       "backgroundColor": "#FFFFFF"
     },
     {
-      "name": "Scrolling background of LayoutView #document",
-      "position": [15, 0],
-      "bounds": [1000, 1000],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "transform": 1
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [15, 385],
       "bounds": [385, 15],
@@ -32,6 +24,14 @@
       "contentsOpaqueForText": true
     },
     {
+      "name": "Scrolling background of LayoutView #document",
+      "position": [15, 0],
+      "bounds": [1000, 1000],
+      "contentsOpaque": true,
+      "backgroundColor": "#FFFFFF",
+      "transform": 1
+    },
+    {
       "name": "LayoutNGBlockFlow (positioned) DIV class='positioned indicator'",
       "bounds": [100, 100],
       "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/platform/mac/fast/events/touch/compositor-touch-hit-rects-iframes-expected.txt b/third_party/blink/web_tests/platform/mac/fast/events/touch/compositor-touch-hit-rects-iframes-expected.txt
index 5ca2d31..0e10b75 100644
--- a/third_party/blink/web_tests/platform/mac/fast/events/touch/compositor-touch-hit-rects-iframes-expected.txt
+++ b/third_party/blink/web_tests/platform/mac/fast/events/touch/compositor-touch-hit-rects-iframes-expected.txt
@@ -9,6 +9,6 @@
 iframe-fixed: layer(332x22) has hit test rect (0,0 332x22)
 
 iframe-doc: layer(385x58) has hit test rect (0,0 385x58)
-iframe-doc: layer(404x31) has hit test rect (2,2 385x25)
+iframe-doc: layer(800x600) has hit test rect (10,284 385x25)
 
 
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/flexbox/scrollbars-changed-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/flexbox/scrollbars-changed-expected.txt
index 1d545a1d..7c2fe623 100644
--- a/third_party/blink/web_tests/platform/mac/paint/invalidation/flexbox/scrollbars-changed-expected.txt
+++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/flexbox/scrollbars-changed-expected.txt
@@ -12,18 +12,18 @@
       "drawsContent": false
     },
     {
+      "name": "VerticalScrollbar",
+      "position": [185, 0],
+      "bounds": [15, 100],
+      "contentsOpaque": true
+    },
+    {
       "name": "LayoutNGBlockFlow DIV id='scroller'",
       "bounds": [185, 210],
       "backgroundColor": "#80808080",
       "invalidations": [
         [0, 5, 15, 15]
       ]
-    },
-    {
-      "name": "VerticalScrollbar",
-      "position": [185, 0],
-      "bounds": [15, 100],
-      "contentsOpaque": true
     }
   ]
 }
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/forms/textarea-caret-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/forms/textarea-caret-expected.txt
index 607fc85..0bceaad 100644
--- a/third_party/blink/web_tests/platform/mac/paint/invalidation/forms/textarea-caret-expected.txt
+++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/forms/textarea-caret-expected.txt
@@ -27,6 +27,13 @@
       "transform": 1
     },
     {
+      "name": "HorizontalScrollbar",
+      "position": [1, 20],
+      "bounds": [164, 15],
+      "contentsOpaque": true,
+      "transform": 1
+    },
+    {
       "name": "LayoutNGTextControlMultiLine TEXTAREA id='editor'",
       "position": [1, 1],
       "bounds": [470, 19],
@@ -37,13 +44,6 @@
       "transform": 2
     },
     {
-      "name": "HorizontalScrollbar",
-      "position": [1, 20],
-      "bounds": [164, 15],
-      "contentsOpaque": true,
-      "transform": 1
-    },
-    {
       "name": "Caret",
       "position": [470, 3],
       "bounds": [1, 15],
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/invalidation-on-foreground-graphics-layer-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/invalidation-on-foreground-graphics-layer-expected.txt
index 3db96358..851341cb5 100644
--- a/third_party/blink/web_tests/platform/mac/paint/invalidation/invalidation-on-foreground-graphics-layer-expected.txt
+++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/invalidation-on-foreground-graphics-layer-expected.txt
@@ -20,13 +20,6 @@
       "transform": 1
     },
     {
-      "name": "LayoutNGBlockFlow DIV",
-      "bounds": [300, 300],
-      "contentsOpaque": true,
-      "backgroundColor": "#D3D3D3",
-      "transform": 1
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [0, 185],
       "bounds": [185, 15],
@@ -48,6 +41,13 @@
       "transform": 1
     },
     {
+      "name": "LayoutNGBlockFlow DIV",
+      "bounds": [300, 300],
+      "contentsOpaque": true,
+      "backgroundColor": "#D3D3D3",
+      "transform": 1
+    },
+    {
       "name": "LayoutNGBlockFlow (relative positioned) DIV",
       "bounds": [200, 200],
       "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/overflow-scroll-local-background-text-color-change-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/overflow-scroll-local-background-text-color-change-expected.txt
index 26221164..c9b48e4c 100644
--- a/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/overflow-scroll-local-background-text-color-change-expected.txt
+++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/overflow-scroll-local-background-text-color-change-expected.txt
@@ -20,16 +20,6 @@
       "transform": 1
     },
     {
-      "name": "LayoutNGBlockFlow DIV id='scroller'",
-      "bounds": [185, 550],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "invalidations": [
-        [0, 0, 185, 550]
-      ],
-      "transform": 2
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [0, 185],
       "bounds": [200, 15],
@@ -45,6 +35,16 @@
       "bounds": [15, 185],
       "contentsOpaque": true,
       "transform": 1
+    },
+    {
+      "name": "LayoutNGBlockFlow DIV id='scroller'",
+      "bounds": [185, 550],
+      "contentsOpaque": true,
+      "backgroundColor": "#0000FF",
+      "invalidations": [
+        [0, 0, 185, 550]
+      ],
+      "transform": 2
     }
   ],
   "transforms": [
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/repaint-composited-child-in-scrolled-container-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/repaint-composited-child-in-scrolled-container-expected.txt
index 7ebfe1c..0cca4c2 100644
--- a/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/repaint-composited-child-in-scrolled-container-expected.txt
+++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/repaint-composited-child-in-scrolled-container-expected.txt
@@ -13,13 +13,6 @@
       "transform": 1
     },
     {
-      "name": "LayoutNGBlockFlow (positioned) DIV id='outer'",
-      "bounds": [650, 600],
-      "contentsOpaqueForText": true,
-      "backgroundColor": "#0000FF80",
-      "transform": 2
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [0, 285],
       "bounds": [285, 15],
@@ -41,6 +34,13 @@
       "transform": 1
     },
     {
+      "name": "LayoutNGBlockFlow (positioned) DIV id='outer'",
+      "bounds": [650, 600],
+      "contentsOpaqueForText": true,
+      "backgroundColor": "#0000FF80",
+      "transform": 2
+    },
+    {
       "name": "LayoutNGBlockFlow (positioned) DIV id='container'",
       "bounds": [600, 600],
       "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/repaint-during-scroll-with-zoom-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/repaint-during-scroll-with-zoom-expected.txt
index a9499e2..1b02437 100644
--- a/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/repaint-during-scroll-with-zoom-expected.txt
+++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/scroll/repaint-during-scroll-with-zoom-expected.txt
@@ -7,13 +7,6 @@
       "backgroundColor": "#C0C0C0"
     },
     {
-      "name": "Scrolling background of LayoutView #document",
-      "bounds": [2008, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "transform": 2
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [0, 235],
       "bounds": [235, 15],
@@ -33,6 +26,13 @@
       "bounds": [15, 15],
       "contentsOpaqueForText": true,
       "transform": 1
+    },
+    {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [2008, 2016],
+      "contentsOpaque": true,
+      "backgroundColor": "#FFFFFF",
+      "transform": 2
     }
   ],
   "transforms": [
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/selection/selection-within-composited-scroller-expected.txt b/third_party/blink/web_tests/platform/mac/paint/invalidation/selection/selection-within-composited-scroller-expected.txt
index 7cf71be..ba93c64 100644
--- a/third_party/blink/web_tests/platform/mac/paint/invalidation/selection/selection-within-composited-scroller-expected.txt
+++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/selection/selection-within-composited-scroller-expected.txt
@@ -20,16 +20,6 @@
       "transform": 1
     },
     {
-      "name": "LayoutNGBlockFlow DIV id='scroller'",
-      "bounds": [200, 1620],
-      "contentsOpaque": true,
-      "backgroundColor": "#ADD8E6",
-      "invalidations": [
-        [0, 610, 23, 18]
-      ],
-      "transform": 2
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [0, 185],
       "bounds": [185, 15],
@@ -49,6 +39,16 @@
       "bounds": [15, 15],
       "contentsOpaqueForText": true,
       "transform": 1
+    },
+    {
+      "name": "LayoutNGBlockFlow DIV id='scroller'",
+      "bounds": [200, 1620],
+      "contentsOpaque": true,
+      "backgroundColor": "#ADD8E6",
+      "invalidations": [
+        [0, 610, 23, 18]
+      ],
+      "transform": 2
     }
   ],
   "transforms": [
diff --git a/third_party/blink/web_tests/platform/win/compositing/iframes/scrolling-iframe-expected.txt b/third_party/blink/web_tests/platform/win/compositing/iframes/scrolling-iframe-expected.txt
index 31aaaf8..0de324f 100644
--- a/third_party/blink/web_tests/platform/win/compositing/iframes/scrolling-iframe-expected.txt
+++ b/third_party/blink/web_tests/platform/win/compositing/iframes/scrolling-iframe-expected.txt
@@ -7,13 +7,6 @@
       "backgroundColor": "#FFFFFF"
     },
     {
-      "name": "Scrolling background of LayoutView #document",
-      "bounds": [508, 608],
-      "contentsOpaque": true,
-      "backgroundColor": "#C0C0C0",
-      "transform": 2
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [0, 135],
       "bounds": [285, 15],
@@ -35,6 +28,13 @@
       "transform": 1
     },
     {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [508, 608],
+      "contentsOpaque": true,
+      "backgroundColor": "#C0C0C0",
+      "transform": 2
+    },
+    {
       "name": "LayoutNGBlockFlow DIV id='iframe-content' class='box'",
       "bounds": [200, 200],
       "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/platform/win/compositing/overflow/textarea-scroll-touch-expected.txt b/third_party/blink/web_tests/platform/win/compositing/overflow/textarea-scroll-touch-expected.txt
index ffd3fdf..ef62747 100644
--- a/third_party/blink/web_tests/platform/win/compositing/overflow/textarea-scroll-touch-expected.txt
+++ b/third_party/blink/web_tests/platform/win/compositing/overflow/textarea-scroll-touch-expected.txt
@@ -20,6 +20,13 @@
       "bounds": [261, 140]
     },
     {
+      "name": "VerticalScrollbar",
+      "position": [190, 1],
+      "bounds": [15, 109],
+      "contentsOpaque": true,
+      "transform": 1
+    },
+    {
       "name": "LayoutNGTextControlMultiLine TEXTAREA",
       "position": [1, 1],
       "bounds": [189, 328],
@@ -28,13 +35,6 @@
       "transform": 2
     },
     {
-      "name": "VerticalScrollbar",
-      "position": [190, 1],
-      "bounds": [15, 109],
-      "contentsOpaque": true,
-      "transform": 1
-    },
-    {
       "name": "LayoutNGTextControlMultiLine TEXTAREA",
       "position": [1, 1],
       "bounds": [189, 124],
@@ -49,19 +49,19 @@
       "transform": 3
     },
     {
+      "name": "VerticalScrollbar",
+      "position": [190, 1],
+      "bounds": [15, 109],
+      "contentsOpaque": true,
+      "transform": 3
+    },
+    {
       "name": "LayoutNGTextControlMultiLine TEXTAREA",
       "position": [1, 1],
       "bounds": [189, 328],
       "contentsOpaque": true,
       "backgroundColor": "#CCCCCC",
       "transform": 4
-    },
-    {
-      "name": "VerticalScrollbar",
-      "position": [190, 1],
-      "bounds": [15, 109],
-      "contentsOpaque": true,
-      "transform": 3
     }
   ],
   "transforms": [
diff --git a/third_party/blink/web_tests/platform/win/compositing/rtl/rtl-iframe-absolute-overflow-expected.txt b/third_party/blink/web_tests/platform/win/compositing/rtl/rtl-iframe-absolute-overflow-expected.txt
index a9eeed0..14c4bf7 100644
--- a/third_party/blink/web_tests/platform/win/compositing/rtl/rtl-iframe-absolute-overflow-expected.txt
+++ b/third_party/blink/web_tests/platform/win/compositing/rtl/rtl-iframe-absolute-overflow-expected.txt
@@ -7,14 +7,6 @@
       "backgroundColor": "#FFFFFF"
     },
     {
-      "name": "Scrolling background of LayoutView #document",
-      "position": [15, 0],
-      "bounds": [1000, 1000],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "transform": 1
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [15, 385],
       "bounds": [385, 15],
@@ -32,6 +24,14 @@
       "contentsOpaque": true
     },
     {
+      "name": "Scrolling background of LayoutView #document",
+      "position": [15, 0],
+      "bounds": [1000, 1000],
+      "contentsOpaque": true,
+      "backgroundColor": "#FFFFFF",
+      "transform": 1
+    },
+    {
       "name": "LayoutNGBlockFlow (positioned) DIV class='positioned layer'",
       "bounds": [100, 100],
       "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/platform/win/compositing/rtl/rtl-iframe-absolute-overflow-scrolled-expected.txt b/third_party/blink/web_tests/platform/win/compositing/rtl/rtl-iframe-absolute-overflow-scrolled-expected.txt
index edfecf0..7cee609 100644
--- a/third_party/blink/web_tests/platform/win/compositing/rtl/rtl-iframe-absolute-overflow-scrolled-expected.txt
+++ b/third_party/blink/web_tests/platform/win/compositing/rtl/rtl-iframe-absolute-overflow-scrolled-expected.txt
@@ -7,14 +7,6 @@
       "backgroundColor": "#FFFFFF"
     },
     {
-      "name": "Scrolling background of LayoutView #document",
-      "position": [15, 0],
-      "bounds": [1000, 1000],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "transform": 1
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [15, 385],
       "bounds": [385, 15],
@@ -32,6 +24,14 @@
       "contentsOpaque": true
     },
     {
+      "name": "Scrolling background of LayoutView #document",
+      "position": [15, 0],
+      "bounds": [1000, 1000],
+      "contentsOpaque": true,
+      "backgroundColor": "#FFFFFF",
+      "transform": 1
+    },
+    {
       "name": "LayoutNGBlockFlow (positioned) DIV id='layer' class='positioned'",
       "bounds": [100, 100],
       "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/platform/win/compositing/rtl/rtl-iframe-fixed-overflow-expected.txt b/third_party/blink/web_tests/platform/win/compositing/rtl/rtl-iframe-fixed-overflow-expected.txt
index 8b0ad64..3245ebd6 100644
--- a/third_party/blink/web_tests/platform/win/compositing/rtl/rtl-iframe-fixed-overflow-expected.txt
+++ b/third_party/blink/web_tests/platform/win/compositing/rtl/rtl-iframe-fixed-overflow-expected.txt
@@ -7,14 +7,6 @@
       "backgroundColor": "#FFFFFF"
     },
     {
-      "name": "Scrolling background of LayoutView #document",
-      "position": [15, 0],
-      "bounds": [1000, 1000],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "transform": 1
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [15, 385],
       "bounds": [385, 15],
@@ -32,6 +24,14 @@
       "contentsOpaque": true
     },
     {
+      "name": "Scrolling background of LayoutView #document",
+      "position": [15, 0],
+      "bounds": [1000, 1000],
+      "contentsOpaque": true,
+      "backgroundColor": "#FFFFFF",
+      "transform": 1
+    },
+    {
       "name": "LayoutNGBlockFlow (positioned) DIV class='positioned indicator'",
       "bounds": [100, 100],
       "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/platform/win/compositing/rtl/rtl-iframe-fixed-overflow-scrolled-expected.txt b/third_party/blink/web_tests/platform/win/compositing/rtl/rtl-iframe-fixed-overflow-scrolled-expected.txt
index 8b0ad64..3245ebd6 100644
--- a/third_party/blink/web_tests/platform/win/compositing/rtl/rtl-iframe-fixed-overflow-scrolled-expected.txt
+++ b/third_party/blink/web_tests/platform/win/compositing/rtl/rtl-iframe-fixed-overflow-scrolled-expected.txt
@@ -7,14 +7,6 @@
       "backgroundColor": "#FFFFFF"
     },
     {
-      "name": "Scrolling background of LayoutView #document",
-      "position": [15, 0],
-      "bounds": [1000, 1000],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "transform": 1
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [15, 385],
       "bounds": [385, 15],
@@ -32,6 +24,14 @@
       "contentsOpaque": true
     },
     {
+      "name": "Scrolling background of LayoutView #document",
+      "position": [15, 0],
+      "bounds": [1000, 1000],
+      "contentsOpaque": true,
+      "backgroundColor": "#FFFFFF",
+      "transform": 1
+    },
+    {
       "name": "LayoutNGBlockFlow (positioned) DIV class='positioned indicator'",
       "bounds": [100, 100],
       "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/platform/win/fast/events/touch/compositor-touch-hit-rects-iframes-expected.txt b/third_party/blink/web_tests/platform/win/fast/events/touch/compositor-touch-hit-rects-iframes-expected.txt
index 2118886..d6e5cc45 100644
--- a/third_party/blink/web_tests/platform/win/fast/events/touch/compositor-touch-hit-rects-iframes-expected.txt
+++ b/third_party/blink/web_tests/platform/win/fast/events/touch/compositor-touch-hit-rects-iframes-expected.txt
@@ -1,42 +1,42 @@
 This tests verifies the hit test regions given to the compositor when non-composited iframes are involved. It can only be run in DumpRenderTree. The outputted rects should cover the hit test regions of all the listed elements. Enable visualize mode to quickly validate graphically.
 
-iframe: layer(404x31) has hit test rect (387,2 15x25)
 iframe: layer(800x600) has hit test rect (23,130 290x15)
 iframe: layer(800x600) has hit test rect (395,130 15x25)
 iframe: layer(800x600) has hit test rect (395,161 15x35)
 iframe: layer(800x600) has hit test rect (355,168 15x28)
 iframe: layer(800x600) has hit test rect (443,213 18x29)
 iframe: layer(800x600) has hit test rect (395,253 15x25)
+iframe: layer(800x600) has hit test rect (395,284 15x25)
 
-iframe-nested: layer(404x31) has hit test rect (387,2 15x25)
 iframe-nested: layer(800x600) has hit test rect (395,130 15x25)
 iframe-nested: layer(800x600) has hit test rect (395,161 15x35)
 iframe-nested: layer(800x600) has hit test rect (33,168 290x15)
 iframe-nested: layer(800x600) has hit test rect (355,168 15x28)
 iframe-nested: layer(800x600) has hit test rect (443,213 18x29)
 iframe-nested: layer(800x600) has hit test rect (395,253 15x25)
+iframe-nested: layer(800x600) has hit test rect (395,284 15x25)
 
-iframe-transform: layer(404x31) has hit test rect (387,2 15x25)
 iframe-transform: layer(785x817) has hit test rect (395,146 15x25)
 iframe-transform: layer(785x817) has hit test rect (395,177 15x35)
 iframe-transform: layer(785x817) has hit test rect (355,184 15x28)
 iframe-transform: layer(785x817) has hit test rect (34,223 320x23)
 iframe-transform: layer(785x817) has hit test rect (443,229 18x29)
 iframe-transform: layer(785x817) has hit test rect (395,269 15x25)
+iframe-transform: layer(785x817) has hit test rect (395,300 15x25)
 
 iframe-fixed: layer(332x22) has hit test rect (0,0 332x22)
-iframe-fixed: layer(404x31) has hit test rect (387,2 15x25)
 iframe-fixed: layer(785x1057) has hit test rect (395,146 15x25)
 iframe-fixed: layer(785x1057) has hit test rect (395,177 15x35)
 iframe-fixed: layer(785x1057) has hit test rect (355,184 15x28)
 iframe-fixed: layer(785x1057) has hit test rect (443,229 18x29)
 iframe-fixed: layer(785x1057) has hit test rect (395,269 15x25)
+iframe-fixed: layer(785x1057) has hit test rect (395,300 15x25)
 
-iframe-doc: layer(404x31) has hit test rect (2,2 400x25)
 iframe-doc: layer(785x1297) has hit test rect (395,146 15x25)
 iframe-doc: layer(785x1297) has hit test rect (395,177 15x35)
 iframe-doc: layer(785x1297) has hit test rect (355,184 15x28)
 iframe-doc: layer(785x1297) has hit test rect (443,229 18x29)
 iframe-doc: layer(785x1297) has hit test rect (395,269 15x25)
+iframe-doc: layer(785x1297) has hit test rect (10,300 400x25)
 
 
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/textarea/textarea-scrollbar-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/textarea/textarea-scrollbar-expected.png
index 2c991b23e..1743efe 100644
--- a/third_party/blink/web_tests/platform/win/fast/forms/textarea/textarea-scrollbar-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/forms/textarea/textarea-scrollbar-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/sub-pixel/transformed-iframe-copy-on-scroll-expected.png b/third_party/blink/web_tests/platform/win/fast/sub-pixel/transformed-iframe-copy-on-scroll-expected.png
index 4d9c8c84..c2ddd13c 100644
--- a/third_party/blink/web_tests/platform/win/fast/sub-pixel/transformed-iframe-copy-on-scroll-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/sub-pixel/transformed-iframe-copy-on-scroll-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/invalidation-on-foreground-graphics-layer-expected.txt b/third_party/blink/web_tests/platform/win/paint/invalidation/invalidation-on-foreground-graphics-layer-expected.txt
index 56b7ba09..037e6fd2 100644
--- a/third_party/blink/web_tests/platform/win/paint/invalidation/invalidation-on-foreground-graphics-layer-expected.txt
+++ b/third_party/blink/web_tests/platform/win/paint/invalidation/invalidation-on-foreground-graphics-layer-expected.txt
@@ -20,13 +20,6 @@
       "transform": 1
     },
     {
-      "name": "LayoutNGBlockFlow DIV",
-      "bounds": [300, 300],
-      "contentsOpaque": true,
-      "backgroundColor": "#D3D3D3",
-      "transform": 1
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [0, 185],
       "bounds": [185, 15],
@@ -48,6 +41,13 @@
       "transform": 1
     },
     {
+      "name": "LayoutNGBlockFlow DIV",
+      "bounds": [300, 300],
+      "contentsOpaque": true,
+      "backgroundColor": "#D3D3D3",
+      "transform": 1
+    },
+    {
       "name": "LayoutNGBlockFlow (relative positioned) DIV",
       "bounds": [200, 200],
       "contentsOpaque": true,
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/scroll/overflow-scroll-local-background-text-color-change-expected.txt b/third_party/blink/web_tests/platform/win/paint/invalidation/scroll/overflow-scroll-local-background-text-color-change-expected.txt
index 41e707b..9fa4289 100644
--- a/third_party/blink/web_tests/platform/win/paint/invalidation/scroll/overflow-scroll-local-background-text-color-change-expected.txt
+++ b/third_party/blink/web_tests/platform/win/paint/invalidation/scroll/overflow-scroll-local-background-text-color-change-expected.txt
@@ -20,16 +20,6 @@
       "transform": 1
     },
     {
-      "name": "LayoutNGBlockFlow DIV id='scroller'",
-      "bounds": [185, 552],
-      "contentsOpaque": true,
-      "backgroundColor": "#0000FF",
-      "invalidations": [
-        [0, 0, 185, 552]
-      ],
-      "transform": 2
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [0, 185],
       "bounds": [200, 15],
@@ -45,6 +35,16 @@
       "bounds": [15, 185],
       "contentsOpaque": true,
       "transform": 1
+    },
+    {
+      "name": "LayoutNGBlockFlow DIV id='scroller'",
+      "bounds": [185, 552],
+      "contentsOpaque": true,
+      "backgroundColor": "#0000FF",
+      "invalidations": [
+        [0, 0, 185, 552]
+      ],
+      "transform": 2
     }
   ],
   "transforms": [
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/scroll/repaint-during-scroll-with-zoom-expected.txt b/third_party/blink/web_tests/platform/win/paint/invalidation/scroll/repaint-during-scroll-with-zoom-expected.txt
index 8e86de1..5290718 100644
--- a/third_party/blink/web_tests/platform/win/paint/invalidation/scroll/repaint-during-scroll-with-zoom-expected.txt
+++ b/third_party/blink/web_tests/platform/win/paint/invalidation/scroll/repaint-during-scroll-with-zoom-expected.txt
@@ -7,13 +7,6 @@
       "backgroundColor": "#C0C0C0"
     },
     {
-      "name": "Scrolling background of LayoutView #document",
-      "bounds": [2008, 2016],
-      "contentsOpaque": true,
-      "backgroundColor": "#FFFFFF",
-      "transform": 2
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [0, 235],
       "bounds": [235, 15],
@@ -33,6 +26,13 @@
       "bounds": [15, 15],
       "contentsOpaque": true,
       "transform": 1
+    },
+    {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [2008, 2016],
+      "contentsOpaque": true,
+      "backgroundColor": "#FFFFFF",
+      "transform": 2
     }
   ],
   "transforms": [
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/selection/selection-within-composited-scroller-expected.txt b/third_party/blink/web_tests/platform/win/paint/invalidation/selection/selection-within-composited-scroller-expected.txt
index 9a8ee1e..7e3b059 100644
--- a/third_party/blink/web_tests/platform/win/paint/invalidation/selection/selection-within-composited-scroller-expected.txt
+++ b/third_party/blink/web_tests/platform/win/paint/invalidation/selection/selection-within-composited-scroller-expected.txt
@@ -20,16 +20,6 @@
       "transform": 1
     },
     {
-      "name": "LayoutNGBlockFlow DIV id='scroller'",
-      "bounds": [200, 1620],
-      "contentsOpaque": true,
-      "backgroundColor": "#ADD8E6",
-      "invalidations": [
-        [0, 610, 21, 20]
-      ],
-      "transform": 2
-    },
-    {
       "name": "HorizontalScrollbar",
       "position": [0, 185],
       "bounds": [185, 15],
@@ -49,6 +39,16 @@
       "bounds": [15, 15],
       "contentsOpaque": true,
       "transform": 1
+    },
+    {
+      "name": "LayoutNGBlockFlow DIV id='scroller'",
+      "bounds": [200, 1620],
+      "contentsOpaque": true,
+      "backgroundColor": "#ADD8E6",
+      "invalidations": [
+        [0, 610, 21, 20]
+      ],
+      "transform": 2
     }
   ],
   "transforms": [
diff --git a/third_party/blink/web_tests/virtual/isolated_world_csp/README.md b/third_party/blink/web_tests/virtual/isolated_world_csp/README.md
deleted file mode 100644
index eb81364..0000000
--- a/third_party/blink/web_tests/virtual/isolated_world_csp/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-This directory contains the test expectations for the "IsolatedWorldCSP"
-feature. When enabled, this feature ensures that the isolated world CSP is
-enforced, rather than just bypassing the main world CSP.
diff --git a/third_party/blink/web_tests/virtual/lazyload-image/http/tests/lazyload/README.txt b/third_party/blink/web_tests/virtual/lazyload-image/http/tests/lazyload/README.txt
deleted file mode 100644
index 378300a..0000000
--- a/third_party/blink/web_tests/virtual/lazyload-image/http/tests/lazyload/README.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-# This suite runs the tests in http/tests/lazyload with
-# --enable-features=AutomaticLazyImageLoading.
-
diff --git a/third_party/libaom/README.chromium b/third_party/libaom/README.chromium
index 91545eb50..74056b2 100644
--- a/third_party/libaom/README.chromium
+++ b/third_party/libaom/README.chromium
@@ -2,8 +2,8 @@
 Short Name: libaom
 URL: https://aomedia.googlesource.com/aom/
 Version: 3.4.0
-Date: Sunday August 07 2022
-Revision: 121f3851459d5ee2ca1b5b23c6187bda79984eb2
+Date: Thursday August 18 2022
+Revision: 2fcb0760ea632ef250465819f7d979a695b7c149
 CPEPrefix: cpe:/a:aomedia:aomedia:3.4.0
 License: BSD
 License File: source/libaom/LICENSE
diff --git a/third_party/libaom/source/config/config/aom_version.h b/third_party/libaom/source/config/config/aom_version.h
index bfe1ef6b..4e3d8749 100644
--- a/third_party/libaom/source/config/config/aom_version.h
+++ b/third_party/libaom/source/config/config/aom_version.h
@@ -12,8 +12,8 @@
 #define VERSION_MAJOR 3
 #define VERSION_MINOR 4
 #define VERSION_PATCH 0
-#define VERSION_EXTRA "214-g121f38514"
+#define VERSION_EXTRA "254-g2fcb0760e"
 #define VERSION_PACKED \
   ((VERSION_MAJOR << 16) | (VERSION_MINOR << 8) | (VERSION_PATCH))
-#define VERSION_STRING_NOSP "3.4.0-214-g121f38514"
-#define VERSION_STRING " 3.4.0-214-g121f38514"
+#define VERSION_STRING_NOSP "3.4.0-254-g2fcb0760e"
+#define VERSION_STRING " 3.4.0-254-g2fcb0760e"
diff --git a/third_party/libaom/source/config/ios/arm-neon/config/aom_config.asm b/third_party/libaom/source/config/ios/arm-neon/config/aom_config.asm
index 7b20640f..e994c757 100644
--- a/third_party/libaom/source/config/ios/arm-neon/config/aom_config.asm
+++ b/third_party/libaom/source/config/ios/arm-neon/config/aom_config.asm
@@ -48,7 +48,7 @@
 CONFIG_OPTICAL_FLOW_API equ 0
 CONFIG_OS_SUPPORT equ 1
 CONFIG_PARTITION_SEARCH_ORDER equ 0
-CONFIG_PIC equ 0
+CONFIG_PIC equ 1
 CONFIG_RATECTRL_LOG equ 0
 CONFIG_RD_COMMAND equ 0
 CONFIG_RD_DEBUG equ 0
diff --git a/third_party/libaom/source/config/ios/arm-neon/config/aom_config.h b/third_party/libaom/source/config/ios/arm-neon/config/aom_config.h
index 562a994..353c6440 100644
--- a/third_party/libaom/source/config/ios/arm-neon/config/aom_config.h
+++ b/third_party/libaom/source/config/ios/arm-neon/config/aom_config.h
@@ -50,7 +50,7 @@
 #define CONFIG_OPTICAL_FLOW_API 0
 #define CONFIG_OS_SUPPORT 1
 #define CONFIG_PARTITION_SEARCH_ORDER 0
-#define CONFIG_PIC 0
+#define CONFIG_PIC 1
 #define CONFIG_RATECTRL_LOG 0
 #define CONFIG_RD_COMMAND 0
 #define CONFIG_RD_DEBUG 0
diff --git a/third_party/libaom/source/config/ios/arm64/config/aom_config.asm b/third_party/libaom/source/config/ios/arm64/config/aom_config.asm
index 7b20640f..e994c757 100644
--- a/third_party/libaom/source/config/ios/arm64/config/aom_config.asm
+++ b/third_party/libaom/source/config/ios/arm64/config/aom_config.asm
@@ -48,7 +48,7 @@
 CONFIG_OPTICAL_FLOW_API equ 0
 CONFIG_OS_SUPPORT equ 1
 CONFIG_PARTITION_SEARCH_ORDER equ 0
-CONFIG_PIC equ 0
+CONFIG_PIC equ 1
 CONFIG_RATECTRL_LOG equ 0
 CONFIG_RD_COMMAND equ 0
 CONFIG_RD_DEBUG equ 0
diff --git a/third_party/libaom/source/config/ios/arm64/config/aom_config.h b/third_party/libaom/source/config/ios/arm64/config/aom_config.h
index 562a994..353c6440 100644
--- a/third_party/libaom/source/config/ios/arm64/config/aom_config.h
+++ b/third_party/libaom/source/config/ios/arm64/config/aom_config.h
@@ -50,7 +50,7 @@
 #define CONFIG_OPTICAL_FLOW_API 0
 #define CONFIG_OS_SUPPORT 1
 #define CONFIG_PARTITION_SEARCH_ORDER 0
-#define CONFIG_PIC 0
+#define CONFIG_PIC 1
 #define CONFIG_RATECTRL_LOG 0
 #define CONFIG_RD_COMMAND 0
 #define CONFIG_RD_DEBUG 0
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index 6bd3c08..e4b6895 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -87378,6 +87378,12 @@
   <int value="2" label="Skipped for Empty Fetch Handler"/>
 </enum>
 
+<enum name="ServiceWorkerFetchHandlerType">
+  <int value="0" label="No Fetch Handler"/>
+  <int value="1" label="Not Skippable"/>
+  <int value="2" label="Empty Fetch Handler"/>
+</enum>
+
 <enum name="ServiceWorkerInstalledScriptsManager.FinishedReason">
   <int value="0" label="NOT_FINISHED"/>
   <int value="1" label="SUCCESS"/>
@@ -95542,6 +95548,11 @@
   <int value="157" label="(0b10011101) stale owner auth (TPM2.0)"/>
 </enum>
 
+<enum name="TPMPowerWashResult">
+  <int value="0" label="TPM Clear Success"/>
+  <int value="1" label="TPM Clear Failed"/>
+</enum>
+
 <enum name="TPMResponseCode">
   <int value="0" label="TPM_RC_SUCCESS"/>
   <int value="16" label="TPM_RC_PP"/>
diff --git a/tools/metrics/histograms/metadata/platform/histograms.xml b/tools/metrics/histograms/metadata/platform/histograms.xml
index f5e4bd9..5d8aeba4 100644
--- a/tools/metrics/histograms/metadata/platform/histograms.xml
+++ b/tools/metrics/histograms/metadata/platform/histograms.xml
@@ -1387,6 +1387,16 @@
   </summary>
 </histogram>
 
+<histogram name="Platform.TPM.PowerWashResult" enum="TPMPowerWashResult"
+    expires_after="2023-02-18">
+  <owner>chenyian@google.com</owner>
+  <owner>cros-hwsec-userland-eng+uma@google.com</owner>
+  <summary>
+    Report if TPM clear is success or not after a power wash. TPM should not be
+    owned after the power wash.
+  </summary>
+</histogram>
+
 <histogram name="Platform.TPM.TimeToTakeOwnership" units="ms"
     expires_after="2023-02-12">
   <owner>yich@google.com</owner>
diff --git a/tools/metrics/histograms/metadata/service/histograms.xml b/tools/metrics/histograms/metadata/service/histograms.xml
index 1804a13..bf431c9 100644
--- a/tools/metrics/histograms/metadata/service/histograms.xml
+++ b/tools/metrics/histograms/metadata/service/histograms.xml
@@ -397,6 +397,17 @@
   </summary>
 </histogram>
 
+<histogram name="ServiceWorker.FetchHandler.TypeAtContinueWithActivatedVersion"
+    enum="ServiceWorkerFetchHandlerType" expires_after="2023-06-30">
+  <owner>yyanagisawa@chromium.org</owner>
+  <owner>chrome-worker@google.com</owner>
+  <summary>
+    The type of the fetch handler recorded just before dispatching the fetch
+    handler. This represent the fetch handler type, and does not represent if
+    the fetch handler is skipped or not.
+  </summary>
+</histogram>
+
 <histogram name="ServiceWorker.InstallEvent.All.FetchCount" units="fetches"
     expires_after="2023-01-26">
   <owner>wanderview@chromium.org</owner>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ky.xtb b/ui/chromeos/translations/ui_chromeos_strings_ky.xtb
index 4cdf0f39..506754b 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ky.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ky.xtb
@@ -374,6 +374,7 @@
 <translation id="4336032328163998280">Көчүрүү аракети аткарылбай калды. <ph name="ERROR_MESSAGE" /></translation>
 <translation id="4340491671558548972">Капталдагы тактага кошуу</translation>
 <translation id="4348495354623233847">Сорани (арабча баскычтоп)</translation>
+<translation id="434941167647142660">Баштапкы жери</translation>
 <translation id="4363958938297989186">Орусча (фонетикалык баскычтоп)</translation>
 <translation id="4364327530094270451">Коон</translation>
 <translation id="4378551569595875038">Туташууда…</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ta.xtb b/ui/chromeos/translations/ui_chromeos_strings_ta.xtb
index 4e7929d..2a37dae 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ta.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ta.xtb
@@ -374,6 +374,7 @@
 <translation id="4336032328163998280">நகலெடுக்கும் செயல்பாடு தோல்வி. <ph name="ERROR_MESSAGE" /></translation>
 <translation id="4340491671558548972">பக்கப்பட்டியில் சேர்</translation>
 <translation id="4348495354623233847">சொரானி குர்திஷ் (அரபிக் கீபோர்டு)</translation>
+<translation id="434941167647142660">அசல் இடம்</translation>
 <translation id="4363958938297989186">ரஷ்யன் - ஒலிப்புமுறை கீபோர்டு</translation>
 <translation id="4364327530094270451">முலாம்பழம்</translation>
 <translation id="4378551569595875038">இணைக்கிறது...</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_uz.xtb b/ui/chromeos/translations/ui_chromeos_strings_uz.xtb
index 84acecda..2fee7a7 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_uz.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_uz.xtb
@@ -374,6 +374,7 @@
 <translation id="4336032328163998280">Nusxalash amali bajarilmadi. <ph name="ERROR_MESSAGE" /></translation>
 <translation id="4340491671558548972">Yon panelga qoʻshish</translation>
 <translation id="4348495354623233847">Suroni (kurd) va arab yozuvidagi klaviatura</translation>
+<translation id="434941167647142660">Asl joylashuv</translation>
 <translation id="4363958938297989186">Rus (fonetik klaviatura)</translation>
 <translation id="4364327530094270451">Qovun</translation>
 <translation id="4378551569595875038">Ulanmoqda...</translation>
diff --git a/ui/file_manager/file_manager/BUILD.gn b/ui/file_manager/file_manager/BUILD.gn
index cca9a804..3278816 100644
--- a/ui/file_manager/file_manager/BUILD.gn
+++ b/ui/file_manager/file_manager/BUILD.gn
@@ -36,7 +36,7 @@
     "common/js/url_constants.js",
     "common/js/xfm.js",
     "foreground/js/metadata/image_orientation.js",
-    "externs/background/background_base.js",
+    "externs/background/file_manager_base.js",
     "externs/entry_location.js",
     "externs/files_app_entry_interfaces.js",
     "externs/volume_info.js",
diff --git a/ui/file_manager/file_manager/background/js/BUILD.gn b/ui/file_manager/file_manager/background/js/BUILD.gn
index 0f88443..9459ea88 100644
--- a/ui/file_manager/file_manager/background/js/BUILD.gn
+++ b/ui/file_manager/file_manager/background/js/BUILD.gn
@@ -8,12 +8,6 @@
 import("//ui/file_manager/base/gn/js_test_type_check.gni")
 import("//ui/webui/resources/js/cr.gni")
 
-# TODO(tapted): This folder should be restricted to file_manager, but related
-# apps currently depend on background_base, which depends on
-# volume_manager_factory, and that pulls in nearly everything else. For now,
-# document externally-exposed targets visible with this helper, and hide
-# transitive dependencies (but note those transitive dependencies should move
-# elsewhere too).
 related_apps = [ "//ui/file_manager/file_manager/*" ]
 
 group("closure_compile") {
@@ -27,11 +21,11 @@
 
 group("js_modules") {
   deps = [
-    ":background",
     ":crostini",
     ":device_handler",
     ":drive_sync_handler",
     ":duplicate_finder",
+    ":file_manager_base",
     ":file_operation_handler",
     ":file_operation_manager",
     ":file_operation_util",
@@ -52,13 +46,12 @@
   deps = [
     ":app_window_wrapper",
     ":app_windows",
-    ":background",
-    ":background_base",
     ":crostini",
     ":device_handler",
     ":drive_sync_handler",
     ":duplicate_finder",
     ":entry_location_impl",
+    ":file_manager_base",
     ":file_operation_handler",
     ":file_operation_manager",
     ":file_operation_util",
@@ -129,9 +122,8 @@
 js_library("app_windows") {
 }
 
-js_library("background") {
+js_library("file_manager_base") {
   deps = [
-    ":background_base",
     ":crostini",
     ":device_handler",
     ":drive_sync_handler",
@@ -157,7 +149,7 @@
     "//ui/file_manager/file_manager/externs/background:crostini",
     "//ui/file_manager/file_manager/externs/background:drive_sync_handler",
     "//ui/file_manager/file_manager/externs/background:duplicate_finder",
-    "//ui/file_manager/file_manager/externs/background:file_browser_background_full",
+    "//ui/file_manager/file_manager/externs/background:file_manager_base",
     "//ui/file_manager/file_manager/externs/background:file_operation_manager",
     "//ui/file_manager/file_manager/externs/background:import_history",
     "//ui/file_manager/file_manager/externs/background:media_import_handler",
@@ -174,25 +166,13 @@
   ]
 
   deps = [
-    ":background",
+    ":file_manager_base",
     ":metrics_start",
     ":test_util",
     "//ui/file_manager/file_manager/common/js:error_counter",
   ]
 }
 
-js_library("background_base") {
-  visibility += related_apps
-  deps = [
-    ":volume_manager_factory",
-    "//ui/file_manager/file_manager/common/js:util",
-    "//ui/file_manager/file_manager/externs:volume_manager",
-    "//ui/file_manager/file_manager/externs/background:background_base",
-    "//ui/webui/resources/js:assert.m",
-    "//ui/webui/resources/js:load_time_data.m",
-  ]
-}
-
 js_library("crostini") {
   deps = [
     "//ui/file_manager/file_manager/common/js:volume_manager_types",
@@ -611,7 +591,7 @@
     "//ui/file_manager/file_manager/common/js:metrics",
     "//ui/file_manager/file_manager/common/js:progress_center_common",
     "//ui/file_manager/file_manager/common/js:volume_manager_types",
-    "//ui/file_manager/file_manager/externs/background:background_base",
+    "//ui/file_manager/file_manager/externs/background:file_manager_base",
     "//ui/webui/resources/js:assert.m",
   ]
   externs_list = [ "$externs_path/webview_tag.js" ]
@@ -664,7 +644,7 @@
   visibility += [ "//ash/webui/file_manager/resources:test_util_swa" ]
 
   deps = [
-    ":background",
+    ":file_manager_base",
     ":launcher",
     ":test_util_base",
     "//ui/file_manager/file_manager/common/js:files_app_state",
diff --git a/ui/file_manager/file_manager/background/js/background_base.js b/ui/file_manager/file_manager/background/js/background_base.js
deleted file mode 100644
index d50b9b2..0000000
--- a/ui/file_manager/file_manager/background/js/background_base.js
+++ /dev/null
@@ -1,148 +0,0 @@
-// Copyright 2014 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 {assert} from 'chrome://resources/js/assert.m.js';
-import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
-
-import {resolveIsolatedEntries} from '../../common/js/api.js';
-import {util} from '../../common/js/util.js';
-import {BackgroundBase, LaunchHandler} from '../../externs/background/background_base.js';
-import {VolumeManager} from '../../externs/volume_manager.js';
-
-import {volumeManagerFactory} from './volume_manager_factory.js';
-
-/**
- * Root class of the background page.
- * @implements {BackgroundBase}
- */
-export class BackgroundBaseImpl {
-  constructor() {
-    /**
-     * Map of all currently open file dialogs. The key is an app ID.
-     * @type {!Object<!Window>}
-     */
-    this.dialogs = {};
-
-    // Initializes the strings. This needs for the volume manager.
-    this.initializationPromise_ = new Promise((fulfill, reject) => {
-      chrome.fileManagerPrivate.getStrings(stringData => {
-        if (chrome.runtime.lastError) {
-          console.error(chrome.runtime.lastError.message);
-          return;
-        }
-        if (!loadTimeData.isInitialized()) {
-          loadTimeData.data = assert(stringData);
-        }
-        fulfill(stringData);
-      });
-    });
-
-    /** @private {?LaunchHandler} */
-    this.launchHandler_ = null;
-
-    // Initialize handlers.
-    if (!window.isSWA) {
-      chrome.app.runtime.onLaunched.addListener(this.onLaunched_.bind(this));
-      chrome.app.runtime.onRestarted.addListener(this.onRestarted_.bind(this));
-    }
-  }
-
-  /**
-   * @return {!Promise<!VolumeManager>}
-   */
-  async getVolumeManager() {
-    return volumeManagerFactory.getInstance();
-  }
-
-  /**
-   * Called when an app is launched.
-   *
-   * @param {!Object} launchData Launch data. See the manual of
-   *     chrome.app.runtime.onLaunched for detail.
-   */
-  async onLaunched_(launchData) {
-    // Skip if files are not selected.
-    if (!launchData || !launchData.items || launchData.items.length == 0) {
-      return;
-    }
-
-    await this.initializationPromise_;
-
-    // Volume list needs to be initialized (more precisely,
-    // chrome.fileManagerPrivate.getVolumeRoot needs to be called to grant
-    // access).
-    await volumeManagerFactory.getInstance();
-
-    const isolatedEntries = launchData.items.map(item => item.entry);
-
-    let urls = [];
-    try {
-      // Obtains entries in non-isolated file systems.
-      // The entries in launchData are stored in the isolated file system.
-      // We need to map the isolated entries to the normal entries to retrieve
-      // their parent directory.
-      const externalEntries =
-          await retryResolveIsolatedEntries(isolatedEntries);
-      urls = util.entriesToURLs(externalEntries);
-    } catch (error) {
-      // Just log the error and default no file/URL so we spawn the app window.
-      console.warn(error);
-      urls = [];
-    }
-
-    if (this.launchHandler_) {
-      this.launchHandler_(urls);
-    }
-  }
-
-  /**
-   * Set a handler which is called when an app is launched.
-   * @param {!LaunchHandler} handler Function to be called.
-   */
-  setLaunchHandler(handler) {
-    this.launchHandler_ = handler;
-  }
-
-  /**
-   * Called when an app is restarted.
-   */
-  onRestarted_() {}
-}
-
-/** @private {number} Total number of retries for the resolve entries below.*/
-const MAX_RETRIES = 6;
-
-/**
- * Retry the resolveIsolatedEntries() until we get the same number of entries
- * back.
- * @param {!Array<!Entry>} isolatedEntries Entries that need to be resolved.
- * @return {!Promise<!Array<!Entry>>} Promise resolved with the entries
- *   resolved.
- */
-async function retryResolveIsolatedEntries(isolatedEntries) {
-  let count = 0;
-  let externalEntries = [];
-  // Wait time in milliseconds between attempts. We double this value after
-  // every wait.
-  let waitTime = 25;
-
-  // Total waiting time is ~1.5 second for `waitTime` starting at 25ms and total
-  // of 6 attempts.
-  while (count <= MAX_RETRIES) {
-    externalEntries = await resolveIsolatedEntries(isolatedEntries);
-    if (externalEntries.length >= isolatedEntries.length) {
-      return externalEntries;
-    }
-
-    console.warn(`Failed to resolve, retrying in ${waitTime}ms...`);
-    await new Promise(resolve => setTimeout(resolve, waitTime));
-    waitTime = waitTime * 2;
-    count += 1;
-  }
-
-  console.warn(
-      `Failed to resolve: Requested ${isolatedEntries.length},` +
-      ` resolved: ${externalEntries.length}.`);
-  return [];
-}
diff --git a/ui/file_manager/file_manager/background/js/background.js b/ui/file_manager/file_manager/background/js/file_manager_base.js
similarity index 80%
rename from ui/file_manager/file_manager/background/js/background.js
rename to ui/file_manager/file_manager/background/js/file_manager_base.js
index 790b7cd..6f259cd 100644
--- a/ui/file_manager/file_manager/background/js/background.js
+++ b/ui/file_manager/file_manager/background/js/file_manager_base.js
@@ -1,7 +1,10 @@
 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
+import {assert} from 'chrome://resources/js/assert.m.js';
+import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
 
+import {resolveIsolatedEntries} from '../../common/js/api.js';
 import {FilesAppState} from '../../common/js/files_app_state.js';
 import {importer} from '../../common/js/importer_common.js';
 import {metrics} from '../../common/js/metrics.js';
@@ -11,7 +14,7 @@
 import {Crostini} from '../../externs/background/crostini.js';
 import {DriveSyncHandler} from '../../externs/background/drive_sync_handler.js';
 import {duplicateFinderInterfaces} from '../../externs/background/duplicate_finder.js';
-import {FileBrowserBackgroundFull} from '../../externs/background/file_browser_background_full.js';
+import {FileManagerBaseInterface} from '../../externs/background/file_manager_base.js';
 import {FileOperationManager} from '../../externs/background/file_operation_manager.js';
 import {importerHistoryInterfaces} from '../../externs/background/import_history.js';
 import {mediaImportInterfaces} from '../../externs/background/media_import_handler.js';
@@ -20,7 +23,6 @@
 import {VolumeInfo} from '../../externs/volume_info.js';
 import {VolumeManager} from '../../externs/volume_manager.js';
 
-import {BackgroundBaseImpl} from './background_base.js';
 import {CrostiniImpl} from './crostini.js';
 import {DeviceHandler} from './device_handler.js';
 import {DriveSyncHandlerImpl} from './drive_sync_handler.js';
@@ -36,13 +38,47 @@
 import {ProgressCenterImpl} from './progress_center.js';
 import {volumeManagerFactory} from './volume_manager_factory.js';
 
+/** @typedef {function(!Array<string>):!Promise} */
+let LaunchHandler;
+
 /**
- * Root class of the background page.
- * @implements {FileBrowserBackgroundFull}
+ * Root class of the former background page.
+ * @implements {FileManagerBaseInterface}
  */
-class FileBrowserBackgroundImpl extends BackgroundBaseImpl {
+export class FileManagerBase {
   constructor() {
-    super();
+    /**
+     * Map of all currently open file dialogs. The key is an app ID.
+     * @type {!Object<!Window>}
+     */
+    this.dialogs = {};
+
+    /**
+     * Initializes the strings. This needs for the volume manager.
+     * @type {?Promise}
+     */
+    this.initializationPromise_ = new Promise((fulfill, reject) => {
+      chrome.fileManagerPrivate.getStrings(stringData => {
+        if (chrome.runtime.lastError) {
+          console.error(chrome.runtime.lastError.message);
+          return;
+        }
+        if (!loadTimeData.isInitialized()) {
+          loadTimeData.data = assert(stringData);
+        }
+        fulfill(stringData);
+      });
+    });
+
+    /** @private {?LaunchHandler} */
+    this.launchHandler_ = null;
+
+    // Initialize handlers.
+    if (!window.isSWA) {
+      chrome.app.runtime.onLaunched.addListener(this.onLaunched_.bind(this));
+      chrome.app.runtime.onRestarted.addListener(this.onRestarted_.bind(this));
+    }
+
     this.setLaunchHandler(this.launch_);
 
     /**
@@ -166,6 +202,68 @@
   }
 
   /**
+   * @return {!Promise<!VolumeManager>}
+   */
+  async getVolumeManager() {
+    return volumeManagerFactory.getInstance();
+  }
+
+  /**
+   * Called when an app is launched.
+   *
+   * @param {!Object} launchData Launch data. See the manual of
+   *     chrome.app.runtime.onLaunched for detail.
+   */
+  async onLaunched_(launchData) {
+    metrics.startInterval('Load.BackgroundLaunch');
+    console.warn('onLaunched: ' + (launchData ? launchData.source : ''));
+    if (!launchData || !launchData.items || launchData.items.length == 0) {
+      this.launch_(undefined);
+      return;
+    }
+    // Skip if files are not selected.
+    if (!launchData || !launchData.items || launchData.items.length == 0) {
+      return;
+    }
+
+    await this.initializationPromise_;
+
+    // Volume list needs to be initialized (more precisely,
+    // chrome.fileManagerPrivate.getVolumeRoot needs to be called to grant
+    // access).
+    await volumeManagerFactory.getInstance();
+
+    const isolatedEntries = launchData.items.map(item => item.entry);
+
+    let urls = [];
+    try {
+      // Obtains entries in non-isolated file systems.
+      // The entries in launchData are stored in the isolated file system.
+      // We need to map the isolated entries to the normal entries to retrieve
+      // their parent directory.
+      const externalEntries =
+          await retryResolveIsolatedEntries(isolatedEntries);
+      urls = util.entriesToURLs(externalEntries);
+    } catch (error) {
+      // Just log the error and default no file/URL so we spawn the app window.
+      console.warn(error);
+      urls = [];
+    }
+
+    if (this.launchHandler_) {
+      this.launchHandler_(urls);
+    }
+  }
+
+  /**
+   * Set a handler which is called when an app is launched.
+   * @param {!LaunchHandler} handler Function to be called.
+   */
+  setLaunchHandler(handler) {
+    this.launchHandler_ = handler;
+  }
+
+  /**
    * Register callback to be invoked after initialization.
    * If the initialization is already done, the callback is invoked immediately.
    *
@@ -369,21 +467,6 @@
   /**
    * Launches the app.
    * @private
-   * @override
-   */
-  async onLaunched_(launchData) {
-    metrics.startInterval('Load.BackgroundLaunch');
-    console.warn('onLaunched: ' + (launchData ? launchData.source : ''));
-    if (!launchData || !launchData.items || launchData.items.length == 0) {
-      this.launch_(undefined);
-      return;
-    }
-    BackgroundBaseImpl.prototype.onLaunched_.apply(this, [launchData]);
-  }
-
-  /**
-   * Launches the app.
-   * @private
    * @param {!Array<string>|undefined} urls
    */
   launch_(urls) {
@@ -415,7 +498,6 @@
   /**
    * Restarted the app, restore windows.
    * @private
-   * @override
    */
   onRestarted_() {
     // Reopen file manager windows.
@@ -558,6 +640,43 @@
   }
 }
 
+/** @private {number} Total number of retries for the resolve entries below.*/
+const MAX_RETRIES = 6;
+
+/**
+ * Retry the resolveIsolatedEntries() until we get the same number of entries
+ * back.
+ * @param {!Array<!Entry>} isolatedEntries Entries that need to be resolved.
+ * @return {!Promise<!Array<!Entry>>} Promise resolved with the entries
+ *   resolved.
+ */
+async function retryResolveIsolatedEntries(isolatedEntries) {
+  let count = 0;
+  let externalEntries = [];
+  // Wait time in milliseconds between attempts. We double this value after
+  // every wait.
+  let waitTime = 25;
+
+  // Total waiting time is ~1.5 second for `waitTime` starting at 25ms and total
+  // of 6 attempts.
+  while (count <= MAX_RETRIES) {
+    externalEntries = await resolveIsolatedEntries(isolatedEntries);
+    if (externalEntries.length >= isolatedEntries.length) {
+      return externalEntries;
+    }
+
+    console.warn(`Failed to resolve, retrying in ${waitTime}ms...`);
+    await new Promise(resolve => setTimeout(resolve, waitTime));
+    waitTime = waitTime * 2;
+    count += 1;
+  }
+
+  console.warn(
+      `Failed to resolve: Requested ${isolatedEntries.length},` +
+      ` resolved: ${externalEntries.length}.`);
+  return [];
+}
+
 /**
  * Prefix for the dialog ID.
  * @type {!string}
@@ -573,13 +692,13 @@
 
 /**
  * Singleton instance of Background object.
- * @type {!FileBrowserBackgroundFull}
+ * @type {!FileManagerBaseInterface}
  */
-export const background = new FileBrowserBackgroundImpl();
+export const background = new FileManagerBase();
 window.background = background;
 
 /**
- * Lastly, end recording of the background page Load.BackgroundScript metric.
+ * End recording of the background page Load.BackgroundScript metric.
  * NOTE: This call must come after the call to metrics.clearUserId.
  */
 metrics.recordInterval('Load.BackgroundScript');
diff --git a/ui/file_manager/file_manager/background/js/main_background.js b/ui/file_manager/file_manager/background/js/main_background.js
index c15d89e..1b58702 100644
--- a/ui/file_manager/file_manager/background/js/main_background.js
+++ b/ui/file_manager/file_manager/background/js/main_background.js
@@ -8,5 +8,5 @@
 
 import './metrics_start.js';
 import '../../common/js/error_counter.js';
-import './background.js';
+import './file_manager_base.js';
 import './test_util.js';
diff --git a/ui/file_manager/file_manager/background/js/runtime_loaded_test_util.js b/ui/file_manager/file_manager/background/js/runtime_loaded_test_util.js
index 9f0a62c..60c3c47 100644
--- a/ui/file_manager/file_manager/background/js/runtime_loaded_test_util.js
+++ b/ui/file_manager/file_manager/background/js/runtime_loaded_test_util.js
@@ -12,10 +12,11 @@
 import {metrics} from '../../common/js/metrics.js';
 import {util} from '../../common/js/util.js';
 import {VolumeManagerCommon} from '../../common/js/volume_manager_types.js';
-import {BackgroundBase} from '../../externs/background/background_base.js';
+import {FileManagerBaseInterface} from '../../externs/background/file_manager_base.js';
+
 import {test} from './test_util_base.js';
 
-/** @type {!BackgroundBase} */
+/** @type {!FileManagerBaseInterface} */
 window.background;
 
 /**
diff --git a/ui/file_manager/file_manager/background/js/test_util.js b/ui/file_manager/file_manager/background/js/test_util.js
index 8ac2198..7d72fc5 100644
--- a/ui/file_manager/file_manager/background/js/test_util.js
+++ b/ui/file_manager/file_manager/background/js/test_util.js
@@ -6,7 +6,7 @@
 import {ProgressCenterItem} from '../../common/js/progress_center_common.js';
 import {util} from '../../common/js/util.js';
 
-import {background} from './background.js';
+import {background} from './file_manager_base.js';
 import {launcher} from './launcher.js';
 import {test} from './test_util_base.js';
 
diff --git a/ui/file_manager/file_manager/common/js/BUILD.gn b/ui/file_manager/file_manager/common/js/BUILD.gn
index 01f7e685..047ab0780 100644
--- a/ui/file_manager/file_manager/common/js/BUILD.gn
+++ b/ui/file_manager/file_manager/common/js/BUILD.gn
@@ -117,7 +117,6 @@
     ":storage_adapter",
     "//ui/file_manager/file_manager/externs:file_manager_private",
     "//ui/file_manager/file_manager/externs:volume_manager",
-    "//ui/file_manager/file_manager/externs/background:background_base",
   ]
   externs_list =
       [ "//ui/file_manager/file_manager/externs/app_window_common.js" ]
diff --git a/ui/file_manager/file_manager/common/js/app_util.js b/ui/file_manager/file_manager/common/js/app_util.js
index 3334d782..d8a5a7a 100644
--- a/ui/file_manager/file_manager/common/js/app_util.js
+++ b/ui/file_manager/file_manager/common/js/app_util.js
@@ -2,7 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-import {BackgroundBase} from '../../externs/background/background_base.js';
 import {VolumeManager} from '../../externs/volume_manager.js';
 import {xfm} from './xfm.js';
 
@@ -165,22 +164,4 @@
   }
 };
 
-/**
- * Fetches the VolumeManager from the background page.
- * @return {!Promise<!VolumeManager>}.
- */
-appUtil.getVolumeManager = async () => {
-  const backgroundWindow = new Promise(resolve => {
-    if (window.isSWA) {
-      resolve(window);
-    } else {
-      chrome.runtime.getBackgroundPage(resolve);
-    }
-  });
-
-  /** @type {!BackgroundBase} */
-  const backgroundPage = (await backgroundWindow).background;
-  return backgroundPage.getVolumeManager();
-};
-
 export {appUtil};
diff --git a/ui/file_manager/file_manager/common/js/util.js b/ui/file_manager/file_manager/common/js/util.js
index 89f0de3..f7fb9b0d 100644
--- a/ui/file_manager/file_manager/common/js/util.js
+++ b/ui/file_manager/file_manager/common/js/util.js
@@ -906,8 +906,8 @@
  */
 util.entriesToURLs = entries => {
   return entries.map(entry => {
-    // When building background.js, cachedUrl is not refered other than here.
-    // Thus closure compiler raises an error if we refer the property like
+    // When building file_manager_base.js, cachedUrl is not referred other than
+    // here. Thus closure compiler raises an error if we refer the property like
     // entry.cachedUrl.
     return entry['cachedUrl'] || entry.toURL();
   });
diff --git a/ui/file_manager/file_manager/externs/BUILD.gn b/ui/file_manager/file_manager/externs/BUILD.gn
index d4ca87e0..3f826ef 100644
--- a/ui/file_manager/file_manager/externs/BUILD.gn
+++ b/ui/file_manager/file_manager/externs/BUILD.gn
@@ -18,7 +18,8 @@
 }
 
 js_library("background_window") {
-  deps = [ "//ui/file_manager/file_manager/externs/background:background_base" ]
+  deps =
+      [ "//ui/file_manager/file_manager/externs/background:file_manager_base" ]
 }
 
 js_library("banner") {
diff --git a/ui/file_manager/file_manager/externs/app_window_common.js b/ui/file_manager/file_manager/externs/app_window_common.js
index 6f306866..ab22672 100644
--- a/ui/file_manager/file_manager/externs/app_window_common.js
+++ b/ui/file_manager/file_manager/externs/app_window_common.js
@@ -32,7 +32,7 @@
 Window.prototype.HTMLImports.whenReady;
 
 /**
- * True if in test: set by the background.js page.
+ * True if in test: set by ash/webui/file_manager/resources/init_globals.js.
  *
  * @type {boolean}
  */
diff --git a/ui/file_manager/file_manager/externs/background/BUILD.gn b/ui/file_manager/file_manager/externs/background/BUILD.gn
index a13bd6b..5ae812b 100644
--- a/ui/file_manager/file_manager/externs/background/BUILD.gn
+++ b/ui/file_manager/file_manager/externs/background/BUILD.gn
@@ -6,11 +6,10 @@
 
 group("js_modules") {
   deps = [
-    ":background_base",
     ":crostini",
     ":drive_sync_handler",
     ":duplicate_finder",
-    ":file_browser_background_full",
+    ":file_manager_base",
     ":file_operation_manager",
     ":import_history",
     ":media_import_handler",
@@ -20,24 +19,6 @@
   ]
 }
 
-js_library("file_browser_background_full") {
-  deps = [
-    ":background_base",
-    ":crostini",
-    ":drive_sync_handler",
-    ":file_operation_manager",
-    ":import_history",
-    ":media_import_handler",
-    ":media_scanner",
-    ":progress_center",
-    "//ui/file_manager/file_manager/common/js:files_app_state",
-  ]
-}
-
-js_library("background_base") {
-  deps = [ "..:volume_manager" ]
-}
-
 js_library("drive_sync_handler") {
   deps = [ "..:drive_dialog_controller" ]
 }
@@ -53,6 +34,20 @@
   deps = [ "..:volume_manager" ]
 }
 
+js_library("file_manager_base") {
+  deps = [
+    ":crostini",
+    ":drive_sync_handler",
+    ":file_operation_manager",
+    ":import_history",
+    ":media_import_handler",
+    ":media_scanner",
+    ":progress_center",
+    "..:volume_manager",
+    "//ui/file_manager/file_manager/common/js:files_app_state",
+  ]
+}
+
 js_library("file_operation_manager") {
   deps = [
     "..:files_app_entry_interfaces",
diff --git a/ui/file_manager/file_manager/externs/background/background_base.js b/ui/file_manager/file_manager/externs/background/background_base.js
deleted file mode 100644
index 66a4230..0000000
--- a/ui/file_manager/file_manager/externs/background/background_base.js
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2017 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import {VolumeManager} from '../volume_manager.js';
-
-/** @typedef {function(!Array<string>):!Promise} */
-export let LaunchHandler;
-
-/**
- * Interface exposed in window.background in the background page. Used for
- * Audio and Video.
- *
- * Files app uses a larger interface: `FileBrowserBackgroundFull`.
- * Interface exposed in window.background in the background page. Used for
- * Audio and Video.
- *
- * Files app uses a larger interface: `FileBrowserBackgroundFull`.
- *
- * @interface
- */
-export class BackgroundBase {
-  constructor() {
-    /** @type {!Object<!Window>} */
-    this.dialogs;
-  }
-
-  /**
-   * Set a handler which is called when an app is launched.
-   * @param {!LaunchHandler} handler Function to be called.
-   */
-  setLaunchHandler(handler) {}
-
-  /** @return {!Promise<!VolumeManager>} */
-  getVolumeManager() {}
-}
diff --git a/ui/file_manager/file_manager/externs/background/file_browser_background_full.js b/ui/file_manager/file_manager/externs/background/file_manager_base.js
similarity index 82%
rename from ui/file_manager/file_manager/externs/background/file_browser_background_full.js
rename to ui/file_manager/file_manager/externs/background/file_manager_base.js
index dce06eb..cedda82 100644
--- a/ui/file_manager/file_manager/externs/background/file_browser_background_full.js
+++ b/ui/file_manager/file_manager/externs/background/file_manager_base.js
@@ -3,8 +3,8 @@
 // found in the LICENSE file.
 
 import {FilesAppState} from '../../common/js/files_app_state.js';
+import {VolumeManager} from '../volume_manager.js';
 
-import {BackgroundBase} from './background_base.js';
 import {Crostini} from './crostini.js';
 import {DriveSyncHandler} from './drive_sync_handler.js';
 import {FileOperationManager} from './file_operation_manager.js';
@@ -13,12 +13,16 @@
 import {mediaScannerInterfaces} from './media_scanner.js';
 import {ProgressCenter} from './progress_center.js';
 
+/** @typedef {function(!Array<string>):!Promise} */
+export let LaunchHandler;
+
 /**
  * @interface
  */
-export class FileBrowserBackgroundFull extends BackgroundBase {
+export class FileManagerBaseInterface {
   constructor() {
-    super();
+    /** @type {!Object<!Window>} */
+    this.dialogs;
 
     /**
      * @type {!DriveSyncHandler}
@@ -63,6 +67,15 @@
   }
 
   /**
+   * Set a handler which is called when an app is launched.
+   * @param {!LaunchHandler} handler Function to be called.
+   */
+  setLaunchHandler(handler) {}
+
+  /** @return {!Promise<!VolumeManager>} */
+  getVolumeManager() {}
+
+  /**
    * Register callback to be invoked after initialization of the background
    * page. If the initialization is already done, the callback is invoked
    * immediately.
diff --git a/ui/file_manager/file_manager/externs/background_window.js b/ui/file_manager/file_manager/externs/background_window.js
index c714d01..8c59891 100644
--- a/ui/file_manager/file_manager/externs/background_window.js
+++ b/ui/file_manager/file_manager/externs/background_window.js
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-import {BackgroundBase} from './background/background_base.js';
+import {FileManagerBaseInterface} from './background/file_manager_base.js';
 
 /**
  * @extends {Window}
@@ -10,13 +10,7 @@
 export class BackgroundWindow {
   constructor() {
     /**
-     * For File Manager it uses FileBrowserBackgroundFull.
-     * For all other apps it uses BackgroundBase.
-     *
-     * TODO(crbug.com/1148545): Add `FileBrowserBackgroundFull` together with
-     * `BackgroundBase` below.
-     *
-     * @type {!BackgroundBase}
+     * @type {!FileManagerBaseInterface}
      */
     this.background;
   }
diff --git a/ui/file_manager/file_manager/foreground/js/BUILD.gn b/ui/file_manager/file_manager/foreground/js/BUILD.gn
index b1346a6..22ef257a 100644
--- a/ui/file_manager/file_manager/foreground/js/BUILD.gn
+++ b/ui/file_manager/file_manager/foreground/js/BUILD.gn
@@ -645,7 +645,7 @@
     "//ui/file_manager/file_manager/externs:command_handler_deps",
     "//ui/file_manager/file_manager/externs:files_app_entry_interfaces",
     "//ui/file_manager/file_manager/externs/background:crostini",
-    "//ui/file_manager/file_manager/externs/background:file_browser_background_full",
+    "//ui/file_manager/file_manager/externs/background:file_manager_base",
     "//ui/file_manager/file_manager/externs/background:file_operation_manager",
     "//ui/file_manager/file_manager/externs/background:import_history",
     "//ui/file_manager/file_manager/externs/background:media_import_handler",
diff --git a/ui/file_manager/file_manager/foreground/js/file_list_model.js b/ui/file_manager/file_manager/foreground/js/file_list_model.js
index d0140c06..45a068a 100644
--- a/ui/file_manager/file_manager/foreground/js/file_list_model.js
+++ b/ui/file_manager/file_manager/foreground/js/file_list_model.js
@@ -675,6 +675,16 @@
   }
 
   /**
+   * Refresh the group by data, e.g. when date modified changes due to
+   * timezone change.
+   */
+  refreshGroupBySnapshot() {
+    if (this.groupByField_ === GROUP_BY_FIELD_MODIFICATION_TIME) {
+      this.updateGroupBySnapshot_();
+    }
+  }
+
+  /**
    * Return the groupBy snapshot.
    * @return {!Array<!GroupHeader>}
    */
diff --git a/ui/file_manager/file_manager/foreground/js/file_manager.js b/ui/file_manager/file_manager/foreground/js/file_manager.js
index b1cd6db..f6d4c76 100644
--- a/ui/file_manager/file_manager/foreground/js/file_manager.js
+++ b/ui/file_manager/file_manager/foreground/js/file_manager.js
@@ -19,7 +19,7 @@
 import {str, util} from '../../common/js/util.js';
 import {AllowedPaths, VolumeManagerCommon} from '../../common/js/volume_manager_types.js';
 import {Crostini} from '../../externs/background/crostini.js';
-import {FileBrowserBackgroundFull} from '../../externs/background/file_browser_background_full.js';
+import {FileManagerBaseInterface} from '../../externs/background/file_manager_base.js';
 import {FileOperationManager} from '../../externs/background/file_operation_manager.js';
 import {importerHistoryInterfaces} from '../../externs/background/import_history.js';
 import {mediaImportInterfaces} from '../../externs/background/media_import_handler.js';
@@ -366,12 +366,12 @@
 
     /**
      * Background page.
-     * @private {?BackgroundWindow}
+     * @type {?BackgroundWindow}.
      */
     this.backgroundPage_ = null;
 
     /**
-     * @private {?FileBrowserBackgroundFull}
+     * @private {?FileManagerBaseInterface}
      */
     this.fileBrowserBackground_ = null;
 
@@ -1004,7 +1004,7 @@
 
     assert(this.backgroundPage_);
     this.fileBrowserBackground_ =
-        /** @type {!FileBrowserBackgroundFull} */ (
+        /** @type {!FileManagerBaseInterface} */ (
             this.backgroundPage_.background);
 
     await new Promise(resolve => this.fileBrowserBackground_.ready(resolve));
diff --git a/ui/file_manager/file_manager/foreground/js/metadata_update_controller.js b/ui/file_manager/file_manager/foreground/js/metadata_update_controller.js
index 5b2ca48..b4ce4005 100644
--- a/ui/file_manager/file_manager/foreground/js/metadata_update_controller.js
+++ b/ui/file_manager/file_manager/foreground/js/metadata_update_controller.js
@@ -80,6 +80,7 @@
    * @private
    */
   onCachedMetadataUpdate_(event) {
+    this.listContainer_.dataModel.refreshGroupBySnapshot();
     // TODO(hirono): Specify property name instead of metadata type.
     this.listContainer_.currentView.updateListItemsMetadata(
         'filesystem', event.entries);
diff --git a/ui/file_manager/file_manager/foreground/js/ui/file_grid.js b/ui/file_manager/file_manager/foreground/js/ui/file_grid.js
index cf48a5b..94db2f0 100644
--- a/ui/file_manager/file_manager/foreground/js/ui/file_grid.js
+++ b/ui/file_manager/file_manager/foreground/js/ui/file_grid.js
@@ -706,6 +706,16 @@
     return new FileGridSelectionController(assert(sm), this);
   }
 
+  updateGroupHeading_() {
+    const fileListModel = /** @type {FileListModel} */ (this.dataModel);
+    if (fileListModel &&
+        fileListModel.groupByField === GROUP_BY_FIELD_MODIFICATION_TIME) {
+      // TODO(crbug.com/1353650): find a way to update heading instead of
+      // redraw.
+      this.redraw();
+    }
+  }
+
   /**
    * Updates items to reflect metadata changes.
    * @param {string} type Type of metadata changed.
@@ -726,6 +736,7 @@
       this.decorateThumbnailBox_(assert(listItem), entry);
       this.updateSharedStatus_(assert(listItem), entry);
     }
+    this.updateGroupHeading_();
   }
 
   /**
diff --git a/ui/file_manager/file_manager/foreground/js/ui/file_table.js b/ui/file_manager/file_manager/foreground/js/ui/file_table.js
index b55f4aaf..8fb2cbdf 100644
--- a/ui/file_manager/file_manager/foreground/js/ui/file_table.js
+++ b/ui/file_manager/file_manager/foreground/js/ui/file_table.js
@@ -13,7 +13,7 @@
 import {FilesAppEntry} from '../../../externs/files_app_entry_interfaces.js';
 import {VolumeManager} from '../../../externs/volume_manager.js';
 import {FilesTooltip} from '../../elements/files_tooltip.js';
-import {FileListModel} from '../file_list_model.js';
+import {FileListModel, GROUP_BY_FIELD_MODIFICATION_TIME} from '../file_list_model.js';
 import {ListThumbnailLoader} from '../list_thumbnail_loader.js';
 import {MetadataModel} from '../metadata/metadata_model.js';
 
@@ -1029,6 +1029,15 @@
     div.textContent = this.formatter_.formatModDate(modTime);
   }
 
+  updateGroupHeading_() {
+    const fileListModel = /** @type {FileListModel} */ (this.dataModel);
+    if (fileListModel &&
+        fileListModel.groupByField === GROUP_BY_FIELD_MODIFICATION_TIME) {
+      // TODO(crbug.com/1353650): find a way to update heading instead of redraw
+      this.redraw();
+    }
+  }
+
   /**
    * Updates the file metadata in the table item.
    *
@@ -1069,6 +1078,7 @@
       forEachCell('.table-row-cell > .size', function(item, entry, unused) {
         this.updateSize_(item, entry);
       });
+      this.updateGroupHeading_();
     } else if (type === 'external') {
       // The cell name does not matter as the entire list item is needed.
       forEachCell('.table-row-cell > .date', function(item, entry, listItem) {
diff --git a/ui/file_manager/file_manager/manifest.json b/ui/file_manager/file_manager/manifest.json
index 1d853df9..4afacfac 100644
--- a/ui/file_manager/file_manager/manifest.json
+++ b/ui/file_manager/file_manager/manifest.json
@@ -195,7 +195,6 @@
     "common/js/util.js",
     "common/js/volume_manager_types.js",
     "common/js/xfm.js",
-    "externs/background/background_base.js",
     "externs/drive_dialog_controller.js",
     "externs/entry_location.js",
     "externs/files_app_entry_interfaces.js",
@@ -206,7 +205,6 @@
     "externs/background/crostini.js",
     "externs/background/drive_sync_handler.js",
     "externs/background/duplicate_finder.js",
-    "externs/background/file_browser_background_full.js",
     "externs/background/file_operation_manager.js",
     "externs/background/import_history.js",
     "externs/background/media_import_handler.js",
@@ -220,13 +218,12 @@
     "foreground/elements/files_tooltip.js",
     "background/js/app_window_wrapper.js",
     "background/js/app_windows.js",
-    "background/js/background_base.js",
-    "background/js/background.js",
     "background/js/crostini.js",
     "background/js/device_handler.js",
     "background/js/drive_sync_handler.js",
     "background/js/duplicate_finder.js",
     "background/js/entry_location_impl.js",
+    "background/js/file_manager_base.js",
     "background/js/file_operation_handler.js",
     "background/js/file_operation_manager.js",
     "background/js/file_operation_util.js",
diff --git a/ui/file_manager/file_names.gni b/ui/file_manager/file_names.gni
index 1f3a494..24b65fd 100644
--- a/ui/file_manager/file_names.gni
+++ b/ui/file_manager/file_names.gni
@@ -15,13 +15,12 @@
   # Background:
   "file_manager/background/js/app_window_wrapper.js",
   "file_manager/background/js/app_windows.js",
-  "file_manager/background/js/background.js",
-  "file_manager/background/js/background_base.js",
   "file_manager/background/js/crostini.js",
   "file_manager/background/js/device_handler.js",
   "file_manager/background/js/drive_sync_handler.js",
   "file_manager/background/js/duplicate_finder.js",
   "file_manager/background/js/entry_location_impl.js",
+  "file_manager/background/js/file_manager_base.js",
   "file_manager/background/js/file_operation_handler.js",
   "file_manager/background/js/file_operation_manager.js",
   "file_manager/background/js/file_operation_util.js",
@@ -88,11 +87,10 @@
   "file_manager/common/js/xfm.js",
 
   # Externs:
-  "file_manager/externs/background/background_base.js",
   "file_manager/externs/background/crostini.js",
   "file_manager/externs/background/drive_sync_handler.js",
   "file_manager/externs/background/duplicate_finder.js",
-  "file_manager/externs/background/file_browser_background_full.js",
+  "file_manager/externs/background/file_manager_base.js",
   "file_manager/externs/background/file_operation_manager.js",
   "file_manager/externs/background/import_history.js",
   "file_manager/externs/background/media_import_handler.js",
diff --git a/ui/file_manager/integration_tests/file_manager/recents.js b/ui/file_manager/integration_tests/file_manager/recents.js
index 0886f90..2d86d4e 100644
--- a/ui/file_manager/integration_tests/file_manager/recents.js
+++ b/ui/file_manager/integration_tests/file_manager/recents.js
@@ -1017,7 +1017,6 @@
   await remoteCall.waitForElementsCount(appId, ['.group-heading'], 2);
   const groupHeadings = await remoteCall.callRemoteTestUtil(
       'deepQueryAllElements', appId, ['.group-heading']);
-  chrome.test.assertEq(2, groupHeadings.length);
   const fileItems = await remoteCall.callRemoteTestUtil(
       'deepQueryAllElements', appId, ['.group-heading + .table-row']);
   chrome.test.assertEq(2, fileItems.length);
@@ -1035,7 +1034,6 @@
   // Check headings in grid view mode.
   const groupTitles = await remoteCall.callRemoteTestUtil(
       'deepQueryAllElements', appId, ['.grid-title']);
-  chrome.test.assertEq(2, groupTitles.length);
   const gridItems = await remoteCall.callRemoteTestUtil(
       'deepQueryAllElements', appId, ['.grid-title + .thumbnail-item']);
   chrome.test.assertEq(2, gridItems.length);
@@ -1086,3 +1084,125 @@
   await deleteFile(appId, ENTRIES.beautiful.nameText);
   await waitForEmptyFolderMessage(appId, 'No recent files');
 };
+
+/**
+ * Construct a file with modified date as 1am today in a specific timezone.
+ * @param {string} timezone the timezone string
+ * @return {!TestEntryInfo}
+ */
+function prepareFileFor1AMToday(timezone) {
+  const nowDate = new Date();
+  nowDate.setHours(1, 0, 0, 0);
+  // Format: "May 2, 2021, 11:25 AM GMT+1000"
+  const modifiedDate = nowDate.toLocaleString('default', {
+    month: 'short',
+    day: 'numeric',
+    year: 'numeric',
+    hour12: true,
+    hour: 'numeric',
+    minute: 'numeric',
+    timeZone: timezone,
+    timeZoneName: 'longOffset',
+  });
+  return ENTRIES.beautiful.cloneWithModifiedDate(modifiedDate);
+}
+
+/**
+ * Tests the group heading and modified date column in the list view will
+ * change once the timezone changes.
+ */
+testcase.recentsRespondToTimezoneChangeForListView = async () => {
+  // Set timezone to Brisbane (GMT+10).
+  await sendTestMessage({name: 'setTimezone', timezone: 'Australia/Brisbane'});
+  const testFile = prepareFileFor1AMToday('Australia/Brisbane');
+
+  // Open Files app and go to Recent tab.
+  const appId =
+      await setupAndWaitUntilReady(RootPath.DOWNLOADS, [testFile], []);
+  await navigateToRecent(appId);
+  await remoteCall.waitForFiles(
+      appId, TestEntryInfo.getExpectedRows([testFile]), {
+        // Ignore last modified time because it will show Today/Yesterday
+        // instead of the actual date.
+        ignoreLastModifiedTime: true,
+      });
+  // Check date modified column.
+  const filesBefore =
+      await remoteCall.callRemoteTestUtil('getFileList', appId, []);
+  chrome.test.assertEq(filesBefore[0][3], 'Today 1:00 AM');
+  // Check group heading.
+  const groupHeadingBefore =
+      await remoteCall.waitForElement(appId, ['.group-heading']);
+  chrome.test.assertEq('Today', groupHeadingBefore.text);
+
+  // Set timezone to Perth (GMT+8).
+  await sendTestMessage({name: 'setTimezone', timezone: 'Australia/Perth'});
+
+  // Check date modified column.
+  const caller = getCaller();
+  await repeatUntil(async () => {
+    const filesAfter =
+        await remoteCall.callRemoteTestUtil('getFileList', appId, []);
+    // We need to assert the exact time here, so the timezones before/after
+    // should not involve daylight savings.
+    if (filesAfter[0][3] === 'Yesterday 11:00 PM') {
+      return;
+    }
+
+    return pending(
+        caller,
+        `Expected modified date to be Yesterday 11pm", got "${
+            filesAfter[0][3]}"`);
+  });
+
+  // Check group heading.
+  const groupHeadingAfter =
+      await remoteCall.waitForElement(appId, ['.group-heading']);
+  chrome.test.assertEq('Yesterday', groupHeadingAfter.text);
+};
+
+
+/**
+ * Tests the group heading in the grid view will change once the
+ * timezone changes.
+ */
+testcase.recentsRespondToTimezoneChangeForGridView = async () => {
+  // Set timezone to Auckland (GMT+12/+13).
+  await sendTestMessage({name: 'setTimezone', timezone: 'Pacific/Auckland'});
+  const testFile = prepareFileFor1AMToday('Pacific/Auckland');
+
+  // Open Files app and go to Recent tab.
+  const appId =
+      await setupAndWaitUntilReady(RootPath.DOWNLOADS, [testFile], []);
+  await navigateToRecent(appId);
+  await remoteCall.waitForFiles(
+      appId, TestEntryInfo.getExpectedRows([testFile]), {
+        // Ignore last modified time because it will show Today/Yesterday
+        // instead of the actual date.
+        ignoreLastModifiedTime: true,
+      });
+  // Switch to grid view.
+  await remoteCall.waitAndClickElement(appId, '#view-button');
+  // Check group heading.
+  const groupHeadingBefore =
+      await remoteCall.waitForElement(appId, ['.grid-title']);
+  chrome.test.assertEq('Today', groupHeadingBefore.text);
+
+  // Set timezone to Perth (GMT+8).
+  await sendTestMessage({name: 'setTimezone', timezone: 'Australia/Perth'});
+
+  // Check group heading.
+  const caller = getCaller();
+  await repeatUntil(async () => {
+    const groupHeadingAfter =
+        await remoteCall.waitForElement(appId, ['.grid-title']);
+    if (groupHeadingAfter.text === 'Yesterday') {
+      return;
+    }
+
+    return pending(
+        caller,
+        `Expected group heading to be Yesterday", got "${
+            groupHeadingAfter.text}"`);
+  });
+};
diff --git a/ui/ozone/platform/wayland/host/wayland_toplevel_window.cc b/ui/ozone/platform/wayland/host/wayland_toplevel_window.cc
index 079bf56a..cad4025 100644
--- a/ui/ozone/platform/wayland/host/wayland_toplevel_window.cc
+++ b/ui/ozone/platform/wayland/host/wayland_toplevel_window.cc
@@ -32,6 +32,7 @@
 #include "ui/ozone/platform/wayland/host/xdg_activation.h"
 #include "ui/platform_window/common/platform_window_defaults.h"
 #include "ui/platform_window/extensions/wayland_extension.h"
+#include "ui/platform_window/platform_window_delegate.h"
 
 #if BUILDFLAG(IS_CHROMEOS_LACROS)
 #include "chromeos/crosapi/cpp/crosapi_constants.h"
@@ -41,6 +42,12 @@
 
 namespace {
 bool decorations_allowed_for_test_ = true;
+
+bool ShouldSetBounds(PlatformWindowState state) {
+  return state == PlatformWindowState::kNormal ||
+         state == PlatformWindowState::kSnappedPrimary ||
+         state == PlatformWindowState::kSnappedSecondary;
+}
 }
 
 constexpr int kVisibleOnAllWorkspaces = -1;
@@ -354,32 +361,38 @@
                                                     bool is_maximized,
                                                     bool is_fullscreen,
                                                     bool is_activated) {
-  HandleAuraToplevelConfigure(0, 0, width_dip, height_dip, is_maximized,
-                              is_fullscreen, is_activated);
+  HandleAuraToplevelConfigure(0, 0, width_dip, height_dip,
+                              {
+                                  .is_maximized = is_maximized,
+                                  .is_fullscreen = is_fullscreen,
+                                  .is_activated = is_activated,
+                              });
 }
 
-void WaylandToplevelWindow::HandleAuraToplevelConfigure(int32_t x,
-                                                        int32_t y,
-                                                        int32_t width_dip,
-                                                        int32_t height_dip,
-                                                        bool is_maximized,
-                                                        bool is_fullscreen,
-                                                        bool is_activated) {
+void WaylandToplevelWindow::HandleAuraToplevelConfigure(
+    int32_t x,
+    int32_t y,
+    int32_t width_dip,
+    int32_t height_dip,
+    const WindowStates& window_states) {
   // Store the old state to propagte state changes if Wayland decides to change
   // the state to something else.
   PlatformWindowState old_state = state_;
-  if (state_ == PlatformWindowState::kMinimized && !is_activated) {
+  if (state_ == PlatformWindowState::kMinimized &&
+      !window_states.is_activated) {
     state_ = PlatformWindowState::kMinimized;
-  } else if (is_fullscreen) {
+  } else if (window_states.is_fullscreen) {
     state_ = PlatformWindowState::kFullScreen;
-  } else if (is_maximized) {
+  } else if (window_states.is_maximized) {
     state_ = PlatformWindowState::kMaximized;
+  } else if (window_states.is_snapped_primary) {
+    state_ = PlatformWindowState::kSnappedPrimary;
+  } else if (window_states.is_snapped_secondary) {
+    state_ = PlatformWindowState::kSnappedSecondary;
   } else {
     state_ = PlatformWindowState::kNormal;
   }
 
-  const bool is_normal = state_ == PlatformWindowState::kNormal;
-
   bool did_send_delegate_notification = !!requested_window_show_state_count_;
   if (requested_window_show_state_count_)
     requested_window_show_state_count_--;
@@ -387,8 +400,8 @@
   const bool did_window_show_state_change = old_state != state_;
 
   // Update state before notifying delegate.
-  const bool did_active_change = is_active_ != is_activated;
-  is_active_ = is_activated;
+  const bool did_active_change = is_active_ != window_states.is_activated;
+  is_active_ = window_states.is_activated;
 
   // Rather than call SetBounds here for every configure event, just save the
   // most recent bounds, and have WaylandConnection call ApplyPendingBounds
@@ -408,12 +421,12 @@
   if (width_dip > 1 && height_dip > 1) {
     bounds_dip.SetRect(x, y, width_dip, height_dip);
     // TODO(crbug.com/3651999): Change SetDecorationInsets to take DIP.
-    if (is_normal && frame_insets_px()) {
+    if (ShouldSetBounds(state_) && frame_insets_px()) {
       bounds_dip.Inset(
           -gfx::ScaleToRoundedInsets(*frame_insets_px(), 1.f / window_scale()));
       bounds_dip.set_origin({x, y});
     }
-  } else if (is_normal) {
+  } else if (ShouldSetBounds(state_)) {
     bounds_dip = !restored_size_dip().IsEmpty() ? gfx::Rect(restored_size_dip())
                                                 : GetBoundsInDIP();
   }
@@ -877,7 +890,7 @@
   // window has just become normal and store the current bounds if it is
   // either going out of normal state or simply changes the state and we don't
   // have any meaningful value stored.
-  if (GetPlatformWindowState() == PlatformWindowState::kNormal) {
+  if (ShouldSetBounds(GetPlatformWindowState())) {
     SetRestoredBoundsInDIP({});
   } else if (GetRestoredBoundsInDIP().IsEmpty()) {
     SetRestoredBoundsInDIP(GetBoundsInDIP());
diff --git a/ui/ozone/platform/wayland/host/wayland_toplevel_window.h b/ui/ozone/platform/wayland/host/wayland_toplevel_window.h
index d25ab3c..6a68d54 100644
--- a/ui/ozone/platform/wayland/host/wayland_toplevel_window.h
+++ b/ui/ozone/platform/wayland/host/wayland_toplevel_window.h
@@ -102,9 +102,7 @@
                                    int32_t y,
                                    int32_t width,
                                    int32_t height,
-                                   bool is_maximized,
-                                   bool is_fullscreen,
-                                   bool is_activated) override;
+                                   const WindowStates& window_states) override;
   void HandleSurfaceConfigure(uint32_t serial) override;
   void UpdateVisualSize(const gfx::Size& size_px) override;
   bool OnInitialize(PlatformWindowInitProperties properties) override;
@@ -224,9 +222,9 @@
   std::unique_ptr<ShellToplevelWrapper> shell_toplevel_;
 
   // Contains the current state of the window.
-  PlatformWindowState state_;
+  PlatformWindowState state_ = PlatformWindowState::kUnknown;
   // Contains the previous state of the window.
-  PlatformWindowState previous_state_;
+  PlatformWindowState previous_state_ = PlatformWindowState::kUnknown;
 
   bool is_active_ = false;
 
diff --git a/ui/ozone/platform/wayland/host/wayland_window.cc b/ui/ozone/platform/wayland/host/wayland_window.cc
index 576a3d3..8799a4b2 100644
--- a/ui/ozone/platform/wayland/host/wayland_window.cc
+++ b/ui/ozone/platform/wayland/host/wayland_window.cc
@@ -530,13 +530,12 @@
       << "Only shell toplevels must receive HandleToplevelConfigure calls.";
 }
 
-void WaylandWindow::HandleAuraToplevelConfigure(int32_t x,
-                                                int32_t y,
-                                                int32_t width,
-                                                int32_t height,
-                                                bool is_maximized,
-                                                bool is_fullscreen,
-                                                bool is_activated) {
+void WaylandWindow::HandleAuraToplevelConfigure(
+    int32_t x,
+    int32_t y,
+    int32_t width,
+    int32_t height,
+    const WindowStates& window_states) {
   NOTREACHED()
       << "Only shell toplevels must receive HandleAuraToplevelConfigure calls.";
 }
diff --git a/ui/ozone/platform/wayland/host/wayland_window.h b/ui/ozone/platform/wayland/host/wayland_window.h
index c33a1441..eeeda370 100644
--- a/ui/ozone/platform/wayland/host/wayland_window.h
+++ b/ui/ozone/platform/wayland/host/wayland_window.h
@@ -224,13 +224,19 @@
                                        bool is_maximized,
                                        bool is_fullscreen,
                                        bool is_activated);
+
+  struct WindowStates {
+    bool is_maximized = false;
+    bool is_fullscreen = false;
+    bool is_activated = false;
+    bool is_snapped_primary = false;
+    bool is_snapped_secondary = false;
+  };
   virtual void HandleAuraToplevelConfigure(int32_t x,
                                            int32_t y,
                                            int32_t width,
                                            int32_t height,
-                                           bool is_maximized,
-                                           bool is_fullscreen,
-                                           bool is_activated);
+                                           const WindowStates& window_states);
   virtual void HandlePopupConfigure(const gfx::Rect& bounds);
   // The final size of the Wayland surface is determined by the buffer size in
   // px that the Chromium compositor renders at. If the window changes a
diff --git a/ui/ozone/platform/wayland/host/wayland_window_unittest.cc b/ui/ozone/platform/wayland/host/wayland_window_unittest.cc
index c890f87..bce576d 100644
--- a/ui/ozone/platform/wayland/host/wayland_window_unittest.cc
+++ b/ui/ozone/platform/wayland/host/wayland_window_unittest.cc
@@ -3189,12 +3189,40 @@
   testing::NiceMock<MockWaylandPlatformWindowDelegate> delegate_2;
   auto toplevel = CreateWaylandWindowWithParams(
       PlatformWindowType::kWindow, 0, gfx::Rect(10, 10, 200, 200), &delegate_2);
-  toplevel->HandleAuraToplevelConfigure(0, 0, 0, 0, false, false, true);
+  toplevel->HandleAuraToplevelConfigure(0, 0, 0, 0, {false, false, true});
   toplevel->HandleSurfaceConfigure(2);
   static_cast<WaylandToplevelWindow*>(toplevel.get())->ApplyPendingBounds();
   EXPECT_EQ(gfx::Rect(10, 10, 200, 200), toplevel->GetBoundsInDIP());
 }
 
+TEST_P(WaylandWindowTest, PrimarySnappedState) {
+  testing::NiceMock<MockWaylandPlatformWindowDelegate> delegate_2;
+  auto toplevel = CreateWaylandWindowWithParams(
+      PlatformWindowType::kWindow, 0, gfx::Rect(0, 0, 200, 200), &delegate_2);
+  toplevel->HandleAuraToplevelConfigure(0, 0, 100, 200,
+                                        {.is_maximized = false,
+                                         .is_fullscreen = false,
+                                         .is_activated = true,
+                                         .is_snapped_primary = true});
+  toplevel->HandleSurfaceConfigure(2);
+  static_cast<WaylandToplevelWindow*>(toplevel.get())->ApplyPendingBounds();
+  EXPECT_EQ(gfx::Rect(0, 0, 100, 200), toplevel->GetBoundsInDIP());
+}
+
+TEST_P(WaylandWindowTest, SecondarySnappedState) {
+  testing::NiceMock<MockWaylandPlatformWindowDelegate> delegate_2;
+  auto toplevel = CreateWaylandWindowWithParams(
+      PlatformWindowType::kWindow, 0, gfx::Rect(0, 0, 200, 200), &delegate_2);
+  toplevel->HandleAuraToplevelConfigure(100, 0, 100, 200,
+                                        {.is_maximized = false,
+                                         .is_fullscreen = false,
+                                         .is_activated = true,
+                                         .is_snapped_secondary = true});
+  toplevel->HandleSurfaceConfigure(2);
+  static_cast<WaylandToplevelWindow*>(toplevel.get())->ApplyPendingBounds();
+  EXPECT_EQ(gfx::Rect(100, 0, 100, 200), toplevel->GetBoundsInDIP());
+}
+
 namespace {
 
 class WaylandSubsurfaceTest : public WaylandWindowTest {
diff --git a/ui/ozone/platform/wayland/host/xdg_toplevel_wrapper_impl.cc b/ui/ozone/platform/wayland/host/xdg_toplevel_wrapper_impl.cc
index 9e06965..4012114 100644
--- a/ui/ozone/platform/wayland/host/xdg_toplevel_wrapper_impl.cc
+++ b/ui/ozone/platform/wayland/host/xdg_toplevel_wrapper_impl.cc
@@ -17,6 +17,7 @@
 #include "ui/ozone/common/features.h"
 #include "ui/ozone/platform/wayland/common/wayland_util.h"
 #include "ui/ozone/platform/wayland/host/shell_surface_wrapper.h"
+#include "ui/ozone/platform/wayland/host/shell_toplevel_wrapper.h"
 #include "ui/ozone/platform/wayland/host/wayland_connection.h"
 #include "ui/ozone/platform/wayland/host/wayland_output.h"
 #include "ui/ozone/platform/wayland/host/wayland_output_manager.h"
@@ -269,15 +270,20 @@
   auto* surface = static_cast<XDGToplevelWrapperImpl*>(data);
   DCHECK(surface);
 
-  bool is_maximized =
-      CheckIfWlArrayHasValue(states, XDG_TOPLEVEL_STATE_MAXIMIZED);
-  bool is_fullscreen =
-      CheckIfWlArrayHasValue(states, XDG_TOPLEVEL_STATE_FULLSCREEN);
-  bool is_activated =
-      CheckIfWlArrayHasValue(states, XDG_TOPLEVEL_STATE_ACTIVATED);
-
   surface->wayland_window_->HandleAuraToplevelConfigure(
-      x, y, width, height, is_maximized, is_fullscreen, is_activated);
+      x, y, width, height,
+      {
+          .is_maximized =
+              CheckIfWlArrayHasValue(states, XDG_TOPLEVEL_STATE_MAXIMIZED),
+          .is_fullscreen =
+              CheckIfWlArrayHasValue(states, XDG_TOPLEVEL_STATE_FULLSCREEN),
+          .is_activated =
+              CheckIfWlArrayHasValue(states, XDG_TOPLEVEL_STATE_ACTIVATED),
+          .is_snapped_primary = CheckIfWlArrayHasValue(
+              states, ZAURA_TOPLEVEL_STATE_SNAPPED_PRIMARY),
+          .is_snapped_secondary = CheckIfWlArrayHasValue(
+              states, ZAURA_TOPLEVEL_STATE_SNAPPED_SECONDARY),
+      });
 }
 
 // static
diff --git a/ui/platform_window/platform_window_delegate.h b/ui/platform_window/platform_window_delegate.h
index 470c4a1..eb9e571f 100644
--- a/ui/platform_window/platform_window_delegate.h
+++ b/ui/platform_window/platform_window_delegate.h
@@ -34,6 +34,10 @@
   kMinimized,
   kNormal,
   kFullScreen,
+
+  // Currently, only used by ChromeOS.
+  kSnappedPrimary,
+  kSnappedSecondary,
 };
 
 enum class PlatformWindowOcclusionState {
diff --git a/ui/views/BUILD.gn b/ui/views/BUILD.gn
index 53a5192..d10262f 100644
--- a/ui/views/BUILD.gn
+++ b/ui/views/BUILD.gn
@@ -838,7 +838,10 @@
           "widget/desktop_aura/window_event_filter_lacros.cc",
           "widget/desktop_aura/window_event_filter_lacros.h",
         ]
-        deps += [ "//ui/base:hit_test" ]
+        deps += [
+          "//chromeos/ui/base",
+          "//ui/base:hit_test",
+        ]
       }
       if (is_linux || is_chromeos_lacros || is_fuchsia) {
         public += [
diff --git a/ui/views/examples/dialog_example.cc b/ui/views/examples/dialog_example.cc
index eb82bfd..ed006ec 100644
--- a/ui/views/examples/dialog_example.cc
+++ b/ui/views/examples/dialog_example.cc
@@ -144,30 +144,30 @@
         .AddRows(1, TableLayout::kFixedSize);
   }
 
-  StartTextfieldRow(table, &title_,
-                    l10n_util::GetStringUTF16(IDS_DIALOG_TITLE_LABEL),
-                    l10n_util::GetStringUTF16(IDS_DIALOG_TITLE_TEXT));
-  StartTextfieldRow(table, &body_,
-                    l10n_util::GetStringUTF16(IDS_DIALOG_BODY_LABEL),
-                    l10n_util::GetStringUTF16(IDS_DIALOG_BODY_LABEL));
+  StartTextfieldRow(
+      table, &title_, l10n_util::GetStringUTF16(IDS_DIALOG_TITLE_LABEL),
+      l10n_util::GetStringUTF16(IDS_DIALOG_TITLE_TEXT), nullptr, true);
+  StartTextfieldRow(
+      table, &body_, l10n_util::GetStringUTF16(IDS_DIALOG_BODY_LABEL),
+      l10n_util::GetStringUTF16(IDS_DIALOG_BODY_LABEL), nullptr, true);
 
   Label* row_label = nullptr;
   StartTextfieldRow(table, &ok_button_label_,
                     l10n_util::GetStringUTF16(IDS_DIALOG_OK_BUTTON_LABEL),
                     l10n_util::GetStringUTF16(IDS_DIALOG_OK_BUTTON_TEXT),
-                    &row_label);
+                    &row_label, false);
   AddCheckbox(table, &has_ok_button_, row_label);
 
   StartTextfieldRow(table, &cancel_button_label_,
                     l10n_util::GetStringUTF16(IDS_DIALOG_CANCEL_BUTTON_LABEL),
                     l10n_util::GetStringUTF16(IDS_DIALOG_CANCEL_BUTTON_TEXT),
-                    &row_label);
+                    &row_label, false);
   AddCheckbox(table, &has_cancel_button_, row_label);
 
   StartTextfieldRow(table, &extra_button_label_,
                     l10n_util::GetStringUTF16(IDS_DIALOG_EXTRA_BUTTON_LABEL),
                     l10n_util::GetStringUTF16(IDS_DIALOG_EXTRA_BUTTON_TEXT),
-                    &row_label);
+                    &row_label, false);
   AddCheckbox(table, &has_extra_button_, row_label);
 
   std::u16string modal_label =
@@ -203,7 +203,8 @@
                                       Textfield** member,
                                       std::u16string label,
                                       std::u16string value,
-                                      Label** created_label) {
+                                      Label** created_label,
+                                      bool pad_last_col) {
   Label* row_label = parent->AddChildView(std::make_unique<Label>(label));
   if (created_label)
     *created_label = row_label;
@@ -212,6 +213,8 @@
   textfield->SetText(value);
   textfield->SetAssociatedLabel(row_label);
   *member = parent->AddChildView(std::move(textfield));
+  if (pad_last_col)
+    parent->AddChildView(std::make_unique<View>());
 }
 
 void DialogExample::AddCheckbox(View* parent, Checkbox** member, Label* label) {
diff --git a/ui/views/examples/dialog_example.h b/ui/views/examples/dialog_example.h
index 069f5c3..0279c04 100644
--- a/ui/views/examples/dialog_example.h
+++ b/ui/views/examples/dialog_example.h
@@ -48,7 +48,8 @@
                          Textfield** member,
                          std::u16string label,
                          std::u16string value,
-                         Label** created_label = nullptr);
+                         Label** created_label = nullptr,
+                         bool pad_last_col = false);
   void AddCheckbox(View* parent, Checkbox** member, Label* label);
 
   // Checkbox callback
diff --git a/ui/views/widget/desktop_aura/DEPS b/ui/views/widget/desktop_aura/DEPS
new file mode 100644
index 0000000..9beac19
--- /dev/null
+++ b/ui/views/widget/desktop_aura/DEPS
@@ -0,0 +1,5 @@
+specific_include_rules = {
+  "desktop_window_tree_host_lacros.*": [
+    "+chromeos/ui/base",
+  ],
+}
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_lacros.cc b/ui/views/widget/desktop_aura/desktop_window_tree_host_lacros.cc
index c1f2dab..e4c808a 100644
--- a/ui/views/widget/desktop_aura/desktop_window_tree_host_lacros.cc
+++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_lacros.cc
@@ -7,6 +7,7 @@
 #include <memory>
 #include <string>
 
+#include "chromeos/ui/base/window_properties.h"
 #include "ui/aura/window.h"
 #include "ui/aura/window_delegate.h"
 #include "ui/events/event.h"
@@ -20,6 +21,29 @@
 #include "ui/views/widget/desktop_aura/window_event_filter_lacros.h"
 #include "ui/views/widget/widget.h"
 
+namespace {
+
+chromeos::WindowStateType ToChromeosWindowStateType(
+    ui::PlatformWindowState state) {
+  switch (state) {
+    case ui::PlatformWindowState::kUnknown:
+      return chromeos::WindowStateType::kDefault;
+    case ui::PlatformWindowState::kMaximized:
+      return chromeos::WindowStateType::kMaximized;
+    case ui::PlatformWindowState::kMinimized:
+      return chromeos::WindowStateType::kMinimized;
+    case ui::PlatformWindowState::kNormal:
+      return chromeos::WindowStateType::kNormal;
+    case ui::PlatformWindowState::kFullScreen:
+      return chromeos::WindowStateType::kFullscreen;
+    case ui::PlatformWindowState::kSnappedPrimary:
+      return chromeos::WindowStateType::kPrimarySnapped;
+    case ui::PlatformWindowState::kSnappedSecondary:
+      return chromeos::WindowStateType::kSecondarySnapped;
+  }
+}
+
+}  // namespace
 namespace views {
 
 DesktopWindowTreeHostLacros::DesktopWindowTreeHostLacros(
@@ -69,6 +93,15 @@
   DestroyNonClientEventFilter();
   DesktopWindowTreeHostPlatform::OnClosed();
 }
+void DesktopWindowTreeHostLacros::OnWindowStateChanged(
+    ui::PlatformWindowState old_window_show_state,
+    ui::PlatformWindowState new_window_show_state) {
+  DesktopWindowTreeHostPlatform::OnWindowStateChanged(old_window_show_state,
+                                                      new_window_show_state);
+  GetContentWindow()->SetProperty(
+      chromeos::kWindowStateTypeKey,
+      ToChromeosWindowStateType(new_window_show_state));
+}
 
 void DesktopWindowTreeHostLacros::AddAdditionalInitProperties(
     const Widget::InitParams& params,
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_lacros.h b/ui/views/widget/desktop_aura/desktop_window_tree_host_lacros.h
index 0db2bdd..24a8e5e8 100644
--- a/ui/views/widget/desktop_aura/desktop_window_tree_host_lacros.h
+++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_lacros.h
@@ -9,6 +9,7 @@
 
 #include "base/gtest_prod_util.h"
 #include "base/memory/weak_ptr.h"
+#include "chromeos/ui/base/window_state_type.h"
 #include "ui/aura/scoped_window_targeter.h"
 #include "ui/base/buildflags.h"
 #include "ui/gfx/geometry/rect.h"
@@ -58,6 +59,9 @@
 
   // PlatformWindowDelegate:
   void OnClosed() override;
+  void OnWindowStateChanged(
+      ui::PlatformWindowState old_window_show_state,
+      ui::PlatformWindowState new_window_show_state) override;
 
   // DesktopWindowTreeHostPlatform overrides:
   void AddAdditionalInitProperties(