diff --git a/DEPS b/DEPS
index a31ae90..cfc6878 100644
--- a/DEPS
+++ b/DEPS
@@ -253,7 +253,7 @@
   # 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': '557f2795f2497cf2b742eeeebefee55fe10fb68c',
+  'skia_revision': '6a7383e3dd9f6110ff04acefd9418fa5a313b87b',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling V8
   # and whatever else without interference from each other.
@@ -265,7 +265,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling SwiftShader
   # and whatever else without interference from each other.
-  'swiftshader_revision': '310874c922a83b44ab8e3d32cd5f240e8065fdae',
+  'swiftshader_revision': '949ffcf551518e729099feff57cd01a41ee884b4',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling PDFium
   # and whatever else without interference from each other.
@@ -328,7 +328,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling devtools-frontend
   # and whatever else without interference from each other.
-  'devtools_frontend_revision': '02c8529ba050f8c2c6a53f7819485a37280e4ded',
+  'devtools_frontend_revision': 'd7bff2860378b174fe97c8cffc29fe79598bb58e',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling libprotobuf-mutator
   # and whatever else without interference from each other.
@@ -368,7 +368,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
-  'dawn_revision': 'f0544b87bc75382d170af711ef8b01ae259182ef',
+  'dawn_revision': 'faa889d0b0467276ce186533f510e0fb254a3a17',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
@@ -809,7 +809,7 @@
       'packages': [
         {
           'package': 'chromium/rts/model/linux-amd64',
-          'version': 'oni8Wvm2dTjItf51VDlIxZEmPbECRyHeX1a3JhVodasC',
+          'version': 'R2Scs9LeEnk6Gci1aTeYhO1St6xc1j8xDHJ38D2MgfYC',
         },
       ],
       'dep_type': 'cipd',
@@ -820,7 +820,7 @@
       'packages': [
         {
           'package': 'chromium/rts/model/mac-amd64',
-          'version': 'LyPbNn2vg5b7A4Z1xmcWvgpMX_0G-N5mHr1HZUhjuz4C',
+          'version': 'Lay0gyvZ5bikG7V3ktlmqDpwbVBYWTadIMjkw8ryY7UC',
         },
       ],
       'dep_type': 'cipd',
@@ -831,7 +831,7 @@
       'packages': [
         {
           'package': 'chromium/rts/model/windows-amd64',
-          'version': 'tTQgln8do4tdqIPI8cJQPH1n-n3ka4dCMBoaYnwoqV0C',
+          'version': 'X5YUlPp5VK-OorwQPdVpGyHCyLDADSQujpS7VenyLfsC',
         },
       ],
       'dep_type': 'cipd',
@@ -1592,7 +1592,7 @@
       'packages': [
           {
               'package': 'fuchsia/third_party/android/aemu/release/linux-amd64',
-              'version': '5oOn194ItrPuR5B-IrGTR0tFqinYs3tfonzbKESY3EQC'
+              'version': 'fDOLeThNNR28jhe-URWsoauZhzf8e9KQz5UqxwVHwhAC'
           },
       ],
       'condition': 'host_os == "linux" and checkout_fuchsia',
@@ -1735,7 +1735,7 @@
     Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + '48cf29b0b746a3d74cdbb75ae4124a29be15bd14',
 
   'src/third_party/webrtc':
-    Var('webrtc_git') + '/src.git' + '@' + '7c2e958711aaa17fc03b937bf0657230e7bb1dde',
+    Var('webrtc_git') + '/src.git' + '@' + '56db8d09529d5ba92d24954a1d78a90c8ea2cd85',
 
   '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@c98a47bd27b987fae010f2858916ab485bd31c83',
+    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@0f111ddf9f9847a073884f83bf50e963bdfc9158',
     'condition': 'checkout_src_internal',
   },
 
@@ -1835,7 +1835,7 @@
     'packages': [
       {
         'package': 'chromeos_internal/apps/help_app/app',
-        'version': '7fLyyb8B8zlEhVNI4DtXPtZ37Rg6EL5PsssGzoZ6eqYC',
+        'version': '_adU8cEJ6gmVsqhP8WodJ33mbeFyMfohPmMyt4J6LHwC',
       },
     ],
     'condition': 'checkout_chromeos and checkout_src_internal',
@@ -1846,7 +1846,7 @@
     'packages': [
       {
         'package': 'chromeos_internal/apps/media_app/app',
-        'version': 'rcu2CL1SgiT_yrypXhtVgKX4XjKQF-jDx9rD354PCg0C',
+        'version': 'cGZ7uWRLKo2a9HooX42JwEdJkp6Ooykfe0v-JuEfWSAC',
       },
     ],
     'condition': 'checkout_chromeos and checkout_src_internal',
diff --git a/ash/app_list/app_list_presenter_unittest.cc b/ash/app_list/app_list_presenter_unittest.cc
index db4e08a..ece320a7c 100644
--- a/ash/app_list/app_list_presenter_unittest.cc
+++ b/ash/app_list/app_list_presenter_unittest.cc
@@ -15,6 +15,7 @@
 #include "ash/app_list/model/app_list_test_model.h"
 #include "ash/app_list/model/search/test_search_result.h"
 #include "ash/app_list/test/app_list_test_helper.h"
+#include "ash/app_list/views/app_list_bubble_apps_page.h"
 #include "ash/app_list/views/app_list_bubble_search_page.h"
 #include "ash/app_list/views/app_list_bubble_view.h"
 #include "ash/app_list/views/app_list_folder_view.h"
@@ -378,6 +379,45 @@
     UpdateDisplay("1024x768");
   }
 
+  AppsGridView* GetAppsGridView() {
+    if (tablet_mode_param())
+      return GetAppListTestHelper()->GetRootPagedAppsGridView();
+    return GetAppListTestHelper()->GetScrollableAppsGridView();
+  }
+
+  void SetupGridTestApi() {
+    grid_test_api_ =
+        std::make_unique<test::AppsGridViewTestApi>(GetAppsGridView());
+  }
+
+  void OnReorderAnimationDone(base::OnceClosure closure,
+                              bool aborted,
+                              AppListReorderAnimationStatus status) {
+    EXPECT_FALSE(aborted);
+    EXPECT_EQ(AppListReorderAnimationStatus::kFadeInAnimation, status);
+    std::move(closure).Run();
+  }
+
+  void SortAppList(AppListSortOrder order) {
+    DCHECK(productivity_launcher_param());
+    tablet_mode_param()
+        ? GetAppListTestHelper()
+              ->GetAppsContainerView()
+              ->UpdateForNewSortingOrder(
+                  order,
+                  /*animate=*/true,
+                  /*update_position_closure=*/base::DoNothing())
+        : GetAppListTestHelper()->GetBubbleView()->UpdateForNewSortingOrder(
+              order,
+              /*animate=*/true, /*update_position_closure=*/base::DoNothing());
+
+    base::RunLoop run_loop;
+    GetAppsGridView()->AddReorderCallbackForTest(
+        base::BindRepeating(&AppListBubbleAndTabletTest::OnReorderAnimationDone,
+                            base::Unretained(this), run_loop.QuitClosure()));
+    run_loop.Run();
+  }
+
   // Whether we should use the ProductivityLauncher flag.
   bool productivity_launcher_param() { return std::get<0>(GetParam()); }
 
@@ -538,6 +578,7 @@
   }
 
  protected:
+  std::unique_ptr<test::AppsGridViewTestApi> grid_test_api_;
   base::test::ScopedFeatureList scoped_feature_list_;
   std::unique_ptr<test::AppListTestModel> app_list_test_model_;
   std::unique_ptr<SearchModel> search_model_;
@@ -693,6 +734,29 @@
                          AppListBubbleAndTabletTest,
                          testing::Combine(testing::Bool(), testing::Bool()));
 
+// Verify that open folders are closed after sorting apps grid. Only run for
+// Productivity launcher.
+TEST_P(AppListBubbleAndTabletTest, SortingClosesOpenFolderView) {
+  if (!productivity_launcher_param())
+    return;
+  ui::ScopedAnimationDurationScaleMode scope_duration(
+      ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION);
+
+  app_list_test_model_->CreateAndPopulateFolderWithApps(4);
+
+  // Setup tablet/clamshell mode and show launcher.
+  EnableTabletMode(tablet_mode_param());
+  EnsureLauncherShown();
+
+  SetupGridTestApi();
+
+  grid_test_api_->PressItemAt(0);
+  EXPECT_TRUE(AppListIsInFolderView());
+
+  SortAppList(AppListSortOrder::kNameAlphabetical);
+  EXPECT_FALSE(AppListIsInFolderView());
+}
+
 // Tests that Zero State Search is only shown when needed.
 TEST_P(AppListBubbleAndTabletTest, LauncherSearchZeroState) {
   EnableTabletMode(tablet_mode_param());
diff --git a/ash/app_list/views/app_list_bubble_view.cc b/ash/app_list/views/app_list_bubble_view.cc
index 17db8e3..90f2205 100644
--- a/ash/app_list/views/app_list_bubble_view.cc
+++ b/ash/app_list/views/app_list_bubble_view.cc
@@ -490,6 +490,11 @@
     const absl::optional<AppListSortOrder>& new_order,
     bool animate,
     base::OnceClosure update_position_closure) {
+  // Hide any open folder by showing the apps page.
+  if (showing_folder_) {
+    HideFolderView(/*animate=*/false, /*hide_for_reparent=*/false);
+  }
+
   apps_page_->UpdateForNewSortingOrder(new_order, animate,
                                        std::move(update_position_closure));
 }
diff --git a/ash/app_list/views/apps_container_view.cc b/ash/app_list/views/apps_container_view.cc
index 9bccdcc..f53f29b 100644
--- a/ash/app_list/views/apps_container_view.cc
+++ b/ash/app_list/views/apps_container_view.cc
@@ -689,6 +689,10 @@
   if (new_order)
     toast_container_->AnnounceSortOrder(*new_order);
 
+  // Hide any open folder and transition to the apps page.
+  SetShowState(SHOW_APPS, /*show_apps_with_animation=*/false);
+  DisableFocusForShowingActiveFolder(false);
+
   if (!animate) {
     // Reordering is not required so update the undo toast and return early.
     app_list_nudge_controller_->OnTemporarySortOrderChanged(new_order);
diff --git a/ash/shortcut_viewer/strings/shortcut_viewer_strings_ne.xtb b/ash/shortcut_viewer/strings/shortcut_viewer_strings_ne.xtb
index fe92971..7547f92 100644
--- a/ash/shortcut_viewer/strings/shortcut_viewer_strings_ne.xtb
+++ b/ash/shortcut_viewer/strings/shortcut_viewer_strings_ne.xtb
@@ -157,6 +157,7 @@
 <translation id="6445033640292336367">ट्याबलाई यसको मूल स्थितिमा फर्काउनुहोस्</translation>
 <translation id="6474744297082284761">जुम आउट गर्नुहोस्‌ (डक गरिँदा वा पूर्ण स्क्रिनसम्बन्धी म्याग्निफायरहरूलाई सक्षम पारिँदा)</translation>
 <translation id="649811797655257835">फाइल चयन गर्नुहोस्, त्यसपछि <ph name="SPACE" /> थिच्नुहोस्</translation>
+<translation id="6515089016094047210">पात्रो विजेट खोल्नुहोस् वा बन्द गर्नुहोस्।</translation>
 <translation id="6551886416582667425">स्क्रिनको केही भागको स्क्रिनसट खिच्नुहोस्/रेकर्डिङ गर्नुहोस्</translation>
 <translation id="6556040137485212400">धेरै लामो समय सम्म प्रयोग नगरिएको विन्डो खोल्नुहोस्‌</translation>
 <translation id="666343722268997814">हाइलाइट गरिएको वस्तुमा दायाँ क्लिक गर्दा खुल्ने मेनु खोल्नुहोस्</translation>
diff --git a/ash/strings/ash_strings_af.xtb b/ash/strings/ash_strings_af.xtb
index 2733d13..e8c6a35 100644
--- a/ash/strings/ash_strings_af.xtb
+++ b/ash/strings/ash_strings_af.xtb
@@ -1041,7 +1041,6 @@
 <translation id="7595633564847427181">M</translation>
 <translation id="7600875258240007829">Sien alle kennisgewings</translation>
 <translation id="7607002721634913082">Laat wag</translation>
-<translation id="7610198039767537854">Bekyk onlangse foto's van jou foon se kameraspoel af op <ph name="DEVICE_TYPE" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7631906263969450674">Merkpen</translation>
 <translation id="7633755430369750696">Wys Nabydeling-instellings.</translation>
diff --git a/ash/strings/ash_strings_am.xtb b/ash/strings/ash_strings_am.xtb
index e59267b..923b2cda 100644
--- a/ash/strings/ash_strings_am.xtb
+++ b/ash/strings/ash_strings_am.xtb
@@ -1037,7 +1037,6 @@
 <translation id="7595633564847427181">ሰ</translation>
 <translation id="7600875258240007829">ሁሉንም ማሳወቂያዎች ይመልከቱ</translation>
 <translation id="7607002721634913082">ለአፍታ ቆሟል</translation>
-<translation id="7610198039767537854">በ<ph name="DEVICE_TYPE" /> ላይ ከስልክዎ የካሜራ ጥቅል የቅርብ ጊዜ ፎቶዎችን ይመልከቱ</translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° ፋ</translation>
 <translation id="7631906263969450674">ምልክት ማድረጊያ ብዕር</translation>
 <translation id="7633755430369750696">አቅራቢያ አጋራ ቅንብሮችን አሳይ።</translation>
diff --git a/ash/strings/ash_strings_ar.xtb b/ash/strings/ash_strings_ar.xtb
index fe4efbce..211ddf8 100644
--- a/ash/strings/ash_strings_ar.xtb
+++ b/ash/strings/ash_strings_ar.xtb
@@ -1041,7 +1041,6 @@
 <translation id="7595633564847427181">الإثنين</translation>
 <translation id="7600875258240007829">الاطّلاع على جميع الإشعارات</translation>
 <translation id="7607002721634913082">تعليق التحميل</translation>
-<translation id="7610198039767537854">عرض الصور الحديثة من ألبوم كاميرا الهاتف على جهاز <ph name="DEVICE_TYPE" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" /> درجة فهرنهايت</translation>
 <translation id="7631906263969450674">قلم تحديد</translation>
 <translation id="7633755430369750696">عرض إعدادات ميزة "المشاركة عن قرب"</translation>
diff --git a/ash/strings/ash_strings_as.xtb b/ash/strings/ash_strings_as.xtb
index b8d6bd3..b32daf4c 100644
--- a/ash/strings/ash_strings_as.xtb
+++ b/ash/strings/ash_strings_as.xtb
@@ -1040,7 +1040,6 @@
 <translation id="7595633564847427181">মি</translation>
 <translation id="7600875258240007829">সকলো জাননী চাওক</translation>
 <translation id="7607002721634913082">পজ হৈ আছে</translation>
-<translation id="7610198039767537854">আপোনাৰ ফ’নৰ কেমেৰা ৰ’লৰ পৰা <ph name="DEVICE_TYPE" />ত শেহতীয়া ফট’সমূহ চাওক</translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7631906263969450674">মাৰ্কাৰ কলম</translation>
 <translation id="7633755430369750696">Nearby Shareৰ ছেটিং দেখুৱাওক।</translation>
diff --git a/ash/strings/ash_strings_az.xtb b/ash/strings/ash_strings_az.xtb
index 2c79932..1b51464 100644
--- a/ash/strings/ash_strings_az.xtb
+++ b/ash/strings/ash_strings_az.xtb
@@ -1040,7 +1040,6 @@
 <translation id="7595633564847427181">B.e.</translation>
 <translation id="7600875258240007829">Bütün bildirişlərə baxın</translation>
 <translation id="7607002721634913082">Durduruldu</translation>
-<translation id="7610198039767537854"><ph name="DEVICE_TYPE" /> cihazında telefonunuzun foto lentindən son fotolara baxın</translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7631906263969450674">Marker qələm</translation>
 <translation id="7633755430369750696">Yaxındakılarla Paylaşma ayarlarını göstərin.</translation>
diff --git a/ash/strings/ash_strings_be.xtb b/ash/strings/ash_strings_be.xtb
index 0dad61f..3c1524f 100644
--- a/ash/strings/ash_strings_be.xtb
+++ b/ash/strings/ash_strings_be.xtb
@@ -1040,7 +1040,6 @@
 <translation id="7595633564847427181">Пн</translation>
 <translation id="7600875258240007829">Паказаць усе апавяшчэнні</translation>
 <translation id="7607002721634913082">Прыпынена</translation>
-<translation id="7610198039767537854">Праглядайце нядаўнія фота з галерэі камеры вашага тэлефона на прыладзе <ph name="DEVICE_TYPE" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" /> °F</translation>
 <translation id="7631906263969450674">Фламастар</translation>
 <translation id="7633755430369750696">Паказаць налады функцыі "Абагульванне паблізу".</translation>
diff --git a/ash/strings/ash_strings_bg.xtb b/ash/strings/ash_strings_bg.xtb
index 5382471..ead712e8 100644
--- a/ash/strings/ash_strings_bg.xtb
+++ b/ash/strings/ash_strings_bg.xtb
@@ -1040,7 +1040,6 @@
 <translation id="7595633564847427181">пн</translation>
 <translation id="7600875258240007829">Преглед на всички известия</translation>
 <translation id="7607002721634913082">На пауза</translation>
-<translation id="7610198039767537854">Преглед на <ph name="DEVICE_TYPE" /> на скорошните снимки от филмовата ролка на телефона ви</translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7631906263969450674">Маркер</translation>
 <translation id="7633755430369750696">Показване на настройките на „Споделяне наблизо“.</translation>
diff --git a/ash/strings/ash_strings_bn.xtb b/ash/strings/ash_strings_bn.xtb
index 12cf511..57b2a41 100644
--- a/ash/strings/ash_strings_bn.xtb
+++ b/ash/strings/ash_strings_bn.xtb
@@ -1040,7 +1040,6 @@
 <translation id="7595633564847427181">সো</translation>
 <translation id="7600875258240007829">সব বিজ্ঞপ্তি দেখুন</translation>
 <translation id="7607002721634913082">বিরত রয়েছে</translation>
-<translation id="7610198039767537854"><ph name="DEVICE_TYPE" /> ডিভাইসে আপনার ফোনের ক্যামেরা রোলে সাম্প্রতিক ফটো দেখুন</translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° ফারেনহাইট</translation>
 <translation id="7631906263969450674">মার্কার পেন</translation>
 <translation id="7633755430369750696">'নিয়ারবাই শেয়ার' সেটিংস দেখুন।</translation>
diff --git a/ash/strings/ash_strings_bs.xtb b/ash/strings/ash_strings_bs.xtb
index ef2382a..3a237bb 100644
--- a/ash/strings/ash_strings_bs.xtb
+++ b/ash/strings/ash_strings_bs.xtb
@@ -1040,7 +1040,6 @@
 <translation id="7595633564847427181">P</translation>
 <translation id="7600875258240007829">Prikaži sva obavještenja</translation>
 <translation id="7607002721634913082">Pauzirano</translation>
-<translation id="7610198039767537854">Pregledajte nedavne snimljene fotografije s telefona na uređaju <ph name="DEVICE_TYPE" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7631906263969450674">Označivač</translation>
 <translation id="7633755430369750696">Vidite postavke Dijeljenja u blizini.</translation>
diff --git a/ash/strings/ash_strings_ca.xtb b/ash/strings/ash_strings_ca.xtb
index e7d6582..e5e6f2a 100644
--- a/ash/strings/ash_strings_ca.xtb
+++ b/ash/strings/ash_strings_ca.xtb
@@ -1040,7 +1040,6 @@
 <translation id="7595633564847427181">Dl.</translation>
 <translation id="7600875258240007829">Mostra totes les notificacions</translation>
 <translation id="7607002721634913082">En pausa</translation>
-<translation id="7610198039767537854">Mostra fotos recents del carret del telèfon a <ph name="DEVICE_TYPE" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" /> °F</translation>
 <translation id="7631906263969450674">Bolígraf marcador</translation>
 <translation id="7633755430369750696">Mostra la configuració de Compartició Nearby.</translation>
diff --git a/ash/strings/ash_strings_cs.xtb b/ash/strings/ash_strings_cs.xtb
index c90a98b..25f7b61 100644
--- a/ash/strings/ash_strings_cs.xtb
+++ b/ash/strings/ash_strings_cs.xtb
@@ -1040,7 +1040,6 @@
 <translation id="7595633564847427181">P</translation>
 <translation id="7600875258240007829">Zobrazit všechna oznámení</translation>
 <translation id="7607002721634913082">Přerušeno</translation>
-<translation id="7610198039767537854">Zobrazit nedávné fotky z alba fotoaparátu z telefonu v zařízení <ph name="DEVICE_TYPE" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" /> °F</translation>
 <translation id="7631906263969450674">Zvýrazňovač</translation>
 <translation id="7633755430369750696">Zobrazit nastavení sdílení nablízko</translation>
diff --git a/ash/strings/ash_strings_da.xtb b/ash/strings/ash_strings_da.xtb
index 20ac6250..1d883dc 100644
--- a/ash/strings/ash_strings_da.xtb
+++ b/ash/strings/ash_strings_da.xtb
@@ -1040,7 +1040,6 @@
 <translation id="7595633564847427181">M</translation>
 <translation id="7600875258240007829">Se alle notifikationer</translation>
 <translation id="7607002721634913082">Sat på pause</translation>
-<translation id="7610198039767537854">Se nye billeder fra din telefons kamerarulle på <ph name="DEVICE_TYPE" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7631906263969450674">Tusch</translation>
 <translation id="7633755430369750696">Vis indstillinger for Deling tæt på.</translation>
diff --git a/ash/strings/ash_strings_de.xtb b/ash/strings/ash_strings_de.xtb
index ca6a0d4..e969cf45 100644
--- a/ash/strings/ash_strings_de.xtb
+++ b/ash/strings/ash_strings_de.xtb
@@ -1037,7 +1037,6 @@
 <translation id="7595633564847427181">M</translation>
 <translation id="7600875258240007829">Alle Benachrichtigungen ansehen</translation>
 <translation id="7607002721634913082">Angehalten</translation>
-<translation id="7610198039767537854">Neue Fotos aus den Kameraaufnahmen Ihres Smartphones auf <ph name="DEVICE_TYPE" /> anzeigen</translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" /> °F</translation>
 <translation id="7631906263969450674">Filzstift</translation>
 <translation id="7633755430369750696">Nearby Share-Einstellungen anzeigen.</translation>
diff --git a/ash/strings/ash_strings_el.xtb b/ash/strings/ash_strings_el.xtb
index 28153f8..eb7d150 100644
--- a/ash/strings/ash_strings_el.xtb
+++ b/ash/strings/ash_strings_el.xtb
@@ -1040,7 +1040,6 @@
 <translation id="7595633564847427181">Δ</translation>
 <translation id="7600875258240007829">Δείτε όλες τις ειδοποιήσεις</translation>
 <translation id="7607002721634913082">Έγινε παύση</translation>
-<translation id="7610198039767537854">Δείτε πρόσφατες φωτογραφίες από τις φωτογραφίες κάμερας του τηλεφώνου σας στη συσκευή <ph name="DEVICE_TYPE" />.</translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7631906263969450674">Στυλό δείκτη</translation>
 <translation id="7633755430369750696">Εμφάνιση ρυθμίσεων της λειτουργίας Κοινοποίηση κοντά.</translation>
diff --git a/ash/strings/ash_strings_en-GB.xtb b/ash/strings/ash_strings_en-GB.xtb
index 4cef824..5ab11022 100644
--- a/ash/strings/ash_strings_en-GB.xtb
+++ b/ash/strings/ash_strings_en-GB.xtb
@@ -965,6 +965,7 @@
 <translation id="7076293881109082629">Signing in</translation>
 <translation id="7086931198345821656">This update requires powerwashing your <ph name="DEVICE_TYPE" />. All data will be deleted. Learn more about the latest <ph name="SYSTEM_APP_NAME" /> update.</translation>
 <translation id="7088960765736518739">Switch Access</translation>
+<translation id="7098053464892629930">Download the app for <ph name="NAME" /> on Google Play to see all available features</translation>
 <translation id="7098389117866926363">USB-C device (left port in the back)</translation>
 <translation id="7106330611027933926">Show deskbar</translation>
 <translation id="7118268675952955085">screenshot</translation>
@@ -1040,7 +1041,6 @@
 <translation id="7595633564847427181">M</translation>
 <translation id="7600875258240007829">See all notifications</translation>
 <translation id="7607002721634913082">Paused</translation>
-<translation id="7610198039767537854">View recent photos from your phone‘s camera roll on <ph name="DEVICE_TYPE" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7631906263969450674">Marker pen</translation>
 <translation id="7633755430369750696">Show Nearby Share settings.</translation>
@@ -1210,6 +1210,7 @@
 <translation id="8660331759611631213">Square root of 71</translation>
 <translation id="8663756353922886599"><ph name="CONNECTION_STATUS" />, signal strength <ph name="SIGNAL_STRENGTH" /></translation>
 <translation id="8664753092453405566">Show network list. <ph name="STATE_TEXT" /></translation>
+<translation id="8666856788528804727">Open <ph name="NAME" /> to set up your device</translation>
 <translation id="8676770494376880701">Low-power charger connected</translation>
 <translation id="8683506306463609433">Performance tracing active</translation>
 <translation id="8685326675965865247">Search your device, apps, settings and web. Use the arrow keys to navigate your apps.</translation>
diff --git a/ash/strings/ash_strings_es-419.xtb b/ash/strings/ash_strings_es-419.xtb
index dfa50a1..b62c4c2 100644
--- a/ash/strings/ash_strings_es-419.xtb
+++ b/ash/strings/ash_strings_es-419.xtb
@@ -1041,7 +1041,6 @@
 <translation id="7595633564847427181">L</translation>
 <translation id="7600875258240007829">Ver todas las notificaciones</translation>
 <translation id="7607002721634913082">Detenido</translation>
-<translation id="7610198039767537854">Visualiza fotos recientes de la galería de fotos del teléfono en tu <ph name="DEVICE_TYPE" />.</translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" /> °F</translation>
 <translation id="7631906263969450674">Lápiz marcador</translation>
 <translation id="7633755430369750696">Mostrar la configuración de Compartir con Nearby</translation>
diff --git a/ash/strings/ash_strings_es.xtb b/ash/strings/ash_strings_es.xtb
index dccfdf3f..d414c89b 100644
--- a/ash/strings/ash_strings_es.xtb
+++ b/ash/strings/ash_strings_es.xtb
@@ -1041,7 +1041,6 @@
 <translation id="7595633564847427181">L</translation>
 <translation id="7600875258240007829">Ver todas las notificaciones</translation>
 <translation id="7607002721634913082">En pausa</translation>
-<translation id="7610198039767537854">Consulta fotos recientes del carrete de tu teléfono en <ph name="DEVICE_TYPE" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" /> °F</translation>
 <translation id="7631906263969450674">Rotulador</translation>
 <translation id="7633755430369750696">Muestra los ajustes de Compartir con Nearby.</translation>
diff --git a/ash/strings/ash_strings_et.xtb b/ash/strings/ash_strings_et.xtb
index 0e3471a..aaacd3d0 100644
--- a/ash/strings/ash_strings_et.xtb
+++ b/ash/strings/ash_strings_et.xtb
@@ -1041,7 +1041,6 @@
 <translation id="7595633564847427181">E</translation>
 <translation id="7600875258240007829">Kuva kõik märguanded</translation>
 <translation id="7607002721634913082">Peatatud</translation>
-<translation id="7610198039767537854">Vaadake oma telefoni kaamera albumi viimaseid fotosid seadmes <ph name="DEVICE_TYPE" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" /> °F</translation>
 <translation id="7631906263969450674">Markerpliiats</translation>
 <translation id="7633755430369750696">Läheduses jagamise seadete kuvamine.</translation>
diff --git a/ash/strings/ash_strings_eu.xtb b/ash/strings/ash_strings_eu.xtb
index 39cc4fba..48e9951 100644
--- a/ash/strings/ash_strings_eu.xtb
+++ b/ash/strings/ash_strings_eu.xtb
@@ -1041,7 +1041,6 @@
 <translation id="7595633564847427181">A</translation>
 <translation id="7600875258240007829">Ikusi jakinarazpen guztiak</translation>
 <translation id="7607002721634913082">Pausatuta</translation>
-<translation id="7610198039767537854">Ikusi telefonoaren kamerako azken argazkiak <ph name="DEVICE_TYPE" /> gailuan</translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" /> °F</translation>
 <translation id="7631906263969450674">Markatzailea</translation>
 <translation id="7633755430369750696">Erakutsi Nearby Share-ren ezarpenak.</translation>
diff --git a/ash/strings/ash_strings_fa.xtb b/ash/strings/ash_strings_fa.xtb
index 248dece..184a6ec2 100644
--- a/ash/strings/ash_strings_fa.xtb
+++ b/ash/strings/ash_strings_fa.xtb
@@ -1040,7 +1040,6 @@
 <translation id="7595633564847427181">دوشنبه</translation>
 <translation id="7600875258240007829">دیدن همه اعلان‌ها</translation>
 <translation id="7607002721634913082">متوقف</translation>
-<translation id="7610198039767537854">عکس‌های جدید از حلقه فیلم دوربین تلفنتان را در <ph name="DEVICE_TYPE" /> تماشا کنید</translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" /> درجه فارنهایت</translation>
 <translation id="7631906263969450674">قلم نشان‌گذاری</translation>
 <translation id="7633755430369750696">نمایش تنظیمات «هم‌رسانی با اطراف».</translation>
diff --git a/ash/strings/ash_strings_fi.xtb b/ash/strings/ash_strings_fi.xtb
index 5e2e62b..001e2d6 100644
--- a/ash/strings/ash_strings_fi.xtb
+++ b/ash/strings/ash_strings_fi.xtb
@@ -1039,7 +1039,6 @@
 <translation id="7595633564847427181">Ma</translation>
 <translation id="7600875258240007829">Näytä kaikki ilmoitukset</translation>
 <translation id="7607002721634913082">Keskeytetty</translation>
-<translation id="7610198039767537854">Katsele viimeisimpiä kuvia puhelimesi kameran rullasta tällä: <ph name="DEVICE_TYPE" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" /> °F</translation>
 <translation id="7631906263969450674">Tussi</translation>
 <translation id="7633755430369750696">Näytä lähijakamisen asetukset.</translation>
diff --git a/ash/strings/ash_strings_fil.xtb b/ash/strings/ash_strings_fil.xtb
index d530cbd..4f6a7073 100644
--- a/ash/strings/ash_strings_fil.xtb
+++ b/ash/strings/ash_strings_fil.xtb
@@ -1040,7 +1040,6 @@
 <translation id="7595633564847427181">L</translation>
 <translation id="7600875258240007829">Tingnan ang lahat ng notification</translation>
 <translation id="7607002721634913082">I-pause</translation>
-<translation id="7610198039767537854">Tingnan ang mga kamakailang larawan mula sa camera roll ng iyong telepono sa <ph name="DEVICE_TYPE" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7631906263969450674">Marker pen</translation>
 <translation id="7633755430369750696">Ipakita ang mga setting ng Nearby Share.</translation>
diff --git a/ash/strings/ash_strings_fr-CA.xtb b/ash/strings/ash_strings_fr-CA.xtb
index 91ba180..58358e5 100644
--- a/ash/strings/ash_strings_fr-CA.xtb
+++ b/ash/strings/ash_strings_fr-CA.xtb
@@ -1040,7 +1040,6 @@
 <translation id="7595633564847427181">L</translation>
 <translation id="7600875258240007829">Afficher toutes les notifications</translation>
 <translation id="7607002721634913082">Interrompu</translation>
-<translation id="7610198039767537854">Affichez les photos récentes de la pellicule de votre téléphone sur <ph name="DEVICE_TYPE" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" /> °F</translation>
 <translation id="7631906263969450674">Marqueur</translation>
 <translation id="7633755430369750696">Afficher les paramètres de partage à proximité.</translation>
diff --git a/ash/strings/ash_strings_fr.xtb b/ash/strings/ash_strings_fr.xtb
index b4465494..ebb3a4dc 100644
--- a/ash/strings/ash_strings_fr.xtb
+++ b/ash/strings/ash_strings_fr.xtb
@@ -1040,7 +1040,6 @@
 <translation id="7595633564847427181">L</translation>
 <translation id="7600875258240007829">Afficher toutes les notifications</translation>
 <translation id="7607002721634913082">Suspendu</translation>
-<translation id="7610198039767537854">Afficher les photos récentes de la pellicule de votre téléphone sur <ph name="DEVICE_TYPE" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" /> °F</translation>
 <translation id="7631906263969450674">Stylo marqueur</translation>
 <translation id="7633755430369750696">Afficher les paramètres du Partage à proximité.</translation>
diff --git a/ash/strings/ash_strings_gl.xtb b/ash/strings/ash_strings_gl.xtb
index 296aee8..56886bd8 100644
--- a/ash/strings/ash_strings_gl.xtb
+++ b/ash/strings/ash_strings_gl.xtb
@@ -1041,7 +1041,6 @@
 <translation id="7595633564847427181">L</translation>
 <translation id="7600875258240007829">Ver todas as notificacións</translation>
 <translation id="7607002721634913082">En pausa</translation>
-<translation id="7610198039767537854">Mira as fotos recentes do carrete do teu teléfono neste dispositivo: <ph name="DEVICE_TYPE" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" /> °F</translation>
 <translation id="7631906263969450674">Lapis marcador</translation>
 <translation id="7633755430369750696">Mostrar a configuración da función Compartir por Nearby.</translation>
diff --git a/ash/strings/ash_strings_gu.xtb b/ash/strings/ash_strings_gu.xtb
index 37a84eb..7e9cdac 100644
--- a/ash/strings/ash_strings_gu.xtb
+++ b/ash/strings/ash_strings_gu.xtb
@@ -1040,7 +1040,6 @@
 <translation id="7595633564847427181">સો</translation>
 <translation id="7600875258240007829">બધા નોટિફિકેશન જુઓ</translation>
 <translation id="7607002721634913082">થોભાવેલું</translation>
-<translation id="7610198039767537854">તમારા ફોનના કૅમેરા રોલમાંથી <ph name="DEVICE_TYPE" /> પર તાજેતરના ફોટા જુઓ</translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7631906263969450674">માર્કર પેન</translation>
 <translation id="7633755430369750696">નજીકના શેર સેટિંગ બતાવો.</translation>
diff --git a/ash/strings/ash_strings_hi.xtb b/ash/strings/ash_strings_hi.xtb
index 3c0ce2c..2cf7196 100644
--- a/ash/strings/ash_strings_hi.xtb
+++ b/ash/strings/ash_strings_hi.xtb
@@ -1041,7 +1041,6 @@
 <translation id="7595633564847427181">सोम</translation>
 <translation id="7600875258240007829">सभी सूचनाएं देखें</translation>
 <translation id="7607002721634913082">रोका गया</translation>
-<translation id="7610198039767537854"><ph name="DEVICE_TYPE" /> पर अपने फ़ोन के कैमरा रोल से हाल ही की फ़ोटो देखें</translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° फ़ैरनहाइट</translation>
 <translation id="7631906263969450674">मार्कर पेन</translation>
 <translation id="7633755430369750696">आस-पास शेयर करने की सेटिंग दिखाएं.</translation>
diff --git a/ash/strings/ash_strings_hr.xtb b/ash/strings/ash_strings_hr.xtb
index 26ca5f24..df76201 100644
--- a/ash/strings/ash_strings_hr.xtb
+++ b/ash/strings/ash_strings_hr.xtb
@@ -1040,7 +1040,6 @@
 <translation id="7595633564847427181">pon</translation>
 <translation id="7600875258240007829">Pogledajte sve obavijesti</translation>
 <translation id="7607002721634913082">Pauzirano</translation>
-<translation id="7610198039767537854">Pregledajte nove snimljene fotografije s telefona na uređaju <ph name="DEVICE_TYPE" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7631906263969450674">Marker</translation>
 <translation id="7633755430369750696">Prikaži postavke dijeljenja u blizini.</translation>
diff --git a/ash/strings/ash_strings_hu.xtb b/ash/strings/ash_strings_hu.xtb
index 255f94f1..f9493a7e 100644
--- a/ash/strings/ash_strings_hu.xtb
+++ b/ash/strings/ash_strings_hu.xtb
@@ -1041,7 +1041,6 @@
 <translation id="7595633564847427181">H</translation>
 <translation id="7600875258240007829">Összes értesítés megtekintése</translation>
 <translation id="7607002721634913082">Szünet</translation>
-<translation id="7610198039767537854">A telefon galériájában lévő legutóbbi fotók megtekintése itt: <ph name="DEVICE_TYPE" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />°F</translation>
 <translation id="7631906263969450674">Filctoll</translation>
 <translation id="7633755430369750696">A Közeli megosztás funkció beállításainak megjelenítése.</translation>
diff --git a/ash/strings/ash_strings_hy.xtb b/ash/strings/ash_strings_hy.xtb
index 0ecebcb..0336a73 100644
--- a/ash/strings/ash_strings_hy.xtb
+++ b/ash/strings/ash_strings_hy.xtb
@@ -1040,7 +1040,6 @@
 <translation id="7595633564847427181">Ե</translation>
 <translation id="7600875258240007829">Տեսնել բոլոր ծանուցումները</translation>
 <translation id="7607002721634913082">Դադարեցված է</translation>
-<translation id="7610198039767537854">Դիտեք վերջերս արված լուսանկարները ձեր հեռախոսի ֆոտոժապավենից <ph name="DEVICE_TYPE" /> սարքում</translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7631906263969450674">Ֆլոմաստեր</translation>
 <translation id="7633755430369750696">Ցուցադրել «Փոխանակում մոտակա սարքերի հետ» գործառույթի կարգավորումները։</translation>
diff --git a/ash/strings/ash_strings_id.xtb b/ash/strings/ash_strings_id.xtb
index 4f57b98b..170f3c0 100644
--- a/ash/strings/ash_strings_id.xtb
+++ b/ash/strings/ash_strings_id.xtb
@@ -1040,7 +1040,6 @@
 <translation id="7595633564847427181">S</translation>
 <translation id="7600875258240007829">Lihat semua notifikasi</translation>
 <translation id="7607002721634913082">Dijeda</translation>
-<translation id="7610198039767537854">Lihat foto terbaru dari rol kamera ponsel di <ph name="DEVICE_TYPE" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" /> °F</translation>
 <translation id="7631906263969450674">Pena penanda</translation>
 <translation id="7633755430369750696">Tampilkan setelan Berbagi Langsung.</translation>
diff --git a/ash/strings/ash_strings_is.xtb b/ash/strings/ash_strings_is.xtb
index f15701a..8b151a2 100644
--- a/ash/strings/ash_strings_is.xtb
+++ b/ash/strings/ash_strings_is.xtb
@@ -1040,7 +1040,6 @@
 <translation id="7595633564847427181">M</translation>
 <translation id="7600875258240007829">Sjá allar tilkynningar</translation>
 <translation id="7607002721634913082">Hlé</translation>
-<translation id="7610198039767537854">Skoða nýlegar myndir í myndavélarmöppu símans í <ph name="DEVICE_TYPE" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7631906263969450674">Merkipenni</translation>
 <translation id="7633755430369750696">Sýna stillingar nærdeilingar.</translation>
diff --git a/ash/strings/ash_strings_it.xtb b/ash/strings/ash_strings_it.xtb
index 3db56453..04bbdb82 100644
--- a/ash/strings/ash_strings_it.xtb
+++ b/ash/strings/ash_strings_it.xtb
@@ -1038,7 +1038,6 @@
 <translation id="7595633564847427181">L</translation>
 <translation id="7600875258240007829">Visualizza tutte le notifiche</translation>
 <translation id="7607002721634913082">In pausa</translation>
-<translation id="7610198039767537854">Visualizza le foto recenti del rullino del telefono su <ph name="DEVICE_TYPE" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" /> °F</translation>
 <translation id="7631906263969450674">Evidenziatore</translation>
 <translation id="7633755430369750696">Mostra impostazioni di Condivisione nelle vicinanze.</translation>
diff --git a/ash/strings/ash_strings_iw.xtb b/ash/strings/ash_strings_iw.xtb
index b0e31b6..b9322c2 100644
--- a/ash/strings/ash_strings_iw.xtb
+++ b/ash/strings/ash_strings_iw.xtb
@@ -1042,7 +1042,6 @@
 <translation id="7595633564847427181">ב</translation>
 <translation id="7600875258240007829">הצגת כל ההתראות</translation>
 <translation id="7607002721634913082">ההורדה בהשהיה</translation>
-<translation id="7610198039767537854">התמונות האחרונות מזיכרון המצלמה של הטלפון יוצגו ב-<ph name="DEVICE_TYPE" /></translation>
 <translation id="7624117708979618027">‎<ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7631906263969450674">עט סימון</translation>
 <translation id="7633755430369750696">הצגה של הרשאות שיתוף בקרבת מקום.</translation>
diff --git a/ash/strings/ash_strings_ja.xtb b/ash/strings/ash_strings_ja.xtb
index 9053d08b..51ba90b 100644
--- a/ash/strings/ash_strings_ja.xtb
+++ b/ash/strings/ash_strings_ja.xtb
@@ -1041,7 +1041,6 @@
 <translation id="7595633564847427181">月</translation>
 <translation id="7600875258240007829">通知をすべて表示</translation>
 <translation id="7607002721634913082">一時停止中</translation>
-<translation id="7610198039767537854"><ph name="DEVICE_TYPE" /> でスマートフォンのカメラロールに保存されている最近の写真を表示する</translation>
 <translation id="7624117708979618027">華氏 <ph name="TEMPERATURE_F" /> 度</translation>
 <translation id="7631906263969450674">マーカーペン</translation>
 <translation id="7633755430369750696">ニアバイシェア設定を表示します。</translation>
diff --git a/ash/strings/ash_strings_ka.xtb b/ash/strings/ash_strings_ka.xtb
index 67bc4b2..d68ab491 100644
--- a/ash/strings/ash_strings_ka.xtb
+++ b/ash/strings/ash_strings_ka.xtb
@@ -1040,7 +1040,6 @@
 <translation id="7595633564847427181">ო</translation>
 <translation id="7600875258240007829">ყველა შეტყობინების ნახვა</translation>
 <translation id="7607002721634913082">დაპაუზებული</translation>
-<translation id="7610198039767537854">იხილეთ <ph name="DEVICE_TYPE" />-ზე თქვენი ბოლოდროინდელი ფოტოები ტელეფონის კამერის ალბომიდან</translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />°F</translation>
 <translation id="7631906263969450674">მარკერის კალამი</translation>
 <translation id="7633755430369750696">მახლობლად გაზიარების პარამეტრების ჩვენება.</translation>
diff --git a/ash/strings/ash_strings_kk.xtb b/ash/strings/ash_strings_kk.xtb
index 1a5ccd8e..2ddef13 100644
--- a/ash/strings/ash_strings_kk.xtb
+++ b/ash/strings/ash_strings_kk.xtb
@@ -1040,7 +1040,6 @@
 <translation id="7595633564847427181">Д</translation>
 <translation id="7600875258240007829">Барлық хабарландыруды көру</translation>
 <translation id="7607002721634913082">Кідіртілген</translation>
-<translation id="7610198039767537854"><ph name="DEVICE_TYPE" /> құрылғысындағы камераның суреттер қалтасынан жақында түсірілген фотосуреттерді көре аласыз.</translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7631906263969450674">Фломастер</translation>
 <translation id="7633755430369750696">Nearby Share параметрлерін көрсету.</translation>
diff --git a/ash/strings/ash_strings_km.xtb b/ash/strings/ash_strings_km.xtb
index 8b90878..4c7c290 100644
--- a/ash/strings/ash_strings_km.xtb
+++ b/ash/strings/ash_strings_km.xtb
@@ -1040,7 +1040,6 @@
 <translation id="7595633564847427181">ច</translation>
 <translation id="7600875258240007829">មើល​ការជូនដំណឹង​ទាំងអស់</translation>
 <translation id="7607002721634913082">បានផ្អាក</translation>
-<translation id="7610198039767537854">មើលរូបថតថ្មីៗពីរបុំកាមេរ៉ាទូរសព្ទរបស់អ្នកនៅលើ <ph name="DEVICE_TYPE" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7631906263969450674">ប៊ិកហ្វឺត</translation>
 <translation id="7633755430369750696">បង្ហាញ​ការកំណត់​ការចែករំលែកនៅជិត។</translation>
diff --git a/ash/strings/ash_strings_kn.xtb b/ash/strings/ash_strings_kn.xtb
index da16526..f441076 100644
--- a/ash/strings/ash_strings_kn.xtb
+++ b/ash/strings/ash_strings_kn.xtb
@@ -1041,7 +1041,6 @@
 <translation id="7595633564847427181">ಸೋ</translation>
 <translation id="7600875258240007829">ಎಲ್ಲಾ ಅಧಿಸೂಚನೆಗಳನ್ನು ನೋಡಿ</translation>
 <translation id="7607002721634913082">ವಿರಾಮದಲ್ಲಿದೆ</translation>
-<translation id="7610198039767537854"><ph name="DEVICE_TYPE" /> ನಲ್ಲಿ ನಿಮ್ಮ ಫೋನ್‌ನ ಕ್ಯಾಮರಾ ರೋಲ್‌ನಿಂದ ಇತ್ತೀಚಿನ ಫೋಟೋಗಳನ್ನು ವೀಕ್ಷಿಸಿ</translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7631906263969450674">ಮಾರ್ಕರ್ ಪೆನ್</translation>
 <translation id="7633755430369750696">Nearby ಶೇರ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ತೋರಿಸಿ.</translation>
diff --git a/ash/strings/ash_strings_ko.xtb b/ash/strings/ash_strings_ko.xtb
index 24ba9d6..e536716 100644
--- a/ash/strings/ash_strings_ko.xtb
+++ b/ash/strings/ash_strings_ko.xtb
@@ -1040,7 +1040,6 @@
 <translation id="7595633564847427181">월</translation>
 <translation id="7600875258240007829">모든 알림 보기</translation>
 <translation id="7607002721634913082">일시중지됨</translation>
-<translation id="7610198039767537854"><ph name="DEVICE_TYPE" />에서 휴대전화 카메라 롤의 최근 사진을 봅니다.</translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />°F</translation>
 <translation id="7631906263969450674">마커 펜</translation>
 <translation id="7633755430369750696">Nearby Share 설정 표시</translation>
diff --git a/ash/strings/ash_strings_ky.xtb b/ash/strings/ash_strings_ky.xtb
index 3229efb..f96f9a0 100644
--- a/ash/strings/ash_strings_ky.xtb
+++ b/ash/strings/ash_strings_ky.xtb
@@ -1040,7 +1040,6 @@
 <translation id="7595633564847427181">Дү</translation>
 <translation id="7600875258240007829">Бардык билдирмелерди көрүү</translation>
 <translation id="7607002721634913082">Бир азга токтотулду</translation>
-<translation id="7610198039767537854">Телефонуңуз менен тартылган акыркы сүрөттөрдү <ph name="DEVICE_TYPE" /> түзмөгүндө көрүңүз</translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7631906263969450674">Белгилегичтин калемсабы</translation>
 <translation id="7633755430369750696">Nearby Share жөндөөлөрү көрүнсүн.</translation>
diff --git a/ash/strings/ash_strings_lo.xtb b/ash/strings/ash_strings_lo.xtb
index 3f2fe01..dcea424 100644
--- a/ash/strings/ash_strings_lo.xtb
+++ b/ash/strings/ash_strings_lo.xtb
@@ -1040,7 +1040,6 @@
 <translation id="7595633564847427181">ຈ</translation>
 <translation id="7600875258240007829">ເບິ່ງການແຈ້ງເຕືອນທັງໝົດ</translation>
 <translation id="7607002721634913082">ຢຸດແລ້ວ</translation>
-<translation id="7610198039767537854">ເບິ່ງຮູບພາບຫຼ້າສຸດໃນຮູບຈາກອະລະບໍ້າກ້ອງຂອງໂທລະສັບທ່ານຢູ່ <ph name="DEVICE_TYPE" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7631906263969450674">ບິກມາກເກີ</translation>
 <translation id="7633755430369750696">ສະແດງການຕັ້ງຄ່າການແບ່ງປັນໃກ້ຄຽງ.</translation>
diff --git a/ash/strings/ash_strings_lt.xtb b/ash/strings/ash_strings_lt.xtb
index e8259ac..6d7ecc6e 100644
--- a/ash/strings/ash_strings_lt.xtb
+++ b/ash/strings/ash_strings_lt.xtb
@@ -1040,7 +1040,6 @@
 <translation id="7595633564847427181">P</translation>
 <translation id="7600875258240007829">Žr. visus pranešimus</translation>
 <translation id="7607002721634913082">Pristabdyta</translation>
-<translation id="7610198039767537854">Peržiūrėkite naujausias nuotraukas iš telefono fotoaparato aplanko „<ph name="DEVICE_TYPE" />“ įrenginyje</translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" /> °F</translation>
 <translation id="7631906263969450674">Žymeklis</translation>
 <translation id="7633755430369750696">Rodyti bendrinimo netoliese nustatymus.</translation>
diff --git a/ash/strings/ash_strings_lv.xtb b/ash/strings/ash_strings_lv.xtb
index a217c8f..4b8d5d0 100644
--- a/ash/strings/ash_strings_lv.xtb
+++ b/ash/strings/ash_strings_lv.xtb
@@ -1040,7 +1040,6 @@
 <translation id="7595633564847427181">P</translation>
 <translation id="7600875258240007829">Skatīt visus paziņojumus</translation>
 <translation id="7607002721634913082">Apturēta</translation>
-<translation id="7610198039767537854">Skatiet pēdējos fotoattēlus no sava tālruņa kameras fotoalbuma šajā ierīcē: <ph name="DEVICE_TYPE" />.</translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7631906263969450674">Flomāsters</translation>
 <translation id="7633755430369750696">Rādīt funkcijas “Kopīgošana tuvumā” iestatījumus.</translation>
diff --git a/ash/strings/ash_strings_mk.xtb b/ash/strings/ash_strings_mk.xtb
index 3808d1f8..b84756d 100644
--- a/ash/strings/ash_strings_mk.xtb
+++ b/ash/strings/ash_strings_mk.xtb
@@ -1041,7 +1041,6 @@
 <translation id="7595633564847427181">По</translation>
 <translation id="7600875258240007829">Видете ги сите известувања</translation>
 <translation id="7607002721634913082">Паузирано</translation>
-<translation id="7610198039767537854">Прегледајте ги неодамнешните фотографии од лентата на камерата на вашиот телефон на <ph name="DEVICE_TYPE" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7631906263969450674">Пенкало за означување</translation>
 <translation id="7633755430369750696">Прикажи поставки за „Споделување во близина“.</translation>
diff --git a/ash/strings/ash_strings_ml.xtb b/ash/strings/ash_strings_ml.xtb
index e9638a6..2974db4 100644
--- a/ash/strings/ash_strings_ml.xtb
+++ b/ash/strings/ash_strings_ml.xtb
@@ -1040,7 +1040,6 @@
 <translation id="7595633564847427181">M</translation>
 <translation id="7600875258240007829">എല്ലാ അറിയിപ്പുകളും കാണുക</translation>
 <translation id="7607002721634913082">അല്പംനിര്‍ത്തി</translation>
-<translation id="7610198039767537854"><ph name="DEVICE_TYPE" /> എന്നതിൽ നിങ്ങളുടെ ഫോണിന്റെ ക്യാമറ റോളിലുള്ള സമീപകാല ഫോട്ടോകൾ കാണുക</translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7631906263969450674">മാർക്കർ പേന</translation>
 <translation id="7633755430369750696">'സമീപമുള്ള പങ്കിടൽ' ക്രമീകരണം കാണിക്കുക.</translation>
diff --git a/ash/strings/ash_strings_mn.xtb b/ash/strings/ash_strings_mn.xtb
index 6359c31..66b43e1f 100644
--- a/ash/strings/ash_strings_mn.xtb
+++ b/ash/strings/ash_strings_mn.xtb
@@ -1041,7 +1041,6 @@
 <translation id="7595633564847427181">Да</translation>
 <translation id="7600875258240007829">Бүх мэдэгдлийг харах</translation>
 <translation id="7607002721634913082">зогссон</translation>
-<translation id="7610198039767537854"><ph name="DEVICE_TYPE" /> дээр утасныхаа камераар авсан зургийн цомгоос саяхны зургуудыг үзнэ үү</translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7631906263969450674">Тэмдэглэгээний үзэг</translation>
 <translation id="7633755430369750696">Ойролцоо хуваалцах тохиргоог харуулна.</translation>
diff --git a/ash/strings/ash_strings_mr.xtb b/ash/strings/ash_strings_mr.xtb
index 5fda2e4..d31d164 100644
--- a/ash/strings/ash_strings_mr.xtb
+++ b/ash/strings/ash_strings_mr.xtb
@@ -1040,7 +1040,6 @@
 <translation id="7595633564847427181">सो</translation>
 <translation id="7600875258240007829">सर्व सूचना पहा</translation>
 <translation id="7607002721634913082">विराम द्या</translation>
-<translation id="7610198039767537854"><ph name="DEVICE_TYPE" /> वर तुमच्या फोनच्या कॅमेरा रोलमधून अलीकडील फोटो पहा</translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° फॅ</translation>
 <translation id="7631906263969450674">मार्कर पेन</translation>
 <translation id="7633755430369750696">Nearby सह शेअरिंग सेटिंग्ज दाखवा.</translation>
diff --git a/ash/strings/ash_strings_ms.xtb b/ash/strings/ash_strings_ms.xtb
index 10cb16e..aa0e4ed0 100644
--- a/ash/strings/ash_strings_ms.xtb
+++ b/ash/strings/ash_strings_ms.xtb
@@ -1041,7 +1041,6 @@
 <translation id="7595633564847427181">I</translation>
 <translation id="7600875258240007829">Lihat semua pemberitahuan</translation>
 <translation id="7607002721634913082">Dijeda</translation>
-<translation id="7610198039767537854">Lihat foto baru-baru ini daripada gulungan kamera telefon anda pada <ph name="DEVICE_TYPE" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7631906263969450674">Pen penanda</translation>
 <translation id="7633755430369750696">Paparkan tetapan Kongsi Berdekatan.</translation>
diff --git a/ash/strings/ash_strings_my.xtb b/ash/strings/ash_strings_my.xtb
index d2184b5..0b0ab8b9 100644
--- a/ash/strings/ash_strings_my.xtb
+++ b/ash/strings/ash_strings_my.xtb
@@ -1040,7 +1040,6 @@
 <translation id="7595633564847427181">M</translation>
 <translation id="7600875258240007829">အကြောင်းကြားချက်အားလုံးကို ကြည့်ရန်</translation>
 <translation id="7607002721634913082">ဆိုင်းငံ့ထား</translation>
-<translation id="7610198039767537854"><ph name="DEVICE_TYPE" /> ရှိ သင့်ဖုန်းကင်မရာရိုးလ်မှ လတ်တလောဓာတ်ပုံများကို ကြည့်နိုင်သည်</translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7631906263969450674">အမှတ်အသားပြုမင်တံ</translation>
 <translation id="7633755430369750696">'အနီးတစ်ဝိုက် မျှဝေခြင်း' ဆက်တင်များ ပြပေးသည်။</translation>
diff --git a/ash/strings/ash_strings_ne.xtb b/ash/strings/ash_strings_ne.xtb
index 543e8a4..bd68583 100644
--- a/ash/strings/ash_strings_ne.xtb
+++ b/ash/strings/ash_strings_ne.xtb
@@ -138,6 +138,7 @@
 <translation id="1747827819627189109">अन-स्क्रिन किबोर्ड सक्षम गरियो</translation>
 <translation id="1749109475624620922">सबै डेस्कमा "<ph name="WINDOW_TITLE" />" विन्डो असाइन गरिएको छ।</translation>
 <translation id="1750088060796401187">बढीमा <ph name="MAX_DESK_LIMIT" /> वटा डेस्क मात्र खोल्न मिल्छ। तपाईं नयाँ डेस्क खोल्न चाहनुहुन्छ भने कुनै डेस्क हटाउनुहोस्।</translation>
+<translation id="1756833229520115364">टेम्प्लेट सेभ गर्न सकिएन। अत्यन्त धेरै विन्डो वा ट्याबहरू सेभ गरिएका छन्।</translation>
 <translation id="1761222317188459878">नेटवर्क जडान टगल गर्नुहोस्। <ph name="STATE_TEXT" /></translation>
 <translation id="1768366657309696705"><ph name="LAUNCHER_KEY_NAME" /> + पिरियड किबोर्ड सर्टकट परिवर्तन गरिएको छ। Insert की प्रयोग गर्न <ph name="LAUNCHER_KEY_NAME" /> की + Shift + Backspace थिच्नुहोस्।</translation>
 <translation id="1770726142253415363">यो एप सारेर रो <ph name="ROW_NUMBER" />, कलम <ph name="COLUMN_NUMBER" /> मा लगिएको छ।</translation>
@@ -188,6 +189,7 @@
 <translation id="2079545284768500474">अन्डू गर्नुहोस्</translation>
 <translation id="2083190527011054446">नमस्ते <ph name="GIVEN_NAME" />,</translation>
 <translation id="209965399369889474">नेटवर्कमा जोडिएको छैन</translation>
+<translation id="2107914222138020205">तपाईंको USB-C केबल Thunderbolt मा जोड्न मिल्दैन। डिभाइस राम्ररी नचल्न सक्छ।</translation>
 <translation id="2108303511227308752">Alt + Backspace किबोर्ड सर्टकट परिवर्तन गरिएको छ। Delete की प्रयोग गर्न <ph name="LAUNCHER_KEY_NAME" /> की + Backspace थिच्नुहोस्।</translation>
 <translation id="211328683600082144">माइक्रोफोन अन गर्नुहोस्</translation>
 <translation id="2126242104232412123">नयाँ डेस्क</translation>
@@ -291,6 +293,8 @@
 <translation id="2865888419503095837">नेटवर्क सम्बन्धी जानकारी</translation>
 <translation id="2872961005593481000">बन्द गर्नुहोस्</translation>
 <translation id="2878884018241093801">हालसालैको कुनै पनि वस्तु छैन</translation>
+<translation id="2891209721153296020">"चयन रद्द गर"</translation>
+<translation id="2894949423239620203">केबल जोडेपछि पर्फर्मेन्समा प्रभाव पर्न सक्छ</translation>
 <translation id="2903844815300039659"><ph name="NAME" />, <ph name="STRENGTH" /> मा कनेक्ट गरियो</translation>
 <translation id="2914580577416829331">स्क्रिनका फोटोहरू</translation>
 <translation id="2941112035454246133">निम्न</translation>
@@ -436,6 +440,7 @@
 <translation id="3702846122927433391">नाइजेरियाको जनसङ्ख्या कति छ</translation>
 <translation id="3705722231355495246">-</translation>
 <translation id="3708186454126126312">यसअघि कनेक्ट गरिएका डिभाइस</translation>
+<translation id="3712317119236351467">रेकर्डिङ सेभ गर्न सकिएन</translation>
 <translation id="371370241367527062">अगाडिको माइक्रोफोन</translation>
 <translation id="3713734891607377840">डाउनलोड भएपछि खुल्ने छ</translation>
 <translation id="3726171378575546917">यो डिभाइसमा <ph name="UNAVAILABLE_APPS_ONE" />, <ph name="UNAVAILABLE_APPS_TWO" /> र <ph name="UNAVAILABLE_APPS_COUNT" /> उपलब्ध छैनन्।</translation>
@@ -495,8 +500,10 @@
 <translation id="4112140312785995938">पछाडि जानुहोस्</translation>
 <translation id="4114315158543974537">फोन हब अन गर्नुहोस्</translation>
 <translation id="412298498316631026">विन्डो</translation>
+<translation id="4123259114412175274">तपाईं आफ्नो Chromebook अनलक गर्न चाहनुहुन्छ भने आफ्नो फोनको ब्लुटुथ अन छ भन्ने कुरा सुनिश्चित गर्नुहोस्</translation>
 <translation id="4129129681837227511">आफ्नो लक स्क्रिनमा सूचनाहरू हेर्नका लागि सेटिङहरू परिवर्तन गर्न अनलक गर्नुहोस्</translation>
 <translation id="4146833061457621061">सङ्गीत प्ले गर्नुहोस्</translation>
+<translation id="4165275524535002941">यो केबल डिस्प्लेहरूमा जोड्न मिल्दैन</translation>
 <translation id="4173958948577803258">बिही</translation>
 <translation id="4177913004758410636">{0,plural, =1{एक दिनभित्र डिभाइस रिस्टार्ट गर्नुहोस्}other{# दिनभित्र डिभाइस रिस्टार्ट गर्नुहोस्}}</translation>
 <translation id="4181841719683918333">भाषाहरू</translation>
@@ -598,6 +605,7 @@
 <translation id="4690510401873698237">सेल्फ पुछारमा छ</translation>
 <translation id="4696813013609194136">अभिभावकको कोडमार्फत डिभाइस अनलक गर्नुहोस्</translation>
 <translation id="4702647871202761252">गोपनीयताको स्क्रिन निष्क्रिय छ</translation>
+<translation id="4717575069099566988">तपाईंको USB-C केबल USB4 मा जोड्न मिल्दैन। डिभाइस राम्ररी नचल्न सक्छ।</translation>
 <translation id="4730374152663651037">प्रायः जसो प्रयोग गरिने एपहरू</translation>
 <translation id="4731797938093519117">अभिभावकको पहुँच</translation>
 <translation id="4733161265940833579"><ph name="BATTERY_PERCENTAGE" />% (बायाँ)</translation>
@@ -737,6 +745,7 @@
 <translation id="5682642926269496722">हालको प्रयोगकर्ताको खातामा Google सहायक उपलब्ध छैन।</translation>
 <translation id="5689633613396158040">रात्रि प्रकाशले मधुरो प्रकाशमा आफ्नो स्क्रिनमा हेर्न वा पढ्न अझ सजिलो बनाउँछ। रात्रि प्रकाश सक्रिय हुने समय परिवर्तन गर्न वा यसलाई पूर्ण रूपमा निष्क्रिय पार्न ट्याप गर्नुहोस्।</translation>
 <translation id="5691772641933328258">फिंगरप्रिन्ट पहिचान गरिएन</translation>
+<translation id="5707775774148071965">तपाईंको केबलको तुलनामा तपाईंको डिभाइसमा उच्च गतिमा डेटा ट्रान्सफर हुन्छ। डिभाइस राम्ररी नचल्न सक्छ।</translation>
 <translation id="5710450975648804523">बाधा नपुर्‍याउनुहोस् नामक सेवा सक्रिय छ</translation>
 <translation id="571295407079589142">मोबाइल डेटा अफ गरियो</translation>
 <translation id="573413375004481890">यो यन्त्रले तपाईंको कुनै पनि डिस्प्ले समर्थन गर्न सकेन, त्यसैले एउटाको जडान विच्छेद गरियो</translation>
@@ -788,6 +797,7 @@
 <translation id="6022924867608035986">खोजबाकसको पाठ खाली गर्नुहोस्</translation>
 <translation id="602472752137106327">सबै डेस्कमा भएका विन्डोहरू देखाइयोस्, रेडियो बटन चयन गरियो</translation>
 <translation id="6025324406281560198"><ph name="SECURITY_STATUS" />, <ph name="CONNECTION_STATUS" />, सिग्नलको क्षमता <ph name="SIGNAL_STRENGTH" />, तपाईंका प्रशासकले व्यवस्थित गर्नुभएको छ</translation>
+<translation id="6027518778343897451"><ph name="CURRENT_MONTH_DAY" /> मा कुनै पनि कार्यक्रम छैन। तपाईं ब्राउजरमा Google पात्रो खोल्न चाहनुहुन्छ भने इन्टर की थिच्नुहोस्।</translation>
 <translation id="6030495522958826102">मेनु सारेर स्क्रिनको फेदको बायाँ कुनामा लगियो।</translation>
 <translation id="6032620807120418574">फुल स्क्रिनमा रेकर्ड गर्न कुनै पनि ठाउँमा क्लिक गर्नुहोस्</translation>
 <translation id="6040071906258664830">माइक्रोफोन प्रयोग गरी रेकर्ड गर्ने सुविधा <ph name="STATE" /> छ</translation>
@@ -866,6 +876,7 @@
 <translation id="6570831796530454248">{0,plural, =1{एक घण्टाभित्र डिभाइस रिस्टार्ट गर्नुहोस्}other{# घण्टाभित्र डिभाइस रिस्टार्ट गर्नुहोस्}}</translation>
 <translation id="6570902864550063460">USB मार्फत चार्ज गरिँदै छ</translation>
 <translation id="6574587113394758819">सुरक्षित रूपमा हेर्ने सुविधा अन गरिएको हुनाले <ph name="APP_TITLE" /> सम्बन्धी सूचना लुकाइएको छ</translation>
+<translation id="6574622320167699133">तपाईंको फोनमार्फत अनलक गरिएको। तपाईं Chromebook खोल्न चाहनुहुन्छ भने ट्याप गर्नुहोस् वा क्लिक गर्नुहोस्।</translation>
 <translation id="6578407462441924264">नामविहीन</translation>
 <translation id="6585808820553845416">सत्र <ph name="SESSION_TIME_REMAINING" /> मा समाप्त हुन्छ।</translation>
 <translation id="6593850935013518327"><ph name="PRIMARY_TEXT" />, <ph name="SECONDARY_TEXT" /></translation>
@@ -1029,7 +1040,6 @@
 <translation id="7595633564847427181">सोम</translation>
 <translation id="7600875258240007829">सबै सूचनाहरू हेर्नुहोस्</translation>
 <translation id="7607002721634913082">रोकिएको छ</translation>
-<translation id="7610198039767537854">आफ्नो क्यामेरा रोलका हालसालैका फोटोहरू <ph name="DEVICE_TYPE" /> मा हेर्नुहोस्</translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7631906263969450674">मार्कर पेन</translation>
 <translation id="7633755430369750696">नजिकैका डिभाइससँग सेयर गर्ने सुविधासम्बन्धी सेटिङ देखाउनुहोस्।</translation>
@@ -1040,7 +1050,9 @@
 <translation id="7649070708921625228">मद्दत</translation>
 <translation id="7654687942625752712">बोलीसम्बन्धी प्रतिक्रियाहरू असक्षम पार्न दुवै भोल्युम कुञ्जीहरूलाई पाँच सेकेन्डसम्म थिचिराख्नुहोस्।</translation>
 <translation id="7658239707568436148">रद्द गर्नुहोस्</translation>
+<translation id="7660160718439869192">तपाईंको <ph name="NAME" /> <ph name="EMAIL" /> मा लिंक गरिएका डिभाइसहरूमा देखिने छ</translation>
 <translation id="7662283695561029522">कन्फिगर गर्न ट्याप गर्नुहोस्</translation>
+<translation id="7670953955701272011">Google पात्रोमा यो मिति खोल्नुहोस्</translation>
 <translation id="7671610481353807627">एपहरू रङअनुसार क्रमबद्ध गरिन्छन्</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7714767791242455379">नयाँ मोबाइल नेटवर्क हाल्नुहोस्</translation>
@@ -1132,6 +1144,7 @@
 <translation id="8236042855478648955">आराम गर्ने समय भयो</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="8248728785693203669">तपाईंको USB-C केबल डिस्प्लेहरूमा राम्रोसँग नजोडिन सक्छ</translation>
 <translation id="8255234195843591763">अपडेट गर्न रिसेट गर्नुहोस्</translation>
 <translation id="826107067893790409"><ph name="USER_EMAIL_ADDRESS" /> का लागि अनलक गर्न Enter थिच्नुहोस्</translation>
 <translation id="8261506727792406068">मेट्नुहोस्</translation>
@@ -1161,6 +1174,7 @@
 <translation id="8428213095426709021">सेटिङहरू</translation>
 <translation id="8433186206711564395">नेटवर्क सम्बन्धी सेटिङहरू</translation>
 <translation id="8433977262951327081">सेल्फमा इनपुट विकल्पहरूको मेनु बबल देखाउने सर्टकट परिवर्तन भएको छ। कृपया <ph name="OLD_SHORTCUT" /> को सट्टामा  <ph name="NEW_SHORTCUT" /> प्रयोग गर्नुहोस्।</translation>
+<translation id="8443879455002739353">"कपी गर"</translation>
 <translation id="8444246603146515890">डेस्क <ph name="DESK_TITILE" /> सक्रिय गरियो</translation>
 <translation id="8446884382197647889">थप जान्नुहोस्</translation>
 <translation id="8456543082656546101"><ph name="SHORTCUT_KEY_NAME" /> + V</translation>
@@ -1228,6 +1242,7 @@
 <translation id="8878886163241303700">स्क्रिनलाई विस्तार गर्दै</translation>
 <translation id="888982883502837004">तपाईंको डिभाइसका हकमा फर्मवेयरसम्बन्धी अपडेटहरू उपलब्ध छन्। तपाईं समीक्षा हेर्न र अपडेट प्राप्त गर्न चाहनुहुन्छ भने क्लिक गर्नुहोस्।</translation>
 <translation id="8896630965521842259"><ph name="DESK_TEMPLATE_NAME" /> सदाका लागि मेटाइने छ</translation>
+<translation id="8905919797434099235">(शीर्षक छैन)</translation>
 <translation id="890616557918890486">स्रोत परिवर्तन गर्नुहोस्</translation>
 <translation id="8909138438987180327">ब्याट्री <ph name="PERCENTAGE" /> प्रतिशत छ।</translation>
 <translation id="8921554779039049422">H+</translation>
diff --git a/ash/strings/ash_strings_nl.xtb b/ash/strings/ash_strings_nl.xtb
index dd0c331..f125f8f5 100644
--- a/ash/strings/ash_strings_nl.xtb
+++ b/ash/strings/ash_strings_nl.xtb
@@ -1037,7 +1037,6 @@
 <translation id="7595633564847427181">M</translation>
 <translation id="7600875258240007829">Alle meldingen bekijken</translation>
 <translation id="7607002721634913082">Onderbroken</translation>
-<translation id="7610198039767537854">Recente foto's van de filmrol van je camera bekijken op <ph name="DEVICE_TYPE" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7631906263969450674">Markeerstift</translation>
 <translation id="7633755430369750696">Instellingen bekijken voor Dichtbij delen.</translation>
diff --git a/ash/strings/ash_strings_no.xtb b/ash/strings/ash_strings_no.xtb
index 9305d8b..1a2c891 100644
--- a/ash/strings/ash_strings_no.xtb
+++ b/ash/strings/ash_strings_no.xtb
@@ -1040,7 +1040,6 @@
 <translation id="7595633564847427181">M</translation>
 <translation id="7600875258240007829">Se alle varslene</translation>
 <translation id="7607002721634913082">Satt på pause</translation>
-<translation id="7610198039767537854">Se nylige bilder fra telefonens kamerarull på <ph name="DEVICE_TYPE" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7631906263969450674">Merkepenn</translation>
 <translation id="7633755430369750696">Vis innstillinger for nærdeling.</translation>
diff --git a/ash/strings/ash_strings_or.xtb b/ash/strings/ash_strings_or.xtb
index 48f0db99..27a2227 100644
--- a/ash/strings/ash_strings_or.xtb
+++ b/ash/strings/ash_strings_or.xtb
@@ -1039,7 +1039,6 @@
 <translation id="7595633564847427181">ସୋ</translation>
 <translation id="7600875258240007829">ସମସ୍ତ ବିଜ୍ଞପ୍ତି ଦେଖନ୍ତୁ</translation>
 <translation id="7607002721634913082">ଅଚଳିତ</translation>
-<translation id="7610198039767537854"><ph name="DEVICE_TYPE" />ରେ ଆପଣଙ୍କ ଫୋନର କ୍ୟାମେରା ରୋଲରୁ ବର୍ତ୍ତମାନର ଫଟୋଗୁଡ଼ିକୁ ଦେଖନ୍ତୁ</translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° ଫାରେନହାଇଟ୍</translation>
 <translation id="7631906263969450674">ମାର୍କର୍ ପେନ୍</translation>
 <translation id="7633755430369750696">Nearby Share ସେଟିଂସ୍ ଦେଖାନ୍ତୁ।</translation>
diff --git a/ash/strings/ash_strings_pa.xtb b/ash/strings/ash_strings_pa.xtb
index 44e412d..3b2c2135 100644
--- a/ash/strings/ash_strings_pa.xtb
+++ b/ash/strings/ash_strings_pa.xtb
@@ -1041,7 +1041,6 @@
 <translation id="7595633564847427181">ਸੋ</translation>
 <translation id="7600875258240007829">ਸਾਰੀਆਂ ਸੂਚਨਾਵਾਂ ਦੇਖੋ</translation>
 <translation id="7607002721634913082">ਰੋਕਿਆ ਗਿਆ</translation>
-<translation id="7610198039767537854"><ph name="DEVICE_TYPE" /> 'ਤੇ ਆਪਣੇ ਫ਼ੋਨ ਦੇ ਕੈਮਰਾ ਰੋਲ ਦੀਆਂ ਹਾਲੀਆ ਫ਼ੋਟੋਆਂ ਦੇਖੋ</translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7631906263969450674">ਮਾਰਕਰ ਪੈੱਨ</translation>
 <translation id="7633755430369750696">'ਨਜ਼ਦੀਕੀ ਸਾਂਝ' ਸੈਟਿੰਗਾਂ ਦਿਖਾਓ।</translation>
diff --git a/ash/strings/ash_strings_pl.xtb b/ash/strings/ash_strings_pl.xtb
index 99703b3..937e523 100644
--- a/ash/strings/ash_strings_pl.xtb
+++ b/ash/strings/ash_strings_pl.xtb
@@ -1039,7 +1039,6 @@
 <translation id="7595633564847427181">P</translation>
 <translation id="7600875258240007829">Zobacz wszystkie powiadomienia</translation>
 <translation id="7607002721634913082">Wstrzymano</translation>
-<translation id="7610198039767537854">Pokazuj najnowsze zdjęcia z rolki z aparatu na telefonie na urządzeniu <ph name="DEVICE_TYPE" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7631906263969450674">Pisak</translation>
 <translation id="7633755430369750696">Pokaż ustawienia Udostępniania w pobliżu.</translation>
diff --git a/ash/strings/ash_strings_pt-BR.xtb b/ash/strings/ash_strings_pt-BR.xtb
index c8554df9..8a7aa11 100644
--- a/ash/strings/ash_strings_pt-BR.xtb
+++ b/ash/strings/ash_strings_pt-BR.xtb
@@ -1040,7 +1040,6 @@
 <translation id="7595633564847427181">S</translation>
 <translation id="7600875258240007829">Ver todas as notificações</translation>
 <translation id="7607002721634913082">Pausado</translation>
-<translation id="7610198039767537854">Veja as fotos recentes do rolo da câmera do smartphone no <ph name="DEVICE_TYPE" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" /> °F</translation>
 <translation id="7631906263969450674">Marcador</translation>
 <translation id="7633755430369750696">Mostrar configurações de Compartilhar por proximidade.</translation>
diff --git a/ash/strings/ash_strings_pt-PT.xtb b/ash/strings/ash_strings_pt-PT.xtb
index c03e2034..0a9b912 100644
--- a/ash/strings/ash_strings_pt-PT.xtb
+++ b/ash/strings/ash_strings_pt-PT.xtb
@@ -1040,7 +1040,6 @@
 <translation id="7595633564847427181">S</translation>
 <translation id="7600875258240007829">Ver todas as notificações</translation>
 <translation id="7607002721634913082">Em pausa</translation>
-<translation id="7610198039767537854">Veja fotos recentes do rolo da câmara do telemóvel no dispositivo <ph name="DEVICE_TYPE" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" /> °F</translation>
 <translation id="7631906263969450674">Caneta de feltro</translation>
 <translation id="7633755430369750696">Mostre as definições da funcionalidade Partilhar na proximidade.</translation>
diff --git a/ash/strings/ash_strings_ro.xtb b/ash/strings/ash_strings_ro.xtb
index 4cf0e29..ff1369f 100644
--- a/ash/strings/ash_strings_ro.xtb
+++ b/ash/strings/ash_strings_ro.xtb
@@ -1040,7 +1040,6 @@
 <translation id="7595633564847427181">L</translation>
 <translation id="7600875258240007829">Vezi toate notificările</translation>
 <translation id="7607002721634913082">Întreruptă</translation>
-<translation id="7610198039767537854">Vezi fotografiile recente din dosarul camerei foto a telefonului pe <ph name="DEVICE_TYPE" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7631906263969450674">Marker</translation>
 <translation id="7633755430369750696">Afișează setările Trimiterii în apropiere.</translation>
diff --git a/ash/strings/ash_strings_ru.xtb b/ash/strings/ash_strings_ru.xtb
index 80de1fdb..7b1f699 100644
--- a/ash/strings/ash_strings_ru.xtb
+++ b/ash/strings/ash_strings_ru.xtb
@@ -1040,7 +1040,6 @@
 <translation id="7595633564847427181">П</translation>
 <translation id="7600875258240007829">Показать все уведомления</translation>
 <translation id="7607002721634913082">Приостановлен</translation>
-<translation id="7610198039767537854">Просматривайте недавние фотографии с камеры телефона на устройстве <ph name="DEVICE_TYPE" />.</translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" /> °F</translation>
 <translation id="7631906263969450674">Фломастер</translation>
 <translation id="7633755430369750696">Показать настройки Обмена с окружением</translation>
diff --git a/ash/strings/ash_strings_si.xtb b/ash/strings/ash_strings_si.xtb
index 545324d..f77b3a5 100644
--- a/ash/strings/ash_strings_si.xtb
+++ b/ash/strings/ash_strings_si.xtb
@@ -1040,7 +1040,6 @@
 <translation id="7595633564847427181">ස</translation>
 <translation id="7600875258240007829">සියලු දැනුම්දීම් බලන්න</translation>
 <translation id="7607002721634913082">අත්හිටුවන ලදි</translation>
-<translation id="7610198039767537854"><ph name="DEVICE_TYPE" /> හි ඔබගේ දුරකථනයේ කැමරා රෝල වෙතින් මෑත ඡායාරූප බලන්න</translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7631906263969450674">මාකර් පෑන</translation>
 <translation id="7633755430369750696">ළඟ බෙදා ගැනීමේ සැකසීම් පෙන්වන්න.</translation>
diff --git a/ash/strings/ash_strings_sk.xtb b/ash/strings/ash_strings_sk.xtb
index 2480197d..050dce26 100644
--- a/ash/strings/ash_strings_sk.xtb
+++ b/ash/strings/ash_strings_sk.xtb
@@ -1040,7 +1040,6 @@
 <translation id="7595633564847427181">Po</translation>
 <translation id="7600875258240007829">Zobraziť všetky upozornenia</translation>
 <translation id="7607002721634913082">Pozastavené</translation>
-<translation id="7610198039767537854">Zobrazte si nedávne fotky z vášho telefónu v zariadení <ph name="DEVICE_TYPE" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7631906263969450674">Zvýrazňovač</translation>
 <translation id="7633755430369750696">Zobraziť nastavenia Zdieľania nablízku</translation>
diff --git a/ash/strings/ash_strings_sl.xtb b/ash/strings/ash_strings_sl.xtb
index 72733ca..f9d405b 100644
--- a/ash/strings/ash_strings_sl.xtb
+++ b/ash/strings/ash_strings_sl.xtb
@@ -1040,7 +1040,6 @@
 <translation id="7595633564847427181">P</translation>
 <translation id="7600875258240007829">Ogled vseh obvestil</translation>
 <translation id="7607002721634913082">Začasno ustavljeno</translation>
-<translation id="7610198039767537854">Ogled nedavnih fotografij telefona v napravi <ph name="DEVICE_TYPE" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" /> °F</translation>
 <translation id="7631906263969450674">Označevalnik</translation>
 <translation id="7633755430369750696">Prikaz nastavitev deljenja v bližini.</translation>
diff --git a/ash/strings/ash_strings_sq.xtb b/ash/strings/ash_strings_sq.xtb
index 73cfdb80..d8638d1 100644
--- a/ash/strings/ash_strings_sq.xtb
+++ b/ash/strings/ash_strings_sq.xtb
@@ -1040,7 +1040,6 @@
 <translation id="7595633564847427181">H</translation>
 <translation id="7600875258240007829">Shiko të gjitha njoftimet</translation>
 <translation id="7607002721634913082">Ndërprerë</translation>
-<translation id="7610198039767537854">Shiko fotografitë e fundit nga filmi i kamerës së telefonit në <ph name="DEVICE_TYPE" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7631906263969450674">Pena e piketës</translation>
 <translation id="7633755430369750696">Shfaq cilësimet e "Ndarjes në afërsi".</translation>
diff --git a/ash/strings/ash_strings_sr-Latn.xtb b/ash/strings/ash_strings_sr-Latn.xtb
index 57d6827..a3f32ef 100644
--- a/ash/strings/ash_strings_sr-Latn.xtb
+++ b/ash/strings/ash_strings_sr-Latn.xtb
@@ -1040,7 +1040,6 @@
 <translation id="7595633564847427181">P</translation>
 <translation id="7600875258240007829">Pogledajte sva obaveštenja</translation>
 <translation id="7607002721634913082">Pauzirano</translation>
-<translation id="7610198039767537854">Pregledajte nedavne slike sa telefona na uređaju <ph name="DEVICE_TYPE" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7631906263969450674">Olovka za marker</translation>
 <translation id="7633755430369750696">Prikažite podešavanja Deljenja u blizini.</translation>
diff --git a/ash/strings/ash_strings_sr.xtb b/ash/strings/ash_strings_sr.xtb
index 2e0c46ed..befdf50 100644
--- a/ash/strings/ash_strings_sr.xtb
+++ b/ash/strings/ash_strings_sr.xtb
@@ -1040,7 +1040,6 @@
 <translation id="7595633564847427181">П</translation>
 <translation id="7600875258240007829">Погледајте сва обавештења</translation>
 <translation id="7607002721634913082">Паузирано</translation>
-<translation id="7610198039767537854">Прегледајте недавне слике са телефона на уређају <ph name="DEVICE_TYPE" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7631906263969450674">Оловка за маркер</translation>
 <translation id="7633755430369750696">Прикажите подешавања Дељења у близини.</translation>
diff --git a/ash/strings/ash_strings_sv.xtb b/ash/strings/ash_strings_sv.xtb
index c34cda9..04277321 100644
--- a/ash/strings/ash_strings_sv.xtb
+++ b/ash/strings/ash_strings_sv.xtb
@@ -1040,7 +1040,6 @@
 <translation id="7595633564847427181">M</translation>
 <translation id="7600875258240007829">Visa alla aviseringar</translation>
 <translation id="7607002721634913082">Pausad</translation>
-<translation id="7610198039767537854">Titta på de senaste kamerabilderna från telefonen på <ph name="DEVICE_TYPE" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" /> °F</translation>
 <translation id="7631906263969450674">Märkpenna</translation>
 <translation id="7633755430369750696">Visa inställningar för Närdelning</translation>
diff --git a/ash/strings/ash_strings_sw.xtb b/ash/strings/ash_strings_sw.xtb
index f38a7dd..fb4d363 100644
--- a/ash/strings/ash_strings_sw.xtb
+++ b/ash/strings/ash_strings_sw.xtb
@@ -1041,7 +1041,6 @@
 <translation id="7595633564847427181">J3</translation>
 <translation id="7600875258240007829">Angalia arifa zote</translation>
 <translation id="7607002721634913082">Imepumzishwa</translation>
-<translation id="7610198039767537854">Angalia picha za hivi majuzi zilizo kwenye albamu ya kamera ya simu yako kwenye <ph name="DEVICE_TYPE" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7631906263969450674">Kalamu ya kutia alama</translation>
 <translation id="7633755430369750696">Onyesha mipangilio ya kipengele cha Uhamishaji wa Karibu.</translation>
diff --git a/ash/strings/ash_strings_ta.xtb b/ash/strings/ash_strings_ta.xtb
index bd10edb..1b91d1e 100644
--- a/ash/strings/ash_strings_ta.xtb
+++ b/ash/strings/ash_strings_ta.xtb
@@ -1029,7 +1029,6 @@
 <translation id="7595633564847427181">திங்</translation>
 <translation id="7600875258240007829">எல்லா அறிவிப்புகளையும் காட்டு</translation>
 <translation id="7607002721634913082">இடைநிறுத்தப்பட்டது</translation>
-<translation id="7610198039767537854">உங்கள் மொபைலில் எடுத்த சமீபத்திய படங்களை <ph name="DEVICE_TYPE" /> இல் பாருங்கள்</translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7631906263969450674">மார்க்கர் பேனா</translation>
 <translation id="7633755430369750696">அருகிலுள்ளவற்றுடன் பகிர்தல் அமைப்புகளைக் காட்டும்.</translation>
diff --git a/ash/strings/ash_strings_te.xtb b/ash/strings/ash_strings_te.xtb
index e3c0f08..e160cb6 100644
--- a/ash/strings/ash_strings_te.xtb
+++ b/ash/strings/ash_strings_te.xtb
@@ -1041,7 +1041,6 @@
 <translation id="7595633564847427181">సోమ</translation>
 <translation id="7600875258240007829">అన్ని నోటిఫికేషన్‌లను చూడండి</translation>
 <translation id="7607002721634913082">పాజ్ చెయ్యబడింది</translation>
-<translation id="7610198039767537854"><ph name="DEVICE_TYPE" />‌లో మీ ఫోన్ కెమెరా రోల్ నుండి ఇటీవలి ఫోటోలను చూడండి</translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7631906263969450674">మార్కర్ పెన్</translation>
 <translation id="7633755430369750696">సమీప షేరింగ్ సెట్టింగ్‌లను చూపించు.</translation>
diff --git a/ash/strings/ash_strings_th.xtb b/ash/strings/ash_strings_th.xtb
index 2e23475..cd4ce0a 100644
--- a/ash/strings/ash_strings_th.xtb
+++ b/ash/strings/ash_strings_th.xtb
@@ -1037,7 +1037,6 @@
 <translation id="7595633564847427181">จ.</translation>
 <translation id="7600875258240007829">ดูการแจ้งเตือนทั้งหมด</translation>
 <translation id="7607002721634913082">หยุดชั่วคราว</translation>
-<translation id="7610198039767537854">ดูรูปภาพล่าสุดจากกล้องโทรศัพท์ใน <ph name="DEVICE_TYPE" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7631906263969450674">ปากกามาร์กเกอร์</translation>
 <translation id="7633755430369750696">แสดงการตั้งค่าการแชร์ใกล้เคียง</translation>
diff --git a/ash/strings/ash_strings_tr.xtb b/ash/strings/ash_strings_tr.xtb
index 346cebb..85db70d 100644
--- a/ash/strings/ash_strings_tr.xtb
+++ b/ash/strings/ash_strings_tr.xtb
@@ -1040,7 +1040,6 @@
 <translation id="7595633564847427181">P</translation>
 <translation id="7600875258240007829">Tüm bildirimleri göster</translation>
 <translation id="7607002721634913082">Duraklatıldı</translation>
-<translation id="7610198039767537854">Telefonunuzun film rulosundaki son fotoğrafları <ph name="DEVICE_TYPE" /> cihazınızda görüntüleyin</translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7631906263969450674">İşaretçi kalem</translation>
 <translation id="7633755430369750696">Yakındakilerle Paylaşım ayarlarını gösterir.</translation>
diff --git a/ash/strings/ash_strings_uk.xtb b/ash/strings/ash_strings_uk.xtb
index a3f8cc3c..630905c 100644
--- a/ash/strings/ash_strings_uk.xtb
+++ b/ash/strings/ash_strings_uk.xtb
@@ -1040,7 +1040,6 @@
 <translation id="7595633564847427181">Пн</translation>
 <translation id="7600875258240007829">Переглянути всі сповіщення</translation>
 <translation id="7607002721634913082">Призупинено</translation>
-<translation id="7610198039767537854">Переглянути останні фото з фотоплівки телефона на <ph name="DEVICE_TYPE" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7631906263969450674">Перо-маркер</translation>
 <translation id="7633755430369750696">Показати налаштування функції "Передавання поблизу".</translation>
diff --git a/ash/strings/ash_strings_ur.xtb b/ash/strings/ash_strings_ur.xtb
index db89490..5f1405a 100644
--- a/ash/strings/ash_strings_ur.xtb
+++ b/ash/strings/ash_strings_ur.xtb
@@ -1039,7 +1039,6 @@
 <translation id="7595633564847427181">M</translation>
 <translation id="7600875258240007829">تمام اطلاعات دیکھیں</translation>
 <translation id="7607002721634913082">موقوف</translation>
-<translation id="7610198039767537854"><ph name="DEVICE_TYPE" /> پر اپنے فون کے کیمرا رول سے حالیہ تصاویر کو دیکھیں</translation>
 <translation id="7624117708979618027">F °<ph name="TEMPERATURE_F" /></translation>
 <translation id="7631906263969450674">مارکر قلم</translation>
 <translation id="7633755430369750696">قریبی آلات کے ساتھ اشتراک کی ترتیبات کو دکھائیں۔</translation>
diff --git a/ash/strings/ash_strings_uz.xtb b/ash/strings/ash_strings_uz.xtb
index d9e2ddb58..2bb7297 100644
--- a/ash/strings/ash_strings_uz.xtb
+++ b/ash/strings/ash_strings_uz.xtb
@@ -965,6 +965,7 @@
 <translation id="7076293881109082629">Kirish</translation>
 <translation id="7086931198345821656">Bu yangilanish oʻrnatilishi uchun <ph name="DEVICE_TYPE" /> butunlay tozalanishi (powerwash) lozim. Barcha maʼlumotlar oʻchirib tashlanadi. <ph name="SYSTEM_APP_NAME" /> oxirgi yangilanishi haqida batafsil axborot</translation>
 <translation id="7088960765736518739">Switch Access</translation>
+<translation id="7098053464892629930">Barcha funksiyalardan foydalanish uchun Google Play Market orqali <ph name="NAME" /> ilovasini yuklab oling</translation>
 <translation id="7098389117866926363">USB-C qurilma (orqa tomondagi chap port)</translation>
 <translation id="7106330611027933926">Ish panelini ochish</translation>
 <translation id="7118268675952955085">skrinshot</translation>
@@ -1040,7 +1041,6 @@
 <translation id="7595633564847427181">D</translation>
 <translation id="7600875258240007829">Barcha bildirishnomalarni ochish</translation>
 <translation id="7607002721634913082">Vaqtincha to‘xtatildi</translation>
-<translation id="7610198039767537854">Telefon kamerasida olingan oxirgi rasmlarni <ph name="DEVICE_TYPE" /> qurilmasida ochish</translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7631906263969450674">Flomaster</translation>
 <translation id="7633755430369750696">Nearby Share sozlamalarini ochish.</translation>
@@ -1210,6 +1210,7 @@
 <translation id="8660331759611631213">71 sonining kvadrat ildizi</translation>
 <translation id="8663756353922886599">Himoya: <ph name="CONNECTION_STATUS" />, Signal darajasi: <ph name="SIGNAL_STRENGTH" /></translation>
 <translation id="8664753092453405566">Tarmoq ro‘yxatini ochish. <ph name="STATE_TEXT" /></translation>
+<translation id="8666856788528804727">Qurilmani sozlash uchun <ph name="NAME" /> ilovasini oching</translation>
 <translation id="8676770494376880701">Kam quvvatli zaryadlash vositasi</translation>
 <translation id="8683506306463609433">Unumdorlik kuzatilmoqda</translation>
 <translation id="8685326675965865247">Qurilma, ilovalar, sozlamalar va internetdan qidiring. Ilovalaringiz boʻylab strelkalar yordamida kezing.</translation>
diff --git a/ash/strings/ash_strings_vi.xtb b/ash/strings/ash_strings_vi.xtb
index 61db9b1..1020c8bb 100644
--- a/ash/strings/ash_strings_vi.xtb
+++ b/ash/strings/ash_strings_vi.xtb
@@ -1040,7 +1040,6 @@
 <translation id="7595633564847427181">T2</translation>
 <translation id="7600875258240007829">Xem tất cả thông báo</translation>
 <translation id="7607002721634913082">Đã tạm dừng</translation>
-<translation id="7610198039767537854">Xem các ảnh gần đây trong thư viện ảnh trên điện thoại của bạn trên <ph name="DEVICE_TYPE" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />°F</translation>
 <translation id="7631906263969450674">Bút đánh dấu</translation>
 <translation id="7633755430369750696">Hiện tùy chọn cài đặt Chia sẻ lân cận.</translation>
diff --git a/ash/strings/ash_strings_zh-CN.xtb b/ash/strings/ash_strings_zh-CN.xtb
index 7d6f14f..245109f 100644
--- a/ash/strings/ash_strings_zh-CN.xtb
+++ b/ash/strings/ash_strings_zh-CN.xtb
@@ -1037,7 +1037,6 @@
 <translation id="7595633564847427181">一</translation>
 <translation id="7600875258240007829">查看所有通知</translation>
 <translation id="7607002721634913082">已暂停</translation>
-<translation id="7610198039767537854">在 <ph name="DEVICE_TYPE" /> 上查看您手机的相机胶卷中的近期照片</translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" /> 华氏度</translation>
 <translation id="7631906263969450674">标记笔</translation>
 <translation id="7633755430369750696">显示“附近分享”设置。</translation>
diff --git a/ash/strings/ash_strings_zh-HK.xtb b/ash/strings/ash_strings_zh-HK.xtb
index 2abf2a1..d5a8d2b 100644
--- a/ash/strings/ash_strings_zh-HK.xtb
+++ b/ash/strings/ash_strings_zh-HK.xtb
@@ -1038,7 +1038,6 @@
 <translation id="7595633564847427181">一</translation>
 <translation id="7600875258240007829">查看所有通知</translation>
 <translation id="7607002721634913082">已暫停</translation>
-<translation id="7610198039767537854">在 <ph name="DEVICE_TYPE" /> 上查看手機相機膠卷的近期相片</translation>
 <translation id="7624117708979618027">華氏 <ph name="TEMPERATURE_F" />°</translation>
 <translation id="7631906263969450674">箱頭筆</translation>
 <translation id="7633755430369750696">顯示「咫尺共享」設定。</translation>
diff --git a/ash/strings/ash_strings_zh-TW.xtb b/ash/strings/ash_strings_zh-TW.xtb
index e2bb5fa..4ff2893a 100644
--- a/ash/strings/ash_strings_zh-TW.xtb
+++ b/ash/strings/ash_strings_zh-TW.xtb
@@ -1036,7 +1036,6 @@
 <translation id="7595633564847427181">一</translation>
 <translation id="7600875258240007829">查看所有通知</translation>
 <translation id="7607002721634913082">已暫停</translation>
-<translation id="7610198039767537854">在 <ph name="DEVICE_TYPE" /> 上查看手機相機膠卷中的近期相片</translation>
 <translation id="7624117708979618027">華氏 <ph name="TEMPERATURE_F" />°</translation>
 <translation id="7631906263969450674">彩色筆</translation>
 <translation id="7633755430369750696">顯示鄰近分享設定。</translation>
diff --git a/ash/strings/ash_strings_zu.xtb b/ash/strings/ash_strings_zu.xtb
index 39cc413..8eb5f623 100644
--- a/ash/strings/ash_strings_zu.xtb
+++ b/ash/strings/ash_strings_zu.xtb
@@ -1040,7 +1040,6 @@
 <translation id="7595633564847427181">M</translation>
 <translation id="7600875258240007829">Bona zonke izaziso</translation>
 <translation id="7607002721634913082">Imiswe isikhashana</translation>
-<translation id="7610198039767537854">Buka izithombe zakho zakamuva ezisuka kuroli yekhamera yefoni yakho ku-<ph name="DEVICE_TYPE" /></translation>
 <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation>
 <translation id="7631906263969450674">Ipeni yemaka</translation>
 <translation id="7633755430369750696">Bonisa Amasethingi Okuthumela Eduze.</translation>
diff --git a/build/fuchsia/linux.sdk.sha1 b/build/fuchsia/linux.sdk.sha1
index 1c46c07..4f825b7 100644
--- a/build/fuchsia/linux.sdk.sha1
+++ b/build/fuchsia/linux.sdk.sha1
@@ -1 +1 @@
-7.20220226.0.1
+7.20220227.0.1
diff --git a/build/fuchsia/linux_internal.sdk.sha1 b/build/fuchsia/linux_internal.sdk.sha1
index f51c9c3..4f825b7 100644
--- a/build/fuchsia/linux_internal.sdk.sha1
+++ b/build/fuchsia/linux_internal.sdk.sha1
@@ -1 +1 @@
-7.20220226.1.1
+7.20220227.0.1
diff --git a/build/fuchsia/mac.sdk.sha1 b/build/fuchsia/mac.sdk.sha1
index 1c46c07..4f825b7 100644
--- a/build/fuchsia/mac.sdk.sha1
+++ b/build/fuchsia/mac.sdk.sha1
@@ -1 +1 @@
-7.20220226.0.1
+7.20220227.0.1
diff --git a/chrome/VERSION b/chrome/VERSION
index 370560f8..8ccc26f 100644
--- a/chrome/VERSION
+++ b/chrome/VERSION
@@ -1,4 +1,4 @@
 MAJOR=101
 MINOR=0
-BUILD=4912
+BUILD=4914
 PATCH=0
diff --git a/chrome/app/resources/generated_resources_am.xtb b/chrome/app/resources/generated_resources_am.xtb
index c07200e..c66f1ec2 100644
--- a/chrome/app/resources/generated_resources_am.xtb
+++ b/chrome/app/resources/generated_resources_am.xtb
@@ -1248,6 +1248,7 @@
 <translation id="2203088913459920044">ስም ፊደላትን፣ ቁጥሮችን እና ልዩ ቁምፊዎችን መጠቀም ይችላል</translation>
 <translation id="220321590587754225">ማገናኘት አልተቻለም። እንደገና ይሞክሩ።</translation>
 <translation id="2204034823255629767">የሚተይቡትን ማንኛውም ነገር ያነብባል እና ይቀይራል</translation>
+<translation id="2207115382329026341">ከስልክዎ ላይ የመተግበሪያዎች ዥረት መልቀቅ ቅንብሮችን ያንቁ።</translation>
 <translation id="220858061631308971">እባክዎ ይህን የፒን ኮድ በ«<ph name="DEVICE_NAME" />» ላይ ያስገቡት፦</translation>
 <translation id="2210462644007531147">መጫንን ማጠናቀቅ አልተቻለም</translation>
 <translation id="2212565012507486665">ኩኪዎችን ፍቀድ</translation>
@@ -1439,6 +1440,7 @@
 <translation id="2367972762794486313">መተግበሪያዎችን አሳይ</translation>
 <translation id="236939127352773362">መሣሪያዎች በአቅራቢያ ሲያጋሩ</translation>
 <translation id="2371076942591664043">&amp;ሲጠናቀቅ ክፈት</translation>
+<translation id="237307274687369010"><ph name="APP_NAME" />ን ማስጀመር አልተቻለም</translation>
 <translation id="2373666622366160481">ከወረቀት ጋር አመጣጥን</translation>
 <translation id="2375406435414127095">ከእርስዎ ስልክ ጋር ይገናኙ</translation>
 <translation id="2377588536920405462">በመሣሪያዎ ላይ ዋናውን የአካባቢ ቅንብር በማጥፋት አካባቢን ማጥፋት ይችላሉ። እንዲሁም በአካባቢ ቅንብሮች ውስጥ Wi-Fiን፣ የተንቀሳቃሽ ስልክ አውታረ መረቦችን እና ዳሳሾችን መጠቀም ለአካባቢ ማጥፋት ይችላሉ።</translation>
diff --git a/chrome/app/resources/generated_resources_bn.xtb b/chrome/app/resources/generated_resources_bn.xtb
index 143a7a2..f4c36c2a 100644
--- a/chrome/app/resources/generated_resources_bn.xtb
+++ b/chrome/app/resources/generated_resources_bn.xtb
@@ -2320,6 +2320,7 @@
 <translation id="3277691515294482687">Linux আপগ্রেড করার আগে, 'আমার ফাইল' ফোল্ডারে আমার অ্যাপ ও ফাইলের ব্যাকআপ নিন।</translation>
 <translation id="3278001907972365362">আপনার Google অ্যাকাউন্টের(গুলির) প্রতি নজর দেওয়া দরকার</translation>
 <translation id="3278800075417428224">CloudReady 2.0 সেটিংসে ভাষা ম্যানেজ করুন</translation>
+<translation id="3278928434075969895">এই প্রোফাইলটি Chrome OS প্রক্সি সেটিংস ব্যবহার করে।</translation>
 <translation id="3279092821516760512">পরিচিতি তালিকার অন্তর্গত বাছাই করা পরিচিতিগুলি আশেপাশে থাকলে তবেই তারা আপনার সাথে শেয়ার করতে পারবে। আপনি সম্মতি না দেওয়া পর্যন্ত ট্রান্সফার চালু করা যাবে না।</translation>
 <translation id="3279230909244266691">এতে কয়েক মিনিট সময় লাগতে পারে। ভার্চুয়াল মেশিন শুরু করা হচ্ছে।</translation>
 <translation id="3280237271814976245">এই &amp;রূপে সেভ করুন...</translation>
@@ -4892,6 +4893,7 @@
 <translation id="5909379458939060601">এই প্রোফাইল এবং ব্রাউজিং ডেটা মুছে ফেলতে চান?</translation>
 <translation id="5910363049092958439">এই ভাবে ছবি সেভ করুন...</translation>
 <translation id="5910726859585389579"><ph name="DEVICE_TYPE" /> এখন অফলাইন</translation>
+<translation id="5911505723657992440">এই প্রোফাইলের জন্য Chrome OS প্রক্সি সেটিংস ব্যবহার করুন।</translation>
 <translation id="5911533659001334206">শর্টকাট ভিউয়ার</translation>
 <translation id="5914724413750400082">মডিউলস (<ph name="MODULUS_NUM_BITS" /> বিট):
   <ph name="MODULUS_HEX_DUMP" />
diff --git a/chrome/app/resources/generated_resources_da.xtb b/chrome/app/resources/generated_resources_da.xtb
index 3dcb856..770b3be 100644
--- a/chrome/app/resources/generated_resources_da.xtb
+++ b/chrome/app/resources/generated_resources_da.xtb
@@ -1253,6 +1253,7 @@
 <translation id="2203088913459920044">Navne må indeholde bogstaver, tal og specialtegn</translation>
 <translation id="220321590587754225">Der kunne ikke oprettes forbindelse. Prøv igen.</translation>
 <translation id="2204034823255629767">Læs og rediger alt, hvad du indtaster</translation>
+<translation id="2207115382329026341">Aktivér indstillinger for appstreaming på din telefon.</translation>
 <translation id="220858061631308971">Angiv denne pinkode på "<ph name="DEVICE_NAME" />":</translation>
 <translation id="2210462644007531147">Installationen kunne ikke gennemføres</translation>
 <translation id="2212565012507486665">Tillad cookies</translation>
@@ -1446,6 +1447,7 @@
 <translation id="2367972762794486313">Vis apps</translation>
 <translation id="236939127352773362">Når enheder deler indhold i nærheden</translation>
 <translation id="2371076942591664043">Åbn når &amp;færdigt</translation>
+<translation id="237307274687369010"><ph name="APP_NAME" /> kunne ikke åbnes</translation>
 <translation id="2373666622366160481">Tilpas til papiret</translation>
 <translation id="2375406435414127095">Opret forbindelse til din telefon</translation>
 <translation id="2377588536920405462">Du kan deaktivere Placering ved at deaktivere den overordnede lokationsindstilling på din enhed. Du kan også deaktivere brugen af Wi-Fi, mobilnetværk og sensorer ifm. placering i lokationsindstillingerne.</translation>
@@ -2319,6 +2321,7 @@
 <translation id="3277691515294482687">Sikkerhedskopiér mine apps og filer i mappen My files [Mine filer], før Linux opgraderes.</translation>
 <translation id="3278001907972365362">Din Google-konto kræver handling</translation>
 <translation id="3278800075417428224">Administrer sprog i indstillingerne for CloudReady 2.0</translation>
+<translation id="3278928434075969895">Denne profil anvender proxyindstillingerne for Chrome OS.</translation>
 <translation id="3279092821516760512">Dine valgte kontakter kan dele med dig, når de er i nærheden. Overførsler starter først, når du har accepteret dem.</translation>
 <translation id="3279230909244266691">Denne proces kan tage et par minutter. Den virtuelle maskine startes.</translation>
 <translation id="3280237271814976245">Gem &amp;som...</translation>
@@ -4891,6 +4894,7 @@
 <translation id="5909379458939060601">Vil du slette denne profil og de tilhørende browserdata?</translation>
 <translation id="5910363049092958439">Ge&amp;m billede som...</translation>
 <translation id="5910726859585389579"><ph name="DEVICE_TYPE" /> er offline</translation>
+<translation id="5911505723657992440">Brug proxyindstillingerne for Chrome OS på denne profil.</translation>
 <translation id="5911533659001334206">Genvejsviser</translation>
 <translation id="5914724413750400082">Modulus (<ph name="MODULUS_NUM_BITS" /> bit):
   <ph name="MODULUS_HEX_DUMP" />
diff --git a/chrome/app/resources/generated_resources_de.xtb b/chrome/app/resources/generated_resources_de.xtb
index d8c14c9..8a49d7d 100644
--- a/chrome/app/resources/generated_resources_de.xtb
+++ b/chrome/app/resources/generated_resources_de.xtb
@@ -1237,6 +1237,7 @@
 <translation id="2203088913459920044">Der Name darf aus Buchstaben, Ziffern und Sonderzeichen bestehen</translation>
 <translation id="220321590587754225">Verbindung nicht möglich. Versuchen Sie es erneut.</translation>
 <translation id="2204034823255629767">Ihre Eingaben lesen und ändern</translation>
+<translation id="2207115382329026341">Aktivieren Sie die Einstellungen für das App-Streaming von Ihrem Smartphone.</translation>
 <translation id="220858061631308971">Geben Sie diesen PIN-Code bitte auf "<ph name="DEVICE_NAME" /> " ein:</translation>
 <translation id="2210462644007531147">Installation konnte nicht abgeschlossen werden</translation>
 <translation id="2212565012507486665">Cookies zulassen</translation>
@@ -1427,6 +1428,7 @@
 <translation id="2367972762794486313">Apps anzeigen</translation>
 <translation id="236939127352773362">Wenn Geräte in der Nähe etwas teilen</translation>
 <translation id="2371076942591664043">Nach &amp;Download öffnen</translation>
+<translation id="237307274687369010"><ph name="APP_NAME" /> konnte nicht gestartet werden</translation>
 <translation id="2373666622366160481">An Papierformat anpassen</translation>
 <translation id="2375406435414127095">Mit dem Smartphone verbinden</translation>
 <translation id="2377588536920405462">Sie können die Standortermittlung deaktivieren, indem Sie die Haupteinstellung "Standort" auf Ihrem Gerät deaktivieren. Außerdem haben Sie die Möglichkeit, die Nutzung von WLANs, Mobilfunknetzen und Sensoren zur Standortermittlung in den Standorteinstellungen zu deaktivieren.</translation>
@@ -2300,6 +2302,7 @@
 <translation id="3277691515294482687">Meine Apps und Dateien vor dem Upgrade von Linux im Ordner "Meine Dateien" sichern.</translation>
 <translation id="3278001907972365362">Ihre Google-Konten erfordern Aufmerksamkeit</translation>
 <translation id="3278800075417428224">Sprachen in den Einstellungen von CloudReady 2.0 verwalten</translation>
+<translation id="3278928434075969895">Dieses Profil verwendet die Chrome OS-Proxy-Einstellungen.</translation>
 <translation id="3279092821516760512">Ausgewählte Kontakte können Daten mit Ihnen teilen, wenn Sie in der Nähe sind. Die Übertragung beginnt erst, nachdem Sie die Einladung angenommen haben.</translation>
 <translation id="3279230909244266691">Der Vorgang kann einige Minuten dauern. Virtuelle Maschine wird gestartet.</translation>
 <translation id="3280237271814976245">Speichern &amp;unter...</translation>
@@ -4869,6 +4872,7 @@
 <translation id="5909379458939060601">Dieses Profil und diese Browserdaten löschen?</translation>
 <translation id="5910363049092958439">Bi&amp;ld speichern unter...</translation>
 <translation id="5910726859585389579"><ph name="DEVICE_TYPE" /> ist offline</translation>
+<translation id="5911505723657992440">Für dieses Profil Chrome OS-Proxy-Einstellungen verwenden.</translation>
 <translation id="5911533659001334206">Tastenkombinationsanzeige</translation>
 <translation id="5914724413750400082">Modulo (<ph name="MODULUS_NUM_BITS" /> Bits):
   <ph name="MODULUS_HEX_DUMP" />
diff --git a/chrome/app/resources/generated_resources_el.xtb b/chrome/app/resources/generated_resources_el.xtb
index 9d90b4f3..c54f682 100644
--- a/chrome/app/resources/generated_resources_el.xtb
+++ b/chrome/app/resources/generated_resources_el.xtb
@@ -1252,6 +1252,7 @@
 <translation id="2203088913459920044">Στα ονόματα μπορείτε να χρησιμοποιείτε γράμματα, αριθμούς και ειδικούς χαρακτήρες.</translation>
 <translation id="220321590587754225">Δεν ήταν δυνατή η σύνδεση. Δοκιμάστε ξανά.</translation>
 <translation id="2204034823255629767">Ανάγνωση και αλλαγή όσων πληκτρολογείτε</translation>
+<translation id="2207115382329026341">Ενεργοποιήστε τις ρυθμίσεις ροής εφαρμογών από το τηλέφωνό σας.</translation>
 <translation id="220858061631308971">Εισαγάγετε αυτόν τον κωδικό PIN στη συσκευή "<ph name="DEVICE_NAME" />":</translation>
 <translation id="2210462644007531147">Δεν ήταν δυνατή η ολοκλήρωση της εγκατάστασης</translation>
 <translation id="2212565012507486665">Αποδοχή cookie</translation>
@@ -1445,6 +1446,7 @@
 <translation id="2367972762794486313">Εμφάνιση εφαρμογών</translation>
 <translation id="236939127352773362">Όταν συσκευές που βρίσκονται κοντά σας κάνουν κοινοποίηση</translation>
 <translation id="2371076942591664043">Άνοιγμα κατά την &amp;ολοκλήρωση</translation>
+<translation id="237307274687369010">Δεν ήταν δυνατή η εκκίνηση της εφαρμογής <ph name="APP_NAME" /></translation>
 <translation id="2373666622366160481">Προσαρμογή στο χαρτί</translation>
 <translation id="2375406435414127095">Συνδεθείτε στο τηλέφωνό σας</translation>
 <translation id="2377588536920405462">Μπορείτε να απενεργοποιήσετε την Τοποθεσία απενεργοποιώντας τη βασική ρύθμιση τοποθεσίας στη συσκευή σας. Μπορείτε επίσης να απενεργοποιήσετε τη χρήση δικτύων Wi-Fi και κινητής τηλεφωνίας και των αισθητήρων για την τοποθεσία στις ρυθμίσεις τοποθεσίας.</translation>
diff --git a/chrome/app/resources/generated_resources_en-GB.xtb b/chrome/app/resources/generated_resources_en-GB.xtb
index 04a5464..3f32598 100644
--- a/chrome/app/resources/generated_resources_en-GB.xtb
+++ b/chrome/app/resources/generated_resources_en-GB.xtb
@@ -920,6 +920,7 @@
 <translation id="1869433484041798909">Bookmark button</translation>
 <translation id="1871098866036088250">Open in Chrome browser</translation>
 <translation id="187145082678092583">Fewer apps</translation>
+<translation id="1871463148436682760">Nicely done!</translation>
 <translation id="1871534214638631766">Show related info when you right-click or long press on content</translation>
 <translation id="1871569928317311284">Turn Dark theme off</translation>
 <translation id="1871615898038944731">Your <ph name="DEVICE_TYPE" /> is up to date</translation>
@@ -2350,6 +2351,7 @@
 <translation id="3304212451103136496"><ph name="DISCOUNT_AMOUNT" /> off</translation>
 <translation id="3305389145870741612">The formatting process can take a couple of seconds. Please wait.</translation>
 <translation id="3305661444342691068">Open PDF in Preview</translation>
+<translation id="3306992216458434072">Name your group and choose a colour</translation>
 <translation id="3307176291962384345">Get discounts for <ph name="MERCHANT_NAME" /></translation>
 <translation id="3308116878371095290">This page was prevented from setting cookies.</translation>
 <translation id="3308134619352333507">Hide Button</translation>
@@ -3764,6 +3766,7 @@
 <translation id="4708794300267213770">Show lock screen when waking from sleep</translation>
 <translation id="4708849949179781599">Quit <ph name="PRODUCT_NAME" /></translation>
 <translation id="4711638718396952945">Restore settings</translation>
+<translation id="47158868804223727">Click the group name to expand or collapse it</translation>
 <translation id="4716483597559580346">Powerwash for added security</translation>
 <translation id="471880041731876836">You don't have permission to visit this site</translation>
 <translation id="4722735765955348426">Password for <ph name="USERNAME" /></translation>
@@ -3827,6 +3830,7 @@
 <translation id="4794810983896241342">Updates are managed by <ph name="BEGIN_LINK" />your administrator<ph name="END_LINK" /></translation>
 <translation id="479536056609751218">Web Page, HTML Only</translation>
 <translation id="4796142525425001238">Always restore</translation>
+<translation id="4797314204379834752">Try using tab groups to organise tasks, for online shopping and more</translation>
 <translation id="4798236378408895261">Attach <ph name="BEGIN_LINK" />Bluetooth Logs<ph name="END_LINK" /> (Google internal)</translation>
 <translation id="479863874072008121">Manage devices</translation>
 <translation id="4800839971935185386">Review name and icon updates</translation>
@@ -4067,6 +4071,7 @@
 <translation id="5039696241953571917">View and manage saved passwords in your Google Account</translation>
 <translation id="5039804452771397117">Allow</translation>
 <translation id="5040823038948176460">Additional content settings</translation>
+<translation id="5041509233170835229">Chrome app</translation>
 <translation id="5043440033854483429">Name can use letters, numbers and hyphens (-), and must be between 1 and 15 characters inclusive.</translation>
 <translation id="5043913660911154449">Or specify your printer PPD <ph name="LINK_BEGIN" />Learn more<ph name="LINK_END" /></translation>
 <translation id="5045550434625856497">Incorrect password</translation>
@@ -5393,6 +5398,7 @@
 <translation id="6393156038355142111">Suggest strong password</translation>
 <translation id="6393550101331051049">Allowed to show insecure content</translation>
 <translation id="6395423953133416962">Send <ph name="BEGIN_LINK1" />system information<ph name="END_LINK1" /> and <ph name="BEGIN_LINK2" />metrics<ph name="END_LINK2" /></translation>
+<translation id="6396175271241405634">System app</translation>
 <translation id="6396988158856674517">Block sites from using motion sensors</translation>
 <translation id="6398715114293939307">Remove Google Play Store</translation>
 <translation id="6398765197997659313">Exit full screen</translation>
@@ -5462,6 +5468,7 @@
 <translation id="6460566145397380451">Allowed to connect to MIDI devices</translation>
 <translation id="6460601847208524483">Find next</translation>
 <translation id="6461170143930046705">Searching for networks...</translation>
+<translation id="6462204616987156669">Right-click on a Tab and select 'Add Tab to new group'</translation>
 <translation id="6463795194797719782">&amp;Edit</translation>
 <translation id="6464825623202322042">This device</translation>
 <translation id="6465841119675156448">Without Internet</translation>
@@ -5879,6 +5886,7 @@
 <translation id="6885771755599377173">System information preview</translation>
 <translation id="6886871292305414135">Open link in new &amp;tab</translation>
 <translation id="6889957081990109136">Switch hasn’t been assigned yet</translation>
+<translation id="689007770043972343">Try dragging other open tabs to your group</translation>
 <translation id="6892812721183419409">Open Link as <ph name="USER" /></translation>
 <translation id="6895032998810961280">Report details to Google about harmful software, system settings and processes that were found on your computer during this clean up</translation>
 <translation id="6895902329218596456"><ph name="USER_EMAIL" /> is managed by <ph name="MANAGER" /> and your admin has blocked sign-in as a secondary account</translation>
@@ -6456,6 +6464,7 @@
 <translation id="7491963308094506985">{NUM_COOKIES,plural, =1{1 cookie}other{{NUM_COOKIES} cookies}}</translation>
 <translation id="7493386493263658176"><ph name="EXTENSION_NAME" /> extension may collect all the text you type, including personal data like passwords and credit card numbers. Do you want to use this extension?</translation>
 <translation id="7494694779888133066"><ph name="WIDTH" /> x <ph name="HEIGHT" /></translation>
+<translation id="7495149565104413027">Android app</translation>
 <translation id="7495778526395737099">Forgot your old password?</translation>
 <translation id="7497981768003291373">You have no recently captured WebRTC text logs.</translation>
 <translation id="7501957181231305652">or</translation>
diff --git a/chrome/app/resources/generated_resources_es-419.xtb b/chrome/app/resources/generated_resources_es-419.xtb
index b20b461..ebe8ed5 100644
--- a/chrome/app/resources/generated_resources_es-419.xtb
+++ b/chrome/app/resources/generated_resources_es-419.xtb
@@ -2300,6 +2300,7 @@
 <translation id="3277691515294482687">Crear una copia de seguridad de mis apps y archivos en la carpeta Mis archivos antes de actualizar a Linux.</translation>
 <translation id="3278001907972365362">Tus Cuentas de Google necesitan atención</translation>
 <translation id="3278800075417428224">Administra los idiomas en la configuración de CloudReady 2.0</translation>
+<translation id="3278928434075969895">Este perfil usa la configuración de proxy de Chrome OS.</translation>
 <translation id="3279092821516760512">Ciertos contactos pueden compartir contenido contigo cuando están cerca. Las transferencias no comenzarán hasta que las aceptes.</translation>
 <translation id="3279230909244266691">Este proceso puede demorar unos minutos. Se está iniciando la máquina virtual.</translation>
 <translation id="3280237271814976245">Gu&amp;ardar como...</translation>
@@ -4871,6 +4872,7 @@
 <translation id="5909379458939060601">¿Quieres borrar este perfil y los datos de navegación?</translation>
 <translation id="5910363049092958439">Gu&amp;ardar imagen como...</translation>
 <translation id="5910726859585389579"><ph name="DEVICE_TYPE" /> está sin conexión</translation>
+<translation id="5911505723657992440">Usa la configuración de proxy de Chrome OS en este perfil.</translation>
 <translation id="5911533659001334206">Visualizador de combinaciones de teclas</translation>
 <translation id="5914724413750400082">Módulo (<ph name="MODULUS_NUM_BITS" /> bits):
   <ph name="MODULUS_HEX_DUMP" />
diff --git a/chrome/app/resources/generated_resources_es.xtb b/chrome/app/resources/generated_resources_es.xtb
index 162c30d..113e056a 100644
--- a/chrome/app/resources/generated_resources_es.xtb
+++ b/chrome/app/resources/generated_resources_es.xtb
@@ -1240,6 +1240,7 @@
 <translation id="2203088913459920044">El nombre puede contener letras, números y caracteres especiales</translation>
 <translation id="220321590587754225">No se ha podido conectar. Inténtalo de nuevo.</translation>
 <translation id="2204034823255629767">Leer y modificar todo lo que escribas</translation>
+<translation id="2207115382329026341">Habilita la configuración de streaming de aplicaciones desde tu teléfono.</translation>
 <translation id="220858061631308971">Introduce este código PIN en "<ph name="DEVICE_NAME" />":</translation>
 <translation id="2210462644007531147">No se ha podido completar la instalación</translation>
 <translation id="2212565012507486665">Permitir cookies</translation>
@@ -1431,6 +1432,7 @@
 <translation id="2367972762794486313">Mostrar aplicaciones</translation>
 <translation id="236939127352773362">Cuando algún dispositivo cercano esté compartiendo archivos</translation>
 <translation id="2371076942591664043">Abrir al &amp;finalizar</translation>
+<translation id="237307274687369010">No se ha podido iniciar <ph name="APP_NAME" /></translation>
 <translation id="2373666622366160481">Ajustar al tamaño del papel</translation>
 <translation id="2375406435414127095">Conecta tu teléfono</translation>
 <translation id="2377588536920405462">Para inhabilitar la ubicación, desactiva el ajuste de ubicación principal en el dispositivo. También puedes desactivar el uso de sensores y redes Wi‑Fi o móviles para determinar la ubicación en los ajustes de ubicación.</translation>
@@ -2303,6 +2305,7 @@
 <translation id="3277691515294482687">Crear una copia de seguridad de mis aplicaciones y archivos en la carpeta Mis archivos antes de actualizar Linux</translation>
 <translation id="3278001907972365362">Parece que hay algún problema con tus cuentas de Google</translation>
 <translation id="3278800075417428224">Gestionar idiomas en los ajustes de CloudReady 2.0</translation>
+<translation id="3278928434075969895">Este perfil usa la configuración de proxy de Chrome OS.</translation>
 <translation id="3279092821516760512">Determinados contactos pueden compartir archivos contigo cuando estéis cerca. Las transferencias no se iniciarán hasta que las aceptes.</translation>
 <translation id="3279230909244266691">Iniciando la máquina virtual. Este proceso puede tardar unos minutos.</translation>
 <translation id="3280237271814976245">Gu&amp;ardar como...</translation>
@@ -4873,6 +4876,7 @@
 <translation id="5909379458939060601">¿Eliminar este perfil y los datos de navegación?</translation>
 <translation id="5910363049092958439">Guar&amp;dar imagen como...</translation>
 <translation id="5910726859585389579"><ph name="DEVICE_TYPE" /> no tiene conexión</translation>
+<translation id="5911505723657992440">Usar la configuración de proxy de Chrome OS en este perfil.</translation>
 <translation id="5911533659001334206">Visor de combinaciones de teclas</translation>
 <translation id="5914724413750400082">Módulo (<ph name="MODULUS_NUM_BITS" /> bits):
 <ph name="MODULUS_HEX_DUMP" />
diff --git a/chrome/app/resources/generated_resources_et.xtb b/chrome/app/resources/generated_resources_et.xtb
index 4be5e109..9e51af7 100644
--- a/chrome/app/resources/generated_resources_et.xtb
+++ b/chrome/app/resources/generated_resources_et.xtb
@@ -2309,6 +2309,7 @@
 <translation id="3277691515294482687">Varunda minu rakendused ja failid enne Linuxi versiooni uuendamist kausta Minu failid.</translation>
 <translation id="3278001907972365362">Teie Google'i kontod vajavad tähelepanu</translation>
 <translation id="3278800075417428224">Hallake keeli CloudReady 2.0 seadetes</translation>
+<translation id="3278928434075969895">See profiil kasutab Chrome OS-i puhverserveri seadeid.</translation>
 <translation id="3279092821516760512">Valitud kontaktid saavad läheduses olles teiega jagada. Ülekandeid ei alustata enne, kui nõusoleku annate.</translation>
 <translation id="3279230909244266691">Protsess võib võtta mõne minuti. Virtuaalset masinat käivitatakse.</translation>
 <translation id="3280237271814976245">Salvesta &amp;nimega...</translation>
@@ -4880,6 +4881,7 @@
 <translation id="5909379458939060601">Kas kustutada see profiil ja sirvimisandmed?</translation>
 <translation id="5910363049092958439">Sal&amp;vesta pilt nimega...</translation>
 <translation id="5910726859585389579"><ph name="DEVICE_TYPE" /> on võrguühenduseta</translation>
+<translation id="5911505723657992440">Kasuta selle profiili jaoks Chrome OS-i puhverserveri seadeid.</translation>
 <translation id="5911533659001334206">Otseteede vaatur</translation>
 <translation id="5914724413750400082">Moodul (<ph name="MODULUS_NUM_BITS" /> bitti):
   <ph name="MODULUS_HEX_DUMP" />
diff --git a/chrome/app/resources/generated_resources_eu.xtb b/chrome/app/resources/generated_resources_eu.xtb
index fdb2e9a..18cc7bd 100644
--- a/chrome/app/resources/generated_resources_eu.xtb
+++ b/chrome/app/resources/generated_resources_eu.xtb
@@ -1240,6 +1240,7 @@
 <translation id="2203088913459920044">Hizkiak, zenbakiak eta karaktere bereziak izan ditzake izenak</translation>
 <translation id="220321590587754225">Ezin izan da konektatu. Saiatu berriro.</translation>
 <translation id="2204034823255629767">Irakurri eta aldatu idazten duzuna</translation>
+<translation id="2207115382329026341">Gaitu aplikazioak zuzenean exekutatzeari buruzko telefonoko ezarpenak.</translation>
 <translation id="220858061631308971">Idatzi PIN kodea "<ph name="DEVICE_NAME" />" gailuan:</translation>
 <translation id="2210462644007531147">Ezin izan da osatu instalazioa</translation>
 <translation id="2212565012507486665">Onartu cookieak</translation>
@@ -1430,6 +1431,7 @@
 <translation id="2367972762794486313">Erakutsi aplikazioak</translation>
 <translation id="236939127352773362">Gailuak inguruan edukia partekatzen ari direnean</translation>
 <translation id="2371076942591664043">Ireki &amp;amaitzean</translation>
+<translation id="237307274687369010">Ezin izan da abiarazi <ph name="APP_NAME" /></translation>
 <translation id="2373666622366160481">Egokitu paperera</translation>
 <translation id="2375406435414127095">Konektatu telefonora</translation>
 <translation id="2377588536920405462">Kokapena desaktibatzeko, desaktibatu gailuko kokapen-ezarpen nagusia. Bestela, desaktibatu kokapena zehazteko wifi-sareak, sare mugikorrak eta sentsoreak erabiltzeko aukera kokapen-ezarpenetan.</translation>
diff --git a/chrome/app/resources/generated_resources_fil.xtb b/chrome/app/resources/generated_resources_fil.xtb
index 58b77d6a..e1950c4 100644
--- a/chrome/app/resources/generated_resources_fil.xtb
+++ b/chrome/app/resources/generated_resources_fil.xtb
@@ -1253,6 +1253,7 @@
 <translation id="2203088913459920044">Puwedeng gumamit ang pangalan ng mga titik, numero, at special character</translation>
 <translation id="220321590587754225">Hindi makakonekta. Subukan ulit.</translation>
 <translation id="2204034823255629767">Basahin at baguhin ang anumang tina-type mo</translation>
+<translation id="2207115382329026341">I-enable ang mga setting sa pag-stream ng mga app sa iyong telepono.</translation>
 <translation id="220858061631308971">Pakilagay ang PIN code na ito sa "<ph name="DEVICE_NAME" />":</translation>
 <translation id="2210462644007531147">Hindi matapos ang pag-install</translation>
 <translation id="2212565012507486665">Payagan ang cookies</translation>
@@ -1446,6 +1447,7 @@
 <translation id="2367972762794486313">Ipakita ang apps</translation>
 <translation id="236939127352773362">Kapag nagbabahagi ang mga device sa malapit</translation>
 <translation id="2371076942591664043">Buksan kapag &amp;tapos na</translation>
+<translation id="237307274687369010">Hindi mailunsad ang <ph name="APP_NAME" /></translation>
 <translation id="2373666622366160481">Pagkasyahin sa papel</translation>
 <translation id="2375406435414127095">Kumonekta sa iyong telepono</translation>
 <translation id="2377588536920405462">Puwede mong i-off ang Lokasyon sa pamamagitan ng pag-off sa pangunahing setting ng Lokasyon sa iyong device. Puwede mo ring i-off ang paggamit ng Wi-Fi, mga mobile network, at mga sensor para sa lokasyon sa mga setting ng lokasyon.</translation>
@@ -2319,6 +2321,7 @@
 <translation id="3277691515294482687">I-back up ang aking mga app at file sa folder na Aking Mga File bago i-upgrade ang Linux.</translation>
 <translation id="3278001907972365362">Nangangailangan ng pansin ang iyong (mga) Google Account</translation>
 <translation id="3278800075417428224">Pamahalaan ang mga wika sa mga setting ng CloudReady 2.0</translation>
+<translation id="3278928434075969895">Gumagamit ang profile na ito ng mga setting ng proxy ng Chrome OS.</translation>
 <translation id="3279092821516760512">Makakapagbahagi sa iyo ang mga piling contact kapag malapit sila. Hindi magsisimula ang mga paglilipat hangga't hindi mo tinatanggap ang mga ito.</translation>
 <translation id="3279230909244266691">Maaaring abutin nang ilang minuto ang prosesong ito. Sinisimulan ang virtual machine.</translation>
 <translation id="3280237271814976245">I-save &amp;bilang...</translation>
@@ -4891,6 +4894,7 @@
 <translation id="5909379458939060601">I-delete ang profile at data mula sa pag-browse na ito?</translation>
 <translation id="5910363049092958439">I-sa&amp;ve ang Imahe Bilang...</translation>
 <translation id="5910726859585389579">Offline ang <ph name="DEVICE_TYPE" /></translation>
+<translation id="5911505723657992440">Gamitin ang mga setting ng proxy ng Chrome OS para sa profile na ito.</translation>
 <translation id="5911533659001334206">Shortcut viewer</translation>
 <translation id="5914724413750400082">Modulus (<ph name="MODULUS_NUM_BITS" /> (na) bit):
   <ph name="MODULUS_HEX_DUMP" />
diff --git a/chrome/app/resources/generated_resources_id.xtb b/chrome/app/resources/generated_resources_id.xtb
index 69da0a0..982bdb2b 100644
--- a/chrome/app/resources/generated_resources_id.xtb
+++ b/chrome/app/resources/generated_resources_id.xtb
@@ -2318,6 +2318,7 @@
 <translation id="3277691515294482687">Cadangkan aplikasi dan file saya ke folder File Saya sebelum mengupgrade Linux.</translation>
 <translation id="3278001907972365362">Ada yang perlu diperhatikan di Akun Google Anda</translation>
 <translation id="3278800075417428224">Kelola bahasa di setelan CloudReady 2.0</translation>
+<translation id="3278928434075969895">Profil ini menggunakan setelan proxy Chrome OS.</translation>
 <translation id="3279092821516760512">Kontak yang dipilih dapat berbagi dengan Anda saat berada di sekitar. Transfer tidak akan dimulai sampai Anda menerimanya.</translation>
 <translation id="3279230909244266691">Proses ini dapat memerlukan waktu beberapa menit. Memulai mesin virtual.</translation>
 <translation id="3280237271814976245">Simp&amp;an sebagai...</translation>
@@ -4890,6 +4891,7 @@
 <translation id="5909379458939060601">Hapus profil dan data penjelajahan ini?</translation>
 <translation id="5910363049092958439">Sim&amp;pan Gambar Sebagai...</translation>
 <translation id="5910726859585389579"><ph name="DEVICE_TYPE" /> sedang offline</translation>
+<translation id="5911505723657992440">Gunakan setelan proxy Chrome OS untuk profil ini.</translation>
 <translation id="5911533659001334206">Shortcut viewer</translation>
 <translation id="5914724413750400082">Modulus (<ph name="MODULUS_NUM_BITS" /> bit):
   <ph name="MODULUS_HEX_DUMP" />
diff --git a/chrome/app/resources/generated_resources_ky.xtb b/chrome/app/resources/generated_resources_ky.xtb
index ed5ae24..60e32a5 100644
--- a/chrome/app/resources/generated_resources_ky.xtb
+++ b/chrome/app/resources/generated_resources_ky.xtb
@@ -1252,6 +1252,7 @@
 <translation id="2203088913459920044">Аталышта тамгаларды, сандарды жана атайын символдорду колдонууга болот</translation>
 <translation id="220321590587754225">Байланышкан жок. Кайра аракет кылыңыз.</translation>
 <translation id="2204034823255629767">Терилген нерсенин баарын окуп жана өзгөртүңүз</translation>
+<translation id="2207115382329026341">Телефонуңуздан колдонмодон алып ойнотуу жөндөөлөрүн иштетиңиз.</translation>
 <translation id="220858061631308971">Бул ПИН кодду төмөнкүгө киргизиңиз: "<ph name="DEVICE_NAME" />"</translation>
 <translation id="2210462644007531147">Орнотуу процесси аягына чыкпай койду</translation>
 <translation id="2212565012507486665">Cookies файлдарына уруксат берүү</translation>
@@ -1445,6 +1446,7 @@
 <translation id="2367972762794486313">Колдонмолорду көрсөтүү</translation>
 <translation id="236939127352773362">Жакын жердеги түзмөктөр кандайдыр бир нерселерди бөлүшүп жатканда</translation>
 <translation id="2371076942591664043">Бүткөндө &amp;ачуу</translation>
+<translation id="237307274687369010"><ph name="APP_NAME" /> иштетилген жок</translation>
 <translation id="2373666622366160481">Баракка чактоо</translation>
 <translation id="2375406435414127095">Телефонуңузга туташтырыңыз</translation>
 <translation id="2377588536920405462">Түзмөктөгү негизги Жайгашкан жерди аныктоо кызматы өчүрүлгөндө, бул түзмөктүн жайгашкан жери аныкталбай калат. Ошондой эле Wi Fi, мобилдик тармактарды, жайгашкан жер сенсорлорун жайгаштыруу жөндөөлөрүнөн өчүрсөңүз болот.</translation>
diff --git a/chrome/app/resources/generated_resources_lv.xtb b/chrome/app/resources/generated_resources_lv.xtb
index a38374c..40e1e34 100644
--- a/chrome/app/resources/generated_resources_lv.xtb
+++ b/chrome/app/resources/generated_resources_lv.xtb
@@ -2305,6 +2305,7 @@
 <translation id="3277691515294482687">Pirms Linux jaunināšanas dublēt manas lietotnes un failus mapē Mani faili.</translation>
 <translation id="3278001907972365362">Pievērsiet uzmanību savam(-iem) Google kontam(-iem).</translation>
 <translation id="3278800075417428224">Valodu pārvaldība CloudReady 2.0 iestatījumos</translation>
+<translation id="3278928434075969895">Šim profilam tiek izmantoti Chrome OS starpniekservera iestatījumi.</translation>
 <translation id="3279092821516760512">Atlasītās kontaktpersonas var kopīgot ar jums saturu, kad tās atrodas tuvumā. Satura pārsūtīšana tiks sāka tikai pēc jūsu apstiprinājuma.</translation>
 <translation id="3279230909244266691">Šis process var ilgt dažas minūtes. Notiek virtuālās mašīnas startēšana.</translation>
 <translation id="3280237271814976245">Saglabāt kā...</translation>
@@ -4876,6 +4877,7 @@
 <translation id="5909379458939060601">Vai dzēst šo profilu un pārlūkošanas datus?</translation>
 <translation id="5910363049092958439">Saglabāt attēlu &amp;kā...</translation>
 <translation id="5910726859585389579"><ph name="DEVICE_TYPE" /> ir bezsaistē</translation>
+<translation id="5911505723657992440">Izmantot Chrome OS starpniekservera iestatījumus šim profilam.</translation>
 <translation id="5911533659001334206">Īsinājumtaustiņu skatīšana</translation>
 <translation id="5914724413750400082">Modulis (<ph name="MODULUS_NUM_BITS" /> biti):
   <ph name="MODULUS_HEX_DUMP" />
diff --git a/chrome/app/resources/generated_resources_mr.xtb b/chrome/app/resources/generated_resources_mr.xtb
index 99a0ba6..45fd477 100644
--- a/chrome/app/resources/generated_resources_mr.xtb
+++ b/chrome/app/resources/generated_resources_mr.xtb
@@ -1251,6 +1251,7 @@
 <translation id="2203088913459920044">नावामध्ये अक्षरे, अंक आणि विशेष वर्ण वापरू शकता</translation>
 <translation id="220321590587754225">कनेक्ट करता आले नाही. पुन्हा प्रयत्न करा.</translation>
 <translation id="2204034823255629767">तुम्ही टाइप करता ती कोणतीहीगोष्ट वाचा आणि बदला</translation>
+<translation id="2207115382329026341">तुमच्या फोनवरून ॲप्स स्ट्रीम करण्यासंबंधित सेटिंग्ज सुरू करा.</translation>
 <translation id="220858061631308971">कृपया यावर हा पिन कोड प्रविष्‍ट करा "<ph name="DEVICE_NAME" />":</translation>
 <translation id="2210462644007531147">इंस्टॉलेशन पूर्ण करता आले नाही</translation>
 <translation id="2212565012507486665">कुकींना अनुमती द्या</translation>
@@ -1444,6 +1445,7 @@
 <translation id="2367972762794486313">अ‍ॅप्स दर्शवा</translation>
 <translation id="236939127352773362">डिव्हाइस जवळपास शेअर करताना</translation>
 <translation id="2371076942591664043">&amp;पूर्ण झाल्यानंतर उघडा</translation>
+<translation id="237307274687369010"><ph name="APP_NAME" /> लाँच करता आले नाही</translation>
 <translation id="2373666622366160481">कागदाच्या आकारात बसवा</translation>
 <translation id="2375406435414127095">तुमच्या फोनशी कनेक्ट करा</translation>
 <translation id="2377588536920405462">तुमच्या डिव्हाइसवर मुख्य स्थान सेटिंग बंद करून तुम्ही स्थान बंद करू शकता. तुम्ही स्थान सेटिंग्जमध्ये स्थानासाठी वाय-फाय, मोबाइल नेटवर्क आणि सेन्सरचा वापरदेखील बंद करू शकता.</translation>
@@ -2317,6 +2319,7 @@
 <translation id="3277691515294482687">Linux अपग्रेड करण्यापूर्वी माझ्या फाइल फोल्डरमध्ये माझ्या अ‍ॅप्सचा आणि फाइलचा बॅकअप घ्या.</translation>
 <translation id="3278001907972365362">तुमच्या Google खात्या(त्यां)कडे लक्ष देण्याची आवश्यकता आहे</translation>
 <translation id="3278800075417428224">CloudReady 2.0 सेटिंग्जमध्ये भाषा व्यवस्थापित करा</translation>
+<translation id="3278928434075969895">ही प्रोफाइल Chrome OS प्रॉक्सी सेटिंग्ज वापरते.</translation>
 <translation id="3279092821516760512">निवडलेले संपर्क हे जवळपास असताना तुमच्यासोबत शेअर करू शकतात. तुम्ही स्वीकारेपर्यंत ट्रान्सफर सुरू होणार नाहीत.</translation>
 <translation id="3279230909244266691">या प्रक्रियेला काही मिनिटे लागू शकतात. व्हर्च्युअल मशीन सुरू करत आहे.</translation>
 <translation id="3280237271814976245">या फॉरमॅटमध्ये सेव्ह करा...</translation>
@@ -4887,6 +4890,7 @@
 <translation id="5909379458939060601">ही प्रोफाइल आणि डेटा हटवायचा आहे का?</translation>
 <translation id="5910363049092958439">म्हणून इमेज ज&amp;तन करा...</translation>
 <translation id="5910726859585389579"><ph name="DEVICE_TYPE" /> ऑफलाइन आहे</translation>
+<translation id="5911505723657992440">या प्रोफाइलसाठी Chrome OS प्रॉक्सी सेटिंग्ज वापरा.</translation>
 <translation id="5911533659001334206">शॉर्टकट दर्शक</translation>
 <translation id="5914724413750400082">मॉड्यूलस (<ph name="MODULUS_NUM_BITS" /> बिट):
   <ph name="MODULUS_HEX_DUMP" />
diff --git a/chrome/app/resources/generated_resources_ne.xtb b/chrome/app/resources/generated_resources_ne.xtb
index 72acc78..316670217 100644
--- a/chrome/app/resources/generated_resources_ne.xtb
+++ b/chrome/app/resources/generated_resources_ne.xtb
@@ -103,6 +103,7 @@
 <translation id="1099383081182863812">तपाईं <ph name="BEGIN_LINK" />Google Home एप<ph name="END_LINK" />मा आफ्नो Chromecast देख्न सक्नुहुन्छ?</translation>
 <translation id="1099962274138857708"><ph name="DEVICE_NAME" /> बाट छवि कपी गरियो</translation>
 <translation id="1100504063505580045">हालको आइकन</translation>
+<translation id="1102790815296970136">यहाँ गई "<ph name="PERSONALIZED_MEMORY_TITLE" />" र अन्य स्मरणमाहरू हेर्नुहोस्</translation>
 <translation id="1103523840287552314">सँधै अनुवाद गर्नुहोस् <ph name="LANGUAGE" /></translation>
 <translation id="1108600514891325577">&amp;रोक्नुहोस्</translation>
 <translation id="1108938384783527433">ब्राउजिङ इतिहास सिंक गरियोस्</translation>
@@ -261,6 +262,7 @@
 <translation id="125220115284141797">डिफल्ट</translation>
 <translation id="1252987234827889034">प्रोफाइल सम्बन्धी त्रुटि भयो</translation>
 <translation id="1254593899333212300">प्रत्यक्ष इन्टरनेट जडान</translation>
+<translation id="1258144502260926473">तपाईंको कम्प्युटरमा सुरक्षित मोड्युल छ। CloudReady २.० मा सुरक्षासम्बन्धी धेरै महत्त्वपूर्ण सुविधाहरू लागू गर्नका लागि उक्त मोड्युल प्रयोग गरिन्छ। तपाईं यसका सम्बन्धमा थप जान्न चाहनुहुन्छ भने Chromebook को मद्दत केन्द्रमा जानुहोस्: https://support.google.com/chromebook/?p=sm</translation>
 <translation id="1258491128795710625">नयाँ के छ</translation>
 <translation id="1259152067760398571">हिजो सुरक्षा जाँच गरिएको थियो</translation>
 <translation id="1260451001046713751"><ph name="HOST" /> लाई पपअप देखाउन र रिडिरेक्ट गर्ने अनुमति दिनुहोस्</translation>
@@ -489,6 +491,7 @@
 <translation id="1481537595330271162">डिस्कको आकार बदल्ने क्रममा त्रुटि भयो</translation>
 <translation id="1482626744466814421">यस ट्याबमा पुस्तक चिन्ह लगाउनुहोस्...</translation>
 <translation id="1483493594462132177">पठाउनुहोस्</translation>
+<translation id="1484599694148543901">तपाईं CloudReady २.० मा पहिले नै इन्स्टल गरिएको ChromeVox नामक स्क्रिन रिडर एक्टिभेट गर्न चाहनुहुन्छ?</translation>
 <translation id="1484979925941077974">साइटले ब्लुटुथ प्रयोग गर्दै छ</translation>
 <translation id="1485015260175968628">यसले अब गर्न सक्छ:</translation>
 <translation id="1485141095922496924">संस्करण <ph name="PRODUCT_VERSION" /> (<ph name="PRODUCT_CHANNEL" />) <ph name="PRODUCT_MODIFIER" /> <ph name="PRODUCT_VERSION_BITS" /></translation>
@@ -1132,6 +1135,7 @@
 <translation id="2113921862428609753">अख्यतियार जानकारी पहुँच</translation>
 <translation id="2114326799768592691">&amp;Frame पुन: लोड गर्नुहोस्</translation>
 <translation id="2114413269775311385">यो खाता Android एपहरूमा प्रयोग गर्नुहोस्। तपाईं <ph name="LINK_BEGIN" />एपका सेटिङ<ph name="LINK_END" />मा गई Android एपहरूलाई दिइएको अनुमति नियन्त्रण सक्नुहुन्छ।</translation>
+<translation id="2114820389966440614">यहाँ गई "हालसालैका हाइलाइट" र अन्य स्मरणमाहरू हेर्नुहोस्</translation>
 <translation id="2114896190328250491"><ph name="NAME" /> द्वारा खिचिएको फोटो</translation>
 <translation id="2114995631896158695">SIM कार्ड हालिएको छैन</translation>
 <translation id="2116619964159595185">साइटहरूले लो-इनर्जी बिकन, हेल्थ वा फिटनेस ट्र्याकर वा स्मार्ट चिम सेटअप वा सिंक गर्ने जस्ता सुविधाहरू प्रदान गर्न सामान्यतया ब्लुटुथ चल्ने यन्त्रमा कनेक्ट गर्छन्</translation>
@@ -1368,6 +1372,7 @@
 <translation id="2326188115274135041">स्वतः अनलक हुने सुविधा सक्षम पार्न PIN पुष्टि गर्नुहोस्</translation>
 <translation id="2326931316514688470">एप पुन: &amp;लोड गर्नुहोस्</translation>
 <translation id="2327492829706409234">एप सक्षम गर्नुहोस्</translation>
+<translation id="2327920026543055248"><ph name="TOTAL" /> मध्ये <ph name="CHARACTER" /> वटा वर्ण हाल्नुहोस्</translation>
 <translation id="2328561734797404498"><ph name="APP_NAME" /> प्रयोग गर्न कृपया आफ्नो डिभाइस रिस्टार्ट गर्नुहोस्।</translation>
 <translation id="2328636661627946415">तपाईंले इन्कोग्निटो मोड प्रयोग गरिरहेका बेला साइटहरूले तपाईंले ती साइटमा गर्नुभएका गतिविधिहरू हेर्ने प्रयोजनका लागि मात्र कुकीहरू प्रयोग गर्न सक्छन्। इन्कोग्निटो मोड बन्द गरेपछि कुकीहरू मेटाइन्छ।</translation>
 <translation id="2329597144923131178">तपाईँका सबै यन्त्रहरूमा आफ्ना पुस्तक चिन्हहरू, इतिहास, पासवर्डहरू र अन्य सेटिङहरू प्राप्त गर्न साइन इन गर्नुहोस्।</translation>
@@ -1837,6 +1842,7 @@
 <translation id="2791952154587244007">एउटा त्रुटि देखा पर्‍यो। किओस्क एप्लिकेसनले यस यन्त्रमा स्वत: लन्च गर्न सक्षम हुने छैन।</translation>
 <translation id="2792290659606763004">Android एपहरूलाई हटाउने हो?</translation>
 <translation id="2792465461386711506">आफ्नो फोनको Chrome मा हालसालै खोलिएका ट्याबहरू हेर्न Chrome सिंक अन गर्नुहोस्</translation>
+<translation id="2792697226874849938">प्रतिबन्धसँग सम्बन्धित फोटो</translation>
 <translation id="2794233252405721443">साइटमाथि रोक लगाइएको छ</translation>
 <translation id="2794522004398861033">eSIM सेटअप गर्न Wi-Fi वा इथरनेटमा कनेक्ट गर्नहोस्</translation>
 <translation id="2795716239552913152">साइटहरूले सान्दर्भिक सुविधा वा स्थानीय समाचार वा नजिकैका पसलहरू जस्ता कुराहरूको जानकारी प्रदान गर्न सामान्यतया तपाईंको स्थानसम्बन्धी जानकारी प्रयोग गर्छन्</translation>
@@ -2066,6 +2072,7 @@
 <translation id="3012804260437125868">सुरक्षित उही-साइटका जडानहरू मात्र</translation>
 <translation id="3012917896646559015">तपाइँको कम्प्युटरलाई एक मर्मत कार्यालयमा पठाउनको लागि कृपया तपाइँको हार्डवेयर निर्मातालाई तुरुन्तै सम्पर्क गर्नुहोस्।</translation>
 <translation id="301525898020410885">तपाईंको सङ्गठनले भाषा तय गर्छ</translation>
+<translation id="3015425363367310551">तपाईं CloudReady २.० मा पहिले नै इन्स्टल गरिएको ChromeVox नामक स्क्रिन रिडर एक्टिभेट गर्न चाहनुहुन्छ? तपाईं ChromeVox एक्टिभेट गर्न चाहनुहुन्छ भने पाँच सेकेन्डसम्म दुवै भोल्युम बटन थिचिराख्नुहोस्।</translation>
 <translation id="3015639418649705390">अहिले नै पुनः सुरु गर्नुहोस्</translation>
 <translation id="3016381065346027039">कुनै पनि लग प्रविष्टि गरिएको छैन</translation>
 <translation id="3016641847947582299">अवयव अपडेड गरियो</translation>
@@ -2189,6 +2196,7 @@
 <translation id="3142562627629111859">नयाँ समूह</translation>
 <translation id="3143515551205905069">सिंक रद्द गर्नुहोस्</translation>
 <translation id="3143754809889689516">सुरुबाट प्ले गर्नुहोस्</translation>
+<translation id="3144023778624018265">CloudReady २.० का सेटिङ सिंक गर्ने</translation>
 <translation id="3144647712221361880">यस रूपमा लिंक खोल्नुहोस्</translation>
 <translation id="3149510190863420837">Chrome एपहरू</translation>
 <translation id="3150693969729403281">अहिले नै सुरक्षा जाँच गर्नुहोस्</translation>
@@ -2292,6 +2300,7 @@
 <translation id="3275778913554317645">विन्डोको रूपमा खोल्नुहोस्</translation>
 <translation id="3277691515294482687">Linux अपग्रेड गर्नुअघि मेरा एप तथा फाइलहरू मेरा फाइलहरू नामक फोल्डरमा ब्याकअप गरियोस्।</translation>
 <translation id="3278001907972365362">तपाईंका Google खाता(हरू) मा ध्यान दिनु पर्ने हुन्छ</translation>
+<translation id="3278800075417428224">CloudReady २.० का सेटिङमा गई भाषाहरू व्यवस्थापन गर्नुहोस्</translation>
 <translation id="3278928434075969895">यो प्रोफाइलले Chrome OS को प्रोक्सीसम्बन्धी सेटिङ प्रयोग गर्छ।</translation>
 <translation id="3279092821516760512">तपाईंको वरपर हुँदा तपाईंसँग सामग्री सेयर गर्न सक्ने सम्पर्क सूचीमा भएका व्यक्तिहरू चयन गर्नुहोस्। तपाईंले सामग्री सार्ने निम्तो स्वीकार नगरेसम्म सामग्री सार्ने काम सुरु हुँदैन।</translation>
 <translation id="3279230909244266691">यो प्रक्रिया पूरा हुन केही बेर लाग्न सक्छ। भर्चुअल मेसिन सुरु गर्दै।</translation>
@@ -2439,6 +2448,7 @@
 <translation id="343115368966109153"><ph name="FILE_NAME" /> डाउनलोड गर्ने हो? यो डिभाइस प्रयोग गर्ने जोकोही व्यक्ति यो फाइल देख्न सक्छन्।</translation>
 <translation id="3432227430032737297">देखाइएका सबै कुराहरू हटाउनुहोस्</translation>
 <translation id="3432762828853624962">Shared Workers</translation>
+<translation id="3433507769937235446">Lock-on-leave</translation>
 <translation id="3433621910545056227">ओहो!  प्रणालीले यन्त्र स्थापना-समय विशेषण लक स्थापना गर्न असफल भयो।</translation>
 <translation id="3434107140712555581"><ph name="BATTERY_PERCENTAGE" />%</translation>
 <translation id="3434272557872943250">तपाईंका बच्चाका खातामा वेब तथा एपसम्बन्धी अतिरिक्त गतिविधिको सेटिङ सक्रिय गरिएको छ भने यो डेटा उनको Google खातामा सुरक्षित गरिन सक्छ। families.google.com मा गएर यी सेटिङहरू र यिनलाई मिलाउने तरिकाबारे थप जान्नुहोस्।</translation>
@@ -2460,6 +2470,7 @@
 <translation id="3445288400492335833"><ph name="MINUTES" /> मिनेट</translation>
 <translation id="3445925074670675829">USB-C यन्त्र</translation>
 <translation id="3446274660183028131">कृपया Windows इन्स्टल गर्न Parallels Desktop खोल्नुहोस्।</translation>
+<translation id="3446286111407214190">Google CloudReady २.० का सर्तसम्बन्धी सामग्री</translation>
 <translation id="344630545793878684">विभिन्न वेबसाइटहरूमा तपाईँको डेटा पढ्नुहोस्</translation>
 <translation id="3446650212859500694">यो फाइलमा संवेदनशील सामग्री छ</translation>
 <translation id="3447644283769633681">तेस्रो पक्षीय सबै कुकीहरू ब्लक गर्नुहोस्</translation>
@@ -2657,6 +2668,7 @@
 <translation id="3640214691812501263">"<ph name="USER_NAME" />" का लागि <ph name="EXTENSION_NAME" /> थप्ने हो?</translation>
 <translation id="3640613767643722554">आफ्नो सहायकलाई तपाईंको आवाज पहिचान गर्न सिकाउनुहोस्</translation>
 <translation id="3641456520301071208">साइटहरूले तपाईंको स्थानसम्बन्धी जानकारी माग्न सक्छन्</translation>
+<translation id="3642699533549879077">अरू कसैले तपाईंको डिभाइसको स्क्रिनमा हेर्दा तपाईंलाई अलर्ट पठाइने छ र सूचनामा भएको सामग्री लुकाइने छ।</translation>
 <translation id="3645372836428131288">फिंगरप्रिन्टको कुनै अर्को भाग समावेश गर्न औँला थोरै सार्नुहोस्।</translation>
 <translation id="3647998456578545569">{COUNT,plural, =1{<ph name="DEVICE_NAME" /> बाट <ph name="ATTACHMENTS" /> प्राप्त भए}other{<ph name="DEVICE_NAME" /> बाट <ph name="ATTACHMENTS" /> प्राप्त भए}}</translation>
 <translation id="3648348069317717750"><ph name="USB_DEVICE_NAME" /> पत्ता लगाइयो</translation>
@@ -2686,6 +2698,7 @@
 <translation id="3672681487849735243">फ्याक्ट्री त्रुटि पत्ता लागेको छ</translation>
 <translation id="3673097791729989571"><ph name="SAML_DOMAIN" /> ले साइन इन गर्ने कार्य होस्ट गर्छ</translation>
 <translation id="3673622964532248901">तपाईंलाई यो डिभाइसमा कास्ट गर्ने अनुमति दिइएको छैन।</translation>
+<translation id="3675511132463531771">CloudReady २.० अपडेट गर्नु पर्ने हुन्छ</translation>
 <translation id="367645871420407123">यदि तपाईं डिफल्ट परीक्षण छवि मानमा मूल पासवर्ड सेट गर्न चाहनुहुन्छ भने खाली छोड्नुहोस्</translation>
 <translation id="3677106374019847299">आफूले रोजेको प्रदायकको नाम प्रविष्टि गर्नुहोस्</translation>
 <translation id="3677911431265050325">मोबाइल साइट अनुरोध गर्नुहोस्</translation>
@@ -2702,6 +2715,24 @@
 <translation id="3688526734140524629">च्यानल परिवर्तन गर्नुहोस्</translation>
 <translation id="3688578402379768763">नवीनतम</translation>
 <translation id="3688794912214798596">भाषाहरू बदल्नुहोस्...</translation>
+<translation id="3688944113090948433"><ph name="BEGIN_H3" />डिबग गर्ने सुविधाहरू<ph name="END_H3" />
+      <ph name="BR" />
+      तपाईं आफ्नो Chrome OS डिभाइसमा कस्टम कोड इन्स्टल गरी परीक्षण गर्ने प्रयोजनका लागि उक्त डिभाइसमा डिबग गर्ने सुविधाहरू अन गर्न सक्नुहुन्छ।  तपाईंले यसो गर्नुभयो भने तपाईं निम्न कार्य गर्न सक्नुहुन्छ:<ph name="BR" />
+      <ph name="BEGIN_LIST" />
+        <ph name="LIST_ITEM" />OS फाइलहरू परिमार्जन गर्न सकियोस् भन्नाका लागि rootfs सम्बन्धी प्रमाणीकरण हटाउने
+        <ph name="LIST_ITEM" /><ph name="BEGIN_CODE" />'cros flash'<ph name="END_CODE" /> जस्ता टुलहरू प्रयोग गरी डिभाइस चलाउन सकियोस् भन्नाका लागि मानक परीक्षण की प्रयोग गरी डिभाइसमा SSH प्रयोग गर्ने सुविधा अन गर्ने
+        <ph name="LIST_ITEM" />USB ड्राइभमार्फत OS इमेज इन्स्टल गर्न सकियोस् भन्नाका लागि USB बाट बुट गर्ने सुविधा अन गर्ने
+        <ph name="LIST_ITEM" />डिभाइसमा म्यानुअल तरिकाले SSH प्रयोग गर्न सकियोस् भन्नाका लागि dev तथा सिस्टम रुट दुवैको लग इन पासवर्ड कस्टम मान तय गर्ने
+      <ph name="END_LIST" />
+      <ph name="BR" />
+      धेरै डिबग गर्ने सुविधाहरू अन गरिसकेपछि ती सुविधाहरू इन्टरप्राइजले व्यवस्थापन गरेको डिभाइसमा भएको डेटा पावरवास गरेपछि वा मेटाएपछि पनि अन नै रहने छन्।  तपाईं सबै डिबग गर्ने सुविधा पूर्ण रूपमा अफ गर्न चाहनुहुन्छ भने Chrome OS रिकभर गर्ने प्रक्रिया पूरा गर्नुहोस् (https://support.google.com/chromebook/answer/1080595).
+      <ph name="BR" />
+      <ph name="BR" />
+      डिबग गर्ने सुविधाहरूका बारेमा थप जानकारीका लागि यहाँ जानुहोस्:<ph name="BR" />
+      https://www.chromium.org/chromium-os/how-tos-and-troubleshooting/debugging-features
+      <ph name="BR" />
+      <ph name="BR" />
+      <ph name="BEGIN_BOLD" />ध्यान राख्नुहोस्:<ph name="END_BOLD" />  यो प्रक्रियाका क्रममा सिस्टम रिबुट गरिने छ।</translation>
 <translation id="3690369331356918524">डेटा चोरीका घटनामा पासवर्डहरू खुलासा हुँदा तपाईंलाई चेतावनी दिन्छ</translation>
 <translation id="3691231116639905343">किबोर्डका एपहरू</translation>
 <translation id="3691267899302886494"><ph name="HOST" /> तपाईंको स्क्रिन आदान प्रदान गर्न चाहन्छ</translation>
@@ -2912,6 +2943,7 @@
 <translation id="3886446263141354045">यो साइटमाथि पहुँच राख्ने तपाईंको अनुरोध <ph name="NAME" /> लाई पठाइएको छ</translation>
 <translation id="3887022758415973389">डिभाइसको सूची देखाइयोस्</translation>
 <translation id="3888053818972567950"><ph name="WEB_DRIVE" /> कनेक्सन</translation>
+<translation id="3888491127874785636">CouldReady २.० सिस्टम इमेज राइटर</translation>
 <translation id="3888550877729210209"><ph name="LOCK_SCREEN_APP_NAME" /> मार्फत टिपोट लिँदै</translation>
 <translation id="3888586133700543064">यो जानकारीले हामीलाई तपाईंका सहायकसम्बन्धी समस्याहरू अझ राम्ररी बुझ्न मद्दत गर्छ। यो जानकारी ९० दिनसम्म भण्डारण गरिन्छ र अनुमति प्राप्त इन्जिनियरिङ तथा प्रतिक्रिया टोलीका सदस्यले मात्र यो जानकारी हेर्न तथा प्रयोग गर्न पाउँछन्।</translation>
 <translation id="3888900458694486810">छेउमा खुलेको Google Search पेज बन्द गर्नुहोस्</translation>
@@ -3002,6 +3034,7 @@
 <translation id="3962119236270174787">खतरनाक मानिने वेबसाइट, डाउनलोड र एक्स्टेन्सनहरूबाट स्तरीय सुरक्षा</translation>
 <translation id="3963721102035795474">पाठक मोड:</translation>
 <translation id="3964480518399667971">सेलुलर नेटवर्क अफ गर्नुहोस्</translation>
+<translation id="39650333289039736">तपाईंका एप, सेटिङ र अन्य कस्टमाइजेसनहरू तपाईंले आफ्नो Google खातामार्फत साइन इन गरेका CloudReady २.० चल्ने सबै डिभाइसहरूमा सिंक हुने छन्।</translation>
 <translation id="3965811923470826124">यससँग</translation>
 <translation id="3965965397408324205">बाहिरिन निस्कनुहोस् <ph name="PROFILE_NAME" /></translation>
 <translation id="3966072572894326936">अर्को फोल्डर रोज्नुहोस्...</translation>
@@ -3149,6 +3182,7 @@
 <translation id="4112194537011183136"><ph name="DEVICE_NAME" /> (अफलाइन)</translation>
 <translation id="4115002065223188701">नेटवर्क पहुँचको दायराभन्दा बाहिर छ</translation>
 <translation id="4115378294792113321">म्याग्नेटा</translation>
+<translation id="4116704186509653070">फेरि खोल्नुहोस्</translation>
 <translation id="4117637339509843559">अँध्यारो मोड</translation>
 <translation id="4117714603282104018">टचप्याडको हेप्टिक फिडब्याक</translation>
 <translation id="4118579674665737931">कृपया यन्त्र पुनः बुट गरी फेरि प्रयास गर्नुहोस्।</translation>
@@ -3369,6 +3403,7 @@
 <translation id="4369121877634339065">खोज्नका लागि फोटोमा ड्र्याग गर्नुहोस्</translation>
 <translation id="4369215744064167350">तपाईंले वेबसाइट हेर्न पाऊँ भनी गर्नुभएको अनुरोध अनुमोदन गरिएको छ</translation>
 <translation id="4370975561335139969">तपाईँले प्रविष्टि गर्नुभएको इमेल र पासवर्ड मेल खाँदैनन्</translation>
+<translation id="4371179719793593133">तपाईंले आफ्नो Google खातामार्फत साइन इन गरेका CloudReady २.० चल्ने डिभाइसहरूमा तपाईंका एप तथा सेटिङ सिंक हुने छन्। तपाईं ब्राउजरका सिंकसम्बन्धी विकल्पहरू हेर्न चाहनुहुन्छ भने <ph name="LINK_BEGIN" />Chrome का सेटिङ<ph name="LINK_END" />मा जानुहोस्।</translation>
 <translation id="4373966964907728675">डेस्कटप Cast गर्दै</translation>
 <translation id="4374831787438678295">Linux को स्थापनाकर्ता</translation>
 <translation id="4375035964737468845">डाउनलोड गरिएका फाइलहरू खोल्नुहोस्</translation>
@@ -3474,6 +3509,7 @@
 <translation id="4477015793815781985">Ctrl, Alt वा ⌘ समावेश गर्नुहोस्</translation>
 <translation id="4478664379124702289">यसको रूपमा लिङ्&amp;कलाई बचत गर्नुहोस्...</translation>
 <translation id="4479424953165245642">kiosk अनुप्रयोगहरूको व्यवस्थापन गर्नुहोस्</translation>
+<translation id="4479481745547029647">Google Chrome र CloudReady २.० का अतिरिक्त सर्तहरू</translation>
 <translation id="4479639480957787382">इथरनेट</translation>
 <translation id="4479877282574735775">भर्चुअल मेसिन कन्फिगर गर्दै। यस कार्यमा केही मिनेट लाग्न सक्छ।</translation>
 <translation id="4480590691557335796">Chrome ले तपाईंको कम्प्युटरमा हानिकारक सफ्टवेयर भेट्टाउन र त्यसलाई हटाउन सक्छ</translation>
@@ -3639,6 +3675,7 @@
 <translation id="4638930039313743000">ADB डिबग प्रक्रिया सक्षम पार्नुहोस्</translation>
 <translation id="4641539339823703554">प्रणाली समय सेट गर्न Chrome असफल भयो। कृपया तल समय हेर्नुहोस् र आवश्यक भएको खण्डमा ठिक बनाउनुहोस्।</translation>
 <translation id="4643612240819915418">&amp;नयाँ ट्याबमा भिडियो खोल्नुहोस्</translation>
+<translation id="4643833688073835173">तपाईंको Chromebook ले अन्तर्निर्मित सेन्सर प्रयोग गरेर तपाईंको डिभाइसअगाडि कोही छ कि छैन भन्ने कुरा पत्ता लगाउँछ। सबै डेटा तुरुन्तै तपाईंको डिभाइसमै प्रोसेस गरिन्छ अनि मेटाइन्छ। सेन्सरमार्फत सङ्कलन गरिएको डेटा कहिल्यै पनि Google मा पठाइँदैन।</translation>
 <translation id="4644205769234414680">इन्कोग्निटो मोडमा अनुमति दिनुहोस्</translation>
 <translation id="4645676300727003670">&amp;राख्नुहोस्</translation>
 <translation id="4646675363240786305">पोर्टहरू</translation>
@@ -3652,6 +3689,7 @@
 <translation id="4653405415038586100">Linux कन्फिगर गर्ने क्रममा त्रुटि भयो</translation>
 <translation id="4654236001025007561">आफू वरपरका Chromebook तथा Android यन्त्रसँग फाइलहरू सेयर गर्नुहोस्</translation>
 <translation id="4657914796247705218">TrackPoint को गति</translation>
+<translation id="4658285806588491142">आफ्नो डिभाइसको स्क्रिन गोप्य राख्नुहोस्</translation>
 <translation id="465878909996028221">ब्राउजर रिडिरेक्ट गर्न http, https तथा फाइल प्रोटोकललाई मात्र समर्थन गरिन्छ।</translation>
 <translation id="4659126640776004816">तपाईंले आफ्नो Google खातामा साइन इन गर्दा यो सुविधा सक्रिय गरिन्छ।</translation>
 <translation id="4660465405448977105">{COUNT,plural, =1{फोटो}other{# वटा फोटो}}</translation>
@@ -3700,6 +3738,7 @@
 <translation id="4699357559218762027">(स्वत: सुरुवात गरिएको)</translation>
 <translation id="4701025263201366865">अभिभावकको साइन इन</translation>
 <translation id="4701335814944566468">हिजो हेरिएको</translation>
+<translation id="4701540735981103145">तपाईंका एड्मिनले साइन इन गर्ने सुविधा ब्लक गर्नुभएको छ</translation>
 <translation id="4707337002099455863">सधैँ सबै साइटमा</translation>
 <translation id="4708794300267213770">शयन अवस्थाबाट सक्रिय पार्दा लक स्क्रिन देखाउनुहोस्</translation>
 <translation id="4708849949179781599"><ph name="PRODUCT_NAME" /> छोड्नुहोस्</translation>
@@ -3899,6 +3938,7 @@
 <translation id="4917385247580444890">बलियो</translation>
 <translation id="4918021164741308375"><ph name="ORIGIN" /> ले एक्सटेन्सन "<ph name="EXTENSION_NAME" />" सँग कुराकानी गर्न चाहन्छ</translation>
 <translation id="4918086044614829423">स्वीकार्नुहोस्</translation>
+<translation id="4918134162946436591">हिन्ट ओभरले देखाइयोस्</translation>
 <translation id="4921348630401250116">टेक्स्ट-टू-स्पिच</translation>
 <translation id="4921809350408880559">तपाईंले Google Drive प्रयोग गरी विगतमा गर्नुभएका क्रियाकलापका आधारमा तपाईंलाई 'तपाईंका हालसालैका' र 'सिफारिस गरिएका' डकुमेन्टहरू देखाइएको हो।
         <ph name="BREAK" />
@@ -3930,6 +3970,7 @@
 <translation id="4944310289250773232">यो प्रमाणीकरण सेवा <ph name="SAML_DOMAIN" /> ले होस्ट गरेको हो</translation>
 <translation id="4945439665401275950">तपाईं आफ्ना बच्चाको फिंगरप्रिन्ट सेटअप गर्न चाहनुहुन्छ भने उनलाई पावर बटनमा छुन लगाउनुहोस्। तपाईंका बच्चाको फिंगरप्रिन्ट डेटा सुरक्षित रूपमा भण्डारण गरिन्छ र यो डेटा कहिल्यै पनि यस <ph name="DEVICE_TYPE" /> बाट अन्यत्र पठाइँदैन।</translation>
 <translation id="4946459324029651239">तपाईंले मानक सुरक्षा प्राप्त गरिरहनुभएको छ</translation>
+<translation id="4950993567860689081">तपाईंको संस्थाले तपाईंको सत्र व्यवस्थापन गर्छ। एड्मिनहरू तपाईंको प्रोफाइल मेटाउन सक्छन्। साथै, उनीहरू तपाईंको नेटवर्क ट्राफिकको निरीक्षण गर्न पनि सक्छन्।</translation>
 <translation id="495164417696120157">{COUNT,plural, =1{एउटा फाइल}other{# वटा फाइल}}</translation>
 <translation id="495170559598752135">कार्यहरू</translation>
 <translation id="4953808748584563296">डिफल्ट सुन्तला रङ्गको अवतार</translation>
@@ -4069,6 +4110,7 @@
 <translation id="5111646998522066203">इन्कोग्निटो मोडबाट बाहिर निस्कनुहोस्</translation>
 <translation id="5111692334209731439">&amp;बुकमार्क व्यवस्थापक</translation>
 <translation id="5112577000029535889">&amp;विकासकर्ता उपकरणहरू</translation>
+<translation id="511313294362309725">फास्ट पेयर अन गर्नुहोस्</translation>
 <translation id="5113739826273394829">यदि तपाईं यो प्रतिमामा क्लिक गर्नुहुन्छ भने, तपाईंले म्यानुअल तरिकाले यस <ph name="DEVICE_TYPE" /> लक गर्नुहुने छ। अर्को समय, तपाईंले प्रविष्ट गर्नुअघि आफ्नो पासवर्ड टाइप गर्न आवश्यक छ।</translation>
 <translation id="51143538739122961">आफ्नो सुरक्षा साँचो प्रविष्टि गर्नुहोस् र यसलाई छोएर सक्रिय गर्नुहोस्</translation>
 <translation id="5115309401544567011">कृपया आफ्नो <ph name="DEVICE_TYPE" /> लाई पावर स्रोतमा जोड्नुहोस्‌।</translation>
@@ -4599,6 +4641,7 @@
 <translation id="5648166631817621825">पछिल्ला ७ दिन</translation>
 <translation id="5651308944918885595">नजिकैका डिभाइससँग सेयर गर्ने सुविधामा भएको 'भेटिने क्षमता' नामक विकल्प</translation>
 <translation id="5653154844073528838">तपाईंसँग सुरक्षित गरिएका <ph name="PRINTER_COUNT" /> प्रिन्टरहरू छन्।</translation>
+<translation id="5654266266024827740">तपाईं CloudReady २.० मा पहिले नै इन्स्टल गरिएको ChromeVox नामक स्क्रिन रिडर एक्टिभेट गर्न चाहनुहुन्छ? तपाईं ChromeVox एक्टिभेट गर्न चाहनुहुन्छ भने स्पेस बार की थिच्नुहोस्।</translation>
 <translation id="5655296450510165335">डिभाइस दर्ता गर्ने प्रक्रिया</translation>
 <translation id="5656845498778518563">Google लाई प्रतिक्रिया पठाउनुहोस्</translation>
 <translation id="5657156137487675418">सबै कुकीहरूलाई अनुमति दिनुहोस्</translation>
@@ -4683,6 +4726,7 @@
 <translation id="5747552184818312860">म्याद सकिन्छ</translation>
 <translation id="5747785204778348146">विकासकर्ता - अस्थिर</translation>
 <translation id="5747809636523347288">टाँस्नुहोस् र <ph name="URL" /> मा जानुहोस्</translation>
+<translation id="5747845802829012825">तपाईं Linux सेटअप गर्ने कार्य पूरा गर्न चाहनुहुन्छ भने CloudReady २.० अपडेट गर्नुहोस् र फेरि प्रयास गर्नुहोस्।</translation>
 <translation id="5755022574660047665">Google Photos मा भएका स्मरणीय क्षणहरू</translation>
 <translation id="5756163054456765343">मद्द&amp;त केन्द्र</translation>
 <translation id="5757375109985023827">प्रिभ्यू हेर्न कुनै ट्याब चयन गर्नुहोस्</translation>
@@ -4809,6 +4853,8 @@
 <translation id="5883356647197510494"><ph name="PERMISSION_1" /> र <ph name="PERMISSION_2" /> सम्बन्धी अनुमति स्वतः ब्लक गरिएका छन्</translation>
 <translation id="5884474295213649357">यो ट्याब एउटा USB यन्त्रमा जडान गरिएको अवस्थामा छ।</translation>
 <translation id="5886009770935151472">औँला १</translation>
+<translation id="5886325049116255797">तपाईंले आफ्नो Google खातामार्फत साइन इन गर्नुभयो भने तपाईं आफूले सेभ गरेका प्राथमिकता तथा क्रियाकलाप CloudReady २.० चल्ने जुनसुकै डिभाइसमा प्राप्त गर्न सक्नु हुने छ। तपाईं सेटिङमा गई आफूले सिंक गर्न चाहेका कुराहरू छनौट गर्न सक्नुहुन्छ।</translation>
+<translation id="5888843733007437002">टेम्प्लेटहरू हेरिँदै छ। तपाईं नेभिगेट गर्न चाहनुहुन्छ भने ट्याब की थिच्नुहोस्।</translation>
 <translation id="5889282057229379085">मध्यवर्ती CA हरूको अधिकतम सङ्ख्या: <ph name="NUM_INTERMEDIATE_CA" /></translation>
 <translation id="5891688036610113830">रोजाइका Wi-Fi नेटवर्कहरू</translation>
 <translation id="5895138241574237353">पुन: शुरू गर्नुहोस्</translation>
@@ -4862,6 +4908,7 @@
 <translation id="5939719276406088041">सर्टकट सिर्जना गर्न सकिँदैन</translation>
 <translation id="594048410531370124">यो की पहिचान हुन सकेन। <ph name="RESPONSE" /> कुनै की थिच्नुहोस्।</translation>
 <translation id="5941153596444580863">व्यक्ति थप्नुहोस्...</translation>
+<translation id="5941176400377813459">CloudReady २.० चल्ने डिभाइस र त्यसका कम्पोनेन्टका क्रम सङ्ख्या रिड गर्ने।</translation>
 <translation id="5941343993301164315">कृपया <ph name="TOKEN_NAME" /> मा साइन इन गर्नुहोस्।</translation>
 <translation id="5941711191222866238">सानो बनाउनुहोस</translation>
 <translation id="5942779427914696408">यन्त्रको भिजिबिलिटी</translation>
@@ -4874,6 +4921,24 @@
 <translation id="5950819593680344519">Chrome ले तपाईंको कम्प्युटरमा कुनै हानिकारक सफ्टवेयर भेट्टाएन • हिजो जाँच गरिएको</translation>
 <translation id="5951303645598168883"><ph name="ORIGIN" /> स्थानीय फन्ट प्रयोग गर्न चाहन्छ</translation>
 <translation id="5951624318208955736">मनिटर</translation>
+<translation id="5953627503079109298"><ph name="BEGIN_H3" />डिबग गर्ने सुविधाहरू<ph name="END_H3" />
+      <ph name="BR" />
+      तपाईं आफ्नो CloudReady २.० चल्ने डिभाइसमा कस्टम कोड इन्स्टल गरी परीक्षण गर्ने प्रयोजनका लागि उक्त डिभाइसमा डिबग गर्ने सुविधाहरू अन गर्न सक्नुहुन्छ।  तपाईंले यसो गर्नुभयो भने तपाईं निम्न कार्य गर्न सक्नुहुन्छ:<ph name="BR" />
+      <ph name="BEGIN_LIST" />
+        <ph name="LIST_ITEM" />OS फाइलहरू परिमार्जन गर्न सकियोस् भन्नाका लागि rootfs सम्बन्धी प्रमाणीकरण हटाउने
+        <ph name="LIST_ITEM" /><ph name="BEGIN_CODE" />'cros flash'<ph name="END_CODE" /> जस्ता टुलहरू प्रयोग गरी डिभाइस चलाउन सकियोस् भन्नाका लागि मानक परीक्षण की प्रयोग गरी डिभाइसमा SSH प्रयोग गर्ने सुविधा अन गर्ने
+        <ph name="LIST_ITEM" />USB ड्राइभमार्फत OS इमेज इन्स्टल गर्न सकियोस् भन्नाका लागि USB बाट बुट गर्ने सुविधा अन गर्ने
+        <ph name="LIST_ITEM" />डिभाइसमा म्यानुअल तरिकाले SSH प्रयोग गर्न सकियोस् भन्नाका लागि dev तथा सिस्टम रुट दुवैको लग इन पासवर्ड कस्टम मान तय गर्ने
+      <ph name="END_LIST" />
+      <ph name="BR" />
+      धेरै डिबग गर्ने सुविधाहरू अन गरिसकेपछि ती सुविधाहरू इन्टरप्राइजले व्यवस्थापन गरेको डिभाइसमा भएको डेटा पावरवास गरेपछि वा मेटाएपछि पनि अन नै रहने छन्।  तपाईं सबै डिबग गर्ने सुविधा पूर्ण रूपमा अफ गर्न चाहनुहुन्छ भने Chrome OS रिकभर गर्ने प्रक्रिया पूरा गर्नुहोस् (https://support.google.com/chromebook/answer/1080595)।
+      <ph name="BR" />
+      <ph name="BR" />
+      डिबग गर्ने सुविधाहरूका बारेमा थप जानकारीका लागि यहाँ जानुहोस्:<ph name="BR" />
+      https://www.chromium.org/chromium-os/how-tos-and-troubleshooting/debugging-features
+      <ph name="BR" />
+      <ph name="BR" />
+      <ph name="BEGIN_BOLD" />ध्यान राख्नुहोस्:<ph name="END_BOLD" />  यो प्रक्रियाका क्रममा सिस्टम रिबुट गरिने छ।</translation>
 <translation id="5955282598396714173">तपाईंको पासवर्डको म्याद समाप्त भएको छ। यसलाई परिवर्तन गर्न कृपया साइन आउट गर्नुहोस्, त्यसपछि फेरि साइन इन गर्नुहोस्।</translation>
 <translation id="5955304353782037793">एप</translation>
 <translation id="5955721306465922729">कुनै वेबसाइटले यो एप खोल्न चाहन्छ।</translation>
@@ -4966,6 +5031,7 @@
     <ph name="BEGIN_PARAGRAPH3" />तपाईंले यो सुविधा अफ गर्नुभयो भने पनि यो डिभाइसले पहिले जस्तै सिस्टम अपडेट र सुरक्षा जस्ता अत्यावश्यक सेवाहरूलाई चाहिने जानकारी पठाइराख्न सक्छ।<ph name="END_PARAGRAPH3" />
     <ph name="BEGIN_PARAGRAPH4" />तपाईंका बच्चाको Google खाताका हकमा "वेब तथा एपसम्बन्धी गतिविधि" सेटिङ अन गरिएको छ भने Android मा भएको तपाईंका बच्चाको डेटा उहाँको Google खातामा सेभ गरिन सक्छ। तपाईं यी सेटिङका बारेमा र यी सेटिङ मिलाउने तरिकाका बारेमा थप जान्न चाहनुहुन्छ भने families.google.com मा जानुहोस्।<ph name="END_PARAGRAPH4" /></translation>
 <translation id="6052284303005792909">•</translation>
+<translation id="6052488962264772833">तपाईं कास्ट गर्न थाल्न चाहनुहुन्छ भने एक्सेस कोड टाइप गर्नुहोस्</translation>
 <translation id="6052976518993719690">SSL प्रमाणीकरण अधिकारी</translation>
 <translation id="6053401458108962351">&amp;ब्राउजिङ लगत खालि गर्नुहोस्...</translation>
 <translation id="6054284857788651331">हालसालै बन्द गरिएको ट्याब समूह</translation>
@@ -5003,6 +5069,7 @@
 <translation id="6078769373519310690">"<ph name="CHROME_EXTENSION_NAME" />" कुनै HID यन्त्रमा जडान गर्न चाहन्छ</translation>
 <translation id="608029822688206592">कुनै पनि नेटवर्क भेट्टिएन। कृपया डिभाइसमा आफ्नो SIM हाल्नुहोस् र फेरि प्रयास गर्नुहोस्।</translation>
 <translation id="6080689532560039067">तपाईंको प्रणाली समय जाँच्नुहोस्</translation>
+<translation id="6082877069782862752">की म्याप गर्ने सुविधा</translation>
 <translation id="608496399798299674">CloudReady २.०</translation>
 <translation id="608531959444400877"><ph name="WINDOW_TITLE" /> - नामविहीन समूहको अंश</translation>
 <translation id="6085886413119427067">यसले सुरक्षित इन्टरनेटमार्फत वेबसाइटहरूमा जोडिने तरिका निर्धारण गर्छ</translation>
@@ -5171,6 +5238,7 @@
 <translation id="6254503684448816922">मुख्य सम्झौता</translation>
 <translation id="6254892857036829079">उत्कृष्ट</translation>
 <translation id="6257602895346497974">सिंक गर्ने सुविधा सक्रिय गर्नुहोस्...</translation>
+<translation id="62586649943626337">ट्याब समूहहरू बनाएर ती समूहमा आफ्ना ट्याबहरू मिलाएर राख्नुहोस्</translation>
 <translation id="625895209797312329">साइटहरूलाई तपाईंको डिभाइसमा इन्स्टल गरिएका फन्ट प्रयोग गर्न रोक लगाउनुहोस्</translation>
 <translation id="6262371516389954471">तपाईंका ब्याकअपहरू Google मा अपलोड गरी तपाईंको Google खाताको पासवर्ड प्रयोग गरेर इन्क्रिप्ट गरिन्छन्।</translation>
 <translation id="6263082573641595914">Microsoft CA संस्करण</translation>
@@ -5551,6 +5619,7 @@
 <translation id="6644513150317163574">URL को अमान्य ढाँचा। SSO प्रमाणीकरण प्रयोग गरिएका बेला सर्भर अनिवार्य रूपमा होस्टका रूपमा तोकिनु पर्छ।</translation>
 <translation id="6644846457769259194">तपाईँको यन्त्रलाई अद्यावधिक गर्दै (<ph name="PROGRESS_PERCENT" />)</translation>
 <translation id="6645437135153136856">चयन गरिएको Google Cloud Print यन्त्र अब उप्रान्त समर्थित छैन। <ph name="BR" /> आफ्नो कम्प्युटरको प्रणालीसम्बन्धी सेटिङहरूमा गई प्रिन्टर सेटअप गरी हेर्नुहोस्।</translation>
+<translation id="6646476869708241165">फास्ट पेयर अफ गर्नुहोस्</translation>
 <translation id="6647228709620733774">नेटस्केप प्रमाणपत्र अनुमति रिभोकेशन URL</translation>
 <translation id="6647441008198474441">तपाईंले यसपछि खोल्न सक्ने साइट पूर्वानुमान गर्ने प्रयोजनका लागि तपाईंले खोल्ने URL हरू Google मा पठाइन्छन्</translation>
 <translation id="6648911618876616409">एउटा महत्त्वपूर्ण अद्यावधिक स्थापनाका लागि तयार छ। सुरु गर्न साइन इन गर्नुहोस्‌।</translation>
@@ -5660,6 +5729,7 @@
 <translation id="6770602306803890733">तपाईं र वेब प्रयोग गर्ने सम्पूर्ण प्रयोगकर्ताहरूलाई झन् सुरक्षित राख्छ</translation>
 <translation id="6771503742377376720">एउटा प्रमाणीकरण अधिकार हो</translation>
 <translation id="6775163072363532304">उपलब्ध डिभाइस यहाँ देखिने छन्।</translation>
+<translation id="6776729248872343918">फास्ट पेयर अन गर्नुहोस्</translation>
 <translation id="6777817260680419853">रिडिरेक्ट गर्न रोक लगाइयो</translation>
 <translation id="6778737459546443941">तपाईंको अभिभावले अझै पनि यसलाई अनुमोदन गर्नुभएको छैन</translation>
 <translation id="6779092717724412415">तपाईं यो जस्तै हाइलाइट बनाउन चाहनुहुन्छ भने कुनै टेक्स्ट चयन गर्नुहोस् र दायाँ क्लिक गर्नुहोस्।</translation>
@@ -5717,7 +5787,9 @@
 <translation id="6813907279658683733">पूर्ण स्क्रिन</translation>
 <translation id="6817174620439930047">कुनै साइटले MIDI यन्त्रहरूमाथि पहुँच गर्नका लागि प्रणालीका विशिष्ट सन्देशहरू प्रयोग गर्न खोज्दा सोध्नुहोस् (सिफारिस गरिएको)</translation>
 <translation id="6818198425579322765">अनुवाद गरिनु पर्ने पृष्ठको भाषा</translation>
+<translation id="6818640747323584611">CloudReady २.० को पर्फर्मेन्स र यसका सुविधाहरूको गुणस्तर सुधार्न सघाउनुहोस्</translation>
 <translation id="6818802132960437751">अन्तर्निर्मित भाइरस प्रोटेक्सन</translation>
+<translation id="6819741204334296334">'kiosk_only' म्यानिफेस्ट विशेषता भएको एप अनिवार्य रूपमा CloudReady २.० को किओस्क मोडमा इन्स्टल गर्नु पर्छ</translation>
 <translation id="682123305478866682">डेस्कटप cast गर्नुहोस्</translation>
 <translation id="6823174134746916417">टचप्याडको क्लिक गर्न ट्याप गर्नुहोस् नामक सुविधा</translation>
 <translation id="6824564591481349393">&amp;इमेल ठेगाना कपी गर्नुहोस्</translation>
@@ -5787,6 +5859,7 @@
 <translation id="6889957081990109136">अहिलेसम्म स्विच असाइन गरिएको छैन</translation>
 <translation id="6892812721183419409"><ph name="USER" /> को रूपमा लिंक खोल्नुहोस्</translation>
 <translation id="6895032998810961280">अनावश्यक सफ्टवेयर पत्ता लगाउने र हटाउने क्रममा तपाईंको कम्प्युटरमा फेला परेका हानिकारक सफ्टवेयर, सिस्टमका सेटिङ र प्रक्रियासम्बन्धी विवरणहरू Google मा रिपोर्ट गर्नुहोस्</translation>
+<translation id="6895902329218596456"><ph name="MANAGER" /> ले <ph name="USER_EMAIL" /> व्यवस्थापन गर्नुहुन्छ र तपाईंका एड्मिनले दोस्रो खाता प्रयोग गरी साइन इन गर्न नमिल्ने बनाउनुभएको छ</translation>
 <translation id="6896758677409633944">प्रतिलिपि गर्नुहोस्</translation>
 <translation id="6897363604023044284">हटाउनु पर्ने साइटहरू छनौट गर्नुहोस्</translation>
 <translation id="6898440773573063262">किओस्क एप्लिकेसनहरूलाई यस यन्त्रमा स्वत: सुरुवातका लागि अब कन्फिगर गर्न सकिन्छ।</translation>
@@ -6175,6 +6248,7 @@
 <translation id="730515362922783851">स्थानीय नेटवर्क वा इन्टरनेटमा कुनै पनि यन्त्रमार्फत डेटा सेयर गर्नुहोस्</translation>
 <translation id="7306521477691455105"><ph name="USB_DEVICE_NAME" /> <ph name="USB_VM_NAME" /> मा कनेक्ट गर्न सेटिङ खोल्नुहोस्</translation>
 <translation id="7307129035224081534">पज गरियो</translation>
+<translation id="7307719647623535470">CloudReady २.० का सेटिङमा गई Secure DNS व्यवस्थापन गर्नुहोस्</translation>
 <translation id="7308643132139167865">वेबसाइटका भाषाहरू</translation>
 <translation id="7310598146671372464">लग इन गर्न सकिएन। सर्भरले Kerberos नामक तोकिएको इन्क्रिप्सनका प्रकारहरूलाई समर्थन गर्दैन। आफ्नो प्रशासकसँग सम्पर्क गर्नुहोस्।</translation>
 <translation id="7312210124139670355">तपाईंका एड्मिन तपाईंको eSIM रिसेट गर्दै हुनुहुन्छ। यो कार्य पूरा हुन केही बेर लाग्न सक्छ।</translation>
@@ -6569,6 +6643,7 @@
 <translation id="7691163173018300413">"Ok Google"</translation>
 <translation id="7691698019618282776">Crostini अपग्रेड गर्नुहोस्</translation>
 <translation id="769375405463525957">तपाईं आफ्नो डिभाइसबाट टाढा जानुभयो भने तपाईंको डिभाइसको स्क्रिन स्वतः लक हुन्छ। तपाईं आफ्नो डिभाइसको अगाडि हुँदा तपाईंको डिभाइसको स्क्रिन अन रहने छ।</translation>
+<translation id="7694052127939518600">तपाईं "फाइलहरू" एपका सहायताले आफूले Google Drive, बाह्य भण्डारण वा CloudReady २.० चल्ने डिभाइसमा सेभ गरेका फाइलहरू द्रुत रूपमा हेर्न तथा प्रयोग गर्न सक्नुहुन्छ।</translation>
 <translation id="7694246789328885917">हाइलाइट गर्ने टुल</translation>
 <translation id="7696063401938172191">तपाईंको <ph name="PHONE_NAME" /> मा:</translation>
 <translation id="7697166915480294040">तपाईंले आफ्नो स्क्रिन सेयर गरिरहेका बेला सूचनाका विवरणहरू लुकाइन्छन्</translation>
@@ -6634,6 +6709,7 @@
 <translation id="7758143121000533418">Family Link</translation>
 <translation id="7758450972308449809">आफ्नो प्रदर्शनका सीमाहरूलाई समायोजन गर्नुहोस्</translation>
 <translation id="7760004034676677601">के तपाइँले अपेक्षा गरिरहनुभएको सुरुवात पृष्ठ यो हो?</translation>
+<translation id="7762463735017901568">तपाईंको फोनका एड्मिनले सूचना सिंक गर्ने सुविधा अफ गर्नुभएको छ</translation>
 <translation id="7764225426217299476">ठेगाना थप्नुहोस्</translation>
 <translation id="7764256770584298012"><ph name="DOWNLOAD_DOMAIN" /> देखि <ph name="DOWNLOAD_RECEIVED" /></translation>
 <translation id="7765158879357617694">सार्नुहोस्</translation>
@@ -6819,6 +6895,7 @@
 <translation id="7935451262452051102"><ph name="PERCENT" />% पूरा भयो</translation>
 <translation id="7938594894617528435">हाल अफलाइन</translation>
 <translation id="7939062555109487992">उन्नत विकल्पहरू</translation>
+<translation id="7939321852721702336">तपाईं CloudReady २.० का डिबग गर्ने सुविधाहरू अन गर्दै हुनुहुन्छ। ती सुविधा अन भएपछि sshd daemon सेटअप गरिनुका साथै USB ड्राइभबाट बुट गर्ने सुविधा अन गरिने छ।</translation>
 <translation id="7939412583708276221">जसो भएता पनि राख्नुहोस्</translation>
 <translation id="7942349550061667556">रातो</translation>
 <translation id="7943368935008348579">PDF फाइलहरू डाउनलोड गरियोस्</translation>
@@ -6966,6 +7043,7 @@
 <translation id="8076492880354921740">ट्याबहरू</translation>
 <translation id="8076835018653442223">तपाईंको प्रशासकले तपाईंको डिभाइसमा रहेका स्थानीय फाइलहरूमाथिको पहुँचलाई असक्षम पार्नुभएको छ</translation>
 <translation id="808089508890593134">Google</translation>
+<translation id="8081623398548615289"><ph name="MANAGER_NAME" /> ले तपाईंको सत्र व्यवस्थापन गर्नुहुन्छ। एड्मिनहरू तपाईंको प्रोफाइल मेटाउन सक्छन्। साथै, उनीहरू तपाईंको नेटवर्क ट्राफिकको निरीक्षण गर्न पनि सक्छन्।</translation>
 <translation id="8081989000209387414">ADB डिबग प्रक्रिया असक्षम पार्ने हो?</translation>
 <translation id="8082106343289440791">"<ph name="DEVICE_NAME" />" सँग जोडा बनाउने हो?</translation>
 <translation id="8082390128630131497">ADB डिबग प्रक्रिया असक्षम पार्नुले <ph name="DEVICE_TYPE" /> का सेटिङ रिसेट गरी फ्याक्ट्री संस्करणमा लैजाने छ। प्रयोगकर्ताका सबै खाता र स्थानीय डेटा मेटाइने छन्।</translation>
@@ -7513,6 +7591,7 @@
 <translation id="8665110742939124773">तपाईंले गलत एक्सेस कोड हाल्नुभएको छ। फेरि प्रयास गर्नुहोस्।</translation>
 <translation id="8665180165765946056">ब्याकअप सम्पन्न भयो</translation>
 <translation id="866611985033792019">इमेल प्रयोगकर्ताहरूको पहिचान गर्न यो प्रमाणपत्रमाथि विश्वास गर्नुहोस्</translation>
+<translation id="8666224701549693691">डाइग्नोस्टिकसम्बन्धी परीक्षणहरू गर्न CloudReady २.० चलाउनुहोस्।</translation>
 <translation id="8666584013686199826">कुनै साइटले USB यन्त्रहरूमाथि पहुँच राख्न खोज्दा सोध्नुहोस्</translation>
 <translation id="8667328578593601900"><ph name="FULLSCREEN_ORIGIN" /> अहिले फुल स्क्रिन छ र तपाईंको माउस कर्सरलाई अक्षम गराएको छ।</translation>
 <translation id="8668052347555487755">रङ मोड</translation>
@@ -7565,6 +7644,7 @@
 <translation id="8719472795285728850">विस्तारसम्बन्धी क्रियाकलापका लागि स्ट्रिम सुन्दै...</translation>
 <translation id="8719653885894320876"><ph name="PLUGIN_NAME" /> डाउनलोड असफल भयो</translation>
 <translation id="8720200012906404956">मोबाइल नेटवर्कको खोजी गर्दै। <ph name="BEGIN_LINK" />थप जान्नुहोस्<ph name="END_LINK" /></translation>
+<translation id="8720781020694544444">दुर्भाग्यवश, तपाईंको कम्प्युटर गलत हार्डवेयर ID प्रयोग गरी कन्फिगर गरिएको छ। यसले गर्दा CloudReady २.० मा सुरक्षासम्बन्धी नयाँ समाधानहरू अपडेट गर्न पाइँदैन र तपाईंको कम्प्युटरमाथि <ph name="BEGIN_BOLD" />हानिकारक आक्रमणहरूको जोखिम हुन सक्छ<ph name="END_BOLD" />।</translation>
 <translation id="8720816553731218127">स्थापना समयका विशेषताहरू सुरुवात हुने समयावधि सकिएको छ।</translation>
 <translation id="8722912030556880711">प्रयोग तथा निदानसम्बन्धी डेटा पठाउनुहोस्। यो यन्त्रले हाल निदान, डिभाइस र एपको उपयोगसम्बन्धी डेटा स्वतः Google मा पठाइरहेको छ। यसले प्रणाली तथा एपको स्थिरता र थप कुराहरू सुधार गर्न मद्दत गर्ने छ। केही एकीकृत डेटाले Google का एप तथा Android का विकासकर्ता जस्ता साझेदारहरूलाई पनि मद्दत गर्ने छ। तपाईंको खातामा वेब तथा एपसम्बन्धी अतिरिक्त क्रियाकलापको सेटिङ सक्रिय गरिएको छ भने यो डेटा तपाईंको Google खातामा सुरक्षित गरिन सक्छ। <ph name="BEGIN_LINK2" />थप जान्नुहोस्<ph name="END_LINK2" /></translation>
 <translation id="8724405322205516354">यो आइकन देख्दा आफ्नो पहिचान दिन वा खरिदहरूको अनुमोदन गर्न आफ्नो फिंगरप्रिन्ट प्रयोग गर्नुहोस्‌</translation>
@@ -7750,6 +7830,7 @@
 <translation id="8890516388109605451">स्रोतहरू</translation>
 <translation id="8890529496706615641">प्रोफाइलको नाम बदल्न सकिएन। कृपया फेरि प्रयास गर्नुहोस् वा प्राविधिक सहायता प्राप्त गर्न आफ्नो मोबाइल सेवा प्रदायकसँग सम्पर्क गर्नुहोस्।</translation>
 <translation id="8892168913673237979">सबै सेट गर्नुहोस्!</translation>
+<translation id="8893116021193670489">तपाईंको कम्प्युटरमा विश्वसनीय प्लेटफर्म मोड्युल (TPM) सुरक्षा डिभाइस छ। CloudReady २.० मा सुरक्षासम्बन्धी धेरै महत्त्वपूर्ण सुविधाहरू लागू गर्नका लागि उक्त डिभाइस प्रयोग गरिन्छ। तपाईं यसका सम्बन्धमा थप जान्न चाहनुहुन्छ भने Chromebook को मद्दत केन्द्रमा जानुहोस्: https://support.google.com/chromebook/?p=tpm</translation>
 <translation id="8893801527741465188">स्थापना रद्द गर्ने कार्य सम्पन्न भयो</translation>
 <translation id="8893928184421379330">माफ गर्नुहोस्, यन्त्र <ph name="DEVICE_LABEL" /> पहिचान गर्न सकिएन।</translation>
 <translation id="8894761918470382415">सहायक यन्त्रलाई डेटा प्रयोग गर्न रोक लगाउने सुविधा</translation>
@@ -7883,6 +7964,7 @@
 <translation id="9030855135435061269"><ph name="PLUGIN_NAME" /> अब उप्रान्त प्रयोग गर्न मिल्दैन</translation>
 <translation id="9031549947500880805">Google ड्राइभमा ब्याकअप गर्नुहोस् जुनसुकै बेला सजिलैसँग आफ्नो डेटा पुनर्स्थापना गर्नुहोस् वा यन्त्र बदल्नुहोस्। तपाईंको ब्याकअपमा एपको डेटा समावेश हुन्छ।</translation>
 <translation id="9031811691986152304">फेरि प्रयास गर्नुहोस्</translation>
+<translation id="9032097289595078011">फास्ट पेयर अफ गर्नुहोस्</translation>
 <translation id="9033765790910064284">जे भए पनि जारी राख्नुहोस्</translation>
 <translation id="9033857511263905942">&amp;टाँस्नुहोस्</translation>
 <translation id="903480517321259405">PIN फेरि टाइप गर्नुहोस्</translation>
@@ -7912,6 +7994,7 @@
 <translation id="9063208415146866933">हरफ <ph name="ERROR_LINE_START" /> देखि हरफ <ph name="ERROR_LINE_END" /> सम्म त्रुटि छ</translation>
 <translation id="9063800855227801443">गोप्य सामग्रीको स्क्रिन क्याप्चर गर्न मिल्दैन</translation>
 <translation id="9064275926664971810">एकै क्लिकमा वेबका फारामहरू भर्न स्वत: भरणलाई सक्रिय गर्नुहोस्</translation>
+<translation id="9064599787951583960">CloudReady २.० चल्ने डिभाइससम्बन्धी जानकारी र उक्त डिभाइसमा भएको डेटा रिड गर्ने।</translation>
 <translation id="9065203028668620118">सम्पादन गर्नुहोस</translation>
 <translation id="9066394310994446814">तपाईंले यसअघि Google का सेवाहरूमार्फत गर्नुभएका क्रियाकलापका आधारमा तपाईं यो वस्तु देखिरहनुभएको छ। तपाईं <ph name="BEGIN_LINK1" />myactivity.google.com<ph name="END_LINK1" /> मा गई आफ्नो जानकारी हेर्न, मेटाउन तथा आफ्ना सेटिङ परिवर्तन गर्न सक्नुहुन्छ।
         <ph name="BREAK" />
diff --git a/chrome/app/resources/generated_resources_no.xtb b/chrome/app/resources/generated_resources_no.xtb
index 4e96d37..68a6834 100644
--- a/chrome/app/resources/generated_resources_no.xtb
+++ b/chrome/app/resources/generated_resources_no.xtb
@@ -1246,6 +1246,7 @@
 <translation id="2203088913459920044">Navnet kan inneholde bokstaver, tall og spesialtegn</translation>
 <translation id="220321590587754225">Kunne ikke koble til. Prøv på nytt.</translation>
 <translation id="2204034823255629767">lese og endre alt du skriver</translation>
+<translation id="2207115382329026341">Slå på innstillinger for appstrømming på telefonen.</translation>
 <translation id="220858061631308971">Skriv inn denne PIN-koden på «<ph name="DEVICE_NAME" />»:</translation>
 <translation id="2210462644007531147">Kunne ikke fullføre installasjonen</translation>
 <translation id="2212565012507486665">Tillat informasjonskapsler</translation>
@@ -1439,6 +1440,7 @@
 <translation id="2367972762794486313">Vis apper</translation>
 <translation id="236939127352773362">Når enheter deler i nærheten</translation>
 <translation id="2371076942591664043">Åpne når ne&amp;dlastingen er ferdig</translation>
+<translation id="237307274687369010">Kunne ikke starte <ph name="APP_NAME" /></translation>
 <translation id="2373666622366160481">Tilpass til papiret</translation>
 <translation id="2375406435414127095">Koble til telefonen din</translation>
 <translation id="2377588536920405462">Du kan slå av Posisjon ved å slå av enhetens hovedinnstilling for Posisjon. Du kan også slå av bruken av Wi-Fi, mobilnettverk og sensorer for posisjon i posisjonsinnstillingene.</translation>
diff --git a/chrome/app/resources/generated_resources_ru.xtb b/chrome/app/resources/generated_resources_ru.xtb
index 08b01f6a..454170e 100644
--- a/chrome/app/resources/generated_resources_ru.xtb
+++ b/chrome/app/resources/generated_resources_ru.xtb
@@ -2306,6 +2306,7 @@
 <translation id="3277691515294482687">Сохранить резервную копию моих приложений и файлов в папке "Мои файлы" перед обновлением Linux</translation>
 <translation id="3278001907972365362">Требуются действия в аккаунте Google.</translation>
 <translation id="3278800075417428224">Управление языковыми параметрами в настройках CloudReady 2.0</translation>
+<translation id="3278928434075969895">В этом профиле используются настройки прокси-сервера Chrome OS.</translation>
 <translation id="3279092821516760512">Выбранные контакты могут обмениваться с вами контентом, когда находятся поблизости. Передача данных не начинается без вашего согласия.</translation>
 <translation id="3279230909244266691">Подождите несколько минут. Запуск виртуальной машины…</translation>
 <translation id="3280237271814976245">Сохранить &amp;как...</translation>
@@ -4877,6 +4878,7 @@
 <translation id="5909379458939060601">Удалить этот профиль и данные о работе в браузере?</translation>
 <translation id="5910363049092958439">Сохранить изображение как...</translation>
 <translation id="5910726859585389579">Устройство <ph name="DEVICE_TYPE" /> не подключено к Интернету</translation>
+<translation id="5911505723657992440">Использовать настройки прокси-сервера Chrome OS для этого профиля</translation>
 <translation id="5911533659001334206">Просмотр ярлыков</translation>
 <translation id="5914724413750400082">Модуль (<ph name="MODULUS_NUM_BITS" /> бит):
   <ph name="MODULUS_HEX_DUMP" />
diff --git a/chrome/app/resources/generated_resources_sr-Latn.xtb b/chrome/app/resources/generated_resources_sr-Latn.xtb
index d8aaa29..76cc12f 100644
--- a/chrome/app/resources/generated_resources_sr-Latn.xtb
+++ b/chrome/app/resources/generated_resources_sr-Latn.xtb
@@ -2304,6 +2304,7 @@
 <translation id="3277691515294482687">Napravi rezervne kopije mojih aplikacija i datoteka u direktorijumu Moje datoteke pre nadogradnje Linux-a.</translation>
 <translation id="3278001907972365362">Treba da proverite Google naloge</translation>
 <translation id="3278800075417428224">Upravljajte jezicima u podešavanjima OS-a CloudReady 2.0</translation>
+<translation id="3278928434075969895">Ovaj profil koristi Chrome OS podešavanja za proksi.</translation>
 <translation id="3279092821516760512">Izabrani kontakti mogu da dele sa vama kada ste u blizini. Prenosi neće započeti dok ne prihvatite.</translation>
 <translation id="3279230909244266691">Ovo može da potraje par minuta. Pokreće se virtuelna mašina.</translation>
 <translation id="3280237271814976245">Sačuvaj &amp;kao...</translation>
@@ -4875,6 +4876,7 @@
 <translation id="5909379458939060601">Želite da izbrišete ovaj profil i podatke pregledanja?</translation>
 <translation id="5910363049092958439">Sa&amp;čuvaj sliku kao...</translation>
 <translation id="5910726859585389579"><ph name="DEVICE_TYPE" /> je oflajn</translation>
+<translation id="5911505723657992440">Koristi Chrome OS podešavanja za proksi za ovaj profil.</translation>
 <translation id="5911533659001334206">Prikazivač prečica</translation>
 <translation id="5914724413750400082">Modul (<ph name="MODULUS_NUM_BITS" /> bit(ov)a):
   <ph name="MODULUS_HEX_DUMP" />
diff --git a/chrome/app/resources/generated_resources_sr.xtb b/chrome/app/resources/generated_resources_sr.xtb
index 10fbb610..4fdf9c9 100644
--- a/chrome/app/resources/generated_resources_sr.xtb
+++ b/chrome/app/resources/generated_resources_sr.xtb
@@ -2304,6 +2304,7 @@
 <translation id="3277691515294482687">Направи резервне копије мојих апликација и датотека у директоријуму Моје датотеке пре надоградње Linux-а.</translation>
 <translation id="3278001907972365362">Треба да проверите Google налоге</translation>
 <translation id="3278800075417428224">Управљајте језицима у подешавањима ОС-а CloudReady 2.0</translation>
+<translation id="3278928434075969895">Овај профил користи Chrome ОС подешавања за прокси.</translation>
 <translation id="3279092821516760512">Изабрани контакти могу да деле са вама када сте у близини. Преноси неће започети док не прихватите.</translation>
 <translation id="3279230909244266691">Ово може да потраје пар минута. Покреће се виртуелна машина.</translation>
 <translation id="3280237271814976245">Сачувај &amp;као...</translation>
@@ -4875,6 +4876,7 @@
 <translation id="5909379458939060601">Желите да избришете овај профил и податке прегледања?</translation>
 <translation id="5910363049092958439">Са&amp;чувај слику као...</translation>
 <translation id="5910726859585389579"><ph name="DEVICE_TYPE" /> је офлајн</translation>
+<translation id="5911505723657992440">Користи Chrome ОС подешавања за прокси за овај профил.</translation>
 <translation id="5911533659001334206">Приказивач пречица</translation>
 <translation id="5914724413750400082">Модул (<ph name="MODULUS_NUM_BITS" /> бит(ов)а):
   <ph name="MODULUS_HEX_DUMP" />
diff --git a/chrome/app/resources/generated_resources_sv.xtb b/chrome/app/resources/generated_resources_sv.xtb
index b4e30ee..5c7b4ea 100644
--- a/chrome/app/resources/generated_resources_sv.xtb
+++ b/chrome/app/resources/generated_resources_sv.xtb
@@ -2318,6 +2318,7 @@
 <translation id="3277691515294482687">Säkerhetskopiera mina appar och filer till mappen Mina filer innan Linux uppgraderas.</translation>
 <translation id="3278001907972365362">Ditt Google-konto/dina Google-konton kräver åtgärd</translation>
 <translation id="3278800075417428224">Hantera språk i inställningarna för CloudReady 2.0</translation>
+<translation id="3278928434075969895">Den här profilen använder proxyinställningarna i Chrome OS.</translation>
 <translation id="3279092821516760512">Utvalda kontakter kan dela med dig när de är i närheten. Inga överföringar startas förrän du har godkänt dem.</translation>
 <translation id="3279230909244266691">Detta kan ta några minuter. Den virtuella maskinen startas.</translation>
 <translation id="3280237271814976245">Spara so&amp;m...</translation>
@@ -4890,6 +4891,7 @@
 <translation id="5909379458939060601">Vill du radera den här profilen och tillhörande webbinformation?</translation>
 <translation id="5910363049092958439">S&amp;para bild som...</translation>
 <translation id="5910726859585389579"><ph name="DEVICE_TYPE" /> är offline</translation>
+<translation id="5911505723657992440">Använd proxyinställningarna i Chrome OS för den här profilen.</translation>
 <translation id="5911533659001334206">Kortkommandovisare</translation>
 <translation id="5914724413750400082">Modulus (<ph name="MODULUS_NUM_BITS" /> bitar):
   <ph name="MODULUS_HEX_DUMP" />
diff --git a/chrome/app/resources/generated_resources_ta.xtb b/chrome/app/resources/generated_resources_ta.xtb
index a2b63d2..945167f0 100644
--- a/chrome/app/resources/generated_resources_ta.xtb
+++ b/chrome/app/resources/generated_resources_ta.xtb
@@ -2309,6 +2309,7 @@
 <translation id="3275778913554317645">சாளரமாகத் திற</translation>
 <translation id="3277691515294482687">Linuxஸை மேம்படுத்துவதற்கு முன்பு எனது ஆப்ஸையும் கோப்புகளையும் ‘எனது ஃபைல்கள் ’ என்ற ஃபோல்டருக்குக் காப்புப் பிரதி எடு.</translation>
 <translation id="3278001907972365362">உங்கள் Google கணக்கு(கள்) மதிப்பாய்வு செய்யப்பட வேண்டும்.</translation>
+<translation id="3278928434075969895">Chrome OS ப்ராக்ஸி அமைப்புகளை இந்தச் சுயவிவரம் பயன்படுத்துகிறது.</translation>
 <translation id="3279092821516760512">தேர்ந்தெடுத்த தொடர்புகள் அருகில் இருக்கும்போது உங்களுடன் பகிர முடியும். நீங்கள் ஏற்கும் வரை பரிமாற்றங்கள் தொடங்காது.</translation>
 <translation id="3279230909244266691">இதற்குச் சில நிமிடங்கள் ஆகலாம். விர்ச்சுவல் மெஷினைத் தொடங்குகிறது.</translation>
 <translation id="3280237271814976245">&amp;இவ்வாறு சேமி...</translation>
@@ -4845,6 +4846,7 @@
 <translation id="5909379458939060601">இந்தச் சுயவிவரத்தையும் உலாவிய தரவையும் நீக்கவா?</translation>
 <translation id="5910363049092958439">படத்தை இவ்வாறு சே&amp;மி...</translation>
 <translation id="5910726859585389579"><ph name="DEVICE_TYPE" /> ஆஃப்லைனில் உள்ளது</translation>
+<translation id="5911505723657992440">இந்தச் சுயவிவரத்திற்கு Chrome OS ப்ராக்ஸி அமைப்புகளைப் பயன்படுத்து.</translation>
 <translation id="5911533659001334206">Shortcut viewer</translation>
 <translation id="5914724413750400082">தனிமதிப்பு (<ph name="MODULUS_NUM_BITS" /> பிட்கள்):
   <ph name="MODULUS_HEX_DUMP" />
diff --git a/chrome/app/resources/generated_resources_tr.xtb b/chrome/app/resources/generated_resources_tr.xtb
index 1d87b06..9b7927e 100644
--- a/chrome/app/resources/generated_resources_tr.xtb
+++ b/chrome/app/resources/generated_resources_tr.xtb
@@ -2301,6 +2301,7 @@
 <translation id="3277691515294482687">Linux'ı yeni sürüme geçirmeden önce hem uygulamalarımı hem de dosyalarımı Dosyalarım klasörüne yedekle.</translation>
 <translation id="3278001907972365362">Google Hesabınız/Hesaplarınız işlem gerektiriyor</translation>
 <translation id="3278800075417428224">CloudReady 2.0 ayarlarında dilleri yönetin</translation>
+<translation id="3278928434075969895">Bu profil Chrome OS proxy ayarlarını kullanır.</translation>
 <translation id="3279092821516760512">Seçili kişiler yakındayken sizinle içerik paylaşabilirler. Siz kabul edene kadar aktarım başlamaz.</translation>
 <translation id="3279230909244266691">Bu işlem birkaç dakika sürebilir. Sanal makine başlatılıyor.</translation>
 <translation id="3280237271814976245">Farklı k&amp;aydet...</translation>
@@ -4872,6 +4873,7 @@
 <translation id="5909379458939060601">Bu profil ve tarama verileri silinsin mi?</translation>
 <translation id="5910363049092958439">Resmi Farklı Ka&amp;ydet...</translation>
 <translation id="5910726859585389579"><ph name="DEVICE_TYPE" /> çevrimdışı</translation>
+<translation id="5911505723657992440">Bu profil için Chrome OS proxy ayarlarını kullan.</translation>
 <translation id="5911533659001334206">Kısayol görüntüleyici</translation>
 <translation id="5914724413750400082">Katsayı (<ph name="MODULUS_NUM_BITS" /> bit):
   <ph name="MODULUS_HEX_DUMP" />
diff --git a/chrome/app/resources/generated_resources_uz.xtb b/chrome/app/resources/generated_resources_uz.xtb
index 1b1aac1..c08b0f6a 100644
--- a/chrome/app/resources/generated_resources_uz.xtb
+++ b/chrome/app/resources/generated_resources_uz.xtb
@@ -907,6 +907,7 @@
 <translation id="1869433484041798909">Bukmark tugmasi</translation>
 <translation id="1871098866036088250">Chrome brauzerida ochish</translation>
 <translation id="187145082678092583">Kamroq ilovalar</translation>
+<translation id="1871463148436682760">Barakalla!</translation>
 <translation id="1871534214638631766">Ustiga oʻng klik yoki biroz bosib turilsa, tegishli axborot chiqsin</translation>
 <translation id="1871569928317311284">Tungi mavzuni faolsizlantirish</translation>
 <translation id="1871615898038944731"><ph name="DEVICE_TYPE" /> qurilmangizdagi Chromium OS versiyasi yangi</translation>
@@ -2337,6 +2338,7 @@
 <translation id="3304212451103136496"><ph name="DISCOUNT_AMOUNT" /> chegirma</translation>
 <translation id="3305389145870741612">Formatlashga bir necha soniya ketishi mumkin. Kutib turing.</translation>
 <translation id="3305661444342691068">PDF‘ning oldindan ko‘rinishini ochish</translation>
+<translation id="3306992216458434072">Guruhni nomlang va rangini tanlang</translation>
 <translation id="3307176291962384345"><ph name="MERCHANT_NAME" /> uchun chegirmalar olish</translation>
 <translation id="3308116878371095290">Cookie faylini saqlab olish urinishi bloklandi.</translation>
 <translation id="3308134619352333507">Tugmani yashirish</translation>
@@ -3751,6 +3753,7 @@
 <translation id="4708794300267213770">Qurilma uyqu rejimidan chiqarilishida ekran qulfi ko‘rsatilsin</translation>
 <translation id="4708849949179781599"><ph name="PRODUCT_NAME" />’dan chiqish</translation>
 <translation id="4711638718396952945">Dastlabki sozlamalarni tiklash</translation>
+<translation id="47158868804223727">Guruh nomini bosib, uni yoyish yoki yigʻish mumkin</translation>
 <translation id="4716483597559580346">Xavfsizlikni oshirish uchun qurilmani zavod sozlamalariga qaytaring</translation>
 <translation id="471880041731876836">Bu sahifani ochishga ruxsatingiz yo‘q</translation>
 <translation id="4722735765955348426"><ph name="USERNAME" /> hisobi paroli</translation>
@@ -3814,6 +3817,7 @@
 <translation id="4794810983896241342">Yangilanishlar <ph name="BEGIN_LINK" />administrator<ph name="END_LINK" /> tomonidan boshqariladi.</translation>
 <translation id="479536056609751218">Veb-sahifa, faqat HTML</translation>
 <translation id="4796142525425001238">Doim tiklash</translation>
+<translation id="4797314204379834752">Vazifalarni tartiblash, onlayn shopping va hokazo amallar uchun varaqlar guruhidan foydalaning</translation>
 <translation id="4798236378408895261"><ph name="BEGIN_LINK" />Bluetooth jurnali<ph name="END_LINK" /> biriktirilsin (Google ichki tekshiruvi uchun)</translation>
 <translation id="479863874072008121">Qurilmalarni boshqarish</translation>
 <translation id="4800839971935185386">Nom va belgi oʻzgarishlari tekshiruvi</translation>
@@ -4054,6 +4058,7 @@
 <translation id="5039696241953571917">Google hisobingizga saqlangan parollarni koʻrish va boshqarish</translation>
 <translation id="5039804452771397117">Ruxsat berish</translation>
 <translation id="5040823038948176460">Qoʻshimcha kontent sozlamlari</translation>
+<translation id="5041509233170835229">Chrome ilovasi</translation>
 <translation id="5043440033854483429">Nomi jami 15 tagacha harf, raqam va tirelardan (-) iborat boʻlsin.</translation>
 <translation id="5043913660911154449">Yoki printeringiz PPD faylini tanlang <ph name="LINK_BEGIN" />Batafsil<ph name="LINK_END" /></translation>
 <translation id="5045550434625856497">Parol noto‘g‘ri</translation>
@@ -5380,6 +5385,7 @@
 <translation id="6393156038355142111">Ishonchli parol yaratish</translation>
 <translation id="6393550101331051049">Xavfli kontentni chiqarishga ruxsat berilgan</translation>
 <translation id="6395423953133416962"><ph name="BEGIN_LINK1" />Tizim haqidagi ma’lumotlar<ph name="END_LINK1" /> va k<ph name="BEGIN_LINK2" />o‘rsatkichlar qiymatlarini<ph name="END_LINK2" /> jo‘natish</translation>
+<translation id="6396175271241405634">Tizim ilovasi</translation>
 <translation id="6396988158856674517">Saytlarga harakat sensorlaridan foydalanishni taqiqlash</translation>
 <translation id="6398715114293939307">Google Play Market olib tashlansin</translation>
 <translation id="6398765197997659313">To‘liq ekran rejimidan chiqish</translation>
@@ -5449,6 +5455,7 @@
 <translation id="6460566145397380451">MIDI qurilmalarga ulanishga ruxsat berilgan</translation>
 <translation id="6460601847208524483">Keyingisini topish</translation>
 <translation id="6461170143930046705">Tarmoqlar qidirilmoqda...</translation>
+<translation id="6462204616987156669">Varaq ustida oʻng klikni bosib, “Varaqni yangi guruhga kiritish” bandini tanlang</translation>
 <translation id="6463795194797719782">&amp;O‘zgartirish...</translation>
 <translation id="6464825623202322042">Shu qurilma</translation>
 <translation id="6465841119675156448">Internetsiz</translation>
@@ -5867,6 +5874,7 @@
 <translation id="6885771755599377173">Tizim haqida ma’lumot</translation>
 <translation id="6886871292305414135">&amp;Havolani yangi ichki oynada ochish</translation>
 <translation id="6889957081990109136">Kalit hali belgilanmagan</translation>
+<translation id="689007770043972343">Boshqa ochiq varaqlarni guruhlarga tortib tashlash mumkin</translation>
 <translation id="6892812721183419409">Havolani <ph name="USER" /> nomidan ochish</translation>
 <translation id="6895032998810961280">Tozalash vaqtida bu kompyuterda topilgan zararli dasturlar, tizim sozlamalari va jarayonlar hisoboti Google serverlariga yuborilsin</translation>
 <translation id="6895902329218596456"><ph name="USER_EMAIL" /> hisobi <ph name="MANAGER" /> domenida boshqariladi va administrator tomonidan ikkinchi hisobdan kirish taqiqlagan</translation>
@@ -6444,6 +6452,7 @@
 <translation id="7491963308094506985">{NUM_COOKIES,plural, =1{1 ta cookie fayl}other{{NUM_COOKIES} ta cookie fayl}}</translation>
 <translation id="7493386493263658176">“<ph name="EXTENSION_NAME" />” kengaytmasi parollar va bank kartalaringiz kabi barcha matnlarni saqlay oladi. Ishga tushirilsinmi?</translation>
 <translation id="7494694779888133066"><ph name="WIDTH" /> x <ph name="HEIGHT" /></translation>
+<translation id="7495149565104413027">Android ilovasi</translation>
 <translation id="7495778526395737099">Eski parolingizni unutdingizmi?</translation>
 <translation id="7497981768003291373">Yaqinda yozilgan WebRTC matnli jurnallari topilmadi.</translation>
 <translation id="7501957181231305652">yoki</translation>
diff --git a/chrome/app/resources/generated_resources_zu.xtb b/chrome/app/resources/generated_resources_zu.xtb
index 83f4acee..b8ff3bb 100644
--- a/chrome/app/resources/generated_resources_zu.xtb
+++ b/chrome/app/resources/generated_resources_zu.xtb
@@ -1251,6 +1251,7 @@
 <translation id="2203088913459920044">Igama lingasebenzisa izinhlamvu, izinombolo, nezinhlamvu ezikhethekile</translation>
 <translation id="220321590587754225">Ayikwazanga ukuxhumeka. Zama futhi.</translation>
 <translation id="2204034823255629767">Funda futhi ushintshe noma yini oyithayiphayo</translation>
+<translation id="2207115382329026341">Nika amandla amasethingi okusakaza i-app kwifoni yakho.</translation>
 <translation id="220858061631308971">Sicela ufake le phinikhodi ku-"<ph name="DEVICE_NAME" />":</translation>
 <translation id="2210462644007531147">Ayikwazanga ukuqeda ukufaka</translation>
 <translation id="2212565012507486665">Vumela amakhukhi</translation>
@@ -1444,6 +1445,7 @@
 <translation id="2367972762794486313">Bonisa izinhlelo zokusebenza</translation>
 <translation id="236939127352773362">Uma amadivayisi abelana eduze</translation>
 <translation id="2371076942591664043">Vula uma kuqediwe</translation>
+<translation id="237307274687369010">Ayikwazanga ukuqalisa i-<ph name="APP_NAME" /></translation>
 <translation id="2373666622366160481">Linganisa nephepha</translation>
 <translation id="2375406435414127095">Xhuma kufoni yakho</translation>
 <translation id="2377588536920405462">Ungavala indawo ngokuvala isilungiselelo esiyinhloko Sendawo kudivayisi yakho. Ungavala nokusetshenziswa kwe-Wi-Fi, amanethiwekhi eselula, nezinzwa zendawo kuzilungiselelo zendawo.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ne.xtb b/chrome/app/resources/google_chrome_strings_ne.xtb
index 2058e4e8..e7b2eaa6 100644
--- a/chrome/app/resources/google_chrome_strings_ne.xtb
+++ b/chrome/app/resources/google_chrome_strings_ne.xtb
@@ -13,6 +13,7 @@
 <translation id="1142745911746664600">Chrome लाई अद्यावधिक गर्न सकिएन</translation>
 <translation id="1154147086299354128">Chrome मा खोल्नुहोस्</translation>
 <translation id="1182414570724401860">Chrome तपाईंलाई यो फाइल डाउनलोड नगर्न वा नखोल्न सिफारिस गर्छ</translation>
+<translation id="1201241595274620956">CloudReady २.० का सर्तहरू</translation>
 <translation id="1278833599417554002">&amp;Chrome अपडेट गर्न पुनः सुरु गर्नुहोस्</translation>
 <translation id="1293325835983155583"><ph name="MANAGER" /> को नीतिअनुसार तपाईंले यो डिभाइस चलाउनुअघि तल दिइएका सेवाका सर्तहरू पढेर स्वीकार गर्नु पर्ने हुन्छ। यी सर्तहरूले Google Chrome OS का सर्तहरू विस्तार, परिमार्जन वा ती सर्तहरू सीमित पार्दैनन्।</translation>
 <translation id="1302523850133262269">Chrome ले नवीनतम सिस्टम अपडेटहरू स्थापित गर्दै गर्दा कृपया प्रतिक्षा गर्नुहोस्।</translation>
@@ -38,11 +39,15 @@
 <translation id="1759842336958782510">Chrome</translation>
 <translation id="1786003790898721085">तपाईंले आफ्नो <ph name="TARGET_DEVICE_NAME" /> मा Chrome मा साइन इन गर्नुभएको छ भन्ने कुरा सुनिश्चित गर्नुहोस् अनि फेरि पठाउनुहोस्।</translation>
 <translation id="1812689907177901597">यसलाई निष्क्रिय पारेर, तपाईं Chrome मा साइन इन नगरिकनै Gmail जस्तो Google का साइटहरूमा साइन इन गर्न सक्नुहुन्छ।</translation>
+<translation id="1847459800604232346">CloudReady २.० रिस्टार्ट गर्नुहोस्</translation>
 <translation id="1860536484129686729">Chrome लाई यो साइटका लागि तपाईंको क्यामेरामाथि पहुँच राख्ने अनुमति चाहिन्छ</translation>
+<translation id="1865667134297225786">तपाईंको खाताको साइन इनसम्बन्धी विवरणको म्याद सकिएको हुनाले CloudReady २.० ले तपाईंको डेटा सिंक गर्न सकेन।</translation>
 <translation id="1873233029667955273">Google Chrome तपाईंको डिफल्ट ब्राउजर होइन</translation>
 <translation id="1874309113135274312">Google Chrome बिटा (mDNS-In)</translation>
 <translation id="1877026089748256423">Chrome को मिति समाप्त भएको छ</translation>
+<translation id="1887927549935943139">तपाईंको डोमेनका हकमा सिंक गर्ने सुविधा उपलब्ध नभएको हुनाले CloudReady २.० ले तपाईंको डेटा सिंक गर्न सकेन।</translation>
 <translation id="1919130412786645364">Chrome मा साइन इन गर्ने अनुमति दिनुहोस्</translation>
+<translation id="1938037793394697191">Google CloudReady २.०</translation>
 <translation id="2018528049276128029">हरेक प्रोफाइलका आफ्नै बुकमार्क, इतिहास, पासवर्डलगायत Chrome का सबै जानकारी हुन्छन्</translation>
 <translation id="2063848847527508675">यो अद्यावधिक लागू गर्न Chrome OS लाई पुनः सुरु गर्नुपर्छ।</translation>
 <translation id="2094919256425865063">जे भए पनि Chrome छाडेर बाहिरिने हो?</translation>
@@ -53,12 +58,15 @@
 <translation id="2258103955319320201">आफूले प्रयोग गर्ने जुनसुकै डिभाइसबाट Chrome मा भएका आफ्ना कुराहरू हेर्न तथा प्रयोग गर्न सिंक गर्ने सुविधा अन गर्नुहोस्</translation>
 <translation id="2290014774651636340">गूगल API कुञ्जीहरू हराइरहेका छन्। Google Chrome का केही कार्यक्षमता अक्षम हुनेछन्।</translation>
 <translation id="2290095356545025170">के तपाइँ पक्का हुनुहुन्छ कि तपाइँ Google Chrome विस्थापित गर्न चाहनुहुन्छ?</translation>
+<translation id="2297776811548050971">CloudReady २.० <ph name="BEGIN_LINK_LINUX_OSS" />Linux डेभलपमेन्ट इनभारमेन्ट<ph name="END_LINK_LINUX_OSS" /> जस्तै अतिरिक्त <ph name="BEGIN_LINK_CROS_OSS" />खुला स्रोतको सफ्टवेयर<ph name="END_LINK_CROS_OSS" /> प्रयोग गरी निर्माण गरिएको हो।</translation>
 <translation id="2309047409763057870">यो Google Chrome को एउटा सहायक स्थापना हो र यसलाई तपाईँको डिफल्ट ब्राउजर बनाउन सकिँदैन।</translation>
 <translation id="2345992953227471816">Chrome ले यी एक्स्टेन्सनमा मालवेयर भएको कुरा पत्ता लगाएको छ:</translation>
 <translation id="2348335408836342058">Chrome लाई यो साइटका लागि तपाईंको क्यामेरा र माइक्रोफोनमाथि पहुँच राख्ने अनुमति चाहिन्छ</translation>
 <translation id="234869673307233423">Chrome ले तपाईंका पासवर्डहरूको जाँच गर्न सकेन। पछि फेरि प्रयास गर्नुहोस्।</translation>
 <translation id="235650106824528204">कार्य प्रोफाइलका एड्मिन यो प्रोफाइल चलाउँदा Chrome मा सिर्जना हुने (बुकमार्क, इतिहास, पासवर्ड र अन्य सेटिङलगायतका) सबै डेटा हटाउन सक्नुहुन्छ। <ph name="LEARN_MORE" /></translation>
 <translation id="2359808026110333948">जारी राख्नुहोस्</translation>
+<translation id="2371517829376452747">यो पेजमा कुनै सेटिङ देखिएन भने <ph name="LINK_BEGIN" />
+        CloudReady २.० का सेटिङ<ph name="LINK_END" /> हेर्नुहोस्</translation>
 <translation id="2429317896000329049">Google Chrome ले तपाइँको लगत समक्रमण गर्न सकेन किनभने तपाइँको डोमेनको लागि समक्रमन उपलब्ध छैन।</translation>
 <translation id="2467438592969358367">Google Chrome तपाईंका पासवर्डहरू निर्यात गर्न चाहन्छ। यसो गर्ने अनुमति दिन Windows को आफ्नो पासवर्ड टाइप गर्नुहोस्‌।</translation>
 <translation id="2485422356828889247">विस्थापन गर्नुहोस्</translation>
@@ -87,6 +95,7 @@
 <translation id="2926676257163822632">कमजोर पासवर्डहरू सजिलै अनुमान लगाउन सकिन्छ। Chrome लाई <ph name="BEGIN_LINK" />तपाईंका लागि भरपर्दा पासवर्ड बनाउन र याद राख्न<ph name="END_LINK" /> दिनुहोस्।</translation>
 <translation id="2926952073016206995">यो साइट चलाउन Chrome लाई क्यामेरा प्रयोग गर्ने अनुमति दिनु पर्ने हुन्छ</translation>
 <translation id="2929907241665500097">Chrome अद्यावधिक भएन, केही चिज गडबड भयो। <ph name="BEGIN_LINK" />Chrome अद्यावधिक गर्दा देखिएका समस्या तथा अद्यावधिक नहुने समस्याहरू समाधान गर्नुहोस्।<ph name="END_LINK" /></translation>
+<translation id="2954761547729364025">तपाईं &amp;CloudReady २.० अपडेट गर्न चाहनुहुन्छ भने रिलन्च गर्नुहोस्</translation>
 <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> - नेटवर्क साइन इन - Chrome</translation>
 <translation id="303514781271618814">Chrome ले साइटहरूलाई कम डेटा प्रयोग गरेर उही स्तरको ब्राउजिङ अनुभव प्रदान गर्न सघाउने नयाँ सुविधाहरूको जाँच गरिरहेको छ</translation>
 <translation id="3037838751736561277">Google Chrome पृष्ठभूमि मोडमा छ।</translation>
@@ -113,6 +122,7 @@
 <translation id="3533694711092285624">कुनै पनि सुरक्षित गरिएको पासवर्ड छैन। तपाईंले आफ्ना पासवर्डहरू सुरक्षित गर्नुभएको छ भने मात्र Chrome ले तिनको जाँच गर्न सक्छ।</translation>
 <translation id="3541482654983822893">Chrome तपाईंका पासवर्डहरू जाँच्न सक्दैन। २४ घन्टापछि फेरि प्रयास गर्नुहोस्।</translation>
 <translation id="3576528680708590453">तपाईंको प्रणालीका प्रशासकले <ph name="TARGET_URL_HOSTNAME" /> माथि पहुँच गर्नका लागि वैकल्पिक ब्राउजर खोल्न Google Chrome कन्फिगर गरेको छ।</translation>
+<translation id="3582634744482121096">ऐच्छिक: Google लाई डाइग्नोस्टिक र प्रयोगसम्बन्धी डेटा स्वतः पठाएर CloudReady २.० को पर्फर्मेन्स र यसका सुविधाहरूको गुणस्तर सुधार्न सघाउनुहोस्।</translation>
 <translation id="3582972582564653026">आफ्ना यन्त्रहरूभरि Chrome लाई सिंक तथा वैयक्तीकृत गर्नुहोस्</translation>
 <translation id="3596080736082218006">{COUNT,plural, =0{तपाईंका व्यवस्थापकका अनुसार तपाईंले यो अद्यावधिक लागू गर्न Chrome पुनः सुरु गर्नु पर्ने हुन्छ}=1{तपाईंका व्यवस्थापकका अनुसार तपाईंले यो अद्यावधिक लागू गर्न Chrome पुनः सुरु गर्नु पर्ने हुन्छ। तपाईंको इन्कोग्निटो विन्डो पुनः खुल्ने छैन।}other{तपाईंका व्यवस्थापकका अनुसार तपाईंले यो अद्यावधिक लागू गर्न Chrome पुनः सुरु गर्नु पर्ने हुन्छ। तपाईंका # वटा इन्कोग्निटो विन्डो पुनः खुल्ने छैनन्।}}</translation>
 <translation id="3622797965165704966">अब Chrome तपाइँको Google खाता र साझा गरिएका कम्प्युटरहरूमा प्रयोग गर्न सजिलो भएको छ।</translation>
@@ -133,6 +143,7 @@
 <translation id="4149882025268051530">स्थापनाकर्ता आर्किभलाई अनकम्प्रेस गर्न असफल भयो। कृपया Google Chrome पुन: डाउनलोड गर्नुहोस्।</translation>
 <translation id="4191857738314598978">{0,plural, =1{एक दिनभित्र Chrome पुनः सुरु गर्नुहोस्}other{# दिनभित्र Chrome पुनः सुरु गर्नुहोस्}}</translation>
 <translation id="4205939740494406371">Chrome तपाईंका पासवर्डहरू जाँच्न सक्दैन। २४ घन्टापछि फेरि प्रयास गर्नुहोस् वा <ph name="BEGIN_LINK" />आफ्नो Google खातामा गई आफ्ना पासवर्डहरू जाँच्नुहोस्<ph name="END_LINK" />।</translation>
+<translation id="4218613300505264589">CloudReady २.० सिस्टम</translation>
 <translation id="4242034826641750751">यो साइट चलाउन Chrome लाई क्यामेरा तथा माइक्रोफोन प्रयोग गर्ने अनुमति दिनु पर्ने हुन्छ</translation>
 <translation id="424864128008805179">Chrome बाट साइन आउट गर्ने हो?</translation>
 <translation id="4251615635259297716">तपाइँको Chrome लगतलाई यस खातामा लिङ्क गर्ने?</translation>
@@ -150,7 +161,9 @@
 <translation id="4458462641685292929">Google Chrome मा अर्को कारबाही जारी छ। कृपया पछि फेरि प्रयास गर्नुहोस्।</translation>
 <translation id="4480040274068703980">साइन इन त्रुटि भएको कारण Chrome OS ले तपाईंको डाटा समक्रमण गर्न सकेन।</translation>
 <translation id="4521185804071812304">ऐच्छिक: Google लाई निदान र प्रयोगसम्बन्धी डेटा स्वतः पठाएर Chrome OS का सुविधा र कार्यसम्पादनको गुणस्तरमा सुधार ल्याउन मद्दत गर्नुहोस्।</translation>
+<translation id="4539063627668028557">CloudReady २.० संस्करण</translation>
 <translation id="4561051373932531560">Google Chrome ले तपाइँलाई वेबमा एउटा फोन नम्बरमा क्लिक गर्न दिन्छ र Skype बाट त्यसलाई कल गर्न दिन्छ!</translation>
+<translation id="4562712242781620537">CloudReady २.० सिस्टम</translation>
 <translation id="4567424176335768812">तपाइँ <ph name="USER_EMAIL_ADDRESS" /> को रूपमा साइन इन हुनुभएको छ। अब तपाइँले तपाइँका सबै साइन इन भएका यन्त्रहरूमा तपाइँका पृष्ठमञ्जूषाहरू, इतिहास, र अन्य सेटिङहरू पहुँच गर्न सक्नुहुन्छ।</translation>
 <translation id="4571503333518166079">Chrome को सूचनासम्बन्धी सेटिङहरूमा जानुहोस्</translation>
 <translation id="459622048091363950">Chrome ले पहुँच प्राप्त गरेपछि, वेबसाइटहरू तपाईंसँग पहुँच माग्न सक्ने छन्।</translation>
@@ -174,6 +187,7 @@
 <translation id="5170938038195470297">तपाईंको प्रोफाइल प्रयोग गर्न सकिंदैन किनकी यो Google Chrome को नयाँ संस्करणबाट छ। केही सुविधाहरू अनुपलब्ध हुन सक्नेछन्। कृपया भिन्न प्रोफाइल डाइरेकटरी निर्दिष्ट गर्नुहोस् वा क्रोम को एक नयाँ संस्करण प्रयोग गर्नुहोस्।</translation>
 <translation id="521447420733633466">तपाईं आफ्ना परिवार र साथीभाइसँग मिलेर यन्त्र चलाउनुहुन्छ भने उनीहरू सबै जना सोही यन्त्रमा आ-आफ्नो खातामार्फत ब्राउज गर्न र आफूले चाहेअनुसार Chrome सेटअप गर्न सक्छन्</translation>
 <translation id="5251420635869119124">अतिथिहरूले केही पनि पछाडि नछोडिकन Chrome प्रयोग गर्न सक्नुहुन्छ।</translation>
+<translation id="5307623274346663914">तपाईं यो अपडेट लागू गर्न चाहनुहुन्छ भने CloudReady २.० रिस्टार्ट गर्नु पर्ने हुन्छ।</translation>
 <translation id="5334487786912937552">फाइल डाउनलोड गर्न Chrome लाई भण्डारण प्रयोग गर्ने अनुमति दिनु पर्ने हुन्छ</translation>
 <translation id="5386244825306882791">यसले तपाईंले Chrome सुरु गर्नुहुँदा वा ओम्निहक्सको लागि खोजी गर्नुहुँदा कुन-कुन पृष्ठ देखाइन्छ भन्ने कुरा पनि नियन्त्रण गर्छ।</translation>
 <translation id="5394833366792865639">Chrome को ट्याब सेयर गर्नुहोस्</translation>
@@ -184,8 +198,10 @@
 <translation id="5566025111015594046">Google Chrome (mDNS-In)</translation>
 <translation id="565744775970812598"><ph name="FILE_NAME" /> खतरनाक हुन सक्छ, त्यसैले Chrome ले यसमाथि रोक लगाएको छ।</translation>
 <translation id="5678190148303298925">{COUNT,plural, =0{तपाईंका व्यवस्थापकले तपाईंलाई यो अद्यावधिक लागू गर्न Chrome पुनः सुरु गर्न आग्रह गर्नुभएको छ}=1{तपाईंका व्यवस्थापकले तपाईंलाई यो अद्यावधिक लागू गर्न Chrome पुनः सुरु गर्न आग्रह गर्नुभएको छ। तपाईंको इन्कोग्निटो विन्डो पुनः खुल्ने छैन।}other{तपाईंका व्यवस्थापकले तपाईंलाई यो अद्यावधिक लागू गर्न Chrome पुनः सुरु गर्न आग्रह गर्नुभएको छ। तपाईंका # वटा इन्कोग्निटो विन्डो पुनः खुल्ने छैनन्।}}</translation>
+<translation id="5685161537284117504">CloudReady २.० अतिरिक्त <ph name="BEGIN_LINK_CROS_OSS" />खुला स्रोतको सफ्टवेयर<ph name="END_LINK_CROS_OSS" /> प्रयोग गरी निर्माण गरिएको हो।</translation>
 <translation id="5686916850681061684">Google Chrome लाई आफू अनुकूल पार्नुका साथै यसमाथि नियन्त्रण गर्नुहोस्। केही कुराका सम्बन्धमा तपाईंको कारबाही आवश्यक छ - विवरण हेर्न क्लिक गर्नुहोस्।</translation>
 <translation id="5690427481109656848">Google LLC</translation>
+<translation id="5706272942857408234">साइन इन गर्ने क्रममा त्रुटि भएकाले CloudReady २.० ले तपाईंको डेटा सिंक गर्न सकेन।</translation>
 <translation id="5715063361988620182">{SECONDS,plural, =1{Google Chrome १ सेकेन्डमा पुनः सुरु हुने छ}other{Google Chrome # सेकेन्डमा पुनः सुरु हुने छ}}</translation>
 <translation id="5736850870166430177">कुनै साइटले तपाईंको पासवर्ड चोरी गर्न खोज्दा वा तपाईंले कुनै हानिकारक फाइल डाउनलोड गर्दा Chrome ले पेजमा भएका केही सामग्रीसहित उक्त साइटका URL हरू Safe Browsing मा पठाउन पनि सक्छ</translation>
 <translation id="573759479754913123">क्रोम OS का बारेमा</translation>
@@ -218,14 +234,19 @@
 <translation id="6679975945624592337">Google Chrome लाई पृष्ठभूमिमा चल्न दिनुहोस्</translation>
 <translation id="6696915334902295848">यो साइट चलाउन Chrome लाई माइक्रोफोन प्रयोग गर्ने अनुमति दिनु पर्ने हुन्छ</translation>
 <translation id="6739177684496155661">नयाँ Chrome प्रोफाइल प्रयोग गरी साइन इन गर्ने हो?</translation>
+<translation id="6749459139769042303">CloudReady २.० का सम्बन्धमा मद्दत प्राप्त गर्नुहोस्</translation>
 <translation id="6750954913813541382">हिज्जेसम्बन्धी त्रुटि सच्याउने प्रयोजनका लागि Chrome ले तपाईंले ब्राउजरमा टाइप गर्ने पाठ Google लाई पठाउँछ</translation>
 <translation id="677276454032249905">जे भए पनि Chrome बाट बाहिरिने हो?</translation>
+<translation id="6814748008107187409">यो पेजमा कुनै सेटिङ देखिएन भने <ph name="LINK_BEGIN" />
+        Chrome OS का सेटिङ<ph name="LINK_END" /> हेर्नुहोस्</translation>
 <translation id="683440813066116847">mDNS ट्राफिक अनुमतिका लागि गूगल क्रोम क्यानरीका लागि अन्तरगामी नियम।</translation>
 <translation id="6881299373831449287">Chrome अपडेट गरिँदै छ</translation>
 <translation id="6885412569789873916">Chrome बिटा एपहरू</translation>
+<translation id="6919064686744569862"><ph name="MANAGER" /> को नीतिअनुसार तपाईंले यो डिभाइस प्रयोग गर्नुअघि निम्न सेवाका सर्तहरू पढेर स्वीकार गर्नु पर्ने हुन्छ। यी सर्तले CloudReady २.० का सर्तहरू विस्तार, परिमार्जन वा सीमित गर्दैनन्।</translation>
 <translation id="6943584222992551122">यस डिभाइसबाट यो व्यक्तिको ब्राउजिङ डेटा मेटाइने छ। डेटा पुनः प्राप्त गर्न <ph name="USER_EMAIL" /> का रूपमा Chrome मा साइन इन गर्नुहोस्।</translation>
 <translation id="6967962315388095737">mDNS ट्राफिकलाई अनुमति दिने Google Chrome बिटाको अन्तर्गामी नियम।</translation>
 <translation id="6989339256997917931">Google Chrome अद्यावधिक गरिएको छ, तर तपाइँले त्यसलाई कम्तीमा पनि 30 दिनको लागि प्रयोग गर्नुभएको छैन।</translation>
+<translation id="700644001690392105">CloudReady २.० का बारेमा</translation>
 <translation id="7025800014283535195">तपाईं यहाँबाट Chrome मा रहेको एक प्रोफाइलबाट अर्को प्रोफाइलमा जान सक्नुहुन्छ</translation>
 <translation id="7036251913954633326">तपाईं यो खाता एक पटक मात्र प्रयोग गर्न चाहनुहुन्छ भने तपाईं Chrome ब्राउजरमार्फत <ph name="GUEST_LINK_BEGIN" />गेस्ट मोड<ph name="GUEST_LINK_END" /> प्रयोग गर्न सक्नुहुन्छ। तपाईं अरू कसैको खाता लिंक गर्न चाहनुहुन्छ भने उहाँलाई <ph name="LINK_BEGIN" />नयाँ व्यक्तिका रूपमा<ph name="LINK_END" /> आफ्नो <ph name="DEVICE_TYPE" /> मा सामेल गराउनुहोस्।
 
@@ -253,6 +274,7 @@
 <translation id="7486227612705979895">ठेगाना बारमा सुझाव दिन Chrome तपाईंको ड्राइभमाथि पहुँच राख्ने छ</translation>
 <translation id="7535429826459677826">Google Chrome Dev</translation>
 <translation id="7573289029918943991">आफ्नो यन्त्र अद्यावधिक छ कि छैन भनी हेर्न <ph name="LINK_BEGIN" />Chrome OS का सेटिङ<ph name="LINK_END" />मा जानुहोस्</translation>
+<translation id="7580049017368059129">तपाईं आफ्नो डिभाइस अप टु डेट छ कि छैन भन्ने कुरा हेर्न चाहनुहुन्छ भने <ph name="LINK_BEGIN" />CloudReady २.० का सेटिङ<ph name="LINK_END" />मा जानुहोस्</translation>
 <translation id="7592736734348559088">Google Chrome ले तपाईंको डाटा समक्रमण गर्न सकेन किनभने तपाईंको खाताको साइन-इन विवरणहरूको समय समाप्त भएको छ।</translation>
 <translation id="7626032353295482388">Chrome मा स्वागत छ</translation>
 <translation id="7629695634924605473">तपाईंको पासवर्ड ह्याक भएको भण्डमा Chrome ले तपाईंलाई त्यसको जानकारी दिन्छ</translation>
diff --git a/chrome/browser/resources/new_tab_page/modules/cart/cart.gni b/chrome/browser/resources/new_tab_page/modules/cart/cart.gni
index a836bfe..d76ebe0 100644
--- a/chrome/browser/resources/new_tab_page/modules/cart/cart.gni
+++ b/chrome/browser/resources/new_tab_page/modules/cart/cart.gni
@@ -7,6 +7,7 @@
 
 # List of files that should be passed to html_to_js().
 cart_web_component_files = [
+  "modules/cart/discount_consent_card.ts",
   "modules/cart/discount_consent_dialog.ts",
   "modules/cart/module.ts",
 ]
diff --git a/chrome/browser/resources/new_tab_page/modules/cart/discount_consent_card.html b/chrome/browser/resources/new_tab_page/modules/cart/discount_consent_card.html
new file mode 100644
index 0000000..4e50fe9b
--- /dev/null
+++ b/chrome/browser/resources/new_tab_page/modules/cart/discount_consent_card.html
@@ -0,0 +1,118 @@
+<style>
+  :host {
+    border: 1px solid var(--ntp-border-color);
+    border-radius: 4px;
+    display: inline-flex;
+    flex-direction: column;
+    height: 140px;
+    vertical-align: top;
+    width: 244px;
+  }
+
+  #consentCardContainer {
+    height: 100%;
+  }
+
+  :host([color-consent-container_]) #consentCardContainer {
+    background-color: var(--google-blue-100);
+  }
+  
+  .favicon-container {
+    text-align: center;
+    width: auto;
+  }
+
+  .favicon-container ul {
+    list-style-type: none;
+    margin-block-end: 0;
+    margin-block-start: 0;
+    margin-inline-end: 6px;
+    padding: 0;
+  }
+
+  .favicon-container li {
+    display: inline;
+    margin-inline-end: -6px;
+  }
+
+  .favicon-image {
+    border: 2px solid var(--ntp-background-override-color);
+    border-radius: 50%;
+    height: 24px;
+    margin-inline-end: auto;
+    margin-inline-start: auto;
+    margin-top: 16px;
+    width: 24px;
+  }
+
+  .content-container {
+    color: var(--cr-primary-text-color);
+    font-size: 13px;
+    font-weight: 400;
+    height: 40px;
+    line-height: 20px;
+    margin-inline-end: auto;
+    margin-inline-start: auto;
+    text-align: center;
+    white-space: normal;
+    width: 220px;
+  }
+
+  .button-container {
+    display: inline-block;
+    margin-inline-start: 16px;
+    margin-top: 8px;
+  }
+
+  .wide-button {
+    width: 212px;
+  }
+</style>
+
+<div id="consentCardContainer">
+  <div id="faviconContainer">
+    <ul class="favicon-list">
+      <template id="favionRepeat" is="dom-repeat" items="[[merchants]]"
+          as="merchant">
+        <li class="favicon">
+          <img class="favicon-image" is="cr-auto-img"
+              auto-src="[[getFaviconUrl_(merchant.cartUrl.url)]]"></img>
+        </li>
+      </template>
+    </ul>
+  </div>
+  <div id="contentSteps">
+    <iron-pages selected="[[currentStep]]">
+      <template id="consentStepRepeat" is="dom-repeat" items="[[steps_]]"
+          as="step">
+        <div class="step-container" id="[[step.id]]">
+          <div class="content-container">
+            <span class="content">
+              [[step.content]]
+            </span>
+          </div>
+          <div class="button-container">
+            <template id="oneButtonElement" is="dom-if"
+                if="[[step.hasOneButton]]">
+              <cr-button class="action-button wide-button"
+                  onClick="[[step.actionButton.onClickHandler]]">
+                [[step.actionButton.text]]
+              </cr-button>
+            </template>
+            <template id="TwoButtonElement" is="dom-if"
+                if="[[step.hasTwoButtons]]">
+              <cr-button id="cancelButton" class="cancel-button"
+                  onClick="[[step.cancelButton.onClickHandler]]">
+                [[step.cancelButton.text]]
+               </cr-button>
+              <cr-button id="actionButton" class="action-button"
+                  onClick="[[step.actionButton.onClickHandler]]">
+                [[step.actionButton.text]]
+              </cr-button>
+            </template>
+          </div>
+        </div>
+      </template>
+    </iron-pages>
+  </div>
+</div>
diff --git a/chrome/browser/resources/new_tab_page/modules/cart/discount_consent_card.ts b/chrome/browser/resources/new_tab_page/modules/cart/discount_consent_card.ts
new file mode 100644
index 0000000..b692f68
--- /dev/null
+++ b/chrome/browser/resources/new_tab_page/modules/cart/discount_consent_card.ts
@@ -0,0 +1,172 @@
+// 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.
+
+import 'chrome://resources/cr_elements/cr_button/cr_button.m.js';
+import 'chrome://resources/polymer/v3_0/iron-pages/iron-pages.js';
+
+import {PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+
+import {MerchantCart} from '../../chrome_cart.mojom-webui.js';
+import {I18nMixin, loadTimeData} from '../../i18n_setup.js';
+
+import {getTemplate} from './discount_consent_card.html.js';
+
+/**
+ * This interface contains information that is required to build a text button
+ * in each Step in the DiscountConsentCard.
+ */
+interface ButtonInfo {
+  /* The text shows in side the button.*/
+  text: string;
+  /* The on-click handler. */
+  onClickHandler: () => void;
+}
+
+/**
+ * Contains information for each step in the DiscountConsentCard. These
+ * information are needed to build the iron-pages DOM.
+ */
+interface Step {
+  /* Unique id for each step, this is used as the id attribution for each
+   * step.*/
+  id: string;
+  /* Content for each step. */
+  content: string;
+  /* Indicates whether the current step has one or two buttons. */
+  hasOneButton?: boolean;
+  /* Indicates whether the current step has one or two buttons. */
+  hasTwoButtons?: boolean;
+  /* Required information to build the action button. */
+  actionButton?: ButtonInfo;
+  /* Required information to build the cancel button. */
+  cancelButton?: ButtonInfo;
+}
+
+// This is a configurable multi-step card. Each step is represented by the Step
+// interface.
+export class DiscountConsentCard extends I18nMixin
+(PolymerElement) {
+  static get is() {
+    return 'discount-consent-card';
+  }
+
+  static get template() {
+    return getTemplate();
+  }
+
+  static get properties() {
+    return {
+      merchants: {type: Array, observer: 'onMerchantsChanged_'},
+      currentStep: {type: Number, value: 0},
+      steps_: Array,
+      colorConsentContainer_: {
+        type: Boolean,
+        computed: 'computeColorConsentContainer_(currentStep)',
+        reflectToAttribute: true
+      }
+    };
+  }
+
+  // This is used to build the consent content string. This should not be empty
+  // and it contains a maximum of 3 MerchantCart. The first 3 MerchantCart in
+  // the Cart module.
+  merchants: MerchantCart[];
+  currentStep: number;
+  private steps_: Array<Step> = [];
+  // This is a Finch parameter that decides whether we should change container
+  // background color.
+  private colorConsentContainer_: boolean;
+
+  constructor() {
+    super();
+
+    this.steps_.push({
+      id: 'step1',
+      content: this.getStepOneContent_(),
+      hasOneButton: true,
+      actionButton: {
+        // TODO(crbug.com/1298116): Load string from resource.
+        text: 'continue',
+        onClickHandler: () => {
+          if (this.currentStep < this.getTotalStep_()) {
+            this.currentStep++;
+          } else {
+            // TODO(crbug.com/1298116): Show DiscountConsentDialog.
+          }
+          // TODO(crbug.com/1298116): Record user click on this button.
+        },
+      }
+    });
+
+    // TODO(crbug.com/1298116): Gate second step with a finch flag.
+    this.steps_.push({
+      id: 'step2',
+      content: this.getStepTwoContent_(),
+      hasTwoButtons: true,
+      actionButton: {
+        text: loadTimeData.getString('modulesCartDiscountConsentAccept'),
+        onClickHandler: () => {
+          this.dispatchEvent(
+              new CustomEvent('discount-consent-accepted', {composed: true}));
+        },
+      },
+      cancelButton: {
+        text: loadTimeData.getString('modulesCartDiscountConsentReject'),
+        onClickHandler: () => {
+          this.dispatchEvent(
+              new CustomEvent('discount-consent-rejected', {composed: true}));
+        }
+      }
+    });
+  }
+
+  private getTotalStep_(): number {
+    // TODO(crbug.com/1298116): Return number based on finch flags. If
+    // inline-variation return 2, otherwise return 1.
+    return 2;
+  }
+
+  private getStepOneContent_(): string {
+    // TODO(crbug.com/1298116): Return strings based on finch flags.
+    return loadTimeData.getString('modulesCartDiscountConsentContent');
+  }
+
+  private getStepTwoContent_(): string {
+    // TODO(crbug.com/1298116): Return strings based on finch flags.
+    return loadTimeData.getString('modulesCartDiscountConsentContent');
+  }
+
+  private computeColorConsentContainer_(currentStep: number) {
+    return loadTimeData.getBoolean('modulesCartConsentStepTwoDifferentColor') &&
+        currentStep === 1;
+  }
+
+  private onMerchantsChanged_() {
+    if (this.currentStep === 0) {
+      // TODO(crbug.com/1298116): Build strings with merchant names and string
+      // template from resource. We should also handle the case where the string
+      // gets too long here.
+      this.steps_[0].content = this.merchants[0].merchant + ', ' +
+          this.merchants[1].merchant + ' and more';
+    }
+  }
+
+  private getFaviconUrl_(url: string): string {
+    const faviconUrl = new URL('chrome://favicon2/');
+    faviconUrl.searchParams.set('size', '24');
+    faviconUrl.searchParams.set('scale_factor', '1x');
+    faviconUrl.searchParams.set('show_fallback_monogram', '');
+    faviconUrl.searchParams.set('page_url', url);
+    return faviconUrl.href;
+  }
+}
+
+
+declare global {
+  interface HTMLElementTagNameMap {
+    'discount-consent-card': DiscountConsentCard;
+  }
+}
+
+customElements.define(DiscountConsentCard.is, DiscountConsentCard);
diff --git a/chrome/browser/resources/new_tab_page/new_tab_page.ts b/chrome/browser/resources/new_tab_page/new_tab_page.ts
index ae3919be..5c931fc 100644
--- a/chrome/browser/resources/new_tab_page/new_tab_page.ts
+++ b/chrome/browser/resources/new_tab_page/new_tab_page.ts
@@ -21,6 +21,7 @@
 export {LogoElement} from './logo.js';
 export {recordDuration, recordLoadDuration, recordOccurence, recordPerdecage} from './metrics_utils.js';
 export {ChromeCartProxy} from './modules/cart/chrome_cart_proxy.js';
+export {DiscountConsentCard} from './modules/cart/discount_consent_card.js';
 export {DiscountConsentDialog} from './modules/cart/discount_consent_dialog.js';
 export {chromeCartDescriptor, ChromeCartModuleElement} from './modules/cart/module.js';
 export {chromeCartDescriptor as chromeCartV2Descriptor, ChromeCartModuleElement as ChromeCartV2ModuleElement} from './modules/cart_v2/module.js';
diff --git a/chrome/browser/safe_browsing/chrome_password_protection_service_browsertest.cc b/chrome/browser/safe_browsing/chrome_password_protection_service_browsertest.cc
index 68f5356..2b5cef2 100644
--- a/chrome/browser/safe_browsing/chrome_password_protection_service_browsertest.cc
+++ b/chrome/browser/safe_browsing/chrome_password_protection_service_browsertest.cc
@@ -918,9 +918,7 @@
                           PasswordType::SAVED_PASSWORD, credentials,
                           LoginReputationClientRequest::PASSWORD_REUSE_EVENT,
                           true);
-    if (service->get_pending_requests_for_testing().size() != 1ul)
-      return nullptr;
-
+    DCHECK_EQ(service->get_pending_requests_for_testing().size(), 1ul);
     return *service->get_pending_requests_for_testing().begin();
   }
 
@@ -935,9 +933,8 @@
       PasswordProtectionRequest* request) {
     auto* request_content =
         static_cast<PasswordProtectionRequestContent*>(request);
-    if (request_content->get_deferred_navigations_for_testing().size() != 1ul)
-      return nullptr;
-
+    DCHECK_EQ(request_content->get_deferred_navigations_for_testing().size(),
+              1ul);
     return *request_content->get_deferred_navigations_for_testing().begin();
   }
 
@@ -950,59 +947,6 @@
                        LoginReputationClientResponse::PHISHING, "unused_token",
                        WarningUIType::MODAL_DIALOG, action);
   }
-
-  bool RunUntilRequestDefersCommit(
-      PasswordProtectionRequest* request,
-      content::TestNavigationManager& navigation_manager) {
-    DCHECK(navigation_manager.WaitForResponse());
-
-    // This will run until the first yield point of the navigation which could
-    // be the PasswordProtectionCommitDeferringCondition but it may also be some
-    // other condition, or if no conditions defer it will run until the
-    // navigation finish.
-    navigation_manager.ResumeNavigation();
-
-    // If the navigation finished, fail the test.
-    EXPECT_TRUE(navigation_manager.GetNavigationHandle());
-    if (!navigation_manager.GetNavigationHandle())
-      return false;
-
-    // We must be blocked on a CommitDeferringCondition, otherwise, some new
-    // yield point was added after the response but before
-    // CommitDeferringConditions.
-    DCHECK(navigation_manager.GetNavigationHandle()
-               ->IsCommitDeferringConditionDeferredForTesting());
-
-    // A PasswordProtectionCommitDeferringCondition should have been created.
-    PasswordProtectionCommitDeferringCondition* condition =
-        GetDeferringCondition(request);
-    DCHECK(condition);
-
-    // If the navigation is blocked on the PasswordProtection condition then
-    // we're already done.
-    if (navigation_manager.GetNavigationHandle()
-            ->GetCommitDeferringConditionForTesting() == condition) {
-      return true;
-    }
-
-    // There could be other CommitDeferringConditions before the
-    // PasswordProtection one. Continue past them until we get to it.
-    base::RunLoop run_loop(base::RunLoop::Type::kDefault);
-    condition->register_invoke_callback_for_testing(run_loop.QuitClosure());
-    run_loop.Run();
-
-    // If the navigation finished, fail the test.
-    EXPECT_TRUE(navigation_manager.GetNavigationHandle());
-    if (!navigation_manager.GetNavigationHandle())
-      return false;
-
-    // Ensure the navigation is deferred on the condition we expect.
-    EXPECT_EQ(navigation_manager.GetNavigationHandle()
-                  ->GetCommitDeferringConditionForTesting(),
-              condition);
-    return navigation_manager.GetNavigationHandle()
-               ->GetCommitDeferringConditionForTesting() == condition;
-  }
 };
 
 // Tests that a navigation started while a modal warning is showing is deferred
@@ -1018,7 +962,6 @@
   // Start a request for a PASSWORD_REUSE_EVENT.
   scoped_refptr<PasswordProtectionRequest> request =
       StartRequestWithPotentialForModalWarning();
-  ASSERT_TRUE(request);
 
   // Finish the request so that it results in a modal warning being shown.
   FinishRequest(request.get(), LoginReputationClientResponse::PHISHING);
@@ -1029,14 +972,25 @@
   content::TestNavigationManager navigation(GetWebContents(), kNextPage);
   ASSERT_TRUE(content::ExecJs(GetWebContents()->GetMainFrame(),
                               content::JsReplace("location = $1", kNextPage)));
+  ASSERT_TRUE(navigation.WaitForResponse());
 
-  // Run the navigation until it defers on the
+  // The deferral happens in a CommitDeferringCondition just before commit.
+  // Resume past the response and we should be blocked in the
   // PasswordProtectionCommitDeferringCondition.
-  ASSERT_TRUE(RunUntilRequestDefersCommit(request.get(), navigation));
+  navigation.ResumeNavigation();
+  ASSERT_TRUE(navigation.GetNavigationHandle()
+                  ->IsCommitDeferringConditionDeferredForTesting());
+
+  // Make sure it's the PasswordProtection condition that's causing deferral.
+  PasswordProtectionCommitDeferringCondition* condition =
+      GetDeferringCondition(request.get());
+  ASSERT_TRUE(condition->is_deferred_for_testing());
 
   // Simulate the user dismissing the dialog. The navigation should be resumed.
   DismissModalDialog(WarningAction::IGNORE_WARNING);
 
+  ASSERT_FALSE(navigation.GetNavigationHandle()
+                   ->IsCommitDeferringConditionDeferredForTesting());
   navigation.WaitForNavigationFinished();
   ASSERT_TRUE(navigation.was_successful());
 }
@@ -1056,22 +1010,32 @@
   // Start a request for a PASSWORD_REUSE_EVENT.
   scoped_refptr<PasswordProtectionRequest> request =
       StartRequestWithPotentialForModalWarning();
-  ASSERT_TRUE(request);
 
   // Start a renderer-initiated navigation away from the current page. The
   // navigation should be deferred.
   content::TestNavigationManager navigation(GetWebContents(), kNextPage);
   ASSERT_TRUE(content::ExecJs(GetWebContents()->GetMainFrame(),
                               content::JsReplace("location = $1", kNextPage)));
+  ASSERT_TRUE(navigation.WaitForResponse());
 
-  // Run the navigation until it defers on the
+  // The deferral happens in a CommitDeferringCondition just before commit.
+  // Resume past the response and we should be blocked in the
   // PasswordProtectionCommitDeferringCondition.
-  ASSERT_TRUE(RunUntilRequestDefersCommit(request.get(), navigation));
+  navigation.ResumeNavigation();
+  ASSERT_TRUE(navigation.GetNavigationHandle()
+                  ->IsCommitDeferringConditionDeferredForTesting());
+
+  // Make sure it's the PasswordProtection condition that's causing deferral.
+  PasswordProtectionCommitDeferringCondition* condition =
+      GetDeferringCondition(request.get());
+  ASSERT_TRUE(condition->is_deferred_for_testing());
 
   // Finish the request so that the modal warning is not shown.
   FinishRequest(request.get(), LoginReputationClientResponse::SAFE);
   ASSERT_FALSE(request->is_modal_warning_showing());
 
+  ASSERT_FALSE(navigation.GetNavigationHandle()
+                   ->IsCommitDeferringConditionDeferredForTesting());
   navigation.WaitForNavigationFinished();
   ASSERT_TRUE(navigation.was_successful());
 }
@@ -1091,38 +1055,50 @@
   // Start a request for a PASSWORD_REUSE_EVENT.
   scoped_refptr<PasswordProtectionRequest> request =
       StartRequestWithPotentialForModalWarning();
-  ASSERT_TRUE(request);
 
   // Start a renderer-initiated navigation away from the current page. The
   // navigation should be deferred.
   content::TestNavigationManager navigation(GetWebContents(), kNextPage);
   ASSERT_TRUE(content::ExecJs(GetWebContents()->GetMainFrame(),
                               content::JsReplace("location = $1", kNextPage)));
-  // Run the navigation until it defers on the
+  ASSERT_TRUE(navigation.WaitForResponse());
+
+  // The deferral happens in a CommitDeferringCondition just before commit.
+  // Resume past the response and we should be blocked in the
   // PasswordProtectionCommitDeferringCondition.
-  ASSERT_TRUE(RunUntilRequestDefersCommit(request.get(), navigation));
+  navigation.ResumeNavigation();
+  ASSERT_TRUE(navigation.GetNavigationHandle()
+                  ->IsCommitDeferringConditionDeferredForTesting());
+
+  // Make sure it's the PasswordProtection condition that's causing deferral.
+  PasswordProtectionCommitDeferringCondition* condition =
+      GetDeferringCondition(request.get());
+  ASSERT_TRUE(condition->is_deferred_for_testing());
 
   // Finish the request so that a modal warning is shown
   FinishRequest(request.get(), LoginReputationClientResponse::PHISHING);
   ASSERT_TRUE(request->is_modal_warning_showing());
+
   ASSERT_TRUE(navigation.GetNavigationHandle()
                   ->IsCommitDeferringConditionDeferredForTesting());
 
   // Simulate the user dismissing the dialog. The navigation should be resumed.
   DismissModalDialog(WarningAction::IGNORE_WARNING);
 
+  ASSERT_FALSE(navigation.GetNavigationHandle()
+                   ->IsCommitDeferringConditionDeferredForTesting());
   navigation.WaitForNavigationFinished();
   ASSERT_TRUE(navigation.was_successful());
 }
 
 // Extends the test fixture with support for testing prerendered and
 // back/forward cached pages.
-class ChromePasswordProtectionServiceDeferActivationBrowserTest
-    : public ChromePasswordProtectionServiceNavigationDeferralBrowserTest {
+class ChromePasswordProtectionServiceBrowserTestWithActivation
+    : public ChromePasswordProtectionServiceBrowserTest {
  public:
-  ChromePasswordProtectionServiceDeferActivationBrowserTest()
+  ChromePasswordProtectionServiceBrowserTestWithActivation()
       : prerender_helper_(base::BindRepeating(
-            &ChromePasswordProtectionServiceDeferActivationBrowserTest::
+            &ChromePasswordProtectionServiceBrowserTestWithActivation::
                 GetWebContents,
             base::Unretained(this))) {
     scoped_feature_list_.InitWithFeaturesAndParameters(
@@ -1135,54 +1111,7 @@
 
   void SetUp() override {
     prerender_helper_.SetUp(embedded_test_server());
-    ChromePasswordProtectionServiceNavigationDeferralBrowserTest::SetUp();
-  }
-
-  // This is almost the same as the base class version but is slightly
-  // different as it must use a TestActivationManager which has different
-  // navigation timing.
-  bool RunUntilRequestDefersCommit(
-      PasswordProtectionRequest* request,
-      content::TestActivationManager& prerender_manager) {
-    DCHECK(prerender_manager.WaitForBeforeChecks());
-
-    // A PasswordProtectionCommitDeferringCondition should have been created
-    // for commit checks.
-    PasswordProtectionCommitDeferringCondition* condition =
-        GetDeferringCondition(request);
-    DCHECK(condition);
-
-    base::RunLoop run_loop(base::RunLoop::Type::kDefault);
-    condition->register_invoke_callback_for_testing(run_loop.QuitClosure());
-
-    // This will run until the first yield point of the navigation which could
-    // be the PasswordProtectionCommitDeferringCondition but it may also be some
-    // other condition, or if no conditions defer it will run until the
-    // navigation finish.
-    prerender_manager.ResumeActivation();
-
-    // If the navigation finished, fail the test.
-    EXPECT_TRUE(prerender_manager.GetNavigationHandle());
-    if (!prerender_manager.GetNavigationHandle())
-      return false;
-
-    // If the navigation yielded on a condition before the
-    // PasswordProtectionCommitDeferringCondition, continue until it is
-    // invoked.  If ResumeActivation yielded due to the PasswordProtection
-    // condition, this will be a no-op.
-    run_loop.Run();
-
-    // If the navigation finished, fail the test.
-    EXPECT_TRUE(prerender_manager.GetNavigationHandle());
-    if (!prerender_manager.GetNavigationHandle())
-      return false;
-
-    // Ensure the navigation is deferred on the condition we expect.
-    EXPECT_EQ(prerender_manager.GetNavigationHandle()
-                  ->GetCommitDeferringConditionForTesting(),
-              condition);
-    return prerender_manager.GetNavigationHandle()
-               ->GetCommitDeferringConditionForTesting() == condition;
+    ChromePasswordProtectionServiceBrowserTest::SetUp();
   }
 
  protected:
@@ -1190,140 +1119,102 @@
   base::test::ScopedFeatureList scoped_feature_list_;
 };
 
-// Tests that activation of a prerendered page is deferred when there is a
+// Tests that activation of prerendered pages is disabled when there is a
 // pending PasswordProtectionRequest which might trigger a modal warning.
 // This tests the case where the prerender starts before the
 // PasswordProtectionRequest.
-IN_PROC_BROWSER_TEST_F(
-    ChromePasswordProtectionServiceDeferActivationBrowserTest,
-    DeferActivatePrerenderStartedBeforeRequest) {
+// TODO(https://crbug.com/1234857): The activation should be deferred rather
+// than disallowed, like other navigations.
+IN_PROC_BROWSER_TEST_F(ChromePasswordProtectionServiceBrowserTestWithActivation,
+                       DoNotActivatePrerenderStartedBeforeRequest) {
+  SetUpPrimaryAccountWithHostedDomain(kNoHostedDomainFound);
+  // Prepare sync account will trigger a password change.
+  ChromePasswordProtectionService* service = GetService(/*is_incognito=*/false);
+  ASSERT_TRUE(service);
   ASSERT_TRUE(ui_test_utils::NavigateToURL(
       browser(), embedded_test_server()->GetURL(kLoginPageUrl)));
 
   // Start a prerender.
-  const GURL kPrerenderUrl = embedded_test_server()->GetURL("/simple.html");
-  prerender_helper_.AddPrerender(kPrerenderUrl);
+  GURL prerender_url = embedded_test_server()->GetURL("/simple.html");
+  prerender_helper_.AddPrerender(prerender_url);
 
-  // Start a request that could lead to showing a modal warning.
-  scoped_refptr<PasswordProtectionRequest> request =
-      StartRequestWithPotentialForModalWarning();
-  ASSERT_TRUE(request);
+  // Start a request for a PASSWORD_REUSE_EVENT. This disables activation
+  // navigations because the throttle responsible for deferring while the
+  // request is pending cannot see the activation navigation.
+  service->StartRequest(
+      GetWebContents(), GURL(), GURL(), GURL(), "",
+      PasswordType::PASSWORD_TYPE_UNKNOWN,
+      std::vector<password_manager::MatchingReusedCredential>(),
+      LoginReputationClientRequest::PASSWORD_REUSE_EVENT, true);
 
-  // Navigate to the prerendered URL. Ensure the activation navigation is
-  // deferred until the request finishes without showing a modal.
-  content::TestActivationManager prerender_manager(GetWebContents(),
-                                                   kPrerenderUrl);
-
+  // Navigate to the prerendered URL. It will be loaded anew without an
+  // activation.
+  content::TestNavigationManager prerender_manager(GetWebContents(),
+                                                   prerender_url);
   ASSERT_TRUE(
       content::ExecJs(GetWebContents()->GetMainFrame(),
-                      content::JsReplace("location = $1", kPrerenderUrl)));
-
-  // Run the navigation until it defers on the
-  // PasswordProtectionCommitDeferringCondition.
-  ASSERT_TRUE(RunUntilRequestDefersCommit(request.get(), prerender_manager));
-
-  // Simulate a response arriving that doesn't show the warning dialog. The
-  // activating navigation should now be allowed to complete.
-  FinishRequest(request.get(), LoginReputationClientResponse::SAFE);
-  ASSERT_FALSE(request->is_modal_warning_showing());
+                      content::JsReplace("location = $1", prerender_url)));
   prerender_manager.WaitForNavigationFinished();
-  ASSERT_TRUE(prerender_manager.was_activated());
+  EXPECT_FALSE(prerender_manager.was_prerendered_page_activation());
+  EXPECT_TRUE(prerender_manager.was_successful());
 }
 
-// Tests that activation of a prerendered page is deferred when there is a
+// Tests that activation of prerendered pages is disabled when there is a
 // pending PasswordProtectionRequest which might trigger a modal warning.
 // This tests the case where the prerender starts after the
 // PasswordProtectionRequest.
-IN_PROC_BROWSER_TEST_F(
-    ChromePasswordProtectionServiceDeferActivationBrowserTest,
-    DeferActivatePrerenderStartedAfterRequest) {
+// TODO(https://crbug.com/1234857): The activation should be deferred rather
+// than disallowed, like other navigations.
+IN_PROC_BROWSER_TEST_F(ChromePasswordProtectionServiceBrowserTestWithActivation,
+                       DoNotActivatePrerenderStartedAfterRequest) {
+  SetUpPrimaryAccountWithHostedDomain(kNoHostedDomainFound);
+  // Prepare sync account will trigger a password change.
+  ChromePasswordProtectionService* service = GetService(/*is_incognito=*/false);
+  ASSERT_TRUE(service);
   ASSERT_TRUE(ui_test_utils::NavigateToURL(
       browser(), embedded_test_server()->GetURL(kLoginPageUrl)));
 
-  // Start a request that could lead to showing a modal warning.
-  scoped_refptr<PasswordProtectionRequest> request =
-      StartRequestWithPotentialForModalWarning();
-  ASSERT_TRUE(request);
-
-  // Start a prerender; this should not be deferred since it's happening in the
-  // background.
-  const GURL kPrerenderUrl = embedded_test_server()->GetURL("/simple.html");
-  prerender_helper_.AddPrerender(kPrerenderUrl);
-
-  ASSERT_NE(prerender_helper_.GetHostForUrl(kPrerenderUrl),
-            content::RenderFrameHost::kNoFrameTreeNodeId);
-
-  // Navigate to the prerendered URL. Ensure the activation navigation is
-  // deferred until the request finishes without showing a modal.
-  content::TestActivationManager prerender_manager(GetWebContents(),
-                                                   kPrerenderUrl);
-  ASSERT_TRUE(
-      content::ExecJs(GetWebContents()->GetMainFrame(),
-                      content::JsReplace("location = $1", kPrerenderUrl)));
-
-  // Run the navigation until it defers on the
-  // PasswordProtectionCommitDeferringCondition.
-  ASSERT_TRUE(RunUntilRequestDefersCommit(request.get(), prerender_manager));
-
-  // Simulate a response arriving that doesn't show the warning dialog. The
-  // activating navigation should now be allowed to complete.
-  FinishRequest(request.get(), LoginReputationClientResponse::SAFE);
-  ASSERT_FALSE(request->is_modal_warning_showing());
-
-  prerender_manager.WaitForNavigationFinished();
-  ASSERT_TRUE(prerender_manager.was_activated());
-}
-
-IN_PROC_BROWSER_TEST_F(
-    ChromePasswordProtectionServiceDeferActivationBrowserTest,
-    PrerenderActivationDeferredByModalWarning) {
-  ASSERT_TRUE(ui_test_utils::NavigateToURL(
-      browser(), embedded_test_server()->GetURL(kLoginPageUrl)));
+  // Start a request for a PASSWORD_REUSE_EVENT. This disables activation
+  // navigations because the throttle responsible for deferring while the
+  // request is pending cannot see the activation navigation.
+  service->StartRequest(
+      GetWebContents(), GURL(), GURL(), GURL(), "",
+      PasswordType::PASSWORD_TYPE_UNKNOWN,
+      std::vector<password_manager::MatchingReusedCredential>(),
+      LoginReputationClientRequest::PASSWORD_REUSE_EVENT, true);
 
   // Start a prerender.
-  const GURL kPrerenderUrl = embedded_test_server()->GetURL("/simple.html");
-  prerender_helper_.AddPrerender(kPrerenderUrl);
+  GURL prerender_url = embedded_test_server()->GetURL("/simple.html");
+  prerender_helper_.AddPrerender(prerender_url);
 
-  // Start a request that could lead to showing a modal warning.
-  scoped_refptr<PasswordProtectionRequest> request =
-      StartRequestWithPotentialForModalWarning();
-  ASSERT_TRUE(request);
-
-  // Finish the request so that it results in a modal warning being shown.
-  FinishRequest(request.get(), LoginReputationClientResponse::PHISHING);
-  ASSERT_TRUE(request->is_modal_warning_showing());
-
-  // Navigate to the prerendered URL. Ensure the activation navigation is
-  // deferred until the request finishes without showing a modal.
-  content::TestActivationManager prerender_manager(GetWebContents(),
-                                                   kPrerenderUrl);
-
+  // Navigate to the prerendered URL. It will be loaded anew without an
+  // activation.
+  content::TestNavigationManager prerender_manager(GetWebContents(),
+                                                   prerender_url);
   ASSERT_TRUE(
       content::ExecJs(GetWebContents()->GetMainFrame(),
-                      content::JsReplace("location = $1", kPrerenderUrl)));
-
-  // Run the navigation until it defers on the
-  // PasswordProtectionCommitDeferringCondition.
-  ASSERT_TRUE(RunUntilRequestDefersCommit(request.get(), prerender_manager));
-
-  // Simulate the user dismissing the dialog. The navigation should be resumed.
-  DismissModalDialog(WarningAction::IGNORE_WARNING);
-
+                      content::JsReplace("location = $1", prerender_url)));
   prerender_manager.WaitForNavigationFinished();
-  ASSERT_TRUE(prerender_manager.was_successful());
+  EXPECT_FALSE(prerender_manager.was_prerendered_page_activation());
+  EXPECT_TRUE(prerender_manager.was_successful());
 }
 
-// Tests that activation of back/forward cached pages is not deferred if the
-// navigation is browser-initiated.
-// TODO(bokan): This is existing behavior but I wonder if it's intentional? The
-// user can't click any browser UI while the modal is up anyway...
-IN_PROC_BROWSER_TEST_F(
-    ChromePasswordProtectionServiceDeferActivationBrowserTest,
-    BrowserInitiatedBackForwardCacheActivation) {
+// Tests that activation of back/forward cached pages is disabled when there is
+// a pending PasswordProtectionRequest which might trigger a modal warning.
+// TODO(https://crbug.com/1234857): The activation should be deferred rather
+// than disallowed, like other navigations.
+IN_PROC_BROWSER_TEST_F(ChromePasswordProtectionServiceBrowserTestWithActivation,
+                       DoNotActivateBackForwardCache) {
+  SetUpPrimaryAccountWithHostedDomain(kNoHostedDomainFound);
+
+  // Prepare sync account will trigger a password change.
+  ChromePasswordProtectionService* service = GetService(/*is_incognito=*/false);
+  ASSERT_TRUE(service);
+
   // Put a simple page in the back/forward cache.
-  const GURL kURLInBFCache = embedded_test_server()->GetURL("/simple.html");
+  GURL url_a = embedded_test_server()->GetURL("/simple.html");
   content::RenderFrameHost* rfh_a_raw =
-      ui_test_utils::NavigateToURL(browser(), kURLInBFCache);
+      ui_test_utils::NavigateToURL(browser(), url_a);
   content::RenderFrameHostWrapper rfh_a(rfh_a_raw);
   content::RenderFrameHost* rfh_b_raw = ui_test_utils::NavigateToURL(
       browser(), embedded_test_server()->GetURL(kLoginPageUrl));
@@ -1335,71 +1226,20 @@
   EXPECT_EQ(rfh_a->GetLifecycleState(),
             content::RenderFrameHost::LifecycleState::kInBackForwardCache);
 
-  // Start a request that could lead to showing a modal warning.
-  scoped_refptr<PasswordProtectionRequest> request =
-      StartRequestWithPotentialForModalWarning();
-  ASSERT_TRUE(request);
+  // Start a request for a PASSWORD_REUSE_EVENT. This disables activation
+  // navigations because the throttle responsible for deferring while the
+  // request is pending cannot see the activation navigation.
+  service->StartRequest(
+      GetWebContents(), GURL(), GURL(), GURL(), "",
+      PasswordType::PASSWORD_TYPE_UNKNOWN,
+      std::vector<password_manager::MatchingReusedCredential>(),
+      LoginReputationClientRequest::PASSWORD_REUSE_EVENT, true);
 
-  content::TestActivationManager prerender_manager(GetWebContents(),
-                                                   kURLInBFCache);
-
-  // Do a browser-initiated back history navigation. This should be allowed
-  // because it is browser-initiated.
+  // Navigate back. It will be loaded anew without an activation.
   GetWebContents()->GetController().GoBack();
-  ASSERT_TRUE(prerender_manager.WaitForBeforeChecks());
-
-  // The activating navigation should be unblocked.
-  prerender_manager.WaitForNavigationFinished();
-  ASSERT_TRUE(prerender_manager.was_activated());
-}
-
-// Tests that activation of back/forward cached pages from a renderer initiated
-// history navigation is deferred while there is a pending
-// PasswordProtectionRequest which might trigger a modal warning.
-IN_PROC_BROWSER_TEST_F(
-    ChromePasswordProtectionServiceDeferActivationBrowserTest,
-    DeferRendererInitiatedBackForwardCacheActivation) {
-  // Put a simple page in the back/forward cache.
-  const GURL kURLInBFCache = embedded_test_server()->GetURL("/simple.html");
-  content::RenderFrameHost* rfh_a_raw =
-      ui_test_utils::NavigateToURL(browser(), kURLInBFCache);
-  content::RenderFrameHostWrapper rfh_a(rfh_a_raw);
-  content::RenderFrameHost* rfh_b_raw = ui_test_utils::NavigateToURL(
-      browser(), embedded_test_server()->GetURL(kLoginPageUrl));
-  content::RenderFrameHostWrapper rfh_b(rfh_b_raw);
-
-  // Ensure that `rfh_a` is in the back/forward cache.
-  EXPECT_FALSE(rfh_a.IsRenderFrameDeleted());
-  EXPECT_NE(rfh_a.get(), rfh_b.get());
-  EXPECT_EQ(rfh_a->GetLifecycleState(),
-            content::RenderFrameHost::LifecycleState::kInBackForwardCache);
-
-  // Start a request that could lead to showing a modal warning.
-  scoped_refptr<PasswordProtectionRequest> request =
-      StartRequestWithPotentialForModalWarning();
-  ASSERT_TRUE(request);
-
-  // Navigate back to the URL in the BFCache. Ensure the BFCache restore is
-  // deferred until the request finishes without showing a modal.  Note: this
-  // must be a renderer-initiated history navigation. A user-initiated history
-  // navigation should not be deferred.
-  content::TestActivationManager prerender_manager(GetWebContents(),
-                                                   kURLInBFCache);
-  ASSERT_TRUE(content::ExecJs(
-      GetWebContents()->GetMainFrame(),
-      content::JsReplace("window.history.back()", kURLInBFCache)));
-
-  // Run the navigation until it defers on the
-  // PasswordProtectionCommitDeferringCondition.
-  ASSERT_TRUE(RunUntilRequestDefersCommit(request.get(), prerender_manager));
-
-  // Finish the request so that no warning is shown.
-  FinishRequest(request.get(), LoginReputationClientResponse::SAFE);
-  ASSERT_FALSE(request->is_modal_warning_showing());
-
-  // Since no modal is showing, the activating navigation should be unblocked.
-  prerender_manager.WaitForNavigationFinished();
-  ASSERT_TRUE(prerender_manager.was_activated());
+  EXPECT_TRUE(content::WaitForLoadStop(GetWebContents()));
+  ASSERT_TRUE(rfh_a.WaitUntilRenderFrameDeleted());
+  EXPECT_EQ(GetWebContents()->GetLastCommittedURL(), url_a);
 }
 
 }  // namespace safe_browsing
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb
index ee3bf6a..1b598f0 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb
@@ -462,6 +462,7 @@
 <translation id="3687645719033307815">የዚህን ገጽ ቅድመ-ዕይታ በማየት ላይ ነዎት</translation>
 <translation id="3690369331356918524">የይለፍ ቃላት በውሂብ ደንብ ጥሰት ተጋላጭ ከሆኑ ያስጠነቅቀዎታል</translation>
 <translation id="3692944402865947621">የማከማቻ ቦታው የማይገኝ ስለሆነ <ph name="FILE_NAME" />ን ማውረድ አልተሳካም።</translation>
+<translation id="3699022356773522638">ፋይል ይውረድ?</translation>
 <translation id="371230970611282515">አደገኛ ክስተቶች ከመፈጠራቸው በፊት ይገምት እና እርስዎን ያስጠነቅቀዎታል።</translation>
 <translation id="3714981814255182093">የአግኝ አሞሌን ክፈት</translation>
 <translation id="3716182511346448902">ይህ ገጽ በጣም ብዙ ማህደረ ትውስታን ይጠቀማል፣ ስለዚህ Chrome ባለበት አቁሞታል።</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb
index 3db4ae1a..c15c397 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb
@@ -462,6 +462,7 @@
 <translation id="3687645719033307815">Du ser en forhåndsvisning af denne side</translation>
 <translation id="3690369331356918524">Advarer dig, hvis adgangskoder offentliggøres i et brud på datasikkerheden</translation>
 <translation id="3692944402865947621"><ph name="FILE_NAME" /> blev ikke downloadet, da lagerplaceringen ikke er tilgængelig.</translation>
+<translation id="3699022356773522638">Vil du downloade filen?</translation>
 <translation id="371230970611282515">Forudser og advarer dig om skadelige hændelser, før de opstår.</translation>
 <translation id="3714981814255182093">Åbn søgefeltet</translation>
 <translation id="3716182511346448902">Denne side anvender for meget hukommelse, så Chrome har sat den på pause.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_de.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_de.xtb
index 838c3de..0e276357 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_de.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_de.xtb
@@ -462,6 +462,7 @@
 <translation id="3687645719033307815">Sie sehen eine Vorschau dieser Seite</translation>
 <translation id="3690369331356918524">Warnt Sie, wenn Passwörter durch eine Datenpanne preisgegeben worden sind</translation>
 <translation id="3692944402865947621">Download von <ph name="FILE_NAME" /> fehlgeschlagen, weil der Speicherort nicht erreichbar ist.</translation>
+<translation id="3699022356773522638">Datei herunterladen?</translation>
 <translation id="371230970611282515">Erkennt schädliche Ereignisse im Voraus und warnt Sie, bevor diese eintreten.</translation>
 <translation id="3714981814255182093">Suchleiste öffnen</translation>
 <translation id="3716182511346448902">Diese Seite benötigt zu viel Arbeitsspeicher und wurde daher von Chrome angehalten.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb
index 028f9a6b..6021a848 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb
@@ -462,6 +462,7 @@
 <translation id="3687645719033307815">Βλέπετε μια προεπισκόπηση αυτής της σελίδας.</translation>
 <translation id="3690369331356918524">Σας προειδοποιεί σε περίπτωση που οι κωδικοί πρόσβασής σας αποκαλυφθούν στο πλαίσιο μιας παραβίασης δεδομένων.</translation>
 <translation id="3692944402865947621">Η λήψη του αρχείου <ph name="FILE_NAME" /> απέτυχε επειδή δεν είναι προσβάσιμη η τοποθεσία αποθήκευσης.</translation>
+<translation id="3699022356773522638">Λήψη αρχείου;</translation>
 <translation id="371230970611282515">Προβλέπει και σας προειδοποιεί για επικίνδυνα συμβάντα προτού αυτά συμβούν.</translation>
 <translation id="3714981814255182093">Άνοιγμα της γραμμής εύρεσης</translation>
 <translation id="3716182511346448902">Αυτή η σελίδα χρησιμοποιεί πάρα πολλή μνήμη. Για αυτόν τον λόγο, το Chrome την έθεσε σε παύση.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb
index 64e39e1..ce6734c9 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb
@@ -462,6 +462,7 @@
 <translation id="3687645719033307815">Estás viendo una vista previa de esta página</translation>
 <translation id="3690369331356918524">Te avisa si tus contraseñas se ven expuestas en una quiebra de seguridad de datos</translation>
 <translation id="3692944402865947621">No se ha podido descargar <ph name="FILE_NAME" /> porque no se puede acceder a la ubicación del almacenamiento.</translation>
+<translation id="3699022356773522638">¿Descargar archivo?</translation>
 <translation id="371230970611282515">Predice y te advierte de eventos peligrosos antes de que se produzcan.</translation>
 <translation id="3714981814255182093">Abre la barra de búsqueda</translation>
 <translation id="3716182511346448902">Esta página utiliza demasiada memoria y Chrome la ha pausado.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_eu.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_eu.xtb
index fc7f6cf..2e0a9c1 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_eu.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_eu.xtb
@@ -462,6 +462,7 @@
 <translation id="3687645719033307815">Orri honen aurrebista ikusten ari zara</translation>
 <translation id="3690369331356918524">Abisatu pasahitzak arriskuan badaude datuen isilpekotasuna urratu delako.</translation>
 <translation id="3692944402865947621">Ezin izan da deskargatu <ph name="FILE_NAME" />, memoria ez dagoelako eskuragarri.</translation>
+<translation id="3699022356773522638">Fitxategia deskargatu nahi duzu?</translation>
 <translation id="371230970611282515">Gertaera arriskutsuak iragartzen ditu eta haien berri ematen dizu gertatu aurretik.</translation>
 <translation id="3714981814255182093">Ireki bilaketa-barra</translation>
 <translation id="3716182511346448902">Chrome-k orri hau pausatu du memoria gehiegi erabiltzen duelako.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb
index 0433f49..754df5996 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb
@@ -462,6 +462,7 @@
 <translation id="3687645719033307815">Tinitingnan mo ang preview ng page na ito</translation>
 <translation id="3690369331356918524">Babalaan ka kung mae-expose ang mga password sa isang paglabag sa data</translation>
 <translation id="3692944402865947621">Hindi na-download ang <ph name="FILE_NAME" /> dahil hindi maabot ang lokasyon ng storage.</translation>
+<translation id="3699022356773522638">I-download ang file?</translation>
 <translation id="371230970611282515">Hinuhulaan ang mga mapanganib na event at binibigyan ka ng babala tungkol sa mga ito bago mangyari ang mga ito.</translation>
 <translation id="3714981814255182093">Buksan ang Bar sa Paghahanap</translation>
 <translation id="3716182511346448902">Masyadong malaki ang ginagamit na memory ng page na ito kaya na-pause ito ng Chrome.</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 1e31a85..1c743802 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
@@ -462,6 +462,7 @@
 <translation id="3687645719033307815">Бул баракты алдын ала көрүп жатасыз</translation>
 <translation id="3690369331356918524">Сырсөзүңүздү кимдир-бирөө билип алса, эскертүү жөнөтөт</translation>
 <translation id="3692944402865947621">Сактагыч жеткиликсиз болгондугуна байланыштуу, <ph name="FILE_NAME" /> жүктөлбөй калды.</translation>
+<translation id="3699022356773522638">Файлды жүктөп аласызбы?</translation>
 <translation id="371230970611282515">Кооптуу нерселер орун алганга чейин аларды аныктап, сизге кабарлап турат.</translation>
 <translation id="3714981814255182093">Издөө тилкесин ачуу</translation>
 <translation id="3716182511346448902">Бул барак өтө көп эстутум колдонгондуктан Chrome аны тындырды.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb
index 47ec676..44bfd82 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb
@@ -462,6 +462,7 @@
 <translation id="3687645719033307815">तुम्ही या पेजचे पूर्वावलोकन पाहत आहात</translation>
 <translation id="3690369331356918524">डेटा भंगामध्ये पासवर्ड उघड झाल्यास, तुम्हाला चेतावणी देते</translation>
 <translation id="3692944402865947621"><ph name="FILE_NAME" /> download failed because storage location is not reachable.</translation>
+<translation id="3699022356773522638">फाइल डाउनलोड करायची आहे का?</translation>
 <translation id="371230970611282515">धोकादायक घटना घडण्याआधी त्यांचे पूर्वानुमान करतो आणि त्यांबद्दल तुम्हाला चेतावणी देतो.</translation>
 <translation id="3714981814255182093">शोध बार उघडा</translation>
 <translation id="3716182511346448902">हे पेज खूपच जास्त मेमरी वापरत असल्यामुळे Chrome ने ते थांबवून ठेवलेले आहे.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ne.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ne.xtb
index c00811b..2fd4ada 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ne.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ne.xtb
@@ -38,6 +38,7 @@
 <translation id="1201402288615127009">अर्को</translation>
 <translation id="1202892408424955784">ट्र्याक गरिएका उत्पादनहरू</translation>
 <translation id="1204037785786432551">डाउनलोड लिंक</translation>
+<translation id="1204692632633423444">Chrome एक्सन बटन: <ph name="ACTION" /></translation>
 <translation id="1206892813135768548">लिङ्क पाठ कपी गर्नुहोस्</translation>
 <translation id="1208340532756947324">यन्त्रहरूभरि सिंक र वैयक्तीकृत गर्न सिंक गर्ने सुविधा सक्रिय गर्नुहोस्</translation>
 <translation id="1209206284964581585">अहिलेका लागि लुकाउनुहोस्</translation>
@@ -201,6 +202,7 @@
 <translation id="2172688499998841696">'फोटोको वर्णन' सुविधा अफ छ</translation>
 <translation id="2172905120685242547">विन्डो बन्द गर्ने हो?</translation>
 <translation id="2175927920773552910">QR कोड</translation>
+<translation id="2176767904800337188">भर्चुअल कार्डले तपाईंलाई ठगीबाट जोगाउनका निम्ति तपाईंको कार्डको वास्तविक जानकारी लुकाउँछ। <ph name="BEGIN_LINK1" />भर्चुअल कार्डका बारेमा थप जान्नुहोस्<ph name="END_LINK1" /></translation>
 <translation id="218608176142494674">आदान प्रदान गर्दै</translation>
 <translation id="2194856509914051091">विचार गर्नु पर्ने कुराहरू</translation>
 <translation id="2200113223741723867">प्रयोगसम्बन्धी डेटा सेयर गर्ने सेटिङ व्यवस्थापन गर्नुहोस्</translation>
@@ -213,6 +215,7 @@
 <translation id="2259659629660284697">पासवर्डहरू निर्यात गर्नुहोस्…</translation>
 <translation id="2276696007612801991">आफ्ना पासवर्डहरू जाँच गर्न आफ्नो Google खातामा साइन इन गर्नुहोस्</translation>
 <translation id="2278052315791335171">तपाईंले यो पासवर्ड मेटाउनुभयो भने पनि <ph name="SITE" /> मा रहेको तपाईंको खाता मेटिने छैन</translation>
+<translation id="2279146068164892489"><ph name="APPNAME" /> एप खोल्ने हो?</translation>
 <translation id="2286841657746966508">बिल पठाउने ठेगाना</translation>
 <translation id="228704530595896923">सेयर गर्ने सुविधासम्बन्धी विकल्पहरूको सूची।</translation>
 <translation id="230115972905494466">कुनै पनि मिल्दाजुल्दा यन्त्र भेटिएनन्</translation>
@@ -330,6 +333,7 @@
 <translation id="2923908459366352541">नाम मान्य छैन</translation>
 <translation id="2932150158123903946">Google <ph name="APP_NAME" /> को भण्डारण</translation>
 <translation id="2932222164150889403">तपाईंको किबोर्ड परिवर्तन हुने छैन</translation>
+<translation id="2936980480904111527">Chrome बाट प्राप्त हुने सूचनाहरूका सहायताले विभिन्न कार्यहरू सजिलै गर्न सकिन्छ</translation>
 <translation id="2942036813789421260">पूर्वावलोकन ट्याब बन्द छ</translation>
 <translation id="2946420957526726953">तपाईंको फोन अन्य डिभाइससँग कनेक्ट गर्न Chrome अपडेट गरिँदै छ</translation>
 <translation id="2951071800649516099">पछि पढ्न सेभ गरिएका वेबपेजको सूचीमा वेबपेजहरू हाल्नुहोस्</translation>
@@ -671,6 +675,7 @@
 <translation id="4961107849584082341">यस पृष्ठलाई जुनसुकै भाषामा अनुवाद गर्नुहोस्</translation>
 <translation id="4971735654804503942">खतरनाक वेबसाइट, डाउनलोड र एक्स्टेन्सनहरूबाट अझ छिटो र सक्रिय सुरक्षा। तपाईंलाई पासवर्डहरूको चोरी हुन सक्ने सम्भावनाबारे चेतावनी दिन्छ। ब्राउजिङ डेटा Google लाई पठाउनु पर्ने हुन्छ।</translation>
 <translation id="497421865427891073">अगाडि जानुहोस्</translation>
+<translation id="4987271110129728827">उक्त पेज भेट्टाउन सकिएन। आफ्नो हिज्जे जाँच्नुहोस् वा वेबमा खोजी हेर्नुहोस्।</translation>
 <translation id="4988526792673242964">पृष्ठहरू</translation>
 <translation id="5001388021414335527">यहाँ क्लिक गरी यो साइट फलो गर्नुहोस्</translation>
 <translation id="5004416275253351869">Google का क्रियाकलापसम्बन्धी नियन्त्रणहरू</translation>
@@ -875,6 +880,7 @@
 <translation id="6162892189396105610">यो मोड अन हुँदा Chrome लाई तपाईं जुन जुन पेज खोल्न सक्नुहुन्छ भन्ने लाग्छ ती पेज प्रिलोड गरेर राखिन्छ।</translation>
 <translation id="6186394685773237175">अरूले देखेको कुनै पनि पासवर्ड फेला परेन</translation>
 <translation id="6192907950379606605">फोटोका विवरणहरू पाउनुहोस्</translation>
+<translation id="620197886010707372">Google Play मार्फत <ph name="APPNAME" /> एप खोल्ने हो?</translation>
 <translation id="6203593061661911168">Wi-Fi मा कनेक्ट भएपछि डाउनलोड गर्न थालिने छ</translation>
 <translation id="6210748933810148297"><ph name="EMAIL" /> होइन?</translation>
 <translation id="6211386937064921208">यो पृष्ठको प्रिभ्यु हेरिँदै छ</translation>
@@ -1063,6 +1069,7 @@
 <translation id="7191430249889272776">पृष्ठभूमिमा ट्याब खुला छ।</translation>
 <translation id="7196215469483532480">गोपनीयतासम्बन्धी मार्गदर्शनको वर्णन स्क्रिनको पूरा भाग ओगट्ने गरी खोलिएको छ</translation>
 <translation id="7227218174981371415">{FILE_COUNT,plural, =1{१ डाउनलोड विचारधीन छ}other{# डाउनलोडहरू विचारधीन छन्}}</translation>
+<translation id="7237045078887540010">तपाईंले Chrome चलाउनुभयो भने तपाईं <ph name="BEGIN_TOS_LINK" />Google का सेवाका सर्त<ph name="END_TOS_LINK" /> र <ph name="BEGIN_ATOS_LINK" />Google Chrome तथा Chrome OS का सेवाका अतिरिक्त सर्तहरू<ph name="END_ATOS_LINK" />मा सहमति जनाउनुहुन्छ भन्ने अर्थ लाग्छ। यसका साथै, <ph name="BEGIN_PRIVACY_LINK" />गोपनीयता नीति<ph name="END_PRIVACY_LINK" /> पनि लागू हुन्छ।</translation>
 <translation id="7242755609445462077">शैलीबद्ध हाइलाइट <ph name="CURRENT_DATE" /></translation>
 <translation id="7248069434667874558"><ph name="TARGET_DEVICE_NAME" /> को Chrome मा सिंक सुविधा सक्रिय गरिएको छ भन्ने कुरा सुनिश्चित गर्नुहोस्</translation>
 <translation id="7252076891734325316">आफ्नो फोन कम्प्युटरको छेउमा राख्नुहोस्</translation>
@@ -1268,6 +1275,7 @@
 <translation id="834313815369870491">निम्न साइटहरूको पाठ कहिल्यै अनुवाद नगरियोस्</translation>
 <translation id="8352996530981010042">प्रतिक्रियाहरू डाउनलोड गर्न सकिँदैन। फेरि प्रयास गर्नुहोस्।</translation>
 <translation id="8354977102499939946">आफ्नो आवाज प्रयोग गरी छिटोछरितो रूपमा खोज्नुहोस्। यो सर्टकट परिवर्तन गर्न सेटिङमा जानुहोस्।</translation>
+<translation id="8356078935982976590">तपाईं मिडिया कन्ट्रोल, इन्कोग्निटो मोड चलाइएको अवधि, डाउनलोड गरिएका सामग्री र अन्य कुरा सजिलै व्यवस्थापन गर्न सक्नु हुने छ</translation>
 <translation id="835847953965672673"><ph name="NUMBER_OF_DOWNLOADS" /> वटा डाउनलोड रिस्टोर गरिए</translation>
 <translation id="8364299278605033898">लोकप्रिय वेबसाइटहरू हेर्नुहोस्</translation>
 <translation id="8368001212524806591">मूल्य ट्रयाक गर्नुहोस्</translation>
@@ -1425,6 +1433,7 @@
 <translation id="9169507124922466868">नेभिगेसनको इतिहास आधा खुला छ</translation>
 <translation id="9199368092038462496">{NUM_MINS,plural, =1{१ मिनेटअघि जाँच गरिएको}other{# मिनेटअघि जाँच गरिएको}}</translation>
 <translation id="9204836675896933765">१ फाइल बाँकी</translation>
+<translation id="9205933215779845960">उक्त पेज भेट्टाउन सकिएन। आफ्नो हिज्जे जाँच्नुहोस् वा <ph name="SEARCH_ENGINE" /> मा खोजी हेर्नुहोस्।</translation>
 <translation id="9206873250291191720">क</translation>
 <translation id="9209888181064652401">कल गर्न सकिएन</translation>
 <translation id="9212845824145208577">योभन्दा तल जान मिल्दैन। यो पेजको अझै तल्लो भागबाट ड्रयाग गरी हेर्नुहोस्।</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb
index b82f669..006eb7e 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb
@@ -462,6 +462,7 @@
 <translation id="3687645719033307815">Du ser på en forhåndsvisning av denne siden</translation>
 <translation id="3690369331356918524">Advarer deg hvis passord blir avdekket i databrudd</translation>
 <translation id="3692944402865947621">Nedlastingen av <ph name="FILE_NAME" /> ble avbrutt fordi lagringsstedet ikke kan nås.</translation>
+<translation id="3699022356773522638">Vil du laste ned filen?</translation>
 <translation id="371230970611282515">Forutser og advarer deg om farlige hendelser før de inntreffer.</translation>
 <translation id="3714981814255182093">Åpne søkeraden</translation>
 <translation id="3716182511346448902">Denne siden bruker for mye minne, så Chrome har satt den på pause.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zu.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zu.xtb
index 545cc24..7a046ad 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zu.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zu.xtb
@@ -462,6 +462,7 @@
 <translation id="3687645719033307815">Ubuka ukubuka kuqala kwaleli khasi</translation>
 <translation id="3690369331356918524">Iyakuxwayisa uma amaphasiwedi edalulwe ekwaphulweni kwesivumelwano sedatha</translation>
 <translation id="3692944402865947621">Ukulandwa kwe-<ph name="FILE_NAME" /> kuhlulekile ngoba indawo yesitoreji ayifinyeleleki.</translation>
+<translation id="3699022356773522638">Dawuniloda ifayela?</translation>
 <translation id="371230970611282515">Ibikezela futhi ikuxwayise ngemicimbi eyingozi ngaphambo kokuba yenzeke.</translation>
 <translation id="3714981814255182093">Vula ibha yokuthola</translation>
 <translation id="3716182511346448902">Leli khasi lisebenzisa imemori eningi, ngakho-ke i-Chrome ilimise kancane.</translation>
diff --git a/chrome/browser/ui/browser_commands.h b/chrome/browser/ui/browser_commands.h
index d877c85..71b3d8d 100644
--- a/chrome/browser/ui/browser_commands.h
+++ b/chrome/browser/ui/browser_commands.h
@@ -12,7 +12,6 @@
 #include "build/build_config.h"
 #include "chrome/browser/devtools/devtools_toggle_action.h"
 #include "chrome/browser/devtools/devtools_window.h"
-#include "chrome/browser/image_editor/screenshot_flow.h"
 #include "chrome/browser/ui/chrome_pages.h"
 #include "chrome/browser/ui/tabs/tab_strip_model.h"
 #include "chrome/browser/ui/tabs/tab_strip_model_delegate.h"
diff --git a/chrome/build/linux.pgo.txt b/chrome/build/linux.pgo.txt
index 34dcea4..deca7709 100644
--- a/chrome/build/linux.pgo.txt
+++ b/chrome/build/linux.pgo.txt
@@ -1 +1 @@
-chrome-linux-main-1645854382-0ad3013dee8c48689470f401c9ae4eac73aca36b.profdata
+chrome-linux-main-1645963179-913c34eac8ee784ba8bb6c23e1a922923aac3934.profdata
diff --git a/chrome/build/mac-arm.pgo.txt b/chrome/build/mac-arm.pgo.txt
index 6d73f5c..d323fdc 100644
--- a/chrome/build/mac-arm.pgo.txt
+++ b/chrome/build/mac-arm.pgo.txt
@@ -1 +1 @@
-chrome-mac-arm-main-1645854382-c347d76ee094fc59bc0abf2e9235027639a6c205.profdata
+chrome-mac-arm-main-1645963179-dc5421006876180184983c42fbfa30f08f953fdd.profdata
diff --git a/chrome/build/mac.pgo.txt b/chrome/build/mac.pgo.txt
index 78a4eb79a..8b2eed05 100644
--- a/chrome/build/mac.pgo.txt
+++ b/chrome/build/mac.pgo.txt
@@ -1 +1 @@
-chrome-mac-main-1645854382-ca5bdf8165ed04431a205d087b8a1c9fc4069a38.profdata
+chrome-mac-main-1645963179-aea84330bbac08f3d5f1aebe7248609bc0cdb326.profdata
diff --git a/chrome/build/win32.pgo.txt b/chrome/build/win32.pgo.txt
index 1522d330..3a3b50a 100644
--- a/chrome/build/win32.pgo.txt
+++ b/chrome/build/win32.pgo.txt
@@ -1 +1 @@
-chrome-win32-main-1645865513-417b67d5ec4b9eb841746463edfd3d55a91ca328.profdata
+chrome-win32-main-1645940535-17385823e37ee142da7e41842d27a7dca6c4fd0d.profdata
diff --git a/chrome/build/win64.pgo.txt b/chrome/build/win64.pgo.txt
index 2c4d22b0..10211c6 100644
--- a/chrome/build/win64.pgo.txt
+++ b/chrome/build/win64.pgo.txt
@@ -1 +1 @@
-chrome-win64-main-1645854382-f9030c4d7de25f4c564afa1c0c034e0aa9c71ad6.profdata
+chrome-win64-main-1645963179-5c38096cd6036d79b83a3ec25681b0bd7f0c7bb7.profdata
diff --git a/chrome/test/data/webui/new_tab_page/modules/cart/cart.gni b/chrome/test/data/webui/new_tab_page/modules/cart/cart.gni
index 56ed3e6..662c8df4 100644
--- a/chrome/test/data/webui/new_tab_page/modules/cart/cart.gni
+++ b/chrome/test/data/webui/new_tab_page/modules/cart/cart.gni
@@ -3,6 +3,7 @@
 # found in the LICENSE file.
 
 cart_test_files = [
+  "modules/cart/discount_consent_card_test.ts",
   "modules/cart/discount_consent_dialog_test.ts",
   "modules/cart/module_test.ts",
 ]
diff --git a/chrome/test/data/webui/new_tab_page/modules/cart/discount_consent_card_test.ts b/chrome/test/data/webui/new_tab_page/modules/cart/discount_consent_card_test.ts
new file mode 100644
index 0000000..645f9c26
--- /dev/null
+++ b/chrome/test/data/webui/new_tab_page/modules/cart/discount_consent_card_test.ts
@@ -0,0 +1,167 @@
+// 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.
+import 'chrome://new-tab-page/new_tab_page.js';
+import 'chrome://webui-test/mojo_webui_test_support.js';
+
+import {DiscountConsentCard} from 'chrome://new-tab-page/new_tab_page.js';
+import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
+import {assertEquals, assertTrue} from 'chrome://webui-test/chai_assert.js';
+import {flushTasks} from 'chrome://webui-test/test_util.js';
+import {assertStyle} from '../../test_support.js';
+
+suite('NewTabPageDiscountConsentCartTest', () => {
+  suiteSetup(() => {
+    loadTimeData.overrideValues(
+        {modulesCartConsentStepTwoDifferentColor: false});
+  });
+
+  let discountConsentCard: DiscountConsentCard;
+  setup(() => {
+    document.body.innerHTML = '';
+    discountConsentCard = document.createElement('discount-consent-card');
+    document.body.appendChild(discountConsentCard);
+
+    return flushTasks();
+  });
+
+  test('Verify DOM has two steps', () => {
+    var contentSteps = discountConsentCard.shadowRoot!.querySelectorAll(
+        '#contentSteps .step-container');
+    assertEquals(contentSteps.length, 2);
+    assertEquals(
+        'step1', contentSteps[0]!.getAttribute('id'),
+        'First content step should have id as step1');
+    assertEquals(
+        'step2', contentSteps[1]!.getAttribute('id'),
+        'Second content step should have id as step2');
+  });
+
+  test('Verify clicking continue button shows step 2 inline', () => {
+    var contentSelectedPage = discountConsentCard.shadowRoot!.querySelectorAll(
+        '#contentSteps .iron-selected');
+    assertEquals(contentSelectedPage.length, 1);
+    assertEquals(
+        'step1', contentSelectedPage[0]!.getAttribute('id'),
+        'Selected content step should have id as step1');
+
+    contentSelectedPage[0]!.querySelector<HTMLElement>(
+                               '.action-button')!.click();
+    contentSelectedPage = discountConsentCard.shadowRoot!.querySelectorAll(
+        '#contentSteps .iron-selected');
+    assertEquals(contentSelectedPage.length, 1);
+    assertEquals(
+        'step2', contentSelectedPage[0]!.getAttribute('id'),
+        'Selected content step should have id as step2');
+  });
+
+  test(
+      'Verify "Get discounts" button emits discount-consent-accepted event',
+      () => {
+        discountConsentCard.currentStep = 1;
+
+        var capturedEvent = false;
+        discountConsentCard.addEventListener(
+            'discount-consent-accepted', () => capturedEvent = true);
+
+        const contentSelectedPage =
+            discountConsentCard.shadowRoot!.querySelectorAll(
+                '#contentSteps .iron-selected');
+        assertEquals(contentSelectedPage.length, 1);
+        assertEquals(
+            'step2', contentSelectedPage[0]!.getAttribute('id'),
+            'Selected content step should have id as step2');
+
+        contentSelectedPage[0]!.querySelector<HTMLElement>(
+                                   '.action-button')!.click();
+        assertTrue(
+            capturedEvent, '\'discount-consent-accepted\' should be emitted');
+      });
+
+  test(
+      'Verify "No thanks" button emits discount-consent-rejected event', () => {
+        discountConsentCard.currentStep = 1;
+
+        var capturedEvent = false;
+        discountConsentCard.addEventListener(
+            'discount-consent-rejected', () => capturedEvent = true);
+
+        const contentSelectedPage =
+            discountConsentCard.shadowRoot!.querySelectorAll(
+                '#contentSteps .iron-selected');
+        assertEquals(contentSelectedPage.length, 1);
+        assertEquals(
+            'step2', contentSelectedPage[0]!.getAttribute('id'),
+            'Selected content step should have id as step2');
+
+        contentSelectedPage[0]!.querySelector<HTMLElement>(
+                                   '.cancel-button')!.click();
+        assertTrue(
+            capturedEvent, '\'discount-consent-rejected\' should be emitted');
+      });
+
+  function buildFaviconUrl(merchantUrl: string): string {
+    return 'chrome://favicon2/?size=24&scale_factor=1x&show_fallback_monogram=&page_url=' +
+        encodeURIComponent(merchantUrl);
+  }
+
+  test('Verify favicon is loaded', async () => {
+    const carts = [
+      {
+        merchant: 'Amazon',
+        cartUrl: {url: 'https://amazon.com'},
+        productImageUrls: [
+          {url: 'https://image1.com'}, {url: 'https://image2.com'},
+          {url: 'https://image3.com'}
+        ],
+        discountText: ''
+      },
+      {
+        merchant: 'eBay',
+        cartUrl: {url: 'https://ebay.com'},
+        productImageUrls:
+            [{url: 'https://image4.com'}, {url: 'https://image5.com'}],
+        discountText: ''
+      },
+      {
+        merchant: 'BestBuy',
+        cartUrl: {url: 'https://bestbuy.com'},
+        productImageUrls: [],
+        discountText: ''
+      }
+    ];
+
+    discountConsentCard.merchants = carts;
+    await flushTasks();
+
+    const favicons = discountConsentCard.shadowRoot!.querySelectorAll(
+        '#faviconContainer ul.favicon-list li.favicon');
+    assertEquals(3, favicons.length, 'There should be three favicons.');
+
+    assertEquals(
+        buildFaviconUrl(carts[0]!.cartUrl.url),
+        favicons[0]!.querySelector('.favicon-image')!.getAttribute('src'));
+    assertEquals(
+        buildFaviconUrl(carts[1]!.cartUrl.url),
+        favicons[1]!.querySelector('.favicon-image')!.getAttribute('src'));
+    assertEquals(
+        buildFaviconUrl(carts[2]!.cartUrl.url),
+        favicons[2]!.querySelector('.favicon-image')!.getAttribute('src'));
+  });
+
+  suite('Step two background has different color', () => {
+    suiteSetup(() => {
+      loadTimeData.overrideValues(
+          {modulesCartConsentStepTwoDifferentColor: true});
+    });
+
+    test('Verfiy step 2 has background color', () => {
+      discountConsentCard.currentStep = 1;
+      const consentCardContainer =
+          discountConsentCard.shadowRoot!.querySelector(
+              '#consentCardContainer');
+      const goolgeBlue100 = 'rgb(210, 227, 252)';
+      assertStyle(consentCardContainer!, 'background-color', goolgeBlue100);
+    });
+  });
+});
diff --git a/chrome/test/data/webui/new_tab_page/new_tab_page_browsertest.js b/chrome/test/data/webui/new_tab_page/new_tab_page_browsertest.js
index 22ef89d..107e27b 100644
--- a/chrome/test/data/webui/new_tab_page/new_tab_page_browsertest.js
+++ b/chrome/test/data/webui/new_tab_page/new_tab_page_browsertest.js
@@ -371,3 +371,14 @@
 TEST_F('NewTabPageDiscountConsentDialogTest', 'All', function() {
   mocha.run();
 });
+
+var NewTabPageDiscountConsentCartTest = class extends NewTabPageBrowserTest {
+  /** @override */
+  get browsePreload() {
+    return 'chrome://new-tab-page/test_loader.html?module=new_tab_page/modules/cart/discount_consent_card_test.js&host=webui-test';
+  }
+};
+
+TEST_F('NewTabPageDiscountConsentCartTest', 'All', function() {
+  mocha.run();
+});
diff --git a/chromeos/CHROMEOS_LKGM b/chromeos/CHROMEOS_LKGM
index 6b1f8ba9..e7eeef6 100644
--- a/chromeos/CHROMEOS_LKGM
+++ b/chromeos/CHROMEOS_LKGM
@@ -1 +1 @@
-14534.0.0
\ No newline at end of file
+14535.0.0
\ No newline at end of file
diff --git a/chromeos/strings/chromeos_strings_en-GB.xtb b/chromeos/strings/chromeos_strings_en-GB.xtb
index d4f903c..0ed86a1 100644
--- a/chromeos/strings/chromeos_strings_en-GB.xtb
+++ b/chromeos/strings/chromeos_strings_en-GB.xtb
@@ -76,6 +76,7 @@
 <translation id="175763766237925754">Good (<ph name="SIGNAL_STRENGTH" />)</translation>
 <translation id="1758018619400202187">EAP-TLS</translation>
 <translation id="1759842336958782510">Chrome</translation>
+<translation id="1768959921651994223">Authentication type</translation>
 <translation id="1782199038061388045">translation</translation>
 <translation id="1792647875738159689">Cancelling scanning</translation>
 <translation id="1807246157184219062">Light</translation>
diff --git a/chromeos/strings/chromeos_strings_ne.xtb b/chromeos/strings/chromeos_strings_ne.xtb
index e868177..4f0bb4b 100644
--- a/chromeos/strings/chromeos_strings_ne.xtb
+++ b/chromeos/strings/chromeos_strings_ne.xtb
@@ -30,6 +30,7 @@
 <translation id="1301069673413256657">GSM</translation>
 <translation id="1308754910631152188">अपडेट हुँदै छ (<ph name="PERCENTAGE_VALUE" />% पूरा भयो)</translation>
 <translation id="1310380015393971138">कुनै पनि <ph name="NETWORK_NAME" /> नेटवर्क उपलब्ध छैन</translation>
+<translation id="131421566576084655">पछिल्लो पटक डेटा प्रयोग रिसेट गरिएको मिति उपलब्ध छैन</translation>
 <translation id="1314565355471455267">Android VPN</translation>
 <translation id="131461803491198646">गृह सञ्जाल, रोम गरिरहेको छैन</translation>
 <translation id="1327977588028644528">गेटवे</translation>
@@ -42,6 +43,7 @@
 <translation id="1413240736185167732">प्रिन्ट गर्न सकिएन - फिल्टरमा समस्या आयो</translation>
 <translation id="1416836038590872660">EAP-MD5</translation>
 <translation id="142228117786570094">मसँग किपेयर छ</translation>
+<translation id="1435763214710588005">चयन गरिएको दिनमा डेटा प्रयोग स्वतः रिसेट गर्छ</translation>
 <translation id="1442433966118452622">फोटोको स्रोत</translation>
 <translation id="1451536289672181509">यो डिभाइस किबोर्ड हो।</translation>
 <translation id="1459693405370120464">मौसम</translation>
@@ -56,6 +58,7 @@
 <translation id="1565038567006703504"><ph name="DEVICE_NAME" /> अपडेट गर्न सकिएन</translation>
 <translation id="1567064801249837505">एल्बमहरू</translation>
 <translation id="1572585716423026576">वालपेपरका रूपमा सेट गर्नुहोस्</translation>
+<translation id="1615335640928990664"><ph name="FRIENDLY_DATE" /> देखि प्रयोग गरिएको डेटा</translation>
 <translation id="1621067168122174824">ब्याट्रीको चार्जसम्बन्धी परीक्षण गर्नुहोस्</translation>
 <translation id="1639239467298939599">लोड गर्दै</translation>
 <translation id="1641857168437328880">डकुमेन्ट फिडर (एकतर्फी)</translation>
@@ -392,6 +395,7 @@
 <translation id="5939518447894949180">रिसेट गर्नुहोस्</translation>
 <translation id="594552776027197022">क्रमरहित किपेयर सिर्जना गर्नुहोस्</translation>
 <translation id="5972388717451707488">अपडेट इन्जिन</translation>
+<translation id="6034694447310538551">मासिक रूपमा डेटा प्रयोग स्वतः रिसेट गर्ने विकल्प अन गर</translation>
 <translation id="6037291330010597344">स्क्यानरको डकुमेन्ट फिडर खाली छ। डकुमेन्टहरू हाल्नुहोस् र फेरि प्रयास गर्नुहोस्।</translation>
 <translation id="6040143037577758943">बन्द गर्नुहोस्</translation>
 <translation id="6040852767465482106">अज्ञात पहिचान</translation>
@@ -415,6 +419,7 @@
 <translation id="6213737986933151570">CDMA1XRTT</translation>
 <translation id="6223752125779001553">कुनै पनि स्क्यानर उपलब्ध छैन</translation>
 <translation id="6232017090690406397">ब्याटरी</translation>
+<translation id="6235460611964961764">डेटा प्रयोग म्यानुअल तरिकाले रिसेट गर</translation>
 <translation id="6243280677745499710">हाल सेट गरिएको</translation>
 <translation id="6278428485366576908">विषयवस्तु</translation>
 <translation id="6280912520669706465">ARC</translation>
@@ -628,6 +633,7 @@
 <translation id="8910721771319628100">डिफल्ट नेटवर्कको विलम्बता समयसीमाभन्दा बढी छ</translation>
 <translation id="8918637186205009138"><ph name="GIVEN_NAME" /> को <ph name="DEVICE_TYPE" /></translation>
 <translation id="8919837981463578619">प्रिन्ट गर्न सकिएन - ट्रे छैन</translation>
+<translation id="8923267550422472772">डेटा प्रयोग रिसेट गर्ने दिन</translation>
 <translation id="8928727111548978589">प्रिन्ट गर्न सकिएन - कागज सकियो</translation>
 <translation id="8930521118335213258">पियर</translation>
 <translation id="8930622219860340959">वायरलेस</translation>
diff --git a/chromeos/strings/chromeos_strings_uz.xtb b/chromeos/strings/chromeos_strings_uz.xtb
index 6e3f98dd..8217bb5 100644
--- a/chromeos/strings/chromeos_strings_uz.xtb
+++ b/chromeos/strings/chromeos_strings_uz.xtb
@@ -76,6 +76,7 @@
 <translation id="175763766237925754">Yaxshi (<ph name="SIGNAL_STRENGTH" />)</translation>
 <translation id="1758018619400202187">EAP-TLS</translation>
 <translation id="1759842336958782510">Chrome</translation>
+<translation id="1768959921651994223">Tekshiruv turi</translation>
 <translation id="1782199038061388045">tarjima</translation>
 <translation id="1792647875738159689">Skanerlash bekor qilinmoqda</translation>
 <translation id="1807246157184219062">Yorqin</translation>
diff --git a/components/autofill/content/renderer/form_autofill_util_browsertest.cc b/components/autofill/content/renderer/form_autofill_util_browsertest.cc
index 9ec880b3..69155f0 100644
--- a/components/autofill/content/renderer/form_autofill_util_browsertest.cc
+++ b/components/autofill/content/renderer/form_autofill_util_browsertest.cc
@@ -2,13 +2,12 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "base/strings/stringprintf.h"
 #include "components/autofill/content/renderer/form_autofill_util.h"
 
-#include "base/cxx17_backports.h"
 #include "base/metrics/field_trial.h"
 #include "base/strings/strcat.h"
 #include "base/strings/string_number_conversions.h"
+#include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/scoped_feature_list.h"
 #include "components/autofill/content/renderer/test_utils.h"
@@ -457,7 +456,7 @@
       {u"name3", true},
       {u"name4", false},
   };
-  const size_t number_of_cases = base::size(kExpectedFields);
+  const size_t number_of_cases = std::size(kExpectedFields);
   ASSERT_EQ(number_of_cases, target.fields.size());
   for (size_t i = 0; i < number_of_cases; ++i) {
     EXPECT_EQ(kExpectedFields[i].name, target.fields[i].name);
@@ -499,7 +498,7 @@
       {u"name3", false},
       {u"name4", true},
   };
-  const size_t number_of_cases = base::size(kExpectedFields);
+  const size_t number_of_cases = std::size(kExpectedFields);
   ASSERT_EQ(number_of_cases, target.fields.size());
   for (size_t i = 0; i < number_of_cases; ++i) {
     EXPECT_EQ(kExpectedFields[i].name, target.fields[i].name);
diff --git a/components/autofill/content/renderer/html_based_username_detector_browsertest.cc b/components/autofill/content/renderer/html_based_username_detector_browsertest.cc
index e31dc6f..64ec0a1 100644
--- a/components/autofill/content/renderer/html_based_username_detector_browsertest.cc
+++ b/components/autofill/content/renderer/html_based_username_detector_browsertest.cc
@@ -181,7 +181,7 @@
       // Occurrence doesn't count.
       {{"identity_name", "idn", "johnsmith"}, {"id", "xid", "123"}, "xid"}};
 
-  for (size_t i = 0; i < base::size(test_cases); ++i) {
+  for (size_t i = 0; i < std::size(test_cases); ++i) {
     SCOPED_TRACE(testing::Message() << "Iteration " << i);
 
     const std::string& form_html =
@@ -253,7 +253,7 @@
           "noword",
       }};
 
-  for (size_t i = 0; i < base::size(test_cases); ++i) {
+  for (size_t i = 0; i < std::size(test_cases); ++i) {
     SCOPED_TRACE(testing::Message() << "Iteration " << i);
 
     const std::string& form_html =
diff --git a/components/autofill/content/renderer/html_based_username_detector_vocabulary.cc b/components/autofill/content/renderer/html_based_username_detector_vocabulary.cc
index b843cfe6..c02344e 100644
--- a/components/autofill/content/renderer/html_based_username_detector_vocabulary.cc
+++ b/components/autofill/content/renderer/html_based_username_detector_vocabulary.cc
@@ -4,7 +4,7 @@
 
 #include "components/autofill/content/renderer/html_based_username_detector_vocabulary.h"
 
-#include "base/cxx17_backports.h"
+#include <iterator>
 
 namespace autofill {
 
@@ -23,7 +23,7 @@
     "second", "passwort", "middlename", "paroladordine",
     "codice", "pasvorto", "familyname", "inomboloyokuvula",
     "modpas", "salasana", "motdepasse", "numeraeleiloaesesi"};
-const size_t kNegativeLatinSize = base::size(kNegativeLatin);
+const size_t kNegativeLatinSize = std::size(kNegativeLatin);
 
 const char* const kNegativeNonLatin[] = {"fjalëkalim",
                                          "የይለፍቃል",
@@ -74,7 +74,7 @@
                                          "mậtkhẩu",
                                          "פּאַראָל",
                                          "ọrọigbaniwọle"};
-const size_t kNegativeNonLatinSize = base::size(kNegativeNonLatin);
+const size_t kNegativeNonLatinSize = std::size(kNegativeNonLatin);
 
 const char* const kUsernameLatin[] = {
     "gatti",      "uzantonomo",   "solonanarana",    "nombredeusuario",
@@ -86,7 +86,7 @@
     "mosebedisi", "kasutajanimi", "ainmcleachdaidh", "igamalomsebenzisi",
     "nomdusuari", "lomsebenzisi", "jenengpanganggo", "ingoakaiwhakamahi",
     "nomeutente", "namapengguna"};
-const size_t kUsernameLatinSize = base::size(kUsernameLatin);
+const size_t kUsernameLatinSize = std::size(kUsernameLatin);
 
 const char* const kUsernameNonLatin[] = {"用户名",
                                          "کاتيجونالو",
@@ -146,7 +146,7 @@
                                          "ব্যবহারকারীরনাম",
                                          "užívateľskémeno",
                                          "ឈ្មោះអ្នកប្រើប្រាស់"};
-const size_t kUsernameNonLatinSize = base::size(kUsernameNonLatin);
+const size_t kUsernameNonLatinSize = std::size(kUsernameNonLatin);
 
 const char* const kUserLatin[] = {
     "user",   "wosuta",   "gebruiker",  "utilizator",
@@ -159,7 +159,7 @@
     "usuari", "kasutaja", "defnyddiwr", "kaiwhakamahi",
     "utente", "korisnik", "mosebedisi", "foydalanuvchi",
     "uzanto", "pengguna", "mushandisi"};
-const size_t kUserLatinSize = base::size(kUserLatin);
+const size_t kUserLatinSize = std::size(kUserLatin);
 
 const char* const kUserNonLatin[] = {"用户",
                                      "użytkownik",
@@ -218,7 +218,7 @@
                                      "пайдаланушы",
                                      "အသုံးပြုသူကို",
                                      "käyttäjä"};
-const size_t kUserNonLatinSize = base::size(kUserNonLatin);
+const size_t kUserNonLatinSize = std::size(kUserNonLatin);
 
 const char* const kTechnicalWords[] = {
     "uid",         "newtel",     "uaccount",   "regaccount",  "ureg",
@@ -226,9 +226,9 @@
     "loginname",   "membername", "uname",      "ucreate",     "loginmail",
     "accountname", "umail",      "loginreg",   "accountid",   "loginaccount",
     "ulogin",      "regemail",   "newmobile",  "accountlogin"};
-const size_t kTechnicalWordsSize = base::size(kTechnicalWords);
+const size_t kTechnicalWordsSize = std::size(kTechnicalWords);
 
 const char* const kWeakWords[] = {"id", "login", "mail"};
-const size_t kWeakWordsSize = base::size(kWeakWords);
+const size_t kWeakWordsSize = std::size(kWeakWords);
 
 }  // namespace autofill
diff --git a/components/autofill/core/browser/autofill_address_util.cc b/components/autofill/core/browser/autofill_address_util.cc
index e1649f4..18f48c4 100644
--- a/components/autofill/core/browser/autofill_address_util.cc
+++ b/components/autofill/core/browser/autofill_address_util.cc
@@ -193,7 +193,7 @@
   }
 
   return profile.ConstructInferredLabel(
-      kDetailsFields, base::size(kDetailsFields),
+      kDetailsFields, std::size(kDetailsFields),
       /*num_fields_to_include=*/2, ui_language_code);
 }
 
diff --git a/components/autofill/core/browser/autofill_data_util.cc b/components/autofill/core/browser/autofill_data_util.cc
index cfb055fe..c76a024b 100644
--- a/components/autofill/core/browser/autofill_data_util.cc
+++ b/components/autofill/core/browser/autofill_data_util.cc
@@ -8,7 +8,6 @@
 #include <iterator>
 #include <vector>
 
-#include "base/cxx17_backports.h"
 #include "base/i18n/char_iterator.h"
 #include "base/strings/string_piece.h"
 #include "base/strings/string_split.h"
@@ -121,7 +120,7 @@
 void StripPrefixes(std::vector<base::StringPiece16>* name_tokens) {
   auto iter = name_tokens->begin();
   while (iter != name_tokens->end()) {
-    if (!ContainsString(name_prefixes, base::size(name_prefixes), *iter))
+    if (!ContainsString(name_prefixes, std::size(name_prefixes), *iter))
       break;
     ++iter;
   }
@@ -134,7 +133,7 @@
 // Removes common name suffixes from |name_tokens|.
 void StripSuffixes(std::vector<base::StringPiece16>* name_tokens) {
   while (!name_tokens->empty()) {
-    if (!ContainsString(name_suffixes, base::size(name_suffixes),
+    if (!ContainsString(name_suffixes, std::size(name_suffixes),
                         name_tokens->back())) {
       break;
     }
@@ -223,13 +222,13 @@
       // ones)
       surname_length = std::max<size_t>(
           1, StartsWithAny(name, korean_multi_char_surnames,
-                           base::size(korean_multi_char_surnames)));
+                           std::size(korean_multi_char_surnames)));
     } else {
       // Default to 1 character if the surname is not in
       // |common_cjk_multi_char_surnames|.
       surname_length = std::max<size_t>(
           1, StartsWithAny(name, common_cjk_multi_char_surnames,
-                           base::size(common_cjk_multi_char_surnames)));
+                           std::size(common_cjk_multi_char_surnames)));
     }
     parts->family = std::u16string(name.substr(0, surname_length));
     parts->given = std::u16string(name.substr(surname_length));
@@ -427,7 +426,7 @@
   reverse_family_tokens.push_back(name_tokens.back());
   name_tokens.pop_back();
   while (name_tokens.size() >= 1 &&
-         ContainsString(family_name_prefixes, base::size(family_name_prefixes),
+         ContainsString(family_name_prefixes, std::size(family_name_prefixes),
                         name_tokens.back())) {
     reverse_family_tokens.push_back(name_tokens.back());
     name_tokens.pop_back();
diff --git a/components/autofill/core/browser/autofill_ie_toolbar_import_win_unittest.cc b/components/autofill/core/browser/autofill_ie_toolbar_import_win_unittest.cc
index c7935e8..22051ec 100644
--- a/components/autofill/core/browser/autofill_ie_toolbar_import_win_unittest.cc
+++ b/components/autofill/core/browser/autofill_ie_toolbar_import_win_unittest.cc
@@ -5,10 +5,10 @@
 #include "components/autofill/core/browser/autofill_ie_toolbar_import_win.h"
 
 #include <stddef.h>
+#include <windows.h>
 
 #include <string>
 
-#include "base/cxx17_backports.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/win/registry.h"
 #include "components/autofill/core/browser/data_model/autofill_profile.h"
@@ -18,8 +18,6 @@
 #include "components/os_crypt/os_crypt_mocker.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
-#include <windows.h>
-
 using base::win::RegKey;
 
 namespace autofill {
@@ -159,13 +157,13 @@
   profile_key.Create(HKEY_CURRENT_USER, kProfileKey, KEY_ALL_ACCESS);
   EXPECT_TRUE(profile_key.Valid());
 
-  CreateSubkey(&profile_key, L"0", profile1, base::size(profile1));
-  CreateSubkey(&profile_key, L"1", profile2, base::size(profile2));
+  CreateSubkey(&profile_key, L"0", profile1, std::size(profile1));
+  CreateSubkey(&profile_key, L"1", profile2, std::size(profile2));
 
   RegKey cc_key;
   cc_key.Create(HKEY_CURRENT_USER, kCreditCardKey, KEY_ALL_ACCESS);
   EXPECT_TRUE(cc_key.Valid());
-  CreateSubkey(&cc_key, L"0", credit_card, base::size(credit_card));
+  CreateSubkey(&cc_key, L"0", credit_card, std::size(credit_card));
   EncryptAndWrite(&cc_key, &empty_password);
   EncryptAndWrite(&cc_key, &empty_salt);
 
diff --git a/components/autofill/core/browser/browser_autofill_manager_unittest.cc b/components/autofill/core/browser/browser_autofill_manager_unittest.cc
index c506a55..530a2f9 100644
--- a/components/autofill/core/browser/browser_autofill_manager_unittest.cc
+++ b/components/autofill/core/browser/browser_autofill_manager_unittest.cc
@@ -15,7 +15,6 @@
 
 #include "base/base64.h"
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "base/feature_list.h"
 #include "base/hash/hash.h"
 #include "base/memory/raw_ptr.h"
@@ -7542,8 +7541,8 @@
   FormSubmitted(form);
 
   EXPECT_EQ(form.fields.size(), form_seen_by_ahm.fields.size());
-  ASSERT_EQ(base::size(test_fields), form_seen_by_ahm.fields.size());
-  for (size_t i = 0; i < base::size(test_fields); ++i) {
+  ASSERT_EQ(std::size(test_fields), form_seen_by_ahm.fields.size());
+  for (size_t i = 0; i < std::size(test_fields); ++i) {
     EXPECT_EQ(
         form_seen_by_ahm.fields[i].should_autocomplete,
         test_fields[i].expected_field_type != CREDIT_CARD_VERIFICATION_CODE);
diff --git a/components/autofill/core/browser/data_model/autofill_profile.cc b/components/autofill/core/browser/data_model/autofill_profile.cc
index 439ef76f..dabbf46 100644
--- a/components/autofill/core/browser/data_model/autofill_profile.cc
+++ b/components/autofill/core/browser/data_model/autofill_profile.cc
@@ -11,7 +11,6 @@
 #include <ostream>
 #include <set>
 
-#include "base/cxx17_backports.h"
 #include "base/guid.h"
 #include "base/hash/sha1.h"
 #include "base/i18n/case_conversion.h"
@@ -166,9 +165,9 @@
 
   std::vector<ServerFieldType> default_fields;
   if (!suggested_fields) {
-    default_fields.assign(kDefaultDistinguishingFields,
-                          kDefaultDistinguishingFields +
-                              base::size(kDefaultDistinguishingFields));
+    default_fields.assign(
+        kDefaultDistinguishingFields,
+        kDefaultDistinguishingFields + std::size(kDefaultDistinguishingFields));
     if (excluded_field == UNKNOWN_TYPE) {
       distinguishing_fields->swap(default_fields);
       return;
diff --git a/components/autofill/core/browser/data_model/autofill_profile_unittest.cc b/components/autofill/core/browser/data_model/autofill_profile_unittest.cc
index bb98e352..50c2e6b 100644
--- a/components/autofill/core/browser/data_model/autofill_profile_unittest.cc
+++ b/components/autofill/core/browser/data_model/autofill_profile_unittest.cc
@@ -10,7 +10,6 @@
 #include <string>
 #include <vector>
 
-#include "base/cxx17_backports.h"
 #include "base/format_macros.h"
 #include "base/guid.h"
 #include "base/strings/utf_string_conversions.h"
@@ -307,7 +306,7 @@
   };
 
   std::vector<std::u16string> labels;
-  for (size_t i = 0; i < base::size(kExpectedLabels); ++i) {
+  for (size_t i = 0; i < std::size(kExpectedLabels); ++i) {
     AutofillProfile::CreateInferredLabels(ToRawPointerVector(profiles), nullptr,
                                           UNKNOWN_TYPE, i, "en-US", &labels);
     ASSERT_FALSE(labels.empty());
@@ -341,7 +340,7 @@
   };
 
   std::vector<std::u16string> labels;
-  for (size_t i = 0; i < base::size(kExpectedLabels); ++i) {
+  for (size_t i = 0; i < std::size(kExpectedLabels); ++i) {
     AutofillProfile::CreateInferredLabels(ToRawPointerVector(profiles), nullptr,
                                           UNKNOWN_TYPE, i, "en-US", &labels);
     ASSERT_FALSE(labels.empty());
@@ -385,7 +384,7 @@
   };
 
   std::vector<std::u16string> labels;
-  for (size_t i = 0; i < base::size(kExpectedLabels); ++i) {
+  for (size_t i = 0; i < std::size(kExpectedLabels); ++i) {
     AutofillProfile::CreateInferredLabels(ToRawPointerVector(profiles), nullptr,
                                           UNKNOWN_TYPE, i, "en-US", &labels);
     ASSERT_FALSE(labels.empty());
@@ -422,7 +421,7 @@
   };
 
   std::vector<std::u16string> labels;
-  for (size_t i = 0; i < base::size(kExpectedLabels); ++i) {
+  for (size_t i = 0; i < std::size(kExpectedLabels); ++i) {
     AutofillProfile::CreateInferredLabels(ToRawPointerVector(profiles), nullptr,
                                           UNKNOWN_TYPE, i, "en-US", &labels);
     ASSERT_FALSE(labels.empty());
@@ -455,7 +454,7 @@
   };
 
   std::vector<std::u16string> labels;
-  for (size_t i = 0; i < base::size(kExpectedLabels); ++i) {
+  for (size_t i = 0; i < std::size(kExpectedLabels); ++i) {
     AutofillProfile::CreateInferredLabels(ToRawPointerVector(profiles), nullptr,
                                           UNKNOWN_TYPE, i, "en-US", &labels);
     ASSERT_FALSE(labels.empty());
diff --git a/components/autofill/core/browser/form_parsing/phone_field.cc b/components/autofill/core/browser/form_parsing/phone_field.cc
index c9cb5b3..96550d4 100644
--- a/components/autofill/core/browser/form_parsing/phone_field.cc
+++ b/components/autofill/core/browser/form_parsing/phone_field.cc
@@ -11,7 +11,6 @@
 #include <utility>
 
 #include "base/check.h"
-#include "base/cxx17_backports.h"
 #include "base/notreached.h"
 #include "base/strings/strcat.h"
 #include "base/strings/string_util.h"
@@ -220,12 +219,12 @@
   // The form owns the following variables, so they should not be deleted.
   AutofillField* parsed_fields[FIELD_MAX];
 
-  for (size_t i = 0; i < base::size(kPhoneFieldGrammars); ++i) {
+  for (size_t i = 0; i < std::size(kPhoneFieldGrammars); ++i) {
     memset(parsed_fields, 0, sizeof(parsed_fields));
     size_t saved_cursor = scanner->SaveCursor();
 
     // Attempt to parse according to the next grammar.
-    for (; i < base::size(kPhoneFieldGrammars) &&
+    for (; i < std::size(kPhoneFieldGrammars) &&
            kPhoneFieldGrammars[i].regex != REGEX_SEPARATOR;
          ++i) {
       const bool is_country_code_field =
@@ -254,7 +253,7 @@
       }
     }
 
-    if (i >= base::size(kPhoneFieldGrammars)) {
+    if (i >= std::size(kPhoneFieldGrammars)) {
       scanner->RewindTo(saved_cursor);
       return nullptr;  // Parsing failed.
     }
@@ -264,11 +263,11 @@
     // Proceed to the next grammar.
     do {
       ++i;
-    } while (i < base::size(kPhoneFieldGrammars) &&
+    } while (i < std::size(kPhoneFieldGrammars) &&
              kPhoneFieldGrammars[i].regex != REGEX_SEPARATOR);
 
     scanner->RewindTo(saved_cursor);
-    if (i + 1 == base::size(kPhoneFieldGrammars)) {
+    if (i + 1 == std::size(kPhoneFieldGrammars)) {
       return nullptr;  // Tried through all the possibilities - did not match.
     }
   }
diff --git a/components/autofill/core/browser/form_structure_unittest.cc b/components/autofill/core/browser/form_structure_unittest.cc
index 63eb25b0..581f013c 100644
--- a/components/autofill/core/browser/form_structure_unittest.cc
+++ b/components/autofill/core/browser/form_structure_unittest.cc
@@ -4720,7 +4720,7 @@
             encoder.Encode(form_signature, FieldSignature(),
                            RandomizedEncoder::FORM_URL, full_url));
   ASSERT_EQ(static_cast<size_t>(upload.field_size()),
-            base::size(kFieldMetadata));
+            std::size(kFieldMetadata));
 
   ASSERT_EQ(1, upload.randomized_form_metadata().button_title().size());
   EXPECT_EQ(upload.randomized_form_metadata()
diff --git a/components/autofill/core/browser/geo/country_data.cc b/components/autofill/core/browser/geo/country_data.cc
index 7f52b42..e6213b0 100644
--- a/components/autofill/core/browser/geo/country_data.cc
+++ b/components/autofill/core/browser/geo/country_data.cc
@@ -6,7 +6,6 @@
 
 #include <utility>
 
-#include "base/cxx17_backports.h"
 #include "base/memory/singleton.h"
 #include "components/strings/grit/components_strings.h"
 #include "third_party/icu/source/common/unicode/locid.h"
@@ -293,7 +292,7 @@
 // based on |kCountryAddressImportRequirementsData|.
 std::vector<std::string> GetCountryCodes() {
   std::vector<std::string> country_codes;
-  country_codes.reserve(base::size(kCountryAddressImportRequirementsData));
+  country_codes.reserve(std::size(kCountryAddressImportRequirementsData));
   for (const auto& static_data : kCountryAddressImportRequirementsData) {
     country_codes.push_back(static_data.country_code);
   }
diff --git a/components/autofill/core/browser/webdata/autofill_table_unittest.cc b/components/autofill/core/browser/webdata/autofill_table_unittest.cc
index 3d07812..a2f5af2 100644
--- a/components/autofill/core/browser/webdata/autofill_table_unittest.cc
+++ b/components/autofill/core/browser/webdata/autofill_table_unittest.cc
@@ -11,7 +11,6 @@
 #include <utility>
 
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_util.h"
 #include "base/files/scoped_temp_dir.h"
 #include "base/guid.h"
@@ -248,8 +247,8 @@
       AutofillChange(AutofillChange::REMOVE,
                      AutofillKey(u"Favorite Color", u"Green")),
   };
-  EXPECT_EQ(base::size(kExpectedChanges), changes.size());
-  for (size_t i = 0; i < base::size(kExpectedChanges); ++i) {
+  EXPECT_EQ(std::size(kExpectedChanges), changes.size());
+  for (size_t i = 0; i < std::size(kExpectedChanges); ++i) {
     EXPECT_EQ(kExpectedChanges[i], changes[i]);
   }
 
@@ -492,7 +491,7 @@
   const char16_t kName[] = u"foo";
   const char16_t kValue[] = u"bar";
   // A value which contains terminating character.
-  std::u16string value(kValue, base::size(kValue));
+  std::u16string value(kValue, std::size(kValue));
 
   AutofillEntry entry0(MakeAutofillEntry(kName, kValue, 1, -1));
   AutofillEntry entry1(MakeAutofillEntry(kName, value, 2, 3));
diff --git a/components/autofill/ios/form_util/fill_js_unittest.mm b/components/autofill/ios/form_util/fill_js_unittest.mm
index b5b1b914..73e94e25 100644
--- a/components/autofill/ios/form_util/fill_js_unittest.mm
+++ b/components/autofill/ios/form_util/fill_js_unittest.mm
@@ -5,7 +5,6 @@
 #import <Foundation/Foundation.h>
 #include <stddef.h>
 
-#include "base/cxx17_backports.h"
 #include "base/strings/sys_string_conversions.h"
 #import "components/autofill/ios/form_util/form_util_java_script_feature.h"
 #import "ios/web/public/test/web_test_with_web_state.h"
@@ -51,7 +50,7 @@
       {@"javascript:login()", @"javascript:login()"},
   };
 
-  for (size_t i = 0; i < base::size(test_data); i++) {
+  for (size_t i = 0; i < std::size(test_data); i++) {
     TestData& data = test_data[i];
     NSString* html_action =
         data.html_action == nil
diff --git a/components/autofill_assistant/browser/string_conversions_util.cc b/components/autofill_assistant/browser/string_conversions_util.cc
index a3b5d34..8df527e 100644
--- a/components/autofill_assistant/browser/string_conversions_util.cc
+++ b/components/autofill_assistant/browser/string_conversions_util.cc
@@ -4,7 +4,6 @@
 
 #include "components/autofill_assistant/browser/string_conversions_util.h"
 
-#include "base/cxx17_backports.h"
 #include "base/i18n/char_iterator.h"
 #include "base/logging.h"
 #include "base/strings/utf_string_conversions.h"
@@ -39,7 +38,7 @@
   char bytes[4];
   UBool error = false;
   size_t offset = 0;
-  U8_APPEND(bytes, offset, base::size(bytes), source, error);
+  U8_APPEND(bytes, offset, std::size(bytes), source, error);
   if (error == false) {
     target->append(bytes, offset);
   }
diff --git a/components/base32/base32_unittest.cc b/components/base32/base32_unittest.cc
index 89357823..53d0660 100644
--- a/components/base32/base32_unittest.cc
+++ b/components/base32/base32_unittest.cc
@@ -2,10 +2,10 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "components/base32/base32.h"
+
 #include <string>
 
-#include "base/cxx17_backports.h"
-#include "components/base32/base32.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace base32 {
@@ -19,7 +19,7 @@
       "", "MY", "MZXQ", "MZXW6", "MZXW6YQ", "MZXW6YTB", "MZXW6YTBOI"};
 
   // Run the tests, with one more letter in the input every pass.
-  for (size_t i = 0; i < base::size(expected); ++i) {
+  for (size_t i = 0; i < std::size(expected); ++i) {
     base::StringPiece test_substr(test_str, i);
     std::string encoded_output =
         Base32Encode(test_substr, Base32EncodePolicy::OMIT_PADDING);
@@ -38,7 +38,7 @@
       "MZXW6YQ=", "MZXW6YTB", "MZXW6YTBOI======"};
 
   // Run the tests, with one more letter in the input every pass.
-  for (size_t i = 0; i < base::size(expected); ++i) {
+  for (size_t i = 0; i < std::size(expected); ++i) {
     base::StringPiece test_substr(test_str, i);
     std::string encoded_output = Base32Encode(test_substr);
     EXPECT_EQ(expected[i], encoded_output);
diff --git a/components/blocklist/opt_out_blocklist/opt_out_blocklist_unittest.cc b/components/blocklist/opt_out_blocklist/opt_out_blocklist_unittest.cc
index 2d35241..ced44657 100644
--- a/components/blocklist/opt_out_blocklist/opt_out_blocklist_unittest.cc
+++ b/components/blocklist/opt_out_blocklist/opt_out_blocklist_unittest.cc
@@ -14,7 +14,6 @@
 
 #include "base/bind.h"
 #include "base/callback_helpers.h"
-#include "base/cxx17_backports.h"
 #include "base/memory/ptr_util.h"
 #include "base/memory/raw_ptr.h"
 #include "base/run_loop.h"
@@ -1113,7 +1112,7 @@
       BlocklistReason::kBlocklistNotLoaded,
       BlocklistReason::kUserOptedOutInSession,
   };
-  EXPECT_EQ(base::size(expected_reasons), passed_reasons_.size());
+  EXPECT_EQ(std::size(expected_reasons), passed_reasons_.size());
   for (size_t i = 0; i < passed_reasons_.size(); i++) {
     EXPECT_EQ(expected_reasons[i], passed_reasons_[i]);
   }
@@ -1150,7 +1149,7 @@
       BlocklistReason::kUserOptedOutInSession,
       BlocklistReason::kUserOptedOutInGeneral,
   };
-  EXPECT_EQ(base::size(expected_reasons), passed_reasons_.size());
+  EXPECT_EQ(std::size(expected_reasons), passed_reasons_.size());
   for (size_t i = 0; i < passed_reasons_.size(); i++) {
     EXPECT_EQ(expected_reasons[i], passed_reasons_[i]);
   }
@@ -1189,7 +1188,7 @@
       BlocklistReason::kUserOptedOutOfHost,
       BlocklistReason::kUserOptedOutOfType,
   };
-  EXPECT_EQ(base::size(expected_reasons), passed_reasons_.size());
+  EXPECT_EQ(std::size(expected_reasons), passed_reasons_.size());
   for (size_t i = 0; i < passed_reasons_.size(); i++) {
     EXPECT_EQ(expected_reasons[i], passed_reasons_[i]);
   }
diff --git a/components/bookmarks/browser/bookmark_model_unittest.cc b/components/bookmarks/browser/bookmark_model_unittest.cc
index ac8477d..6d3c95c 100644
--- a/components/bookmarks/browser/bookmark_model_unittest.cc
+++ b/components/bookmarks/browser/bookmark_model_unittest.cc
@@ -573,7 +573,7 @@
 }
 
 TEST_F(BookmarkModelTest, AddURLWithWhitespaceTitle) {
-  for (size_t i = 0; i < base::size(url_whitespace_test_cases); ++i) {
+  for (size_t i = 0; i < std::size(url_whitespace_test_cases); ++i) {
     const BookmarkNode* root = model_->bookmark_bar_node();
     const std::u16string title(
         ASCIIToUTF16(url_whitespace_test_cases[i].input_title));
@@ -700,7 +700,7 @@
 }
 
 TEST_F(BookmarkModelTest, AddFolderWithWhitespaceTitle) {
-  for (size_t i = 0; i < base::size(title_whitespace_test_cases); ++i) {
+  for (size_t i = 0; i < std::size(title_whitespace_test_cases); ++i) {
     const BookmarkNode* root = model_->bookmark_bar_node();
     const std::u16string title(
         ASCIIToUTF16(title_whitespace_test_cases[i].input_title));
@@ -822,7 +822,7 @@
 }
 
 TEST_F(BookmarkModelTest, SetTitleWithWhitespace) {
-  for (size_t i = 0; i < base::size(title_whitespace_test_cases); ++i) {
+  for (size_t i = 0; i < std::size(title_whitespace_test_cases); ++i) {
     const BookmarkNode* root = model_->bookmark_bar_node();
     std::u16string title(u"dummy");
     const GURL url("http://foo.com");
@@ -1612,7 +1612,7 @@
     { "a b c [ d e [ f ] ]", "g h i [ j k [ l ] ]"},
   };
   std::unique_ptr<BookmarkModel> model;
-  for (size_t i = 0; i < base::size(data); ++i) {
+  for (size_t i = 0; i < std::size(data); ++i) {
     model = TestBookmarkClient::CreateModel();
 
     TestNode bbn;
diff --git a/components/bookmarks/browser/bookmark_utils_unittest.cc b/components/bookmarks/browser/bookmark_utils_unittest.cc
index c1f9d39..b23036be7 100644
--- a/components/bookmarks/browser/bookmark_utils_unittest.cc
+++ b/components/bookmarks/browser/bookmark_utils_unittest.cc
@@ -10,7 +10,6 @@
 #include <utility>
 #include <vector>
 
-#include "base/cxx17_backports.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/task_environment.h"
 #include "build/build_config.h"
@@ -225,7 +224,7 @@
                                                &query.url, &query.title};
 
   // Test two fields matching.
-  for (size_t i = 0; i < base::size(fields); i++) {
+  for (size_t i = 0; i < std::size(fields); i++) {
     std::unique_ptr<std::u16string> original_value(fields[i]->release());
     GetBookmarksMatchingProperties(model.get(), query, 100, &nodes);
     ASSERT_EQ(1U, nodes.size());
@@ -235,7 +234,7 @@
   }
 
   // Test two fields matching with one non-matching field.
-  for (size_t i = 0; i < base::size(fields); i++) {
+  for (size_t i = 0; i < std::size(fields); i++) {
     std::unique_ptr<std::u16string> original_value(fields[i]->release());
     *fields[i] = std::make_unique<std::u16string>(u"fjdkslafjkldsa");
     GetBookmarksMatchingProperties(model.get(), query, 100, &nodes);
diff --git a/components/captive_portal/core/captive_portal_types.cc b/components/captive_portal/core/captive_portal_types.cc
index a1b9f10..87b9689 100644
--- a/components/captive_portal/core/captive_portal_types.cc
+++ b/components/captive_portal/core/captive_portal_types.cc
@@ -5,7 +5,6 @@
 #include "components/captive_portal/core/captive_portal_types.h"
 
 #include "base/check_op.h"
-#include "base/cxx17_backports.h"
 
 namespace captive_portal {
 
@@ -17,7 +16,7 @@
     "BehindCaptivePortal",
     "NumCaptivePortalResults",
 };
-static_assert(base::size(kCaptivePortalResultNames) == RESULT_COUNT + 1,
+static_assert(std::size(kCaptivePortalResultNames) == RESULT_COUNT + 1,
               "kCaptivePortalResultNames should have "
               "RESULT_COUNT + 1 elements");
 
@@ -26,7 +25,7 @@
 std::string CaptivePortalResultToString(CaptivePortalResult result) {
   DCHECK_GE(result, 0);
   DCHECK_LT(static_cast<unsigned int>(result),
-            base::size(kCaptivePortalResultNames));
+            std::size(kCaptivePortalResultNames));
   return kCaptivePortalResultNames[result];
 }
 
diff --git a/components/cbor/reader_unittest.cc b/components/cbor/reader_unittest.cc
index 926f8030..d3a9995 100644
--- a/components/cbor/reader_unittest.cc
+++ b/components/cbor/reader_unittest.cc
@@ -2,13 +2,12 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "components/cbor/reader.h"
+
 #include <limits>
 #include <utility>
 
-#include "components/cbor/reader.h"
-
 #include "base/containers/span.h"
-#include "base/cxx17_backports.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -743,7 +742,7 @@
   ASSERT_EQ(cbor->type(), Value::Type::MAP);
   ASSERT_EQ(cbor->GetMap().size(), 6u);
   EXPECT_EQ(error_code, Reader::DecoderError::CBOR_NO_ERROR);
-  EXPECT_EQ(num_bytes_consumed, base::size(kMapTestCase));
+  EXPECT_EQ(num_bytes_consumed, std::size(kMapTestCase));
 }
 
 TEST(CBORReaderTest, TestReadNestedMap) {
diff --git a/components/cbor/writer_unittest.cc b/components/cbor/writer_unittest.cc
index ca6db6f3..1bfc2a0 100644
--- a/components/cbor/writer_unittest.cc
+++ b/components/cbor/writer_unittest.cc
@@ -7,7 +7,6 @@
 #include <limits>
 #include <string>
 
-#include "base/cxx17_backports.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -135,7 +134,7 @@
   ASSERT_TRUE(cbor.has_value());
   EXPECT_THAT(cbor.value(),
               testing::ElementsAreArray(kArrayTestCaseCbor,
-                                        base::size(kArrayTestCaseCbor)));
+                                        std::size(kArrayTestCaseCbor)));
 }
 
 TEST(CBORWriterTest, TestWriteMap) {
@@ -258,9 +257,8 @@
   map[Value(std::numeric_limits<int64_t>::max())] = Value("j");
   auto cbor = Writer::Write(Value(map));
   ASSERT_TRUE(cbor.has_value());
-  EXPECT_THAT(cbor.value(),
-              testing::ElementsAreArray(kMapTestCaseCbor,
-                                        base::size(kMapTestCaseCbor)));
+  EXPECT_THAT(cbor.value(), testing::ElementsAreArray(
+                                kMapTestCaseCbor, std::size(kMapTestCaseCbor)));
 }
 
 TEST(CBORWriterTest, TestWriteMapWithArray) {
@@ -286,7 +284,7 @@
   ASSERT_TRUE(cbor.has_value());
   EXPECT_THAT(cbor.value(),
               testing::ElementsAreArray(kMapArrayTestCaseCbor,
-                                        base::size(kMapArrayTestCaseCbor)));
+                                        std::size(kMapArrayTestCaseCbor)));
 }
 
 TEST(CBORWriterTest, TestWriteNestedMap) {
@@ -315,7 +313,7 @@
   ASSERT_TRUE(cbor.has_value());
   EXPECT_THAT(cbor.value(),
               testing::ElementsAreArray(kNestedMapTestCase,
-                                        base::size(kNestedMapTestCase)));
+                                        std::size(kNestedMapTestCase)));
 }
 
 TEST(CBORWriterTest, TestSignedExchangeExample) {
@@ -362,7 +360,7 @@
   ASSERT_TRUE(cbor.has_value());
   EXPECT_THAT(cbor.value(),
               testing::ElementsAreArray(kSignedExchangeExample,
-                                        base::size(kSignedExchangeExample)));
+                                        std::size(kSignedExchangeExample)));
 }
 
 TEST(CBORWriterTest, TestWriteSimpleValue) {
diff --git a/components/cdm/common/widevine_drm_delegate_android.cc b/components/cdm/common/widevine_drm_delegate_android.cc
index 71c7df6..4f0963fc 100644
--- a/components/cdm/common/widevine_drm_delegate_android.cc
+++ b/components/cdm/common/widevine_drm_delegate_android.cc
@@ -4,7 +4,6 @@
 
 #include "components/cdm/common/widevine_drm_delegate_android.h"
 
-#include "base/cxx17_backports.h"
 #include "media/cdm/cenc_utils.h"
 
 namespace cdm {
@@ -23,7 +22,7 @@
 
 const std::vector<uint8_t> WidevineDrmDelegateAndroid::GetUUID() const {
   return std::vector<uint8_t>(kWidevineUuid,
-                              kWidevineUuid + base::size(kWidevineUuid));
+                              kWidevineUuid + std::size(kWidevineUuid));
 }
 
 bool WidevineDrmDelegateAndroid::OnCreateSession(
diff --git a/components/certificate_transparency/chrome_ct_policy_enforcer_unittest.cc b/components/certificate_transparency/chrome_ct_policy_enforcer_unittest.cc
index e9525db8..c2837c76 100644
--- a/components/certificate_transparency/chrome_ct_policy_enforcer_unittest.cc
+++ b/components/certificate_transparency/chrome_ct_policy_enforcer_unittest.cc
@@ -9,7 +9,6 @@
 #include <utility>
 
 #include "base/build_time.h"
-#include "base/cxx17_backports.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/test/scoped_feature_list.h"
 #include "base/test/simple_test_clock.h"
@@ -42,7 +41,7 @@
 const char kGoogleAviatorLogID[] =
     "\x68\xf6\x98\xf8\x1f\x64\x82\xbe\x3a\x8c\xee\xb9\x28\x1d\x4c\xfc\x71\x51"
     "\x5d\x67\x93\xd4\x44\xd1\x0a\x67\xac\xbb\x4f\x4f\xfb\xc4";
-static_assert(base::size(kGoogleAviatorLogID) - 1 == crypto::kSHA256Length,
+static_assert(std::size(kGoogleAviatorLogID) - 1 == crypto::kSHA256Length,
               "Incorrect log ID length.");
 
 }  // namespace
@@ -98,7 +97,7 @@
     static const char kCertlyLogID[] =
         "\xcd\xb5\x17\x9b\x7f\xc1\xc0\x46\xfe\xea\x31\x13\x6a\x3f\x8f\x00\x2e"
         "\x61\x82\xfa\xf8\x89\x6f\xec\xc8\xb2\xf5\xb5\xab\x60\x49\x00";
-    static_assert(base::size(kCertlyLogID) - 1 == crypto::kSHA256Length,
+    static_assert(std::size(kCertlyLogID) - 1 == crypto::kSHA256Length,
                   "Incorrect log ID length.");
 
     scoped_refptr<SignedCertificateTimestamp> sct(
@@ -261,7 +260,7 @@
                    {// Cert valid for over 39 months, needs 5 SCTs.
                     time_2015_3_0_25_11_25_0_0, time_2018_6_0_27_11_25_0_0, 5}};
 
-  for (size_t i = 0; i < base::size(kTestData); ++i) {
+  for (size_t i = 0; i < std::size(kTestData); ++i) {
     SCOPED_TRACE(i);
     const base::Time& start = kTestData[i].validity_start;
     const base::Time& end = kTestData[i].validity_end;
@@ -869,7 +868,7 @@
                    {// Cert valid for over 180 days, needs 3 SCTs.
                     time_2015_3_0_25_11_25_0_0, time_2016_3_0_25_11_25_0_0, 3}};
 
-  for (size_t i = 0; i < base::size(kTestData); ++i) {
+  for (size_t i = 0; i < std::size(kTestData); ++i) {
     SCOPED_TRACE(i);
     const base::Time& validity_start = kTestData[i].validity_start;
     const base::Time& validity_end = kTestData[i].validity_end;
diff --git a/components/client_update_protocol/ecdsa.cc b/components/client_update_protocol/ecdsa.cc
index b2b80b3..af46d2f 100644
--- a/components/client_update_protocol/ecdsa.cc
+++ b/components/client_update_protocol/ecdsa.cc
@@ -7,7 +7,6 @@
 #include <stdint.h>
 
 #include "base/base64url.h"
-#include "base/cxx17_backports.h"
 #include "base/logging.h"
 #include "base/memory/ptr_util.h"
 #include "base/strings/string_number_conversions.h"
@@ -52,7 +51,7 @@
   // Remove the weak prefix, then remove the begin and the end quotes.
   const char kWeakETagPrefix[] = "W/";
   if (base::StartsWith(etag_header_value, kWeakETagPrefix))
-    etag_header_value.remove_prefix(base::size(kWeakETagPrefix) - 1);
+    etag_header_value.remove_prefix(std::size(kWeakETagPrefix) - 1);
   if (etag_header_value.size() >= 2 &&
       base::StartsWith(etag_header_value, "\"") &&
       base::EndsWith(etag_header_value, "\"")) {
diff --git a/components/cloud_devices/common/printer_description.cc b/components/cloud_devices/common/printer_description.cc
index 9ec1d88ce..acd9d14 100644
--- a/components/cloud_devices/common/printer_description.cc
+++ b/components/cloud_devices/common/printer_description.cc
@@ -13,7 +13,6 @@
 #include <vector>
 
 #include "base/check.h"
-#include "base/cxx17_backports.h"
 #include "base/json/json_reader.h"
 #include "base/json/json_writer.h"
 #include "base/notreached.h"
@@ -236,7 +235,7 @@
 constexpr int32_t kMmToUm = 1000;
 constexpr int32_t kSizeThresholdUm = 1000;
 
-constexpr size_t kEnumClassPrefixLen = base::size("MediaType::") - 1;
+constexpr size_t kEnumClassPrefixLen = std::size("MediaType::") - 1;
 
 // Json name of media type is constructed by removing "MediaType::" enum class
 // prefix from it.
@@ -439,7 +438,7 @@
 #undef MAP_CLOUD_PRINT_MEDIA_TYPE
 
 const MediaDefinition& FindMediaByType(MediaType type) {
-  for (size_t i = 0; i < base::size(kMediaDefinitions); ++i) {
+  for (size_t i = 0; i < std::size(kMediaDefinitions); ++i) {
     if (kMediaDefinitions[i].id == type)
       return kMediaDefinitions[i];
   }
@@ -449,7 +448,7 @@
 
 const MediaDefinition* FindMediaBySize(int32_t width_um, int32_t height_um) {
   const MediaDefinition* result = nullptr;
-  for (size_t i = 0; i < base::size(kMediaDefinitions); ++i) {
+  for (size_t i = 0; i < std::size(kMediaDefinitions); ++i) {
     int32_t diff =
         std::max(std::abs(width_um - kMediaDefinitions[i].width_um),
                  std::abs(height_um - kMediaDefinitions[i].height_um));
@@ -461,7 +460,7 @@
 
 template <class T, class IdType>
 std::string TypeToString(const T& names, IdType id) {
-  for (size_t i = 0; i < base::size(names); ++i) {
+  for (size_t i = 0; i < std::size(names); ++i) {
     if (id == names[i].id)
       return names[i].json_name;
   }
@@ -471,7 +470,7 @@
 
 template <class T, class IdType>
 bool TypeFromString(const T& names, const std::string& type, IdType* id) {
-  for (size_t i = 0; i < base::size(names); ++i) {
+  for (size_t i = 0; i < std::size(names); ++i) {
     if (type == names[i].json_name) {
       *id = names[i].id;
       return true;
diff --git a/components/commerce/core/commerce_feature_list.h b/components/commerce/core/commerce_feature_list.h
index acd6de9..40042c268 100644
--- a/components/commerce/core/commerce_feature_list.h
+++ b/components/commerce/core/commerce_feature_list.h
@@ -5,7 +5,6 @@
 #ifndef COMPONENTS_COMMERCE_CORE_COMMERCE_FEATURE_LIST_H_
 #define COMPONENTS_COMMERCE_CORE_COMMERCE_FEATURE_LIST_H_
 
-#include "base/cxx17_backports.h"
 #include "base/feature_list.h"
 #include "base/metrics/field_trial_params.h"
 #include "components/flags_ui/feature_entry.h"
@@ -34,13 +33,13 @@
 constexpr flags_ui::FeatureEntry::FeatureVariation
     kCommercePriceTrackingAndroidVariations[] = {
         {"Price alerts", kCommercePriceTracking_PriceAlerts,
-         base::size(kCommercePriceTracking_PriceAlerts), nullptr},
+         std::size(kCommercePriceTracking_PriceAlerts), nullptr},
         {"Price alerts with OptimizationGuide",
          kCommercePriceTracking_PriceAlerts_WithOptimizationGuide,
-         base::size(kCommercePriceTracking_PriceAlerts_WithOptimizationGuide),
+         std::size(kCommercePriceTracking_PriceAlerts_WithOptimizationGuide),
          nullptr},
         {"Price notifications", kCommercePriceTracking_PriceNotifications,
-         base::size(kCommercePriceTracking_PriceNotifications), nullptr},
+         std::size(kCommercePriceTracking_PriceNotifications), nullptr},
 };
 
 // Price tracking variations for iOS.
@@ -58,10 +57,10 @@
     kCommercePriceTrackingVariations[] = {
         {"Price Tracking with Optimization Guide",
          kCommercePriceTrackingWithOptimizationGuide,
-         base::size(kCommercePriceTrackingWithOptimizationGuide), nullptr},
+         std::size(kCommercePriceTrackingWithOptimizationGuide), nullptr},
         {"Price Tracking with Optimization Guide and Opt Out",
          kCommercePriceTrackingWithOptimizationGuideAndOptOut,
-         base::size(kCommercePriceTrackingWithOptimizationGuideAndOptOut),
+         std::size(kCommercePriceTrackingWithOptimizationGuideAndOptOut),
          nullptr}};
 
 extern const base::Feature kCommerceMerchantViewer;
diff --git a/components/component_updater/installer_policies/client_side_phishing_component_installer_policy.cc b/components/component_updater/installer_policies/client_side_phishing_component_installer_policy.cc
index 5171d06..09f45c6 100644
--- a/components/component_updater/installer_policies/client_side_phishing_component_installer_policy.cc
+++ b/components/component_updater/installer_policies/client_side_phishing_component_installer_policy.cc
@@ -64,7 +64,7 @@
     std::vector<uint8_t>* hash) {
   hash->assign(kClientSidePhishingPublicKeySHA256,
                kClientSidePhishingPublicKeySHA256 +
-                   base::size(kClientSidePhishingPublicKeySHA256));
+                   std::size(kClientSidePhishingPublicKeySHA256));
 }
 
 bool ClientSidePhishingComponentInstallerPolicy::
diff --git a/components/component_updater/installer_policies/safety_tips_component_installer.cc b/components/component_updater/installer_policies/safety_tips_component_installer.cc
index d6d3baa1..65b26850 100644
--- a/components/component_updater/installer_policies/safety_tips_component_installer.cc
+++ b/components/component_updater/installer_policies/safety_tips_component_installer.cc
@@ -8,7 +8,6 @@
 #include <utility>
 
 #include "base/bind.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_util.h"
 #include "base/logging.h"
 #include "base/memory/ref_counted.h"
@@ -119,7 +118,7 @@
     std::vector<uint8_t>* hash) const {
   hash->assign(
       kSafetyTipsPublicKeySHA256,
-      kSafetyTipsPublicKeySHA256 + base::size(kSafetyTipsPublicKeySHA256));
+      kSafetyTipsPublicKeySHA256 + std::size(kSafetyTipsPublicKeySHA256));
 }
 
 std::string SafetyTipsComponentInstallerPolicy::GetName() const {
diff --git a/components/component_updater/installer_policies/trust_token_key_commitments_component_installer_policy.cc b/components/component_updater/installer_policies/trust_token_key_commitments_component_installer_policy.cc
index 96531c4..b10900ae 100644
--- a/components/component_updater/installer_policies/trust_token_key_commitments_component_installer_policy.cc
+++ b/components/component_updater/installer_policies/trust_token_key_commitments_component_installer_policy.cc
@@ -11,7 +11,6 @@
 
 #include "base/bind.h"
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "base/feature_list.h"
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
@@ -152,7 +151,7 @@
   DCHECK(hash);
   hash->assign(kTrustTokenKeyCommitmentsPublicKeySHA256,
                kTrustTokenKeyCommitmentsPublicKeySHA256 +
-                   base::size(kTrustTokenKeyCommitmentsPublicKeySHA256));
+                   std::size(kTrustTokenKeyCommitmentsPublicKeySHA256));
 }
 
 // static
diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc
index f6ae469..3673363 100644
--- a/components/content_settings/core/browser/content_settings_registry.cc
+++ b/components/content_settings/core/browser/content_settings_registry.cc
@@ -36,20 +36,20 @@
 
 std::vector<std::string> AllowlistedSchemes(const char* scheme1) {
   const char* schemes[] = {scheme1};
-  return std::vector<std::string>(schemes, schemes + base::size(schemes));
+  return std::vector<std::string>(schemes, schemes + std::size(schemes));
 }
 
 std::vector<std::string> AllowlistedSchemes(const char* scheme1,
                                             const char* scheme2) {
   const char* schemes[] = {scheme1, scheme2};
-  return std::vector<std::string>(schemes, schemes + base::size(schemes));
+  return std::vector<std::string>(schemes, schemes + std::size(schemes));
 }
 
 std::vector<std::string> AllowlistedSchemes(const char* scheme1,
                                             const char* scheme2,
                                             const char* scheme3) {
   const char* schemes[] = {scheme1, scheme2, scheme3};
-  return std::vector<std::string>(schemes, schemes + base::size(schemes));
+  return std::vector<std::string>(schemes, schemes + std::size(schemes));
 }
 
 std::set<ContentSetting> ValidSettings() {
@@ -59,14 +59,14 @@
 std::set<ContentSetting> ValidSettings(ContentSetting setting1,
                                        ContentSetting setting2) {
   ContentSetting settings[] = {setting1, setting2};
-  return std::set<ContentSetting>(settings, settings + base::size(settings));
+  return std::set<ContentSetting>(settings, settings + std::size(settings));
 }
 
 std::set<ContentSetting> ValidSettings(ContentSetting setting1,
                                        ContentSetting setting2,
                                        ContentSetting setting3) {
   ContentSetting settings[] = {setting1, setting2, setting3};
-  return std::set<ContentSetting>(settings, settings + base::size(settings));
+  return std::set<ContentSetting>(settings, settings + std::size(settings));
 }
 
 std::set<ContentSetting> ValidSettings(ContentSetting setting1,
@@ -74,7 +74,7 @@
                                        ContentSetting setting3,
                                        ContentSetting setting4) {
   ContentSetting settings[] = {setting1, setting2, setting3, setting4};
-  return std::set<ContentSetting>(settings, settings + base::size(settings));
+  return std::set<ContentSetting>(settings, settings + std::size(settings));
 }
 
 }  // namespace
diff --git a/components/content_settings/core/browser/content_settings_utils.cc b/components/content_settings/core/browser/content_settings_utils.cc
index 6a37f72..011f3b4f 100644
--- a/components/content_settings/core/browser/content_settings_utils.cc
+++ b/components/content_settings/core/browser/content_settings_utils.cc
@@ -8,7 +8,6 @@
 
 #include <vector>
 
-#include "base/cxx17_backports.h"
 #include "base/notreached.h"
 #include "base/strings/string_split.h"
 #include "base/values.h"
@@ -32,7 +31,7 @@
     {CONTENT_SETTING_SESSION_ONLY, "session_only"},
     {CONTENT_SETTING_DETECT_IMPORTANT_CONTENT, "detect_important_content"},
 };
-static_assert(base::size(kContentSettingsStringMapping) ==
+static_assert(std::size(kContentSettingsStringMapping) ==
                   CONTENT_SETTING_NUM_SETTINGS,
               "kContentSettingsToFromString should have "
               "CONTENT_SETTING_NUM_SETTINGS elements");
@@ -51,7 +50,7 @@
     CONTENT_SETTING_BLOCK
 };
 
-static_assert(base::size(kContentSettingOrder) ==
+static_assert(std::size(kContentSettingOrder) ==
                   CONTENT_SETTING_NUM_SETTINGS - 1,
               "kContentSettingOrder should have CONTENT_SETTING_NUM_SETTINGS-1"
               "entries");
diff --git a/components/content_settings/core/browser/content_settings_utils_unittest.cc b/components/content_settings/core/browser/content_settings_utils_unittest.cc
index d2d22f7..b9e7d50 100644
--- a/components/content_settings/core/browser/content_settings_utils_unittest.cc
+++ b/components/content_settings/core/browser/content_settings_utils_unittest.cc
@@ -8,7 +8,6 @@
 
 #include <string>
 
-#include "base/cxx17_backports.h"
 #include "components/content_settings/core/test/content_settings_test_utils.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -24,7 +23,7 @@
   "session_only",
   "detect_important_content",
 };
-static_assert(base::size(kContentSettingNames) == CONTENT_SETTING_NUM_SETTINGS,
+static_assert(std::size(kContentSettingNames) == CONTENT_SETTING_NUM_SETTINGS,
               "kContentSettingNames has an unexpected number of elements");
 
 }  // namespace
@@ -68,7 +67,7 @@
       ContentSettingToString(CONTENT_SETTING_NUM_SETTINGS);
   EXPECT_TRUE(setting_string.empty());
 
-  for (size_t i = 0; i < base::size(kContentSettingNames); ++i) {
+  for (size_t i = 0; i < std::size(kContentSettingNames); ++i) {
     ContentSetting setting = static_cast<ContentSetting>(i);
     setting_string = ContentSettingToString(setting);
     EXPECT_EQ(kContentSettingNames[i], setting_string);
diff --git a/components/content_settings/core/browser/host_content_settings_map.cc b/components/content_settings/core/browser/host_content_settings_map.cc
index 05d3db09..b3b5daf 100644
--- a/components/content_settings/core/browser/host_content_settings_map.cc
+++ b/components/content_settings/core/browser/host_content_settings_map.cc
@@ -13,7 +13,6 @@
 #include "base/check.h"
 #include "base/command_line.h"
 #include "base/containers/flat_map.h"
-#include "base/cxx17_backports.h"
 #include "base/metrics/histogram_functions.h"
 #include "base/metrics/histogram_macros.h"
 #include "base/observer_list.h"
@@ -83,7 +82,7 @@
 };
 
 static_assert(
-    base::size(kProviderNamesSourceMap) ==
+    std::size(kProviderNamesSourceMap) ==
         HostContentSettingsMap::NUM_PROVIDER_TYPES,
     "kProviderNamesSourceMap should have NUM_PROVIDER_TYPES elements");
 
@@ -862,7 +861,7 @@
 // static
 HostContentSettingsMap::ProviderType
 HostContentSettingsMap::GetProviderTypeFromSource(const std::string& source) {
-  for (size_t i = 0; i < base::size(kProviderNamesSourceMap); ++i) {
+  for (size_t i = 0; i < std::size(kProviderNamesSourceMap); ++i) {
     if (source == kProviderNamesSourceMap[i].provider_name)
       return static_cast<ProviderType>(i);
   }
diff --git a/components/content_settings/core/common/content_settings.cc b/components/content_settings/core/common/content_settings.cc
index 2c15251..2412212b 100644
--- a/components/content_settings/core/common/content_settings.cc
+++ b/components/content_settings/core/common/content_settings.cc
@@ -9,7 +9,6 @@
 #include <utility>
 
 #include "base/check_op.h"
-#include "base/cxx17_backports.h"
 #include "base/notreached.h"
 #include "build/build_config.h"
 #include "components/content_settings/core/common/content_settings_utils.h"
@@ -116,7 +115,7 @@
 
 int ContentSettingTypeToHistogramValue(ContentSettingsType content_setting,
                                        size_t* num_values) {
-  *num_values = base::size(kHistogramValue);
+  *num_values = std::size(kHistogramValue);
 
   // Verify the array is sorted by enum type and contains all values.
   DCHECK(std::is_sorted(std::begin(kHistogramValue), std::end(kHistogramValue),
@@ -124,7 +123,7 @@
                           return a.type < b.type;
                         }));
   static_assert(
-      kHistogramValue[base::size(kHistogramValue) - 1].type ==
+      kHistogramValue[std::size(kHistogramValue) - 1].type ==
           ContentSettingsType(
               static_cast<int32_t>(ContentSettingsType::NUM_TYPES) - 1),
       "Update content settings histogram lookup");
diff --git a/components/content_settings/core/common/content_settings_pattern.cc b/components/content_settings/core/common/content_settings_pattern.cc
index 5f2730f..5750c45 100644
--- a/components/content_settings/core/common/content_settings_pattern.cc
+++ b/components/content_settings/core/common/content_settings_pattern.cc
@@ -11,7 +11,6 @@
 #include <utility>
 
 #include "base/check_op.h"
-#include "base/cxx17_backports.h"
 #include "base/notreached.h"
 #include "base/strings/strcat.h"
 #include "base/strings/string_piece.h"
@@ -38,7 +37,7 @@
                                     "chrome-search",    "chrome",
                                     "chrome-untrusted", "devtools"};
 
-static_assert(base::size(kSchemeNames) == ContentSettingsPattern::SCHEME_MAX,
+static_assert(std::size(kSchemeNames) == ContentSettingsPattern::SCHEME_MAX,
               "kSchemeNames should have SCHEME_MAX elements");
 
 // Note: it is safe to return a base::StringPiece here as long as they are
@@ -555,7 +554,7 @@
   if (parts_.is_scheme_wildcard)
     return SCHEME_WILDCARD;
 
-  for (size_t i = 2; i < base::size(kSchemeNames); ++i) {
+  for (size_t i = 2; i < std::size(kSchemeNames); ++i) {
     if (parts_.scheme == kSchemeNames[i])
       return static_cast<SchemeType>(i);
   }
diff --git a/components/crash/android/crash_keys_android.cc b/components/crash/android/crash_keys_android.cc
index 53acc37..ad3c01d 100644
--- a/components/crash/android/crash_keys_android.cc
+++ b/components/crash/android/crash_keys_android.cc
@@ -6,7 +6,6 @@
 
 #include "base/android/jni_android.h"
 #include "base/android/jni_string.h"
-#include "base/cxx17_backports.h"
 #include "components/crash/android/jni_headers/CrashKeys_jni.h"
 #include "components/crash/core/common/crash_key.h"
 
@@ -26,7 +25,7 @@
       {"partner_customization_config", JavaCrashKey::Tag::kArray},
   };
   static_assert(
-      base::size(crash_keys) == static_cast<size_t>(CrashKeyIndex::NUM_ENTRIES),
+      std::size(crash_keys) == static_cast<size_t>(CrashKeyIndex::NUM_ENTRIES),
       "crash_keys out of sync with index enum");
 
   return crash_keys[index];
diff --git a/components/crash/content/app/breakpad_win.cc b/components/crash/content/app/breakpad_win.cc
index 207b3de0..d0baff8 100644
--- a/components/crash/content/app/breakpad_win.cc
+++ b/components/crash/content/app/breakpad_win.cc
@@ -4,13 +4,14 @@
 
 #include "components/crash/content/app/breakpad_win.h"
 
+#include <tchar.h>
+#include <windows.h>
+
 #include <crtdbg.h>
 #include <intrin.h>
 #include <shellapi.h>
 #include <stddef.h>
-#include <tchar.h>
 #include <userenv.h>
-#include <windows.h>
 #include <winnt.h>
 
 #include <algorithm>
@@ -21,7 +22,6 @@
 
 #include "base/base_switches.h"
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "base/debug/crash_logging.h"
 #include "base/debug/dump_without_crashing.h"
 #include "base/environment.h"
@@ -197,7 +197,7 @@
       { PT_ROAMING, L"roaming" },
       { PT_TEMPORARY, L"temporary" },
     };
-    for (size_t i = 0; i < base::size(kBitNames); ++i) {
+    for (size_t i = 0; i < std::size(kBitNames); ++i) {
       const DWORD this_bit = kBitNames[i].bit;
       if ((profile_bits & this_bit) != 0) {
         profile_type.append(kBitNames[i].name);
diff --git a/components/crash/content/browser/crash_handler_host_linux.cc b/components/crash/content/browser/crash_handler_host_linux.cc
index d460d186..9026ab5 100644
--- a/components/crash/content/browser/crash_handler_host_linux.cc
+++ b/components/crash/content/browser/crash_handler_host_linux.cc
@@ -17,7 +17,6 @@
 
 #include "base/bind.h"
 #include "base/callback_helpers.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
 #include "base/files/scoped_file.h"
@@ -580,7 +579,7 @@
   msg.msg_name = nullptr;
   msg.msg_namelen = 0;
   msg.msg_iov = iov;
-  msg.msg_iovlen = base::size(iov);
+  msg.msg_iovlen = std::size(iov);
 
   char cmsg_buf[CMSG_SPACE(sizeof(int)) + CMSG_SPACE(sizeof(ucred))];
   msg.msg_control = cmsg_buf;
diff --git a/components/crash/core/app/crashpad_android.cc b/components/crash/core/app/crashpad_android.cc
index d977ff57..89df3534 100644
--- a/components/crash/core/app/crashpad_android.cc
+++ b/components/crash/core/app/crashpad_android.cc
@@ -18,7 +18,6 @@
 #include "base/android/jni_array.h"
 #include "base/android/jni_string.h"
 #include "base/android/path_utils.h"
-#include "base/cxx17_backports.h"
 #include "base/environment.h"
 #include "base/files/file_util.h"
 #include "base/files/scoped_file.h"
@@ -211,7 +210,7 @@
     msg.msg_name = nullptr;
     msg.msg_namelen = 0;
     msg.msg_iov = iov;
-    msg.msg_iovlen = base::size(iov);
+    msg.msg_iovlen = std::size(iov);
 
     char cmsg_buf[CMSG_SPACE(sizeof(int))];
     msg.msg_control = cmsg_buf;
diff --git a/components/crash/core/app/crashpad_win.cc b/components/crash/core/app/crashpad_win.cc
index 1a8f42cb..d2354b8 100644
--- a/components/crash/core/app/crashpad_win.cc
+++ b/components/crash/core/app/crashpad_win.cc
@@ -7,7 +7,6 @@
 #include <memory>
 #include <string>
 
-#include "base/cxx17_backports.h"
 #include "base/debug/crash_logging.h"
 #include "base/environment.h"
 #include "base/files/file_util.h"
@@ -32,7 +31,7 @@
     std::map<std::string, std::string>* annotations) {
   CrashReporterClient* crash_reporter_client = GetCrashReporterClient();
   wchar_t exe_file[MAX_PATH] = {};
-  CHECK(::GetModuleFileName(nullptr, exe_file, base::size(exe_file)));
+  CHECK(::GetModuleFileName(nullptr, exe_file, std::size(exe_file)));
   std::wstring product_name, version, special_build, channel_name;
   crash_reporter_client->GetProductNameAndVersion(
       exe_file, &product_name, &version, &special_build, &channel_name);
@@ -100,7 +99,7 @@
     if (exe_file.empty()) {
       wchar_t exe_file_path[MAX_PATH] = {};
       CHECK(::GetModuleFileName(nullptr, exe_file_path,
-                                base::size(exe_file_path)));
+                                std::size(exe_file_path)));
 
       exe_file = base::FilePath(exe_file_path);
     }
diff --git a/components/crash/core/browser/crashes_ui_util.cc b/components/crash/core/browser/crashes_ui_util.cc
index cb3c2d6..454bfe3 100644
--- a/components/crash/core/browser/crashes_ui_util.cc
+++ b/components/crash/core/browser/crashes_ui_util.cc
@@ -8,7 +8,6 @@
 #include <utility>
 #include <vector>
 
-#include "base/cxx17_backports.h"
 #include "base/i18n/time_formatting.h"
 #include "base/notreached.h"
 #include "base/strings/utf_string_conversions.h"
@@ -43,7 +42,7 @@
 };
 
 const size_t kCrashesUILocalizedStringsCount =
-    base::size(kCrashesUILocalizedStrings);
+    std::size(kCrashesUILocalizedStrings);
 
 const char kCrashesUICrashesJS[] = "crashes.js";
 const char kCrashesUICrashesCSS[] = "crashes.css";
diff --git a/components/crash/core/common/crash_key_unittest.cc b/components/crash/core/common/crash_key_unittest.cc
index 92052c1..3629475 100644
--- a/components/crash/core/common/crash_key_unittest.cc
+++ b/components/crash/core/common/crash_key_unittest.cc
@@ -4,7 +4,6 @@
 
 #include "components/crash/core/common/crash_key.h"
 
-#include "base/cxx17_backports.h"
 #include "base/debug/crash_logging.h"
 #include "base/debug/stack_trace.h"
 #include "build/build_config.h"
@@ -38,7 +37,7 @@
       0x0badbeef, 0x77778888, 0xabc, 0x000ddeeff, 0x12345678,
   };
   base::debug::StackTrace trace(reinterpret_cast<const void* const*>(addresses),
-                                base::size(addresses));
+                                std::size(addresses));
 
   std::string too_small = internal::FormatStackTrace(trace, 3);
   EXPECT_EQ(0u, too_small.size());
@@ -59,7 +58,7 @@
       0xbaaaabaaaaba, 0x1000000000000000,
   };
   base::debug::StackTrace trace(reinterpret_cast<const void* const*>(addresses),
-                                base::size(addresses));
+                                std::size(addresses));
 
   std::string too_small = internal::FormatStackTrace(trace, 8);
   EXPECT_EQ(0u, too_small.size());
diff --git a/components/crash/core/common/crash_keys.cc b/components/crash/core/common/crash_keys.cc
index 50112e22..7ae9d39 100644
--- a/components/crash/core/common/crash_keys.cc
+++ b/components/crash/core/common/crash_keys.cc
@@ -8,7 +8,6 @@
 #include <vector>
 
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "base/format_macros.h"
 #include "base/no_destructor.h"
 #include "base/strings/string_number_conversions.h"
@@ -119,7 +118,7 @@
 ScopedPrinterInfo::ScopedPrinterInfo(base::StringPiece data) {
   std::vector<base::StringPiece> info = base::SplitStringPiece(
       data, ";", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
-  for (size_t i = 0; i < base::size(printer_info_keys); ++i) {
+  for (size_t i = 0; i < std::size(printer_info_keys); ++i) {
     if (i < info.size())
       printer_info_keys[i].Set(info[i]);
     else
diff --git a/components/cronet/stale_host_resolver_unittest.cc b/components/cronet/stale_host_resolver_unittest.cc
index c7beace8..fe0657b 100644
--- a/components/cronet/stale_host_resolver_unittest.cc
+++ b/components/cronet/stale_host_resolver_unittest.cc
@@ -10,7 +10,6 @@
 
 #include "base/bind.h"
 #include "base/check.h"
-#include "base/cxx17_backports.h"
 #include "base/memory/raw_ptr.h"
 #include "base/memory/ref_counted.h"
 #include "base/run_loop.h"
@@ -611,7 +610,7 @@
 
   SetStaleDelay(kNoStaleDelaySec);
 
-  for (size_t i = 0; i < base::size(kUsabilityTestCases); ++i) {
+  for (size_t i = 0; i < std::size(kUsabilityTestCases); ++i) {
     const auto& test_case = kUsabilityTestCases[i];
 
     SetStaleUsability(test_case.max_expired_time_sec, test_case.max_stale_uses,
diff --git a/components/crx_file/crx_creator.cc b/components/crx_file/crx_creator.cc
index 2f7b3f47..e46697d 100644
--- a/components/crx_file/crx_creator.cc
+++ b/components/crx_file/crx_creator.cc
@@ -4,7 +4,6 @@
 
 #include "components/crx_file/crx_creator.h"
 
-#include "base/cxx17_backports.h"
 #include "base/files/file.h"
 #include "base/files/file_path.h"
 #include "components/crx_file/crx3.pb.h"
@@ -32,7 +31,7 @@
   int read = 0;
   static_assert(sizeof(char) == sizeof(uint8_t), "Unsupported char size.");
   while ((read = file->ReadAtCurrentPos(reinterpret_cast<char*>(buffer),
-                                        base::size(buffer))) > 0) {
+                                        std::size(buffer))) > 0) {
     if (!signer->Update(buffer, read))
       return CreatorResult::ERROR_SIGNING_FAILURE;
   }
@@ -50,7 +49,7 @@
   char buffer[1 << 12] = {};
   int read = 0;
   in->Seek(base::File::Whence::FROM_BEGIN, 0);
-  while ((read = in->ReadAtCurrentPos(buffer, base::size(buffer))) > 0) {
+  while ((read = in->ReadAtCurrentPos(buffer, std::size(buffer))) > 0) {
     if (out->WriteAtCurrentPos(buffer, read) != read)
       return false;
   }
@@ -82,9 +81,9 @@
   // through, run ZIP through.
   auto signer = crypto::SignatureCreator::Create(
       signing_key, crypto::SignatureCreator::HashAlgorithm::SHA256);
-  signer->Update(kSignatureContext, base::size(kSignatureContext));
+  signer->Update(kSignatureContext, std::size(kSignatureContext));
   signer->Update(signed_header_size_octets,
-                 base::size(signed_header_size_octets));
+                 std::size(signed_header_size_octets));
   signer->Update(
       reinterpret_cast<const uint8_t*>(signed_header_data_str.data()),
       signed_header_data_str.size());
@@ -121,9 +120,9 @@
   static_assert(sizeof(char) == sizeof(uint8_t), "Unsupported char size.");
   if (!WriteBuffer(&crx, kCrxFileHeaderMagic, kCrxFileHeaderMagicSize) ||
       !WriteBuffer(&crx, reinterpret_cast<const char*>(format_version_octets),
-                   base::size(format_version_octets)) ||
+                   std::size(format_version_octets)) ||
       !WriteBuffer(&crx, reinterpret_cast<const char*>(header_size_octets),
-                   base::size(header_size_octets)) ||
+                   std::size(header_size_octets)) ||
       !WriteBuffer(&crx, header_str.c_str(), header_str.length()) ||
       !WriteArchive(&crx, file)) {
     return CreatorResult::ERROR_FILE_WRITE_FAILURE;
diff --git a/components/crx_file/crx_verifier.cc b/components/crx_file/crx_verifier.cc
index e6e81b0..c7b80d7 100644
--- a/components/crx_file/crx_verifier.cc
+++ b/components/crx_file/crx_verifier.cc
@@ -14,7 +14,6 @@
 #include "base/base64.h"
 #include "base/bind.h"
 #include "base/callback.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file.h"
 #include "base/files/file_path.h"
 #include "base/numerics/safe_conversions.h"
@@ -75,8 +74,7 @@
                               const VerifierCollection& verifiers) {
   uint8_t buffer[1 << 12] = {};
   size_t len = 0;
-  while ((len = ReadAndHashBuffer(buffer, base::size(buffer), file, hash)) >
-         0) {
+  while ((len = ReadAndHashBuffer(buffer, std::size(buffer), file, hash)) > 0) {
     for (auto& verifier : verifiers)
       verifier->VerifyUpdate(base::make_span(buffer, len));
   }
diff --git a/components/crx_file/id_util_unittest.cc b/components/crx_file/id_util_unittest.cc
index 03c7a2de..a1086ce 100644
--- a/components/crx_file/id_util_unittest.cc
+++ b/components/crx_file/id_util_unittest.cc
@@ -6,7 +6,6 @@
 
 #include <stdint.h>
 
-#include "base/cxx17_backports.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace crx_file {
@@ -30,7 +29,7 @@
       0x0f, 0x02, 0x03, 0x01, 0x00, 0x01};
   std::string extension_id =
       GenerateId(std::string(reinterpret_cast<const char*>(&public_key_info[0]),
-                             base::size(public_key_info)));
+                             std::size(public_key_info)));
   EXPECT_EQ("melddjfinppjdikinhbgehiennejpfhp", extension_id);
 
   EXPECT_EQ("daibjpdaanagajckigeiigphanababab",
diff --git a/components/dbus/menu/menu.cc b/components/dbus/menu/menu.cc
index 2d3718b..aaff5c9 100644
--- a/components/dbus/menu/menu.cc
+++ b/components/dbus/menu/menu.cc
@@ -151,10 +151,10 @@
       {kMethodGetProperty, &DbusMenu::OnGetProperty},
   };
 
-  // base::size(methods) calls for method export, 1 call for properties
+  // std::size(methods) calls for method export, 1 call for properties
   // initialization.
   barrier_ =
-      SuccessBarrierCallback(base::size(methods) + 1, std::move(callback));
+      SuccessBarrierCallback(std::size(methods) + 1, std::move(callback));
   for (const auto& method : methods) {
     menu_->ExportMethod(
         kInterfaceDbusMenu, method.name,
diff --git a/components/dbus/properties/dbus_properties.cc b/components/dbus/properties/dbus_properties.cc
index 06a3361a..c533dc1 100644
--- a/components/dbus/properties/dbus_properties.cc
+++ b/components/dbus/properties/dbus_properties.cc
@@ -8,7 +8,6 @@
 
 #include "base/bind.h"
 #include "base/containers/contains.h"
-#include "base/cxx17_backports.h"
 #include "components/dbus/properties/success_barrier_callback.h"
 #include "dbus/exported_object.h"
 #include "dbus/message.h"
@@ -38,7 +37,7 @@
       {kMethodPropertiesSet, &DbusProperties::OnSetProperty},
   };
 
-  barrier_ = SuccessBarrierCallback(base::size(methods), std::move(callback));
+  barrier_ = SuccessBarrierCallback(std::size(methods), std::move(callback));
   for (const auto& method : methods) {
     exported_object_->ExportMethod(
         DBUS_INTERFACE_PROPERTIES, method.name,
diff --git a/components/discardable_memory/common/discardable_shared_memory_heap.cc b/components/discardable_memory/common/discardable_shared_memory_heap.cc
index 9ab396a..9aacc660 100644
--- a/components/discardable_memory/common/discardable_shared_memory_heap.cc
+++ b/components/discardable_memory/common/discardable_shared_memory_heap.cc
@@ -10,7 +10,6 @@
 #include <utility>
 
 #include "base/bits.h"
-#include "base/cxx17_backports.h"
 #include "base/feature_list.h"
 #include "base/format_macros.h"
 #include "base/memory/aligned_memory.h"
@@ -152,7 +151,7 @@
   memory_segments_.clear();
   DCHECK_EQ(num_blocks_, 0u);
   DCHECK_EQ(num_free_blocks_, 0u);
-  DCHECK_EQ(std::count_if(free_spans_, free_spans_ + base::size(free_spans_),
+  DCHECK_EQ(std::count_if(free_spans_, free_spans_ + std::size(free_spans_),
                           [](const base::LinkedList<Span>& free_spans) {
                             return !free_spans.empty();
                           }),
@@ -274,7 +273,7 @@
   size_t max_length = blocks + slack;
 
   // Search array of free lists for a suitable span.
-  while (length - 1 < base::size(free_spans_) - 1) {
+  while (length - 1 < std::size(free_spans_) - 1) {
     const base::LinkedList<Span>& free_spans = free_spans_[length - 1];
     if (!free_spans.empty()) {
       // Return the most recently used span located in tail.
@@ -287,7 +286,7 @@
   }
 
   const base::LinkedList<Span>& overflow_free_spans =
-      free_spans_[base::size(free_spans_) - 1];
+      free_spans_[std::size(free_spans_) - 1];
 
   // Search overflow free list for a suitable span. Starting with the most
   // recently used span located in tail and moving towards head.
@@ -404,7 +403,7 @@
 void DiscardableSharedMemoryHeap::InsertIntoFreeList(
     std::unique_ptr<DiscardableSharedMemoryHeap::Span> span) {
   DCHECK(!IsInFreeList(span.get()));
-  size_t index = std::min(span->length_, base::size(free_spans_)) - 1;
+  size_t index = std::min(span->length_, std::size(free_spans_)) - 1;
 
   free_spans_[index].Append(span.release());
 }
diff --git a/components/domain_reliability/quic_error_mapping.cc b/components/domain_reliability/quic_error_mapping.cc
index 87aa93bf..ab6afee 100644
--- a/components/domain_reliability/quic_error_mapping.cc
+++ b/components/domain_reliability/quic_error_mapping.cc
@@ -4,8 +4,6 @@
 
 #include "components/domain_reliability/quic_error_mapping.h"
 
-#include "base/cxx17_backports.h"
-
 namespace domain_reliability {
 
 namespace {
@@ -475,7 +473,7 @@
 const int kActiveQuicErrorCount =
     quic::QUIC_LAST_ERROR - kDeprecatedQuicErrorCount;
 
-static_assert(base::size(kQuicErrorMap) == kActiveQuicErrorCount,
+static_assert(std::size(kQuicErrorMap) == kActiveQuicErrorCount,
               "quic_error_map is not in sync with quic protocol!");
 
 }  // namespace
@@ -486,7 +484,7 @@
   if (quic_error != quic::QUIC_NO_ERROR) {
     // Convert a QUIC error.
     // TODO(juliatuttle): Consider sorting and using binary search?
-    for (size_t i = 0; i < base::size(kQuicErrorMap); i++) {
+    for (size_t i = 0; i < std::size(kQuicErrorMap); i++) {
       if (kQuicErrorMap[i].quic_error == quic_error) {
         *beacon_quic_error_out = kQuicErrorMap[i].beacon_quic_error;
         return true;
diff --git a/components/domain_reliability/util.cc b/components/domain_reliability/util.cc
index 71e05ef..8d2c8754 100644
--- a/components/domain_reliability/util.cc
+++ b/components/domain_reliability/util.cc
@@ -7,7 +7,6 @@
 #include <stddef.h>
 
 #include "base/callback.h"
-#include "base/cxx17_backports.h"
 #include "base/memory/weak_ptr.h"
 #include "base/notreached.h"
 #include "base/time/default_tick_clock.h"
@@ -92,7 +91,7 @@
   }
 
   // TODO(juliatuttle): Consider sorting and using binary search?
-  for (size_t i = 0; i < base::size(net_error_map); i++) {
+  for (size_t i = 0; i < std::size(net_error_map); i++) {
     if (net_error_map[i].net_error == net_error) {
       *beacon_status_out = net_error_map[i].beacon_status;
       return true;
diff --git a/components/download/internal/background_service/in_memory_download_unittest.cc b/components/download/internal/background_service/in_memory_download_unittest.cc
index c4f8018..607e8eb7 100644
--- a/components/download/internal/background_service/in_memory_download_unittest.cc
+++ b/components/download/internal/background_service/in_memory_download_unittest.cc
@@ -226,7 +226,7 @@
 
   // The size must match for download as stream from SimpleUrlLoader.
   network::URLLoaderCompletionStatus status;
-  status.decoded_body_length = base::size(kTestDownloadData) - 1;
+  status.decoded_body_length = std::size(kTestDownloadData) - 1;
 
   url_loader_factory()->AddResponse(request_params.url, response_head.Clone(),
                                     kTestDownloadData, status,
diff --git a/components/download/internal/common/base_file_unittest.cc b/components/download/internal/common/base_file_unittest.cc
index 702554a..a0762e5 100644
--- a/components/download/internal/common/base_file_unittest.cc
+++ b/components/download/internal/common/base_file_unittest.cc
@@ -10,7 +10,6 @@
 #include <memory>
 #include <utility>
 
-#include "base/cxx17_backports.h"
 #include "base/files/file.h"
 #include "base/files/file_util.h"
 #include "base/files/scoped_temp_dir.h"
@@ -34,10 +33,10 @@
 const char kTestData2[] = "Writing more data.\n";
 const char kTestData3[] = "Final line.";
 const char kTestData4[] = "supercalifragilisticexpialidocious";
-const int kTestDataLength1 = base::size(kTestData1) - 1;
-const int kTestDataLength2 = base::size(kTestData2) - 1;
-const int kTestDataLength3 = base::size(kTestData3) - 1;
-const int kTestDataLength4 = base::size(kTestData4) - 1;
+const int kTestDataLength1 = std::size(kTestData1) - 1;
+const int kTestDataLength2 = std::size(kTestData2) - 1;
+const int kTestDataLength3 = std::size(kTestData3) - 1;
+const int kTestDataLength4 = std::size(kTestData4) - 1;
 int64_t kTestDataBytesWasted = 0;
 
 // SHA-256 hash of kTestData1 (excluding terminating NUL).
@@ -749,7 +748,7 @@
   ASSERT_FALSE(base::PathExists(full_path));
 
   const char kData[] = "hello";
-  const int kDataLength = static_cast<int>(base::size(kData) - 1);
+  const int kDataLength = static_cast<int>(std::size(kData) - 1);
   ASSERT_EQ(kDataLength, base::WriteFile(full_path, kData, kDataLength));
   // The file that we created here should stick around when the BaseFile is
   // destroyed during TearDown.
diff --git a/components/drive/drive_api_util.cc b/components/drive/drive_api_util.cc
index ef2ca22..b614c85 100644
--- a/components/drive/drive_api_util.cc
+++ b/components/drive/drive_api_util.cc
@@ -6,7 +6,6 @@
 
 #include <string>
 
-#include "base/cxx17_backports.h"
 #include "base/files/file.h"
 #include "base/hash/md5.h"
 #include "base/strings/strcat.h"
@@ -166,7 +165,7 @@
 }
 
 bool IsKnownHostedDocumentMimeType(const std::string& mime_type) {
-  for (size_t i = 0; i < base::size(kHostedDocumentKinds); ++i) {
+  for (size_t i = 0; i < std::size(kHostedDocumentKinds); ++i) {
     if (mime_type == kHostedDocumentKinds[i].mime_type)
       return true;
   }
@@ -175,7 +174,7 @@
 
 bool HasHostedDocumentExtension(const base::FilePath& path) {
   const std::string extension = base::FilePath(path.Extension()).AsUTF8Unsafe();
-  for (size_t i = 0; i < base::size(kHostedDocumentKinds); ++i) {
+  for (size_t i = 0; i < std::size(kHostedDocumentKinds); ++i) {
     if (extension == kHostedDocumentKinds[i].extension)
       return true;
   }
diff --git a/components/drive/resource_metadata_storage.cc b/components/drive/resource_metadata_storage.cc
index 94c70ee..4bea37a 100644
--- a/components/drive/resource_metadata_storage.cc
+++ b/components/drive/resource_metadata_storage.cc
@@ -12,7 +12,6 @@
 #include <utility>
 
 #include "base/bind.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_util.h"
 #include "base/location.h"
 #include "base/logging.h"
@@ -100,7 +99,7 @@
 bool IsCacheEntryKey(const leveldb::Slice& key) {
   // A cache entry key should end with |kDBKeyDelimeter + kCacheEntryKeySuffix|.
   const leveldb::Slice expected_suffix(kCacheEntryKeySuffix,
-                                       base::size(kCacheEntryKeySuffix) - 1);
+                                       std::size(kCacheEntryKeySuffix) - 1);
   if (key.size() < 1 + expected_suffix.size() ||
       key[key.size() - expected_suffix.size() - 1] != kDBKeyDelimeter)
     return false;
@@ -114,7 +113,7 @@
 std::string GetIdFromCacheEntryKey(const leveldb::Slice& key) {
   DCHECK(IsCacheEntryKey(key));
   // Drop the suffix |kDBKeyDelimeter + kCacheEntryKeySuffix| from the key.
-  const size_t kSuffixLength = base::size(kCacheEntryKeySuffix) - 1;
+  const size_t kSuffixLength = std::size(kCacheEntryKeySuffix) - 1;
   const int id_length = key.size() - 1 - kSuffixLength;
   return std::string(key.data(), id_length);
 }
@@ -134,7 +133,7 @@
   // A resource-ID-to-local-ID entry key should start with
   // |kDBKeyDelimeter + kIdEntryKeyPrefix + kDBKeyDelimeter|.
   const leveldb::Slice expected_prefix(kIdEntryKeyPrefix,
-                                       base::size(kIdEntryKeyPrefix) - 1);
+                                       std::size(kIdEntryKeyPrefix) - 1);
   if (key.size() < 2 + expected_prefix.size())
     return false;
   const leveldb::Slice key_substring(key.data() + 1, expected_prefix.size());
@@ -148,7 +147,7 @@
   DCHECK(IsIdEntryKey(key));
   // Drop the prefix |kDBKeyDelimeter + kIdEntryKeyPrefix + kDBKeyDelimeter|
   // from the key.
-  const size_t kPrefixLength = base::size(kIdEntryKeyPrefix) - 1;
+  const size_t kPrefixLength = std::size(kIdEntryKeyPrefix) - 1;
   const int offset = kPrefixLength + 2;
   return std::string(key.data() + offset, key.size() - offset);
 }
diff --git a/components/drive/resource_metadata_storage_unittest.cc b/components/drive/resource_metadata_storage_unittest.cc
index fb40f5d..bca7949 100644
--- a/components/drive/resource_metadata_storage_unittest.cc
+++ b/components/drive/resource_metadata_storage_unittest.cc
@@ -244,7 +244,7 @@
 TEST_F(ResourceMetadataStorageTest, GetChildren) {
   const std::string parents_id[] = { "mercury", "venus", "mars", "jupiter",
                                      "saturn" };
-  std::vector<base::StringPairs> children_name_id(base::size(parents_id));
+  std::vector<base::StringPairs> children_name_id(std::size(parents_id));
   // Skip children_name_id[0/1] here because Mercury and Venus have no moon.
   children_name_id[2].push_back(std::make_pair("phobos", "mars_i"));
   children_name_id[2].push_back(std::make_pair("deimos", "mars_ii"));
diff --git a/components/embedder_support/origin_trials/origin_trial_policy_impl_unittest.cc b/components/embedder_support/origin_trials/origin_trial_policy_impl_unittest.cc
index c2ef4840..4adb336 100644
--- a/components/embedder_support/origin_trials/origin_trial_policy_impl_unittest.cc
+++ b/components/embedder_support/origin_trials/origin_trial_policy_impl_unittest.cc
@@ -7,7 +7,6 @@
 #include <memory>
 
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "base/memory/ptr_util.h"
 #include "base/strings/string_piece.h"
 #include "base/strings/string_util.h"
@@ -102,13 +101,13 @@
   OriginTrialPolicyImplTest()
       : token1_signature_(
             std::string(reinterpret_cast<const char*>(kToken1Signature),
-                        base::size(kToken1Signature))),
+                        std::size(kToken1Signature))),
         token2_signature_(
             std::string(reinterpret_cast<const char*>(kToken2Signature),
-                        base::size(kToken2Signature))),
+                        std::size(kToken2Signature))),
         token3_signature_(
             std::string(reinterpret_cast<const char*>(kToken3Signature),
-                        base::size(kToken3Signature))),
+                        std::size(kToken3Signature))),
         two_disabled_tokens_(
             base::JoinString({kToken1SignatureEncoded, kToken2SignatureEncoded},
                              kTokenSeparator)),
@@ -117,8 +116,7 @@
                               kToken3SignatureEncoded},
                              kTokenSeparator)),
         manager_(base::WrapUnique(new OriginTrialPolicyImpl())),
-        default_keys_(manager_->GetPublicKeys()) {
-  }
+        default_keys_(manager_->GetPublicKeys()) {}
 
   OriginTrialPolicyImpl* manager() { return manager_.get(); }
   const std::vector<blink::OriginTrialPublicKey>& default_keys() {
diff --git a/components/error_page/common/localized_error.cc b/components/error_page/common/localized_error.cc
index de34d6e..e62128d 100644
--- a/components/error_page/common/localized_error.cc
+++ b/components/error_page/common/localized_error.cc
@@ -12,7 +12,6 @@
 
 #include "base/check_op.h"
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "base/i18n/rtl.h"
 #include "base/memory/ptr_util.h"
 #include "base/metrics/field_trial.h"
@@ -492,11 +491,11 @@
         net::IsHostnameResolutionError(error_code)) {
       return &secure_dns_network_error;
     }
-    return FindErrorMapInArray(net_error_options, base::size(net_error_options),
+    return FindErrorMapInArray(net_error_options, std::size(net_error_options),
                                error_code);
   } else if (error_domain == Error::kHttpErrorDomain) {
     const LocalizedErrorMap* map = FindErrorMapInArray(
-        http_error_options, base::size(http_error_options), error_code);
+        http_error_options, std::size(http_error_options), error_code);
     // Handle miscellaneous 400/500 errors.
     return !map && error_code >= 400 && error_code < 600
                ? &generic_4xx_5xx_error
@@ -504,7 +503,7 @@
   } else if (error_domain == Error::kDnsProbeErrorDomain) {
     const LocalizedErrorMap* map =
         FindErrorMapInArray(dns_probe_error_options,
-                            base::size(dns_probe_error_options), error_code);
+                            std::size(dns_probe_error_options), error_code);
     DCHECK(map);
     return map;
   } else {
diff --git a/components/error_page/content/browser/net_error_auto_reloader.cc b/components/error_page/content/browser/net_error_auto_reloader.cc
index 5110106..872daad 100644
--- a/components/error_page/content/browser/net_error_auto_reloader.cc
+++ b/components/error_page/content/browser/net_error_auto_reloader.cc
@@ -61,7 +61,7 @@
   static constexpr base::TimeDelta kDelays[] = {
       base::Seconds(1), base::Seconds(5),  base::Seconds(30), base::Minutes(1),
       base::Minutes(5), base::Minutes(10), base::Minutes(30)};
-  return kDelays[std::min(reload_count, base::size(kDelays) - 1)];
+  return kDelays[std::min(reload_count, std::size(kDelays) - 1)];
 }
 
 // Helper to block a navigation that would result in re-committing the same
diff --git a/components/exo/surface_unittest.cc b/components/exo/surface_unittest.cc
index 5782b25..7fdeb1f 100644
--- a/components/exo/surface_unittest.cc
+++ b/components/exo/surface_unittest.cc
@@ -840,11 +840,11 @@
       gfx::RectF(10.5, 20, 30, 40.5), gfx::RectF(10.5, 20.5, 30, 40)};
   bool kExpectedAligned[] = {true,  true,  false, false,
                              false, false, false, false};
-  static_assert(base::size(kTestRects) == base::size(kExpectedAligned),
+  static_assert(std::size(kTestRects) == std::size(kExpectedAligned),
                 "Number of elements in each list should be the identical.");
   for (int j = 0; j < 2; j++) {
     const bool kTestCaseRotation = (j == 1);
-    for (size_t i = 0; i < base::size(kTestRects); i++) {
+    for (size_t i = 0; i < std::size(kTestRects); i++) {
       auto rect_in_dip = kTestRects[i];
       device_scale_transform.TransformRect(&rect_in_dip);
       sub_surface->SetPosition(rect_in_dip.origin());
@@ -1264,7 +1264,7 @@
   constexpr SkColor4f kBuffColorExpected[] = {{1.f, 0.5f, 0.f, 1.f},
                                               {0.f, 0.5f, 1.f, 0.f}};
   constexpr bool kExpectedOpaque[] = {true, false};
-  for (size_t i = 0; i < base::size(kBuffColorExpected); i++) {
+  for (size_t i = 0; i < std::size(kBuffColorExpected); i++) {
     auto buffer =
         std::make_unique<SolidColorBuffer>(kBuffColorExpected[i], buffer_size);
     auto surface = std::make_unique<Surface>();
diff --git a/components/exo/wayland/clients/blur.cc b/components/exo/wayland/clients/blur.cc
index e153f10..8782b0e 100644
--- a/components/exo/wayland/clients/blur.cc
+++ b/components/exo/wayland/clients/blur.cc
@@ -8,7 +8,6 @@
 #include <vector>
 
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "components/exo/wayland/clients/client_helper.h"
 #include "third_party/skia/include/core/SkCanvas.h"
 #include "third_party/skia/include/core/SkImage.h"
@@ -89,7 +88,7 @@
                                  SK_ColorRED,  SK_ColorYELLOW,
                                  SK_ColorCYAN, SK_ColorMAGENTA};
       SkPaint paint;
-      paint.setColor(kColors[(y * kGridSize + x) % base::size(kColors)]);
+      paint.setColor(kColors[(y * kGridSize + x) % std::size(kColors)]);
       canvas->save();
       canvas->translate(
           x * cell_size.width() + SkScalarHalf(cell_size.width()),
diff --git a/components/exo/wayland/clients/rects.cc b/components/exo/wayland/clients/rects.cc
index 81cfd88..0c6c1d9 100644
--- a/components/exo/wayland/clients/rects.cc
+++ b/components/exo/wayland/clients/rects.cc
@@ -20,7 +20,6 @@
 #include "base/at_exit.h"
 #include "base/command_line.h"
 #include "base/containers/circular_deque.h"
-#include "base/cxx17_backports.h"
 #include "base/logging.h"
 #include "base/message_loop/message_pump_type.h"
 #include "base/scoped_generic.h"
@@ -423,7 +422,7 @@
                                    SK_ColorRED,  SK_ColorYELLOW,
                                    SK_ColorCYAN, SK_ColorMAGENTA};
         SkPaint paint;
-        paint.setColor(SkColorSetA(kColors[i % base::size(kColors)], 0xA0));
+        paint.setColor(SkColorSetA(kColors[i % std::size(kColors)], 0xA0));
         canvas->rotate(rotation / num_rects);
         canvas->drawIRect(rect, paint);
       }
diff --git a/components/exo/wayland/clients/simple.cc b/components/exo/wayland/clients/simple.cc
index ab67352..542f421 100644
--- a/components/exo/wayland/clients/simple.cc
+++ b/components/exo/wayland/clients/simple.cc
@@ -5,11 +5,11 @@
 #include "components/exo/wayland/clients/simple.h"
 
 #include <presentation-time-client-protocol.h>
+
 #include <iostream>
 
 #include "base/command_line.h"
 #include "base/containers/circular_deque.h"
-#include "base/cxx17_backports.h"
 #include "base/time/time.h"
 #include "components/exo/wayland/clients/client_helper.h"
 #include "third_party/skia/include/core/SkCanvas.h"
@@ -141,7 +141,7 @@
     SkCanvas* canvas = buffer->sk_surface->getCanvas();
 
     static const SkColor kColors[] = {SK_ColorRED, SK_ColorBLACK};
-    canvas->clear(kColors[++frame_count % base::size(kColors)]);
+    canvas->clear(kColors[++frame_count % std::size(kColors)]);
 
     if (gr_context_) {
       gr_context_->flushAndSubmit();
diff --git a/components/exo/wayland/clients/subsurface.cc b/components/exo/wayland/clients/subsurface.cc
index d92ded6..0e7f8eb 100644
--- a/components/exo/wayland/clients/subsurface.cc
+++ b/components/exo/wayland/clients/subsurface.cc
@@ -4,7 +4,6 @@
 
 #include "base/at_exit.h"
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "base/message_loop/message_pump_type.h"
 #include "base/task/single_thread_task_executor.h"
 #include "components/exo/wayland/clients/client_base.h"
@@ -115,7 +114,7 @@
       Buffer* buffer = buffers_.front().get();
       SkCanvas* canvas = buffer->sk_surface->getCanvas();
       static const SkColor kColors[] = {SK_ColorRED, SK_ColorBLACK};
-      canvas->clear(kColors[frame_count % base::size(kColors)]);
+      canvas->clear(kColors[frame_count % std::size(kColors)]);
       if (gr_context_) {
         gr_context_->flushAndSubmit();
         glFinish();
diff --git a/components/exo/wayland/clients/vulkan.cc b/components/exo/wayland/clients/vulkan.cc
index 6345372..1ca935c 100644
--- a/components/exo/wayland/clients/vulkan.cc
+++ b/components/exo/wayland/clients/vulkan.cc
@@ -4,7 +4,6 @@
 
 #include "base/at_exit.h"
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "base/message_loop/message_pump_type.h"
 #include "base/task/single_thread_task_executor.h"
 #include "components/exo/wayland/clients/client_base.h"
@@ -146,7 +145,7 @@
 
       ScopedVulkanRenderFrame vulkan_frame(
           this, buffer->vk_framebuffer->get(),
-          kColors[++frame_count % base::size(kColors)]);
+          kColors[++frame_count % std::size(kColors)]);
 
       // This is where the drawing code would go.
       // This client is not drawing anything. Just clearing the fb.
diff --git a/components/exo/wayland/wl_shm.cc b/components/exo/wayland/wl_shm.cc
index 9ed934b..5fdc93ed 100644
--- a/components/exo/wayland/wl_shm.cc
+++ b/components/exo/wayland/wl_shm.cc
@@ -46,12 +46,12 @@
                             uint32_t format) {
   const auto* supported_format =
       std::find_if(shm_supported_formats,
-                   shm_supported_formats + base::size(shm_supported_formats),
+                   shm_supported_formats + std::size(shm_supported_formats),
                    [format](const shm_supported_format& supported_format) {
                      return supported_format.shm_format == format;
                    });
   if (supported_format ==
-      (shm_supported_formats + base::size(shm_supported_formats))) {
+      (shm_supported_formats + std::size(shm_supported_formats))) {
     wl_resource_post_error(resource, WL_SHM_ERROR_INVALID_FORMAT,
                            "invalid format 0x%x", format);
     return;
diff --git a/components/favicon/core/fallback_url_util_unittest.cc b/components/favicon/core/fallback_url_util_unittest.cc
index 75af5a2..1bc835f 100644
--- a/components/favicon/core/fallback_url_util_unittest.cc
+++ b/components/favicon/core/fallback_url_util_unittest.cc
@@ -6,7 +6,6 @@
 
 #include <stddef.h>
 
-#include "base/cxx17_backports.h"
 #include "base/strings/utf_string_conversions.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "url/gurl.h"
@@ -44,7 +43,7 @@
       {"http://xn--oogle-60a/", "X"},
       {"http://xn-oogle-60a/", "X"},
   };
-  for (size_t i = 0; i < base::size(test_cases); ++i) {
+  for (size_t i = 0; i < std::size(test_cases); ++i) {
     std::u16string expected = base::ASCIIToUTF16(test_cases[i].expected);
     GURL url(test_cases[i].url_str);
     EXPECT_EQ(expected, GetFallbackIconText(url)) << " for test_cases[" << i
diff --git a/components/favicon_base/select_favicon_frames_unittest.cc b/components/favicon_base/select_favicon_frames_unittest.cc
index a45614e..4ad3986 100644
--- a/components/favicon_base/select_favicon_frames_unittest.cc
+++ b/components/favicon_base/select_favicon_frames_unittest.cc
@@ -6,7 +6,6 @@
 
 #include <stddef.h>
 
-#include "base/cxx17_backports.h"
 #include "build/build_config.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/skia/include/core/SkBitmap.h"
@@ -31,7 +30,7 @@
 
 #define SCOPED_FAVICON_SCALE_FACTOR(list)                  \
   ui::test::ScopedSetSupportedResourceScaleFactors scoped( \
-      std::vector<ui::ResourceScaleFactor>(list, list + base::size(list)))
+      std::vector<ui::ResourceScaleFactor>(list, list + std::size(list)))
 
 #define SCOPED_FAVICON_SCALE_FACTOR_1X \
   SCOPED_FAVICON_SCALE_FACTOR(FaviconScaleFactor1x)
diff --git a/components/feature_engagement/public/feature_list.cc b/components/feature_engagement/public/feature_list.cc
index 35c9729..1274231 100644
--- a/components/feature_engagement/public/feature_list.cc
+++ b/components/feature_engagement/public/feature_list.cc
@@ -4,7 +4,6 @@
 
 #include "components/feature_engagement/public/feature_list.h"
 
-#include "base/cxx17_backports.h"
 #include "build/build_config.h"
 #include "components/feature_engagement/public/feature_constants.h"
 
@@ -155,7 +154,7 @@
 
 std::vector<const base::Feature*> GetAllFeatures() {
   return std::vector<const base::Feature*>(
-      kAllFeatures, kAllFeatures + base::size(kAllFeatures));
+      kAllFeatures, kAllFeatures + std::size(kAllFeatures));
 }
 
 }  // namespace feature_engagement
diff --git a/components/feature_engagement/public/feature_list.h b/components/feature_engagement/public/feature_list.h
index fc207160..b4fd160 100644
--- a/components/feature_engagement/public/feature_list.h
+++ b/components/feature_engagement/public/feature_list.h
@@ -7,7 +7,6 @@
 
 #include <vector>
 
-#include "base/cxx17_backports.h"
 #include "base/feature_list.h"
 #include "build/build_config.h"
 #include "components/feature_engagement/public/feature_constants.h"
@@ -40,7 +39,7 @@
 #define VARIATION_ENTRY(base_feature)                                \
   {                                                                  \
     base_feature##Variation[0].param_value, base_feature##Variation, \
-        base::size(base_feature##Variation), nullptr                 \
+        std::size(base_feature##Variation), nullptr                  \
   }
 
 // Defines a flags_ui::FeatureEntry::FeatureParam for each feature.
diff --git a/components/feed/core/v2/public/public_types.cc b/components/feed/core/v2/public/public_types.cc
index bbd116f..25833c03 100644
--- a/components/feed/core/v2/public/public_types.cc
+++ b/components/feed/core/v2/public/public_types.cc
@@ -49,12 +49,12 @@
 WebFeedPageInformation& WebFeedPageInformation::operator=(
     WebFeedPageInformation&&) = default;
 void WebFeedPageInformation::SetUrl(const GURL& url) {
-  url::Replacements<char> clear_ref;
+  GURL::Replacements clear_ref;
   clear_ref.ClearRef();
   url_ = url.ReplaceComponents(clear_ref);
 }
 void WebFeedPageInformation::SetCanonicalUrl(const GURL& url) {
-  url::Replacements<char> clear_ref;
+  GURL::Replacements clear_ref;
   clear_ref.ClearRef();
   canonical_url_ = url.ReplaceComponents(clear_ref);
 }
diff --git a/components/feedback/redaction_tool.cc b/components/feedback/redaction_tool.cc
index 824e21e..c26504b 100644
--- a/components/feedback/redaction_tool.cc
+++ b/components/feedback/redaction_tool.cc
@@ -433,7 +433,7 @@
                                  Arg*... match_groups) {
   re2::StringPiece* args[] = {match_groups...};
   return FindAndConsumeAndGetSkippedN(input, pattern, skipped_input, args,
-                                      base::size(args));
+                                      std::size(args));
 }
 
 // The following MAC addresses will not be redacted as they are not specific
@@ -442,7 +442,7 @@
     "00:00:00:00:00:00",  // ARP failure result MAC.
     "ff:ff:ff:ff:ff:ff",  // Broadcast MAC.
 };
-constexpr size_t kNumUnredactedMacs = base::size(kUnredactedMacAddresses);
+constexpr size_t kNumUnredactedMacs = std::size(kUnredactedMacAddresses);
 
 }  // namespace
 
diff --git a/components/feedback/redaction_tool_unittest.cc b/components/feedback/redaction_tool_unittest.cc
index 0c8a747..ede2365 100644
--- a/components/feedback/redaction_tool_unittest.cc
+++ b/components/feedback/redaction_tool_unittest.cc
@@ -452,7 +452,7 @@
       "file:///var/log/messages",
       "file:///usr/local/home/iby/web%20page%20test.html",
   };
-  for (size_t i = 0; i < base::size(kURLs); ++i) {
+  for (size_t i = 0; i < std::size(kURLs); ++i) {
     SCOPED_TRACE(kURLs[i]);
     std::string got = RedactCustomPatterns(kURLs[i]);
     EXPECT_TRUE(
diff --git a/components/filename_generation/filename_generation_unittest.cc b/components/filename_generation/filename_generation_unittest.cc
index 1aeda89..f8979d4 100644
--- a/components/filename_generation/filename_generation_unittest.cc
+++ b/components/filename_generation/filename_generation_unittest.cc
@@ -4,7 +4,6 @@
 
 #include "components/filename_generation/filename_generation.h"
 
-#include "base/cxx17_backports.h"
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
 #include "base/files/scoped_temp_dir.h"
@@ -64,7 +63,7 @@
 #define MAYBE_TestEnsureHtmlExtension TestEnsureHtmlExtension
 #endif
 TEST(FilenameGenerationTest, MAYBE_TestEnsureHtmlExtension) {
-  for (size_t i = 0; i < base::size(kExtensionTestCases); ++i) {
+  for (size_t i = 0; i < std::size(kExtensionTestCases); ++i) {
     base::FilePath original = base::FilePath(kExtensionTestCases[i].page_title);
     base::FilePath expected =
         base::FilePath(kExtensionTestCases[i].expected_name);
@@ -111,7 +110,7 @@
     {FPL("filename.abc"), FPL("filename.abc"), "unknown/unknown"},
     {FPL("filename"), FPL("filename"), "unknown/unknown"},
   };
-  for (uint32_t i = 0; i < base::size(kExtensionTests); ++i) {
+  for (uint32_t i = 0; i < std::size(kExtensionTests); ++i) {
     base::FilePath original = base::FilePath(kExtensionTests[i].page_title);
     base::FilePath expected = base::FilePath(kExtensionTests[i].expected_name);
     std::string mime_type(kExtensionTests[i].contents_mime_type);
@@ -166,7 +165,7 @@
 #define MAYBE_TestGenerateFilename TestGenerateFilename
 #endif
 TEST(FilenameGenerationTest, MAYBE_TestGenerateFilename) {
-  for (size_t i = 0; i < base::size(kGenerateFilenameCases); ++i) {
+  for (size_t i = 0; i < std::size(kGenerateFilenameCases); ++i) {
     base::FilePath save_name = GenerateFilename(
         kGenerateFilenameCases[i].page_title,
         GURL(kGenerateFilenameCases[i].page_url),
diff --git a/components/flags_ui/flags_state_unittest.cc b/components/flags_ui/flags_state_unittest.cc
index 6331fdf..0dd72c1 100644
--- a/components/flags_ui/flags_state_unittest.cc
+++ b/components/flags_ui/flags_state_unittest.cc
@@ -174,7 +174,7 @@
     prefs_.registry()->RegisterListPref(prefs::kAboutFlagsEntries);
     prefs_.registry()->RegisterDictionaryPref(prefs::kAboutFlagsOriginLists);
 
-    for (size_t i = 0; i < base::size(kEntries); ++i)
+    for (size_t i = 0; i < std::size(kEntries); ++i)
       kEntries[i].supported_platforms = FlagsState::GetCurrentPlatform();
 
     int os_other_than_current = 1;
@@ -496,7 +496,7 @@
       {2, "A,B", "C", "A,B", "C,FeatureName1"},
   };
 
-  for (size_t i = 0; i < base::size(cases); ++i) {
+  for (size_t i = 0; i < std::size(cases); ++i) {
     SCOPED_TRACE(base::StringPrintf(
         "Test[%" PRIuS "]: %d [%s] [%s]", i, cases[i].enabled_choice,
         cases[i].existing_enable_features ? cases[i].existing_enable_features
@@ -799,7 +799,7 @@
       {2, nullptr, "Foo,Bar", "", "Foo,Bar,FeatureName1"},
   };
 
-  for (size_t i = 0; i < base::size(cases); ++i) {
+  for (size_t i = 0; i < std::size(cases); ++i) {
     SCOPED_TRACE(base::StringPrintf(
         "Test[%" PRIuS "]: %d [%s] [%s]", i, cases[i].enabled_choice,
         cases[i].existing_enable_features ? cases[i].existing_enable_features
@@ -843,7 +843,7 @@
   auto unsupported_count = unsupported_entries.size();
   EXPECT_EQ(11u, supported_count);
   EXPECT_EQ(1u, unsupported_count);
-  EXPECT_EQ(base::size(kEntries), supported_count + unsupported_count);
+  EXPECT_EQ(std::size(kEntries), supported_count + unsupported_count);
 }
 
 }  // namespace flags_ui
diff --git a/components/gcm_driver/crypto/encryption_header_parsers_unittest.cc b/components/gcm_driver/crypto/encryption_header_parsers_unittest.cc
index 3fd7026d..dc53fa3b 100644
--- a/components/gcm_driver/crypto/encryption_header_parsers_unittest.cc
+++ b/components/gcm_driver/crypto/encryption_header_parsers_unittest.cc
@@ -7,8 +7,6 @@
 #include <stddef.h>
 #include <stdint.h>
 
-
-#include "base/cxx17_backports.h"
 #include "base/strings/string_number_conversions.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -42,7 +40,7 @@
     { "keyid=foo;someothervalue=1;rs=42", "foo", "", 42 },
   };
 
-  for (size_t i = 0; i < base::size(expected_results); i++) {
+  for (size_t i = 0; i < std::size(expected_results); i++) {
     SCOPED_TRACE(i);
 
     std::string header(expected_results[i].header);
@@ -84,7 +82,7 @@
         { "", "sixteencoolbytes", kDefaultRecordSize } } },
   };
 
-  for (size_t i = 0; i < base::size(expected_results); i++) {
+  for (size_t i = 0; i < std::size(expected_results); i++) {
     SCOPED_TRACE(i);
 
     std::string header(expected_results[i].header);
@@ -145,7 +143,7 @@
     "rs=2,rs=0",
   };
 
-  for (size_t i = 0; i < base::size(expected_failures); i++) {
+  for (size_t i = 0; i < std::size(expected_failures); i++) {
     SCOPED_TRACE(i);
 
     std::string header(expected_failures[i]);
@@ -154,7 +152,7 @@
     EXPECT_FALSE(iterator.GetNext());
   }
 
-  for (size_t i = 0; i < base::size(expected_failures_second_iter); i++) {
+  for (size_t i = 0; i < std::size(expected_failures_second_iter); i++) {
     SCOPED_TRACE(i);
 
     std::string header(expected_failures_second_iter[i]);
@@ -189,7 +187,7 @@
       "foo", "twelvecoolbytes", "" },
   };
 
-  for (size_t i = 0; i < base::size(expected_results); i++) {
+  for (size_t i = 0; i < std::size(expected_results); i++) {
     SCOPED_TRACE(i);
 
     std::string header(expected_results[i].header);
@@ -231,7 +229,7 @@
         { "", "sixteencoolbytes", "" } } },
   };
 
-  for (size_t i = 0; i < base::size(expected_results); i++) {
+  for (size_t i = 0; i < std::size(expected_results); i++) {
     SCOPED_TRACE(i);
 
     std::string header(expected_results[i].header);
@@ -283,7 +281,7 @@
     "dh=dHdlbHZlY29vbGJ5dGVz,aesgcm128=123$xyz",
   };
 
-  for (size_t i = 0; i < base::size(expected_failures); i++) {
+  for (size_t i = 0; i < std::size(expected_failures); i++) {
     SCOPED_TRACE(i);
 
     std::string header(expected_failures[i]);
@@ -292,7 +290,7 @@
     EXPECT_FALSE(iterator.GetNext());
   }
 
-  for (size_t i = 0; i < base::size(expected_failures_second_iter); i++) {
+  for (size_t i = 0; i < std::size(expected_failures_second_iter); i++) {
     SCOPED_TRACE(i);
 
     std::string header(expected_failures_second_iter[i]);
diff --git a/components/gcm_driver/crypto/gcm_message_cryptographer_unittest.cc b/components/gcm_driver/crypto/gcm_message_cryptographer_unittest.cc
index 380e166e..529c48d848 100644
--- a/components/gcm_driver/crypto/gcm_message_cryptographer_unittest.cc
+++ b/components/gcm_driver/crypto/gcm_message_cryptographer_unittest.cc
@@ -8,7 +8,6 @@
 
 #include "base/base64url.h"
 #include "base/big_endian.h"
-#include "base/cxx17_backports.h"
 #include "base/logging.h"
 #include "base/strings/string_piece.h"
 #include "base/strings/string_util.h"
@@ -39,7 +38,7 @@
     0x9A, 0xA1, 0x1A, 0x04, 0xF1, 0x98, 0x25, 0xF2, 0xC2, 0x13, 0x5D,
     0xD9, 0x72, 0x35, 0x75, 0x24, 0xF9, 0xFF, 0x25, 0xD1, 0xBC, 0x84,
     0x46, 0x4E, 0x88, 0x08, 0x55, 0x70, 0x9F, 0xA7, 0x07, 0xD9};
-static_assert(base::size(kCommonSenderPublicKey) == 65,
+static_assert(std::size(kCommonSenderPublicKey) == 65,
               "Raw P-256 public keys must be 65 bytes in size.");
 
 const unsigned char kCommonRecipientPublicKey[] = {
@@ -49,7 +48,7 @@
     0x9A, 0x9F, 0xB8, 0x19, 0xD8, 0x21, 0x6F, 0x66, 0xE3, 0xF6, 0x0B,
     0x74, 0xB2, 0x28, 0x38, 0xDC, 0xA7, 0x8A, 0x58, 0x0D, 0x56, 0x47,
     0x3E, 0xD0, 0x5B, 0x5C, 0x93, 0x4E, 0xB3, 0x89, 0x87, 0x64};
-static_assert(base::size(kCommonRecipientPublicKey) == 65,
+static_assert(std::size(kCommonRecipientPublicKey) == 65,
               "Raw P-256 public keys must be 65 bytes in size.");
 
 const unsigned char kCommonRecipientPrivateKey[] = {
@@ -69,7 +68,7 @@
 const unsigned char kCommonAuthSecret[] = {0x25, 0xF2, 0xC2, 0xB8, 0x19, 0xD8,
                                            0xFD, 0x35, 0x97, 0xDF, 0xFB, 0x5E,
                                            0xF6, 0x0B, 0xD7, 0xA4};
-static_assert(base::size(kCommonAuthSecret) == 16,
+static_assert(std::size(kCommonAuthSecret) == 16,
               "Auth secrets must be 16 bytes in size.");
 
 // Test vectors containing reference input for draft-ietf-webpush-encryption
@@ -278,14 +277,14 @@
   void SetUp() override {
     recipient_public_key_.assign(
         kCommonRecipientPublicKey,
-        kCommonRecipientPublicKey + base::size(kCommonRecipientPublicKey));
+        kCommonRecipientPublicKey + std::size(kCommonRecipientPublicKey));
     sender_public_key_.assign(
         kCommonSenderPublicKey,
-        kCommonSenderPublicKey + base::size(kCommonSenderPublicKey));
+        kCommonSenderPublicKey + std::size(kCommonSenderPublicKey));
 
     std::string recipient_private_key(
         kCommonRecipientPrivateKey,
-        kCommonRecipientPrivateKey + base::size(kCommonRecipientPrivateKey));
+        kCommonRecipientPrivateKey + std::size(kCommonRecipientPrivateKey));
     std::vector<uint8_t> recipient_private_key_vec(
       recipient_private_key.begin(), recipient_private_key.end());
     std::unique_ptr<crypto::ECPrivateKey> recipient_key =
@@ -295,7 +294,7 @@
         *recipient_key, sender_public_key_, &ecdh_shared_secret_));
 
     auth_secret_.assign(kCommonAuthSecret,
-                        kCommonAuthSecret + base::size(kCommonAuthSecret));
+                        kCommonAuthSecret + std::size(kCommonAuthSecret));
   }
 
  protected:
@@ -583,7 +582,7 @@
   std::string ecdh_shared_secret, auth_secret, salt, ciphertext, output;
   size_t record_size = 0;
 
-  for (size_t i = 0; i < base::size(kEncryptionTestVectorsDraft03); ++i) {
+  for (size_t i = 0; i < std::size(kEncryptionTestVectorsDraft03); ++i) {
     SCOPED_TRACE(i);
 
     ecdh_shared_secret.assign(
@@ -616,7 +615,7 @@
       GCMMessageCryptographer::Version::DRAFT_03);
 
   std::string input, ecdh_shared_secret, auth_secret, salt, plaintext;
-  for (size_t i = 0; i < base::size(kDecryptionTestVectorsDraft03); ++i) {
+  for (size_t i = 0; i < std::size(kDecryptionTestVectorsDraft03); ++i) {
     SCOPED_TRACE(i);
 
     ASSERT_TRUE(base::Base64UrlDecode(
@@ -658,7 +657,7 @@
   std::string ecdh_shared_secret, auth_secret, salt, ciphertext, output;
   size_t record_size = 0;
 
-  for (size_t i = 0; i < base::size(kEncryptionTestVectorsDraft08); ++i) {
+  for (size_t i = 0; i < std::size(kEncryptionTestVectorsDraft08); ++i) {
     SCOPED_TRACE(i);
 
     ecdh_shared_secret.assign(
@@ -692,7 +691,7 @@
 
   std::string input, ecdh_shared_secret, auth_secret, salt, plaintext;
 
-  for (size_t i = 0; i < base::size(kDecryptionTestVectorsDraft08); ++i) {
+  for (size_t i = 0; i < std::size(kDecryptionTestVectorsDraft08); ++i) {
     SCOPED_TRACE(i);
 
     ASSERT_TRUE(base::Base64UrlDecode(
diff --git a/components/gcm_driver/crypto/message_payload_parser_unittest.cc b/components/gcm_driver/crypto/message_payload_parser_unittest.cc
index f9d7203..a90b129 100644
--- a/components/gcm_driver/crypto/message_payload_parser_unittest.cc
+++ b/components/gcm_driver/crypto/message_payload_parser_unittest.cc
@@ -5,7 +5,6 @@
 #include "components/gcm_driver/crypto/message_payload_parser.h"
 
 #include "base/big_endian.h"
-#include "base/cxx17_backports.h"
 #include "components/gcm_driver/crypto/gcm_decryption_result.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -36,13 +35,13 @@
     0x3F, 0xD8, 0x95, 0x2C, 0xA2, 0x11, 0xBD, 0x7B, 0x57, 0xB2, 0x00, 0xBD,
     0x57, 0x68, 0x3F, 0xF0, 0x14, 0x57};
 
-static_assert(base::size(kValidMessage) == 104,
+static_assert(std::size(kValidMessage) == 104,
               "The smallest valid message is 104 bytes in size.");
 
 // Creates an std::string for the |kValidMessage| constant.
 std::string CreateMessageString() {
   return std::string(reinterpret_cast<const char*>(kValidMessage),
-                     base::size(kValidMessage));
+                     std::size(kValidMessage));
 }
 
 TEST(MessagePayloadParserTest, ValidMessage) {
@@ -73,7 +72,7 @@
 
 TEST(MessagePayloadParserTest, MinimumMessageSize) {
   std::string message = CreateMessageString();
-  message.resize(base::size(kValidMessage) / 2);
+  message.resize(std::size(kValidMessage) / 2);
 
   MessagePayloadParser parser(message);
   EXPECT_FALSE(parser.IsValid());
diff --git a/components/google/core/common/google_util.cc b/components/google/core/common/google_util.cc
index 42eed7b..7ce2a5e 100644
--- a/components/google/core/common/google_util.cc
+++ b/components/google/core/common/google_util.cc
@@ -11,7 +11,6 @@
 
 #include "base/command_line.h"
 #include "base/containers/fixed_flat_set.h"
-#include "base/cxx17_backports.h"
 #include "base/no_destructor.h"
 #include "base/strings/strcat.h"
 #include "base/strings/string_number_conversions.h"
@@ -300,7 +299,7 @@
       ".ytimg.com",
   };
   const std::string host = url.host();
-  for (size_t i = 0; i < base::size(kSuffixesToSetHeadersFor); ++i) {
+  for (size_t i = 0; i < std::size(kSuffixesToSetHeadersFor); ++i) {
     if (base::EndsWith(host, kSuffixesToSetHeadersFor[i],
                        base::CompareCase::INSENSITIVE_ASCII)) {
       return true;
@@ -311,7 +310,7 @@
   static const char* kHostsToSetHeadersFor[] = {
       "googleweblight.com",
   };
-  for (size_t i = 0; i < base::size(kHostsToSetHeadersFor); ++i) {
+  for (size_t i = 0; i < std::size(kHostsToSetHeadersFor); ++i) {
     if (base::LowerCaseEqualsASCII(host, kHostsToSetHeadersFor[i]))
       return true;
   }
diff --git a/components/history/content/browser/content_history_backend_db_unittest.cc b/components/history/content/browser/content_history_backend_db_unittest.cc
index 77192d0..64ecc9e 100644
--- a/components/history/content/browser/content_history_backend_db_unittest.cc
+++ b/components/history/content/browser/content_history_backend_db_unittest.cc
@@ -17,11 +17,9 @@
 //    has no logic in the getter except threading stuff, which we don't want
 //    to run.
 
-#include "components/history/core/browser/history_backend.h"
-
 #include <stddef.h>
 
-#include "base/cxx17_backports.h"
+#include "components/history/core/browser/history_backend.h"
 #include "components/history/core/test/history_backend_db_base_test.h"
 
 namespace history {
@@ -89,11 +87,11 @@
        ConfirmDownloadInterruptReasonBackwardsCompatible) {
   // Are there any cases in which a historical number has been repurposed
   // for an error other than it's original?
-  for (size_t i = 0; i < base::size(current_reasons); i++) {
+  for (size_t i = 0; i < std::size(current_reasons); i++) {
     const InterruptReasonAssociation& cur_reason(current_reasons[i]);
     bool found = false;
 
-    for (size_t j = 0; j < base::size(historical_reasons); ++j) {
+    for (size_t j = 0; j < std::size(historical_reasons); ++j) {
       const InterruptReasonAssociation& hist_reason(historical_reasons[j]);
 
       if (hist_reason.value == cur_reason.value) {
diff --git a/components/history/core/browser/android/android_history_types.cc b/components/history/core/browser/android/android_history_types.cc
index 7d50aba..948dd9e 100644
--- a/components/history/core/browser/android/android_history_types.cc
+++ b/components/history/core/browser/android/android_history_types.cc
@@ -6,7 +6,6 @@
 
 #include <stddef.h>
 
-#include "base/cxx17_backports.h"
 #include "sql/statement.h"
 
 namespace history {
@@ -37,9 +36,9 @@
  public:
   BookmarkIDMapping() {
     static_assert(
-        base::size(kAndroidBookmarkColumn) <= HistoryAndBookmarkRow::COLUMN_END,
+        std::size(kAndroidBookmarkColumn) <= HistoryAndBookmarkRow::COLUMN_END,
         "kAndroidBookmarkColumn should not have more than COLUMN_END elements");
-    for (size_t i = 0; i < base::size(kAndroidBookmarkColumn); ++i) {
+    for (size_t i = 0; i < std::size(kAndroidBookmarkColumn); ++i) {
       (*this)[kAndroidBookmarkColumn[i]] =
           static_cast<HistoryAndBookmarkRow::ColumnID>(i);
     }
@@ -53,10 +52,10 @@
 class SearchIDMapping : public std::map<std::string, SearchRow::ColumnID> {
  public:
   SearchIDMapping() {
-    static_assert(base::size(kAndroidSearchColumn) <= SearchRow::COLUMN_END,
+    static_assert(std::size(kAndroidSearchColumn) <= SearchRow::COLUMN_END,
                   "kAndroidSearchColumn should not have more than "
                   "COLUMN_END elements");
-    for (size_t i = 0; i < base::size(kAndroidSearchColumn); ++i) {
+    for (size_t i = 0; i < std::size(kAndroidSearchColumn); ++i) {
       (*this)[kAndroidSearchColumn[i]] = static_cast<SearchRow::ColumnID>(i);
     }
   }
diff --git a/components/history/core/browser/android/android_urls_sql_handler.cc b/components/history/core/browser/android/android_urls_sql_handler.cc
index 0703011b..04b9bb11 100644
--- a/components/history/core/browser/android/android_urls_sql_handler.cc
+++ b/components/history/core/browser/android/android_urls_sql_handler.cc
@@ -5,7 +5,6 @@
 #include "components/history/core/browser/android/android_urls_sql_handler.h"
 
 #include "base/check.h"
-#include "base/cxx17_backports.h"
 #include "components/history/core/browser/android/android_urls_database.h"
 
 namespace history {
@@ -20,7 +19,7 @@
 
 AndroidURLsSQLHandler::AndroidURLsSQLHandler(
     AndroidURLsDatabase* android_urls_db)
-    : SQLHandler(kInterestingColumns, base::size(kInterestingColumns)),
+    : SQLHandler(kInterestingColumns, std::size(kInterestingColumns)),
       android_urls_db_(android_urls_db) {}
 
 AndroidURLsSQLHandler::~AndroidURLsSQLHandler() {
diff --git a/components/history/core/browser/android/favicon_sql_handler.cc b/components/history/core/browser/android/favicon_sql_handler.cc
index 9b7473dc..02c4189 100644
--- a/components/history/core/browser/android/favicon_sql_handler.cc
+++ b/components/history/core/browser/android/favicon_sql_handler.cc
@@ -5,7 +5,6 @@
 #include "components/history/core/browser/android/favicon_sql_handler.h"
 
 #include "base/check.h"
-#include "base/cxx17_backports.h"
 #include "base/memory/ref_counted.h"
 #include "base/memory/ref_counted_memory.h"
 #include "components/favicon/core/favicon_database.h"
@@ -23,7 +22,7 @@
 }  // namespace
 
 FaviconSQLHandler::FaviconSQLHandler(favicon::FaviconDatabase* favicon_db)
-    : SQLHandler(kInterestingColumns, base::size(kInterestingColumns)),
+    : SQLHandler(kInterestingColumns, std::size(kInterestingColumns)),
       favicon_db_(favicon_db) {}
 
 FaviconSQLHandler::~FaviconSQLHandler() {
diff --git a/components/history/core/browser/android/urls_sql_handler.cc b/components/history/core/browser/android/urls_sql_handler.cc
index 182da4c6..0002bad 100644
--- a/components/history/core/browser/android/urls_sql_handler.cc
+++ b/components/history/core/browser/android/urls_sql_handler.cc
@@ -4,7 +4,6 @@
 
 #include "components/history/core/browser/android/urls_sql_handler.h"
 
-#include "base/cxx17_backports.h"
 #include "base/logging.h"
 #include "components/history/core/browser/url_database.h"
 
@@ -21,7 +20,7 @@
 }  // namespace
 
 UrlsSQLHandler::UrlsSQLHandler(URLDatabase* url_db)
-    : SQLHandler(kInterestingColumns, base::size(kInterestingColumns)),
+    : SQLHandler(kInterestingColumns, std::size(kInterestingColumns)),
       url_db_(url_db) {}
 
 UrlsSQLHandler:: ~UrlsSQLHandler() {
diff --git a/components/history/core/browser/android/visit_sql_handler.cc b/components/history/core/browser/android/visit_sql_handler.cc
index ccb0e73..6af11f8 100644
--- a/components/history/core/browser/android/visit_sql_handler.cc
+++ b/components/history/core/browser/android/visit_sql_handler.cc
@@ -7,7 +7,6 @@
 #include <stdint.h>
 
 #include "base/check.h"
-#include "base/cxx17_backports.h"
 #include "components/history/core/browser/url_database.h"
 #include "components/history/core/browser/visit_database.h"
 
@@ -25,7 +24,7 @@
 } // namespace
 
 VisitSQLHandler::VisitSQLHandler(URLDatabase* url_db, VisitDatabase* visit_db)
-    : SQLHandler(kInterestingColumns, base::size(kInterestingColumns)),
+    : SQLHandler(kInterestingColumns, std::size(kInterestingColumns)),
       url_db_(url_db),
       visit_db_(visit_db) {}
 
diff --git a/components/history/core/browser/expire_history_backend_unittest.cc b/components/history/core/browser/expire_history_backend_unittest.cc
index b6ab918..89baee1 100644
--- a/components/history/core/browser/expire_history_backend_unittest.cc
+++ b/components/history/core/browser/expire_history_backend_unittest.cc
@@ -13,7 +13,6 @@
 
 #include "base/bind.h"
 #include "base/compiler_specific.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
 #include "base/files/scoped_temp_dir.h"
@@ -607,7 +606,7 @@
   std::vector<GURL> urls;
   // Push back a bogus URL (which shouldn't change anything).
   urls.push_back(GURL());
-  for (size_t i = 0; i < base::size(rows); ++i) {
+  for (size_t i = 0; i < std::size(rows); ++i) {
     ASSERT_TRUE(main_db_->GetURLRow(url_ids[i], &rows[i]));
     favicon_ids[i] =
         GetFavicon(rows[i].url(), favicon_base::IconType::kFavicon);
diff --git a/components/history/core/browser/history_backend_unittest.cc b/components/history/core/browser/history_backend_unittest.cc
index b1ce43d..1766c6d 100644
--- a/components/history/core/browser/history_backend_unittest.cc
+++ b/components/history/core/browser/history_backend_unittest.cc
@@ -17,7 +17,6 @@
 #include "base/bind.h"
 #include "base/callback.h"
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
 #include "base/files/scoped_temp_dir.h"
@@ -2840,7 +2839,7 @@
   ASSERT_TRUE(backend_.get());
 
   HistoryAddPageArgs args[10];
-  for (size_t i = 0; i < base::size(args); ++i) {
+  for (size_t i = 0; i < std::size(args); ++i) {
     args[i].url =
         GURL("http://example" + std::string((i % 2 == 0 ? ".com" : ".net")));
     args[i].time = base::Time::FromInternalValue(i);
@@ -2896,14 +2895,14 @@
 
   // Insert 4 entries into the database.
   HistoryAddPageArgs args[4];
-  for (size_t i = 0; i < base::size(args); ++i) {
+  for (size_t i = 0; i < std::size(args); ++i) {
     args[i].url = GURL("http://example" + base::NumberToString(i) + ".com");
     args[i].time = reference_time + base::Days(i);
     backend_->AddPage(args[i]);
   }
 
   URLRow url_rows[4];
-  for (unsigned int i = 0; i < base::size(args); ++i)
+  for (unsigned int i = 0; i < std::size(args); ++i)
     ASSERT_TRUE(backend_->GetURL(args[i].url, &url_rows[i]));
 
   std::vector<ExpireHistoryArgs> expire_list;
@@ -2937,7 +2936,7 @@
   EXPECT_EQ(backend_->GetFirstRecordedTimeForTest(), args[1].time);
 
   // Now delete the rest of the visits in one call.
-  for (unsigned int i = 1; i < base::size(args); ++i) {
+  for (unsigned int i = 1; i < std::size(args); ++i) {
     expire_list.resize(expire_list.size() + 1);
     expire_list[i].SetTimeRangeForOneDay(args[i].time);
     expire_list[i].urls.insert(args[i].url);
diff --git a/components/history/core/browser/history_querying_unittest.cc b/components/history/core/browser/history_querying_unittest.cc
index bdd0e4e..50e820e91 100644
--- a/components/history/core/browser/history_querying_unittest.cc
+++ b/components/history/core/browser/history_querying_unittest.cc
@@ -8,7 +8,6 @@
 
 #include "base/bind.h"
 #include "base/callback_helpers.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
 #include "base/files/scoped_temp_dir.h"
@@ -197,7 +196,7 @@
 
     // Fill the test data.
     base_ = base::Time::Now().LocalMidnight();
-    for (size_t i = 0; i < base::size(test_entries); i++) {
+    for (size_t i = 0; i < std::size(test_entries); i++) {
       test_entries[i].time = GetTimeFromDaysAgo(test_entries[i].days_ago);
       AddEntryToHistory(test_entries[i]);
     }
@@ -458,7 +457,7 @@
                        L"\u0438\u0434\u0435\u043d\u0442.\u0440\u0444"), 1, },
   };
 
-  for (size_t i = 0; i < base::size(queries); ++i) {
+  for (size_t i = 0; i < std::size(queries); ++i) {
     QueryHistory(queries[i].query, options, &results);
     EXPECT_EQ(queries[i].results_size, results.size());
   }
@@ -469,7 +468,7 @@
   // Since results are fetched 1 and 2 at a time, entry #0 and #6 will not
   // be de-duplicated.
   int expected_results[] = {4, 2, 3, 1, 7, 6, 5, 8, 9, 10, 11, 12, 13, 14, 0};
-  TestPaging(std::string(), expected_results, base::size(expected_results));
+  TestPaging(std::string(), expected_results, std::size(expected_results));
 }
 
 TEST_F(HistoryQueryTest, TextSearchPaging) {
@@ -477,7 +476,7 @@
   // be de-duplicated. Entry #4 does not contain the text "title", so it
   // shouldn't appear.
   int expected_results[] = { 2, 3, 1, 7, 6, 5 };
-  TestPaging("title", expected_results, base::size(expected_results));
+  TestPaging("title", expected_results, std::size(expected_results));
 }
 
 }  // namespace history
diff --git a/components/history/core/browser/sync/typed_url_sync_bridge_unittest.cc b/components/history/core/browser/sync/typed_url_sync_bridge_unittest.cc
index 84ecac18..4a9b5fd5 100644
--- a/components/history/core/browser/sync/typed_url_sync_bridge_unittest.cc
+++ b/components/history/core/browser/sync/typed_url_sync_bridge_unittest.cc
@@ -9,7 +9,6 @@
 
 #include "base/big_endian.h"
 #include "base/bind.h"
-#include "base/cxx17_backports.h"
 #include "base/files/scoped_temp_dir.h"
 #include "base/memory/raw_ptr.h"
 #include "base/strings/utf_string_conversions.h"
@@ -1542,8 +1541,8 @@
 
   DiffVisits(old_visits, new_url, &new_visits, &removed_visits);
   EXPECT_TRUE(new_visits.empty());
-  ASSERT_EQ(removed_visits.size(), base::size(visits_removed));
-  for (size_t i = 0; i < base::size(visits_removed); ++i) {
+  ASSERT_EQ(removed_visits.size(), std::size(visits_removed));
+  for (size_t i = 0; i < std::size(visits_removed); ++i) {
     EXPECT_EQ(removed_visits[i].visit_time.ToInternalValue(),
               visits_removed[i]);
   }
@@ -1576,8 +1575,8 @@
 
   DiffVisits(old_visits, new_url, &new_visits, &removed_visits);
   EXPECT_TRUE(removed_visits.empty());
-  ASSERT_TRUE(new_visits.size() == base::size(visits_added));
-  for (size_t i = 0; i < base::size(visits_added); ++i) {
+  ASSERT_TRUE(new_visits.size() == std::size(visits_added));
+  for (size_t i = 0; i < std::size(visits_added); ++i) {
     EXPECT_EQ(new_visits[i].first.ToInternalValue(), visits_added[i]);
     EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs(
         new_visits[i].second, ui::PAGE_TRANSITION_TYPED));
diff --git a/components/history/core/browser/url_utils_unittest.cc b/components/history/core/browser/url_utils_unittest.cc
index a824922..0a3e4d99 100644
--- a/components/history/core/browser/url_utils_unittest.cc
+++ b/components/history/core/browser/url_utils_unittest.cc
@@ -6,7 +6,6 @@
 
 #include <stddef.h>
 
-#include "base/cxx17_backports.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "url/gurl.h"
 
@@ -36,11 +35,11 @@
     "http://www.google.com:80/",
     "https://www.google.com",
   };
-  for (size_t i = 0; i < base::size(sorted_list); ++i) {
+  for (size_t i = 0; i < std::size(sorted_list); ++i) {
     EXPECT_FALSE(CanonicalURLStringCompare(sorted_list[i], sorted_list[i]))
         << " for \"" << sorted_list[i] << "\" < \"" << sorted_list[i] << "\"";
     // Every disjoint pair-wise comparison.
-    for (size_t j = i + 1; j < base::size(sorted_list); ++j) {
+    for (size_t j = i + 1; j < std::size(sorted_list); ++j) {
       EXPECT_TRUE(CanonicalURLStringCompare(sorted_list[i], sorted_list[j]))
           << " for \"" << sorted_list[i] << "\" < \"" << sorted_list[j] << "\"";
       EXPECT_FALSE(CanonicalURLStringCompare(sorted_list[j], sorted_list[i]))
@@ -64,7 +63,7 @@
     {"http://www.google.com/test", "http://www.google.com/test/with/dir/"},
     {"http://www.google.com/test?", "http://www.google.com/test/with/dir/"},
   };
-  for (size_t i = 0; i < base::size(true_cases); ++i) {
+  for (size_t i = 0; i < std::size(true_cases); ++i) {
     EXPECT_TRUE(HaveSameSchemeHostAndPort(GURL(true_cases[i].s1),
                                GURL(true_cases[i].s2)))
         << " for true_cases[" << i << "]";
@@ -79,7 +78,7 @@
     {"http://www.google.com/path", "http://www.google.com:137/path"},
     {"http://www.google.com/same/dir", "http://www.youtube.com/same/dir"},
   };
-  for (size_t i = 0; i < base::size(false_cases); ++i) {
+  for (size_t i = 0; i < std::size(false_cases); ++i) {
     EXPECT_FALSE(HaveSameSchemeHostAndPort(GURL(false_cases[i].s1),
                                 GURL(false_cases[i].s2)))
         << " for false_cases[" << i << "]";
@@ -99,7 +98,7 @@
     {"/test", "/test/with/dir/"},
     {"/test/", "/test/with/dir"},
   };
-  for (size_t i = 0; i < base::size(true_cases); ++i) {
+  for (size_t i = 0; i < std::size(true_cases); ++i) {
     EXPECT_TRUE(IsPathPrefix(true_cases[i].p1, true_cases[i].p2))
         << " for true_cases[" << i << "]";
   }
@@ -114,7 +113,7 @@
     {"/test", "/test-bed"},
     {"/test-", "/test"},
   };
-  for (size_t i = 0; i < base::size(false_cases); ++i) {
+  for (size_t i = 0; i < std::size(false_cases); ++i) {
     EXPECT_FALSE(IsPathPrefix(false_cases[i].p1, false_cases[i].p2))
         << " for false_cases[" << i << "]";
   }
diff --git a/components/history/core/browser/visit_annotations_database_unittest.cc b/components/history/core/browser/visit_annotations_database_unittest.cc
index 9a1c5c39..dac5f32 100644
--- a/components/history/core/browser/visit_annotations_database_unittest.cc
+++ b/components/history/core/browser/visit_annotations_database_unittest.cc
@@ -4,7 +4,6 @@
 
 #include "components/history/core/browser/visit_annotations_database.h"
 
-#include "base/cxx17_backports.h"
 #include "base/test/gtest_util.h"
 #include "base/time/time.h"
 #include "components/history/core/browser/history_types.h"
@@ -147,7 +146,7 @@
   AddContextAnnotationsForVisit(2, visit_context_annotations_list[1]);
   AddContextAnnotationsForVisit(3, visit_context_annotations_list[2]);
 
-  for (size_t i = 0; i < base::size(visit_context_annotations_list); ++i) {
+  for (size_t i = 0; i < std::size(visit_context_annotations_list); ++i) {
     SCOPED_TRACE(testing::Message() << "i: " << i);
     VisitContextAnnotations actual;
     VisitID visit_id = i + 1;  // VisitIDs are start at 1.
diff --git a/components/history/core/browser/visit_tracker_unittest.cc b/components/history/core/browser/visit_tracker_unittest.cc
index d493387d..3007924d 100644
--- a/components/history/core/browser/visit_tracker_unittest.cc
+++ b/components/history/core/browser/visit_tracker_unittest.cc
@@ -4,7 +4,6 @@
 
 #include "components/history/core/browser/visit_tracker.h"
 
-#include "base/cxx17_backports.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace history {
@@ -61,7 +60,7 @@
   };
 
   VisitTracker tracker;
-  RunTest(&tracker, test_simple, base::size(test_simple));
+  RunTest(&tracker, test_simple, std::size(test_simple));
 }
 
 // Test that referrer is properly computed when there are different frame
@@ -83,7 +82,7 @@
   };
 
   VisitTracker tracker;
-  RunTest(&tracker, test_frames, base::size(test_frames));
+  RunTest(&tracker, test_frames, std::size(test_frames));
 }
 
 // Test frame navigation to make sure that the referrer is properly computed
@@ -105,7 +104,7 @@
   };
 
   VisitTracker tracker;
-  RunTest(&tracker, test_processes, base::size(test_processes));
+  RunTest(&tracker, test_processes, std::size(test_processes));
 }
 
 // Test that processes get removed properly.
@@ -117,7 +116,7 @@
   };
 
   VisitTracker tracker;
-  RunTest(&tracker, part1, base::size(part1));
+  RunTest(&tracker, part1, std::size(part1));
 
   // Say that context has been invalidated.
   tracker.ClearCachedDataForContextID(reinterpret_cast<ContextID>(1));
@@ -127,7 +126,7 @@
   VisitToTest part2[] = {
       {1, 1, "http://images.google.com/", 2, "http://www.google.com/", 0},
   };
-  RunTest(&tracker, part2, base::size(part2));
+  RunTest(&tracker, part2, std::size(part2));
 }
 
 TEST(VisitTracker, RemoveVisitById) {
@@ -138,7 +137,7 @@
   };
 
   VisitTracker tracker;
-  RunTest(&tracker, test_simple, base::size(test_simple));
+  RunTest(&tracker, test_simple, std::size(test_simple));
 
   // Remove the first visit.
   const VisitToTest& removed = test_simple[0];
@@ -188,7 +187,7 @@
   };
 
   VisitTracker tracker;
-  RunTest(&tracker, test_simple, base::size(test_simple));
+  RunTest(&tracker, test_simple, std::size(test_simple));
   EXPECT_FALSE(tracker.IsEmpty());
   tracker.Clear();
   EXPECT_TRUE(tracker.IsEmpty());
diff --git a/components/history_clusters/core/history_clusters_db_tasks_unittest.cc b/components/history_clusters/core/history_clusters_db_tasks_unittest.cc
index a48de27..55bd57b 100644
--- a/components/history_clusters/core/history_clusters_db_tasks_unittest.cc
+++ b/components/history_clusters/core/history_clusters_db_tasks_unittest.cc
@@ -39,7 +39,7 @@
       },
   };
 
-  for (size_t i = 0; i < base::size(test_data); ++i) {
+  for (size_t i = 0; i < std::size(test_data); ++i) {
     SCOPED_TRACE(base::StringPrintf("Testing case i=%d", int(i)));
 
     auto& test_case = test_data[i];
diff --git a/components/history_clusters/core/history_clusters_util_unittest.cc b/components/history_clusters/core/history_clusters_util_unittest.cc
index 68e74a8..d03776b 100644
--- a/components/history_clusters/core/history_clusters_util_unittest.cc
+++ b/components/history_clusters/core/history_clusters_util_unittest.cc
@@ -86,7 +86,7 @@
       {"goog red", false, false},
   };
 
-  for (size_t i = 0; i < base::size(test_data); ++i) {
+  for (size_t i = 0; i < std::size(test_data); ++i) {
     SCOPED_TRACE(base::StringPrintf("Testing case i=%d, query=%s",
                                     static_cast<int>(i),
                                     test_data[i].query.c_str()));
diff --git a/components/history_clusters/core/on_device_clustering_backend_unittest.cc b/components/history_clusters/core/on_device_clustering_backend_unittest.cc
index 21698b3c..693b017 100644
--- a/components/history_clusters/core/on_device_clustering_backend_unittest.cc
+++ b/components/history_clusters/core/on_device_clustering_backend_unittest.cc
@@ -524,7 +524,7 @@
   void SetUp() override {
     // Set up a simple template URL service with a default search engine.
     template_url_service_ = std::make_unique<TemplateURLService>(
-        kTemplateURLData, base::size(kTemplateURLData));
+        kTemplateURLData, std::size(kTemplateURLData));
     TemplateURL* template_url = template_url_service_->GetTemplateURLForKeyword(
         kDefaultTemplateURLKeyword);
     template_url_service_->SetUserSelectedDefaultSearchProvider(template_url);
diff --git a/components/image_fetcher/ios/ios_image_data_fetcher_wrapper_unittest.mm b/components/image_fetcher/ios/ios_image_data_fetcher_wrapper_unittest.mm
index 1987778..4cccaf0d 100644
--- a/components/image_fetcher/ios/ios_image_data_fetcher_wrapper_unittest.mm
+++ b/components/image_fetcher/ios/ios_image_data_fetcher_wrapper_unittest.mm
@@ -8,7 +8,6 @@
 
 #include <memory>
 
-#include "base/cxx17_backports.h"
 #import "base/ios/ios_util.h"
 #include "base/memory/ref_counted.h"
 #include "base/test/task_environment.h"
@@ -179,7 +178,7 @@
   network::mojom::URLResponseHeadPtr head =
       network::mojom::URLResponseHead::New();
   head->headers = new net::HttpResponseHeaders(
-      std::string(kWEBPHeaderResponse, base::size(kWEBPHeaderResponse)));
+      std::string(kWEBPHeaderResponse, std::size(kWEBPHeaderResponse)));
   head->mime_type = "image/webp";
   network::URLLoaderCompletionStatus status;
   status.decoded_body_length = content.size();
@@ -215,7 +214,7 @@
   network::mojom::URLResponseHeadPtr head =
       network::mojom::URLResponseHead::New();
   head->headers = new net::HttpResponseHeaders(
-      std::string(kWEBPHeaderResponse, base::size(kWEBPHeaderResponse)));
+      std::string(kWEBPHeaderResponse, std::size(kWEBPHeaderResponse)));
   head->mime_type = "image/webp";
   network::URLLoaderCompletionStatus status;
   status.decoded_body_length = content.size();
diff --git a/components/image_fetcher/ios/webp_decoder_unittest.mm b/components/image_fetcher/ios/webp_decoder_unittest.mm
index 3a5774d..d12cce86 100644
--- a/components/image_fetcher/ios/webp_decoder_unittest.mm
+++ b/components/image_fetcher/ios/webp_decoder_unittest.mm
@@ -6,14 +6,12 @@
 
 #import <CoreGraphics/CoreGraphics.h>
 #import <Foundation/Foundation.h>
-
 #include <stddef.h>
 #include <stdint.h>
 
 #include <memory>
 
 #include "base/base_paths.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_path.h"
 #include "base/logging.h"
 #include "base/mac/scoped_cftyperef.h"
@@ -249,7 +247,7 @@
   EXPECT_CALL(*delegate_, OnFinishedDecoding(false)).Times(1);
   const char dummy_image[] = "(>'-')> <('-'<) ^('-')^ <('-'<) (>'-')>";
   NSData* data = [[NSData alloc] initWithBytes:dummy_image
-                                        length:base::size(dummy_image)];
+                                        length:std::size(dummy_image)];
   decoder_->OnDataReceived(data);
   EXPECT_EQ(0u, [delegate_->GetImage() length]);
 }
diff --git a/components/metrics/field_trials_provider_unittest.cc b/components/metrics/field_trials_provider_unittest.cc
index 00b2a1e..e7d934f 100644
--- a/components/metrics/field_trials_provider_unittest.cc
+++ b/components/metrics/field_trials_provider_unittest.cc
@@ -4,7 +4,6 @@
 
 #include "components/metrics/field_trials_provider.h"
 
-#include "base/cxx17_backports.h"
 #include "base/threading/platform_thread.h"
 #include "components/variations/active_field_trials.h"
 #include "components/variations/synthetic_trial_registry.h"
@@ -103,7 +102,7 @@
   provider.ProvideSystemProfileMetricsWithLogCreationTime(log_creation_time,
                                                           &proto);
 
-  EXPECT_EQ(base::size(kAllTrialIds),
+  EXPECT_EQ(std::size(kAllTrialIds),
             static_cast<size_t>(proto.field_trial_size()));
   CheckFieldTrialsInSystemProfile(proto, kAllTrialIds);
 }
@@ -115,7 +114,7 @@
   provider.ProvideSystemProfileMetricsWithLogCreationTime(base::TimeTicks(),
                                                           &proto);
 
-  EXPECT_EQ(base::size(kFieldTrialIds),
+  EXPECT_EQ(std::size(kFieldTrialIds),
             static_cast<size_t>(proto.field_trial_size()));
   CheckFieldTrialsInSystemProfile(proto, kFieldTrialIds);
 }
@@ -139,7 +138,7 @@
 
   provider.ProvideCurrentSessionData(&uma_log);
 
-  EXPECT_EQ(base::size(kAllTrialIds),
+  EXPECT_EQ(std::size(kAllTrialIds),
             static_cast<size_t>(uma_log.system_profile().field_trial_size()));
   CheckFieldTrialsInSystemProfile(uma_log.system_profile(), kAllTrialIds);
 }
diff --git a/components/metrics/file_metrics_provider.cc b/components/metrics/file_metrics_provider.cc
index 0112c8c..59b5bc90 100644
--- a/components/metrics/file_metrics_provider.cc
+++ b/components/metrics/file_metrics_provider.cc
@@ -9,7 +9,6 @@
 #include "base/bind.h"
 #include "base/command_line.h"
 #include "base/containers/flat_map.h"
-#include "base/cxx17_backports.h"
 #include "base/feature_list.h"
 #include "base/files/file.h"
 #include "base/files/file_enumerator.h"
@@ -212,7 +211,7 @@
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
 
   // Ensure that kSourceOptions has been filled for this type.
-  DCHECK_GT(base::size(kSourceOptions), static_cast<size_t>(params.type));
+  DCHECK_GT(std::size(kSourceOptions), static_cast<size_t>(params.type));
 
   std::unique_ptr<SourceInfo> source(new SourceInfo(params));
 
diff --git a/components/metrics/file_metrics_provider_unittest.cc b/components/metrics/file_metrics_provider_unittest.cc
index fb2a1742..6f9c54d 100644
--- a/components/metrics/file_metrics_provider_unittest.cc
+++ b/components/metrics/file_metrics_provider_unittest.cc
@@ -8,7 +8,6 @@
 
 #include "base/bind.h"
 #include "base/callback.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_util.h"
 #include "base/files/memory_mapped_file.h"
 #include "base/files/scoped_temp_dir.h"
@@ -371,7 +370,7 @@
   const FileMetricsProvider::FilterAction actions[] = {
       FileMetricsProvider::FILTER_TRY_LATER,
       FileMetricsProvider::FILTER_PROCESS_FILE};
-  SetFilterActions(&params, actions, base::size(actions));
+  SetFilterActions(&params, actions, std::size(actions));
   provider()->RegisterSource(params);
 
   // Processing the file should touch it but yield no results. File timestamp
@@ -410,7 +409,7 @@
       FileMetricsProvider::ASSOCIATE_CURRENT_RUN, kMetricsName);
   const FileMetricsProvider::FilterAction actions[] = {
       FileMetricsProvider::FILTER_SKIP_FILE};
-  SetFilterActions(&params, actions, base::size(actions));
+  SetFilterActions(&params, actions, std::size(actions));
   provider()->RegisterSource(params);
 
   // Processing the file should delete it.
@@ -481,7 +480,7 @@
   // Files could come out in the order: a1, c2, d4, b3. They are recognizeable
   // by the number of histograms contained within each.
   const uint32_t expect_order[] = {1, 2, 4, 3, 0};
-  for (size_t i = 0; i < base::size(expect_order); ++i) {
+  for (size_t i = 0; i < std::size(expect_order); ++i) {
     // Record embedded snapshots via snapshot-manager.
     OnDidCreateMetricsLog();
     RunTasks();
@@ -782,13 +781,13 @@
       FileMetricsProvider::FILTER_SKIP_FILE,      // d4
       FileMetricsProvider::FILTER_PROCESS_FILE,   // b3
       FileMetricsProvider::FILTER_PROCESS_FILE};  // c2 (again)
-  SetFilterActions(&params, actions, base::size(actions));
+  SetFilterActions(&params, actions, std::size(actions));
   provider()->RegisterSource(params);
 
   // Files could come out in the order: a1, b3, c2. They are recognizeable
   // by the number of histograms contained within each.
   const uint32_t expect_order[] = {1, 3, 2, 0};
-  for (size_t i = 0; i < base::size(expect_order); ++i) {
+  for (size_t i = 0; i < std::size(expect_order); ++i) {
     // Record embedded snapshots via snapshot-manager.
     OnDidCreateMetricsLog();
     RunTasks();
diff --git a/components/metrics/system_session_analyzer/system_session_analyzer_win.cc b/components/metrics/system_session_analyzer/system_session_analyzer_win.cc
index 2c782a6..7b41b7dc 100644
--- a/components/metrics/system_session_analyzer/system_session_analyzer_win.cc
+++ b/components/metrics/system_session_analyzer/system_session_analyzer_win.cc
@@ -4,7 +4,6 @@
 
 #include "components/metrics/system_session_analyzer/system_session_analyzer_win.h"
 
-#include "base/cxx17_backports.h"
 #include "base/logging.h"
 #include "base/time/time.h"
 
@@ -300,7 +299,7 @@
 
 SystemSessionAnalyzer::EvtHandle SystemSessionAnalyzer::CreateRenderContext() {
   LPCWSTR value_paths[] = {kEventIdPath, kEventTimePath};
-  const DWORD kValueCnt = base::size(value_paths);
+  const DWORD kValueCnt = std::size(value_paths);
 
   EVT_HANDLE context = nullptr;
   context =
diff --git a/components/mirroring/service/remoting_sender.cc b/components/mirroring/service/remoting_sender.cc
index 7338039..c07b042 100644
--- a/components/mirroring/service/remoting_sender.cc
+++ b/components/mirroring/service/remoting_sender.cc
@@ -105,7 +105,7 @@
   } else {
     next_frame_data_.resize(size);
     data_pipe_reader_->Read(
-        reinterpret_cast<uint8_t*>(base::data(next_frame_data_)), size,
+        reinterpret_cast<uint8_t*>(std::data(next_frame_data_)), size,
         base::BindOnce(&RemotingSender::OnFrameRead, base::Unretained(this)));
   }
 }
diff --git a/components/mirroring/service/session.cc b/components/mirroring/service/session.cc
index cf749ac..ccd24b4 100644
--- a/components/mirroring/service/session.cc
+++ b/components/mirroring/service/session.cc
@@ -129,7 +129,7 @@
 // Generates a string with cryptographically secure random bytes.
 std::string MakeRandomString(size_t length) {
   std::string result(length, ' ');
-  crypto::RandBytes(base::data(result), length);
+  crypto::RandBytes(std::data(result), length);
   return result;
 }
 
diff --git a/components/nacl/browser/nacl_process_host.cc b/components/nacl/browser/nacl_process_host.cc
index f6b5b42..00d3c9c 100644
--- a/components/nacl/browser/nacl_process_host.cc
+++ b/components/nacl/browser/nacl_process_host.cc
@@ -5,6 +5,7 @@
 #include "components/nacl/browser/nacl_process_host.h"
 
 #include <string.h>
+
 #include <algorithm>
 #include <memory>
 #include <string>
@@ -14,7 +15,6 @@
 #include "base/base_switches.h"
 #include "base/bind.h"
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "base/feature_list.h"
 #include "base/files/file_util.h"
 #include "base/location.h"
@@ -832,7 +832,7 @@
       switches::kV,
       switches::kVModule,
   };
-  for (size_t i = 0; i < base::size(flag_allowlist); ++i) {
+  for (size_t i = 0; i < std::size(flag_allowlist); ++i) {
     std::string value = cmdline->GetSwitchValueASCII(flag_allowlist[i]);
     if (!value.empty()) {
       args.switch_names.push_back(flag_allowlist[i]);
diff --git a/components/nacl/common/nacl_cmd_line.cc b/components/nacl/common/nacl_cmd_line.cc
index 0db43ef..a589ff8 100644
--- a/components/nacl/common/nacl_cmd_line.cc
+++ b/components/nacl/common/nacl_cmd_line.cc
@@ -4,7 +4,6 @@
 
 #include "base/base_switches.h"
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "build/build_config.h"
 #include "components/nacl/common/nacl_switches.h"
 #include "content/public/common/content_switches.h"
@@ -37,7 +36,7 @@
 #endif
   };
   cmd_line->CopySwitchesFrom(browser_command_line, kSwitchNames,
-                             base::size(kSwitchNames));
+                             std::size(kSwitchNames));
 }
 
 }  // namespace nacl
diff --git a/components/nacl/renderer/json_manifest.cc b/components/nacl/renderer/json_manifest.cc
index 5ce39f1..bd6f2c2 100644
--- a/components/nacl/renderer/json_manifest.cc
+++ b/components/nacl/renderer/json_manifest.cc
@@ -9,7 +9,6 @@
 
 #include <set>
 
-#include "base/cxx17_backports.h"
 #include "base/json/json_reader.h"
 #include "base/logging.h"
 #include "components/nacl/common/nacl_types.h"
@@ -165,7 +164,7 @@
         kUrlKey, kOptLevelKey,
     };
     url_spec_plus_optional = kPnaclUrlSpecPlusOptional;
-    url_spec_plus_optional_length = base::size(kPnaclUrlSpecPlusOptional);
+    url_spec_plus_optional_length = std::size(kPnaclUrlSpecPlusOptional);
   } else {
     // URL specifications must not contain "pnacl-translate" keys.
     // This prohibits NaCl clients from invoking PNaCl.
@@ -177,12 +176,12 @@
       return false;
     }
     url_spec_plus_optional = kManifestUrlSpecRequired;
-    url_spec_plus_optional_length = base::size(kManifestUrlSpecRequired);
+    url_spec_plus_optional_length = std::size(kManifestUrlSpecRequired);
   }
   if (!IsValidDictionary(*url_dict, container_key, parent_key,
                          url_spec_plus_optional, url_spec_plus_optional_length,
                          kManifestUrlSpecRequired,
-                         base::size(kManifestUrlSpecRequired), error_string)) {
+                         std::size(kManifestUrlSpecRequired), error_string)) {
     return false;
   }
   // Verify the correct types of the fields if they exist.
@@ -234,8 +233,8 @@
 
   if (!IsValidDictionary(
           *pnacl_dict, container_key, parent_key, kManifestPnaclSpecValid,
-          base::size(kManifestPnaclSpecValid), kManifestPnaclSpecRequired,
-          base::size(kManifestPnaclSpecRequired), error_string)) {
+          std::size(kManifestPnaclSpecValid), kManifestPnaclSpecRequired,
+          std::size(kManifestPnaclSpecRequired), error_string)) {
     return false;
   }
   // kPnaclTranslateKey checked to be required above.
@@ -274,7 +273,7 @@
       kPortableKey
     };
     isaProperties = kPnaclManifestISAProperties;
-    isaPropertiesLength = base::size(kPnaclManifestISAProperties);
+    isaPropertiesLength = std::size(kPnaclManifestISAProperties);
   } else {
     // The known values for NaCl ISA dictionaries in the manifest.
     static const char* kNaClManifestISAProperties[] = {
@@ -284,7 +283,7 @@
         // "pnacl-translate", which would cause the creation of a nexe.
         kPortableKey};
     isaProperties = kNaClManifestISAProperties;
-    isaPropertiesLength = base::size(kNaClManifestISAProperties);
+    isaPropertiesLength = std::size(kNaClManifestISAProperties);
   }
   // Check that entries in the dictionary are structurally correct.
   for (base::DictionaryValue::Iterator it(*dictionary); !it.IsAtEnd();
@@ -493,7 +492,7 @@
        it.Advance()) {
     const std::string& property_name = it.key();
     if (!FindMatchingProperty(property_name, kManifestTopLevelProperties,
-                              base::size(kManifestTopLevelProperties))) {
+                              std::size(kManifestTopLevelProperties))) {
       VLOG(1) << "JsonManifest::MatchesSchema: WARNING: unknown top-level "
               << "section '" << property_name << "' in manifest.";
     }
diff --git a/components/nacl/zygote/nacl_fork_delegate_linux.cc b/components/nacl/zygote/nacl_fork_delegate_linux.cc
index 29074ee..65d9da6 100644
--- a/components/nacl/zygote/nacl_fork_delegate_linux.cc
+++ b/components/nacl/zygote/nacl_fork_delegate_linux.cc
@@ -15,7 +15,6 @@
 
 #include "base/command_line.h"
 #include "base/cpu.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_path.h"
 #include "base/files/scoped_file.h"
 #include "base/logging.h"
@@ -220,7 +219,7 @@
       const base::CommandLine& current_cmd_line =
           *base::CommandLine::ForCurrentProcess();
       cmd_line.CopySwitchesFrom(current_cmd_line, kForwardSwitches,
-                                base::size(kForwardSwitches));
+                                std::size(kForwardSwitches));
 
       // The command line needs to be tightly controlled to use
       // |helper_bootstrap_exe|. So from now on, argv_to_launch should be
diff --git a/components/navigation_metrics/navigation_metrics.cc b/components/navigation_metrics/navigation_metrics.cc
index ddb3258..3d44987e 100644
--- a/components/navigation_metrics/navigation_metrics.cc
+++ b/components/navigation_metrics/navigation_metrics.cc
@@ -4,7 +4,6 @@
 
 #include "components/navigation_metrics/navigation_metrics.h"
 
-#include "base/cxx17_backports.h"
 #include "base/i18n/rtl.h"
 #include "base/metrics/histogram_macros.h"
 #include "base/metrics/user_metrics.h"
@@ -49,7 +48,7 @@
     "externalfile",
 };
 
-static_assert(base::size(kSchemeNames) == static_cast<int>(Scheme::COUNT),
+static_assert(std::size(kSchemeNames) == static_cast<int>(Scheme::COUNT),
               "kSchemeNames should have Scheme::COUNT elements");
 
 }  // namespace
diff --git a/components/network_session_configurator/common/network_switches.cc b/components/network_session_configurator/common/network_switches.cc
index 5bb1a3b..78aacfc 100644
--- a/components/network_session_configurator/common/network_switches.cc
+++ b/components/network_session_configurator/common/network_switches.cc
@@ -5,7 +5,6 @@
 #include "components/network_session_configurator/common/network_switches.h"
 
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 
 namespace switches {
 
@@ -33,7 +32,7 @@
   };
 
   dest_command_line->CopySwitchesFrom(src_command_line, kSwitchNames,
-                                      base::size(kSwitchNames));
+                                      std::size(kSwitchNames));
 }
 
 }  // namespace network_session_configurator
diff --git a/components/network_time/network_time_tracker_unittest.cc b/components/network_time/network_time_tracker_unittest.cc
index c4e0feb..58589118 100644
--- a/components/network_time/network_time_tracker_unittest.cc
+++ b/components/network_time/network_time_tracker_unittest.cc
@@ -10,7 +10,6 @@
 
 #include "base/bind.h"
 #include "base/compiler_specific.h"
-#include "base/cxx17_backports.h"
 #include "base/memory/raw_ptr.h"
 #include "base/run_loop.h"
 #include "base/test/metrics/histogram_tester.h"
@@ -855,7 +854,7 @@
   net::test_server::BasicHttpResponse* response =
       new net::test_server::BasicHttpResponse();
 
-  if (next_time_index_ >= base::size(kGoodTimeResponseBody)) {
+  if (next_time_index_ >= std::size(kGoodTimeResponseBody)) {
     response->set_code(net::HTTP_BAD_REQUEST);
     return std::unique_ptr<net::test_server::HttpResponse>(response);
   }
@@ -870,7 +869,7 @@
 }
 
 base::Time MultipleGoodTimeResponseHandler::GetTimeAtIndex(unsigned int i) {
-  if (i >= base::size(kGoodTimeResponseHandlerJsTime))
+  if (i >= std::size(kGoodTimeResponseHandlerJsTime))
     return base::Time();
   return base::Time::FromJsTime(kGoodTimeResponseHandlerJsTime[i]);
 }
diff --git a/components/no_state_prefetch/common/no_state_prefetch_final_status.cc b/components/no_state_prefetch/common/no_state_prefetch_final_status.cc
index bb4f8a6..22c5c22 100644
--- a/components/no_state_prefetch/common/no_state_prefetch_final_status.cc
+++ b/components/no_state_prefetch/common/no_state_prefetch_final_status.cc
@@ -5,7 +5,6 @@
 #include "components/no_state_prefetch/common/no_state_prefetch_final_status.h"
 
 #include "base/check_op.h"
-#include "base/cxx17_backports.h"
 
 namespace prerender {
 
@@ -78,14 +77,14 @@
     "Link Rel Next Not Allowed",
     "Max",
 };
-static_assert(base::size(kFinalStatusNames) == FINAL_STATUS_MAX + 1,
+static_assert(std::size(kFinalStatusNames) == FINAL_STATUS_MAX + 1,
               "status name count mismatch");
 
 }  // namespace
 
 const char* NameFromFinalStatus(FinalStatus final_status) {
   DCHECK_LT(static_cast<unsigned int>(final_status),
-            base::size(kFinalStatusNames));
+            std::size(kFinalStatusNames));
   return kFinalStatusNames[final_status];
 }
 
diff --git a/components/no_state_prefetch/common/prerender_origin.cc b/components/no_state_prefetch/common/prerender_origin.cc
index 60ede91..2d0cff0 100644
--- a/components/no_state_prefetch/common/prerender_origin.cc
+++ b/components/no_state_prefetch/common/prerender_origin.cc
@@ -4,7 +4,6 @@
 
 #include "components/no_state_prefetch/common/prerender_origin.h"
 
-#include "base/cxx17_backports.h"
 #include "base/metrics/histogram_macros.h"
 
 namespace prerender {
@@ -32,7 +31,7 @@
     "Speculation Rules Same Origin Prerender",
     "Max",
 };
-static_assert(base::size(kOriginNames) == ORIGIN_MAX + 1,
+static_assert(std::size(kOriginNames) == ORIGIN_MAX + 1,
               "prerender origin name count mismatch");
 
 }  // namespace
diff --git a/components/ntp_snippets/features.cc b/components/ntp_snippets/features.cc
index afd3971..5bb7995b 100644
--- a/components/ntp_snippets/features.cc
+++ b/components/ntp_snippets/features.cc
@@ -4,7 +4,6 @@
 
 #include "components/ntp_snippets/features.h"
 
-#include "base/cxx17_backports.h"
 #include "base/feature_list.h"
 #include "base/metrics/field_trial_params.h"
 #include "base/time/clock.h"
@@ -77,7 +76,7 @@
 std::vector<const base::Feature*> GetAllFeatures() {
   // Skip the last feature as it's a nullptr.
   return std::vector<const base::Feature*>(
-      kAllFeatures, kAllFeatures + base::size(kAllFeatures));
+      kAllFeatures, kAllFeatures + std::size(kAllFeatures));
 }
 
 // Default referrer for the content suggestions.
diff --git a/components/ntp_snippets/remote/remote_suggestions_scheduler_impl.cc b/components/ntp_snippets/remote/remote_suggestions_scheduler_impl.cc
index 407e398..8df20e92 100644
--- a/components/ntp_snippets/remote/remote_suggestions_scheduler_impl.cc
+++ b/components/ntp_snippets/remote/remote_suggestions_scheduler_impl.cc
@@ -11,7 +11,6 @@
 #include <vector>
 
 #include "base/bind.h"
-#include "base/cxx17_backports.h"
 #include "base/feature_list.h"
 #include "base/location.h"
 #include "base/metrics/field_trial_params.h"
@@ -112,24 +111,23 @@
 
 static_assert(
     static_cast<unsigned int>(FetchingInterval::COUNT) ==
-            base::size(kDefaultFetchingIntervalHoursRareNtpUser) &&
+            std::size(kDefaultFetchingIntervalHoursRareNtpUser) &&
         static_cast<unsigned int>(FetchingInterval::COUNT) ==
-            base::size(kDefaultFetchingIntervalHoursActiveNtpUser) &&
+            std::size(kDefaultFetchingIntervalHoursActiveNtpUser) &&
         static_cast<unsigned int>(FetchingInterval::COUNT) ==
-            base::size(
-                kDefaultFetchingIntervalHoursActiveSuggestionsConsumer) &&
+            std::size(kDefaultFetchingIntervalHoursActiveSuggestionsConsumer) &&
         static_cast<unsigned int>(FetchingInterval::COUNT) ==
-            base::size(kM58FetchingIntervalHoursRareNtpUser) &&
+            std::size(kM58FetchingIntervalHoursRareNtpUser) &&
         static_cast<unsigned int>(FetchingInterval::COUNT) ==
-            base::size(kM58FetchingIntervalHoursActiveNtpUser) &&
+            std::size(kM58FetchingIntervalHoursActiveNtpUser) &&
         static_cast<unsigned int>(FetchingInterval::COUNT) ==
-            base::size(kM58FetchingIntervalHoursActiveSuggestionsConsumer) &&
+            std::size(kM58FetchingIntervalHoursActiveSuggestionsConsumer) &&
         static_cast<unsigned int>(FetchingInterval::COUNT) ==
-            base::size(kFetchingIntervalParamNameRareNtpUser) &&
+            std::size(kFetchingIntervalParamNameRareNtpUser) &&
         static_cast<unsigned int>(FetchingInterval::COUNT) ==
-            base::size(kFetchingIntervalParamNameActiveNtpUser) &&
+            std::size(kFetchingIntervalParamNameActiveNtpUser) &&
         static_cast<unsigned int>(FetchingInterval::COUNT) ==
-            base::size(kFetchingIntervalParamNameActiveSuggestionsConsumer),
+            std::size(kFetchingIntervalParamNameActiveSuggestionsConsumer),
     "Fill in all the info for fetching intervals.");
 
 // For backward compatibility "ntp_opened" value is kept and denotes the
@@ -154,7 +152,7 @@
     UserClassifier::UserClass user_class) {
   DCHECK(interval != FetchingInterval::COUNT);
   const unsigned int index = static_cast<unsigned int>(interval);
-  DCHECK(index < base::size(kDefaultFetchingIntervalHoursRareNtpUser));
+  DCHECK(index < std::size(kDefaultFetchingIntervalHoursRareNtpUser));
 
   bool emulateM58 = base::FeatureList::IsEnabled(
       kRemoteSuggestionsEmulateM58FetchingSchedule);
@@ -857,7 +855,7 @@
 std::set<RemoteSuggestionsSchedulerImpl::TriggerType>
 RemoteSuggestionsSchedulerImpl::GetEnabledTriggerTypes() {
   static_assert(static_cast<unsigned int>(TriggerType::COUNT) ==
-                    base::size(kTriggerTypeNames),
+                    std::size(kTriggerTypeNames),
                 "Fill in names for trigger types.");
 
   std::string param_value = base::GetFieldTrialParamValueByFeature(
diff --git a/components/ntp_snippets/user_classifier.cc b/components/ntp_snippets/user_classifier.cc
index 78e590e6..b8c2c59 100644
--- a/components/ntp_snippets/user_classifier.cc
+++ b/components/ntp_snippets/user_classifier.cc
@@ -84,15 +84,15 @@
     "user_classifier_default_interval_suggestions_shown",
     "user_classifier_default_interval_suggestions_used"};
 
-static_assert(base::size(kMetrics) ==
+static_assert(std::size(kMetrics) ==
                       static_cast<int>(UserClassifier::Metric::COUNT) &&
-                  base::size(kMetricKeys) ==
+                  std::size(kMetricKeys) ==
                       static_cast<int>(UserClassifier::Metric::COUNT) &&
-                  base::size(kLastTimeKeys) ==
+                  std::size(kLastTimeKeys) ==
                       static_cast<int>(UserClassifier::Metric::COUNT) &&
-                  base::size(kInitialHoursBetweenEvents) ==
+                  std::size(kInitialHoursBetweenEvents) ==
                       static_cast<int>(UserClassifier::Metric::COUNT) &&
-                  base::size(kInitialHoursBetweenEventsParams) ==
+                  std::size(kInitialHoursBetweenEventsParams) ==
                       static_cast<int>(UserClassifier::Metric::COUNT),
               "Fill in info for all metrics.");
 
diff --git a/components/omnibox/browser/autocomplete_input.cc b/components/omnibox/browser/autocomplete_input.cc
index 3e31d023..bf123c4 100644
--- a/components/omnibox/browser/autocomplete_input.cc
+++ b/components/omnibox/browser/autocomplete_input.cc
@@ -6,7 +6,6 @@
 
 #include <vector>
 
-#include "base/cxx17_backports.h"
 #include "base/logging.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_split.h"
@@ -82,7 +81,7 @@
       &parts->username, &parts->password, &parts->host, &parts->port,
       &parts->path,     &parts->query,    &parts->ref,
   };
-  for (size_t i = 0; i < base::size(components); ++i) {
+  for (size_t i = 0; i < std::size(components); ++i) {
     url_formatter::OffsetComponent(offset, components[i]);
   }
 }
diff --git a/components/omnibox/browser/autocomplete_input_unittest.cc b/components/omnibox/browser/autocomplete_input_unittest.cc
index b57f6be..c8ff7e24 100644
--- a/components/omnibox/browser/autocomplete_input_unittest.cc
+++ b/components/omnibox/browser/autocomplete_input_unittest.cc
@@ -8,7 +8,6 @@
 
 #include <string>
 
-#include "base/cxx17_backports.h"
 #include "base/logging.h"
 #include "base/strings/utf_string_conversions.h"
 #include "build/build_config.h"
@@ -216,7 +215,7 @@
     {u"test:80/", metrics::OmniboxInputType::URL},
   };
 
-  for (size_t i = 0; i < base::size(input_cases); ++i) {
+  for (size_t i = 0; i < std::size(input_cases); ++i) {
     SCOPED_TRACE(input_cases[i].input);
     AutocompleteInput input(input_cases[i].input,
                             metrics::OmniboxEventProto::OTHER,
@@ -256,7 +255,7 @@
       {u"foo bar", metrics::OmniboxInputType::QUERY, std::string()},
   };
 
-  for (size_t i = 0; i < base::size(input_cases); ++i) {
+  for (size_t i = 0; i < std::size(input_cases); ++i) {
     SCOPED_TRACE(input_cases[i].input);
     AutocompleteInput input(input_cases[i].input, std::u16string::npos, "com",
                             metrics::OmniboxEventProto::OTHER,
@@ -309,7 +308,7 @@
       {u"blob:garbage", kInvalidComponent, Component(5, 7)},
   };
 
-  for (size_t i = 0; i < base::size(input_cases); ++i) {
+  for (size_t i = 0; i < std::size(input_cases); ++i) {
     SCOPED_TRACE(input_cases[i].input);
     Component scheme, host;
     AutocompleteInput::ParseForEmphasizeComponents(input_cases[i].input,
@@ -350,7 +349,7 @@
       {u"  ?  foo bar", 6, u"?  foo bar", 4},
   };
 
-  for (size_t i = 0; i < base::size(input_cases); ++i) {
+  for (size_t i = 0; i < std::size(input_cases); ++i) {
     SCOPED_TRACE(input_cases[i].input);
     AutocompleteInput input(
         input_cases[i].input, input_cases[i].cursor_position,
diff --git a/components/omnibox/browser/autocomplete_match.cc b/components/omnibox/browser/autocomplete_match.cc
index e255d11..9772e4bd 100644
--- a/components/omnibox/browser/autocomplete_match.cc
+++ b/components/omnibox/browser/autocomplete_match.cc
@@ -7,7 +7,6 @@
 #include <algorithm>
 
 #include "base/check_op.h"
-#include "base/cxx17_backports.h"
 #include "base/debug/crash_logging.h"
 #include "base/feature_list.h"
 #include "base/i18n/case_conversion.h"
@@ -130,7 +129,7 @@
     "drive_image", "drive_pdf",  "drive_video", "drive_folder", "drive_other"};
 
 static_assert(
-    base::size(AutocompleteMatch::kDocumentTypeStrings) ==
+    std::size(AutocompleteMatch::kDocumentTypeStrings) ==
         static_cast<int>(AutocompleteMatch::DocumentType::DOCUMENT_TYPE_SIZE),
     "Sizes of AutocompleteMatch::kDocumentTypeStrings and "
     "AutocompleteMatch::DocumentType don't match.");
@@ -814,7 +813,7 @@
 
   // Remove the www. prefix from the host.
   static const char prefix[] = "www.";
-  static const size_t prefix_len = base::size(prefix) - 1;
+  static const size_t prefix_len = std::size(prefix) - 1;
   std::string host = stripped_destination_url.host();
   if (host.compare(0, prefix_len, prefix) == 0 && host.length() > prefix_len) {
     replacements.SetHostStr(base::StringPiece(host).substr(prefix_len));
diff --git a/components/omnibox/browser/autocomplete_match_type.cc b/components/omnibox/browser/autocomplete_match_type.cc
index b30e39a..07d81289 100644
--- a/components/omnibox/browser/autocomplete_match_type.cc
+++ b/components/omnibox/browser/autocomplete_match_type.cc
@@ -5,7 +5,6 @@
 #include "components/omnibox/browser/autocomplete_match_type.h"
 
 #include "base/check.h"
-#include "base/cxx17_backports.h"
 #include "base/notreached.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/utf_string_conversions.h"
@@ -53,7 +52,7 @@
     "open-tab",
   };
   // clang-format on
-  static_assert(base::size(strings) == AutocompleteMatchType::NUM_TYPES,
+  static_assert(std::size(strings) == AutocompleteMatchType::NUM_TYPES,
                 "strings array must have NUM_TYPES elements");
   return strings[type];
 }
@@ -141,7 +140,7 @@
       0,                                     // TILE_NAVSUGGEST
       0,                                     // OPEN_TAB
   };
-  static_assert(base::size(message_ids) == AutocompleteMatchType::NUM_TYPES,
+  static_assert(std::size(message_ids) == AutocompleteMatchType::NUM_TYPES,
                 "message_ids must have NUM_TYPES elements");
 
   // Document provider should use its full display text; description has
diff --git a/components/omnibox/browser/autocomplete_match_unittest.cc b/components/omnibox/browser/autocomplete_match_unittest.cc
index 45e9ad1..e38d1a1 100644
--- a/components/omnibox/browser/autocomplete_match_unittest.cc
+++ b/components/omnibox/browser/autocomplete_match_unittest.cc
@@ -9,7 +9,6 @@
 #include <utility>
 
 #include "autocomplete_match.h"
-#include "base/cxx17_backports.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/scoped_feature_list.h"
 #include "components/omnibox/browser/test_scheme_classifier.h"
@@ -76,7 +75,7 @@
   AutocompleteMatch m2(nullptr, 0, false,
                        AutocompleteMatchType::URL_WHAT_YOU_TYPED);
 
-  for (size_t i = 0; i < base::size(cases); ++i) {
+  for (size_t i = 0; i < std::size(cases); ++i) {
     m1.relevance = cases[i].r1;
     m2.relevance = cases[i].r2;
     EXPECT_EQ(cases[i].expected_result,
@@ -400,7 +399,7 @@
     { L"http://www./", "http://www./", "http://google.com/", false },
   };
 
-  for (size_t i = 0; i < base::size(cases); ++i) {
+  for (size_t i = 0; i < std::size(cases); ++i) {
     CheckDuplicateCase(cases[i]);
   }
 }
@@ -420,7 +419,7 @@
        "https://drive.google.com/open?id=another-doc-id", false},
   };
 
-  for (size_t i = 0; i < base::size(cases); ++i) {
+  for (size_t i = 0; i < std::size(cases); ++i) {
     CheckDuplicateCase(cases[i]);
   }
 }
diff --git a/components/omnibox/browser/autocomplete_provider_unittest.cc b/components/omnibox/browser/autocomplete_provider_unittest.cc
index 2b10b08..29f24082 100644
--- a/components/omnibox/browser/autocomplete_provider_unittest.cc
+++ b/components/omnibox/browser/autocomplete_provider_unittest.cc
@@ -11,7 +11,6 @@
 
 #include "base/bind.h"
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "base/location.h"
 #include "base/memory/ptr_util.h"
 #include "base/memory/raw_ptr.h"
@@ -790,7 +789,7 @@
         {u"foo.com", std::u16string(), std::u16string()}};
 
     SCOPED_TRACE("Duplicate url");
-    RunKeywordTest(u"fo", duplicate_url, base::size(duplicate_url));
+    RunKeywordTest(u"fo", duplicate_url, std::size(duplicate_url));
   }
 
   {
@@ -799,7 +798,7 @@
         {u"foo.com", std::u16string(), std::u16string()}};
 
     SCOPED_TRACE("Duplicate url with keyword match");
-    RunKeywordTest(u"fo", keyword_match, base::size(keyword_match));
+    RunKeywordTest(u"fo", keyword_match, std::size(keyword_match));
   }
 
   {
@@ -811,7 +810,7 @@
     };
 
     SCOPED_TRACE("Duplicate url with multiple keywords");
-    RunKeywordTest(u"fo", multiple_keyword, base::size(multiple_keyword));
+    RunKeywordTest(u"fo", multiple_keyword, std::size(multiple_keyword));
   }
 }
 
@@ -825,7 +824,7 @@
         {u"foo.com", std::u16string(), u"foo.com"}};
 
     SCOPED_TRACE("keyword match as usual");
-    RunKeywordTest(u"fo", keyword_match, base::size(keyword_match));
+    RunKeywordTest(u"fo", keyword_match, std::size(keyword_match));
   }
 
   // The same result set with an input of "f" (versus "fo") should get
@@ -836,7 +835,7 @@
     KeywordTestData keyword_match[] = {{u"foo.com", std::u16string(), u"f"}};
 
     SCOPED_TRACE("keyword exact match");
-    RunKeywordTest(u"f", keyword_match, base::size(keyword_match));
+    RunKeywordTest(u"f", keyword_match, std::size(keyword_match));
   }
 }
 
@@ -939,7 +938,7 @@
     AssistedQueryStatsTestData test_data[] = {
         {AutocompleteMatchType::SEARCH_WHAT_YOU_TYPED, "chrome..69i57"}};
     SCOPED_TRACE("One match");
-    RunAssistedQueryStatsTest(test_data, base::size(test_data));
+    RunAssistedQueryStatsTest(test_data, std::size(test_data));
   }
 
   {
@@ -948,7 +947,7 @@
          "chrome.0.46i131",
          {131}}};
     SCOPED_TRACE("One match with provider populated subtypes");
-    RunAssistedQueryStatsTest(test_data, base::size(test_data));
+    RunAssistedQueryStatsTest(test_data, std::size(test_data));
   }
 
   {
@@ -978,7 +977,7 @@
          {27, 31}},
     };
     SCOPED_TRACE("Complex set of matches with repetitive subtypes");
-    RunAssistedQueryStatsTest(test_data, base::size(test_data));
+    RunAssistedQueryStatsTest(test_data, std::size(test_data));
   }
 
   {
@@ -1001,7 +1000,7 @@
          "chrome.7.69i57j69i58j5l2j0l3j69i59"},
     };
     SCOPED_TRACE("Multiple matches");
-    RunAssistedQueryStatsTest(test_data, base::size(test_data));
+    RunAssistedQueryStatsTest(test_data, std::size(test_data));
   }
 }
 
diff --git a/components/omnibox/browser/autocomplete_result_unittest.cc b/components/omnibox/browser/autocomplete_result_unittest.cc
index 385bc4cf..1f0b547 100644
--- a/components/omnibox/browser/autocomplete_result_unittest.cc
+++ b/components/omnibox/browser/autocomplete_result_unittest.cc
@@ -10,7 +10,6 @@
 #include <string>
 #include <vector>
 
-#include "base/cxx17_backports.h"
 #include "base/memory/raw_ptr.h"
 #include "base/metrics/field_trial.h"
 #include "base/metrics/field_trial_params.h"
@@ -433,9 +432,9 @@
     { 1, 1, 399,  true },
   };
 
-  ASSERT_NO_FATAL_FAILURE(RunTransferOldMatchesTest(
-      last, base::size(last), current, base::size(current), result,
-      base::size(result)));
+  ASSERT_NO_FATAL_FAILURE(RunTransferOldMatchesTest(last, std::size(last),
+                                                    current, std::size(current),
+                                                    result, std::size(result)));
 }
 
 // Tests that if the new results have a lower max relevance score than last,
@@ -459,9 +458,9 @@
     { 2, 1, 899,  true },
   };
 
-  ASSERT_NO_FATAL_FAILURE(RunTransferOldMatchesTest(
-      last, base::size(last), current, base::size(current), result,
-      base::size(result)));
+  ASSERT_NO_FATAL_FAILURE(RunTransferOldMatchesTest(last, std::size(last),
+                                                    current, std::size(current),
+                                                    result, std::size(result)));
 }
 
 // Tests |TransferOldMatches()| with an |AutocompleteInput| with
@@ -504,8 +503,8 @@
     // clang-format on
 
     ASSERT_NO_FATAL_FAILURE(RunTransferOldMatchesTest(
-        last, base::size(last), current, base::size(current), result,
-        base::size(result), input));
+        last, std::size(last), current, std::size(current), result,
+        std::size(result), input));
   }
 
   {
@@ -534,8 +533,8 @@
     // clang-format on
 
     ASSERT_NO_FATAL_FAILURE(RunTransferOldMatchesTest(
-        last, base::size(last), current, base::size(current), result,
-        base::size(result), input));
+        last, std::size(last), current, std::size(current), result,
+        std::size(result), input));
   }
 
   {
@@ -561,8 +560,8 @@
     // clang-format on
 
     ASSERT_NO_FATAL_FAILURE(RunTransferOldMatchesTest(
-        last, base::size(last), current, base::size(current), result,
-        base::size(result), input));
+        last, std::size(last), current, std::size(current), result,
+        std::size(result), input));
   }
 
   {
@@ -593,8 +592,8 @@
     // clang-format on
 
     ASSERT_NO_FATAL_FAILURE(RunTransferOldMatchesTest(
-        last, base::size(last), current, base::size(current), result,
-        base::size(result), input));
+        last, std::size(last), current, std::size(current), result,
+        std::size(result), input));
   }
 }
 
@@ -622,9 +621,9 @@
     { 4, 1, 499,  false  },
   };
 
-  ASSERT_NO_FATAL_FAILURE(RunTransferOldMatchesTest(
-      last, base::size(last), current, base::size(current), result,
-      base::size(result)));
+  ASSERT_NO_FATAL_FAILURE(RunTransferOldMatchesTest(last, std::size(last),
+                                                    current, std::size(current),
+                                                    result, std::size(result)));
 }
 
 // Tests that matches are copied correctly from two distinct providers when
@@ -651,9 +650,9 @@
     { 7, 1, 500,  true  },
   };
 
-  ASSERT_NO_FATAL_FAILURE(RunTransferOldMatchesTest(
-      last, base::size(last), current, base::size(current), result,
-      base::size(result)));
+  ASSERT_NO_FATAL_FAILURE(RunTransferOldMatchesTest(last, std::size(last),
+                                                    current, std::size(current),
+                                                    result, std::size(result)));
 }
 
 // Tests that transferred matches do not include the specialized match types.
@@ -671,9 +670,9 @@
       {2, 2, 500, true},
   };
 
-  ASSERT_NO_FATAL_FAILURE(RunTransferOldMatchesTest(
-      last, base::size(last), current, base::size(current), result,
-      base::size(result)));
+  ASSERT_NO_FATAL_FAILURE(RunTransferOldMatchesTest(last, std::size(last),
+                                                    current, std::size(current),
+                                                    result, std::size(result)));
 }
 
 // Tests that matches with empty destination URLs aren't treated as duplicates
@@ -688,7 +687,7 @@
   };
 
   ACMatches matches;
-  PopulateAutocompleteMatches(data, base::size(data), &matches);
+  PopulateAutocompleteMatches(data, std::size(data), &matches);
   matches[1].destination_url = GURL();
   matches[3].destination_url = GURL();
   matches[4].destination_url = GURL();
@@ -728,7 +727,7 @@
   // clang-format on
 
   ACMatches matches;
-  PopulateAutocompleteMatches(data, base::size(data), &matches);
+  PopulateAutocompleteMatches(data, std::size(data), &matches);
   // These will get sorted up, but still removed.
   matches[3].type = AutocompleteMatchType::SEARCH_SUGGEST_TAIL;
   matches[4].type = AutocompleteMatchType::SEARCH_SUGGEST_TAIL;
@@ -760,7 +759,7 @@
   // clang-format on
 
   ACMatches matches;
-  PopulateAutocompleteMatches(data, base::size(data), &matches);
+  PopulateAutocompleteMatches(data, std::size(data), &matches);
   // Make sure that even bad tail suggestions, if the only default match,
   // are kept.
   matches[0].type = AutocompleteMatchType::SEARCH_SUGGEST_TAIL;
@@ -794,7 +793,7 @@
   // clang-format on
 
   ACMatches matches;
-  PopulateAutocompleteMatches(data, base::size(data), &matches);
+  PopulateAutocompleteMatches(data, std::size(data), &matches);
   // Make sure that even a bad non-tail default suggestion is kept.
   for (size_t i = 1; i < 5; ++i)
     matches[i].type = AutocompleteMatchType::SEARCH_SUGGEST_TAIL;
@@ -829,8 +828,8 @@
   // clang-format on
 
   ACMatches matches;
-  PopulateAutocompleteMatches(data, base::size(data), &matches);
-  for (size_t i = 2; i < base::size(data); ++i)
+  PopulateAutocompleteMatches(data, std::size(data), &matches);
+  for (size_t i = 2; i < std::size(data); ++i)
     matches[i].type = AutocompleteMatchType::SEARCH_SUGGEST_TAIL;
 
   AutocompleteInput input(u"a", metrics::OmniboxEventProto::OTHER,
@@ -862,8 +861,8 @@
   // clang-format on
 
   ACMatches matches;
-  PopulateAutocompleteMatches(data, base::size(data), &matches);
-  for (size_t i = 1; i < base::size(data); ++i)
+  PopulateAutocompleteMatches(data, std::size(data), &matches);
+  for (size_t i = 1; i < std::size(data); ++i)
     matches[i].type = AutocompleteMatchType::SEARCH_SUGGEST_TAIL;
 
   AutocompleteInput input(u"a", metrics::OmniboxEventProto::OTHER,
@@ -898,7 +897,7 @@
   // clang-format on
 
   ACMatches matches;
-  PopulateAutocompleteMatches(data, base::size(data), &matches);
+  PopulateAutocompleteMatches(data, std::size(data), &matches);
   // These will not be removed.
   for (size_t i = 1; i < 5; ++i)
     matches[i].type = AutocompleteMatchType::SEARCH_SUGGEST_TAIL;
@@ -927,7 +926,7 @@
   // clang-format on
 
   ACMatches matches;
-  PopulateAutocompleteMatches(data, base::size(data), &matches);
+  PopulateAutocompleteMatches(data, std::size(data), &matches);
 
   AutocompleteInput input(std::u16string(), metrics::OmniboxEventProto::OTHER,
                           TestSchemeClassifier());
@@ -960,7 +959,7 @@
   };
 
   ACMatches matches;
-  PopulateAutocompleteMatches(data, base::size(data), &matches);
+  PopulateAutocompleteMatches(data, std::size(data), &matches);
   matches[0].destination_url = GURL("http://www.foo.com/s?q=foo");
   matches[1].destination_url = GURL("http://www.foo.com/s?q=foo2");
   matches[2].destination_url = GURL("http://www.foo.com/s?q=foo&oq=f");
@@ -1009,7 +1008,7 @@
   };
 
   ACMatches matches;
-  PopulateAutocompleteMatches(data, base::size(data), &matches);
+  PopulateAutocompleteMatches(data, std::size(data), &matches);
   matches[0].destination_url = GURL("http://www.foo.com/s?q=foo");
   matches[1].destination_url = GURL("http://www.foo.com/s?q=foo2");
   matches[2].destination_url = GURL("http://www.foo.com/s?q=foo&oq=f");
@@ -1053,7 +1052,7 @@
     { "http://history-title/", AutocompleteMatchType::HISTORY_TITLE },
     { "http://search-history/", AutocompleteMatchType::SEARCH_HISTORY },
   };
-  PopulateAutocompleteMatchesFromTestData(data, base::size(data), &matches);
+  PopulateAutocompleteMatchesFromTestData(data, std::size(data), &matches);
 
   // Demote the search history match relevance score.
   matches.back().relevance = 500;
@@ -1080,8 +1079,8 @@
   // the top match.
   size_t expected_order[] = {0, 1, 3};
 
-  ASSERT_EQ(base::size(expected_order), result.size());
-  for (size_t i = 0; i < base::size(expected_order); ++i) {
+  ASSERT_EQ(std::size(expected_order), result.size());
+  for (size_t i = 0; i < std::size(expected_order); ++i) {
     EXPECT_EQ(data[expected_order[i]].destination_url,
               result.match_at(i)->destination_url.spec());
   }
@@ -1104,13 +1103,13 @@
                           TestSchemeClassifier());
 
   ACMatches last_matches;
-  PopulateAutocompleteMatches(last, base::size(last), &last_matches);
+  PopulateAutocompleteMatches(last, std::size(last), &last_matches);
   AutocompleteResult last_result;
   last_result.AppendMatches(input, last_matches);
   last_result.SortAndCull(input, template_url_service_.get());
 
   ACMatches current_matches;
-  PopulateAutocompleteMatches(current, base::size(current), &current_matches);
+  PopulateAutocompleteMatches(current, std::size(current), &current_matches);
   AutocompleteResult current_result;
   current_result.AppendMatches(input, current_matches);
 
@@ -1124,7 +1123,7 @@
       {0, 1, 400, true},
       {1, 1, 500, true},
   };
-  AssertResultMatches(current_result, result, base::size(result));
+  AssertResultMatches(current_result, result, std::size(result));
 }
 
 // Verify metrics logged for asynchronous result updates.
@@ -1147,7 +1146,7 @@
                           TestSchemeClassifier());
 
   ACMatches last_matches;
-  PopulateAutocompleteMatches(last, base::size(last), &last_matches);
+  PopulateAutocompleteMatches(last, std::size(last), &last_matches);
   AutocompleteResult last_result;
   last_result.AppendMatches(input, last_matches);
   for (auto& match : last_result)
@@ -1155,7 +1154,7 @@
   const auto last_comparators = last_result.GetMatchDedupComparators();
 
   ACMatches current_matches;
-  PopulateAutocompleteMatches(current, base::size(current), &current_matches);
+  PopulateAutocompleteMatches(current, std::size(current), &current_matches);
   AutocompleteResult current_result;
   current_result.AppendMatches(input, current_matches);
   for (auto& match : current_result)
@@ -1193,7 +1192,7 @@
   // clang-format on
 
   ACMatches matches;
-  PopulateAutocompleteMatches(data, base::size(data), &matches);
+  PopulateAutocompleteMatches(data, std::size(data), &matches);
   matches[0].type = AutocompleteMatchType::SEARCH_SUGGEST;
   matches[1].type = AutocompleteMatchType::SEARCH_SUGGEST;
   matches[2].type = AutocompleteMatchType::SEARCH_SUGGEST;
@@ -1299,7 +1298,7 @@
        AutocompleteMatchType::SEARCH_WHAT_YOU_TYPED},
       {"http://search-history/", AutocompleteMatchType::SEARCH_HISTORY},
   };
-  PopulateAutocompleteMatchesFromTestData(data, base::size(data), &matches);
+  PopulateAutocompleteMatchesFromTestData(data, std::size(data), &matches);
 
   // Make history-title and search-history the only default matches, so that
   // they compete.
@@ -1376,7 +1375,7 @@
     // is already a legal default match (which is the default from
     // PopulateAutocompleteMatches()).
     ACMatches matches;
-    PopulateAutocompleteMatches(data, base::size(data), &matches);
+    PopulateAutocompleteMatches(data, std::size(data), &matches);
     AutocompleteInput input(u"a", metrics::OmniboxEventProto::HOME_PAGE,
                             test_scheme_classifier);
     AutocompleteResult result;
@@ -1388,7 +1387,7 @@
   {
     // Check that reorder swaps up a result appropriately.
     ACMatches matches;
-    PopulateAutocompleteMatches(data, base::size(data), &matches);
+    PopulateAutocompleteMatches(data, std::size(data), &matches);
     matches[0].allowed_to_be_default_match = false;
     matches[1].allowed_to_be_default_match = false;
     AutocompleteInput input(u"a", metrics::OmniboxEventProto::HOME_PAGE,
@@ -1417,7 +1416,7 @@
   // Check that reorder swaps up a result, and promotes relevance,
   // appropriately.
   ACMatches matches;
-  PopulateAutocompleteMatches(data, base::size(data), &matches);
+  PopulateAutocompleteMatches(data, std::size(data), &matches);
   AutocompleteInput input(u"a", metrics::OmniboxEventProto::HOME_PAGE,
                           test_scheme_classifier);
   AutocompleteResult result;
@@ -1449,7 +1448,7 @@
   // Check that reorder swaps up a result, and promotes relevance,
   // even for a default match that isn't the best.
   ACMatches matches;
-  PopulateAutocompleteMatches(data, base::size(data), &matches);
+  PopulateAutocompleteMatches(data, std::size(data), &matches);
   AutocompleteInput input(u"a", metrics::OmniboxEventProto::HOME_PAGE,
                           test_scheme_classifier);
   AutocompleteResult result;
@@ -1642,7 +1641,7 @@
   };
 
   ACMatches matches;
-  PopulateAutocompleteMatches(data, base::size(data), &matches);
+  PopulateAutocompleteMatches(data, std::size(data), &matches);
   // Note that 0, 2 and 3 will compare equal after stripping.
   matches[0].destination_url = GURL("http://www.foo.com/s?q=foo");
   matches[1].destination_url = GURL("http://www.foo.com/s?q=foo2");
@@ -1686,7 +1685,7 @@
       {6, 3, 1100, false, {}, AutocompleteMatchType::BOOKMARK_TITLE},
   };
   ACMatches matches;
-  PopulateAutocompleteMatches(data, base::size(data), &matches);
+  PopulateAutocompleteMatches(data, std::size(data), &matches);
 
   AutocompleteInput input(u"a", metrics::OmniboxEventProto::OTHER,
                           TestSchemeClassifier());
@@ -1727,7 +1726,7 @@
       {6, 3, 1100, false, {}, AutocompleteMatchType::BOOKMARK_TITLE},
   };
   ACMatches matches;
-  PopulateAutocompleteMatches(data, base::size(data), &matches);
+  PopulateAutocompleteMatches(data, std::size(data), &matches);
 
   AutocompleteInput input(u"a", metrics::OmniboxEventProto::OTHER,
                           TestSchemeClassifier());
@@ -1776,7 +1775,7 @@
   };
 
   ACMatches matches;
-  PopulateAutocompleteMatches(data, base::size(data), &matches);
+  PopulateAutocompleteMatches(data, std::size(data), &matches);
 
   AutocompleteInput input(u"a", metrics::OmniboxEventProto::OTHER,
                           TestSchemeClassifier());
@@ -1828,7 +1827,7 @@
         {"http://clipboard-url/", AutocompleteMatchType::CLIPBOARD_URL},
         {"http://search-suggest/", AutocompleteMatchType::SEARCH_SUGGEST},
     };
-    PopulateAutocompleteMatchesFromTestData(data, base::size(data), &matches);
+    PopulateAutocompleteMatchesFromTestData(data, std::size(data), &matches);
 
     AutocompleteInput input(u"a", metrics::OmniboxEventProto::OTHER,
                             TestSchemeClassifier());
@@ -1866,7 +1865,7 @@
         {"http://clipboard-url/", AutocompleteMatchType::CLIPBOARD_URL},
         {"http://bookmark-title/", AutocompleteMatchType::BOOKMARK_TITLE},
     };
-    PopulateAutocompleteMatchesFromTestData(data, base::size(data), &matches);
+    PopulateAutocompleteMatchesFromTestData(data, std::size(data), &matches);
 
     AutocompleteInput input(u"a", metrics::OmniboxEventProto::OTHER,
                             TestSchemeClassifier());
@@ -1942,7 +1941,7 @@
   AutocompleteResult result;
   result.AppendMatches(AutocompleteInput(), matches);
   result.SetTailSuggestContentPrefixes();
-  for (size_t i = 0; i < base::size(cases); ++i) {
+  for (size_t i = 0; i < std::size(cases); ++i) {
     EXPECT_EQ(result.match_at(i)->contents,
               base::UTF8ToUTF16(cases[i].after_contents));
     EXPECT_TRUE(EqualClassifications(result.match_at(i)->contents_class,
@@ -1950,7 +1949,7 @@
   }
   // Run twice and make sure that it doesn't re-prepend ellipsis.
   result.SetTailSuggestContentPrefixes();
-  for (size_t i = 0; i < base::size(cases); ++i) {
+  for (size_t i = 0; i < std::size(cases); ++i) {
     EXPECT_EQ(result.match_at(i)->contents,
               base::UTF8ToUTF16(cases[i].after_contents));
     EXPECT_TRUE(EqualClassifications(result.match_at(i)->contents_class,
@@ -2029,8 +2028,8 @@
         {"http://clear-history/", AutocompleteMatchType::SEARCH_SUGGEST,
          "clear history"},
     };
-    PopulateAutocompleteMatchesFromTestData(data, base::size(data), &matches);
-    for (size_t i = 0; i < base::size(data); i++) {
+    PopulateAutocompleteMatchesFromTestData(data, std::size(data), &matches);
+    for (size_t i = 0; i < std::size(data); i++) {
       matches[i].contents = base::UTF8ToUTF16(data[i].contents);
     }
     result.AppendMatches(input, matches);
@@ -2060,7 +2059,7 @@
       {3, 1, 400, false},   // HISTORY result for url [3].
   };
   ACMatches matches;
-  PopulateAutocompleteMatches(data, base::size(data), &matches);
+  PopulateAutocompleteMatches(data, std::size(data), &matches);
   matches[0].type = AutocompleteMatchType::DOCUMENT_SUGGESTION;
   static_cast<FakeAutocompleteProvider*>(matches[0].provider)
       ->SetType(AutocompleteProvider::Type::TYPE_DOCUMENT);
@@ -2162,7 +2161,7 @@
   // clang-format on
 
   ACMatches matches;
-  PopulateAutocompleteMatches(data, base::size(data), &matches);
+  PopulateAutocompleteMatches(data, std::size(data), &matches);
   matches[0].type = AutocompleteMatchType::SEARCH_SUGGEST;
   static_cast<FakeAutocompleteProvider*>(matches[0].provider)
       ->SetType(AutocompleteProvider::Type::TYPE_ZERO_SUGGEST_LOCAL_HISTORY);
diff --git a/components/omnibox/browser/bookmark_provider.cc b/components/omnibox/browser/bookmark_provider.cc
index 7a5f2f9..739557b 100644
--- a/components/omnibox/browser/bookmark_provider.cc
+++ b/components/omnibox/browser/bookmark_provider.cc
@@ -9,7 +9,6 @@
 #include <vector>
 
 #include "base/containers/cxx20_erase.h"
-#include "base/cxx17_backports.h"
 #include "base/feature_list.h"
 #include "base/metrics/field_trial_params.h"
 #include "base/strings/string_util.h"
@@ -300,9 +299,9 @@
   const int kURLCountBoost[4] = { 0, 75, 125, 150 };
   std::vector<const BookmarkNode*> nodes;
   bookmark_model_->GetNodesByURL(url, &nodes);
-  DCHECK_GE(std::min(base::size(kURLCountBoost), nodes.size()), 1U);
+  DCHECK_GE(std::min(std::size(kURLCountBoost), nodes.size()), 1U);
   relevance +=
-      kURLCountBoost[std::min(base::size(kURLCountBoost), nodes.size()) - 1];
+      kURLCountBoost[std::min(std::size(kURLCountBoost), nodes.size()) - 1];
   relevance = std::min(kMaxBookmarkScore, relevance);
   return relevance;
 }
diff --git a/components/omnibox/browser/bookmark_provider_unittest.cc b/components/omnibox/browser/bookmark_provider_unittest.cc
index 43ffff8..ce880693 100644
--- a/components/omnibox/browser/bookmark_provider_unittest.cc
+++ b/components/omnibox/browser/bookmark_provider_unittest.cc
@@ -11,7 +11,6 @@
 #include <string>
 #include <vector>
 
-#include "base/cxx17_backports.h"
 #include "base/guid.h"
 #include "base/memory/ref_counted.h"
 #include "base/strings/string_number_conversions.h"
@@ -207,7 +206,7 @@
 
   provider_ = new BookmarkProvider(provider_client_.get());
   const BookmarkNode* other_node = model_->other_node();
-  for (size_t i = 0; i < base::size(bookmark_provider_test_data); ++i) {
+  for (size_t i = 0; i < std::size(bookmark_provider_test_data); ++i) {
     const BookmarksTestInfo& cur(bookmark_provider_test_data[i]);
     const GURL url(cur.url);
     model_->AddURL(other_node, other_node->children().size(),
@@ -306,7 +305,7 @@
       {"emptytitle", 1, {}},
   };
 
-  for (size_t i = 0; i < base::size(query_data); ++i) {
+  for (size_t i = 0; i < std::size(query_data); ++i) {
     AutocompleteInput input(base::ASCIIToUTF16(query_data[i].query),
                             metrics::OmniboxEventProto::OTHER,
                             TestSchemeClassifier());
@@ -384,7 +383,7 @@
                       "burning worms #2"}},  // not boosted
   };
 
-  for (size_t i = 0; i < base::size(query_data); ++i) {
+  for (size_t i = 0; i < std::size(query_data); ++i) {
     AutocompleteInput input(base::ASCIIToUTF16(query_data[i].query),
                             metrics::OmniboxEventProto::OTHER,
                             TestSchemeClassifier());
@@ -438,7 +437,7 @@
       // actually bookmarked.
   };
 
-  for (size_t i = 0; i < base::size(query_data); ++i) {
+  for (size_t i = 0; i < std::size(query_data); ++i) {
     const std::string description =
         "for query=" + query_data[i].query + " and url=" + query_data[i].url;
     AutocompleteInput input(base::ASCIIToUTF16(query_data[i].query),
@@ -486,7 +485,7 @@
       // clang-format on
   };
 
-  for (size_t i = 0; i < base::size(query_data); ++i) {
+  for (size_t i = 0; i < std::size(query_data); ++i) {
     std::string description = "for query=" + query_data[i].query;
     AutocompleteInput input(base::ASCIIToUTF16(query_data[i].query),
                             metrics::OmniboxEventProto::OTHER,
diff --git a/components/omnibox/browser/builtin_provider_unittest.cc b/components/omnibox/browser/builtin_provider_unittest.cc
index fa6b4bc7..6f0e4e9 100644
--- a/components/omnibox/browser/builtin_provider_unittest.cc
+++ b/components/omnibox/browser/builtin_provider_unittest.cc
@@ -10,7 +10,6 @@
 #include <string>
 #include <vector>
 
-#include "base/cxx17_backports.h"
 #include "base/format_macros.h"
 #include "base/strings/strcat.h"
 #include "base/strings/stringprintf.h"
@@ -172,7 +171,7 @@
       {u"ChRoMe://", {kURL1, kURL2, kURL3}},
   };
 
-  RunTest(typing_scheme_cases, base::size(typing_scheme_cases));
+  RunTest(typing_scheme_cases, std::size(typing_scheme_cases));
 }
 
 TEST_F(BuiltinProviderTest, NonEmbedderURLs) {
@@ -190,7 +189,7 @@
       {u"scheme://host/path?query#ref", {}},
   };
 
-  RunTest(test_cases, base::size(test_cases));
+  RunTest(test_cases, std::size(test_cases));
 }
 
 TEST_F(BuiltinProviderTest, EmbedderProvidedURLs) {
@@ -239,7 +238,7 @@
       {kEmbedder + kSep2 + kHostM3, {kURLM2, kURLM3}},
   };
 
-  RunTest(test_cases, base::size(test_cases));
+  RunTest(test_cases, std::size(test_cases));
 }
 
 TEST_F(BuiltinProviderTest, AboutBlank) {
@@ -297,7 +296,7 @@
       {kAboutBlank.substr(0, 9) + u"#r", {}},
   };
 
-  RunTest(about_blank_cases, base::size(about_blank_cases));
+  RunTest(about_blank_cases, std::size(about_blank_cases));
 }
 
 TEST_F(BuiltinProviderTest, DoesNotSupportMatchesOnFocus) {
@@ -330,7 +329,7 @@
     {kSubpage + kPageTwo,                              {kURLTwo}},
   };
 
-  RunTest(settings_subpage_cases, base::size(settings_subpage_cases));
+  RunTest(settings_subpage_cases, std::size(settings_subpage_cases));
 }
 
 TEST_F(BuiltinProviderTest, Inlining) {
@@ -428,7 +427,7 @@
   };
 
   ACMatches matches;
-  for (size_t i = 0; i < base::size(cases); ++i) {
+  for (size_t i = 0; i < std::size(cases); ++i) {
     SCOPED_TRACE(base::StringPrintf(
         "case %" PRIuS ": %s", i, base::UTF16ToUTF8(cases[i].input).c_str()));
     AutocompleteInput input(cases[i].input, metrics::OmniboxEventProto::OTHER,
diff --git a/components/omnibox/browser/history_quick_provider_performance_unittest.cc b/components/omnibox/browser/history_quick_provider_performance_unittest.cc
index de24eaf..bdab81d 100644
--- a/components/omnibox/browser/history_quick_provider_performance_unittest.cc
+++ b/components/omnibox/browser/history_quick_provider_performance_unittest.cc
@@ -2,13 +2,10 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "components/omnibox/browser/history_quick_provider.h"
-
 #include <memory>
 #include <random>
 #include <string>
 
-#include "base/cxx17_backports.h"
 #include "base/run_loop.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
@@ -18,6 +15,7 @@
 #include "components/history/core/browser/history_service.h"
 #include "components/history/core/test/history_service_test_util.h"
 #include "components/omnibox/browser/fake_autocomplete_provider_client.h"
+#include "components/omnibox/browser/history_quick_provider.h"
 #include "components/omnibox/browser/history_test_util.h"
 #include "components/omnibox/browser/in_memory_url_index_test_util.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -33,7 +31,7 @@
       "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789,/=+?#";
   static std::mt19937 engine;
   std::uniform_int_distribution<size_t> index_distribution(
-      0, base::size(kSyms) - 2 /* trailing \0 */);
+      0, std::size(kSyms) - 2 /* trailing \0 */);
 
   std::string res;
   res.reserve(sym_count);
diff --git a/components/omnibox/browser/history_quick_provider_unittest.cc b/components/omnibox/browser/history_quick_provider_unittest.cc
index b37fb7f2..35a6b23f 100644
--- a/components/omnibox/browser/history_quick_provider_unittest.cc
+++ b/components/omnibox/browser/history_quick_provider_unittest.cc
@@ -13,7 +13,6 @@
 #include <string>
 #include <vector>
 
-#include "base/cxx17_backports.h"
 #include "base/format_macros.h"
 #include "base/memory/raw_ptr.h"
 #include "base/run_loop.h"
@@ -581,7 +580,7 @@
   // increase that number in the future.  Regardless, we require the first
   // five offsets to be correct--in this example these cover at least one
   // occurrence of each term.
-  EXPECT_LE(contents_class.size(), base::size(expected_offsets));
+  EXPECT_LE(contents_class.size(), std::size(expected_offsets));
   EXPECT_GE(contents_class.size(), 5u);
   for (size_t i = 0; i < contents_class.size(); ++i)
     EXPECT_EQ(expected_offsets[i], contents_class[i].offset);
diff --git a/components/omnibox/browser/history_url_provider_unittest.cc b/components/omnibox/browser/history_url_provider_unittest.cc
index 1180e831..2789b4c5 100644
--- a/components/omnibox/browser/history_url_provider_unittest.cc
+++ b/components/omnibox/browser/history_url_provider_unittest.cc
@@ -10,7 +10,6 @@
 #include <memory>
 #include <utility>
 
-#include "base/cxx17_backports.h"
 #include "base/run_loop.h"
 #include "base/strings/string_util.h"
 #include "base/strings/stringprintf.h"
@@ -298,7 +297,7 @@
   // case the time would be specifed in the test_db structure.
   const Time now = Time::Now();
 
-  for (size_t i = 0; i < base::size(test_db); ++i) {
+  for (size_t i = 0; i < std::size(test_db); ++i) {
     const TestURLInfo& cur = test_db[i];
     const GURL current_url(cur.url);
     client_->GetHistoryService()->AddPageWithDetails(
@@ -399,7 +398,7 @@
     { "http://slashdot.org/", false }
   };
   RunTest(u"slash", std::string(), true, expected_nonsynth,
-          base::size(expected_nonsynth));
+          std::size(expected_nonsynth));
 
   // Test that hosts get synthesized above less popular pages.
   const UrlAndLegalDefault expected_synth[] = {
@@ -407,7 +406,7 @@
     { "http://kerneltrap.org/not_very_popular.html", false }
   };
   RunTest(u"kernel", std::string(), true, expected_synth,
-          base::size(expected_synth));
+          std::size(expected_synth));
 
   // Test that unpopular pages are ignored completely.
   RunTest(u"fresh", std::string(), true, nullptr, 0);
@@ -421,14 +420,14 @@
     { "http://synthesisatest.com/foo/", true }
   };
   RunTest(u"synthesisa", std::string(), false, expected_synthesisa,
-          base::size(expected_synthesisa));
+          std::size(expected_synthesisa));
   EXPECT_LT(matches_.front().relevance, 1200);
   const UrlAndLegalDefault expected_synthesisb[] = {
     { "http://synthesisbtest.com/foo/", true },
     { "http://synthesisbtest.com/foo/bar.html", true }
   };
   RunTest(u"synthesisb", std::string(), false, expected_synthesisb,
-          base::size(expected_synthesisb));
+          std::size(expected_synthesisb));
   EXPECT_GE(matches_.front().relevance, 1410);
 
   // Test that if we have a synthesized host that matches a suggestion, they
@@ -439,7 +438,7 @@
   };
   ASSERT_NO_FATAL_FAILURE(RunTest(u"news", std::string(), true,
                                   expected_combine,
-                                  base::size(expected_combine)));
+                                  std::size(expected_combine)));
   // The title should also have gotten set properly on the host for the
   // synthesized one, since it was also in the results.
   EXPECT_EQ(u"Google News", matches_.front().description);
@@ -452,7 +451,7 @@
     { "http://foo.com/dir/another/again/myfile.html", false },
     { "http://foo.com/dir/", false }
   };
-  RunTest(u"foo", std::string(), true, short_1, base::size(short_1));
+  RunTest(u"foo", std::string(), true, short_1, std::size(short_1));
 
   // When the user types the whole host, make sure we don't get two results for
   // it.
@@ -462,8 +461,8 @@
     { "http://foo.com/dir/", false },
     { "http://foo.com/dir/another/", false }
   };
-  RunTest(u"foo.com", std::string(), true, short_2, base::size(short_2));
-  RunTest(u"foo.com/", std::string(), true, short_2, base::size(short_2));
+  RunTest(u"foo.com", std::string(), true, short_2, std::size(short_2));
+  RunTest(u"foo.com/", std::string(), true, short_2, std::size(short_2));
 
   // The filename is the second best of the foo.com* entries, but there is a
   // shorter URL that's "good enough".  The host doesn't match the user input
@@ -474,7 +473,7 @@
     { "http://foo.com/dir/another/again/myfile.html", false },
     { "http://foo.com/dir/", false }
   };
-  RunTest(u"foo.com/d", std::string(), true, short_3, base::size(short_3));
+  RunTest(u"foo.com/d", std::string(), true, short_3, std::size(short_3));
   // If prevent_inline_autocomplete is false, we won't bother creating the
   // URL-what-you-typed match because we have promoted inline autocompletions.
   const UrlAndLegalDefault short_3_allow_inline[] = {
@@ -483,7 +482,7 @@
     { "http://foo.com/dir/", true }
   };
   RunTest(u"foo.com/d", std::string(), false, short_3_allow_inline,
-          base::size(short_3_allow_inline));
+          std::size(short_3_allow_inline));
 
   // We shouldn't promote shorter URLs than the best if they're not good
   // enough.
@@ -493,7 +492,7 @@
     { "http://foo.com/dir/another/again/", false }
   };
   RunTest(u"foo.com/dir/another/a", std::string(), true, short_4,
-          base::size(short_4));
+          std::size(short_4));
   // If prevent_inline_autocomplete is false, we won't bother creating the
   // URL-what-you-typed match because we have promoted inline autocompletions.
   const UrlAndLegalDefault short_4_allow_inline[] = {
@@ -501,7 +500,7 @@
     { "http://foo.com/dir/another/again/", true }
   };
   RunTest(u"foo.com/dir/another/a", std::string(), false, short_4_allow_inline,
-          base::size(short_4_allow_inline));
+          std::size(short_4_allow_inline));
 
   // Exact matches should always be best no matter how much more another match
   // has been typed.
@@ -517,8 +516,8 @@
   };
   // Note that there is an http://g/ URL that is marked as hidden.  It shouldn't
   // show up at all.  This test implicitly tests this fact too.
-  RunTest(u"g", std::string(), false, short_5a, base::size(short_5a));
-  RunTest(u"go", std::string(), false, short_5b, base::size(short_5b));
+  RunTest(u"g", std::string(), false, short_5a, std::size(short_5a));
+  RunTest(u"go", std::string(), false, short_5b, std::size(short_5b));
 }
 
 TEST_F(HistoryURLProviderTest, CullRedirects) {
@@ -534,7 +533,7 @@
     {"http://redirects/B", 20},
     {"http://redirects/C", 10}
   };
-  for (size_t i = 0; i < base::size(test_cases); ++i) {
+  for (size_t i = 0; i < std::size(test_cases); ++i) {
     client_->GetHistoryService()->AddPageWithDetails(
         GURL(test_cases[i].url), u"Title", test_cases[i].count,
         test_cases[i].count, Time::Now(), false, history::SOURCE_BROWSED);
@@ -561,7 +560,7 @@
     { base::UTF16ToUTF8(typing), true }
   };
   RunTest(typing, std::string(), true, expected_results,
-          base::size(expected_results));
+          std::size(expected_results));
 
   // If prevent_inline_autocomplete is false, we won't bother creating the
   // URL-what-you-typed match because we have promoted inline autocompletions.
@@ -571,7 +570,7 @@
     { test_cases[0].url, true }
   };
   RunTest(typing, std::string(), false, expected_results_allow_inlining,
-          base::size(expected_results_allow_inlining));
+          std::size(expected_results_allow_inlining));
 }
 
 TEST_F(HistoryURLProviderTestNoSearchProvider, WhatYouTypedNoSearchProvider) {
@@ -581,7 +580,7 @@
   const UrlAndLegalDefault results_1[] = {
     { "http://wytmatch/", true }
   };
-  RunTest(u"wytmatch", std::string(), false, results_1, base::size(results_1));
+  RunTest(u"wytmatch", std::string(), false, results_1, std::size(results_1));
 
   RunTest(u"wytmatch foo bar", std::string(), false, nullptr, 0);
   RunTest(u"wytmatch+foo+bar", std::string(), false, nullptr, 0);
@@ -590,7 +589,7 @@
     { "http://wytmatch+foo+bar.com/", true }
   };
   RunTest(u"wytmatch+foo+bar.com", std::string(), false, results_2,
-          base::size(results_2));
+          std::size(results_2));
 }
 
 TEST_F(HistoryURLProviderTest, WhatYouTyped) {
@@ -603,35 +602,34 @@
   const UrlAndLegalDefault results_1[] = {
     { "http://www.wytmatch.com/", true }
   };
-  RunTest(u"wytmatch", "com", false, results_1, base::size(results_1));
+  RunTest(u"wytmatch", "com", false, results_1, std::size(results_1));
 
   const UrlAndLegalDefault results_2[] = {
     { "http://wytmatch%20foo%20bar/", false }
   };
   RunTest(u"http://wytmatch foo bar", std::string(), false, results_2,
-          base::size(results_2));
+          std::size(results_2));
 
   const UrlAndLegalDefault results_3[] = {
     { "https://wytmatch%20foo%20bar/", false }
   };
   RunTest(u"https://wytmatch foo bar", std::string(), false, results_3,
-          base::size(results_3));
+          std::size(results_3));
 
   const UrlAndLegalDefault results_4[] = {{"https://wytih/", true},
                                           {"https://www.wytih/file", true},
                                           {"ftp://wytih/file", true},
                                           {"https://www.wytih/page", true}};
-  RunTest(u"wytih", std::string(), false, results_4, base::size(results_4));
+  RunTest(u"wytih", std::string(), false, results_4, std::size(results_4));
 
   const UrlAndLegalDefault results_5[] = {{"https://www.wytih/", true},
                                           {"https://www.wytih/file", true},
                                           {"https://www.wytih/page", true}};
-  RunTest(u"www.wytih", std::string(), false, results_5, base::size(results_5));
+  RunTest(u"www.wytih", std::string(), false, results_5, std::size(results_5));
 
   const UrlAndLegalDefault results_6[] = {{"ftp://wytih/file", true},
                                           {"https://www.wytih/file", true}};
-  RunTest(u"wytih/file", std::string(), false, results_6,
-          base::size(results_6));
+  RunTest(u"wytih/file", std::string(), false, results_6, std::size(results_6));
 }
 
 // Test that the exact history match does not lose username/password
@@ -639,12 +637,12 @@
 TEST_F(HistoryURLProviderTest, WhatYouTyped_Exact_URLPreservesUsernameAndPassword) {
   const UrlAndLegalDefault results_1[] = {{"https://user@wytih/", true}};
   RunTest(u"https://user@wytih", std::string(), false, results_1,
-          base::size(results_1));
+          std::size(results_1));
 
   const UrlAndLegalDefault results_2[] = {
       {"https://user:pass@www.wytih/file", true}};
   RunTest(u"https://user:pass@www.wytih/file", std::string(), false, results_2,
-          base::size(results_2));
+          std::size(results_2));
 }
 
 // Test that file: URLs are handled appropriately on each platform.
@@ -668,7 +666,7 @@
   const std::u16string input_1(u"file:");
   const UrlAndLegalDefault fixup_1[] = {{"file:///C:/foo.txt", true}};
   ASSERT_NO_FATAL_FAILURE(
-      RunTest(input_1, std::string(), false, fixup_1, base::size(fixup_1)));
+      RunTest(input_1, std::string(), false, fixup_1, std::size(fixup_1)));
   EXPECT_EQ(u"///C:/foo.txt", matches_.front().inline_autocompletion);
 #endif  // !BUILDFLAG(IS_IOS)
 
@@ -678,7 +676,7 @@
   const std::u16string input_2(u"/foo");
   const UrlAndLegalDefault fixup_2[] = {{"file:///foo", true}};
   ASSERT_NO_FATAL_FAILURE(
-      RunTest(input_2, std::string(), false, fixup_2, base::size(fixup_2)));
+      RunTest(input_2, std::string(), false, fixup_2, std::size(fixup_2)));
   EXPECT_TRUE(matches_[0].destination_url.SchemeIsFile());
 #elif BUILDFLAG(IS_IOS)
   // However, AutocompleteInput ignores the URL fixup on iOS because it
@@ -702,7 +700,7 @@
     { "http://%EF%BD%A5@s/", false }
   };
   RunTest(u"\uff65@s", std::string(), false, fixup_crash,
-          base::size(fixup_crash));
+          std::size(fixup_crash));
   RunTest(u"\u2015\u2015@ \uff7c", std::string(), false, nullptr, 0);
 
   // Fixing up "http:/" should result in an inline autocomplete offset of just
@@ -714,7 +712,7 @@
     { "http://bogussite.com/c", true }
   };
   ASSERT_NO_FATAL_FAILURE(
-      RunTest(input_2, std::string(), false, fixup_2, base::size(fixup_2)));
+      RunTest(input_2, std::string(), false, fixup_2, std::size(fixup_2)));
   EXPECT_EQ(u"/bogussite.com/a", matches_.front().inline_autocompletion);
 
   // Adding a TLD to a small number like "56" should result in "www.56.com"
@@ -722,20 +720,20 @@
   const UrlAndLegalDefault fixup_3[] = {
     { "http://www.56.com/", true }
   };
-  RunTest(u"56", "com", true, fixup_3, base::size(fixup_3));
+  RunTest(u"56", "com", true, fixup_3, std::size(fixup_3));
 
   // An input looks like a IP address like "127.0.0.1" should result in
   // "http://127.0.0.1/".
   const UrlAndLegalDefault fixup_4[] = {
     { "http://127.0.0.1/", true }
   };
-  RunTest(u"127.0.0.1", std::string(), false, fixup_4, base::size(fixup_4));
+  RunTest(u"127.0.0.1", std::string(), false, fixup_4, std::size(fixup_4));
 
   // An number "17173" should result in "http://www.17173.com/" in db.
   const UrlAndLegalDefault fixup_5[] = {
     { "http://www.17173.com/", true }
   };
-  RunTest(u"17173", std::string(), false, fixup_5, base::size(fixup_5));
+  RunTest(u"17173", std::string(), false, fixup_5, std::size(fixup_5));
 }
 
 // Make sure the results for the input 'p' don't change between the first and
@@ -773,13 +771,13 @@
     { "http://test.com/", true }
   };
   RunTest(u"test.com", std::string(), false, navigation_1,
-          base::size(navigation_1));
+          std::size(navigation_1));
 
   UrlAndLegalDefault navigation_2[] = {
     { "http://slash/", false }
   };
   RunTest(u"slash", std::string(), false, navigation_2,
-          base::size(navigation_2));
+          std::size(navigation_2));
 
   RunTest(u"this is a query", std::string(), false, nullptr, 0);
 }
@@ -875,7 +873,7 @@
     { "http://user@foo.com/", false }
   };
   ASSERT_NO_FATAL_FAILURE(RunTest(u"user@foo.com", std::string(), false,
-                                  expected, base::size(expected)));
+                                  expected, std::size(expected)));
   EXPECT_LE(1200, matches_[0].relevance);
   EXPECT_LT(matches_[0].relevance, 1210);
 }
@@ -895,7 +893,7 @@
     { "gooey/a", 1400, true },
     { "gooey/a b", 1400, true },
   };
-  for (size_t i = 0; i < base::size(test_cases); ++i) {
+  for (size_t i = 0; i < std::size(test_cases); ++i) {
     SCOPED_TRACE(test_cases[i].input);
     if (test_cases[i].relevance == 0) {
       RunTest(ASCIIToUTF16(test_cases[i].input), std::string(), false, nullptr,
@@ -906,7 +904,7 @@
            test_cases[i].allowed_to_be_default_match}};
       ASSERT_NO_FATAL_FAILURE(RunTest(ASCIIToUTF16(test_cases[i].input),
                                       std::string(), false, output,
-                                      base::size(output)));
+                                      std::size(output)));
       // Actual relevance should be at least what test_cases expects and
       // and no more than 10 more.
       EXPECT_LE(test_cases[i].relevance, matches_[0].relevance);
@@ -925,7 +923,7 @@
     { "http://intra/two", true }
   };
   ASSERT_NO_FATAL_FAILURE(RunTest(u"intra/t", std::string(), false, expected1,
-                                  base::size(expected1)));
+                                  std::size(expected1)));
   EXPECT_LE(1410, matches_[0].relevance);
   EXPECT_LT(matches_[0].relevance, 1420);
   // It uses the default scoring.
@@ -935,8 +933,8 @@
     { "http://moo/b", true },
     { "http://moo/bar", true }
   };
-  ASSERT_NO_FATAL_FAILURE(RunTest(u"moo/b", std::string(), false, expected2,
-                                  base::size(expected2)));
+  ASSERT_NO_FATAL_FAILURE(
+      RunTest(u"moo/b", std::string(), false, expected2, std::size(expected2)));
   // The url what you typed match should be around 1400, otherwise the
   // search what you typed match is going to be first.
   EXPECT_LE(1400, matches_[0].relevance);
@@ -945,18 +943,18 @@
   const UrlAndLegalDefault expected3[] = {{"http://intra/three", true},
                                           {"http://intra/one", true},
                                           {"http://intra/two", true}};
-  RunTest(u"intra", std::string(), false, expected3, base::size(expected3));
+  RunTest(u"intra", std::string(), false, expected3, std::size(expected3));
 
   const UrlAndLegalDefault expected4[] = {{"http://intra/three", true},
                                           {"http://intra/one", true},
                                           {"http://intra/two", true}};
-  RunTest(u"intra/", std::string(), false, expected4, base::size(expected4));
+  RunTest(u"intra/", std::string(), false, expected4, std::size(expected4));
 
   const UrlAndLegalDefault expected5[] = {
     { "http://intra/one", true }
   };
   ASSERT_NO_FATAL_FAILURE(RunTest(u"intra/o", std::string(), false, expected5,
-                                  base::size(expected5)));
+                                  std::size(expected5)));
   EXPECT_LE(1410, matches_[0].relevance);
   EXPECT_LT(matches_[0].relevance, 1420);
 
@@ -964,7 +962,7 @@
     { "http://intra/x", true }
   };
   ASSERT_NO_FATAL_FAILURE(RunTest(u"intra/x", std::string(), false, expected6,
-                                  base::size(expected6)));
+                                  std::size(expected6)));
   EXPECT_LE(1400, matches_[0].relevance);
   EXPECT_LT(matches_[0].relevance, 1410);
 
@@ -972,13 +970,13 @@
     { "http://typedhost/untypedpath", true }
   };
   ASSERT_NO_FATAL_FAILURE(RunTest(u"typedhost/untypedpath", std::string(),
-                                  false, expected7, base::size(expected7)));
+                                  false, expected7, std::size(expected7)));
   EXPECT_LE(1400, matches_[0].relevance);
   EXPECT_LT(matches_[0].relevance, 1410);
 
   const UrlAndLegalDefault expected8[] = {{"https://www.prefixintra/x", true}};
   ASSERT_NO_FATAL_FAILURE(RunTest(u"prefixintra/x", std::string(), false,
-                                  expected8, base::size(expected8)));
+                                  expected8, std::size(expected8)));
 }
 
 TEST_F(HistoryURLProviderTest, CrashDueToFixup) {
@@ -988,7 +986,7 @@
     "\\@st",
     "view-source:x",
   };
-  for (size_t i = 0; i < base::size(test_cases); ++i) {
+  for (size_t i = 0; i < std::size(test_cases); ++i) {
     AutocompleteInput input(ASCIIToUTF16(test_cases[i]),
                             metrics::OmniboxEventProto::OTHER,
                             TestSchemeClassifier());
@@ -1013,21 +1011,21 @@
     { "http://puny.xn--h2by8byc123p.in/", true },
   };
   RunTest(u"pun", std::string(), false, expected1_true,
-          base::size(expected1_true));
+          std::size(expected1_true));
   RunTest(u"puny.", std::string(), false, expected1_true,
-          base::size(expected1_true));
+          std::size(expected1_true));
   RunTest(u"puny.x", std::string(), false, expected1_true,
-          base::size(expected1_true));
+          std::size(expected1_true));
   RunTest(u"puny.xn", std::string(), false, expected1_true,
-          base::size(expected1_true));
+          std::size(expected1_true));
   RunTest(u"puny.xn--", std::string(), false, expected1_true,
-          base::size(expected1_true));
+          std::size(expected1_true));
   RunTest(u"puny.xn--h2", std::string(), false, expected1_true,
-          base::size(expected1_true));
+          std::size(expected1_true));
   RunTest(u"puny.xn--h2by8byc123p", std::string(), false, expected1_true,
-          base::size(expected1_true));
+          std::size(expected1_true));
   RunTest(u"puny.xn--h2by8byc123p.", std::string(), false, expected1_true,
-          base::size(expected1_true));
+          std::size(expected1_true));
 
   // When the punycode part of the URL is rendered as international characters,
   // this match should not be allowed to be the default match if the inline
@@ -1039,21 +1037,21 @@
     { "http://two_puny.xn--1lq90ic7f1rc.cn/", false },
   };
   RunTest(u"two", std::string(), false, expected2_true,
-          base::size(expected2_true));
+          std::size(expected2_true));
   RunTest(u"two_puny.", std::string(), false, expected2_true,
-          base::size(expected2_true));
+          std::size(expected2_true));
   RunTest(u"two_puny.x", std::string(), false, expected2_false,
-          base::size(expected2_false));
+          std::size(expected2_false));
   RunTest(u"two_puny.xn", std::string(), false, expected2_false,
-          base::size(expected2_false));
+          std::size(expected2_false));
   RunTest(u"two_puny.xn--", std::string(), false, expected2_false,
-          base::size(expected2_false));
+          std::size(expected2_false));
   RunTest(u"two_puny.xn--1l", std::string(), false, expected2_false,
-          base::size(expected2_false));
+          std::size(expected2_false));
   RunTest(u"two_puny.xn--1lq90ic7f1rc", std::string(), false, expected2_true,
-          base::size(expected2_true));
+          std::size(expected2_true));
   RunTest(u"two_puny.xn--1lq90ic7f1rc.", std::string(), false, expected2_true,
-          base::size(expected2_true));
+          std::size(expected2_true));
 }
 
 TEST_F(HistoryURLProviderTest, CullSearchResults) {
@@ -1080,7 +1078,7 @@
     {"https://testsearch.com/?q=foobar", 20},
     {"http://foobar.com/", 10}
   };
-  for (size_t i = 0; i < base::size(test_cases); ++i) {
+  for (size_t i = 0; i < std::size(test_cases); ++i) {
     client_->GetHistoryService()->AddPageWithDetails(
         GURL(test_cases[i].url), u"Title", test_cases[i].count,
         test_cases[i].count, Time::Now(), false, history::SOURCE_BROWSED);
@@ -1091,14 +1089,14 @@
     { test_cases[2].url, false }
   };
   RunTest(u"foobar", std::string(), true, expected_when_searching_query,
-          base::size(expected_when_searching_query));
+          std::size(expected_when_searching_query));
 
   // We should not see search URLs when typing the search engine name.
   const UrlAndLegalDefault expected_when_searching_site[] = {
     { test_cases[0].url, false }
   };
   RunTest(u"testsearch", std::string(), true, expected_when_searching_site,
-          base::size(expected_when_searching_site));
+          std::size(expected_when_searching_site));
 }
 
 TEST_F(HistoryURLProviderTest, SuggestExactInput) {
@@ -1166,7 +1164,7 @@
       "view-source:http://x%20y/a b", {0, npos, npos}, 0 },
     // clang-format on
   };
-  for (size_t i = 0; i < base::size(test_cases); ++i) {
+  for (size_t i = 0; i < std::size(test_cases); ++i) {
     SCOPED_TRACE(testing::Message() << "Index " << i << " input: "
                                     << test_cases[i].input << ", trim_http: "
                                     << test_cases[i].trim_http);
@@ -1272,7 +1270,7 @@
        max_1100_visit_typed_decays,
        {{"7.com/5", 1203, 1203}, {"7.com/5a", 1202, 50}, {nullptr, 0, 0}}},
   };
-  for (size_t i = 0; i < base::size(test_cases); ++i) {
+  for (size_t i = 0; i < std::size(test_cases); ++i) {
     SCOPED_TRACE(test_cases[i].input);
     UrlAndLegalDefault output[kProviderMaxMatches];
     int max_matches;
diff --git a/components/omnibox/browser/in_memory_url_index_types_unittest.cc b/components/omnibox/browser/in_memory_url_index_types_unittest.cc
index ec8ca05c..5b79cc00 100644
--- a/components/omnibox/browser/in_memory_url_index_types_unittest.cc
+++ b/components/omnibox/browser/in_memory_url_index_types_unittest.cc
@@ -9,7 +9,6 @@
 #include <algorithm>
 #include <string>
 
-#include "base/cxx17_backports.h"
 #include "base/strings/utf_string_conversions.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -49,7 +48,7 @@
   EXPECT_EQ(u"brammy", string_vec[6]);
   // Verify the word starts.
   size_t expected_starts_a[] = {0, 7, 11, 18, 23, 31, 35};
-  EXPECT_TRUE(IntArraysEqual(expected_starts_a, base::size(expected_starts_a),
+  EXPECT_TRUE(IntArraysEqual(expected_starts_a, std::size(expected_starts_a),
                              actual_starts_a));
 
   WordStarts actual_starts_b;
@@ -61,7 +60,7 @@
   EXPECT_EQ(u"the", string_vec[3]);
   EXPECT_EQ(u"brammy", string_vec[4]);
   size_t expected_starts_b[] = {0, 7, 23, 31, 35};
-  EXPECT_TRUE(IntArraysEqual(expected_starts_b, base::size(expected_starts_b),
+  EXPECT_TRUE(IntArraysEqual(expected_starts_b, std::size(expected_starts_b),
                              actual_starts_b));
 
   std::u16string string_c(
@@ -71,7 +70,7 @@
   ASSERT_EQ(8U, string_vec.size());
   // Note that we stop collecting words and word starts at kMaxSignificantChars.
   size_t expected_starts_c[] = {1, 7, 16, 22, 32, 43, 52, 55};
-  EXPECT_TRUE(IntArraysEqual(expected_starts_c, base::size(expected_starts_c),
+  EXPECT_TRUE(IntArraysEqual(expected_starts_c, std::size(expected_starts_c),
                              actual_starts_c));
 
   std::u16string string_d(u"http://www.google.com/frammy_the_brammy");
@@ -86,7 +85,7 @@
   EXPECT_EQ(u"the", string_vec[5]);
   EXPECT_EQ(u"brammy", string_vec[6]);
   size_t expected_starts_d[] = {0, 7, 11, 18, 22, 29, 33};
-  EXPECT_TRUE(IntArraysEqual(expected_starts_d, base::size(expected_starts_d),
+  EXPECT_TRUE(IntArraysEqual(expected_starts_d, std::size(expected_starts_d),
                              actual_starts_d));
 
   // Test String16SetFromString16
@@ -101,7 +100,7 @@
   EXPECT_TRUE(string_set.find(u"search") != string_set.end());
   EXPECT_TRUE(string_set.find(u"web") != string_set.end());
   size_t expected_starts_e[] = {0, 7, 11, 18, 22, 29, 36, 40};
-  EXPECT_TRUE(IntArraysEqual(expected_starts_e, base::size(expected_starts_e),
+  EXPECT_TRUE(IntArraysEqual(expected_starts_e, std::size(expected_starts_e),
                              actual_starts_e));
 
   // Test SortMatches and DeoverlapMatches.
@@ -133,8 +132,8 @@
   TermMatches matches_g =
       MatchTermInString(u"x", u"axbxcxdxex fxgx/hxixjx.kx", 123);
   const size_t expected_offsets[] = { 1, 3, 5, 7, 9, 12, 14, 17, 19, 21, 24 };
-  ASSERT_EQ(base::size(expected_offsets), matches_g.size());
-  for (size_t i = 0; i < base::size(expected_offsets); ++i)
+  ASSERT_EQ(std::size(expected_offsets), matches_g.size());
+  for (size_t i = 0; i < std::size(expected_offsets); ++i)
     EXPECT_EQ(expected_offsets[i], matches_g[i].offset);
 }
 
@@ -148,7 +147,7 @@
   matches_a.push_back(TermMatch(4, 14, 5));
   std::vector<size_t> offsets = OffsetsFromTermMatches(matches_a);
   const size_t expected_offsets_a[] = {1, 3, 4, 7, 9, 10, 10, 11, 14, 19};
-  ASSERT_EQ(offsets.size(), base::size(expected_offsets_a));
+  ASSERT_EQ(offsets.size(), std::size(expected_offsets_a));
   for (size_t i = 0; i < offsets.size(); ++i)
     EXPECT_EQ(expected_offsets_a[i], offsets[i]);
 
@@ -156,7 +155,7 @@
   offsets[4] = std::u16string::npos;  // offset of third term
   TermMatches matches_b = ReplaceOffsetsInTermMatches(matches_a, offsets);
   const size_t expected_offsets_b[] = {1, 4, 10, 14};
-  ASSERT_EQ(base::size(expected_offsets_b), matches_b.size());
+  ASSERT_EQ(std::size(expected_offsets_b), matches_b.size());
   for (size_t i = 0; i < matches_b.size(); ++i)
     EXPECT_EQ(expected_offsets_b[i], matches_b[i].offset);
 }
diff --git a/components/omnibox/browser/in_memory_url_index_unittest.cc b/components/omnibox/browser/in_memory_url_index_unittest.cc
index 3dbe395..a1b8044 100644
--- a/components/omnibox/browser/in_memory_url_index_unittest.cc
+++ b/components/omnibox/browser/in_memory_url_index_unittest.cc
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "components/omnibox/browser/in_memory_url_index.h"
+
 #include <stddef.h>
 #include <stdint.h>
 
@@ -13,7 +15,6 @@
 #include <utility>
 
 #include "base/auto_reset.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
 #include "base/files/scoped_temp_dir.h"
@@ -32,7 +33,6 @@
 #include "components/history/core/browser/history_service.h"
 #include "components/history/core/test/history_service_test_util.h"
 #include "components/omnibox/browser/history_index_restore_observer.h"
-#include "components/omnibox/browser/in_memory_url_index.h"
 #include "components/omnibox/browser/in_memory_url_index_test_util.h"
 #include "components/omnibox/browser/in_memory_url_index_types.h"
 #include "components/omnibox/browser/url_index_private_data.h"
@@ -278,7 +278,7 @@
 
   // Set up a simple template URL service with a default search engine.
   template_url_service_ = std::make_unique<TemplateURLService>(
-      kTemplateURLData, base::size(kTemplateURLData));
+      kTemplateURLData, std::size(kTemplateURLData));
   TemplateURL* template_url = template_url_service_->GetTemplateURLForKeyword(
       kDefaultTemplateURLKeyword);
   template_url_service_->SetUserSelectedDefaultSearchProvider(template_url);
@@ -1097,7 +1097,7 @@
   };
 
   const SchemeSet& allowlist(scheme_allowlist());
-  for (size_t i = 0; i < base::size(data); ++i) {
+  for (size_t i = 0; i < std::size(data); ++i) {
     GURL url(data[i].url_spec);
     EXPECT_EQ(data[i].expected_is_allowlisted,
               URLIndexPrivateData::URLSchemeIsAllowlisted(url, allowlist));
@@ -1357,7 +1357,7 @@
                     {"abcd :", 5, 2, {0, 1, kInvalid}},
                     {"abcd :", 2, 3, {0, 0, 1}}};
 
-  for (size_t i = 0; i < base::size(test_cases); ++i) {
+  for (size_t i = 0; i < std::size(test_cases); ++i) {
     SCOPED_TRACE(testing::Message()
                  << "search_string = " << test_cases[i].search_string
                  << ", cursor_position = " << test_cases[i].cursor_position);
@@ -1397,7 +1397,7 @@
                     {"abcd_", 4, 2, {0, 1, kInvalid}},
                     {"ab_cd", 5, 1, {0, kInvalid, kInvalid}}};
 
-  for (size_t i = 0; i < base::size(test_cases); ++i) {
+  for (size_t i = 0; i < std::size(test_cases); ++i) {
     SCOPED_TRACE(testing::Message()
                  << "search_string = " << test_cases[i].search_string
                  << ", cursor_position = " << test_cases[i].cursor_position);
diff --git a/components/omnibox/browser/keyword_provider_unittest.cc b/components/omnibox/browser/keyword_provider_unittest.cc
index e4a7f2d..ccf802b 100644
--- a/components/omnibox/browser/keyword_provider_unittest.cc
+++ b/components/omnibox/browser/keyword_provider_unittest.cc
@@ -11,7 +11,6 @@
 #include <utility>
 
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "base/metrics/field_trial.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
@@ -129,7 +128,7 @@
 void KeywordProviderTest::SetUpClientAndKeywordProvider() {
   client_ = std::make_unique<MockAutocompleteProviderClient>();
   client_->set_template_url_service(
-      std::make_unique<TemplateURLService>(kTestData, base::size(kTestData)));
+      std::make_unique<TemplateURLService>(kTestData, std::size(kTestData)));
   kw_provider_ = new KeywordProvider(client_.get(), nullptr);
 }
 
@@ -233,7 +232,7 @@
   };
 
   SetUpClientAndKeywordProvider();
-  RunTest<std::u16string>(edit_cases, base::size(edit_cases),
+  RunTest<std::u16string>(edit_cases, std::size(edit_cases),
                           &AutocompleteMatch::fill_into_edit);
 }
 
@@ -272,7 +271,7 @@
       OmniboxFieldTrial::kBundledExperimentFieldTrialName, "A");
 
   SetUpClientAndKeywordProvider();
-  RunTest<std::u16string>(edit_cases, base::size(edit_cases),
+  RunTest<std::u16string>(edit_cases, std::size(edit_cases),
                           &AutocompleteMatch::fill_into_edit);
 }
 
@@ -310,7 +309,7 @@
   };
 
   SetUpClientAndKeywordProvider();
-  RunTest<GURL>(url_cases, base::size(url_cases),
+  RunTest<GURL>(url_cases, std::size(url_cases),
                 &AutocompleteMatch::destination_url);
 }
 
@@ -351,7 +350,7 @@
   };
 
   SetUpClientAndKeywordProvider();
-  RunTest<std::u16string>(contents_cases, base::size(contents_cases),
+  RunTest<std::u16string>(contents_cases, std::size(contents_cases),
                           &AutocompleteMatch::contents);
 }
 
@@ -460,7 +459,7 @@
        std::u16string::npos},
   };
   SetUpClientAndKeywordProvider();
-  for (size_t i = 0; i < base::size(cases); i++) {
+  for (size_t i = 0; i < std::size(cases); i++) {
     AutocompleteInput input(
         ASCIIToUTF16(cases[i].text), cases[i].cursor_position,
         metrics::OmniboxEventProto::OTHER, TestingSchemeClassifier());
@@ -492,7 +491,7 @@
   };
 
   SetUpClientAndKeywordProvider();
-  RunTest<GURL>(url_cases, base::size(url_cases),
+  RunTest<GURL>(url_cases, std::size(url_cases),
                 &AutocompleteMatch::destination_url);
 }
 
diff --git a/components/omnibox/browser/omnibox_edit_model_unittest.cc b/components/omnibox/browser/omnibox_edit_model_unittest.cc
index 33a48a0..0f07985 100644
--- a/components/omnibox/browser/omnibox_edit_model_unittest.cc
+++ b/components/omnibox/browser/omnibox_edit_model_unittest.cc
@@ -9,7 +9,6 @@
 #include <memory>
 #include <string>
 
-#include "base/cxx17_backports.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/scoped_feature_list.h"
@@ -185,7 +184,7 @@
        false, ""},
   };
 
-  for (size_t i = 0; i < base::size(input); ++i) {
+  for (size_t i = 0; i < std::size(input); ++i) {
     location_bar_model()->set_formatted_full_url(
         base::UTF8ToUTF16(input[i].url_for_editing));
     location_bar_model()->set_url_for_display(
diff --git a/components/omnibox/browser/omnibox_view_unittest.cc b/components/omnibox/browser/omnibox_view_unittest.cc
index 924b83b2..37e97a65 100644
--- a/components/omnibox/browser/omnibox_view_unittest.cc
+++ b/components/omnibox/browser/omnibox_view_unittest.cc
@@ -2,12 +2,14 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "components/omnibox/browser/omnibox_view.h"
+
 #include <stddef.h>
+
 #include <string>
 #include <utility>
 
 #include "base/callback_helpers.h"
-#include "base/cxx17_backports.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/scoped_feature_list.h"
@@ -16,7 +18,6 @@
 #include "components/bookmarks/browser/bookmark_model.h"
 #include "components/bookmarks/test/test_bookmark_client.h"
 #include "components/omnibox/browser/autocomplete_match.h"
-#include "components/omnibox/browser/omnibox_view.h"
 #include "components/omnibox/browser/test_omnibox_client.h"
 #include "components/omnibox/browser/test_omnibox_edit_controller.h"
 #include "components/omnibox/browser/test_omnibox_edit_model.h"
@@ -97,7 +98,7 @@
       "alert(5)"   // Embedded control characters unsafe.
   };
 
-  for (size_t i = 0; i < base::size(urls); i++) {
+  for (size_t i = 0; i < std::size(urls); i++) {
     EXPECT_EQ(ASCIIToUTF16(expecteds[i]),
               OmniboxView::StripJavascriptSchemas(base::UTF8ToUTF16(urls[i])));
   }
diff --git a/components/omnibox/browser/shortcuts_backend_unittest.cc b/components/omnibox/browser/shortcuts_backend_unittest.cc
index 71bd1ed..26722d7 100644
--- a/components/omnibox/browser/shortcuts_backend_unittest.cc
+++ b/components/omnibox/browser/shortcuts_backend_unittest.cc
@@ -8,7 +8,6 @@
 
 #include <memory>
 
-#include "base/cxx17_backports.h"
 #include "base/files/scoped_temp_dir.h"
 #include "base/run_loop.h"
 #include "base/strings/utf_string_conversions.h"
@@ -229,7 +228,7 @@
       "",        "",         AutocompleteMatchType::SEARCH_HISTORY },
   };
 
-  for (size_t i = 0; i < base::size(cases); ++i) {
+  for (size_t i = 0; i < std::size(cases); ++i) {
     ShortcutsDatabase::Shortcut::MatchCore match_core(MatchCoreForTesting(
         std::string(), cases[i].input_contents_class,
         cases[i].input_description_class, cases[i].input_type));
diff --git a/components/omnibox/browser/shortcuts_database_unittest.cc b/components/omnibox/browser/shortcuts_database_unittest.cc
index 4f0bd32..c0815cc4 100644
--- a/components/omnibox/browser/shortcuts_database_unittest.cc
+++ b/components/omnibox/browser/shortcuts_database_unittest.cc
@@ -6,7 +6,6 @@
 
 #include <stddef.h>
 
-#include "base/cxx17_backports.h"
 #include "base/files/scoped_temp_dir.h"
 #include "base/format_macros.h"
 #include "base/path_service.h"
@@ -185,9 +184,9 @@
 
 void ShortcutsDatabaseTest::AddAll() {
   ClearDB();
-  for (size_t i = 0; i < base::size(shortcut_test_db); ++i)
+  for (size_t i = 0; i < std::size(shortcut_test_db); ++i)
     db_->AddShortcut(ShortcutFromTestInfo(shortcut_test_db[i]));
-  EXPECT_EQ(base::size(shortcut_test_db), CountRecords());
+  EXPECT_EQ(std::size(shortcut_test_db), CountRecords());
 }
 
 // Actual tests ---------------------------------------------------------------
@@ -223,7 +222,7 @@
   shortcut_ids.push_back(shortcut_test_db[0].guid);
   shortcut_ids.push_back(shortcut_test_db[2].guid);
   EXPECT_TRUE(db_->DeleteShortcutsWithIDs(shortcut_ids));
-  EXPECT_EQ(base::size(shortcut_test_db) - 2, CountRecords());
+  EXPECT_EQ(std::size(shortcut_test_db) - 2, CountRecords());
 
   ShortcutsDatabase::GuidToShortcutMap shortcuts;
   db_->LoadShortcuts(&shortcuts);
@@ -242,7 +241,7 @@
   AddAll();
 
   EXPECT_TRUE(db_->DeleteShortcutsWithURL("http://slashdot.org/"));
-  EXPECT_EQ(base::size(shortcut_test_db) - 2, CountRecords());
+  EXPECT_EQ(std::size(shortcut_test_db) - 2, CountRecords());
 
   ShortcutsDatabase::GuidToShortcutMap shortcuts;
   db_->LoadShortcuts(&shortcuts);
@@ -261,7 +260,7 @@
   AddAll();
   ShortcutsDatabase::GuidToShortcutMap shortcuts;
   db_->LoadShortcuts(&shortcuts);
-  EXPECT_EQ(base::size(shortcut_test_db), shortcuts.size());
+  EXPECT_EQ(std::size(shortcut_test_db), shortcuts.size());
   EXPECT_TRUE(db_->DeleteAllShortcuts());
   db_->LoadShortcuts(&shortcuts);
   EXPECT_EQ(0U, shortcuts.size());
diff --git a/components/omnibox/browser/shortcuts_provider_unittest.cc b/components/omnibox/browser/shortcuts_provider_unittest.cc
index f57aad2..873f6c1 100644
--- a/components/omnibox/browser/shortcuts_provider_unittest.cc
+++ b/components/omnibox/browser/shortcuts_provider_unittest.cc
@@ -14,7 +14,6 @@
 #include <string>
 #include <vector>
 
-#include "base/cxx17_backports.h"
 #include "base/files/scoped_temp_dir.h"
 #include "base/memory/ref_counted.h"
 #include "base/run_loop.h"
@@ -289,7 +288,7 @@
   provider_ = base::MakeRefCounted<ShortcutsProvider>(client_.get());
   PopulateShortcutsBackendWithTestData(client_->GetShortcutsBackend(),
                                        shortcut_test_db,
-                                       base::size(shortcut_test_db));
+                                       std::size(shortcut_test_db));
 }
 
 void ShortcutsProviderTest::TearDown() {
@@ -636,7 +635,7 @@
   size_t original_shortcuts_count = backend->shortcuts_map().size();
 
   PopulateShortcutsBackendWithTestData(backend, shortcuts_to_test_delete,
-                                       base::size(shortcuts_to_test_delete));
+                                       std::size(shortcuts_to_test_delete));
 
   EXPECT_EQ(original_shortcuts_count + 4, backend->shortcuts_map().size());
   EXPECT_FALSE(backend->shortcuts_map().end() ==
diff --git a/components/open_from_clipboard/clipboard_recent_content_generic_unittest.cc b/components/open_from_clipboard/clipboard_recent_content_generic_unittest.cc
index ad59ef4..a05a309 100644
--- a/components/open_from_clipboard/clipboard_recent_content_generic_unittest.cc
+++ b/components/open_from_clipboard/clipboard_recent_content_generic_unittest.cc
@@ -8,7 +8,6 @@
 #include <string>
 #include <utility>
 
-#include "base/cxx17_backports.h"
 #include "base/memory/raw_ptr.h"
 #include "base/run_loop.h"
 #include "base/strings/utf_string_conversions.h"
@@ -123,7 +122,7 @@
 
   ClipboardRecentContentGeneric recent_content;
   base::Time now = base::Time::Now();
-  for (size_t i = 0; i < base::size(test_data); ++i) {
+  for (size_t i = 0; i < std::size(test_data); ++i) {
     test_clipboard_->WriteText(test_data[i].clipboard.data(),
                                test_data[i].clipboard.length());
     test_clipboard_->SetLastModifiedTime(now - base::Seconds(10));
diff --git a/components/open_from_clipboard/clipboard_recent_content_ios.mm b/components/open_from_clipboard/clipboard_recent_content_ios.mm
index c4f82529..f26c56fb6 100644
--- a/components/open_from_clipboard/clipboard_recent_content_ios.mm
+++ b/components/open_from_clipboard/clipboard_recent_content_ios.mm
@@ -5,11 +5,10 @@
 #import "components/open_from_clipboard/clipboard_recent_content_ios.h"
 
 #import <CommonCrypto/CommonDigest.h>
+#import <UIKit/UIKit.h>
 #include <stddef.h>
 #include <stdint.h>
-#import <UIKit/UIKit.h>
 
-#include "base/cxx17_backports.h"
 #include "base/metrics/user_metrics.h"
 #include "base/notreached.h"
 #include "base/strings/sys_string_conversions.h"
@@ -35,7 +34,7 @@
 NSSet<NSString*>* getAuthorizedSchemeList(
     const std::string& application_scheme) {
   NSMutableSet<NSString*>* schemes = [NSMutableSet set];
-  for (size_t i = 0; i < base::size(kAuthorizedSchemes); ++i) {
+  for (size_t i = 0; i < std::size(kAuthorizedSchemes); ++i) {
     [schemes addObject:base::SysUTF8ToNSString(kAuthorizedSchemes[i])];
   }
   if (!application_scheme.empty()) {
diff --git a/components/optimization_guide/content/browser/page_content_annotations_web_contents_observer_unittest.cc b/components/optimization_guide/content/browser/page_content_annotations_web_contents_observer_unittest.cc
index 49397fca..ea9af5c 100644
--- a/components/optimization_guide/content/browser/page_content_annotations_web_contents_observer_unittest.cc
+++ b/components/optimization_guide/content/browser/page_content_annotations_web_contents_observer_unittest.cc
@@ -208,7 +208,7 @@
 
     // Set up a simple template URL service with a default search engine.
     template_url_service_ = std::make_unique<TemplateURLService>(
-        kTemplateURLData, base::size(kTemplateURLData));
+        kTemplateURLData, std::size(kTemplateURLData));
     template_url_ = template_url_service_->GetTemplateURLForKeyword(
         kDefaultTemplateURLKeyword);
     template_url_service_->SetUserSelectedDefaultSearchProvider(template_url_);
diff --git a/components/os_crypt/keyring_util_linux.cc b/components/os_crypt/keyring_util_linux.cc
index ddd948df..b7b5065 100644
--- a/components/os_crypt/keyring_util_linux.cc
+++ b/components/os_crypt/keyring_util_linux.cc
@@ -6,7 +6,6 @@
 
 #include <dlfcn.h>
 
-#include "base/cxx17_backports.h"
 #include "base/logging.h"
 
 decltype(&::gnome_keyring_is_available)
@@ -78,7 +77,7 @@
     return false;
   }
 
-  for (size_t i = 0; i < base::size(functions); ++i) {
+  for (size_t i = 0; i < std::size(functions); ++i) {
     dlerror();
     *functions[i].pointer = dlsym(handle, functions[i].name);
     const char* error = dlerror();
diff --git a/components/page_info/page_info_ui.cc b/components/page_info/page_info_ui.cc
index dc41aa1..505602f6 100644
--- a/components/page_info/page_info_ui.cc
+++ b/components/page_info/page_info_ui.cc
@@ -8,7 +8,6 @@
 
 #include "base/command_line.h"
 #include "base/containers/span.h"
-#include "base/cxx17_backports.h"
 #include "base/feature_list.h"
 #include "base/strings/utf_string_conversions.h"
 #include "build/build_config.h"
@@ -54,7 +53,7 @@
     IDS_PAGE_INFO_PERMISSION_ASK_BY_POLICY,
     kInvalidResourceID,
     kInvalidResourceID};
-static_assert(base::size(kPermissionButtonTextIDPolicyManaged) ==
+static_assert(std::size(kPermissionButtonTextIDPolicyManaged) ==
                   CONTENT_SETTING_NUM_SETTINGS,
               "kPermissionButtonTextIDPolicyManaged array size is incorrect");
 
@@ -67,7 +66,7 @@
     IDS_PAGE_INFO_PERMISSION_ASK_BY_EXTENSION,
     kInvalidResourceID,
     kInvalidResourceID};
-static_assert(base::size(kPermissionButtonTextIDExtensionManaged) ==
+static_assert(std::size(kPermissionButtonTextIDExtensionManaged) ==
                   CONTENT_SETTING_NUM_SETTINGS,
               "kPermissionButtonTextIDExtensionManaged array size is "
               "incorrect");
@@ -81,7 +80,7 @@
     IDS_PAGE_INFO_BUTTON_TEXT_ASK_BY_USER,
     kInvalidResourceID,
     IDS_PAGE_INFO_BUTTON_TEXT_DETECT_IMPORTANT_CONTENT_BY_USER};
-static_assert(base::size(kPermissionButtonTextIDUserManaged) ==
+static_assert(std::size(kPermissionButtonTextIDUserManaged) ==
                   CONTENT_SETTING_NUM_SETTINGS,
               "kPermissionButtonTextIDUserManaged array size is incorrect");
 
@@ -94,7 +93,7 @@
     IDS_PAGE_INFO_BUTTON_TEXT_ASK_BY_DEFAULT,
     kInvalidResourceID,
     IDS_PAGE_INFO_BUTTON_TEXT_DETECT_IMPORTANT_CONTENT_BY_DEFAULT};
-static_assert(base::size(kPermissionButtonTextIDDefaultSetting) ==
+static_assert(std::size(kPermissionButtonTextIDDefaultSetting) ==
                   CONTENT_SETTING_NUM_SETTINGS,
               "kPermissionButtonTextIDDefaultSetting array size is incorrect");
 
@@ -109,7 +108,7 @@
     kInvalidResourceID,
     kInvalidResourceID};
 static_assert(
-    base::size(kSoundPermissionButtonTextIDUserManaged) ==
+    std::size(kSoundPermissionButtonTextIDUserManaged) ==
         CONTENT_SETTING_NUM_SETTINGS,
     "kSoundPermissionButtonTextIDUserManaged array size is incorrect");
 
@@ -124,7 +123,7 @@
     kInvalidResourceID,
     kInvalidResourceID};
 static_assert(
-    base::size(kSoundPermissionButtonTextIDDefaultSetting) ==
+    std::size(kSoundPermissionButtonTextIDDefaultSetting) ==
         CONTENT_SETTING_NUM_SETTINGS,
     "kSoundPermissionButtonTextIDDefaultSetting array size is incorrect");
 #endif
diff --git a/components/password_manager/core/browser/android_affiliation/facet_manager_unittest.cc b/components/password_manager/core/browser/android_affiliation/facet_manager_unittest.cc
index 740302d6..4343bb6 100644
--- a/components/password_manager/core/browser/android_affiliation/facet_manager_unittest.cc
+++ b/components/password_manager/core/browser/android_affiliation/facet_manager_unittest.cc
@@ -11,7 +11,6 @@
 
 #include "base/bind.h"
 #include "base/callback_helpers.h"
-#include "base/cxx17_backports.h"
 #include "base/location.h"
 #include "base/memory/raw_ptr.h"
 #include "base/memory/ref_counted.h"
@@ -597,7 +596,7 @@
   const base::TimeDelta kMaximumTestDuration = 2 * GetCacheHardExpiryPeriod();
 
   for (const bool cache_initially_stale : kFalseTrue) {
-    for (size_t i = 0; i < base::size(kTestCases); ++i) {
+    for (size_t i = 0; i < std::size(kTestCases); ++i) {
       SCOPED_TRACE(testing::Message() << "Test case: #" << i);
       SCOPED_TRACE(cache_initially_stale ? "Cache initially stale"
                                          : "Cache initially empty");
@@ -733,7 +732,7 @@
 
   const base::TimeDelta kMaximumTestDuration = 2 * GetCacheHardExpiryPeriod();
 
-  for (size_t i = 0; i < base::size(kTestCases); ++i) {
+  for (size_t i = 0; i < std::size(kTestCases); ++i) {
     SCOPED_TRACE(testing::Message() << "Test case: #" << i);
 
     fake_facet_manager_host()->set_fake_database_content(
@@ -798,7 +797,7 @@
 
   const base::TimeDelta kMaximumTestDuration = 2 * GetCacheHardExpiryPeriod();
 
-  for (size_t i = 0; i < base::size(kTestCases); ++i) {
+  for (size_t i = 0; i < std::size(kTestCases); ++i) {
     SCOPED_TRACE(testing::Message() << "Test case: #" << i);
 
     fake_facet_manager_host()->set_fake_database_content(
@@ -924,8 +923,8 @@
   const base::TimeDelta kTestDuration =
       GetCacheSoftExpiryPeriod() + GetCacheHardExpiryPeriod();
 
-  for (size_t j = 0; j < base::size(kFirstPrefetchParams); ++j) {
-    for (size_t i = 0; i < base::size(kSecondPrefetchParams); ++i) {
+  for (size_t j = 0; j < std::size(kFirstPrefetchParams); ++j) {
+    for (size_t i = 0; i < std::size(kSecondPrefetchParams); ++i) {
       SCOPED_TRACE(testing::Message() << "Test case: #" << j << "." << i);
 
       fake_facet_manager_host()->clear_fake_database_content();
@@ -989,7 +988,7 @@
   const base::TimeDelta kTestDuration =
       GetCacheSoftExpiryPeriod() + GetCacheHardExpiryPeriod();
 
-  for (size_t i = 0; i < base::size(kTestCases); ++i) {
+  for (size_t i = 0; i < std::size(kTestCases); ++i) {
     SCOPED_TRACE(testing::Message() << "Test case: #" << i);
 
     fake_facet_manager_host()->clear_fake_database_content();
@@ -1114,7 +1113,7 @@
                                                GetCacheHardExpiryPeriod() +
                                                2 * GetShortTestPeriod();
 
-  for (size_t i = 0; i < base::size(kTestCases); ++i) {
+  for (size_t i = 0; i < std::size(kTestCases); ++i) {
     SCOPED_TRACE(testing::Message() << "Test case: #" << i);
 
     fake_facet_manager_host()->clear_fake_database_content();
@@ -1194,7 +1193,7 @@
       GetCacheSoftExpiryPeriod(),
       2 * GetCacheSoftExpiryPeriod()};
 
-  for (size_t i = 0; i < base::size(kTestCases); ++i) {
+  for (size_t i = 0; i < std::size(kTestCases); ++i) {
     SCOPED_TRACE(testing::Message() << "Test case: #" << i);
 
     fake_facet_manager_host()->clear_fake_database_content();
diff --git a/components/password_manager/core/browser/form_parsing/fuzzer/form_data_producer.cc b/components/password_manager/core/browser/form_parsing/fuzzer/form_data_producer.cc
index 95eeb19..b33438a 100644
--- a/components/password_manager/core/browser/form_parsing/fuzzer/form_data_producer.cc
+++ b/components/password_manager/core/browser/form_parsing/fuzzer/form_data_producer.cc
@@ -50,7 +50,7 @@
     return false;
   prediction->may_use_prefilled_placeholder = accessor->ConsumeBit();
   const size_t prediction_idx = accessor->ConsumeNumber(3);
-  if (prediction_idx < base::size(kPasswordRelatedServerTypes)) {
+  if (prediction_idx < std::size(kPasswordRelatedServerTypes)) {
     prediction->type = kPasswordRelatedServerTypes[prediction_idx];
   } else {
     // Set random type, probably even invalid. FormParser should gracefully
diff --git a/components/password_manager/core/browser/form_parsing/password_field_prediction_unittest.cc b/components/password_manager/core/browser/form_parsing/password_field_prediction_unittest.cc
index 651ba7cb..c7d005c 100644
--- a/components/password_manager/core/browser/form_parsing/password_field_prediction_unittest.cc
+++ b/components/password_manager/core/browser/form_parsing/password_field_prediction_unittest.cc
@@ -6,7 +6,6 @@
 
 #include <vector>
 
-#include "base/cxx17_backports.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/scoped_feature_list.h"
 #include "components/autofill/core/browser/form_structure.h"
@@ -94,7 +93,7 @@
   };
 
   FormData form_data;
-  for (size_t i = 0; i < base::size(test_fields); ++i) {
+  for (size_t i = 0; i < std::size(test_fields); ++i) {
     FormFieldData field;
     field.unique_renderer_id = autofill::FieldRendererId(i + 1000);
     field.name = ASCIIToUTF16(test_fields[i].name);
@@ -104,7 +103,7 @@
 
   FormStructure form_structure(form_data);
   // Set server predictions and create expected votes.
-  for (size_t i = 0; i < base::size(test_fields); ++i) {
+  for (size_t i = 0; i < std::size(test_fields); ++i) {
     AutofillField* field = form_structure.field(i);
 
     std::vector<FieldPrediction> predictions;
@@ -129,9 +128,9 @@
   // Check whether actual predictions are equal to expected ones.
   EXPECT_EQ(driver_id, actual_predictions.driver_id);
   EXPECT_EQ(form_structure.form_signature(), actual_predictions.form_signature);
-  EXPECT_EQ(base::size(test_fields), actual_predictions.fields.size());
+  EXPECT_EQ(std::size(test_fields), actual_predictions.fields.size());
 
-  for (size_t i = 0; i < base::size(test_fields); ++i) {
+  for (size_t i = 0; i < std::size(test_fields); ++i) {
     const PasswordFieldPrediction& actual_prediction =
         actual_predictions.fields[i];
     EXPECT_EQ(test_fields[i].expected_type, actual_prediction.type);
diff --git a/components/password_manager/core/browser/import/csv_password_iterator_unittest.cc b/components/password_manager/core/browser/import/csv_password_iterator_unittest.cc
index edd3687..be748be 100644
--- a/components/password_manager/core/browser/import/csv_password_iterator_unittest.cc
+++ b/components/password_manager/core/browser/import/csv_password_iterator_unittest.cc
@@ -7,7 +7,6 @@
 #include <string>
 #include <utility>
 
-#include "base/cxx17_backports.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/task_environment.h"
 #include "components/password_manager/core/browser/import/csv_password.h"
@@ -88,7 +87,7 @@
   CSVPasswordIterator iter(kColMap, kCSVBlob);
 
   CSVPasswordIterator check = iter;
-  for (size_t i = 0; i < base::size(kExpectedUsernames); ++i) {
+  for (size_t i = 0; i < std::size(kExpectedUsernames); ++i) {
     EXPECT_EQ(CSVPassword::Status::kOK, (check++)->TryParse())
         << "on line " << i;
   }
diff --git a/components/password_manager/core/browser/import/csv_password_sequence_unittest.cc b/components/password_manager/core/browser/import/csv_password_sequence_unittest.cc
index 0c95d77..350ab84 100644
--- a/components/password_manager/core/browser/import/csv_password_sequence_unittest.cc
+++ b/components/password_manager/core/browser/import/csv_password_sequence_unittest.cc
@@ -107,7 +107,7 @@
 
   size_t order = 0;
   for (const CSVPassword& pwd : seq) {
-    ASSERT_LT(order, base::size(kExpectedCredentials));
+    ASSERT_LT(order, std::size(kExpectedCredentials));
     PasswordForm parsed = pwd.ParseValid();
     const auto& expected = kExpectedCredentials[order];
     EXPECT_EQ(GURL(expected.url), parsed.url);
diff --git a/components/password_manager/core/browser/leak_detection/encryption_utils.cc b/components/password_manager/core/browser/leak_detection/encryption_utils.cc
index e0ab2b6..e5bd106 100644
--- a/components/password_manager/core/browser/leak_detection/encryption_utils.cc
+++ b/components/password_manager/core/browser/leak_detection/encryption_utils.cc
@@ -7,7 +7,6 @@
 #include <climits>
 #include <utility>
 
-#include "base/cxx17_backports.h"
 #include "base/strings/strcat.h"
 #include "base/strings/string_piece.h"
 #include "base/strings/string_util.h"
@@ -60,7 +59,7 @@
   return crypto::SHA256HashString(base::StrCat(
       {canonicalized_username,
        base::StringPiece(reinterpret_cast<const char*>(kUsernameSalt),
-                         base::size(kUsernameSalt))}));
+                         std::size(kUsernameSalt))}));
 }
 
 std::string BucketizeUsername(base::StringPiece canonicalized_username) {
@@ -110,7 +109,7 @@
   std::string salt = base::StrCat(
       {canonicalized_username,
        base::StringPiece(reinterpret_cast<const char*>(kPasswordHashSalt),
-                         base::size(kPasswordHashSalt))});
+                         std::size(kPasswordHashSalt))});
 
   std::string result;
   uint8_t* key_data =
diff --git a/components/password_manager/core/browser/leak_detection/encryption_utils_unittest.cc b/components/password_manager/core/browser/leak_detection/encryption_utils_unittest.cc
index e198998..391c5f7 100644
--- a/components/password_manager/core/browser/leak_detection/encryption_utils_unittest.cc
+++ b/components/password_manager/core/browser/leak_detection/encryption_utils_unittest.cc
@@ -6,7 +6,6 @@
 
 #include <vector>
 
-#include "base/cxx17_backports.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "testing/gmock/include/gmock/gmock.h"
@@ -64,7 +63,7 @@
       0x0C, 0x9F, 0x61, 0x9A, 0xA3, 0xC9, 0x96, 0xEC, 0x4C, 0xB3};
   EXPECT_THAT(HashUsername("jonsnow"),
               ElementsAreArray(reinterpret_cast<const char*>(kExpected),
-                               base::size(kExpected)));
+                               std::size(kExpected)));
 }
 
 TEST(EncryptionUtils, BucketizeUsername) {
@@ -82,7 +81,7 @@
       0x6B, 0x4D, 0x76, 0x7B, 0xF2, 0x83, 0x85, 0x55, 0x73, 0xFD};
   std::string result = *ScryptHashUsernameAndPassword("user", "password123");
   EXPECT_THAT(result, ElementsAreArray(reinterpret_cast<const char*>(kExpected),
-                                       base::size(kExpected)));
+                                       std::size(kExpected)));
 }
 
 TEST(EncryptionUtils, EncryptAndDecrypt) {
@@ -105,7 +104,7 @@
                               0x9B, 0x0B, 0xAF, 0x66, 0x97, 0xF2, 0x08, 0x85,
                               0x01, 0x24, 0xB6, 0xED, 0x58, 0x6D, 0xE8, 0x9A};
   const std::string kKeyStr(reinterpret_cast<const char*>(kKey),
-                            base::size(kKey));
+                            std::size(kKey));
   SCOPED_TRACE(testing::Message()
                << "key=" << testing::PrintToString(StringAsArray(kKeyStr)));
   // The expected result was obtained by running the Java implementation of the
@@ -118,7 +117,7 @@
   std::string cipher = *CipherEncryptWithKey(kRandomString, kKeyStr);
   EXPECT_THAT(cipher,
               ElementsAreArray(reinterpret_cast<const char*>(kEncrypted),
-                               base::size(kEncrypted)));
+                               std::size(kEncrypted)));
   EXPECT_THAT(CalculateECCurveHash(kRandomString),
               ElementsAreArray(*CipherDecrypt(cipher, kKeyStr)));
 }
diff --git a/components/password_manager/core/browser/leak_detection_dialog_utils_unittest.cc b/components/password_manager/core/browser/leak_detection_dialog_utils_unittest.cc
index 022dfc8..3db5a59e 100644
--- a/components/password_manager/core/browser/leak_detection_dialog_utils_unittest.cc
+++ b/components/password_manager/core/browser/leak_detection_dialog_utils_unittest.cc
@@ -157,7 +157,7 @@
 };
 
 TEST_F(CredentialLeakDialogUtilsTest, GetAcceptButtonLabel) {
-  for (size_t i = 0; i < base::size(kLeakTypesTestCases); ++i) {
+  for (size_t i = 0; i < std::size(kLeakTypesTestCases); ++i) {
     SCOPED_TRACE(testing::Message() << i);
     EXPECT_EQ(
         l10n_util::GetStringUTF16(kLeakTypesTestCases[i].accept_button_id),
@@ -166,7 +166,7 @@
 }
 
 TEST_F(CredentialLeakDialogUtilsTest, GetCancelButtonLabel) {
-  for (size_t i = 0; i < base::size(kLeakTypesTestCases); ++i) {
+  for (size_t i = 0; i < std::size(kLeakTypesTestCases); ++i) {
     SCOPED_TRACE(testing::Message() << i);
     EXPECT_EQ(
         l10n_util::GetStringUTF16(kLeakTypesTestCases[i].cancel_button_id),
@@ -175,7 +175,7 @@
 }
 
 TEST_F(CredentialLeakDialogUtilsTest, GetDescription) {
-  for (size_t i = 0; i < base::size(kLeakTypesTestCases); ++i) {
+  for (size_t i = 0; i < std::size(kLeakTypesTestCases); ++i) {
     SCOPED_TRACE(testing::Message() << i);
     std::u16string expected_message =
         l10n_util::GetStringUTF16(kLeakTypesTestCases[i].leak_message_id);
@@ -185,7 +185,7 @@
 }
 
 TEST_F(CredentialLeakDialogUtilsTest, GetTitle) {
-  for (size_t i = 0; i < base::size(kLeakTypesTestCases); ++i) {
+  for (size_t i = 0; i < std::size(kLeakTypesTestCases); ++i) {
     SCOPED_TRACE(testing::Message() << i);
     EXPECT_EQ(l10n_util::GetStringUTF16(kLeakTypesTestCases[i].leak_title_id),
               GetTitle(kLeakTypesTestCases[i].leak_type));
@@ -193,7 +193,7 @@
 }
 
 TEST_F(CredentialLeakDialogUtilsTest, ShouldCheckPasswords) {
-  for (size_t i = 0; i < base::size(kLeakTypesTestCases); ++i) {
+  for (size_t i = 0; i < std::size(kLeakTypesTestCases); ++i) {
     SCOPED_TRACE(testing::Message() << i);
     EXPECT_EQ(kLeakTypesTestCases[i].should_check_passwords,
               ShouldCheckPasswords(kLeakTypesTestCases[i].leak_type));
@@ -201,7 +201,7 @@
 }
 
 TEST_F(CredentialLeakDialogUtilsTest, ShouldShowCancelButton) {
-  for (size_t i = 0; i < base::size(kLeakTypesTestCases); ++i) {
+  for (size_t i = 0; i < std::size(kLeakTypesTestCases); ++i) {
     SCOPED_TRACE(testing::Message() << i);
     EXPECT_EQ(kLeakTypesTestCases[i].should_show_cancel_button,
               ShouldShowCancelButton(kLeakTypesTestCases[i].leak_type));
diff --git a/components/password_manager/core/browser/login_database_ios_unittest.cc b/components/password_manager/core/browser/login_database_ios_unittest.cc
index 0305aa5..9ad8ff84 100644
--- a/components/password_manager/core/browser/login_database_ios_unittest.cc
+++ b/components/password_manager/core/browser/login_database_ios_unittest.cc
@@ -9,7 +9,6 @@
 
 #include <tuple>
 
-#include "base/cxx17_backports.h"
 #include "base/files/scoped_temp_dir.h"
 #include "base/mac/scoped_cftyperef.h"
 #include "base/strings/utf_string_conversions.h"
@@ -56,7 +55,7 @@
   const void* queryKeys[] = {kSecClass};
   const void* queryValues[] = {kSecClassGenericPassword};
   ScopedCFTypeRef<CFDictionaryRef> query(CFDictionaryCreate(
-      NULL, queryKeys, queryValues, base::size(queryKeys),
+      NULL, queryKeys, queryValues, std::size(queryKeys),
       &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks));
   OSStatus status = SecItemDelete(query);
   // iOS7 returns an error of |errSecItemNotFound| if you try to clear an empty
@@ -94,7 +93,7 @@
       std::u16string(),
   };
 
-  for (unsigned int i = 0; i < base::size(test_passwords); i++) {
+  for (unsigned int i = 0; i < std::size(test_passwords); i++) {
     std::string encrypted;
     EXPECT_EQ(LoginDatabase::ENCRYPTION_RESULT_SUCCESS,
               login_db_->EncryptedString(test_passwords[i], &encrypted));
@@ -199,7 +198,7 @@
   forms[2].date_created = base::Time::FromDoubleT(300);
   forms[2].password_value = u"pass2";
 
-  for (size_t i = 0; i < base::size(forms); i++) {
+  for (size_t i = 0; i < std::size(forms); i++) {
     std::ignore = login_db_->AddLogin(forms[i]);
   }
 
diff --git a/components/password_manager/core/browser/password_hash_data_unittest.cc b/components/password_manager/core/browser/password_hash_data_unittest.cc
index 928697e..5e7bb995 100644
--- a/components/password_manager/core/browser/password_hash_data_unittest.cc
+++ b/components/password_manager/core/browser/password_hash_data_unittest.cc
@@ -4,7 +4,6 @@
 
 #include "components/password_manager/core/browser/password_hash_data.h"
 
-#include "base/cxx17_backports.h"
 #include "base/strings/utf_string_conversions.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -20,12 +19,12 @@
       UINT64_C(0x3645af77f),
   };
 
-  static_assert(base::size(kPlainText) == base::size(kSalt),
+  static_assert(std::size(kPlainText) == std::size(kSalt),
                 "Arrays must have the same size");
-  static_assert(base::size(kPlainText) == base::size(kExpectedHash),
+  static_assert(std::size(kPlainText) == std::size(kExpectedHash),
                 "Arrays must have the same size");
 
-  for (size_t i = 0; i < base::size(kPlainText); ++i) {
+  for (size_t i = 0; i < std::size(kPlainText); ++i) {
     SCOPED_TRACE(i);
     std::u16string text = base::UTF8ToUTF16(kPlainText[i]);
     EXPECT_EQ(kExpectedHash[i], CalculatePasswordHash(text, kSalt[i]));
diff --git a/components/password_manager/core/browser/password_reuse_detection_manager_unittest.cc b/components/password_manager/core/browser/password_reuse_detection_manager_unittest.cc
index 816c836..7078aca 100644
--- a/components/password_manager/core/browser/password_reuse_detection_manager_unittest.cc
+++ b/components/password_manager/core/browser/password_reuse_detection_manager_unittest.cc
@@ -4,7 +4,6 @@
 
 #include "components/password_manager/core/browser/password_reuse_detection_manager.h"
 
-#include "base/cxx17_backports.h"
 #include "base/run_loop.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/simple_test_clock.h"
@@ -78,7 +77,7 @@
       .WillRepeatedly(testing::Return(&reuse_manager_));
   PasswordReuseDetectionManager manager(&client_);
 
-  for (size_t test = 0; test < base::size(gurls); ++test) {
+  for (size_t test = 0; test < std::size(gurls); ++test) {
     manager.DidNavigateMainFrame(gurls[test]);
     for (size_t i = 0; i < input[test].size(); ++i) {
       std::u16string expected_input = input[test].substr(0, i + 1);
@@ -190,7 +189,7 @@
       .WillRepeatedly(testing::Return(&reuse_manager_));
   PasswordReuseDetectionManager manager(&client_);
 
-  for (size_t test = 0; test < base::size(gurls); ++test) {
+  for (size_t test = 0; test < std::size(gurls); ++test) {
     manager.DidNavigateMainFrame(gurls[test]);
     std::u16string expected_input = input[test];
     if (expected_input.size() > kMaxNumberOfCharactersToStore)
diff --git a/components/password_manager/core/browser/password_sync_util_unittest.cc b/components/password_manager/core/browser/password_sync_util_unittest.cc
index 03fa0dc..db4f31b 100644
--- a/components/password_manager/core/browser/password_sync_util_unittest.cc
+++ b/components/password_manager/core/browser/password_sync_util_unittest.cc
@@ -6,7 +6,6 @@
 
 #include <stddef.h>
 
-#include "base/cxx17_backports.h"
 #include "base/memory/raw_ptr.h"
 #include "base/strings/utf_string_conversions.h"
 #include "build/build_config.h"
@@ -62,7 +61,7 @@
        nullptr},
   };
 
-  for (size_t i = 0; i < base::size(kTestCases); ++i) {
+  for (size_t i = 0; i < std::size(kTestCases); ++i) {
     SCOPED_TRACE(testing::Message() << "i=" << i);
     SetSyncingPasswords(kTestCases[i].password_sync ==
                         TestCase::SYNCING_PASSWORDS);
@@ -93,7 +92,7 @@
        true},
   };
 
-  for (size_t i = 0; i < base::size(kTestCases); ++i) {
+  for (size_t i = 0; i < std::size(kTestCases); ++i) {
     SCOPED_TRACE(testing::Message() << "i=" << i);
     SetSyncingPasswords(true);
     FakeSigninAs(kTestCases[i].fake_sync_username);
@@ -117,7 +116,7 @@
       {"sync_user@example.org", "non_sync_user@example.org", false},
   };
 
-  for (size_t i = 0; i < base::size(kTestCases); ++i) {
+  for (size_t i = 0; i < std::size(kTestCases); ++i) {
     SCOPED_TRACE(testing::Message() << "i=" << i);
     if (kTestCases[i].fake_sync_email.empty()) {
       EXPECT_EQ(kTestCases[i].expected_result,
diff --git a/components/password_manager/core/browser/votes_uploader.cc b/components/password_manager/core/browser/votes_uploader.cc
index e945749..39b9fa7 100644
--- a/components/password_manager/core/browser/votes_uploader.cc
+++ b/components/password_manager/core/browser/votes_uploader.cc
@@ -189,7 +189,7 @@
 // Returns a uniformly distributed random symbol from the set of random symbols
 // defined by the string |kSpecialSymbols|.
 int GetRandomSpecialSymbol() {
-  return kSpecialSymbols[base::RandGenerator(base::size(kSpecialSymbols))];
+  return kSpecialSymbols[base::RandGenerator(std::size(kSpecialSymbols))];
 }
 
 // Returns a random special symbol used in |password|.
diff --git a/components/password_manager/ios/account_select_fill_data_unittest.cc b/components/password_manager/ios/account_select_fill_data_unittest.cc
index 4f70b91..746fde87 100644
--- a/components/password_manager/ios/account_select_fill_data_unittest.cc
+++ b/components/password_manager/ios/account_select_fill_data_unittest.cc
@@ -4,7 +4,6 @@
 
 #include "components/password_manager/ios/account_select_fill_data.h"
 
-#include "base/cxx17_backports.h"
 #include "base/strings/utf_string_conversions.h"
 #include "components/autofill/core/common/password_form_fill_data.h"
 #include "components/password_manager/ios/test_helpers.h"
@@ -37,7 +36,7 @@
 class AccountSelectFillDataTest : public PlatformTest {
  public:
   AccountSelectFillDataTest() {
-    for (size_t i = 0; i < base::size(form_data_); ++i) {
+    for (size_t i = 0; i < std::size(form_data_); ++i) {
       SetPasswordFormFillData(
           kUrl, kFormNames[i], kFormUniqueIDs[i], kUsernameElements[i],
           kUsernameUniqueIDs[i], kUsernames[i], kPasswordElements[i],
@@ -176,7 +175,7 @@
   account_select_fill_data.Add(form_data_[1]);
 
   for (bool is_password_field : {false, true}) {
-    for (size_t form_i = 0; form_i < base::size(form_data_); ++form_i) {
+    for (size_t form_i = 0; form_i < std::size(form_data_); ++form_i) {
       const auto& form_data = form_data_[form_i];
       // Suggestions should be shown on any password field on the form. So in
       // case of clicking on a password field it is taken an id different from
diff --git a/components/payments/core/strings_util.cc b/components/payments/core/strings_util.cc
index e6d9389..e8c43219 100644
--- a/components/payments/core/strings_util.cc
+++ b/components/payments/core/strings_util.cc
@@ -4,8 +4,6 @@
 
 #include "components/payments/core/strings_util.h"
 
-
-#include "base/cxx17_backports.h"
 #include "base/notreached.h"
 #include "components/autofill/core/browser/data_model/autofill_profile.h"
 #include "components/autofill/core/browser/field_types.h"
@@ -29,8 +27,8 @@
       autofill::ADDRESS_HOME_SORTING_CODE,
   };
 
-  return profile.ConstructInferredLabel(kLabelFields, base::size(kLabelFields),
-                                        base::size(kLabelFields), locale);
+  return profile.ConstructInferredLabel(kLabelFields, std::size(kLabelFields),
+                                        std::size(kLabelFields), locale);
 }
 
 std::u16string GetShippingAddressSelectorInfoMessage(
diff --git a/components/pdf/renderer/pdf_accessibility_tree_browsertest.cc b/components/pdf/renderer/pdf_accessibility_tree_browsertest.cc
index 51d8a99c..92adf23 100644
--- a/components/pdf/renderer/pdf_accessibility_tree_browsertest.cc
+++ b/components/pdf/renderer/pdf_accessibility_tree_browsertest.cc
@@ -985,7 +985,7 @@
     EXPECT_TRUE(listbox_node->HasState(ax::mojom::State::kMultiselectable));
     EXPECT_TRUE(listbox_node->HasState(ax::mojom::State::kFocusable));
     EXPECT_EQ(kExpectedBounds[0], listbox_node->data().relative_bounds.bounds);
-    ASSERT_EQ(base::size(kExpectedOptions[0]), listbox_node->children().size());
+    ASSERT_EQ(std::size(kExpectedOptions[0]), listbox_node->children().size());
     const std::vector<ui::AXNode*>& listbox_child_nodes =
         listbox_node->children();
     for (size_t i = 0; i < listbox_child_nodes.size(); i++) {
@@ -1017,7 +1017,7 @@
     EXPECT_FALSE(listbox_node->HasState(ax::mojom::State::kMultiselectable));
     EXPECT_TRUE(listbox_node->HasState(ax::mojom::State::kFocusable));
     EXPECT_EQ(kExpectedBounds[1], listbox_node->data().relative_bounds.bounds);
-    ASSERT_EQ(base::size(kExpectedOptions[1]), listbox_node->children().size());
+    ASSERT_EQ(std::size(kExpectedOptions[1]), listbox_node->children().size());
     const std::vector<ui::AXNode*>& listbox_child_nodes =
         listbox_node->children();
     for (size_t i = 0; i < listbox_child_nodes.size(); i++) {
@@ -1200,7 +1200,7 @@
         combobox_popup_node->HasState(ax::mojom::State::kMultiselectable));
     EXPECT_EQ(kExpectedBounds[0],
               combobox_popup_node->data().relative_bounds.bounds);
-    ASSERT_EQ(base::size(kExpectedOptions[0]),
+    ASSERT_EQ(std::size(kExpectedOptions[0]),
               combobox_popup_node->children().size());
     const std::vector<ui::AXNode*>& popup_child_nodes =
         combobox_popup_node->children();
@@ -1259,7 +1259,7 @@
               combobox_popup_node->data().GetRestriction());
     EXPECT_EQ(kExpectedBounds[1],
               combobox_popup_node->data().relative_bounds.bounds);
-    ASSERT_EQ(base::size(kExpectedOptions[1]),
+    ASSERT_EQ(std::size(kExpectedOptions[1]),
               combobox_popup_node->children().size());
     const std::vector<ui::AXNode*>& popup_child_nodes =
         combobox_popup_node->children();
diff --git a/components/permissions/permission_auditing_database_unittest.cc b/components/permissions/permission_auditing_database_unittest.cc
index e24eb28c..63a8c41 100644
--- a/components/permissions/permission_auditing_database_unittest.cc
+++ b/components/permissions/permission_auditing_database_unittest.cc
@@ -8,7 +8,6 @@
 
 #include "base/bind.h"
 #include "base/check.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_util.h"
 #include "base/files/scoped_temp_dir.h"
 #include "base/strings/stringprintf.h"
@@ -118,14 +117,14 @@
  private:
   std::vector<PermissionUsageSession> GeneratePermissionSessions() {
     std::vector<PermissionUsageSession> sessions;
-    for (size_t i = 0; i < base::size(test_times_); ++i) {
-      for (size_t j = i + 1; j <= base::size(test_times_); ++j) {
+    for (size_t i = 0; i < std::size(test_times_); ++i) {
+      for (size_t j = i + 1; j <= std::size(test_times_); ++j) {
         for (bool had_user_activation : {false, true}) {
           for (bool was_foreground : {false, true}) {
             for (bool had_focus : {false, true}) {
               base::Time start = test_times_[i];
-              base::Time end = (j == base::size(test_times_)) ? test_times_[i]
-                                                              : test_times_[j];
+              base::Time end = (j == std::size(test_times_)) ? test_times_[i]
+                                                             : test_times_[j];
               sessions.push_back({.usage_start = start,
                                   .usage_end = end,
                                   .had_user_activation = had_user_activation,
@@ -199,12 +198,12 @@
                                    .had_focus = false}));
   }
   EXPECT_EQ(GetPermissionUsageHistory(kTestTypes[0], kTestUrl1).size(),
-            base::size(test_times_));
-  for (size_t i = 0; i < base::size(test_times_); ++i) {
+            std::size(test_times_));
+  for (size_t i = 0; i < std::size(test_times_); ++i) {
     EXPECT_EQ(GetPermissionUsageHistory(kTestTypes[0], kTestUrl1,
                                         test_times_[i] + base::Microseconds(2))
                   .size(),
-              base::size(test_times_) - i - 1);
+              std::size(test_times_) - i - 1);
   }
 }
 
@@ -241,7 +240,7 @@
 }
 
 TEST_F(PermissionAuditingDatabaseTest, DeleteSessionsBetween) {
-  size_t current_size = base::size(test_times_);
+  size_t current_size = std::size(test_times_);
   StoreSessionForEachTime();
   for (const auto& time : test_times_) {
     ASSERT_TRUE(db().DeleteSessionsBetween(time, time));
@@ -263,10 +262,10 @@
        DeleteSessionsBetweenWithUnspecifiedStartTime) {
   StoreSessionForEachTime();
   ASSERT_TRUE(db().DeleteSessionsBetween(
-      base::Time(), test_times_[base::size(test_times_) - 2]));
+      base::Time(), test_times_[std::size(test_times_) - 2]));
   ASSERT_EQ(GetPermissionUsageHistory(kTestTypes[0], kTestUrl1).size(), 1u);
   ASSERT_TRUE(db().DeleteSessionsBetween(
-      base::Time(), test_times_[base::size(test_times_) - 1]));
+      base::Time(), test_times_[std::size(test_times_) - 1]));
   EXPECT_THAT(GetPermissionUsageHistory(kTestTypes[0], kTestUrl1), IsEmpty());
 }
 
@@ -274,7 +273,7 @@
        DeleteSessionsBetweenWithUnspecifiedStartAndEndTime) {
   StoreSessionForEachTime();
   ASSERT_EQ(GetPermissionUsageHistory(kTestTypes[0], kTestUrl1).size(),
-            base::size(test_times_));
+            std::size(test_times_));
   ASSERT_TRUE(db().DeleteSessionsBetween(base::Time(), base::Time()));
   EXPECT_THAT(GetPermissionUsageHistory(kTestTypes[0], kTestUrl1), IsEmpty());
 }
diff --git a/components/permissions/permission_auditing_service_unittest.cc b/components/permissions/permission_auditing_service_unittest.cc
index 5f8ea913..b009f3ed 100644
--- a/components/permissions/permission_auditing_service_unittest.cc
+++ b/components/permissions/permission_auditing_service_unittest.cc
@@ -7,7 +7,6 @@
 #include <memory>
 #include <vector>
 
-#include "base/cxx17_backports.h"
 #include "base/files/file_util.h"
 #include "base/files/scoped_temp_dir.h"
 #include "base/run_loop.h"
@@ -136,14 +135,14 @@
 };
 
 TEST_F(PermissionAuditingServiceTest, StorePermissionUsage) {
-  std::vector<url::Origin> origins(base::size(kTestOrigins));
-  std::vector<PermissionUsageSession> sessions(base::size(kTestOrigins));
-  for (size_t i = 0; i < base::size(kTestOrigins); ++i) {
+  std::vector<url::Origin> origins(std::size(kTestOrigins));
+  std::vector<PermissionUsageSession> sessions(std::size(kTestOrigins));
+  for (size_t i = 0; i < std::size(kTestOrigins); ++i) {
     origins[i] = url::Origin::Create(GURL(kTestOrigins[i]));
     sessions[i] = BuildUsageSession(kTestTypes[i % 2], origins[i]);
     service().StorePermissionUsage(sessions[i]);
   }
-  for (size_t i = 0; i < base::size(kTestOrigins); ++i) {
+  for (size_t i = 0; i < std::size(kTestOrigins); ++i) {
     EXPECT_THAT(
         GetPermissionUsageHistory(kTestTypes[i % 2], origins[i], base::Time()),
         ElementsAre(sessions[i]));
@@ -151,8 +150,8 @@
 }
 
 TEST_F(PermissionAuditingServiceTest, GetLastPermissionUsageTime) {
-  std::vector<url::Origin> origins(base::size(kTestOrigins));
-  for (size_t i = 0; i < base::size(kTestOrigins); ++i) {
+  std::vector<url::Origin> origins(std::size(kTestOrigins));
+  for (size_t i = 0; i < std::size(kTestOrigins); ++i) {
     origins[i] = url::Origin::Create(GURL(kTestOrigins[i]));
     service().StorePermissionUsage(
         BuildUsageSession(kTestTypes[0], origins[i]));
@@ -163,8 +162,8 @@
 }
 
 TEST_F(PermissionAuditingServiceTest, UpdateEndTime) {
-  std::vector<url::Origin> origins(base::size(kTestOrigins));
-  for (size_t i = 0; i < base::size(kTestOrigins); ++i) {
+  std::vector<url::Origin> origins(std::size(kTestOrigins));
+  for (size_t i = 0; i < std::size(kTestOrigins); ++i) {
     origins[i] = url::Origin::Create(GURL(kTestOrigins[i]));
     service().StorePermissionUsage(
         BuildUsageSession(kTestTypes[1], origins[i]));
diff --git a/components/policy/core/browser/browser_policy_connector.cc b/components/policy/core/browser/browser_policy_connector.cc
index 00ed00f..56f8f7f 100644
--- a/components/policy/core/browser/browser_policy_connector.cc
+++ b/components/policy/core/browser/browser_policy_connector.cc
@@ -5,6 +5,7 @@
 #include "components/policy/core/browser/browser_policy_connector.h"
 
 #include <stddef.h>
+
 #include <algorithm>
 #include <memory>
 #include <string>
@@ -12,7 +13,6 @@
 
 #include "base/bind.h"
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "base/logging.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/threading/thread_task_runner_handle.h"
@@ -179,7 +179,7 @@
   }
   const std::u16string domain = base::UTF8ToUTF16(
       gaia::ExtractDomainName(gaia::CanonicalizeEmail(username)));
-  for (size_t i = 0; i < base::size(kNonManagedDomainPatterns); i++) {
+  for (size_t i = 0; i < std::size(kNonManagedDomainPatterns); i++) {
     std::u16string pattern = base::WideToUTF16(kNonManagedDomainPatterns[i]);
     if (MatchDomain(domain, pattern, i))
       return true;
diff --git a/components/policy/core/browser/browser_policy_connector_unittest.cc b/components/policy/core/browser/browser_policy_connector_unittest.cc
index 2f50ae0b..672685af 100644
--- a/components/policy/core/browser/browser_policy_connector_unittest.cc
+++ b/components/policy/core/browser/browser_policy_connector_unittest.cc
@@ -3,7 +3,7 @@
 // found in the LICENSE file.
 
 #include "components/policy/core/browser/browser_policy_connector.h"
-#include "base/cxx17_backports.h"
+
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace policy {
@@ -34,12 +34,12 @@
     "user@hotmail.enterprise.com",
   };
 
-  for (unsigned int i = 0; i < base::size(kNonEnterpriseUsers); ++i) {
+  for (unsigned int i = 0; i < std::size(kNonEnterpriseUsers); ++i) {
     std::string username(kNonEnterpriseUsers[i]);
     EXPECT_TRUE(BrowserPolicyConnector::IsNonEnterpriseUser(username)) <<
         "IsNonEnterpriseUser returned false for " << username;
   }
-  for (unsigned int i = 0; i < base::size(kEnterpriseUsers); ++i) {
+  for (unsigned int i = 0; i < std::size(kEnterpriseUsers); ++i) {
     std::string username(kEnterpriseUsers[i]);
     EXPECT_FALSE(BrowserPolicyConnector::IsNonEnterpriseUser(username)) <<
         "IsNonEnterpriseUser returned true for " << username;
diff --git a/components/policy/core/common/cloud/cloud_policy_client_unittest.cc b/components/policy/core/common/cloud/cloud_policy_client_unittest.cc
index d362336..4e6382d 100644
--- a/components/policy/core/common/cloud/cloud_policy_client_unittest.cc
+++ b/components/policy/core/common/cloud/cloud_policy_client_unittest.cc
@@ -17,7 +17,6 @@
 #include "base/callback.h"
 #include "base/callback_helpers.h"
 #include "base/compiler_specific.h"
-#include "base/cxx17_backports.h"
 #include "base/feature_list.h"
 #include "base/json/json_reader.h"
 #include "base/memory/ref_counted.h"
@@ -1293,7 +1292,7 @@
   expected_namespaces.insert(key);
   key.first = dm_protocol::kChromeExtensionPolicyType;
   expected_namespaces.insert(key);
-  for (size_t i = 0; i < base::size(kExtensions); ++i) {
+  for (size_t i = 0; i < std::size(kExtensions); ++i) {
     key.second = kExtensions[i];
     em::PolicyData policy_data;
     policy_data.set_policy_type(key.first);
diff --git a/components/policy/core/common/cloud/cloud_policy_util.cc b/components/policy/core/common/cloud/cloud_policy_util.cc
index 376f7ca4..79683a6 100644
--- a/components/policy/core/common/cloud/cloud_policy_util.cc
+++ b/components/policy/core/common/cloud/cloud_policy_util.cc
@@ -115,7 +115,7 @@
   return std::string();
 #elif BUILDFLAG(IS_WIN)
   wchar_t computer_name[MAX_COMPUTERNAME_LENGTH + 1] = {0};
-  DWORD size = base::size(computer_name);
+  DWORD size = std::size(computer_name);
   if (::GetComputerNameW(computer_name, &size)) {
     std::string result;
     bool conversion_successful = base::WideToUTF8(computer_name, size, &result);
diff --git a/components/policy/core/common/cloud/cloud_policy_validator.cc b/components/policy/core/common/cloud/cloud_policy_validator.cc
index 61fe8cf..874f0a8 100644
--- a/components/policy/core/common/cloud/cloud_policy_validator.cc
+++ b/components/policy/core/common/cloud/cloud_policy_validator.cc
@@ -10,7 +10,6 @@
 #include <utility>
 
 #include "base/callback_helpers.h"
-#include "base/cxx17_backports.h"
 #include "base/location.h"
 #include "base/logging.h"
 #include "base/metrics/histogram_macros.h"
@@ -381,7 +380,7 @@
       {VALIDATE_VALUES, &CloudPolicyValidatorBase::CheckValues},
   };
 
-  for (size_t i = 0; i < base::size(kCheckFunctions); ++i) {
+  for (size_t i = 0; i < std::size(kCheckFunctions); ++i) {
     if (validation_flags_ & kCheckFunctions[i].flag) {
       status_ = (this->*(kCheckFunctions[i].checkFunction))();
       if (status_ != VALIDATION_OK)
diff --git a/components/policy/core/common/cloud/device_management_service_unittest.cc b/components/policy/core/common/cloud/device_management_service_unittest.cc
index e39ce57..fb72500 100644
--- a/components/policy/core/common/cloud/device_management_service_unittest.cc
+++ b/components/policy/core/common/cloud/device_management_service_unittest.cc
@@ -11,7 +11,6 @@
 
 #include "base/bind.h"
 #include "base/callback_helpers.h"
-#include "base/cxx17_backports.h"
 #include "base/metrics/statistics_recorder.h"
 #include "base/run_loop.h"
 #include "base/strings/strcat.h"
@@ -50,7 +49,7 @@
 // Encoded empty response messages for testing the error code paths.
 const char kResponseEmpty[] = "\x08\x00";
 
-#define PROTO_STRING(name) (std::string(name, base::size(name) - 1))
+#define PROTO_STRING(name) (std::string(name, std::size(name) - 1))
 
 // Some helper constants.
 const char kOAuthToken[] = "oauth-token";
diff --git a/components/policy/core/common/cloud/test/policy_builder.cc b/components/policy/core/common/cloud/test/policy_builder.cc
index b35f81b0..eb9dcba 100644
--- a/components/policy/core/common/cloud/test/policy_builder.cc
+++ b/components/policy/core/common/cloud/test/policy_builder.cc
@@ -4,7 +4,6 @@
 
 #include "components/policy/core/common/cloud/test/policy_builder.h"
 
-#include "base/cxx17_backports.h"
 #include "build/build_config.h"
 #include "build/chromeos_buildflags.h"
 #include "components/policy/core/common/cloud/cloud_policy_constants.h"
@@ -206,7 +205,7 @@
 }
 
 void PolicyBuilder::SetDefaultSigningKey() {
-  raw_signing_key_.assign(kSigningKey, kSigningKey + base::size(kSigningKey));
+  raw_signing_key_.assign(kSigningKey, kSigningKey + std::size(kSigningKey));
 }
 
 void PolicyBuilder::UnsetSigningKey() {
@@ -221,7 +220,7 @@
 
 void PolicyBuilder::SetDefaultNewSigningKey() {
   raw_new_signing_key_.assign(kNewSigningKey,
-                              kNewSigningKey + base::size(kNewSigningKey));
+                              kNewSigningKey + std::size(kNewSigningKey));
   raw_new_signing_key_signature_ = GetTestOtherSigningKeySignature();
 }
 
@@ -232,7 +231,7 @@
 
 void PolicyBuilder::SetDefaultInitialSigningKey() {
   raw_new_signing_key_.assign(kSigningKey,
-                              kSigningKey + base::size(kSigningKey));
+                              kSigningKey + std::size(kSigningKey));
   raw_new_signing_key_signature_ = GetTestSigningKeySignature();
   UnsetSigningKey();
 }
@@ -293,7 +292,7 @@
 // static
 std::unique_ptr<crypto::RSAPrivateKey> PolicyBuilder::CreateTestSigningKey() {
   std::vector<uint8_t> raw_signing_key(kSigningKey,
-                                       kSigningKey + base::size(kSigningKey));
+                                       kSigningKey + std::size(kSigningKey));
   return crypto::RSAPrivateKey::CreateFromPrivateKeyInfo(raw_signing_key);
 }
 
@@ -301,7 +300,7 @@
 std::unique_ptr<crypto::RSAPrivateKey>
 PolicyBuilder::CreateTestOtherSigningKey() {
   std::vector<uint8_t> raw_new_signing_key(
-      kNewSigningKey, kNewSigningKey + base::size(kNewSigningKey));
+      kNewSigningKey, kNewSigningKey + std::size(kNewSigningKey));
   return crypto::RSAPrivateKey::CreateFromPrivateKeyInfo(raw_new_signing_key);
 }
 
diff --git a/components/policy/core/common/config_dir_policy_loader.cc b/components/policy/core/common/config_dir_policy_loader.cc
index e7123ffc..4bf685c 100644
--- a/components/policy/core/common/config_dir_policy_loader.cc
+++ b/components/policy/core/common/config_dir_policy_loader.cc
@@ -95,7 +95,7 @@
   base::Time last_modification = base::Time();
   base::File::Info info;
 
-  for (size_t i = 0; i < base::size(kConfigDirSuffixes); ++i) {
+  for (size_t i = 0; i < std::size(kConfigDirSuffixes); ++i) {
     base::FilePath path(config_dir_.Append(kConfigDirSuffixes[i]));
 
     // Skip if the file doesn't exist, or it isn't a directory.
diff --git a/components/policy/core/common/policy_loader_mac_unittest.cc b/components/policy/core/common/policy_loader_mac_unittest.cc
index a33b682..c8f0ca8 100644
--- a/components/policy/core/common/policy_loader_mac_unittest.cc
+++ b/components/policy/core/common/policy_loader_mac_unittest.cc
@@ -3,14 +3,13 @@
 // found in the LICENSE file.
 
 #include "components/policy/core/common/policy_loader_mac.h"
-#include <memory>
 
 #include <CoreFoundation/CoreFoundation.h>
 
+#include <memory>
 #include <utility>
 
 #include "base/callback.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_path.h"
 #include "base/mac/scoped_cftyperef.h"
 #include "base/run_loop.h"
@@ -168,7 +167,7 @@
   const char buffer[] = "binary \xde\xad\xbe\xef data";
   ScopedCFTypeRef<CFDataRef> invalid_data(
       CFDataCreate(kCFAllocatorDefault, reinterpret_cast<const UInt8*>(buffer),
-                   base::size(buffer)));
+                   std::size(buffer)));
   ASSERT_TRUE(invalid_data);
   prefs_->AddTestItem(name, invalid_data.get(), true);
   prefs_->AddTestItem(name, invalid_data.get(), false);
diff --git a/components/policy/core/common/policy_loader_win.cc b/components/policy/core/common/policy_loader_win.cc
index 614c811..856ac6b 100644
--- a/components/policy/core/common/policy_loader_win.cc
+++ b/components/policy/core/common/policy_loader_win.cc
@@ -294,7 +294,7 @@
   std::unique_ptr<PolicyBundle> bundle(new PolicyBundle());
   PolicyMap* chrome_policy =
       &bundle->Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()));
-  for (size_t i = 0; i < base::size(kScopes); ++i) {
+  for (size_t i = 0; i < std::size(kScopes); ++i) {
     PolicyScope scope = kScopes[i].scope;
     PolicyLoadStatusUmaReporter status;
     RegistryDict gpo_dict;
@@ -353,7 +353,7 @@
       {POLICY_LEVEL_RECOMMENDED, kKeyRecommended},
   };
 
-  for (size_t i = 0; i < base::size(k3rdPartyDomains); i++) {
+  for (size_t i = 0; i < std::size(k3rdPartyDomains); i++) {
     const char* name = k3rdPartyDomains[i].name;
     const PolicyDomain domain = k3rdPartyDomains[i].domain;
     const RegistryDict* domain_dict = gpo_dict->GetKey(name);
@@ -373,7 +373,7 @@
       Schema schema = *schema_from_map;
 
       // Parse policy.
-      for (size_t j = 0; j < base::size(kLevels); j++) {
+      for (size_t j = 0; j < std::size(kLevels); j++) {
         const RegistryDict* policy_dict =
             component->second->GetKey(kLevels[j].path);
         if (!policy_dict)
diff --git a/components/policy/core/common/preg_parser.cc b/components/policy/core/common/preg_parser.cc
index 70a68a7..13bef21 100644
--- a/components/policy/core/common/preg_parser.cc
+++ b/components/policy/core/common/preg_parser.cc
@@ -15,7 +15,6 @@
 #include <utility>
 #include <vector>
 
-#include "base/cxx17_backports.h"
 #include "base/files/file_path.h"
 #include "base/files/memory_mapped_file.h"
 #include "base/logging.h"
@@ -258,7 +257,7 @@
 
   std::string data_utf8;
   std::string action_trigger(base::ToLowerASCII(
-      value_name.substr(base::size(kActionTriggerPrefix) - 1)));
+      value_name.substr(std::size(kActionTriggerPrefix) - 1)));
   if (action_trigger == kActionTriggerDeleteValues) {
     if (DecodePRegStringValue(data, &data_utf8)) {
       for (const std::string& value_str :
@@ -276,8 +275,8 @@
     }
   } else if (base::StartsWith(action_trigger, kActionTriggerDel,
                               base::CompareCase::SENSITIVE)) {
-    dict->RemoveValue(value_name.substr(base::size(kActionTriggerPrefix) - 1 +
-                                        base::size(kActionTriggerDel) - 1));
+    dict->RemoveValue(value_name.substr(std::size(kActionTriggerPrefix) - 1 +
+                                        std::size(kActionTriggerDel) - 1));
   } else if (base::StartsWith(action_trigger, kActionTriggerDelVals,
                               base::CompareCase::SENSITIVE)) {
     // Delete all values.
@@ -333,7 +332,7 @@
   }
 
   // Check the header.
-  const int kHeaderSize = base::size(kPRegFileHeader);
+  const int kHeaderSize = std::size(kPRegFileHeader);
   if (!preg_data || preg_data_size < kHeaderSize ||
       memcmp(kPRegFileHeader, preg_data, kHeaderSize) != 0) {
     LOG(ERROR) << "Bad PReg " << debug_name;
diff --git a/components/policy/core/common/schema.cc b/components/policy/core/common/schema.cc
index 8eeafe4..32f578a 100644
--- a/components/policy/core/common/schema.cc
+++ b/components/policy/core/common/schema.cc
@@ -99,7 +99,7 @@
     {schema::kString, base::Value::Type::STRING},
 };
 const SchemaKeyToValueType* kSchemaTypesToValueTypesEnd =
-    kSchemaTypesToValueTypes + base::size(kSchemaTypesToValueTypes);
+    kSchemaTypesToValueTypes + std::size(kSchemaTypesToValueTypes);
 
 // Allowed attributes and types for type 'array'. These are ordered
 // alphabetically to perform binary search.
@@ -112,7 +112,7 @@
     {schema::kType, base::Value::Type::STRING},
 };
 const SchemaKeyToValueType* kAttributesAndTypesForArrayEnd =
-    kAttributesAndTypesForArray + base::size(kAttributesAndTypesForArray);
+    kAttributesAndTypesForArray + std::size(kAttributesAndTypesForArray);
 
 // Allowed attributes and types for type 'boolean'. These are ordered
 // alphabetically to perform binary search.
@@ -124,7 +124,7 @@
     {schema::kType, base::Value::Type::STRING},
 };
 const SchemaKeyToValueType* kAttributesAndTypesForBooleanEnd =
-    kAttributesAndTypesForBoolean + base::size(kAttributesAndTypesForBoolean);
+    kAttributesAndTypesForBoolean + std::size(kAttributesAndTypesForBoolean);
 
 // Allowed attributes and types for type 'integer'. These are ordered
 // alphabetically to perform binary search.
@@ -139,7 +139,7 @@
     {schema::kType, base::Value::Type::STRING},
 };
 const SchemaKeyToValueType* kAttributesAndTypesForIntegerEnd =
-    kAttributesAndTypesForInteger + base::size(kAttributesAndTypesForInteger);
+    kAttributesAndTypesForInteger + std::size(kAttributesAndTypesForInteger);
 
 // Allowed attributes and types for type 'number'. These are ordered
 // alphabetically to perform binary search.
@@ -151,7 +151,7 @@
     {schema::kType, base::Value::Type::STRING},
 };
 const SchemaKeyToValueType* kAttributesAndTypesForNumberEnd =
-    kAttributesAndTypesForNumber + base::size(kAttributesAndTypesForNumber);
+    kAttributesAndTypesForNumber + std::size(kAttributesAndTypesForNumber);
 
 // Allowed attributes and types for type 'object'. These are ordered
 // alphabetically to perform binary search.
@@ -167,7 +167,7 @@
     {schema::kType, base::Value::Type::STRING},
 };
 const SchemaKeyToValueType* kAttributesAndTypesForObjectEnd =
-    kAttributesAndTypesForObject + base::size(kAttributesAndTypesForObject);
+    kAttributesAndTypesForObject + std::size(kAttributesAndTypesForObject);
 
 // Allowed attributes and types for $ref. These are ordered alphabetically to
 // perform binary search.
@@ -177,7 +177,7 @@
     {schema::kTitle, base::Value::Type::STRING},
 };
 const SchemaKeyToValueType* kAttributesAndTypesForRefEnd =
-    kAttributesAndTypesForRef + base::size(kAttributesAndTypesForRef);
+    kAttributesAndTypesForRef + std::size(kAttributesAndTypesForRef);
 
 // Allowed attributes and types for type 'string'. These are ordered
 // alphabetically to perform binary search.
@@ -191,7 +191,7 @@
     {schema::kType, base::Value::Type::STRING},
 };
 const SchemaKeyToValueType* kAttributesAndTypesForStringEnd =
-    kAttributesAndTypesForString + base::size(kAttributesAndTypesForString);
+    kAttributesAndTypesForString + std::size(kAttributesAndTypesForString);
 
 // Helper for std::lower_bound.
 bool CompareToString(const SchemaKeyToValueType& entry,
diff --git a/components/policy/core/common/schema_unittest.cc b/components/policy/core/common/schema_unittest.cc
index 42185502..ff5bf4b 100644
--- a/components/policy/core/common/schema_unittest.cc
+++ b/components/policy/core/common/schema_unittest.cc
@@ -9,7 +9,6 @@
 #include <memory>
 #include <utility>
 
-#include "base/cxx17_backports.h"
 #include "base/strings/stringprintf.h"
 #include "base/values.h"
 #include "components/policy/core/common/schema_internal.h"
@@ -424,7 +423,7 @@
     { "StringWithPattern",            base::Value::Type::STRING },
   };
   Schema::Iterator it = schema.GetPropertiesIterator();
-  for (size_t i = 0; i < base::size(kExpectedProperties); ++i) {
+  for (size_t i = 0; i < std::size(kExpectedProperties); ++i) {
     ASSERT_FALSE(it.IsAtEnd());
     EXPECT_STREQ(kExpectedProperties[i].expected_key, it.key());
     ASSERT_TRUE(it.schema().valid());
@@ -488,7 +487,7 @@
     { "aba",    base::Value::Type::INTEGER },
     { "abab",   base::Value::Type::STRING },
   };
-  for (size_t i = 0; i < base::size(kExpectedKeys); ++i) {
+  for (size_t i = 0; i < std::size(kExpectedKeys); ++i) {
     Schema sub = schema.GetKnownProperty(kExpectedKeys[i].expected_key);
     ASSERT_TRUE(sub.valid());
     EXPECT_EQ(kExpectedKeys[i].expected_type, sub.type());
@@ -614,7 +613,7 @@
   };
 
   Schema::Iterator it = schema.GetPropertiesIterator();
-  for (size_t i = 0; i < base::size(kExpectedProperties); ++i) {
+  for (size_t i = 0; i < std::size(kExpectedProperties); ++i) {
     ASSERT_FALSE(it.IsAtEnd());
     EXPECT_STREQ(kExpectedProperties[i].key, it.key());
     Schema sub = it.schema();
diff --git a/components/policy/resources/policy_templates_de.xtb b/components/policy/resources/policy_templates_de.xtb
index 579b2540..adc971951 100644
--- a/components/policy/resources/policy_templates_de.xtb
+++ b/components/policy/resources/policy_templates_de.xtb
@@ -1201,13 +1201,6 @@
 
           Diese Richtlinie ist nicht wirksam, wenn sie aktiviert ist, leer gelassen oder nicht konfiguriert wird.</translation>
 <translation id="229322770310505679">Gruppen aus Einzelrichtlinien aktivieren</translation>
-<translation id="2293378264822766451">Wenn diese Richtlinie aktiviert ist, haben Richtlinien, die mit einem <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" />-Konto verknüpft sind, Vorrang, wenn sie im Widerspruch zu <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />-Richtlinien stehen.
-
-      Nur Richtlinien, die von sicheren Nutzern stammen, dürfen zusammengeführt werden. Ein sicherer Nutzer ist mit der Organisation verknüpft, die seinen Browser mithilfe von <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" /> verwaltet. Alle anderen Richtlinien auf Nutzerebene haben standardmäßig Vorrang.
-
-      Die Richtlinie kann mit <ph name="POLICY_CLOUDPOLICYOVERRIDESPLATFORMPOLICY" /> kombiniert werden. Sind beide Richtlinien aktiviert, haben Cloud-Richtlinien auf Nutzerebene auch Vorrang vor widersprüchlichen Plattformrichtlinien.
-
-      Wenn die Richtlinie nicht konfiguriert oder deaktiviert wird, haben Cloud-Richtlinien auf Nutzerebene standardmäßig Priorität.</translation>
 <translation id="22941467117331786">Wenn die Richtlinie auf "True" gesetzt ist, wird während aktiver Sitzungen in der Taskleiste eine große rote Schaltfläche zum Abmelden angezeigt, solange das Display nicht gesperrt ist.
 
       Ist sie auf "False" gesetzt oder nicht konfiguriert, wird keine Schaltfläche angezeigt.</translation>
@@ -2946,6 +2939,11 @@
       Dies kann von Administratoren genutzt werden, die mehr Zeit für die Aktualisierung ihrer internen Website benötigen, die von dieser neuen Einschränkung betroffen ist. Diese Unternehmensrichtlinie ist vorübergehend. Nach Version 104 von <ph name="PRODUCT_NAME" /> wird sie voraussichtlich entfernt.
       </translation>
 <translation id="4268586991084547853">Bessere Kompatibilität mit der Richtlinie „Microsoft IE/Edge Enterprise Mode Sitelists“.</translation>
+<translation id="4269798992490176617">Wenn diese Richtlinie aktiviert ist, kann <ph name="CHROME_REMOTE_DESKTOP_PRODUCT_NAME" /> WebAuthn API-Anfragen aus einer Browsersitzung auf einem Remote-Host ausführen.
+
+      Ist diese Richtlinie deaktiviert oder nicht konfiguriert, wird das Standardverhalten angewandt.
+
+      Diese Funktion wird nur innerhalb der internen Netzwerkumgebung von Google unterstützt.</translation>
 <translation id="4269859918103560644">Nutzer kann entscheiden</translation>
 <translation id="4274691295133617461">Wenn die Richtlinie auf "3" gesetzt ist, dürfen Websites um Lesezugriff auf Dateien und Verzeichnisse im Dateisystem des Host-Betriebssystems über die File System API bitten. Ist sie auf "2" gesetzt, wird der Zugriff verweigert.
 
@@ -5338,6 +5336,7 @@
 <translation id="7063895219334505671">Pop-ups auf diesen Websites zulassen</translation>
 <translation id="7066292150801784098">Nicht zulassen, dass Remote-Nutzer bei der Remote-Unterstützung mit Administratorfenstern interagieren können</translation>
 <translation id="706669471845501145">Anzeige von Desktop-Benachrichtigungen durch Websites zulassen</translation>
+<translation id="70681795425744184">Nicht zulassen, dass CRD WebAuthn API-Anfragen ausführt, die von einem Remote-Host über einen Proxy weitergeleitet werden.</translation>
 <translation id="7070525176564511548">Passworteingabe wöchentlich erforderlich (alle 168 Stunden)</translation>
 <translation id="7072208053150563108">Änderungsrate des Computerpassworts</translation>
 <translation id="7072567600438630966">Aktivieren von Phone Hub zulassen.</translation>
@@ -5625,6 +5624,7 @@
 <translation id="7407441173422042771">Mit dieser Richtlinie wird die Netzwerkvorhersage bei <ph name="PRODUCT_NAME" /> gesteuert. Mit ihr werden der DNS-Vorabruf, die TCP- und SSL-Vorverbindung sowie das Pre-Rendering von Webseiten gesteuert.
 
       Wenn Sie diese Richtlinie konfigurieren, kann sie von Nutzern nicht geändert werden. Wenn sie nicht konfiguriert ist, wird die Netzwerkvorhersage aktiviert, aber sie kann von Nutzern nicht geändert werden.</translation>
+<translation id="7410074797376205571">Zulassen, dass <ph name="CHROME_REMOTE_DESKTOP_PRODUCT_NAME" /> WebAuthn API-Anfragen ausführt, die von einem Remote-Host über einen Proxy weitergeleitet werden.</translation>
 <translation id="7412456346709338637">Datenzugriff von Thunderbolt/USB4-Peripheriegeräten aktivieren</translation>
 <translation id="7417438464912687020">Verbindungen zu diesem Computer per Remotezugriff erlauben</translation>
 <translation id="7417972229667085380">Prozentsatz für die Skalierung der Inaktivitätsspanne im Präsentationsmodus (veraltet)</translation>
@@ -6571,6 +6571,7 @@
        Ist die Richtlinie deaktiviert, werden JavaScript-Dialogfelder, die von einem anderen Quell-Subframe ausgelöst wurden, nicht blockiert.
 
        Diese Richtlinie wird in Version 95 von <ph name="PRODUCT_NAME" /> entfernt.</translation>
+<translation id="8427466947904008809">Zulassen, dass CRD WebAuthn API-Anfragen ausführt, die von einem Remote-Host über einen Proxy weitergeleitet werden.</translation>
 <translation id="8433186206711564395">Netzwerkeinstellungen</translation>
 <translation id="8433769814000220721">Vorschläge zur Entdeckung neuer Inhalte aktivieren</translation>
 <translation id="843609873781525167">Wenn die Richtlinie auf "True" gesetzt ist, prüft <ph name="PRODUCT_NAME" /> beim Start immer, ob es der Standardbrowser ist. Nach Möglichkeit legt sich die Anwendung dann automatisch als Standard fest. Ist die Richtlinie auf "False" gesetzt, prüft <ph name="PRODUCT_NAME" /> nie, ob es der Standardbrowser ist. Außerdem werden alle Nutzersteuerelemente zum Einstellen dieser Option deaktiviert.
diff --git a/components/policy/resources/policy_templates_es-419.xtb b/components/policy/resources/policy_templates_es-419.xtb
index 64ec1db..c5e052c 100644
--- a/components/policy/resources/policy_templates_es-419.xtb
+++ b/components/policy/resources/policy_templates_es-419.xtb
@@ -1216,13 +1216,6 @@
 
           Tampoco tiene efecto si la habilitas, la dejas vacía o no la estableces.</translation>
 <translation id="229322770310505679">Habilita el concepto de grupos atómicos de políticas</translation>
-<translation id="2293378264822766451">Si habilitas la política, prevalecerán las políticas asociadas a una cuenta de <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> si entran en conflicto con <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />.
-
-      Solo pueden combinarse políticas que hayan originado usuarios seguros. Un usuario seguro es aquél que está afiliado a la organización que administra su navegador mediante <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />. Todas las demás políticas destinadas a los usuarios tendrán la prioridad predeterminada.
-
-      La política puede combinarse con <ph name="POLICY_CLOUDPOLICYOVERRIDESPLATFORMPOLICY" />. Si se habilitan ambas políticas, las políticas de nube destinadas a los usuarios también prevalecerán sobre las políticas de la plataforma que estén en conflicto.
-
-      Si no estableces la política o la inhabilitas, las políticas de nube destinadas a los usuarios tendrán la prioridad predeterminada.</translation>
 <translation id="22941467117331786">Si estableces la política como verdadera, se mostrará un botón grande y rojo para salir de la cuenta. Lo encontrarás en la bandeja del sistema durante sesiones activas y con la pantalla desbloqueada.
 
       Si la estableces como falsa o no la estableces, no se mostrará ningún botón.</translation>
diff --git a/components/policy/resources/policy_templates_es.xtb b/components/policy/resources/policy_templates_es.xtb
index 31b3f921..60535d8 100644
--- a/components/policy/resources/policy_templates_es.xtb
+++ b/components/policy/resources/policy_templates_es.xtb
@@ -1219,13 +1219,6 @@
 
           Esta política no tendrá efecto si se habilita, se deja vacía o no se define.</translation>
 <translation id="229322770310505679">Habilitar el concepto de grupos atómicos de políticas</translation>
-<translation id="2293378264822766451">Si se habilita esta política, las políticas asociadas a una cuenta de <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> tendrán preferencia si entran en conflicto con las políticas de <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />.
-
-      Solo se pueden fusionar las políticas procedentes de usuarios seguros. Un usuario seguro está afiliado con la organización que gestiona el navegador usando <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />. Las demás políticas a nivel de usuario tendrán preferencia de forma predeterminada.
-
-      La política se puede combinar con <ph name="POLICY_CLOUDPOLICYOVERRIDESPLATFORMPOLICY" />. Si se habilitan ambas políticas, las políticas basadas en la nube a nivel de usuario también prevalecerán sobre las políticas en conflicto a nivel de plataforma.
-
-      Si se inhabilita esta política o no se establece, las políticas basadas en la nube a nivel de usuario tendrán prioridad de forma predeterminada.</translation>
 <translation id="22941467117331786">Si se asigna el valor "Verdadero" a esta política, se mostrará un botón de cierre de sesión grande y de color rojo en la bandeja del sistema durante las sesiones activas cuando la pantalla no esté bloqueada.
 
       Si se le asigna el valor "Falso" o no se le asigna ninguno, no se mostrará ese botón.</translation>
diff --git a/components/policy/resources/policy_templates_fr.xtb b/components/policy/resources/policy_templates_fr.xtb
index c70d14bb..d8e8f6cc 100644
--- a/components/policy/resources/policy_templates_fr.xtb
+++ b/components/policy/resources/policy_templates_fr.xtb
@@ -1220,13 +1220,6 @@
 
           Elle n'a aucune incidence non plus si elle est activée, si elle n'est pas configurée ou si elle est vide.</translation>
 <translation id="229322770310505679">Activer le concept de groupes atomiques de règles</translation>
-<translation id="2293378264822766451">Si cette règle est activée, les règles associées à un compte <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> prévalent en cas de conflit avec les règles <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />.
-
-      Seules les règles provenant d'utilisateurs sécurisés peuvent être fusionnées. Un utilisateur sécurisé est affilié à une organisation qui gère son navigateur en utilisant <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />. Toutes les autres règles utilisateur prévalent par défaut.
-
-      Cette règle peut être combinée avec la règle <ph name="POLICY_CLOUDPOLICYOVERRIDESPLATFORMPOLICY" />. Si les deux règles sont activées, les règles cloud utilisateurs prévalent aussi sur les règles de la plate-forme en conflit.
-
-      Si cette règle est désactivée ou qu'elle n'est pas configurée, les règles cloud utilisateur prévalent par défaut.</translation>
 <translation id="22941467117331786">Si cette règle est définie sur "True", un gros bouton rouge de déconnexion figure dans la barre d'état système durant les sessions actives (lorsque l'écran n'est pas verrouillé).
 
       Si cette règle est définie sur "False" ou qu'elle n'est pas configurée, ce bouton n'est pas affiché.</translation>
diff --git a/components/policy/resources/policy_templates_id.xtb b/components/policy/resources/policy_templates_id.xtb
index 3705410..ac0a238 100644
--- a/components/policy/resources/policy_templates_id.xtb
+++ b/components/policy/resources/policy_templates_id.xtb
@@ -1219,13 +1219,6 @@
 
           Kebijakan ini tidak berpengaruh jika disetel ke Aktif, dibiarkan kosong, atau tidak disetel.</translation>
 <translation id="229322770310505679">Mengaktifkan konsep grup atom kebijakan</translation>
-<translation id="2293378264822766451">Jika kebijakan disetel ke Aktif, kebijakan yang berkaitan dengan akun <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> akan diprioritaskan jika kebijakan tersebut bertentangan dengan kebijakan <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />.
-
-      Hanya kebijakan yang berasal dari pengguna aman yang dapat digabungkan. Pengguna aman berafiliasi dengan organisasi yang mengelola browser mereka menggunakan <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />. Semua kebijakan tingkat pengguna lainnya akan memiliki prioritas default.
-
-      Kebijakan ini dapat digabungkan dengan <ph name="POLICY_CLOUDPOLICYOVERRIDESPLATFORMPOLICY" />. Jika kedua kebijakan disetel ke aktif, kebijakan cloud pengguna juga akan lebih diprioritaskan daripada kebijakan platform yang bertentangan.
-
-      Jika kebijakan tidak disetel atau disetel ke nonaktif, kebijakan cloud tingkat pengguna akan memiliki prioritas default.</translation>
 <translation id="22941467117331786">Jika kebijakan ditetapkan ke Benar (True), tombol logout besar berwarna merah akan ditampilkan di baki sistem selama sesi aktif saat layar tidak dikunci.
 
       Jika kebijakan ditetapkan ke Salah (False) atau tidak ditetapkan, tombol tidak akan muncul.</translation>
diff --git a/components/policy/resources/policy_templates_it.xtb b/components/policy/resources/policy_templates_it.xtb
index 029f37a..669f3f2 100644
--- a/components/policy/resources/policy_templates_it.xtb
+++ b/components/policy/resources/policy_templates_it.xtb
@@ -1214,13 +1214,6 @@
 
           Il criterio non ha effetto se viene impostato su Attivato, se viene lasciato vuoto o se non viene configurato.</translation>
 <translation id="229322770310505679">Consenti il concetto di gruppi atomici di criteri</translation>
-<translation id="2293378264822766451">Se il criterio viene impostato su Attivato, i criteri associati a un account <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> hanno la precedenza in caso di conflitto con i criteri <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />.
-
-      È possibile unire soltanto i criteri derivanti da utenti sicuri. Un utente sicuro è affiliato all'organizzazione che gestisce il suo browser usando <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />. Tutti gli altri criteri a livello di utente avranno la precedenza per impostazione predefinita.
-
-      Il criterio può essere combinato con <ph name="POLICY_CLOUDPOLICYOVERRIDESPLATFORMPOLICY" />. Se entrambi i criteri vengono attivati, anche i criteri relativi al cloud degli utenti avranno la precedenza sui criteri relativi alla piattaforma in conflitto.
-
-      Se il criterio non viene configurato o se viene impostato su Disattivato, i criteri relativi al cloud degli utenti avranno la priorità per impostazione predefinita.</translation>
 <translation id="22941467117331786">Se il criterio è impostato su True, viene visualizzato un grande pulsante di disconnessione nella barra delle applicazioni durante le sessioni attive mentre la schermata non è bloccata.
 
       Se il criterio è impostato su False o se non viene configurato, non viene visualizzato alcun pulsante.</translation>
diff --git a/components/policy/resources/policy_templates_ja.xtb b/components/policy/resources/policy_templates_ja.xtb
index 5bf33cea..19c0928 100644
--- a/components/policy/resources/policy_templates_ja.xtb
+++ b/components/policy/resources/policy_templates_ja.xtb
@@ -1162,7 +1162,6 @@
 
           このポリシーを有効に設定するか、空白または未設定のままにした場合、ポリシーは無視されます。</translation>
 <translation id="229322770310505679">ポリシーの最小単位グループの概念を有効にする</translation>
-<translation id="2293378264822766451">このポリシーを有効にした場合、<ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" /> ポリシーと競合した場合に、<ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> アカウントに関連付けられたポリシーが優先されます。なお、統合できるのはセキュア ユーザーのポリシーのみです。セキュア ユーザーとは、<ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" /> を使用してブラウザを管理している組織に所属するユーザーです。他のユーザーレベルのポリシーはすべて、デフォルトの優先順位になります。このポリシーは <ph name="POLICY_CLOUDPOLICYOVERRIDESPLATFORMPOLICY" /> と組み合わせることができます。両方のポリシーが有効な場合、ユーザーのクラウド ポリシーも、競合するプラットフォーム ポリシーより優先されます。ポリシーを未設定のままにするか無効に設定した場合、ユーザーレベルのクラウド ポリシーがデフォルトの優先順位になります。</translation>
 <translation id="22941467117331786">このポリシーを True に設定した場合、アクティブなセッション中に画面がロックされていなければ、システムトレイに赤い大きなログアウト ボタンが表示されます。このポリシーを False に設定するか未設定のままにした場合、ボタンは表示されません。</translation>
 <translation id="2294382669900758280">Android アプリで再生中の動画は、このポリシーを <ph name="TRUE" /> に設定した場合でも考慮されません。</translation>
 <translation id="2299220924812062390">有効なプラグインのリストを指定する</translation>
diff --git a/components/policy/resources/policy_templates_ko.xtb b/components/policy/resources/policy_templates_ko.xtb
index 230fdc61..d4b0625 100644
--- a/components/policy/resources/policy_templates_ko.xtb
+++ b/components/policy/resources/policy_templates_ko.xtb
@@ -1218,13 +1218,6 @@
 
           정책이 사용 설정되거나, 비어 있거나, 설정되지 않을 경우 아무런 영향을 미치지 않습니다.</translation>
 <translation id="229322770310505679">정책 전체 그룹의 개념 사용</translation>
-<translation id="2293378264822766451">정책을 사용으로 설정하면 <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" /> 정책과 충돌하는 경우 <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> 계정에 연결된 정책이 우선 적용됩니다.
-
-      보안 사용자가 만든 정책만 병합 가능합니다. 보안 사용자는 <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />를 사용하여 브라우저를 관리하는 조직에 속합니다. 다른 모든 사용자 수준 정책은 기본적으로 우선 적용됩니다.
-
-      이 정책은 <ph name="POLICY_CLOUDPOLICYOVERRIDESPLATFORMPOLICY" /> 정책과 결합될 수 있습니다. 두 정책이 모두 사용으로 설정되어 있으면 사용자 클라우드 정책이 충돌하는 플랫폼 정책보다 우선 적용됩니다.
-
-      정책을 설정하지 않거나 사용 안함으로 설정하면 사용자 수준 클라우드 정책이 기본적으로 우선 적용됩니다.</translation>
 <translation id="22941467117331786">정책을 True로 설정하면 스크린이 잠겨 있지 않을 때 활성 세션 동안 작업 표시줄에 커다란 빨간색 로그아웃 버튼이 표시됩니다.
 
       정책을 False로 설정하거나 설정하지 않으면 어떤 버튼도 표시되지 않습니다.</translation>
diff --git a/components/policy/resources/policy_templates_nl.xtb b/components/policy/resources/policy_templates_nl.xtb
index 5d5c4e8..a4f7bb1 100644
--- a/components/policy/resources/policy_templates_nl.xtb
+++ b/components/policy/resources/policy_templates_nl.xtb
@@ -1186,13 +1186,6 @@
 
           Dit beleid is niet geldig als het is ingesteld op Enabled (Aangezet), leeg wordt gelaten of niet wordt ingesteld.</translation>
 <translation id="229322770310505679">Hiermee wordt het concept van atomische beleidsgroepen toegepast</translation>
-<translation id="2293378264822766451">Als je het beleid toepast, krijgen beleidsregels die zijn gekoppeld aan een <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" />-account voorrang als er een conflict is met <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />-beleidsregels.
-
-      Alleen beleidsregels die afkomstig zijn van beveiligde gebruikers kunnen worden samengevoegd. Een beveiligde gebruiker is aangesloten bij de organisatie die de browser van de gebruiker beheert via <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />. Alle andere beleidsregels op gebruikersniveau hebben een standaardvoorrang.
-
-      Het beleid kan worden gecombineerd met <ph name="POLICY_CLOUDPOLICYOVERRIDESPLATFORMPOLICY" />. Als beide beleidsregels worden toegepast, krijgen cloudbeleidsregels voor gebruikers ook voorrang als er een conflict is met platformbeleid.
-
-      Als je het beleid niet instelt of niet toepast, krijgen cloudbeleidsregels op gebruikersniveau een standaardprioriteit.</translation>
 <translation id="22941467117331786">Als je het beleid instelt op 'True', wordt er tijdens actieve sessies waarbij het scherm niet is vergrendeld een grote, rode knop voor uitloggen weergegeven in het systeemvak.
 
       Als je het beleid instelt op 'False' of niet instelt, wordt er geen knop weergegeven.</translation>
diff --git a/components/policy/resources/policy_templates_pt-BR.xtb b/components/policy/resources/policy_templates_pt-BR.xtb
index 7a34f239..77e1a42 100644
--- a/components/policy/resources/policy_templates_pt-BR.xtb
+++ b/components/policy/resources/policy_templates_pt-BR.xtb
@@ -1216,13 +1216,6 @@
 
           Esta política não terá efeito se for definida como "Ativada", deixada vazia ou sem definição.</translation>
 <translation id="229322770310505679">Ativar o conceito de grupos atômicos de política</translation>
-<translation id="2293378264822766451">Se a política for ativada, políticas associadas a uma conta do <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> poderão ter precedência se estiverem em conflito com políticas do <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />.
-
-      Apenas políticas originárias de usuários seguros podem ser mescladas. Um usuário seguro é afiliado à organização que gerencia o navegador com o <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />. Todas as outras políticas do usuário terão precedência por padrão.
-
-      A política pode ser combinada com <ph name="POLICY_CLOUDPOLICYOVERRIDESPLATFORMPOLICY" />. Se ambas as políticas forem ativadas, as políticas da nuvem de usuários também poderão ter precedência sobre as políticas em conflito da plataforma.
-
-      Se a política for desativada ou deixada sem definição, as políticas da nuvem de usuários terão prioridade por padrão.</translation>
 <translation id="22941467117331786">Se a política for definida como verdadeira, um botão grande e vermelho para sair da conta será exibido na bandeja do sistema em sessões ativas em que a tela não esteja bloqueada.
 
       Se ela for definida como falsa ou não for definida, nenhum botão será exibido.</translation>
diff --git a/components/policy/resources/policy_templates_ru.xtb b/components/policy/resources/policy_templates_ru.xtb
index d7d5875..0d66854f 100644
--- a/components/policy/resources/policy_templates_ru.xtb
+++ b/components/policy/resources/policy_templates_ru.xtb
@@ -1206,13 +1206,6 @@
 
           Правило не будет действовать, если оно включено, не настроено или для него указано пустое значение.</translation>
 <translation id="229322770310505679">Разрешить мини-группы правил</translation>
-<translation id="2293378264822766451">Если правило включено, правила, связанные с аккаунтом <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" />, в случае конфликта с правилами <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" /> будут иметь приоритет.
-
-      Это относится только к правилам, заданным защищенными пользователями. Пользователь считается защищенным, если его браузером управляет организация с помощью <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />. Остальные правила на уровне пользователей будут иметь приоритет по умолчанию.
-
-      Это правило может объединяться с правилом <ph name="POLICY_CLOUDPOLICYOVERRIDESPLATFORMPOLICY" />. Если включены оба правила, правила облачных сервисов на уровне пользователей при конфликте с правилами на уровне платформы также будут иметь приоритет.
-
-      Если правило не настроено или отключено, правила облачных сервисов на уровне пользователей будут иметь приоритет по умолчанию.</translation>
 <translation id="22941467117331786">Если для правила задано значение True, то при разблокированном экране во время активного сеанса в области уведомлений будет видна большая красная кнопка выхода из аккаунта.
 
       Если правило не настроено или задано значение False, кнопка показываться не будет.</translation>
diff --git a/components/policy/resources/policy_templates_th.xtb b/components/policy/resources/policy_templates_th.xtb
index 9a18eef..f95aa1a 100644
--- a/components/policy/resources/policy_templates_th.xtb
+++ b/components/policy/resources/policy_templates_th.xtb
@@ -1187,13 +1187,6 @@
 
           นโยบายนี้จะไม่มีผลหากตั้งค่าเป็น "เปิดใช้" ปล่อยว่างไว้ หรือไม่ได้ตั้งค่า</translation>
 <translation id="229322770310505679">เปิดใช้แนวคิดนโยบายที่มาจากกลุ่มขนาดเล็ก</translation>
-<translation id="2293378264822766451">การตั้งค่านโยบายเป็น "เปิดใช้" จะทำให้นโยบายที่เชื่อมโยงกับบัญชี <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> มีผลบังคับเหนือกว่าในกรณีที่ขัดแย้งกับนโยบาย <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />
-
-      โดยจะรวมได้เฉพาะนโยบายจากผู้ใช้ที่ปลอดภัย ผู้ใช้ที่ปลอดภัยจะเชื่อมโยงกับองค์กรที่จัดการเบราว์เซอร์ของตนโดยใช้ <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" /> นโยบายระดับผู้ใช้อื่นๆ ทั้งหมดจะมีลำดับความสำคัญตามค่าเริ่มต้น
-
-      นโยบายนี้สามารถใช้ร่วมกับ <ph name="POLICY_CLOUDPOLICYOVERRIDESPLATFORMPOLICY" /> หากมีการเปิดใช้ทั้ง 2 นโยบาย นโยบายระดับผู้ใช้บนระบบคลาวด์ก็จะมีผลบังคับเหนือกว่านโยบายระดับแพลตฟอร์มที่ขัดแย้งกันด้วย
-
-      การไม่ตั้งค่านโยบายหรือตั้งค่าเป็น "ปิดใช้" จะทำให้นโยบายระดับผู้ใช้บนระบบคลาวด์มีลำดับความสำคัญตามค่าเริ่มต้น</translation>
 <translation id="22941467117331786">การตั้งค่านโยบายเป็น "จริง" แสดงปุ่มออกจากระบบสีแดงขนาดใหญ่ในถาดระบบระหว่างที่เซสชันดำเนินอยู่และหน้าจอไม่ได้ล็อก
 
       การตั้งค่านโยบายเป็น "เท็จ" หรือไม่ได้ตั้งค่าหมายความว่าจะไม่มีปุ่มใดแสดง</translation>
diff --git a/components/policy/resources/policy_templates_tr.xtb b/components/policy/resources/policy_templates_tr.xtb
index 049fcae8..5c3567b 100644
--- a/components/policy/resources/policy_templates_tr.xtb
+++ b/components/policy/resources/policy_templates_tr.xtb
@@ -1194,13 +1194,6 @@
 
           Etkin değerine ayarlanır, boş bırakılır veya ayarlanmazsa bu politikanın hiçbir etkisi olmaz.</translation>
 <translation id="229322770310505679">Politika atom grupları kavramını etkinleştirir</translation>
-<translation id="2293378264822766451">Politika, Etkin değerine ayarlanırsa bir <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> hesabına ilişkin politikalar ile <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" /> politikaları arasında uyuşmazlık olması halinde ilki öncelikli olur.
-
-      Yalnızca güvenli kullanıcılardan gelen politikalar birleştirilebilir. Güvenli kullanıcı, tarayıcı yönetimini <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" /> ile yapan kuruluşa bağlıdır. Diğer tüm kullanıcı düzeyindeki politikalar varsayılan olarak öncelikli olur.
-
-      Politika, <ph name="POLICY_CLOUDPOLICYOVERRIDESPLATFORMPOLICY" /> ile birlikte kullanılabilir. İki politika da etkinleştirilirse kullanıcı bulut politikaları da uyuşmazlık içeren platform politikaları karşısında öncelikli olur.
-
-      Politika ayarlanmadan bırakılır veya Devre Dışı değerine ayarlanırsa kullanıcı düzeyindeki bulut politikaları varsayılan olarak öncelikli olur.</translation>
 <translation id="22941467117331786">Politikayı True (Doğru) değerine ayarlamak, ekran kilitli değilken etkin oturumlar sırasında sistem tepsisinde büyük, kırmızı bir oturum kapatma düğmesi görüntüler.
 
       Politikayı False (Yanlış) değerine ayarlamak veya ayarlamadan bırakmak, düğme görüntülenmeyecek anlamına gelir.</translation>
diff --git a/components/policy/resources/policy_templates_uk.xtb b/components/policy/resources/policy_templates_uk.xtb
index e1dc0d6..08a214a 100644
--- a/components/policy/resources/policy_templates_uk.xtb
+++ b/components/policy/resources/policy_templates_uk.xtb
@@ -1219,13 +1219,6 @@
 
           Правило не діє, якщо його ввімкнути, не налаштувати або задати для нього пусте значення.</translation>
 <translation id="229322770310505679">Вмикає концепцію елементарних груп правил</translation>
-<translation id="2293378264822766451">Якщо це правило ввімкнути, правила, зв’язані з обліковим записом <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" />, матимуть вищий пріоритет при конфлікті з правилами рішення <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />.
-
-      Об’єднуватися можуть тільки правила захищених користувачів. Користувач вважається захищеним, якщо його веб-переглядачем керує організація через <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />. Усі інші правила на рівні користувачів за умовчанням матимуть вищий пріоритет.
-
-      Це правило можна використовувати разом із <ph name="POLICY_CLOUDPOLICYOVERRIDESPLATFORMPOLICY" />. Якщо обидва правила ввімкнено, у разі конфлікту хмарні правила на рівні користувачів матимуть пріоритет над правилами платформи.
-
-      Якщо це правило не налаштувати або вимкнути, хмарні правила на рівні користувачів мають стандартний пріоритет.</translation>
 <translation id="22941467117331786">Якщо для цього правила вибрано значення True, на розблокованому екрані під час активних сеансів на панелі завдань відображається червона кнопка для виходу.
 
       Якщо для цього правила вибрано значення False або його не налаштовано, кнопка не з'являтиметься.</translation>
diff --git a/components/policy/resources/policy_templates_vi.xtb b/components/policy/resources/policy_templates_vi.xtb
index c700c04..bc19f0e 100644
--- a/components/policy/resources/policy_templates_vi.xtb
+++ b/components/policy/resources/policy_templates_vi.xtb
@@ -1220,13 +1220,6 @@
 
           Chính sách này không có hiệu lực nếu bạn đặt thành Bật, để trống hoặc không đặt.</translation>
 <translation id="229322770310505679">Cho phép dùng khái niệm về nhóm chính sách không thể phân chia</translation>
-<translation id="2293378264822766451">Khi bạn bật chính sách này, các chính sách liên kết với tài khoản <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" />sẽ được ưu tiên áp dụng nếu chúng xung đột với các chính sách <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />.
-
-      Chỉ các chính sách bắt nguồn từ những người dùng an toàn mới có thể hợp nhất. Một người dùng an toàn được liên kết với tổ chức quản lý trình duyệt của họ bằng <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />. Tất cả chính sách khác ở cấp người dùng sẽ được ưu tiên theo mặc định.
-
-      Bạn có thể kết hợp chính sách này với <ph name="POLICY_CLOUDPOLICYOVERRIDESPLATFORMPOLICY" />. Nếu bạn bật cả hai chính sách, thì các chính sách đám mây ở cấp người dùng cũng sẽ được ưu tiên hơn các chính sách xung đột của nền tảng.
-
-      Nếu bạn không đặt hoặc tắt chính sách này, thì các chính sách đám mây ở cấp người dùng sẽ có mức ưu tiên theo mặc định.</translation>
 <translation id="22941467117331786">Nếu bạn đặt chính sách này thành True, thì một nút đăng xuất màu đỏ có kích thước lớn sẽ hiển thị trên khay hệ thống trong các phiên đang hoạt động khi màn hình không khóa.
 
       Nếu bạn đặt chính sách này thành False hoặc không đặt chính sách này, thì sẽ không có nút nào xuất hiện.</translation>
diff --git a/components/policy/resources/policy_templates_zh-CN.xtb b/components/policy/resources/policy_templates_zh-CN.xtb
index ce7ac62..c64abb14 100644
--- a/components/policy/resources/policy_templates_zh-CN.xtb
+++ b/components/policy/resources/policy_templates_zh-CN.xtb
@@ -1184,13 +1184,6 @@
 
           如果已启用、留空或未设置,此政策将不会产生任何影响。</translation>
 <translation id="229322770310505679">启用政策原子组的概念</translation>
-<translation id="2293378264822766451">如果此政策已启用,当与 <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> 帐号关联的政策和 <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" /> 政策冲突时,系统会以前者为准。
-
-      只能合并源自安全用户的政策。安全用户是指与会使用 <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />来管理用户浏览器的组织关联的用户。其他所有的用户级政策都将具有默认优先级。
-
-      此政策可与 <ph name="POLICY_CLOUDPOLICYOVERRIDESPLATFORMPOLICY" /> 结合使用。如果这两项政策均已启用,当用户级云政策与平台政策冲突时,系统也会以前者为准。
-
-      如果此政策未设置或已停用,用户级云政策将具有默认优先级。</translation>
 <translation id="22941467117331786">如果此政策设为 True,当会话处于活动状态且屏幕未锁定时,系统任务栏中会显示一个大的红色退出按钮。
 
       如果此政策设为 False 或未设置,系统任务栏中不会显示任何按钮。</translation>
diff --git a/components/policy/resources/policy_templates_zh-TW.xtb b/components/policy/resources/policy_templates_zh-TW.xtb
index f11fe93..12093577 100644
--- a/components/policy/resources/policy_templates_zh-TW.xtb
+++ b/components/policy/resources/policy_templates_zh-TW.xtb
@@ -1189,13 +1189,6 @@
 
           如果設為「啟用」、保留空白或不設定,這項政策就不會生效。</translation>
 <translation id="229322770310505679">啟用不可部分完成的政策群組概念</translation>
-<translation id="2293378264822766451">如果將這項政策設為 Enabled,當與 <ph name="GOOGLE_WORKSPACE_PRODUCT_NAME" /> 帳戶相關聯的政策和 <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />政策發生衝突時,前者的優先順序會高於後者。
-
-      系統只能合併由安全使用者產生的政策。安全使用者指的是與機構相關聯的使用者,而且機構會利用 <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />服務來管理他們的瀏覽器。其他所有使用者層級政策都會採用預設優先順序。
-
-      這項政策可以與 <ph name="POLICY_CLOUDPOLICYOVERRIDESPLATFORMPOLICY" /> 結合。如果同時啟用兩項政策,使用者雲端政策的優先順序也會高於相衝突的平台政策。
-
-      如果將這項政策設為 Disabled 或不設定,使用者層級的雲端政策就會採用預設優先順序。</translation>
 <translation id="22941467117331786">如果將這項政策設為 True,在有效工作階段期間且螢幕未鎖定時,系統匣中會顯示大型的紅色登出按鈕。
 
       如果將這項政策設為 False 或不設定,系統匣中不會顯示任何按鈕。</translation>
diff --git a/components/prefs/json_pref_store_unittest.cc b/components/prefs/json_pref_store_unittest.cc
index 6deeb68..d1c432c 100644
--- a/components/prefs/json_pref_store_unittest.cc
+++ b/components/prefs/json_pref_store_unittest.cc
@@ -11,7 +11,6 @@
 
 #include "base/bind.h"
 #include "base/compiler_specific.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_util.h"
 #include "base/files/scoped_temp_dir.h"
 #include "base/location.h"
@@ -211,7 +210,7 @@
 TEST_P(JsonPrefStoreTest, InvalidFile) {
   base::FilePath invalid_file = temp_dir_.GetPath().AppendASCII("invalid.json");
   ASSERT_LT(0, base::WriteFile(invalid_file, kInvalidJson,
-                               base::size(kInvalidJson) - 1));
+                               std::size(kInvalidJson) - 1));
 
   auto pref_store = base::MakeRefCounted<JsonPrefStore>(invalid_file);
   EXPECT_EQ(PersistentPrefStore::PREF_READ_ERROR_JSON_PARSE,
@@ -302,7 +301,7 @@
 TEST_P(JsonPrefStoreTest, Basic) {
   base::FilePath input_file = temp_dir_.GetPath().AppendASCII("write.json");
   ASSERT_LT(0,
-            base::WriteFile(input_file, kReadJson, base::size(kReadJson) - 1));
+            base::WriteFile(input_file, kReadJson, std::size(kReadJson) - 1));
 
   // Test that the persistent value can be loaded.
   ASSERT_TRUE(PathExists(input_file));
@@ -329,7 +328,7 @@
 TEST_P(JsonPrefStoreTest, BasicAsync) {
   base::FilePath input_file = temp_dir_.GetPath().AppendASCII("write.json");
   ASSERT_LT(0,
-            base::WriteFile(input_file, kReadJson, base::size(kReadJson) - 1));
+            base::WriteFile(input_file, kReadJson, std::size(kReadJson) - 1));
 
   // Test that the persistent value can be loaded.
   auto pref_store = base::MakeRefCounted<JsonPrefStore>(input_file);
@@ -436,7 +435,7 @@
 TEST_P(JsonPrefStoreTest, ReadWithInterceptor) {
   base::FilePath input_file = temp_dir_.GetPath().AppendASCII("write.json");
   ASSERT_LT(0,
-            base::WriteFile(input_file, kReadJson, base::size(kReadJson) - 1));
+            base::WriteFile(input_file, kReadJson, std::size(kReadJson) - 1));
 
   std::unique_ptr<InterceptingPrefFilter> intercepting_pref_filter(
       new InterceptingPrefFilter());
@@ -478,7 +477,7 @@
 TEST_P(JsonPrefStoreTest, ReadAsyncWithInterceptor) {
   base::FilePath input_file = temp_dir_.GetPath().AppendASCII("write.json");
   ASSERT_LT(0,
-            base::WriteFile(input_file, kReadJson, base::size(kReadJson) - 1));
+            base::WriteFile(input_file, kReadJson, std::size(kReadJson) - 1));
 
   std::unique_ptr<InterceptingPrefFilter> intercepting_pref_filter(
       new InterceptingPrefFilter());
@@ -880,7 +879,7 @@
 TEST_F(JsonPrefStoreCallbackTest, TestSerializeDataCallbacks) {
   base::FilePath input_file = temp_dir_.GetPath().AppendASCII("write.json");
   ASSERT_LT(0,
-            base::WriteFile(input_file, kReadJson, base::size(kReadJson) - 1));
+            base::WriteFile(input_file, kReadJson, std::size(kReadJson) - 1));
 
   std::unique_ptr<InterceptingPrefFilter> intercepting_pref_filter(
       new InterceptingPrefFilter(write_callback_observer_.GetCallbackPair()));
diff --git a/components/prefs/pref_service_unittest.cc b/components/prefs/pref_service_unittest.cc
index 8ba3c88c..47c223c9 100644
--- a/components/prefs/pref_service_unittest.cc
+++ b/components/prefs/pref_service_unittest.cc
@@ -8,7 +8,6 @@
 #include <string>
 
 #include "base/callback_helpers.h"
-#include "base/cxx17_backports.h"
 #include "base/time/time.h"
 #include "base/values.h"
 #include "components/prefs/json_pref_store.h"
@@ -371,7 +370,7 @@
        PrefRegistry::LOSSY_PREF | kCustomRegistrationFlag,
        WriteablePrefStore::LOSSY_PREF_WRITE_FLAG}};
 
-  for (size_t i = 0; i < base::size(kRegistrationToWriteFlags); ++i) {
+  for (size_t i = 0; i < std::size(kRegistrationToWriteFlags); ++i) {
     RegistrationToWriteFlags entry = kRegistrationToWriteFlags[i];
     registry->RegisterDictionaryPref(entry.pref_name,
                                      entry.registration_flags);
diff --git a/components/printing/test/print_render_frame_helper_browsertest.cc b/components/printing/test/print_render_frame_helper_browsertest.cc
index 8dfd56ef..9c4ca57 100644
--- a/components/printing/test/print_render_frame_helper_browsertest.cc
+++ b/components/printing/test/print_render_frame_helper_browsertest.cc
@@ -11,7 +11,6 @@
 #include <utility>
 
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "base/memory/raw_ptr.h"
 #include "base/run_loop.h"
 #include "base/strings/string_piece.h"
@@ -884,7 +883,7 @@
   bool baseline = false;
 
   EXPECT_TRUE(printer());
-  for (size_t i = 0; i < base::size(kTestPages); ++i) {
+  for (size_t i = 0; i < std::size(kTestPages); ++i) {
     // Load an HTML page and print it.
     LoadHTML(kTestPages[i].page);
     OnPrintPages();
diff --git a/components/proxy_config/proxy_policy_handler.cc b/components/proxy_config/proxy_policy_handler.cc
index 233a89c5..c31cbad 100644
--- a/components/proxy_config/proxy_policy_handler.cc
+++ b/components/proxy_config/proxy_policy_handler.cc
@@ -7,7 +7,6 @@
 #include <stddef.h>
 
 #include "base/check.h"
-#include "base/cxx17_backports.h"
 #include "base/notreached.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/values.h"
@@ -77,7 +76,7 @@
   policy::PolicySource inherited_source =
       policy::POLICY_SOURCE_ENTERPRISE_DEFAULT;
   base::Value proxy_settings(base::Value::Type::DICTIONARY);
-  for (size_t i = 0; i < base::size(kDeprecatedProxyPolicies); ++i) {
+  for (size_t i = 0; i < std::size(kDeprecatedProxyPolicies); ++i) {
     const PolicyMap::Entry* entry = policies.Get(kDeprecatedProxyPolicies[i]);
     if (!entry)
       continue;
@@ -150,7 +149,7 @@
     return true;
 
   bool is_valid_mode = false;
-  for (size_t i = 0; i != base::size(kProxyModeValidationMap); ++i) {
+  for (size_t i = 0; i != std::size(kProxyModeValidationMap); ++i) {
     const ProxyModeValidationEntry& entry = kProxyModeValidationMap[i];
     if (entry.mode_value != mode_value)
       continue;
diff --git a/components/proxy_config/proxy_prefs.cc b/components/proxy_config/proxy_prefs.cc
index 3bd430d4..4659b64 100644
--- a/components/proxy_config/proxy_prefs.cc
+++ b/components/proxy_config/proxy_prefs.cc
@@ -5,7 +5,6 @@
 #include "components/proxy_config/proxy_prefs.h"
 
 #include "base/check.h"
-#include "base/cxx17_backports.h"
 #include "base/notreached.h"
 
 namespace ProxyPrefs {
@@ -20,7 +19,7 @@
                                   kFixedServersProxyModeName,
                                   kSystemProxyModeName };
 
-static_assert(base::size(kProxyModeNames) == kModeCount,
+static_assert(std::size(kProxyModeNames) == kModeCount,
               "kProxyModeNames must have kModeCount elements");
 
 }  // namespace
diff --git a/components/query_parser/query_parser_unittest.cc b/components/query_parser/query_parser_unittest.cc
index f82ab750..8eb82d97 100644
--- a/components/query_parser/query_parser_unittest.cc
+++ b/components/query_parser/query_parser_unittest.cc
@@ -2,11 +2,11 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "components/query_parser/query_parser.h"
+
 #include <stddef.h>
 
-#include "base/cxx17_backports.h"
 #include "base/strings/utf_string_conversions.h"
-#include "components/query_parser/query_parser.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace query_parser {
@@ -80,7 +80,7 @@
     { "foo \"bar baz\"  blah", 4 },
   };
 
-  for (size_t i = 0; i < base::size(data); ++i) {
+  for (size_t i = 0; i < std::size(data); ++i) {
     std::u16string query_string;
     EXPECT_EQ(
         data[i].expected_word_count,
@@ -116,7 +116,7 @@
     { "\"foo blah\"",  "\"foo blah\"",     true,  1, 9, 0, 0 },
     { "foo blah",      "\"foo bar blah\"", true,  1, 4, 9, 13 },
   };
-  for (size_t i = 0; i < base::size(data); ++i) {
+  for (size_t i = 0; i < std::size(data); ++i) {
     query_parser::QueryNodeVector query_nodes;
     QueryParser::ParseQueryNodes(base::UTF8ToUTF16(data[i].query),
                                  MatchingAlgorithm::DEFAULT, &query_nodes);
@@ -152,7 +152,7 @@
     { "\"foo bar\"",   "foo", "bar", "",  2 },
     { "\"foo bar\" a", "foo", "bar", "a", 3 },
   };
-  for (size_t i = 0; i < base::size(data); ++i) {
+  for (size_t i = 0; i < std::size(data); ++i) {
     std::vector<std::u16string> results;
     QueryParser::ParseQueryWords(base::UTF8ToUTF16(data[i].text),
                                  MatchingAlgorithm::DEFAULT, &results);
@@ -194,7 +194,7 @@
       {"\"foo blah\"", "\"foo blah\"", true},
       {"foo blah", "\"foo bar blah\"", true},
   };
-  for (size_t i = 0; i < base::size(data); ++i) {
+  for (size_t i = 0; i < std::size(data); ++i) {
     SCOPED_TRACE(::testing::Message()
                  << " Testing case i=" << i << " query=" << data[i].query
                  << " find_in_text=" << data[i].find_in_text);
diff --git a/components/query_parser/snippet_unittest.cc b/components/query_parser/snippet_unittest.cc
index 67efdbb2..74fa7f6 100644
--- a/components/query_parser/snippet_unittest.cc
+++ b/components/query_parser/snippet_unittest.cc
@@ -8,7 +8,6 @@
 
 #include <algorithm>
 
-#include "base/cxx17_backports.h"
 #include "base/strings/string_split.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
@@ -242,7 +241,7 @@
     { "0 0 1 2 0 0 1 1",                    1,     { 1, 3 } },
     { "0 0 1 1 0 0 5 2 0 0 10 1 0 0 3 10",  2,     { 1, 2, 3, 13 } },
   };
-  for (size_t i = 0; i < base::size(data); ++i) {
+  for (size_t i = 0; i < std::size(data); ++i) {
     Snippet::MatchPositions matches;
     Snippet::ExtractMatchPositions(data[i].offsets_string, "0", &matches);
     EXPECT_EQ(data[i].expected_match_count, matches.size());
diff --git a/components/rlz/rlz_tracker_unittest.cc b/components/rlz/rlz_tracker_unittest.cc
index 34df405..8bf912a 100644
--- a/components/rlz/rlz_tracker_unittest.cc
+++ b/components/rlz/rlz_tracker_unittest.cc
@@ -6,7 +6,6 @@
 
 #include <memory>
 
-#include "base/cxx17_backports.h"
 #include "base/memory/ptr_util.h"
 #include "base/memory/raw_ptr.h"
 #include "base/memory/ref_counted.h"
@@ -332,7 +331,7 @@
 
 void RlzLibTest::ExpectEventRecorded(const char* event_name, bool expected) {
   char cgi[rlz_lib::kMaxCgiLength];
-  GetProductEventsAsCgi(rlz_lib::CHROME, cgi, base::size(cgi));
+  GetProductEventsAsCgi(rlz_lib::CHROME, cgi, std::size(cgi));
   if (expected) {
     EXPECT_STR_CONTAINS(cgi, event_name);
   } else {
diff --git a/components/safe_browsing/content/browser/password_protection/password_protection_commit_deferring_condition.cc b/components/safe_browsing/content/browser/password_protection/password_protection_commit_deferring_condition.cc
index 7eed0595..e64d1d38 100644
--- a/components/safe_browsing/content/browser/password_protection/password_protection_commit_deferring_condition.cc
+++ b/components/safe_browsing/content/browser/password_protection/password_protection_commit_deferring_condition.cc
@@ -12,32 +12,31 @@
 PasswordProtectionCommitDeferringCondition::
     PasswordProtectionCommitDeferringCondition(
         content::NavigationHandle& navigation_handle,
-        scoped_refptr<PasswordProtectionRequestContent> request)
-    : content::CommitDeferringCondition(navigation_handle), request_(request) {
+        PasswordProtectionRequestContent& request)
+    : content::CommitDeferringCondition(navigation_handle),
+      request_(request.AsWeakPtr()) {
   DCHECK(request_);
   request_->AddDeferredNavigation(*this);
 }
 
 PasswordProtectionCommitDeferringCondition::
     ~PasswordProtectionCommitDeferringCondition() {
-  // It's ok we won't call RemoveDeferredNavigation if !navigation_was_resumed
-  // since `request_` will clean up all conditions after calling
-  // ResumeNavigation.
-  if (!navigation_was_resumed_)
+  if (request_)
     request_->RemoveDeferredNavigation(*this);
 }
 
 content::CommitDeferringCondition::Result
 PasswordProtectionCommitDeferringCondition::WillCommitNavigation(
     base::OnceClosure resume) {
-  if (invoke_callback_for_testing_)
-    std::move(invoke_callback_for_testing_).Run();
-
   // The request may have asked for a resumption before this condition was
   // executed. In that case, proceed without deferring.
   if (navigation_was_resumed_)
     return Result::kProceed;
 
+  // If the request was already deleted, it should have called
+  // ResumeNavigation.
+  DCHECK(request_);
+
   resume_ = std::move(resume);
   return Result::kDefer;
 }
diff --git a/components/safe_browsing/content/browser/password_protection/password_protection_commit_deferring_condition.h b/components/safe_browsing/content/browser/password_protection/password_protection_commit_deferring_condition.h
index 6892fec..d3dbc1f 100644
--- a/components/safe_browsing/content/browser/password_protection/password_protection_commit_deferring_condition.h
+++ b/components/safe_browsing/content/browser/password_protection/password_protection_commit_deferring_condition.h
@@ -5,7 +5,7 @@
 #ifndef COMPONENTS_SAFE_BROWSING_CONTENT_BROWSER_PASSWORD_PROTECTION_PASSWORD_PROTECTION_COMMIT_DEFERRING_CONDITION_H_
 #define COMPONENTS_SAFE_BROWSING_CONTENT_BROWSER_PASSWORD_PROTECTION_PASSWORD_PROTECTION_COMMIT_DEFERRING_CONDITION_H_
 
-#include "base/memory/ref_counted.h"
+#include "base/memory/weak_ptr.h"
 #include "content/public/browser/commit_deferring_condition.h"
 
 namespace content {
@@ -31,7 +31,7 @@
  public:
   PasswordProtectionCommitDeferringCondition(
       content::NavigationHandle& navigation_handle,
-      scoped_refptr<PasswordProtectionRequestContent> request);
+      PasswordProtectionRequestContent& request);
 
   PasswordProtectionCommitDeferringCondition(
       const PasswordProtectionCommitDeferringCondition&) = delete;
@@ -56,25 +56,19 @@
   // WillCommitNavigation will not defer the commit.
   void ResumeNavigation();
 
-  // For testing only. Registers a callback that will be invoked when
-  // WillCommitNavigatoin is called by the navigation. This is useful for
-  // yielding in a test when this condition is invoked.
-  void register_invoke_callback_for_testing(base::OnceClosure callback) {
-    invoke_callback_for_testing_ = std::move(callback);
-  }
+  // Returns whether the NavigationHandle tried to commit but was deferred from
+  // doing so by this condition.
+  bool is_deferred_for_testing() const { return !resume_.is_null(); }
 
  private:
   // A pointer to the PasswordProtectionRequestContent on whose behalf this
   // condition is deferring navigations.
-  // TODO(bokan): Replace with a WeakPtr.
-  scoped_refptr<PasswordProtectionRequestContent> request_;
+  base::WeakPtr<PasswordProtectionRequestContent> request_;
 
   // The resume closure used to resume the navigation past this
   // CommitDeferringCondition.
   base::OnceClosure resume_;
 
-  base::OnceClosure invoke_callback_for_testing_;
-
   // Set to true to indicate the request has asked to resume the navigation,
   // i.e. the request result didn't result in a modal being shown, or the user
   // has dismissed the modal.
diff --git a/components/safe_browsing/content/browser/password_protection/password_protection_commit_deferring_condition_unittest.cc b/components/safe_browsing/content/browser/password_protection/password_protection_commit_deferring_condition_unittest.cc
index fc07987..2f36125 100644
--- a/components/safe_browsing/content/browser/password_protection/password_protection_commit_deferring_condition_unittest.cc
+++ b/components/safe_browsing/content/browser/password_protection/password_protection_commit_deferring_condition_unittest.cc
@@ -45,17 +45,16 @@
     std::vector<password_manager::MatchingReusedCredential> credentials = {
         {"http://example.test"}, {"http://2.example.com"}};
 
-    scoped_refptr<PasswordProtectionRequestContent> request =
-        new PasswordProtectionRequestContent(
-            RenderViewHostTestHarness::web_contents(), GURL(), GURL(), GURL(),
-            RenderViewHostTestHarness::web_contents()->GetContentsMimeType(),
-            "username", PasswordType::PASSWORD_TYPE_UNKNOWN, credentials,
-            LoginReputationClientRequest::PASSWORD_REUSE_EVENT,
-            /* password_field_exists*/ true, &service_,
-            /*request_timeout_in_ms=*/0);
+    request_ = new PasswordProtectionRequestContent(
+        RenderViewHostTestHarness::web_contents(), GURL(), GURL(), GURL(),
+        RenderViewHostTestHarness::web_contents()->GetContentsMimeType(),
+        "username", PasswordType::PASSWORD_TYPE_UNKNOWN, credentials,
+        LoginReputationClientRequest::PASSWORD_REUSE_EVENT,
+        /* password_field_exists*/ true, &service_,
+        /*request_timeout_in_ms=*/0);
 
     condition_ = std::make_unique<PasswordProtectionCommitDeferringCondition>(
-        mock_navigation_, request);
+        mock_navigation_, *request_.get());
   }
 
   void TearDown() override {
@@ -64,6 +63,7 @@
   }
 
  protected:
+  scoped_refptr<PasswordProtectionRequestContent> request_;
   std::unique_ptr<PasswordProtectionCommitDeferringCondition> condition_;
 
   MockNavigationHandle mock_navigation_;
diff --git a/components/safe_browsing/content/browser/password_protection/password_protection_request_content.cc b/components/safe_browsing/content/browser/password_protection/password_protection_request_content.cc
index 507e528..541b6de 100644
--- a/components/safe_browsing/content/browser/password_protection/password_protection_request_content.cc
+++ b/components/safe_browsing/content/browser/password_protection/password_protection_request_content.cc
@@ -128,8 +128,13 @@
 }
 
 void PasswordProtectionRequestContent::ResumeDeferredNavigations() {
-  for (PasswordProtectionCommitDeferringCondition* condition :
-       deferred_navigations_) {
+  for (auto itr = deferred_navigations_.begin();
+       itr != deferred_navigations_.end();) {
+    // ResumeNavigation will lead to the condition being destroyed which may
+    // remove it from deferred_navigations_. Make sure we move the iterator
+    // before calling it.
+    PasswordProtectionCommitDeferringCondition* condition = *itr;
+    itr++;
     condition->ResumeNavigation();
   }
 
diff --git a/components/safe_browsing/content/browser/password_protection/password_protection_service.cc b/components/safe_browsing/content/browser/password_protection/password_protection_service.cc
index dddcd05..0d6830480 100644
--- a/components/safe_browsing/content/browser/password_protection/password_protection_service.cc
+++ b/components/safe_browsing/content/browser/password_protection/password_protection_service.cc
@@ -122,24 +122,45 @@
           password_field_exists, this, GetRequestTimeoutInMS()));
   request->Start();
 
+  // TODO(bokan): Now that the throttle has been changed to a
+  // CommitDeferringCondition, a followup CL will remove this and make
+  // activations defer like other navigations. https://crbug.com/1234857
+  //
+  // PasswordProtectionService defers all navigations in the WebContents while
+  // there is a pending request triggered by a password reuse. However it does
+  // this via NavigationThrottles, which are not able to throttle navigations
+  // that activate a prerendered page or a back/forward cached page. As a
+  // temporary workaround, disable activations within this WebContents whenever
+  // this event occurs.
+  //
+  // This code only disallows for PASSWORD_REUSE_EVENT because of the following
+  // observations:
+  // 1) A |warning_request| has to start out as a |pending_request|.
+  // 2) Only trigger type PASSWORD_REUSE_EVENT requests can become
+  // |warning_request|.
+  //
+  // This holds because |warning_requests_| insertion only happens at code that
+  // moves a request from |pending_requests_| to |warning_requests_|, which only
+  // does so if is_modal_warning_showing() is true. is_modal_warning_showing()
+  // can only be set to true if ShouldShowModalWarning() is true, which is
+  // always false if trigger_type != PASSWORD_REUSE_EVENT.
+  //
+  // If we were to disallow for other trigger types, we may disable prerendering
+  // more than required.
+  if (request->trigger_type() ==
+      safe_browsing::LoginReputationClientRequest::PASSWORD_REUSE_EVENT) {
+    web_contents->DisallowActivationNavigationsForBug1234857();
+  }
+
   pending_requests_.insert(std::move(request));
 }
 
 std::unique_ptr<PasswordProtectionCommitDeferringCondition>
 PasswordProtectionService::MaybeCreateCommitDeferringCondition(
     content::NavigationHandle& navigation_handle) {
-  // Don't defer navigations that the user started themselves. This won't
-  // matter if the dialog is showing, since it's modal, but if a password reuse
-  // ping is in progress we shouldn't block the user from navigating.
   if (!navigation_handle.IsRendererInitiated())
     return nullptr;
 
-  // The goal of the deferral is to ensure the correct URL is in the omnibox
-  // while the warning modal is showing. Only the primary main frame affects
-  // the omnibox.
-  if (!navigation_handle.IsInPrimaryMainFrame())
-    return nullptr;
-
   content::WebContents* web_contents = navigation_handle.GetWebContents();
   for (scoped_refptr<PasswordProtectionRequest> request : pending_requests_) {
     PasswordProtectionRequestContent* request_content =
@@ -151,7 +172,7 @@
             GetPasswordProtectionReusedPasswordAccountType(
                 request->password_type(), username_for_last_shown_warning()))) {
       return std::make_unique<PasswordProtectionCommitDeferringCondition>(
-          navigation_handle, request_content);
+          navigation_handle, *request_content);
     }
   }
 
@@ -160,7 +181,7 @@
         static_cast<PasswordProtectionRequestContent*>(request.get());
     if (request_content->web_contents() == web_contents) {
       return std::make_unique<PasswordProtectionCommitDeferringCondition>(
-          navigation_handle, request_content);
+          navigation_handle, *request_content);
     }
   }
   return nullptr;
diff --git a/components/safe_browsing/content/browser/password_protection/password_protection_service_unittest.cc b/components/safe_browsing/content/browser/password_protection/password_protection_service_unittest.cc
index 23b0ffed..80367052 100644
--- a/components/safe_browsing/content/browser/password_protection/password_protection_service_unittest.cc
+++ b/components/safe_browsing/content/browser/password_protection/password_protection_service_unittest.cc
@@ -340,7 +340,7 @@
   request_->Start();
   content::MockNavigationHandle mock_handle;
   auto condition = std::make_unique<PasswordProtectionCommitDeferringCondition>(
-      mock_handle, request_);
+      mock_handle, *request_.get());
   EXPECT_EQ(1U, GetNumberOfDeferredNavigations());
   request_->Cancel(/*timed_out=*/true);
   EXPECT_EQ(1U, GetNumberOfDeferredNavigations());
@@ -351,7 +351,7 @@
   request_->Start();
   content::MockNavigationHandle mock_handle;
   auto condition = std::make_unique<PasswordProtectionCommitDeferringCondition>(
-      mock_handle, request_);
+      mock_handle, *request_.get());
   EXPECT_EQ(1U, GetNumberOfDeferredNavigations());
   request_->Cancel(/*timed_out=*/false);
   EXPECT_EQ(0U, GetNumberOfDeferredNavigations());
diff --git a/components/safe_browsing/core/browser/db/v4_protocol_manager_util_unittest.cc b/components/safe_browsing/core/browser/db/v4_protocol_manager_util_unittest.cc
index 3ca282e7..a36e312 100644
--- a/components/safe_browsing/core/browser/db/v4_protocol_manager_util_unittest.cc
+++ b/components/safe_browsing/core/browser/db/v4_protocol_manager_util_unittest.cc
@@ -212,7 +212,7 @@
       {"javascript:alert()", "", "", ""},
       {"mailto:abc@example.com", "", "", ""},
   };
-  for (size_t i = 0; i < base::size(tests); ++i) {
+  for (size_t i = 0; i < std::size(tests); ++i) {
     SCOPED_TRACE(base::StringPrintf("Test: %s", tests[i].input_url));
     GURL url(tests[i].input_url);
 
diff --git a/components/safe_browsing/core/browser/db/v4_store.cc b/components/safe_browsing/core/browser/db/v4_store.cc
index 939dc1a..9dd657e 100644
--- a/components/safe_browsing/core/browser/db/v4_store.cc
+++ b/components/safe_browsing/core/browser/db/v4_store.cc
@@ -9,7 +9,6 @@
 
 #include "base/base64.h"
 #include "base/bind.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_util.h"
 #include "base/logging.h"
 #include "base/metrics/histogram_functions.h"
@@ -659,7 +658,7 @@
       if (checksum[i] != expected_checksum[i]) {
 #if DCHECK_IS_ON()
         std::string checksum_b64, expected_checksum_b64;
-        base::Base64Encode(base::StringPiece(checksum, base::size(checksum)),
+        base::Base64Encode(base::StringPiece(checksum, std::size(checksum)),
                            &checksum_b64);
         base::Base64Encode(expected_checksum, &expected_checksum_b64);
         DVLOG(1) << "Failure: Checksum mismatch: calculated: " << checksum_b64
@@ -838,7 +837,7 @@
                               store_path_);
 #if DCHECK_IS_ON()
       std::string checksum_b64, expected_checksum_b64;
-      base::Base64Encode(base::StringPiece(checksum, base::size(checksum)),
+      base::Base64Encode(base::StringPiece(checksum, std::size(checksum)),
                          &checksum_b64);
       base::Base64Encode(expected_checksum_, &expected_checksum_b64);
       DVLOG(1) << "Failure: Checksum mismatch: calculated: " << checksum_b64
diff --git a/components/safe_browsing/core/browser/realtime/url_lookup_service_unittest.cc b/components/safe_browsing/core/browser/realtime/url_lookup_service_unittest.cc
index 5617781..4a84d60 100644
--- a/components/safe_browsing/core/browser/realtime/url_lookup_service_unittest.cc
+++ b/components/safe_browsing/core/browser/realtime/url_lookup_service_unittest.cc
@@ -318,7 +318,7 @@
       {"http://user:pass@example.com/", "http://example.com/"},
       {"http://%123:bar@example.com/", "http://example.com/"},
       {"http://example.com/abc#123", "http://example.com/abc#123"}};
-  for (size_t i = 0; i < base::size(sanitize_url_cases); i++) {
+  for (size_t i = 0; i < std::size(sanitize_url_cases); i++) {
     GURL url(sanitize_url_cases[i].url);
     auto result = FillRequestProto(url, last_committed_url_, is_mainframe_,
                                    /*is_sampled_report=*/i % 2 == 0);
diff --git a/components/safe_search_api/safe_search/safe_search_url_checker_client_unittest.cc b/components/safe_search_api/safe_search/safe_search_url_checker_client_unittest.cc
index bb94f7da..22d06b3 100644
--- a/components/safe_search_api/safe_search/safe_search_url_checker_client_unittest.cc
+++ b/components/safe_search_api/safe_search/safe_search_url_checker_client_unittest.cc
@@ -70,7 +70,7 @@
 
  protected:
   GURL GetNewURL() {
-    CHECK(next_url_ < base::size(kURLs));
+    CHECK(next_url_ < std::size(kURLs));
     return GURL(kURLs[next_url_++]);
   }
 
diff --git a/components/safe_search_api/url_checker_unittest.cc b/components/safe_search_api/url_checker_unittest.cc
index c0549a3..6b0a99fa 100644
--- a/components/safe_search_api/url_checker_unittest.cc
+++ b/components/safe_search_api/url_checker_unittest.cc
@@ -12,7 +12,6 @@
 
 #include "base/bind.h"
 #include "base/callback.h"
-#include "base/cxx17_backports.h"
 #include "base/memory/raw_ptr.h"
 #include "base/test/scoped_feature_list.h"
 #include "base/test/task_environment.h"
@@ -68,7 +67,7 @@
 
  protected:
   GURL GetNewURL() {
-    CHECK(next_url_ < base::size(kURLs));
+    CHECK(next_url_ < std::size(kURLs));
     return GURL(kURLs[next_url_++]);
   }
 
diff --git a/components/search_engines/default_search_policy_handler.cc b/components/search_engines/default_search_policy_handler.cc
index 8f82e27..bcb6d75 100644
--- a/components/search_engines/default_search_policy_handler.cc
+++ b/components/search_engines/default_search_policy_handler.cc
@@ -201,7 +201,7 @@
       prefs::kDefaultSearchProviderContextMenuAccessAllowed, dict.get());
 
   size_t policyCount = 14;
-  CHECK_EQ(policyCount, base::size(kDefaultSearchPolicyDataMap));
+  CHECK_EQ(policyCount, std::size(kDefaultSearchPolicyDataMap));
 
   // Set the fields which are not specified by the policy to default values.
   dict->SetString(DefaultSearchManager::kID,
diff --git a/components/search_engines/template_url_prepopulate_data.cc b/components/search_engines/template_url_prepopulate_data.cc
index 2fc0c05..e38343c 100644
--- a/components/search_engines/template_url_prepopulate_data.cc
+++ b/components/search_engines/template_url_prepopulate_data.cc
@@ -4,7 +4,6 @@
 
 #include "components/search_engines/template_url_prepopulate_data.h"
 
-#include "base/cxx17_backports.h"
 #include "base/logging.h"
 #include "build/build_config.h"
 #include "components/country_codes/country_codes.h"
@@ -1011,9 +1010,9 @@
   switch (country_id) {
 #define UNHANDLED_COUNTRY(code1, code2) \
   case country_codes::CountryCharsToCountryID((#code1)[0], (#code2)[0]):
-#define END_UNHANDLED_COUNTRIES(code1, code2)       \
-  engines = engines_##code1##code2;                 \
-  num_engines = base::size(engines_##code1##code2); \
+#define END_UNHANDLED_COUNTRIES(code1, code2)      \
+  engines = engines_##code1##code2;                \
+  num_engines = std::size(engines_##code1##code2); \
   break;
 #define DECLARE_COUNTRY(code1, code2)\
     UNHANDLED_COUNTRY(code1, code2)\
diff --git a/components/search_engines/template_url_prepopulate_data_unittest.cc b/components/search_engines/template_url_prepopulate_data_unittest.cc
index 7bdeed4..06231ada 100644
--- a/components/search_engines/template_url_prepopulate_data_unittest.cc
+++ b/components/search_engines/template_url_prepopulate_data_unittest.cc
@@ -106,7 +106,7 @@
       'V'<<8|'N', 'V'<<8|'U', 'W'<<8|'F', 'W'<<8|'S', 'Y'<<8|'E',
       'Y'<<8|'T', 'Z'<<8|'A', 'Z'<<8|'M', 'Z'<<8|'W', -1 };
 
-  for (size_t i = 0; i < base::size(kCountryIds); ++i) {
+  for (size_t i = 0; i < std::size(kCountryIds); ++i) {
     prefs_.SetInteger(country_codes::kCountryIDAtInstall, kCountryIds[i]);
     std::vector<std::unique_ptr<TemplateURLData>> urls =
         TemplateURLPrepopulateData::GetPrepopulatedEngines(&prefs_, nullptr);
@@ -314,7 +314,7 @@
     // Custom with a country TLD and almost no query params:
     "http://www.google.ru/search?q={searchTerms}"
   };
-  for (size_t i = 0; i < base::size(kGoogleURLs); ++i) {
+  for (size_t i = 0; i < std::size(kGoogleURLs); ++i) {
     EXPECT_EQ(SEARCH_ENGINE_GOOGLE, GetEngineType(kGoogleURLs[i]));
   }
 
@@ -326,7 +326,7 @@
       // Aggressively match types by checking just TLD+1.
       "http://someothersite.yahoo.com/",
   };
-  for (size_t i = 0; i < base::size(kYahooURLs); ++i) {
+  for (size_t i = 0; i < std::size(kYahooURLs); ++i) {
     EXPECT_EQ(SEARCH_ENGINE_YAHOO, GetEngineType(kYahooURLs[i]));
   }
 
diff --git a/components/search_engines/template_url_unittest.cc b/components/search_engines/template_url_unittest.cc
index 89f6425..01205588 100644
--- a/components/search_engines/template_url_unittest.cc
+++ b/components/search_engines/template_url_unittest.cc
@@ -2,12 +2,13 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "components/search_engines/template_url.h"
+
 #include <stddef.h>
 
 #include "base/base64.h"
 #include "base/base_paths.h"
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "base/feature_list.h"
 #include "base/i18n/case_conversion.h"
 #include "base/strings/string_number_conversions.h"
@@ -17,7 +18,6 @@
 #include "components/omnibox/common/omnibox_features.h"
 #include "components/search_engines/search_engines_switches.h"
 #include "components/search_engines/search_terms_data.h"
-#include "components/search_engines/template_url.h"
 #include "components/search_engines/testing_search_terms_data.h"
 #include "net/base/url_util.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -90,7 +90,7 @@
        "http://foo/?boo=sea+rch%2Fbar"},
       {"http://en.wikipedia.org/{searchTerms}", u"wiki/?",
        "http://en.wikipedia.org/wiki/%3F"}};
-  for (size_t i = 0; i < base::size(search_term_cases); ++i) {
+  for (size_t i = 0; i < std::size(search_term_cases); ++i) {
     const SearchTermsCase& value = search_term_cases[i];
     TemplateURLData data;
     data.SetURL(value.url);
@@ -395,7 +395,7 @@
 
   TestingSearchTermsData search_terms_data("http://example.com/e/");
   TemplateURLData data;
-  for (size_t i = 0; i < base::size(search_term_cases); ++i) {
+  for (size_t i = 0; i < std::size(search_term_cases); ++i) {
     const SearchTermsCase& value = search_term_cases[i];
     data.SetURL(value.url);
     TemplateURL url(data);
@@ -436,7 +436,7 @@
   TemplateURL url(data);
   EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_));
   ASSERT_TRUE(url.url_ref().SupportsReplacement(search_terms_data_));
-  for (size_t i = 0; i < base::size(to_wide_cases); i++) {
+  for (size_t i = 0; i < std::size(to_wide_cases); i++) {
     EXPECT_EQ(to_wide_cases[i].expected_decoded_term,
               url.url_ref().SearchTermToString16(
                   to_wide_cases[i].encoded_search_term));
@@ -455,7 +455,7 @@
       {"http://foo{searchTerms}{language}", u"http://foo%s{language}"},
   };
   TemplateURLData data;
-  for (size_t i = 0; i < base::size(test_data); ++i) {
+  for (size_t i = 0; i < std::size(test_data); ++i) {
     data.SetURL(test_data[i].url);
     TemplateURL url(data);
     EXPECT_EQ(test_data[i].expected_result,
@@ -498,7 +498,7 @@
   };
   TemplateURLData data;
   data.input_encodings.push_back("UTF-8");
-  for (size_t i = 0; i < base::size(test_data); ++i) {
+  for (size_t i = 0; i < std::size(test_data); ++i) {
     data.SetURL(test_data[i].url);
     TemplateURL url(data);
     EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_));
@@ -534,7 +534,7 @@
        "http://foo/%82%A0%20%82%A2/bar"},
   };
   TemplateURLData data;
-  for (size_t i = 0; i < base::size(test_data); ++i) {
+  for (size_t i = 0; i < std::size(test_data); ++i) {
     data.SetURL(test_data[i].url);
     data.input_encodings.clear();
     data.input_encodings.push_back(test_data[i].encoding);
@@ -586,7 +586,7 @@
   };
 
   TemplateURLData data;
-  for (size_t i = 0; i < base::size(test_data); ++i) {
+  for (size_t i = 0; i < std::size(test_data); ++i) {
     data.SetURL(test_data[i].url);
     data.input_encodings = test_data[i].encodings;
     TemplateURL url(data);
@@ -632,7 +632,7 @@
   };
   TemplateURLData data;
   data.input_encodings.push_back("UTF-8");
-  for (size_t i = 0; i < base::size(test_data); ++i) {
+  for (size_t i = 0; i < std::size(test_data); ++i) {
     data.SetURL(test_data[i].url);
     TemplateURL url(data);
     EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_));
@@ -665,7 +665,7 @@
   };
   TemplateURLData data;
   data.input_encodings.push_back("UTF-8");
-  for (size_t i = 0; i < base::size(test_data); ++i) {
+  for (size_t i = 0; i < std::size(test_data); ++i) {
     data.SetURL(test_data[i].url);
     TemplateURL url(data);
     EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_));
@@ -696,7 +696,7 @@
   };
   TemplateURLData data;
   data.input_encodings.push_back("UTF-8");
-  for (size_t i = 0; i < base::size(test_data); ++i) {
+  for (size_t i = 0; i < std::size(test_data); ++i) {
     data.SetURL(test_data[i].url);
     TemplateURL url(data);
     EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_));
@@ -730,7 +730,7 @@
   };
   TemplateURLData data;
   data.input_encodings.push_back("UTF-8");
-  for (size_t i = 0; i < base::size(test_data); ++i) {
+  for (size_t i = 0; i < std::size(test_data); ++i) {
     data.SetURL(test_data[i].url);
     TemplateURL url(data);
     EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_));
@@ -759,7 +759,7 @@
   };
   TemplateURLData data;
   data.input_encodings.push_back("UTF-8");
-  for (size_t i = 0; i < base::size(test_data); ++i) {
+  for (size_t i = 0; i < std::size(test_data); ++i) {
     data.SetURL(test_data[i].url);
     TemplateURL url(data);
     EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_));
@@ -792,7 +792,7 @@
   };
   TemplateURLData data;
   data.input_encodings.push_back("UTF-8");
-  for (size_t i = 0; i < base::size(test_data); ++i) {
+  for (size_t i = 0; i < std::size(test_data); ++i) {
     data.SetURL(test_data[i].url);
     TemplateURL url(data);
     EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_));
@@ -819,7 +819,7 @@
       {"http://foo/?q={searchTerms}", u"bar", true,
        "http://foo/?q=bar&chrome_dse_attribution=1"}};
   TemplateURLData data;
-  for (size_t i = 0; i < base::size(test_data); ++i) {
+  for (size_t i = 0; i < std::size(test_data); ++i) {
     data.SetURL(test_data[i].url);
     data.created_from_play_api = test_data[i].created_from_play_api;
     TemplateURL url(data);
@@ -856,7 +856,7 @@
   TemplateURL url(data);
   EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_));
   ASSERT_TRUE(url.url_ref().SupportsReplacement(search_terms_data_));
-  for (size_t i = 0; i < base::size(test_data); ++i) {
+  for (size_t i = 0; i < std::size(test_data); ++i) {
     TemplateURLRef::SearchTermsArgs search_terms_args(u"foobar");
     search_terms_args.accepted_suggestion = test_data[i].accepted_suggestion;
     search_terms_args.original_query =
@@ -925,7 +925,7 @@
       {"http://blah/?q=stock:{searchTerms}", "blah", "/", "q"},
   };
 
-  for (size_t i = 0; i < base::size(test_data); ++i) {
+  for (size_t i = 0; i < std::size(test_data); ++i) {
     TemplateURLData data;
     data.SetURL(test_data[i].url);
     TemplateURL url(data);
@@ -970,7 +970,7 @@
        "", "", ""},
   };
 
-  for (size_t i = 0; i < base::size(test_data); ++i) {
+  for (size_t i = 0; i < std::size(test_data); ++i) {
     TemplateURLData data;
     data.SetURL(test_data[i].url);
     TemplateURL url(data);
@@ -999,7 +999,7 @@
     { "http://google.com/intl/xx/", "http://google.com/complete/", },
   };
 
-  for (size_t i = 0; i < base::size(data); ++i)
+  for (size_t i = 0; i < std::size(data); ++i)
     CheckSuggestBaseURL(data[i].base_url, data[i].base_suggest_url);
 }
 
@@ -1763,7 +1763,7 @@
     { "http://bar/newtab", false, },
   };
 
-  for (size_t i = 0; i < base::size(url_data); ++i) {
+  for (size_t i = 0; i < std::size(url_data); ++i) {
     EXPECT_EQ(url_data[i].result,
               search_provider.IsSearchURL(GURL(url_data[i].url),
                                           search_terms_data_));
@@ -1926,7 +1926,7 @@
       "http://foo/blah.blah.blah.blah.blah" }
   };
 
-  for (size_t i = 0; i < base::size(generate_url_cases); ++i) {
+  for (size_t i = 0; i < std::size(generate_url_cases); ++i) {
     TemplateURLData data;
     data.SetURL(generate_url_cases[i].url);
     TemplateURL t_url(data);
diff --git a/components/services/filesystem/directory_impl_unittest.cc b/components/services/filesystem/directory_impl_unittest.cc
index c134cb2..c64c77d 100644
--- a/components/services/filesystem/directory_impl_unittest.cc
+++ b/components/services/filesystem/directory_impl_unittest.cc
@@ -8,7 +8,6 @@
 #include <map>
 #include <string>
 
-#include "base/cxx17_backports.h"
 #include "base/test/task_environment.h"
 #include "components/services/filesystem/directory_test_helper.h"
 #include "components/services/filesystem/public/mojom/directory.mojom.h"
@@ -51,7 +50,7 @@
       {"my_file1", mojom::kFlagRead | mojom::kFlagWrite | mojom::kFlagCreate},
       {"my_file2", mojom::kFlagWrite | mojom::kFlagCreate},
       {"my_file3", mojom::kFlagAppend | mojom::kFlagCreate}};
-  for (size_t i = 0; i < base::size(files_to_create); i++) {
+  for (size_t i = 0; i < std::size(files_to_create); i++) {
     error = base::File::Error::FILE_ERROR_FAILED;
     bool handled =
         directory->OpenFile(files_to_create[i].name, mojo::NullReceiver(),
diff --git a/components/services/quarantine/quarantine_service_unittest.cc b/components/services/quarantine/quarantine_service_unittest.cc
index cee5c87..5ea8133 100644
--- a/components/services/quarantine/quarantine_service_unittest.cc
+++ b/components/services/quarantine/quarantine_service_unittest.cc
@@ -55,8 +55,8 @@
   ASSERT_TRUE(test_dir.CreateUniqueTempDir());
 
   base::FilePath test_file = test_dir.GetPath().AppendASCII("foo.class");
-  ASSERT_EQ(static_cast<int>(base::size(kTestData)),
-            base::WriteFile(test_file, kTestData, base::size(kTestData)));
+  ASSERT_EQ(static_cast<int>(std::size(kTestData)),
+            base::WriteFile(test_file, kTestData, std::size(kTestData)));
 
   base::RunLoop run_loop;
   quarantine_->QuarantineFile(
diff --git a/components/services/quarantine/quarantine_unittest.cc b/components/services/quarantine/quarantine_unittest.cc
index 4701858b..e43e6fa 100644
--- a/components/services/quarantine/quarantine_unittest.cc
+++ b/components/services/quarantine/quarantine_unittest.cc
@@ -8,7 +8,6 @@
 #include <string>
 
 #include "base/bind.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file.h"
 #include "base/files/file_util.h"
 #include "base/files/scoped_temp_dir.h"
@@ -44,8 +43,8 @@
 #endif
     ASSERT_TRUE(test_dir_.CreateUniqueTempDir());
     ASSERT_EQ(
-        static_cast<int>(base::size(kTestData)),
-        base::WriteFile(GetTestFilePath(), kTestData, base::size(kTestData)));
+        static_cast<int>(std::size(kTestData)),
+        base::WriteFile(GetTestFilePath(), kTestData, std::size(kTestData)));
   }
 
  protected:
diff --git a/components/services/quarantine/quarantine_win_unittest.cc b/components/services/quarantine/quarantine_win_unittest.cc
index 12540ae..3854cc1 100644
--- a/components/services/quarantine/quarantine_win_unittest.cc
+++ b/components/services/quarantine/quarantine_win_unittest.cc
@@ -47,8 +47,8 @@
 bool CreateFile(const base::FilePath& file_path) {
   constexpr char kTestData[] = "Hello world!";
 
-  return base::WriteFile(file_path, kTestData, base::size(kTestData)) ==
-         static_cast<int>(base::size(kTestData));
+  return base::WriteFile(file_path, kTestData, std::size(kTestData)) ==
+         static_cast<int>(std::size(kTestData));
 }
 
 base::FilePath GetZoneIdentifierStreamPath(const base::FilePath& file_path) {
@@ -122,8 +122,8 @@
   static const char kMotwForInternetZone[] = "[ZoneTransfer]\r\nZoneId=3\r\n";
   return base::WriteFile(GetZoneIdentifierStreamPath(file_path),
                          kMotwForInternetZone,
-                         base::size(kMotwForInternetZone)) ==
-         static_cast<int>(base::size(kMotwForInternetZone));
+                         std::size(kMotwForInternetZone)) ==
+         static_cast<int>(std::size(kMotwForInternetZone));
 }
 
 void CheckQuarantineResult(QuarantineFileResult result,
diff --git a/components/services/storage/dom_storage/local_storage_impl.cc b/components/services/storage/dom_storage/local_storage_impl.cc
index 82a90a6..3d24a6d5 100644
--- a/components/services/storage/dom_storage/local_storage_impl.cc
+++ b/components/services/storage/dom_storage/local_storage_impl.cc
@@ -93,8 +93,8 @@
   std::vector<uint8_t> serialized_storage_key(storage_key_str.begin(),
                                               storage_key_str.end());
   DomStorageDatabase::Key key;
-  key.reserve(base::size(kMetaPrefix) + serialized_storage_key.size());
-  key.insert(key.end(), kMetaPrefix, kMetaPrefix + base::size(kMetaPrefix));
+  key.reserve(std::size(kMetaPrefix) + serialized_storage_key.size());
+  key.insert(key.end(), kMetaPrefix, kMetaPrefix + std::size(kMetaPrefix));
   key.insert(key.end(), serialized_storage_key.begin(),
              serialized_storage_key.end());
   return key;
@@ -102,11 +102,11 @@
 
 absl::optional<blink::StorageKey> ExtractStorageKeyFromMetaDataKey(
     const DomStorageDatabase::Key& key) {
-  DCHECK_GT(key.size(), base::size(kMetaPrefix));
+  DCHECK_GT(key.size(), std::size(kMetaPrefix));
   const base::StringPiece key_string(reinterpret_cast<const char*>(key.data()),
                                      key.size());
   return blink::StorageKey::Deserialize(
-      key_string.substr(base::size(kMetaPrefix)));
+      key_string.substr(std::size(kMetaPrefix)));
 }
 
 void SuccessResponse(base::OnceClosure callback, bool success) {
diff --git a/components/services/storage/dom_storage/session_storage_metadata.cc b/components/services/storage/dom_storage/session_storage_metadata.cc
index 76535393..769a9052 100644
--- a/components/services/storage/dom_storage/session_storage_metadata.cc
+++ b/components/services/storage/dom_storage/session_storage_metadata.cc
@@ -4,7 +4,6 @@
 
 #include "components/services/storage/dom_storage/session_storage_metadata.h"
 
-#include "base/cxx17_backports.h"
 #include "base/logging.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_piece.h"
@@ -40,7 +39,7 @@
 constexpr const uint8_t kMapIdPrefixBytes[] = {'m', 'a', 'p', '-'};
 
 constexpr const size_t kNamespacePrefixLength =
-    base::size(SessionStorageMetadata::kNamespacePrefixBytes);
+    std::size(SessionStorageMetadata::kNamespacePrefixBytes);
 constexpr const uint8_t kNamespaceStorageKeySeperatorByte = '-';
 constexpr const size_t kNamespaceStorageKeySeperatorLength = 1;
 constexpr const size_t kPrefixBeforeStorageKeyLength =
diff --git a/components/services/storage/public/cpp/filesystem/filesystem_proxy_unittest.cc b/components/services/storage/public/cpp/filesystem/filesystem_proxy_unittest.cc
index be7a234..1e169b91 100644
--- a/components/services/storage/public/cpp/filesystem/filesystem_proxy_unittest.cc
+++ b/components/services/storage/public/cpp/filesystem/filesystem_proxy_unittest.cc
@@ -7,7 +7,6 @@
 #include <memory>
 
 #include "base/check.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_error_or.h"
 #include "base/files/file_util.h"
 #include "base/files/scoped_temp_dir.h"
@@ -67,15 +66,15 @@
     CHECK(base::CreateDirectory(root.Append(kDir1).Append(kDir1Dir1)));
     CHECK(base::CreateDirectory(root.Append(kDir2)));
     CHECK(base::WriteFile(root.Append(kFile1), kFile1Contents,
-                          base::size(kFile1Contents) - 1));
+                          std::size(kFile1Contents) - 1));
     CHECK(base::WriteFile(root.Append(kFile2), kFile2Contents,
-                          base::size(kFile2Contents) - 1));
+                          std::size(kFile2Contents) - 1));
     CHECK(base::WriteFile(root.Append(kDir1).Append(kDir1File1),
                           kDir1File1Contents,
-                          base::size(kDir1File1Contents) - 1));
+                          std::size(kDir1File1Contents) - 1));
     CHECK(base::WriteFile(root.Append(kDir1).Append(kDir1File2),
                           kDir1File2Contents,
-                          base::size(kDir1File2Contents) - 1));
+                          std::size(kDir1File2Contents) - 1));
 
     if (UseRestrictedFilesystem()) {
       // Run a remote FilesystemImpl on a background thread to exercise
@@ -371,7 +370,7 @@
   absl::optional<base::File::Info> file1_info = proxy().GetFileInfo(kFile1);
   ASSERT_TRUE(file1_info.has_value());
   EXPECT_FALSE(file1_info->is_directory);
-  EXPECT_EQ(static_cast<int>(base::size(kFile1Contents) - 1), file1_info->size);
+  EXPECT_EQ(static_cast<int>(std::size(kFile1Contents) - 1), file1_info->size);
 
   absl::optional<base::File::Info> dir1_info = proxy().GetFileInfo(kDir1);
   ASSERT_TRUE(dir1_info.has_value());
@@ -381,7 +380,7 @@
       proxy().GetFileInfo(kDir1.Append(kDir1File1));
   ASSERT_TRUE(dir1_file1_info.has_value());
   EXPECT_FALSE(dir1_file1_info->is_directory);
-  EXPECT_EQ(static_cast<int>(base::size(kDir1File1Contents) - 1),
+  EXPECT_EQ(static_cast<int>(std::size(kDir1File1Contents) - 1),
             dir1_file1_info->size);
 
   const base::FilePath kBadFilename{FILE_PATH_LITERAL("bad_file")};
@@ -445,7 +444,7 @@
 TEST_P(FilesystemProxyTest, ComputeDirectorySize) {
   // The file size does not include the null terminator, so subtract 1 per file.
   int64_t expected_size =
-      base::size(kDir1File1Contents) + base::size(kDir1File2Contents) - 2;
+      std::size(kDir1File1Contents) + std::size(kDir1File2Contents) - 2;
   EXPECT_EQ(proxy().ComputeDirectorySize(kDir1), expected_size);
 }
 
diff --git a/components/services/storage/service_worker/service_worker_storage_unittest.cc b/components/services/storage/service_worker/service_worker_storage_unittest.cc
index 8b325727..2e4c6e54 100644
--- a/components/services/storage/service_worker/service_worker_storage_unittest.cc
+++ b/components/services/storage/service_worker/service_worker_storage_unittest.cc
@@ -5,13 +5,13 @@
 #include "components/services/storage/service_worker/service_worker_storage.h"
 
 #include <stdint.h>
+
 #include <memory>
 #include <string>
 #include <utility>
 
 #include "base/bind.h"
 #include "base/callback_helpers.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_util.h"
 #include "base/files/scoped_temp_dir.h"
 #include "base/run_loop.h"
@@ -438,7 +438,7 @@
         "HTTP/1.0 200 HONKYDORY\0Content-Length: 5\0\0";
     const std::string kHttpBody = "Hello";
 
-    std::string headers(kHttpHeaders, base::size(kHttpHeaders));
+    std::string headers(kHttpHeaders, std::size(kHttpHeaders));
     mojo_base::BigBuffer body(
         base::as_bytes(base::make_span(kHttpBody.data(), kHttpBody.length())));
 
diff --git a/components/sessions/core/command_storage_backend_unittest.cc b/components/sessions/core/command_storage_backend_unittest.cc
index c9c00b9e..f3a13d6b 100644
--- a/components/sessions/core/command_storage_backend_unittest.cc
+++ b/components/sessions/core/command_storage_backend_unittest.cc
@@ -5,12 +5,12 @@
 #include "components/sessions/core/command_storage_backend.h"
 
 #include <stddef.h>
+
 #include <limits>
 #include <utility>
 
 #include "base/bind.h"
 #include "base/callback_helpers.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_util.h"
 #include "base/files/scoped_temp_dir.h"
 #include "base/memory/scoped_refptr.h"
@@ -211,7 +211,7 @@
   };
 
   const std::vector<uint8_t> key = CommandStorageManager::CreateCryptoKey();
-  for (size_t i = 0; i < base::size(data); ++i) {
+  for (size_t i = 0; i < std::size(data); ++i) {
     scoped_refptr<CommandStorageBackend> backend = CreateBackend(key);
     SessionCommands commands;
     if (i != 0) {
@@ -430,7 +430,7 @@
       {13, "abcdefghijklm"},
   };
 
-  for (size_t i = 0; i < base::size(data); ++i) {
+  for (size_t i = 0; i < std::size(data); ++i) {
     scoped_refptr<CommandStorageBackend> backend =
         CreateBackendWithRestoreType();
     SessionCommands commands;
@@ -737,7 +737,7 @@
   ASSERT_TRUE(base::CopyFile(
       test_data_path, restore_path().Append(kLegacyCurrentSessionFileName)));
   scoped_refptr<CommandStorageBackend> backend = CreateBackendWithRestoreType();
-  AssertCommandsEqualsData(data, base::size(data),
+  AssertCommandsEqualsData(data, std::size(data),
                            backend->ReadLastSessionCommands().commands);
 }
 
diff --git a/components/signin/core/browser/signin_error_controller_unittest.cc b/components/signin/core/browser/signin_error_controller_unittest.cc
index 529fc20..f7885d8 100644
--- a/components/signin/core/browser/signin_error_controller_unittest.cc
+++ b/components/signin/core/browser/signin_error_controller_unittest.cc
@@ -9,7 +9,6 @@
 #include <functional>
 #include <memory>
 
-#include "base/cxx17_backports.h"
 #include "base/scoped_observation.h"
 #include "base/test/task_environment.h"
 #include "build/chromeos_buildflags.h"
@@ -160,8 +159,8 @@
       GoogleServiceAuthError::UNEXPECTED_SERVICE_RESPONSE,
       GoogleServiceAuthError::SERVICE_ERROR};
   static_assert(
-      base::size(table) == GoogleServiceAuthError::NUM_STATES -
-                               GoogleServiceAuthError::kDeprecatedStateCount,
+      std::size(table) == GoogleServiceAuthError::NUM_STATES -
+                              GoogleServiceAuthError::kDeprecatedStateCount,
       "table array does not match the number of auth error types");
 
   for (GoogleServiceAuthError::State state : table) {
diff --git a/components/signin/internal/identity_manager/profile_oauth2_token_service_unittest.cc b/components/signin/internal/identity_manager/profile_oauth2_token_service_unittest.cc
index 1d2898b7..91cb7d1 100644
--- a/components/signin/internal/identity_manager/profile_oauth2_token_service_unittest.cc
+++ b/components/signin/internal/identity_manager/profile_oauth2_token_service_unittest.cc
@@ -701,8 +701,8 @@
       OAuth2AccessTokenManager::RequestParameters("1", account_id1, set_1),
   };
 
-  for (size_t i = 0; i < base::size(params); i++) {
-    for (size_t j = 0; j < base::size(params); j++) {
+  for (size_t i = 0; i < std::size(params); i++) {
+    for (size_t j = 0; j < std::size(params); j++) {
       if (i == j) {
         EXPECT_FALSE(params[i] < params[j]) << " i=" << i << ", j=" << j;
         EXPECT_FALSE(params[j] < params[i]) << " i=" << i << ", j=" << j;
diff --git a/components/site_engagement/content/site_engagement_metrics.cc b/components/site_engagement/content/site_engagement_metrics.cc
index 7439d8bf..bb4d5ad 100644
--- a/components/site_engagement/content/site_engagement_metrics.cc
+++ b/components/site_engagement/content/site_engagement_metrics.cc
@@ -4,7 +4,6 @@
 
 #include "components/site_engagement/content/site_engagement_metrics.h"
 
-#include "base/cxx17_backports.h"
 #include "base/metrics/histogram_macros.h"
 #include "base/strings/string_number_conversions.h"
 #include "components/site_engagement/content/engagement_type.h"
@@ -75,7 +74,7 @@
     return;
 
   std::map<int, int> score_buckets;
-  for (size_t i = 0; i < base::size(kEngagementBucketHistogramBuckets); ++i)
+  for (size_t i = 0; i < std::size(kEngagementBucketHistogramBuckets); ++i)
     score_buckets[kEngagementBucketHistogramBuckets[i]] = 0;
 
   for (const auto& detail : details) {
@@ -123,7 +122,7 @@
 std::vector<std::string>
 SiteEngagementMetrics::GetEngagementBucketHistogramNames() {
   std::vector<std::string> histogram_names;
-  for (size_t i = 0; i < base::size(kEngagementBucketHistogramBuckets); ++i) {
+  for (size_t i = 0; i < std::size(kEngagementBucketHistogramBuckets); ++i) {
     histogram_names.push_back(
         kEngagementBucketHistogramBase +
         base::NumberToString(kEngagementBucketHistogramBuckets[i]));
diff --git a/components/spellcheck/browser/android/component_jni_registrar.cc b/components/spellcheck/browser/android/component_jni_registrar.cc
index a8973312..2ecaddc 100644
--- a/components/spellcheck/browser/android/component_jni_registrar.cc
+++ b/components/spellcheck/browser/android/component_jni_registrar.cc
@@ -6,7 +6,6 @@
 
 #include "base/android/jni_android.h"
 #include "base/android/jni_registrar.h"
-#include "base/cxx17_backports.h"
 #include "components/spellcheck/browser/spellchecker_session_bridge_android.h"
 
 namespace spellcheck {
@@ -20,7 +19,7 @@
 bool RegisterSpellcheckJni(JNIEnv* env) {
   return base::android::RegisterNativeMethods(
       env, kSpellcheckRegisteredMethods,
-      base::size(kSpellcheckRegisteredMethods));
+      std::size(kSpellcheckRegisteredMethods));
 }
 
 }  // namespace android
diff --git a/components/spellcheck/browser/spellcheck_host_metrics_unittest.cc b/components/spellcheck/browser/spellcheck_host_metrics_unittest.cc
index 2a9fb53..b48e0fb8 100644
--- a/components/spellcheck/browser/spellcheck_host_metrics_unittest.cc
+++ b/components/spellcheck/browser/spellcheck_host_metrics_unittest.cc
@@ -8,7 +8,6 @@
 
 #include <memory>
 
-#include "base/cxx17_backports.h"
 #include "base/metrics/histogram_samples.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/metrics/histogram_tester.h"
@@ -85,7 +84,7 @@
   RecordWordCountsForTesting();
 
   // Get samples for all affected histograms.
-  for (size_t i = 0; i < base::size(histogram_names); ++i)
+  for (size_t i = 0; i < std::size(histogram_names); ++i)
     histogram_tester.ExpectTotalCount(histogram_names[i], 0);
 }
 
@@ -119,7 +118,7 @@
                                         expected_counts[2],
                                         expected_counts[3]});
 
-  for (size_t i = 0; i < base::size(histogram_names); ++i) {
+  for (size_t i = 0; i < std::size(histogram_names); ++i) {
     histogram_tester.ExpectTotalCount(histogram_names[i], 1);
     histogram_tester.ExpectBucketCount(histogram_names[i],
                                        static_cast<int>(expected_counts[i]), 1);
@@ -137,7 +136,7 @@
   metrics()->RecordSpellcheckLanguageStats(
       {expected_counts[0], expected_counts[1], expected_counts[2], 0});
 
-  for (size_t i = 0; i < base::size(histogram_names); ++i) {
+  for (size_t i = 0; i < std::size(histogram_names); ++i) {
     histogram_tester.ExpectTotalCount(histogram_names[i], 1);
     histogram_tester.ExpectBucketCount(histogram_names[i],
                                        static_cast<int>(expected_counts[i]), 1);
diff --git a/components/spellcheck/browser/spellcheck_platform_mac_unittest.cc b/components/spellcheck/browser/spellcheck_platform_mac_unittest.cc
index 165b2e8..5925820f 100644
--- a/components/spellcheck/browser/spellcheck_platform_mac_unittest.cc
+++ b/components/spellcheck/browser/spellcheck_platform_mac_unittest.cc
@@ -7,7 +7,6 @@
 #include <stddef.h>
 
 #include "base/bind.h"
-#include "base/cxx17_backports.h"
 #include "base/run_loop.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
@@ -66,7 +65,7 @@
     "noooen",
   };
 
-  for (size_t i = 0; i < base::size(kTestCases); ++i) {
+  for (size_t i = 0; i < std::size(kTestCases); ++i) {
     const std::u16string word(base::ASCIIToUTF16(kTestCases[i]));
     const int doc_tag = spellcheck_platform::GetDocumentTag();
 
@@ -364,7 +363,7 @@
     {"writting", "writing"},
   };
 
-  for (size_t i = 0; i < base::size(kTestCases); ++i) {
+  for (size_t i = 0; i < std::size(kTestCases); ++i) {
     const std::u16string word(base::ASCIIToUTF16(kTestCases[i].input));
     EXPECT_FALSE(spellcheck_platform::CheckSpelling(word, 0)) << word;
 
diff --git a/components/spellcheck/common/spellcheck_common.cc b/components/spellcheck/common/spellcheck_common.cc
index f3e9dff..3ea09e9 100644
--- a/components/spellcheck/common/spellcheck_common.cc
+++ b/components/spellcheck/common/spellcheck_common.cc
@@ -199,9 +199,9 @@
   if (!locale.empty()) {
     UErrorCode error = U_ZERO_ERROR;
     char id[ULOC_LANG_CAPACITY + ULOC_SCRIPT_CAPACITY + ULOC_COUNTRY_CAPACITY];
-    uloc_addLikelySubtags(locale.c_str(), id, base::size(id), &error);
+    uloc_addLikelySubtags(locale.c_str(), id, std::size(id), &error);
     error = U_ZERO_ERROR;
-    uloc_getLanguage(id, language, base::size(language), &error);
+    uloc_getLanguage(id, language, std::size(language), &error);
     country = uloc_getISO3Country(id);
   }
   *language_code = std::string(language);
diff --git a/components/spellcheck/renderer/spellcheck_multilingual_unittest.cc b/components/spellcheck/renderer/spellcheck_multilingual_unittest.cc
index fe430763..5ff53f4 100644
--- a/components/spellcheck/renderer/spellcheck_multilingual_unittest.cc
+++ b/components/spellcheck/renderer/spellcheck_multilingual_unittest.cc
@@ -8,7 +8,6 @@
 #include <memory>
 #include <utility>
 
-#include "base/cxx17_backports.h"
 #include "base/path_service.h"
 #include "base/strings/string_piece.h"
 #include "base/strings/string_split.h"
@@ -150,7 +149,7 @@
   do {
     std::string reordered_languages = base::JoinString(permuted_languages, ",");
     ExpectSpellCheckWordResults(reordered_languages, kTestCases,
-                                base::size(kTestCases));
+                                std::size(kTestCases));
   } while (std::next_permutation(permuted_languages.begin(),
                                  permuted_languages.end()));
 }
@@ -181,8 +180,7 @@
       {L"hola sand hola sand hola sand", 0, 0},
       {L"hola:legs", 0, 9},
       {L"legs:hola", 0, 9}};
-  ExpectSpellCheckWordResults("en-US,es-ES", kTestCases,
-                              base::size(kTestCases));
+  ExpectSpellCheckWordResults("en-US,es-ES", kTestCases, std::size(kTestCases));
 }
 
 // If there are no spellcheck languages, no text should be marked as misspelled.
@@ -237,7 +235,7 @@
       {L"asdne", 0, 5, L"sadness,desasne"},
   };
 
-  for (size_t i = 0; i < base::size(kTestCases); ++i) {
+  for (size_t i = 0; i < std::size(kTestCases); ++i) {
     blink::WebVector<blink::WebString> suggestions;
     size_t misspelling_start;
     size_t misspelling_length;
diff --git a/components/spellcheck/renderer/spellcheck_unittest.cc b/components/spellcheck/renderer/spellcheck_unittest.cc
index 7f5af68..e2fe814c 100644
--- a/components/spellcheck/renderer/spellcheck_unittest.cc
+++ b/components/spellcheck/renderer/spellcheck_unittest.cc
@@ -542,7 +542,7 @@
       {L"3.141592653", true},
   };
 
-  for (size_t i = 0; i < base::size(kTestCases); ++i) {
+  for (size_t i = 0; i < std::size(kTestCases); ++i) {
     size_t input_length = 0;
     if (kTestCases[i].input)
       input_length = wcslen(kTestCases[i].input);
@@ -948,7 +948,7 @@
        L"\x043e\x043d\x04b3\x043e \x0430\x0441\x0442."},
   };
 
-  for (size_t i = 0; i < base::size(kTestCases); ++i) {
+  for (size_t i = 0; i < std::size(kTestCases); ++i) {
     ReinitializeSpellCheck(kTestCases[i].language);
     size_t input_length = 0;
     if (kTestCases[i].input)
@@ -1006,7 +1006,7 @@
     },
   };
 
-  for (size_t i = 0; i < base::size(kTestCases); ++i) {
+  for (size_t i = 0; i < std::size(kTestCases); ++i) {
     ReinitializeSpellCheck(kTestCases[i].language);
 
     std::u16string word(base::WideToUTF16(kTestCases[i].input));
@@ -1396,9 +1396,9 @@
 
   static const char* const kLocales[] = { "en-GB", "en-US", "en-CA", "en-AU" };
 
-  for (size_t j = 0; j < base::size(kLocales); ++j) {
+  for (size_t j = 0; j < std::size(kLocales); ++j) {
     ReinitializeSpellCheck(kLocales[j]);
-    for (size_t i = 0; i < base::size(kTestCases); ++i) {
+    for (size_t i = 0; i < std::size(kTestCases); ++i) {
       size_t input_length = 0;
       if (kTestCases[i].input)
         input_length = strlen(kTestCases[i].input);
@@ -1513,7 +1513,7 @@
   InitializeIfNeeded();
   ASSERT_FALSE(InitializeIfNeeded());
 
-  for (size_t i = 0; i < base::size(kTestCases); ++i) {
+  for (size_t i = 0; i < std::size(kTestCases); ++i) {
     bool result = CheckSpelling(kTestCases[i].word, 0);
     EXPECT_EQ(kTestCases[i].expected_result, result) <<
         "Failed test for " << kTestCases[i].word;
@@ -1531,7 +1531,7 @@
     { "accidently", "accidentally" }
   };
 
-  for (size_t i = 0; i < base::size(kTestCases); ++i) {
+  for (size_t i = 0; i < std::size(kTestCases); ++i) {
     size_t misspelling_start = 0;
     size_t misspelling_length = 0;
     std::vector<std::u16string> suggestions;
@@ -1559,9 +1559,9 @@
       L"in’n’out",
   };
 
-  for (size_t i = 0; i < base::size(kLanguages); ++i) {
+  for (size_t i = 0; i < std::size(kLanguages); ++i) {
     ReinitializeSpellCheck(kLanguages[i]);
-    for (size_t j = 0; j < base::size(kWords); ++j)
+    for (size_t j = 0; j < std::size(kWords); ++j)
       EXPECT_TRUE(IsValidContraction(base::WideToUTF16(kWords[j]), 0));
   }
 }
diff --git a/components/spellcheck/renderer/spellcheck_worditerator.cc b/components/spellcheck/renderer/spellcheck_worditerator.cc
index 059dae0..3fbac6d 100644
--- a/components/spellcheck/renderer/spellcheck_worditerator.cc
+++ b/components/spellcheck/renderer/spellcheck_worditerator.cc
@@ -11,7 +11,6 @@
 #include <string>
 #include <utility>
 
-#include "base/cxx17_backports.h"
 #include "base/i18n/break_iterator.h"
 #include "base/logging.h"
 #include "base/strings/stringprintf.h"
@@ -159,7 +158,7 @@
   UErrorCode error = U_ZERO_ERROR;
   UScriptCode script_code[8];
   int scripts = uscript_getCode(language.c_str(), script_code,
-                                base::size(script_code), &error);
+                                std::size(script_code), &error);
   if (U_SUCCESS(error) && scripts >= 1)
     script_code_ = script_code[0];
 
diff --git a/components/spellcheck/renderer/spellcheck_worditerator_unittest.cc b/components/spellcheck/renderer/spellcheck_worditerator_unittest.cc
index 04f53af..8a9ebc0a 100644
--- a/components/spellcheck/renderer/spellcheck_worditerator_unittest.cc
+++ b/components/spellcheck/renderer/spellcheck_worditerator_unittest.cc
@@ -2,18 +2,18 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "components/spellcheck/renderer/spellcheck_worditerator.h"
+
 #include <stddef.h>
 
 #include <string>
 #include <vector>
 
-#include "base/cxx17_backports.h"
 #include "base/format_macros.h"
 #include "base/i18n/break_iterator.h"
 #include "base/strings/string_split.h"
 #include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
-#include "components/spellcheck/renderer/spellcheck_worditerator.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 using base::i18n::BreakIterator;
@@ -156,7 +156,7 @@
     },
   };
 
-  for (size_t i = 0; i < base::size(kTestCases); ++i) {
+  for (size_t i = 0; i < std::size(kTestCases); ++i) {
     SCOPED_TRACE(base::StringPrintf("kTestCases[%" PRIuS "]: language=%s", i,
                                     kTestCases[i].language));
 
@@ -261,7 +261,7 @@
     },
   };
 
-  for (size_t i = 0; i < base::size(kTestCases); ++i) {
+  for (size_t i = 0; i < std::size(kTestCases); ++i) {
     SCOPED_TRACE(base::StringPrintf("kTestCases[%" PRIuS "]: language=%s", i,
                                     kTestCases[i].language));
 
@@ -308,7 +308,7 @@
       {"en-US", L"....you\x2019re", L"you\x2019re"},
   };
 
-  for (size_t i = 0; i < base::size(kTestCases); ++i) {
+  for (size_t i = 0; i < std::size(kTestCases); ++i) {
     SpellcheckCharAttribute attributes;
     attributes.SetDefaultLanguage(kTestCases[i].language);
 
diff --git a/components/ssl_errors/error_info.cc b/components/ssl_errors/error_info.cc
index 79dda76..a1c6651 100644
--- a/components/ssl_errors/error_info.cc
+++ b/components/ssl_errors/error_info.cc
@@ -6,7 +6,6 @@
 
 #include <stddef.h>
 
-#include "base/cxx17_backports.h"
 #include "base/i18n/message_formatter.h"
 #include "base/notreached.h"
 #include "base/strings/utf_string_conversions.h"
@@ -270,9 +269,9 @@
       CERT_SYMANTEC_LEGACY,
       CERT_KNOWN_INTERCEPTION_BLOCKED,
   };
-  DCHECK(base::size(kErrorFlags) == base::size(kErrorTypes));
+  DCHECK(std::size(kErrorFlags) == std::size(kErrorTypes));
 
-  for (size_t i = 0; i < base::size(kErrorFlags); ++i) {
+  for (size_t i = 0; i < std::size(kErrorFlags); ++i) {
     if ((cert_status & kErrorFlags[i]) && errors) {
       errors->push_back(
           ErrorInfo::CreateError(kErrorTypes[i], cert.get(), url));
diff --git a/components/storage_monitor/mtab_watcher_linux.cc b/components/storage_monitor/mtab_watcher_linux.cc
index ab5714e9..45042ce 100644
--- a/components/storage_monitor/mtab_watcher_linux.cc
+++ b/components/storage_monitor/mtab_watcher_linux.cc
@@ -11,7 +11,6 @@
 #include <stdio.h>
 
 #include "base/bind.h"
-#include "base/cxx17_backports.h"
 #include "base/logging.h"
 #include "base/threading/scoped_blocking_call.h"
 
@@ -73,7 +72,7 @@
   // devices that have been mounted over.
   while (getmntent_r(fp, &entry, buf, sizeof(buf))) {
     // We only care about real file systems.
-    for (size_t i = 0; i < base::size(kKnownFileSystems); ++i) {
+    for (size_t i = 0; i < std::size(kKnownFileSystems); ++i) {
       if (strcmp(kKnownFileSystems[i], entry.mnt_type) == 0) {
         device_map[base::FilePath(entry.mnt_dir)] =
             base::FilePath(entry.mnt_fsname);
diff --git a/components/storage_monitor/storage_monitor_linux_unittest.cc b/components/storage_monitor/storage_monitor_linux_unittest.cc
index 8d0f2ef..069bddbd 100644
--- a/components/storage_monitor/storage_monitor_linux_unittest.cc
+++ b/components/storage_monitor/storage_monitor_linux_unittest.cc
@@ -16,7 +16,6 @@
 
 #include "base/bind.h"
 #include "base/check.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_util.h"
 #include "base/files/scoped_temp_dir.h"
 #include "base/run_loop.h"
@@ -77,7 +76,7 @@
                                            const base::FilePath& mount_point) {
   bool device_found = false;
   size_t i = 0;
-  for (; i < base::size(kTestDeviceData); i++) {
+  for (; i < std::size(kTestDeviceData); i++) {
     if (device_path.value() == kTestDeviceData[i].device_path) {
       device_found = true;
       break;
@@ -175,7 +174,7 @@
     MtabTestData initial_test_data[] = {
       MtabTestData("dummydevice", "dummydir", kInvalidFS),
     };
-    WriteToMtab(initial_test_data, base::size(initial_test_data),
+    WriteToMtab(initial_test_data, std::size(initial_test_data),
                 /*overwrite=*/true);
 
     monitor_ = std::make_unique<TestStorageMonitorLinux>(mtab_file_);
@@ -340,7 +339,7 @@
   };
   // Only |kDeviceDCIM2| should be attached, since |kDeviceFixed| has a bad
   // path.
-  AppendToMtabAndRunLoop(test_data, base::size(test_data));
+  AppendToMtabAndRunLoop(test_data, std::size(test_data));
 
   EXPECT_EQ(1, observer().attach_calls());
   EXPECT_EQ(0, observer().detach_calls());
@@ -363,7 +362,7 @@
     MtabTestData(kDeviceDCIM1, test_path_a.value(), kValidFS),
   };
   // |kDeviceDCIM1| should be attached as expected.
-  AppendToMtabAndRunLoop(test_data1, base::size(test_data1));
+  AppendToMtabAndRunLoop(test_data1, std::size(test_data1));
 
   EXPECT_EQ(1, observer().attach_calls());
   EXPECT_EQ(0, observer().detach_calls());
@@ -376,7 +375,7 @@
   MtabTestData test_data2[] = {
     MtabTestData(kDeviceFixed, test_path_b.value(), kValidFS),
   };
-  AppendToMtabAndRunLoop(test_data2, base::size(test_data2));
+  AppendToMtabAndRunLoop(test_data2, std::size(test_data2));
   EXPECT_EQ(1, observer().attach_calls());
   EXPECT_EQ(0, observer().detach_calls());
 
@@ -390,7 +389,7 @@
   MtabTestData test_data3[] = {
     MtabTestData(kDeviceNoDCIM, test_path_b.value(), kValidFS),
   };
-  AppendToMtabAndRunLoop(test_data3, base::size(test_data3));
+  AppendToMtabAndRunLoop(test_data3, std::size(test_data3));
   EXPECT_EQ(2, observer().attach_calls());
   EXPECT_EQ(1, observer().detach_calls());
   EXPECT_EQ(GetDeviceId(kDeviceNoDCIM), observer().last_attached().device_id());
@@ -418,7 +417,7 @@
     MtabTestData(kDeviceDCIM1, test_path_a.value(), kValidFS),
     MtabTestData(kDeviceDCIM2, test_path_b.value(), kValidFS),
   };
-  AppendToMtabAndRunLoop(test_data1, base::size(test_data1));
+  AppendToMtabAndRunLoop(test_data1, std::size(test_data1));
   EXPECT_EQ(2, observer().attach_calls());
   EXPECT_EQ(0, observer().detach_calls());
 
@@ -430,7 +429,7 @@
     MtabTestData(kDeviceDCIM1, test_path_b.value(), kValidFS),
     MtabTestData(kDeviceDCIM2, test_path_a.value(), kValidFS),
   };
-  OverwriteMtabAndRunLoop(test_data2, base::size(test_data2));
+  OverwriteMtabAndRunLoop(test_data2, std::size(test_data2));
   EXPECT_EQ(4, observer().attach_calls());
   EXPECT_EQ(2, observer().detach_calls());
 
@@ -455,7 +454,7 @@
     MtabTestData(kDeviceDCIM1, test_path_a.value(), kValidFS),
     MtabTestData(kDeviceDCIM2, test_path_b.value(), kValidFS),
   };
-  AppendToMtabAndRunLoop(test_data1, base::size(test_data1));
+  AppendToMtabAndRunLoop(test_data1, std::size(test_data1));
   EXPECT_EQ(2, observer().attach_calls());
   EXPECT_EQ(0, observer().detach_calls());
 
@@ -468,7 +467,7 @@
   MtabTestData test_data2[] = {
     MtabTestData(kDeviceDCIM1, test_path_b.value(), kValidFS),
   };
-  AppendToMtabAndRunLoop(test_data2, base::size(test_data2));
+  AppendToMtabAndRunLoop(test_data2, std::size(test_data2));
   EXPECT_EQ(2, observer().attach_calls());
   EXPECT_EQ(1, observer().detach_calls());
 
@@ -480,7 +479,7 @@
     MtabTestData(kDeviceDCIM2, test_path_b.value(), kValidFS),
     MtabTestData(kDeviceDCIM1, test_path_b.value(), kValidFS),
   };
-  OverwriteMtabAndRunLoop(test_data3, base::size(test_data3));
+  OverwriteMtabAndRunLoop(test_data3, std::size(test_data3));
   EXPECT_EQ(3, observer().attach_calls());
   EXPECT_EQ(2, observer().detach_calls());
 
@@ -491,14 +490,14 @@
   MtabTestData test_data4[] = {
     MtabTestData(kDeviceDCIM1, test_path_a.value(), kValidFS),
   };
-  AppendToMtabAndRunLoop(test_data4, base::size(test_data4));
+  AppendToMtabAndRunLoop(test_data4, std::size(test_data4));
   EXPECT_EQ(3, observer().attach_calls());
   EXPECT_EQ(2, observer().detach_calls());
 
   // Detach |kDeviceDCIM1| from |kMountPointB|.
   // kDeviceDCIM1 -> kMountPointA *
   // kDeviceDCIM2 -> kMountPointB *
-  OverwriteMtabAndRunLoop(test_data1, base::size(test_data1));
+  OverwriteMtabAndRunLoop(test_data1, std::size(test_data1));
   EXPECT_EQ(5, observer().attach_calls());
   EXPECT_EQ(3, observer().detach_calls());
 
@@ -520,7 +519,7 @@
   MtabTestData test_data1[] = {
     MtabTestData(kDeviceDCIM1, test_path_a.value(), kValidFS),
   };
-  AppendToMtabAndRunLoop(test_data1, base::size(test_data1));
+  AppendToMtabAndRunLoop(test_data1, std::size(test_data1));
   EXPECT_EQ(1, observer().attach_calls());
   EXPECT_EQ(0, observer().detach_calls());
 
@@ -530,7 +529,7 @@
   MtabTestData test_data2[] = {
     MtabTestData(kDeviceDCIM1, test_path_b.value(), kValidFS),
   };
-  AppendToMtabAndRunLoop(test_data2, base::size(test_data2));
+  AppendToMtabAndRunLoop(test_data2, std::size(test_data2));
   EXPECT_EQ(1, observer().attach_calls());
   EXPECT_EQ(0, observer().detach_calls());
 
@@ -542,7 +541,7 @@
     MtabTestData(kDeviceFixed, test_path_a.value(), kValidFS),
   };
   RemoveDCIMDirFromMountPoint(kMountPointA);
-  AppendToMtabAndRunLoop(test_data3, base::size(test_data3));
+  AppendToMtabAndRunLoop(test_data3, std::size(test_data3));
   EXPECT_EQ(2, observer().attach_calls());
   EXPECT_EQ(1, observer().detach_calls());
 
@@ -554,7 +553,7 @@
     MtabTestData(kDeviceDCIM1, test_path_b.value(), kValidFS),
   };
   CreateMountPointWithDCIMDir(kMountPointA);
-  OverwriteMtabAndRunLoop(test_data4, base::size(test_data4));
+  OverwriteMtabAndRunLoop(test_data4, std::size(test_data4));
   EXPECT_EQ(2, observer().attach_calls());
   EXPECT_EQ(1, observer().detach_calls());
 
@@ -566,7 +565,7 @@
     MtabTestData(kDeviceNoDCIM, test_path_b.value(), kValidFS),
   };
   base::DeleteFile(test_path_b.Append(kDCIMDirectoryName));
-  AppendToMtabAndRunLoop(test_data5, base::size(test_data5));
+  AppendToMtabAndRunLoop(test_data5, std::size(test_data5));
   EXPECT_EQ(4, observer().attach_calls());
   EXPECT_EQ(2, observer().detach_calls());
 
@@ -578,13 +577,13 @@
     MtabTestData(kDeviceDCIM1, test_path_b.value(), kValidFS),
   };
   CreateMountPointWithDCIMDir(kMountPointB);
-  OverwriteMtabAndRunLoop(test_data6, base::size(test_data6));
+  OverwriteMtabAndRunLoop(test_data6, std::size(test_data6));
   EXPECT_EQ(4, observer().attach_calls());
   EXPECT_EQ(3, observer().detach_calls());
 
   // Detach |kDeviceDCIM1| from |kMountPointB|.
   // kDeviceDCIM1 -> kMountPointA *
-  OverwriteMtabAndRunLoop(test_data1, base::size(test_data1));
+  OverwriteMtabAndRunLoop(test_data1, std::size(test_data1));
   EXPECT_EQ(4, observer().attach_calls());
   EXPECT_EQ(3, observer().detach_calls());
 
@@ -612,7 +611,7 @@
     MtabTestData(kDeviceNoDCIM, test_path_b.value(), kValidFS),
     MtabTestData(kDeviceFixed, test_path_c.value(), kValidFS),
   };
-  AppendToMtabAndRunLoop(test_data1, base::size(test_data1));
+  AppendToMtabAndRunLoop(test_data1, std::size(test_data1));
   EXPECT_EQ(2, observer().attach_calls());
   EXPECT_EQ(0, observer().detach_calls());
 
@@ -653,7 +652,7 @@
     MtabTestData(kDeviceFixed, test_path_b.value(), kValidFS),
     MtabTestData(kDeviceFixed, test_path_c.value(), kValidFS),
   };
-  AppendToMtabAndRunLoop(test_data2, base::size(test_data2));
+  AppendToMtabAndRunLoop(test_data2, std::size(test_data2));
 
   EXPECT_TRUE(notifier()->GetStorageInfoForPath(test_path_a, &device_info));
   EXPECT_EQ(GetDeviceId(kDeviceDCIM1), device_info.device_id());
@@ -679,7 +678,7 @@
     MtabTestData(kDeviceNoDCIM, test_path_b.value(), kValidFS),
     MtabTestData(kDeviceFixed, kInvalidPath, kInvalidFS),
   };
-  AppendToMtabAndRunLoop(test_data1, base::size(test_data1));
+  AppendToMtabAndRunLoop(test_data1, std::size(test_data1));
   EXPECT_EQ(2, observer().attach_calls());
   EXPECT_EQ(0, observer().detach_calls());
 
diff --git a/components/strings/components_google_chrome_strings_ne.xtb b/components/strings/components_google_chrome_strings_ne.xtb
index b5f6c71..8a748a4 100644
--- a/components/strings/components_google_chrome_strings_ne.xtb
+++ b/components/strings/components_google_chrome_strings_ne.xtb
@@ -6,6 +6,7 @@
 <translation id="1635457557763038537">तपाईंले अर्को पटक Chrome खोल्दा तपाईंले गर्नुभएका परिवर्तनहरू लागू हुने छन्।</translation>
 <translation id="2447485272386224171"><ph name="BEGIN_LINK_CHROMIUM" />Chromium<ph name="END_LINK_CHROMIUM" /> खुला स्रोतको परियोजना र अन्य <ph name="BEGIN_LINK_OSS" />खुला स्रोतको सफ्टवेयर<ph name="END_LINK_OSS" /> प्रयोग गरी Chrome निर्माण गरिएको हो।</translation>
 <translation id="2588322182880276190">Chrome चिन्ह</translation>
+<translation id="290720624583273918">CloudReady २.० ले आफ्नो प्रारम्भिक सेटअप पूरा गरेको छैन।</translation>
 <translation id="3444832043240812445">यदि तपाइँले <ph name="BEGIN_LINK" />क्रयास प्रतिवेदन सक्षम<ph name="END_LINK" /> गर्नुभयो बने यस पृष्ठले तपाइँका भर्खरैका क्रयासहरूमा जानकारी देखाउँछ।</translation>
 <translation id="3875312571075912821">Chrome लाई आफ्नो फायरवाल वा एन्टिभाइरसका सेटिङहरूमा
           नेटवर्कमा पहुँच गर्ने अनुमति दिनुहोस्।</translation>
diff --git a/components/strings/components_strings_ne.xtb b/components/strings/components_strings_ne.xtb
index 0870296d..60aab27 100644
--- a/components/strings/components_strings_ne.xtb
+++ b/components/strings/components_strings_ne.xtb
@@ -519,6 +519,7 @@
 <translation id="2523886232349826891">यो डिभाइसमा भने यस कार्डलाई अझै पनि सुरक्षित गरिन्छ</translation>
 <translation id="2524461107774643265">थप जानकारी थप्नुहोस्</translation>
 <translation id="2529899080962247600">यो फिल्डमा <ph name="MAX_ITEMS_LIMIT" /> भन्दा बढी प्रविष्टि हुनु हुँदैन। थप सबै प्रविष्टि बेवास्ता गरिने छन्।</translation>
+<translation id="2535585790302968248">तपाईं गोप्य रूपमा ब्राउज गर्न चाहनुहुन्छ भने नयाँ इन्कोग्निटो ट्याब खोल्नुहोस्</translation>
 <translation id="2535659140340599600">{COUNT,plural, =1{र थप १}other{र थप #}}</translation>
 <translation id="2536110899380797252">ठेगाना थप्नुहोस्</translation>
 <translation id="2539524384386349900">पत्ता लगाउनुहोस्</translation>
@@ -585,6 +586,7 @@
 <translation id="2709516037105925701">स्वत:भर्नुहोस्</translation>
 <translation id="2713444072780614174">सेतो</translation>
 <translation id="2715612312510870559"><ph name="UPDATE_CREDIT_CARD_FOCUSED_FRIENDLY_MATCH_TEXT" />, Chrome का सेटिङमा गई आफ्ना भुक्तानी तथा क्रेडिट कार्डसम्बन्धी जानकारी व्यवस्थित गर्न Tab थिच्नुहोस् अनि Enter थिच्नुहोस्</translation>
+<translation id="271663710482723385">तपाईं फुल स्क्रिनबाट बाहिरिन चाहनुहुन्छ भने |<ph name="ACCELERATOR1" />| र |<ph name="ACCELERATOR2" />| की एकै पटक थिच्नुहोस्</translation>
 <translation id="2721148159707890343">अनुरोध सफल भयो</translation>
 <translation id="2723669454293168317">Chrome का सेटिङमा गई सुरक्षितपनाको जाँच गर्नुहोस्</translation>
 <translation id="2726001110728089263">छेउको ट्रे</translation>
@@ -1257,6 +1259,7 @@
 <translation id="4854362297993841467">डेलिभरीको यो विधि उपलब्ध छैन। फरक विधि चयन गर्ने प्रयास गर्नुहोस्।</translation>
 <translation id="4854853140771946034">Google Keep प्रयोग गरी तुरुन्तै नयाँ टिपोट बनाउनुहोस्</translation>
 <translation id="485902285759009870">कोड पुष्टि गरिँदै छ...</translation>
+<translation id="4866506163384898554">तपाईं कर्सर देखाउन चाहनुहुन्छ भने |<ph name="ACCELERATOR1" />| र |<ph name="ACCELERATOR2" />| की एकै पटक थिच्नुहोस्</translation>
 <translation id="4876188919622883022">सरलीकृत हेराइको सुविधा</translation>
 <translation id="4876305945144899064">कुनै पनि प्रयोगकर्ता नाम छैन</translation>
 <translation id="4877083676943085827">{COUNT,plural, =0{कुनै पनि होइन}=1{<ph name="EXAMPLE_DOMAIN_1" />}=2{<ph name="EXAMPLE_DOMAIN_1" />, <ph name="EXAMPLE_DOMAIN_2" />}other{<ph name="EXAMPLE_DOMAIN_1" />, <ph name="EXAMPLE_DOMAIN_2" />, <ph name="AND_MORE" />}}</translation>
@@ -1480,6 +1483,7 @@
 <translation id="5556459405103347317">पुन: लोड गर्नुहोस्</translation>
 <translation id="5560088892362098740">म्याद सकिने मिति</translation>
 <translation id="55635442646131152">कागजातको रूपरेखा</translation>
+<translation id="5565613213060953222">इन्कोग्निटो ट्याब खोल्नुहोस्</translation>
 <translation id="5565735124758917034">सक्रिय</translation>
 <translation id="5570825185877910964">खाता सेभ गर्नुहोस्</translation>
 <translation id="5571083550517324815">यो ठेगानाबाट पिकअप गर्न सकिँदैन। कुनै अर्को ठेगाना चयन गर्नुहोस्।</translation>
@@ -1946,6 +1950,7 @@
 <translation id="7192203810768312527"><ph name="SIZE" /> ठाउँ खाली गर्दछ। तपाईं अर्कोपटक आउँदा केही साइटहरू अझ ढिलोगरी लोड हुनसक्छन्।</translation>
 <translation id="719464814642662924">भिषा</translation>
 <translation id="7201591969684833065">तपाईंका प्रशासक निम्न कुरा हेर्न सक्नुहुन्छ:</translation>
+<translation id="7202217080450895452"><ph name="LAUNCH_INCOGNITO_FOCUSED_FRIENDLY_MATCH_TEXT" />, तपाईं गोप्य रूपमा ब्राउज गर्न चाहनुहुन्छ भने ट्याब की अनि इन्टर की थिचेर नयाँ इन्कोग्निटो ट्याब खोल्नुहोस्</translation>
 <translation id="7202346780273620635">Letter-Extra</translation>
 <translation id="7210863904660874423"><ph name="HOST_NAME" /> ले सुरक्षा मानहरूको पालना गर्दैन।</translation>
 <translation id="7210993021468939304">कन्टेनर भित्र Linux का क्रियाकलाप हेर्न र कन्टेनरभित्र Linux एपहरू इन्स्टल गर्न र चलाउन सक्छ</translation>
@@ -2211,6 +2216,7 @@
 <translation id="799149739215780103">बाइन्ड</translation>
 <translation id="7992044431894087211"><ph name="APPLICATION_TITLE" /> सँग स्क्रिन सेयर गर्ने कार्य सुचारु भएको छ</translation>
 <translation id="7995512525968007366">तोकिएको छैन</translation>
+<translation id="7998269595945679889">इन्कोग्निटो ट्याब खोल्ने बटन, तपाईं गोप्य रूपमा ब्राउज गर्न चाहनुहुन्छ भने इन्टर की थिचेर नयाँ इन्कोग्निटो ट्याब खोल्नुहोस्</translation>
 <translation id="800218591365569300">मेमोरी खाली गर्न अन्य ट्याब वा प्रोग्रामहरू बन्द गरी हेर्नुहोस्।</translation>
 <translation id="8004582292198964060">ब्राउजर</translation>
 <translation id="8012116502927253373">{NUM_CARDS,plural, =1{यो कार्ड र यसको बिलिङ ठेगाना सुरक्षित गरिने छ। तपाईं <ph name="USER_EMAIL" /> मार्फत साइन इन हुँदा यसको प्रयोग गर्न सक्नु हुने छ।}other{यी कार्ड र यिनका बिलिङ ठेगाना सुरक्षित गरिने छन्। तपाईं <ph name="USER_EMAIL" /> मार्फत साइन इन हुँदा यिनको प्रयोग गर्न सक्नु हुने छ।}}</translation>
diff --git a/components/subresource_filter/content/browser/async_document_subresource_filter_unittest.cc b/components/subresource_filter/content/browser/async_document_subresource_filter_unittest.cc
index 8e00329..ab26c07 100644
--- a/components/subresource_filter/content/browser/async_document_subresource_filter_unittest.cc
+++ b/components/subresource_filter/content/browser/async_document_subresource_filter_unittest.cc
@@ -9,7 +9,6 @@
 
 #include "base/bind.h"
 #include "base/callback_helpers.h"
-#include "base/cxx17_backports.h"
 #include "base/run_loop.h"
 #include "base/test/task_environment.h"
 #include "base/test/test_simple_task_runner.h"
@@ -620,7 +619,7 @@
        MakeState(true, true)},
   };
 
-  for (size_t i = 0, size = base::size(kTestCases); i != size; ++i) {
+  for (size_t i = 0, size = std::size(kTestCases); i != size; ++i) {
     SCOPED_TRACE(::testing::Message() << "Test number: " << i);
     const auto& test_case = kTestCases[i];
 
diff --git a/components/sync/base/model_type.cc b/components/sync/base/model_type.cc
index eb679699..a74c1c6f 100644
--- a/components/sync/base/model_type.cc
+++ b/components/sync/base/model_type.cc
@@ -8,7 +8,6 @@
 
 #include <ostream>
 
-#include "base/cxx17_backports.h"
 #include "base/logging.h"
 #include "base/notreached.h"
 #include "base/ranges/algorithm.h"
@@ -168,7 +167,7 @@
      ModelTypeForHistograms::kNigori},
 };
 
-static_assert(base::size(kModelTypeInfoMap) == GetNumModelTypes(),
+static_assert(std::size(kModelTypeInfoMap) == GetNumModelTypes(),
               "kModelTypeInfoMap should have GetNumModelTypes() elements");
 
 static_assert(38 == syncer::GetNumModelTypes(),
diff --git a/components/sync/base/unique_position.cc b/components/sync/base/unique_position.cc
index b270de0..1d03579 100644
--- a/components/sync/base/unique_position.cc
+++ b/components/sync/base/unique_position.cc
@@ -56,7 +56,7 @@
 
     un_gzipped.resize(uncompressed_len);
     int result = uncompress(
-        reinterpret_cast<Bytef*>(base::data(un_gzipped)), &uncompressed_len,
+        reinterpret_cast<Bytef*>(std::data(un_gzipped)), &uncompressed_len,
         reinterpret_cast<const Bytef*>(proto.compressed_value().data()),
         proto.compressed_value().size());
     if (result != Z_OK) {
diff --git a/components/sync/base/unique_position_unittest.cc b/components/sync/base/unique_position_unittest.cc
index 53d3886..760a060 100644
--- a/components/sync/base/unique_position_unittest.cc
+++ b/components/sync/base/unique_position_unittest.cc
@@ -10,7 +10,6 @@
 #include <vector>
 
 #include "base/base64.h"
-#include "base/cxx17_backports.h"
 #include "base/hash/sha1.h"
 #include "base/logging.h"
 #include "base/memory/raw_ptr.h"
@@ -81,8 +80,8 @@
       kBiggerPosition,
   };
 
-  const size_t kNumPositions = base::size(kPositionArray);
-  const size_t kNumSortedPositions = base::size(kSortedPositionArray);
+  const size_t kNumPositions = std::size(kPositionArray);
+  const size_t kNumSortedPositions = std::size(kSortedPositionArray);
 };
 
 static constexpr char kMinSuffix[] = {
@@ -90,7 +89,7 @@
     '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00',
     '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00',
     '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x01'};
-static_assert(base::size(kMinSuffix) == UniquePosition::kSuffixLength,
+static_assert(std::size(kMinSuffix) == UniquePosition::kSuffixLength,
               "Wrong size of kMinSuffix.");
 
 static constexpr char kMaxSuffix[] = {
@@ -98,7 +97,7 @@
     '\xFF', '\xFF', '\xFF', '\xFF', '\xFF', '\xFF', '\xFF',
     '\xFF', '\xFF', '\xFF', '\xFF', '\xFF', '\xFF', '\xFF',
     '\xFF', '\xFF', '\xFF', '\xFF', '\xFF', '\xFF', '\xFF'};
-static_assert(base::size(kMaxSuffix) == UniquePosition::kSuffixLength,
+static_assert(std::size(kMaxSuffix) == UniquePosition::kSuffixLength,
               "Wrong size of kMaxSuffix.");
 
 static constexpr char kNormalSuffix[] = {
@@ -106,7 +105,7 @@
     '\x34', '\x69', '\x70', '\x46', '\x34', '\x79', '\x49',
     '\x44', '\x4F', '\x66', '\x4C', '\x58', '\x41', '\x31',
     '\x34', '\x68', '\x59', '\x56', '\x43', '\x6F', '\x3D'};
-static_assert(base::size(kNormalSuffix) == UniquePosition::kSuffixLength,
+static_assert(std::size(kNormalSuffix) == UniquePosition::kSuffixLength,
               "Wrong size of kNormalSuffix.");
 
 ::testing::AssertionResult LessThan(const char* m_expr,
@@ -217,7 +216,7 @@
 // Exercise comparision functions by sorting and re-sorting the list.
 TEST_F(RelativePositioningTest, SortPositions) {
   ASSERT_EQ(kNumPositions, kNumSortedPositions);
-  UniquePosition positions[base::size(kPositionArray)];
+  UniquePosition positions[std::size(kPositionArray)];
   for (size_t i = 0; i < kNumPositions; ++i) {
     positions[i] = kPositionArray[i];
   }
@@ -233,7 +232,7 @@
 // Some more exercise for the comparison function.
 TEST_F(RelativePositioningTest, ReverseSortPositions) {
   ASSERT_EQ(kNumPositions, kNumSortedPositions);
-  UniquePosition positions[base::size(kPositionArray)];
+  UniquePosition positions[std::size(kPositionArray)];
   for (size_t i = 0; i < kNumPositions; ++i) {
     positions[i] = kPositionArray[i];
   }
@@ -412,10 +411,9 @@
 class PositionScenariosTest : public UniquePositionTest {
  public:
   PositionScenariosTest()
-      : generator1_(
-            std::string(kCacheGuidStr1, base::size(kCacheGuidStr1) - 1)),
+      : generator1_(std::string(kCacheGuidStr1, std::size(kCacheGuidStr1) - 1)),
         generator2_(
-            std::string(kCacheGuidStr2, base::size(kCacheGuidStr2) - 1)) {}
+            std::string(kCacheGuidStr2, std::size(kCacheGuidStr2) - 1)) {}
 
   std::string NextClient1Suffix() { return generator1_.NextSuffix(); }
 
@@ -485,24 +483,24 @@
   EXPECT_LT(GetLength(pos), 500U);
 }
 
-INSTANTIATE_TEST_SUITE_P(
-    MinSuffix,
-    PositionInsertTest,
-    ::testing::Values(std::string(kMinSuffix, base::size(kMinSuffix))));
-INSTANTIATE_TEST_SUITE_P(
-    MaxSuffix,
-    PositionInsertTest,
-    ::testing::Values(std::string(kMaxSuffix, base::size(kMaxSuffix))));
+INSTANTIATE_TEST_SUITE_P(MinSuffix,
+                         PositionInsertTest,
+                         ::testing::Values(std::string(kMinSuffix,
+                                                       std::size(kMinSuffix))));
+INSTANTIATE_TEST_SUITE_P(MaxSuffix,
+                         PositionInsertTest,
+                         ::testing::Values(std::string(kMaxSuffix,
+                                                       std::size(kMaxSuffix))));
 INSTANTIATE_TEST_SUITE_P(
     NormalSuffix,
     PositionInsertTest,
-    ::testing::Values(std::string(kNormalSuffix, base::size(kNormalSuffix))));
+    ::testing::Values(std::string(kNormalSuffix, std::size(kNormalSuffix))));
 
 class PositionFromIntTest : public UniquePositionTest {
  public:
   PositionFromIntTest()
-      : generator_(
-            std::string(kCacheGuidStr1, base::size(kCacheGuidStr1) - 1)) {}
+      : generator_(std::string(kCacheGuidStr1, std::size(kCacheGuidStr1) - 1)) {
+  }
 
  protected:
   static const int64_t kTestValues[];
@@ -557,7 +555,7 @@
                                                     INT64_MAX - 1};
 
 const size_t PositionFromIntTest::kNumTestValues =
-    base::size(PositionFromIntTest::kTestValues);
+    std::size(PositionFromIntTest::kTestValues);
 
 TEST_F(PositionFromIntTest, IsValid) {
   for (size_t i = 0; i < kNumTestValues; ++i) {
diff --git a/components/sync/engine/nigori/nigori.cc b/components/sync/engine/nigori/nigori.cc
index 118953e..ed7a27b 100644
--- a/components/sync/engine/nigori/nigori.cc
+++ b/components/sync/engine/nigori/nigori.cc
@@ -324,7 +324,7 @@
   static const size_t kSaltSizeInBytes = 32;
   std::string salt;
   salt.resize(kSaltSizeInBytes);
-  crypto::RandBytes(base::data(salt), salt.size());
+  crypto::RandBytes(std::data(salt), salt.size());
   return salt;
 }
 
diff --git a/components/sync_device_info/local_device_info_util_win.cc b/components/sync_device_info/local_device_info_util_win.cc
index bd33e95..bb838b8 100644
--- a/components/sync_device_info/local_device_info_util_win.cc
+++ b/components/sync_device_info/local_device_info_util_win.cc
@@ -7,14 +7,13 @@
 #include <string>
 
 #include "base/check.h"
-#include "base/cxx17_backports.h"
 #include "base/strings/utf_string_conversions.h"
 
 namespace syncer {
 
 std::string GetPersonalizableDeviceNameInternal() {
   wchar_t computer_name[MAX_COMPUTERNAME_LENGTH + 1] = {0};
-  DWORD size = base::size(computer_name);
+  DWORD size = std::size(computer_name);
   if (::GetComputerNameW(computer_name, &size)) {
     std::string result;
     bool conversion_successful = base::WideToUTF8(computer_name, size, &result);
diff --git a/components/tab_count_metrics/tab_count_metrics.cc b/components/tab_count_metrics/tab_count_metrics.cc
index 836a72e..b772037 100644
--- a/components/tab_count_metrics/tab_count_metrics.cc
+++ b/components/tab_count_metrics/tab_count_metrics.cc
@@ -7,7 +7,6 @@
 #include <limits>
 
 #include "base/check_op.h"
-#include "base/cxx17_backports.h"
 #include "base/notreached.h"
 
 namespace tab_count_metrics {
@@ -41,9 +40,9 @@
 std::string HistogramName(const std::string prefix,
                           bool live_tabs_only,
                           size_t bucket) {
-  static_assert(base::size(kTabCountBucketMins) == kNumTabCountBuckets,
+  static_assert(std::size(kTabCountBucketMins) == kNumTabCountBuckets,
                 "kTabCountBucketMins must have kNumTabCountBuckets elements.");
-  static_assert(base::size(kTabCountBucketNames) == kNumTabCountBuckets,
+  static_assert(std::size(kTabCountBucketNames) == kNumTabCountBuckets,
                 "kTabCountBucketNames must have kNumTabCountBuckets elements.");
   DCHECK_LT(bucket, kNumTabCountBuckets);
   DCHECK(prefix.length());
diff --git a/components/test/components_test_suite.cc b/components/test/components_test_suite.cc
index 4aa520a..5211cb9e 100644
--- a/components/test/components_test_suite.cc
+++ b/components/test/components_test_suite.cc
@@ -9,7 +9,6 @@
 
 #include "base/bind.h"
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_path.h"
 #include "base/path_service.h"
 #include "base/test/launcher/unit_test_launcher.h"
@@ -99,7 +98,7 @@
 
     ContentSettingsPattern::SetNonWildcardDomainNonPortSchemes(
         kNonWildcardDomainNonPortSchemes,
-        base::size(kNonWildcardDomainNonPortSchemes));
+        std::size(kNonWildcardDomainNonPortSchemes));
   }
 
   void Shutdown() override {
diff --git a/components/translate/core/language_detection/language_detection_model.cc b/components/translate/core/language_detection/language_detection_model.cc
index 4435e064..82b9d19 100644
--- a/components/translate/core/language_detection/language_detection_model.cc
+++ b/components/translate/core/language_detection/language_detection_model.cc
@@ -4,7 +4,6 @@
 
 #include "components/translate/core/language_detection/language_detection_model.h"
 
-#include "base/cxx17_backports.h"
 #include "base/metrics/histogram_macros.h"
 #include "base/metrics/histogram_macros_local.h"
 #include "base/strings/utf_string_conversions.h"
@@ -83,7 +82,7 @@
 
   std::string file_content(model_file.GetLength(), '\0');
   int bytes_read =
-      model_file.Read(0, base::data(file_content), model_file.GetLength());
+      model_file.Read(0, std::data(file_content), model_file.GetLength());
   if (bytes_read != model_file.GetLength()) {
     return;
   }
diff --git a/components/translate/core/language_detection/language_detection_util.cc b/components/translate/core/language_detection/language_detection_util.cc
index 727d1dd2..3c9c735 100644
--- a/components/translate/core/language_detection/language_detection_util.cc
+++ b/components/translate/core/language_detection/language_detection_util.cc
@@ -6,7 +6,6 @@
 
 #include <stddef.h>
 
-#include "base/cxx17_backports.h"
 #include "base/logging.h"
 #include "base/metrics/histogram_base.h"
 #include "base/metrics/histogram_functions.h"
@@ -39,7 +38,7 @@
 
 // Checks |kSimilarLanguageCodes| and returns group code.
 int GetSimilarLanguageGroupCode(const std::string& language) {
-  for (size_t i = 0; i < base::size(kSimilarLanguageCodes); ++i) {
+  for (size_t i = 0; i < std::size(kSimilarLanguageCodes); ++i) {
     if (language.find(kSimilarLanguageCodes[i].code) != 0)
       continue;
     return kSimilarLanguageCodes[i].group;
@@ -335,7 +334,7 @@
 }
 
 bool IsServerWrongConfigurationLanguage(const std::string& language_code) {
-  for (size_t i = 0; i < base::size(kWellKnownCodesOnWrongConfiguration); ++i) {
+  for (size_t i = 0; i < std::size(kWellKnownCodesOnWrongConfiguration); ++i) {
     if (language_code == kWellKnownCodesOnWrongConfiguration[i])
       return true;
   }
diff --git a/components/update_client/update_checker_unittest.cc b/components/update_client/update_checker_unittest.cc
index 8e7d4bb8..4b59962 100644
--- a/components/update_client/update_checker_unittest.cc
+++ b/components/update_client/update_checker_unittest.cc
@@ -13,7 +13,6 @@
 #include <vector>
 
 #include "base/bind.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_util.h"
 #include "base/json/json_reader.h"
 #include "base/memory/ref_counted.h"
@@ -194,7 +193,7 @@
   crx_component.app_id = "jebgalgnebhfojomionfpkfelancnnkf";
   crx_component.brand = brand;
   crx_component.name = "test_jebg";
-  crx_component.pk_hash.assign(jebg_hash, jebg_hash + base::size(jebg_hash));
+  crx_component.pk_hash.assign(jebg_hash, jebg_hash + std::size(jebg_hash));
   crx_component.installer = nullptr;
   crx_component.version = base::Version("0.9");
   crx_component.fingerprint = "fp1";
diff --git a/components/update_client/update_client_unittest.cc b/components/update_client/update_client_unittest.cc
index c299941..f1ede7d 100644
--- a/components/update_client/update_client_unittest.cc
+++ b/components/update_client/update_client_unittest.cc
@@ -8,7 +8,6 @@
 
 #include "base/bind.h"
 #include "base/containers/flat_map.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
 #include "base/location.h"
@@ -277,7 +276,7 @@
         const std::vector<std::string>& ids) {
       CrxComponent crx;
       crx.name = "test_jebg";
-      crx.pk_hash.assign(jebg_hash, jebg_hash + base::size(jebg_hash));
+      crx.pk_hash.assign(jebg_hash, jebg_hash + std::size(jebg_hash));
       crx.version = base::Version("0.9");
       crx.installer = base::MakeRefCounted<TestInstaller>();
       crx.crx_format_requirement = crx_file::VerifierFormat::CRX3;
@@ -399,14 +398,14 @@
         const std::vector<std::string>& ids) {
       CrxComponent crx1;
       crx1.name = "test_jebg";
-      crx1.pk_hash.assign(jebg_hash, jebg_hash + base::size(jebg_hash));
+      crx1.pk_hash.assign(jebg_hash, jebg_hash + std::size(jebg_hash));
       crx1.version = base::Version("0.9");
       crx1.installer = base::MakeRefCounted<TestInstaller>();
       crx1.crx_format_requirement = crx_file::VerifierFormat::CRX3;
 
       CrxComponent crx2;
       crx2.name = "test_abag";
-      crx2.pk_hash.assign(abag_hash, abag_hash + base::size(abag_hash));
+      crx2.pk_hash.assign(abag_hash, abag_hash + std::size(abag_hash));
       crx2.version = base::Version("2.2");
       crx2.installer = base::MakeRefCounted<TestInstaller>();
       crx2.crx_format_requirement = crx_file::VerifierFormat::CRX3;
@@ -653,14 +652,14 @@
         const std::vector<std::string>& ids) {
       CrxComponent crx1;
       crx1.name = "test_jebg";
-      crx1.pk_hash.assign(jebg_hash, jebg_hash + base::size(jebg_hash));
+      crx1.pk_hash.assign(jebg_hash, jebg_hash + std::size(jebg_hash));
       crx1.version = base::Version("0.9");
       crx1.installer = base::MakeRefCounted<TestInstaller>();
       crx1.crx_format_requirement = crx_file::VerifierFormat::CRX3;
 
       CrxComponent crx2;
       crx2.name = "test_abag";
-      crx2.pk_hash.assign(abag_hash, abag_hash + base::size(abag_hash));
+      crx2.pk_hash.assign(abag_hash, abag_hash + std::size(abag_hash));
       crx2.version = base::Version("2.2");
       crx2.installer = base::MakeRefCounted<TestInstaller>();
       crx2.crx_format_requirement = crx_file::VerifierFormat::CRX3;
@@ -889,7 +888,7 @@
         const std::vector<std::string>& ids) {
       CrxComponent crx;
       crx.name = "test_jebg";
-      crx.pk_hash.assign(jebg_hash, jebg_hash + base::size(jebg_hash));
+      crx.pk_hash.assign(jebg_hash, jebg_hash + std::size(jebg_hash));
       crx.version = base::Version("0.9");
       crx.installer = base::MakeRefCounted<TestInstaller>();
       crx.crx_format_requirement = crx_file::VerifierFormat::CRX3;
@@ -1202,14 +1201,14 @@
         const std::vector<std::string>& ids) {
       CrxComponent crx1;
       crx1.name = "test_jebg";
-      crx1.pk_hash.assign(jebg_hash, jebg_hash + base::size(jebg_hash));
+      crx1.pk_hash.assign(jebg_hash, jebg_hash + std::size(jebg_hash));
       crx1.version = base::Version("0.9");
       crx1.installer = base::MakeRefCounted<TestInstaller>();
       crx1.crx_format_requirement = crx_file::VerifierFormat::CRX3;
 
       CrxComponent crx2;
       crx2.name = "test_ihfo";
-      crx2.pk_hash.assign(ihfo_hash, ihfo_hash + base::size(ihfo_hash));
+      crx2.pk_hash.assign(ihfo_hash, ihfo_hash + std::size(ihfo_hash));
       crx2.version = base::Version("0.8");
       crx2.installer = base::MakeRefCounted<TestInstaller>();
       crx2.crx_format_requirement = crx_file::VerifierFormat::CRX3;
@@ -1505,7 +1504,7 @@
 
       CrxComponent crx;
       crx.name = "test_ihfo";
-      crx.pk_hash.assign(ihfo_hash, ihfo_hash + base::size(ihfo_hash));
+      crx.pk_hash.assign(ihfo_hash, ihfo_hash + std::size(ihfo_hash));
       crx.installer = installer;
       crx.crx_format_requirement = crx_file::VerifierFormat::CRX3;
       if (num_calls == 1) {
@@ -1919,7 +1918,7 @@
 
       CrxComponent crx;
       crx.name = "test_jebg";
-      crx.pk_hash.assign(jebg_hash, jebg_hash + base::size(jebg_hash));
+      crx.pk_hash.assign(jebg_hash, jebg_hash + std::size(jebg_hash));
       crx.version = base::Version("0.9");
       crx.installer = installer;
       crx.crx_format_requirement = crx_file::VerifierFormat::CRX3;
@@ -2121,7 +2120,7 @@
 
       CrxComponent crx;
       crx.name = "test_ihfo";
-      crx.pk_hash.assign(ihfo_hash, ihfo_hash + base::size(ihfo_hash));
+      crx.pk_hash.assign(ihfo_hash, ihfo_hash + std::size(ihfo_hash));
       crx.installer = installer;
       crx.crx_format_requirement = crx_file::VerifierFormat::CRX3;
       if (num_calls == 1) {
@@ -2469,7 +2468,7 @@
         const std::vector<std::string>& ids) {
       CrxComponent crx;
       crx.name = "test_jebg";
-      crx.pk_hash.assign(jebg_hash, jebg_hash + base::size(jebg_hash));
+      crx.pk_hash.assign(jebg_hash, jebg_hash + std::size(jebg_hash));
       crx.version = base::Version("0.9");
       crx.installer = base::MakeRefCounted<TestInstaller>();
       crx.crx_format_requirement = crx_file::VerifierFormat::CRX3;
@@ -2617,7 +2616,7 @@
         const std::vector<std::string>& ids) {
       CrxComponent crx;
       crx.name = "test_jebg";
-      crx.pk_hash.assign(jebg_hash, jebg_hash + base::size(jebg_hash));
+      crx.pk_hash.assign(jebg_hash, jebg_hash + std::size(jebg_hash));
       crx.version = base::Version("0.0");
       crx.installer = base::MakeRefCounted<TestInstaller>();
       crx.crx_format_requirement = crx_file::VerifierFormat::CRX3;
@@ -2961,7 +2960,7 @@
         const std::vector<std::string>& ids) {
       CrxComponent crx;
       crx.name = "test_jebg";
-      crx.pk_hash.assign(jebg_hash, jebg_hash + base::size(jebg_hash));
+      crx.pk_hash.assign(jebg_hash, jebg_hash + std::size(jebg_hash));
       crx.version = base::Version("0.0");
       crx.installer = base::MakeRefCounted<TestInstaller>();
       crx.crx_format_requirement = crx_file::VerifierFormat::CRX3;
@@ -3307,7 +3306,7 @@
         const std::vector<std::string>& ids) {
       CrxComponent crx;
       crx.name = "test_jebg";
-      crx.pk_hash.assign(jebg_hash, jebg_hash + base::size(jebg_hash));
+      crx.pk_hash.assign(jebg_hash, jebg_hash + std::size(jebg_hash));
       crx.version = base::Version("0.9");
       crx.installer = base::MakeRefCounted<TestInstaller>();
       crx.crx_format_requirement = crx_file::VerifierFormat::CRX3;
@@ -3497,7 +3496,7 @@
         const std::vector<std::string>& ids) {
       CrxComponent crx1;
       crx1.name = "test_jebg";
-      crx1.pk_hash.assign(jebg_hash, jebg_hash + base::size(jebg_hash));
+      crx1.pk_hash.assign(jebg_hash, jebg_hash + std::size(jebg_hash));
       crx1.version = base::Version("0.9");
       crx1.installer = base::MakeRefCounted<TestInstaller>();
       crx1.crx_format_requirement = crx_file::VerifierFormat::CRX3;
@@ -3505,7 +3504,7 @@
 
       CrxComponent crx2;
       crx2.name = "test_ihfo";
-      crx2.pk_hash.assign(ihfo_hash, ihfo_hash + base::size(ihfo_hash));
+      crx2.pk_hash.assign(ihfo_hash, ihfo_hash + std::size(ihfo_hash));
       crx2.version = base::Version("0.8");
       crx2.installer = base::MakeRefCounted<TestInstaller>();
       crx2.crx_format_requirement = crx_file::VerifierFormat::CRX3;
@@ -3770,7 +3769,7 @@
         const std::vector<std::string>& ids) {
       CrxComponent crx;
       crx.name = "test_jebg";
-      crx.pk_hash.assign(jebg_hash, jebg_hash + base::size(jebg_hash));
+      crx.pk_hash.assign(jebg_hash, jebg_hash + std::size(jebg_hash));
       crx.version = base::Version("0.9");
       crx.installer = base::MakeRefCounted<TestInstaller>();
       crx.crx_format_requirement = crx_file::VerifierFormat::CRX3;
@@ -3890,7 +3889,7 @@
       {
         CrxComponent crx;
         crx.name = "test_jebg";
-        crx.pk_hash.assign(jebg_hash, jebg_hash + base::size(jebg_hash));
+        crx.pk_hash.assign(jebg_hash, jebg_hash + std::size(jebg_hash));
         crx.version = base::Version("0.9");
         crx.installer = base::MakeRefCounted<TestInstaller>();
         crx.crx_format_requirement = crx_file::VerifierFormat::CRX3;
@@ -3899,7 +3898,7 @@
       {
         CrxComponent crx;
         crx.name = "test_abag";
-        crx.pk_hash.assign(abag_hash, abag_hash + base::size(abag_hash));
+        crx.pk_hash.assign(abag_hash, abag_hash + std::size(abag_hash));
         crx.version = base::Version("0.1");
         crx.installer = base::MakeRefCounted<TestInstaller>();
         crx.crx_format_requirement = crx_file::VerifierFormat::CRX3;
@@ -3908,7 +3907,7 @@
       {
         CrxComponent crx;
         crx.name = "test_ihfo";
-        crx.pk_hash.assign(ihfo_hash, ihfo_hash + base::size(ihfo_hash));
+        crx.pk_hash.assign(ihfo_hash, ihfo_hash + std::size(ihfo_hash));
         crx.version = base::Version("0.2");
         crx.installer = base::MakeRefCounted<TestInstaller>();
         crx.crx_format_requirement = crx_file::VerifierFormat::CRX3;
@@ -3917,7 +3916,7 @@
       {
         CrxComponent crx;
         crx.name = "test_gjpm";
-        crx.pk_hash.assign(gjpm_hash, gjpm_hash + base::size(gjpm_hash));
+        crx.pk_hash.assign(gjpm_hash, gjpm_hash + std::size(gjpm_hash));
         crx.version = base::Version("0.3");
         crx.installer = base::MakeRefCounted<TestInstaller>();
         crx.crx_format_requirement = crx_file::VerifierFormat::CRX3;
@@ -4256,7 +4255,7 @@
 
         CrxComponent crx;
         crx.name = "test_niea";
-        crx.pk_hash.assign(gjpm_hash, gjpm_hash + base::size(gjpm_hash));
+        crx.pk_hash.assign(gjpm_hash, gjpm_hash + std::size(gjpm_hash));
         crx.version = base::Version("0.0");
         crx.installer = base::MakeRefCounted<VersionedTestInstaller>();
         crx.action_handler = action_handler;
@@ -4414,7 +4413,7 @@
 
             CrxComponent crx;
             crx.name = "test_niea";
-            crx.pk_hash.assign(gjpm_hash, gjpm_hash + base::size(gjpm_hash));
+            crx.pk_hash.assign(gjpm_hash, gjpm_hash + std::size(gjpm_hash));
             crx.version = base::Version("1.0");
             crx.installer =
                 base::MakeRefCounted<ReadOnlyTestInstaller>(unpack_path);
@@ -4442,7 +4441,7 @@
         const std::vector<std::string>& ids) {
       CrxComponent crx;
       crx.name = "test_jebg";
-      crx.pk_hash.assign(jebg_hash, jebg_hash + base::size(jebg_hash));
+      crx.pk_hash.assign(jebg_hash, jebg_hash + std::size(jebg_hash));
       crx.version = base::Version("0.9");
       crx.installer = base::MakeRefCounted<TestInstaller>();
       crx.crx_format_requirement = crx_file::VerifierFormat::CRX3;
diff --git a/components/upload_list/combining_upload_list_unittest.cc b/components/upload_list/combining_upload_list_unittest.cc
index c8321e9..8938ed1 100644
--- a/components/upload_list/combining_upload_list_unittest.cc
+++ b/components/upload_list/combining_upload_list_unittest.cc
@@ -105,9 +105,9 @@
 
   std::vector<UploadList::UploadInfo> actual;
   combined_upload_list->GetUploads(20, &actual);
-  ASSERT_EQ(actual.size(), base::size(kExpectedUploadTimes));
+  ASSERT_EQ(actual.size(), std::size(kExpectedUploadTimes));
 
-  for (size_t i = 0; i < base::size(kExpectedUploadTimes); i++) {
+  for (size_t i = 0; i < std::size(kExpectedUploadTimes); i++) {
     EXPECT_EQ(actual[i].upload_time, kExpectedUploadTimes[i])
         << " for index " << i;
     EXPECT_EQ(actual[i].state, UploadList::UploadInfo::State::Uploaded)
@@ -205,9 +205,9 @@
 
   std::vector<UploadList::UploadInfo> actual;
   combined_upload_list->GetUploads(20, &actual);
-  ASSERT_EQ(actual.size(), base::size(kExpectedUploadTimes));
+  ASSERT_EQ(actual.size(), std::size(kExpectedUploadTimes));
 
-  for (size_t i = 0; i < base::size(kExpectedUploadTimes); i++) {
+  for (size_t i = 0; i < std::size(kExpectedUploadTimes); i++) {
     EXPECT_EQ(actual[i].upload_time, kExpectedUploadTimes[i])
         << " for index " << i;
     EXPECT_EQ(actual[i].capture_time, kExpectedCaptureTimes[i])
diff --git a/components/url_formatter/spoof_checks/idn_spoof_checker_unittest.cc b/components/url_formatter/spoof_checks/idn_spoof_checker_unittest.cc
index e6a4791..e365201 100644
--- a/components/url_formatter/spoof_checks/idn_spoof_checker_unittest.cc
+++ b/components/url_formatter/spoof_checks/idn_spoof_checker_unittest.cc
@@ -2,17 +2,16 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "components/url_formatter/url_formatter.h"
+#include "components/url_formatter/spoof_checks/idn_spoof_checker.h"
 
 #include <stddef.h>
 #include <string.h>
 
-#include "base/cxx17_backports.h"
 #include "base/strings/string_piece.h"
 #include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "build/build_config.h"
-#include "components/url_formatter/spoof_checks/idn_spoof_checker.h"
+#include "components/url_formatter/url_formatter.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "url/gurl.h"
 
@@ -1124,7 +1123,7 @@
 // E.g. Mathematical Monospace Small A (U+1D68A) is canonicalized to "a" when
 // used in a domain name.
 TEST_F(IDNSpoofCheckerTest, IDNToUnicode) {
-  for (size_t i = 0; i < base::size(kIdnCases); i++) {
+  for (size_t i = 0; i < std::size(kIdnCases); i++) {
     SCOPED_TRACE(
         base::StringPrintf("input #%zu: \"%s\"", i, kIdnCases[i].input));
 
diff --git a/components/url_formatter/url_fixer_unittest.cc b/components/url_formatter/url_fixer_unittest.cc
index 8cb0f76..f1048ee 100644
--- a/components/url_formatter/url_fixer_unittest.cc
+++ b/components/url_formatter/url_fixer_unittest.cc
@@ -2,20 +2,20 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "components/url_formatter/url_fixer.h"
+
 #include <stddef.h>
 #include <stdlib.h>
 
 #include <string>
 
 #include "base/base_paths.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
 #include "base/files/scoped_temp_dir.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "build/build_config.h"
-#include "components/url_formatter/url_fixer.h"
 #include "net/base/filename_util.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "url/gurl.h"
@@ -268,7 +268,7 @@
   std::string result;
   url::Parsed parts;
 
-  for (size_t i = 0; i < base::size(segment_cases); ++i) {
+  for (size_t i = 0; i < std::size(segment_cases); ++i) {
     SegmentCase value = segment_cases[i];
     SCOPED_TRACE(testing::Message() << "test #" << i << ": " << value.input);
 
diff --git a/components/url_formatter/url_formatter_unittest.cc b/components/url_formatter/url_formatter_unittest.cc
index d50fe213..2d3ef3a 100644
--- a/components/url_formatter/url_formatter_unittest.cc
+++ b/components/url_formatter/url_formatter_unittest.cc
@@ -9,7 +9,6 @@
 
 #include <vector>
 
-#include "base/cxx17_backports.h"
 #include "base/logging.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_piece.h"
@@ -383,7 +382,7 @@
   };
   // clang-format on
 
-  for (size_t i = 0; i < base::size(tests); ++i) {
+  for (size_t i = 0; i < std::size(tests); ++i) {
     size_t prefix_len;
     std::u16string formatted =
         FormatUrl(GURL(tests[i].input), tests[i].format_types,
diff --git a/components/url_matcher/url_matcher_factory_unittest.cc b/components/url_matcher/url_matcher_factory_unittest.cc
index cbe90f8..aa5c8fe7 100644
--- a/components/url_matcher/url_matcher_factory_unittest.cc
+++ b/components/url_matcher/url_matcher_factory_unittest.cc
@@ -9,7 +9,6 @@
 #include <memory>
 #include <utility>
 
-#include "base/cxx17_backports.h"
 #include "base/format_macros.h"
 #include "base/strings/stringprintf.h"
 #include "base/values.h"
@@ -155,7 +154,7 @@
     &invalid_condition5
   };
 
-  for (size_t i = 0; i < base::size(invalid_conditions); ++i) {
+  for (size_t i = 0; i < std::size(invalid_conditions); ++i) {
     error.clear();
     result = URLMatcherFactory::CreateFromURLFilterDictionary(
         matcher.condition_factory(), invalid_conditions[i], 1, &error);
@@ -337,7 +336,7 @@
                          kIsUrlCaseSensitive, kIsUrlLowerCaseEnforced, url),
   };
 
-  for (size_t i = 0; i < base::size(case_tests); ++i) {
+  for (size_t i = 0; i < std::size(case_tests); ++i) {
     SCOPED_TRACE(base::StringPrintf("Iteration: %" PRIuS, i));
     case_tests[i].Test();
   }
diff --git a/components/url_matcher/url_matcher_unittest.cc b/components/url_matcher/url_matcher_unittest.cc
index 2d0e0a0..698c5015 100644
--- a/components/url_matcher/url_matcher_unittest.cc
+++ b/components/url_matcher/url_matcher_unittest.cc
@@ -9,7 +9,6 @@
 #include <memory>
 #include <utility>
 
-#include "base/cxx17_backports.h"
 #include "base/strings/string_util.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "url/gurl.h"
@@ -127,7 +126,7 @@
       {URLMatcherCondition(URLMatcherCondition::HOST_PREFIX, &p1),
        URLMatcherCondition(URLMatcherCondition::HOST_SUFFIX, nullptr)},
   };
-  for (size_t i = 0; i < base::size(test_smaller); ++i) {
+  for (size_t i = 0; i < std::size(test_smaller); ++i) {
     EXPECT_TRUE(test_smaller[i][0] < test_smaller[i][1])
         << "Test " << i << " of test_smaller failed";
     EXPECT_FALSE(test_smaller[i][1] < test_smaller[i][0])
@@ -139,7 +138,7 @@
       {URLMatcherCondition(URLMatcherCondition::HOST_PREFIX, nullptr),
        URLMatcherCondition(URLMatcherCondition::HOST_PREFIX, nullptr)},
   };
-  for (size_t i = 0; i < base::size(test_equal); ++i) {
+  for (size_t i = 0; i < std::size(test_equal); ++i) {
     EXPECT_FALSE(test_equal[i][0] < test_equal[i][1])
         << "Test " << i << " of test_equal failed";
     EXPECT_FALSE(test_equal[i][1] < test_equal[i][0])
diff --git a/components/url_pattern_index/url_pattern_index_unittest.cc b/components/url_pattern_index/url_pattern_index_unittest.cc
index 5f74e4b..0e0cac0 100644
--- a/components/url_pattern_index/url_pattern_index_unittest.cc
+++ b/components/url_pattern_index/url_pattern_index_unittest.cc
@@ -1083,7 +1083,7 @@
 
   Finish();
 
-  for (size_t i = 0; i < base::size(request_methods); i++) {
+  for (size_t i = 0; i < std::size(request_methods); i++) {
     SCOPED_TRACE(::testing::Message()
                  << "RequestMethod: " << request_methods[i].name);
     std::string url = origin + "/" + request_methods[i].name;
@@ -1091,7 +1091,7 @@
                           flat::RequestMethod_ANY, false));
     EXPECT_TRUE(FindMatch(url, origin, other_element, no_activation,
                           flat::RequestMethod_NONE, false));
-    for (size_t j = 0; j < base::size(request_methods); j++) {
+    for (size_t j = 0; j < std::size(request_methods); j++) {
       EXPECT_EQ(i == j, !!FindMatch(url, origin, other_element, no_activation,
                                     request_methods[j].request_method, false));
     }
@@ -1140,7 +1140,7 @@
                {url_2, match_first_element_three, false},
                {"http://abc.com", match_first_element_one, false}};
 
-  for (size_t i = 0; i < base::size(cases); ++i) {
+  for (size_t i = 0; i < std::size(cases); ++i) {
     SCOPED_TRACE(::testing::Message() << "Testing case " << i);
     bool disable_generic_rules = false;
     const flat::UrlRule* rule = FindMatch(
diff --git a/components/variations/entropy_provider_unittest.cc b/components/variations/entropy_provider_unittest.cc
index 56d202c..d5b07db9 100644
--- a/components/variations/entropy_provider_unittest.cc
+++ b/components/variations/entropy_provider_unittest.cc
@@ -12,7 +12,6 @@
 #include <memory>
 #include <numeric>
 
-#include "base/cxx17_backports.h"
 #include "base/guid.h"
 #include "base/rand_util.h"
 #include "base/strings/string_number_conversions.h"
@@ -199,7 +198,7 @@
           nullptr),
   };
 
-  for (size_t i = 0; i < base::size(trials); ++i) {
+  for (size_t i = 0; i < std::size(trials); ++i) {
     for (int j = 0; j < 100; ++j)
       trials[i]->AppendGroup(std::string(), 1);
   }
@@ -230,7 +229,7 @@
           nullptr),
   };
 
-  for (size_t i = 0; i < base::size(trials); ++i) {
+  for (size_t i = 0; i < std::size(trials); ++i) {
     for (int j = 0; j < 100; ++j)
       trials[i]->AppendGroup(std::string(), 1);
   }
@@ -257,7 +256,7 @@
           kCustomSeed, nullptr, nullptr),
   };
 
-  for (size_t i = 0; i < base::size(trials); ++i) {
+  for (size_t i = 0; i < std::size(trials); ++i) {
     for (int j = 0; j < 100; ++j)
       trials[i]->AppendGroup(std::string(), 1);
   }
@@ -286,7 +285,7 @@
           kCustomSeed, nullptr, nullptr),
   };
 
-  for (size_t i = 0; i < base::size(trials); ++i) {
+  for (size_t i = 0; i < std::size(trials); ++i) {
     for (int j = 0; j < 100; ++j)
       trials[i]->AppendGroup(std::string(), 1);
   }
@@ -302,7 +301,7 @@
                              GenerateSHA1Entropy("there", "1") };
 
   EXPECT_NE(results[0], results[1]);
-  for (size_t i = 0; i < base::size(results); ++i) {
+  for (size_t i = 0; i < std::size(results); ++i) {
     EXPECT_LE(0.0, results[i]);
     EXPECT_GT(1.0, results[i]);
   }
@@ -319,7 +318,7 @@
       GenerateNormalizedMurmurHashEntropy(4321, kMaxLowEntropySize, "1")};
 
   EXPECT_NE(results[0], results[1]);
-  for (size_t i = 0; i < base::size(results); ++i) {
+  for (size_t i = 0; i < std::size(results); ++i) {
     EXPECT_LE(0.0, results[i]);
     EXPECT_GT(1.0, results[i]);
   }
@@ -350,14 +349,14 @@
 }
 
 TEST(EntropyProviderTest, SHA1EntropyIsUniform) {
-  for (size_t i = 0; i < base::size(kTestTrialNames); ++i) {
+  for (size_t i = 0; i < std::size(kTestTrialNames); ++i) {
     SHA1EntropyGenerator entropy_generator(kTestTrialNames[i]);
     PerformEntropyUniformityTest(kTestTrialNames[i], entropy_generator);
   }
 }
 
 TEST(EntropyProviderTest, NormalizedMurmurHashEntropyIsUniform) {
-  for (size_t i = 0; i < base::size(kTestTrialNames); ++i) {
+  for (size_t i = 0; i < std::size(kTestTrialNames); ++i) {
     NormalizedMurmurHashEntropyGenerator entropy_generator(kTestTrialNames[i]);
     PerformEntropyUniformityTest(kTestTrialNames[i], entropy_generator);
   }
diff --git a/components/variations/field_trial_config/field_trial_util_unittest.cc b/components/variations/field_trial_config/field_trial_util_unittest.cc
index 6040e413..c1886fc6 100644
--- a/components/variations/field_trial_config/field_trial_util_unittest.cc
+++ b/components/variations/field_trial_config/field_trial_util_unittest.cc
@@ -9,7 +9,6 @@
 #include <utility>
 
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "base/metrics/field_trial.h"
 #include "base/metrics/field_trial_params.h"
 #include "base/strings/utf_string_conversions.h"
@@ -369,13 +368,13 @@
   };
 
   // Break if platforms are added without updating |all_platforms|.
-  static_assert(base::size(all_platforms) == Study::Platform_ARRAYSIZE,
+  static_assert(std::size(all_platforms) == Study::Platform_ARRAYSIZE,
                 "|all_platforms| must include all platforms.");
 
   const FieldTrialTestingExperimentParams array_kFieldTrialConfig_params[] =
       {{"x", "1"}, {"y", "2"}};
 
-  for (size_t i = 0; i < base::size(all_platforms); ++i) {
+  for (size_t i = 0; i < std::size(all_platforms); ++i) {
     const Study::Platform platform = all_platforms[i];
     const FieldTrialTestingExperiment array_kFieldTrialConfig_experiments[] = {
         {"TestGroup",
diff --git a/components/variations/hashing_unittest.cc b/components/variations/hashing_unittest.cc
index 1c5e7ad..35d83d8 100644
--- a/components/variations/hashing_unittest.cc
+++ b/components/variations/hashing_unittest.cc
@@ -7,7 +7,6 @@
 #include <stddef.h>
 #include <stdint.h>
 
-#include "base/cxx17_backports.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace variations {
@@ -26,7 +25,7 @@
                       {"abcdefghijklmonpqrstuvwxyz", 787728696u},
                       {"0123456789ABCDEF", 348858318U}};
 
-  for (size_t i = 0; i < base::size(known_hashes); ++i) {
+  for (size_t i = 0; i < std::size(known_hashes); ++i) {
     EXPECT_EQ(known_hashes[i].hash_value, HashName(known_hashes[i].name));
   }
 }
diff --git a/components/variations/net/variations_http_headers_unittest.cc b/components/variations/net/variations_http_headers_unittest.cc
index dc073e0..19bd989 100644
--- a/components/variations/net/variations_http_headers_unittest.cc
+++ b/components/variations/net/variations_http_headers_unittest.cc
@@ -7,7 +7,6 @@
 #include <string>
 
 #include "base/containers/flat_map.h"
-#include "base/cxx17_backports.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/task_environment.h"
 #include "components/variations/variations.mojom.h"
@@ -204,7 +203,7 @@
       {"https://a.b.litepages.googlezip.net", true},
   };
 
-  for (size_t i = 0; i < base::size(cases); ++i) {
+  for (size_t i = 0; i < std::size(cases); ++i) {
     const GURL url(cases[i].url);
     EXPECT_EQ(cases[i].should_append_headers,
               ShouldAppendVariationsHeaderForTesting(url, "Append"))
diff --git a/components/variations/service/variations_service_unittest.cc b/components/variations/service/variations_service_unittest.cc
index 220e52a..4f2eb10 100644
--- a/components/variations/service/variations_service_unittest.cc
+++ b/components/variations/service/variations_service_unittest.cc
@@ -13,7 +13,6 @@
 
 #include "base/base64.h"
 #include "base/bind.h"
-#include "base/cxx17_backports.h"
 #include "base/feature_list.h"
 #include "base/files/file_path.h"
 #include "base/json/json_string_value_serializer.h"
@@ -524,7 +523,7 @@
           &prefs_, network_tracker_),
       &prefs_, GetMetricsStateManager(), true);
   service.set_intercepts_fetch(false);
-  for (size_t i = 0; i < base::size(non_ok_status_codes); ++i) {
+  for (size_t i = 0; i < std::size(non_ok_status_codes); ++i) {
     EXPECT_TRUE(prefs_.FindPreference(prefs::kVariationsCompressedSeed)
                     ->IsDefaultValue());
     service.test_url_loader_factory()->ClearResponses();
@@ -623,7 +622,7 @@
 
   std::string serialized_seed = SerializeSeed(CreateTestSeed());
   VariationsService::EnableFetchForTesting();
-  for (size_t i = 0; i < base::size(cases); ++i) {
+  for (size_t i = 0; i < std::size(cases); ++i) {
     TestVariationsService service(
         std::make_unique<web_resource::TestRequestAllowedNotifier>(
             &prefs_, network_tracker_),
@@ -695,7 +694,7 @@
       {1, 0, 1, 0, 1},
   };
 
-  for (size_t i = 0; i < base::size(cases); ++i) {
+  for (size_t i = 0; i < std::size(cases); ++i) {
     TestVariationsServiceObserver observer;
     service.AddObserver(&observer);
 
diff --git a/components/variations/study_filtering_unittest.cc b/components/variations/study_filtering_unittest.cc
index 0028f25a..391c543 100644
--- a/components/variations/study_filtering_unittest.cc
+++ b/components/variations/study_filtering_unittest.cc
@@ -12,7 +12,6 @@
 
 #include "base/bind.h"
 #include "base/callback_helpers.h"
-#include "base/cxx17_backports.h"
 #include "base/strings/strcat.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_split.h"
@@ -52,20 +51,20 @@
   const Study::Channel channels[] = {
       Study::CANARY, Study::DEV, Study::BETA, Study::STABLE,
   };
-  bool channel_added[base::size(channels)] = {false};
+  bool channel_added[std::size(channels)] = {false};
 
   Study::Filter filter;
 
-  // Check in the forwarded order. The loop cond is <= base::size(channels)
+  // Check in the forwarded order. The loop cond is <= std::size(channels)
   // instead of < so that the result of adding the last channel gets checked.
-  for (size_t i = 0; i <= base::size(channels); ++i) {
-    for (size_t j = 0; j < base::size(channels); ++j) {
+  for (size_t i = 0; i <= std::size(channels); ++i) {
+    for (size_t j = 0; j < std::size(channels); ++j) {
       const bool expected = channel_added[j] || filter.channel_size() == 0;
       const bool result = internal::CheckStudyChannel(filter, channels[j]);
       EXPECT_EQ(expected, result) << "Case " << i << "," << j << " failed!";
     }
 
-    if (i < base::size(channels)) {
+    if (i < std::size(channels)) {
       filter.add_channel(channels[i]);
       channel_added[i] = true;
     }
@@ -74,15 +73,15 @@
   // Do the same check in the reverse order.
   filter.clear_channel();
   memset(&channel_added, 0, sizeof(channel_added));
-  for (size_t i = 0; i <= base::size(channels); ++i) {
-    for (size_t j = 0; j < base::size(channels); ++j) {
+  for (size_t i = 0; i <= std::size(channels); ++i) {
+    for (size_t j = 0; j < std::size(channels); ++j) {
       const bool expected = channel_added[j] || filter.channel_size() == 0;
       const bool result = internal::CheckStudyChannel(filter, channels[j]);
       EXPECT_EQ(expected, result) << "Case " << i << "," << j << " failed!";
     }
 
-    if (i < base::size(channels)) {
-      const int index = base::size(channels) - i - 1;
+    if (i < std::size(channels)) {
+      const int index = std::size(channels) - i - 1;
       filter.add_channel(channels[index]);
       channel_added[index] = true;
     }
@@ -95,13 +94,13 @@
                                             Study::MEET_DEVICE};
 
   ASSERT_EQ(Study::FormFactor_ARRAYSIZE,
-            static_cast<int>(base::size(form_factors)));
+            static_cast<int>(std::size(form_factors)));
 
-  bool form_factor_added[base::size(form_factors)] = {false};
+  bool form_factor_added[std::size(form_factors)] = {false};
   Study::Filter filter;
 
-  for (size_t i = 0; i <= base::size(form_factors); ++i) {
-    for (size_t j = 0; j < base::size(form_factors); ++j) {
+  for (size_t i = 0; i <= std::size(form_factors); ++i) {
+    for (size_t j = 0; j < std::size(form_factors); ++j) {
       const bool expected = form_factor_added[j] ||
                             filter.form_factor_size() == 0;
       const bool result = internal::CheckStudyFormFactor(filter,
@@ -110,7 +109,7 @@
                                   << " failed!";
     }
 
-    if (i < base::size(form_factors)) {
+    if (i < std::size(form_factors)) {
       filter.add_form_factor(form_factors[i]);
       form_factor_added[i] = true;
     }
@@ -119,8 +118,8 @@
   // Do the same check in the reverse order.
   filter.clear_form_factor();
   memset(&form_factor_added, 0, sizeof(form_factor_added));
-  for (size_t i = 0; i <= base::size(form_factors); ++i) {
-    for (size_t j = 0; j < base::size(form_factors); ++j) {
+  for (size_t i = 0; i <= std::size(form_factors); ++i) {
+    for (size_t j = 0; j < std::size(form_factors); ++j) {
       const bool expected = form_factor_added[j] ||
                             filter.form_factor_size() == 0;
       const bool result = internal::CheckStudyFormFactor(filter,
@@ -129,8 +128,8 @@
                                   << " failed!";
     }
 
-    if (i < base::size(form_factors)) {
-      const int index = base::size(form_factors) - i - 1;
+    if (i < std::size(form_factors)) {
+      const int index = std::size(form_factors) - i - 1;
       filter.add_form_factor(form_factors[index]);
       form_factor_added[index] = true;
     }
@@ -138,9 +137,9 @@
 
   // Test exclude_form_factors, forward order.
   filter.clear_form_factor();
-  bool form_factor_excluded[base::size(form_factors)] = {false};
-  for (size_t i = 0; i <= base::size(form_factors); ++i) {
-    for (size_t j = 0; j < base::size(form_factors); ++j) {
+  bool form_factor_excluded[std::size(form_factors)] = {false};
+  for (size_t i = 0; i <= std::size(form_factors); ++i) {
+    for (size_t j = 0; j < std::size(form_factors); ++j) {
       const bool expected = filter.exclude_form_factor_size() == 0 ||
                             !form_factor_excluded[j];
       const bool result = internal::CheckStudyFormFactor(filter,
@@ -149,7 +148,7 @@
                                   << j << " failed!";
     }
 
-    if (i < base::size(form_factors)) {
+    if (i < std::size(form_factors)) {
       filter.add_exclude_form_factor(form_factors[i]);
       form_factor_excluded[i] = true;
     }
@@ -158,8 +157,8 @@
   // Test exclude_form_factors, reverse order.
   filter.clear_exclude_form_factor();
   memset(&form_factor_excluded, 0, sizeof(form_factor_excluded));
-  for (size_t i = 0; i <= base::size(form_factors); ++i) {
-    for (size_t j = 0; j < base::size(form_factors); ++j) {
+  for (size_t i = 0; i <= std::size(form_factors); ++i) {
+    for (size_t j = 0; j < std::size(form_factors); ++j) {
       const bool expected = filter.exclude_form_factor_size() == 0 ||
                             !form_factor_excluded[j];
       const bool result = internal::CheckStudyFormFactor(filter,
@@ -168,8 +167,8 @@
                                   << j << " failed!";
     }
 
-    if (i < base::size(form_factors)) {
-      const int index = base::size(form_factors) - i - 1;
+    if (i < std::size(form_factors)) {
+      const int index = std::size(form_factors) - i - 1;
       filter.add_exclude_form_factor(form_factors[index]);
       form_factor_excluded[index] = true;
     }
@@ -226,22 +225,22 @@
                                        Study::PLATFORM_ANDROID_WEBLAYER,
                                        Study::PLATFORM_FUCHSIA,
                                        Study::PLATFORM_ANDROID_WEBVIEW};
-  static_assert(base::size(platforms) == Study::Platform_ARRAYSIZE,
+  static_assert(std::size(platforms) == Study::Platform_ARRAYSIZE,
                 "|platforms| must include all platforms.");
-  bool platform_added[base::size(platforms)] = {false};
+  bool platform_added[std::size(platforms)] = {false};
 
   Study::Filter filter;
 
-  // Check in the forwarded order. The loop cond is <= base::size(platforms)
+  // Check in the forwarded order. The loop cond is <= std::size(platforms)
   // instead of < so that the result of adding the last platform gets checked.
-  for (size_t i = 0; i <= base::size(platforms); ++i) {
-    for (size_t j = 0; j < base::size(platforms); ++j) {
+  for (size_t i = 0; i <= std::size(platforms); ++i) {
+    for (size_t j = 0; j < std::size(platforms); ++j) {
       const bool expected = platform_added[j];
       const bool result = internal::CheckStudyPlatform(filter, platforms[j]);
       EXPECT_EQ(expected, result) << "Case " << i << "," << j << " failed!";
     }
 
-    if (i < base::size(platforms)) {
+    if (i < std::size(platforms)) {
       filter.add_platform(platforms[i]);
       platform_added[i] = true;
     }
@@ -250,15 +249,15 @@
   // Do the same check in the reverse order.
   filter.clear_platform();
   memset(&platform_added, 0, sizeof(platform_added));
-  for (size_t i = 0; i <= base::size(platforms); ++i) {
-    for (size_t j = 0; j < base::size(platforms); ++j) {
+  for (size_t i = 0; i <= std::size(platforms); ++i) {
+    for (size_t j = 0; j < std::size(platforms); ++j) {
       const bool expected = platform_added[j];
       const bool result = internal::CheckStudyPlatform(filter, platforms[j]);
       EXPECT_EQ(expected, result) << "Case " << i << "," << j << " failed!";
     }
 
-    if (i < base::size(platforms)) {
-      const int index = base::size(platforms) - i - 1;
+    if (i < std::size(platforms)) {
+      const int index = std::size(platforms) - i - 1;
       filter.add_platform(platforms[index]);
       platform_added[index] = true;
     }
@@ -363,7 +362,7 @@
   // Start date not set should result in true.
   EXPECT_TRUE(internal::CheckStudyStartDate(filter, now));
 
-  for (size_t i = 0; i < base::size(start_test_cases); ++i) {
+  for (size_t i = 0; i < std::size(start_test_cases); ++i) {
     filter.set_start_date(TimeToProtoTime(start_test_cases[i].start_date));
     const bool result = internal::CheckStudyStartDate(filter, now);
     EXPECT_EQ(start_test_cases[i].expected_result, result)
@@ -386,7 +385,7 @@
   // End date not set should result in true.
   EXPECT_TRUE(internal::CheckStudyEndDate(filter, now));
 
-  for (size_t i = 0; i < base::size(start_test_cases); ++i) {
+  for (size_t i = 0; i < std::size(start_test_cases); ++i) {
     filter.set_end_date(TimeToProtoTime(start_test_cases[i].end_date));
     const bool result = internal::CheckStudyEndDate(filter, now);
     EXPECT_EQ(start_test_cases[i].expected_result, result) << "Case " << i
@@ -441,7 +440,7 @@
   // Min/max version not set should result in true.
   EXPECT_TRUE(internal::CheckStudyOSVersion(filter, base::Version("1.2.3")));
 
-  for (size_t i = 0; i < base::size(min_test_cases); ++i) {
+  for (size_t i = 0; i < std::size(min_test_cases); ++i) {
     filter.set_min_os_version(min_test_cases[i].min_os_version);
     const bool result = internal::CheckStudyOSVersion(
         filter, base::Version(min_test_cases[i].os_version));
@@ -450,7 +449,7 @@
   }
   filter.clear_min_os_version();
 
-  for (size_t i = 0; i < base::size(max_test_cases); ++i) {
+  for (size_t i = 0; i < std::size(max_test_cases); ++i) {
     filter.set_max_os_version(max_test_cases[i].max_os_version);
     const bool result = internal::CheckStudyOSVersion(
         filter, base::Version(max_test_cases[i].os_version));
@@ -459,8 +458,8 @@
   }
 
   // Check intersection semantics.
-  for (size_t i = 0; i < base::size(min_test_cases); ++i) {
-    for (size_t j = 0; j < base::size(max_test_cases); ++j) {
+  for (size_t i = 0; i < std::size(min_test_cases); ++i) {
+    for (size_t j = 0; j < std::size(max_test_cases); ++j) {
       filter.set_min_os_version(min_test_cases[i].min_os_version);
       filter.set_max_os_version(max_test_cases[j].max_os_version);
 
@@ -539,7 +538,7 @@
   // Min/max version not set should result in true.
   EXPECT_TRUE(internal::CheckStudyVersion(filter, base::Version("1.2.3")));
 
-  for (size_t i = 0; i < base::size(min_test_cases); ++i) {
+  for (size_t i = 0; i < std::size(min_test_cases); ++i) {
     filter.set_min_version(min_test_cases[i].min_version);
     const bool result = internal::CheckStudyVersion(
         filter, base::Version(min_test_cases[i].version));
@@ -548,7 +547,7 @@
   }
   filter.clear_min_version();
 
-  for (size_t i = 0; i < base::size(max_test_cases); ++i) {
+  for (size_t i = 0; i < std::size(max_test_cases); ++i) {
     filter.set_max_version(max_test_cases[i].max_version);
     const bool result = internal::CheckStudyVersion(
         filter, base::Version(max_test_cases[i].version));
@@ -557,8 +556,8 @@
   }
 
   // Check intersection semantics.
-  for (size_t i = 0; i < base::size(min_test_cases); ++i) {
-    for (size_t j = 0; j < base::size(max_test_cases); ++j) {
+  for (size_t i = 0; i < std::size(min_test_cases); ++i) {
+    for (size_t j = 0; j < std::size(max_test_cases); ++j) {
       filter.set_min_version(min_test_cases[i].min_version);
       filter.set_max_version(max_test_cases[j].max_version);
 
@@ -728,7 +727,7 @@
   baseStudy.mutable_filter()->add_platform(Study::PLATFORM_ANDROID);
 
   // Add studies with invalid min_versions.
-  for (size_t i = 0; i < base::size(versions); ++i) {
+  for (size_t i = 0; i < std::size(versions); ++i) {
     Study* study = seed.add_study();
     *study = baseStudy;
     study->set_name(
@@ -737,7 +736,7 @@
   }
 
   // Add studies with invalid max_versions.
-  for (size_t i = 0; i < base::size(versions); ++i) {
+  for (size_t i = 0; i < std::size(versions); ++i) {
     Study* study = seed.add_study();
     *study = baseStudy;
     study->set_name(
@@ -746,7 +745,7 @@
   }
 
   // Add studies with invalid min_os_versions.
-  for (size_t i = 0; i < base::size(versions); ++i) {
+  for (size_t i = 0; i < std::size(versions); ++i) {
     Study* study = seed.add_study();
     *study = baseStudy;
     study->set_name(
@@ -755,7 +754,7 @@
   }
 
   // Add studies with invalid max_os_versions.
-  for (size_t i = 0; i < base::size(versions); ++i) {
+  for (size_t i = 0; i < std::size(versions); ++i) {
     Study* study = seed.add_study();
     *study = baseStudy;
     study->set_name(
@@ -779,15 +778,15 @@
 
   ASSERT_EQ(0U, processed_studies.size());
   histogram_tester.ExpectTotalCount("Variations.InvalidStudyReason",
-                                    base::size(versions) * 4);
+                                    std::size(versions) * 4);
   histogram_tester.ExpectBucketCount("Variations.InvalidStudyReason", 0,
-                                     base::size(versions));
+                                     std::size(versions));
   histogram_tester.ExpectBucketCount("Variations.InvalidStudyReason", 1,
-                                     base::size(versions));
+                                     std::size(versions));
   histogram_tester.ExpectBucketCount("Variations.InvalidStudyReason", 2,
-                                     base::size(versions));
+                                     std::size(versions));
   histogram_tester.ExpectBucketCount("Variations.InvalidStudyReason", 3,
-                                     base::size(versions));
+                                     std::size(versions));
 }
 
 TEST(VariationsStudyFilteringTest, FilterAndValidateStudiesWithBlankStudyName) {
@@ -915,7 +914,7 @@
   // Expiry date not set should result in false.
   EXPECT_FALSE(internal::IsStudyExpired(study, now));
 
-  for (size_t i = 0; i < base::size(expiry_test_cases); ++i) {
+  for (size_t i = 0; i < std::size(expiry_test_cases); ++i) {
     study.set_expiry_date(TimeToProtoTime(expiry_test_cases[i].expiry_date));
     const bool result = internal::IsStudyExpired(study, now);
     EXPECT_EQ(expiry_test_cases[i].expected_result, result)
diff --git a/components/variations/variations_seed_processor_unittest.cc b/components/variations/variations_seed_processor_unittest.cc
index 827118f1..1ac2db4 100644
--- a/components/variations/variations_seed_processor_unittest.cc
+++ b/components/variations/variations_seed_processor_unittest.cc
@@ -15,7 +15,6 @@
 #include "base/bind.h"
 #include "base/callback_helpers.h"
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "base/feature_list.h"
 #include "base/format_macros.h"
 #include "base/strings/string_split.h"
@@ -692,7 +691,7 @@
       {nullptr, kFeatureOffByDefault.name, false, true},
   };
 
-  for (size_t i = 0; i < base::size(test_cases); i++) {
+  for (size_t i = 0; i < std::size(test_cases); i++) {
     const auto& test_case = test_cases[i];
     SCOPED_TRACE(base::StringPrintf("Test[%" PRIuS "]", i));
 
@@ -814,7 +813,7 @@
        kForcedOffGroup, false, true},
   };
 
-  for (size_t i = 0; i < base::size(test_cases); i++) {
+  for (size_t i = 0; i < std::size(test_cases); i++) {
     const auto& test_case = test_cases[i];
     const int group = test_case.one_hundred_percent_group;
     SCOPED_TRACE(base::StringPrintf(
@@ -890,7 +889,7 @@
       {kEnabledFeature, false, year_later, false},
   };
 
-  for (size_t i = 0; i < base::size(test_cases); i++) {
+  for (size_t i = 0; i < std::size(test_cases); i++) {
     const auto& test_case = test_cases[i];
     SCOPED_TRACE(
         base::StringPrintf("Test[%" PRIuS "]: %s", i, test_case.feature.name));
diff --git a/components/visitedlink/browser/visitedlink_writer.cc b/components/visitedlink/browser/visitedlink_writer.cc
index 8e18dd63..af287fa 100644
--- a/components/visitedlink/browser/visitedlink_writer.cc
+++ b/components/visitedlink/browser/visitedlink_writer.cc
@@ -6,15 +6,14 @@
 
 #include <stdio.h>
 #include <string.h>
-#include <algorithm>
-#include <utility>
 
+#include <algorithm>
 #include <memory>
+#include <utility>
 
 #include "base/bind.h"
 #include "base/callback_helpers.h"
 #include "base/containers/stack_container.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_util.h"
 #include "base/files/scoped_file.h"
 #include "base/logging.h"
@@ -1001,7 +1000,7 @@
   int desired = item_count * 3;
 
   // Find the closest prime.
-  for (size_t i = 0; i < base::size(table_sizes); i++) {
+  for (size_t i = 0; i < std::size(table_sizes); i++) {
     if (table_sizes[i] > desired)
       return table_sizes[i];
   }
diff --git a/components/viz/common/delegated_ink_prediction_configuration.h b/components/viz/common/delegated_ink_prediction_configuration.h
index 2e9cb32..2d57b9b 100644
--- a/components/viz/common/delegated_ink_prediction_configuration.h
+++ b/components/viz/common/delegated_ink_prediction_configuration.h
@@ -5,8 +5,6 @@
 #ifndef COMPONENTS_VIZ_COMMON_DELEGATED_INK_PREDICTION_CONFIGURATION_H_
 #define COMPONENTS_VIZ_COMMON_DELEGATED_INK_PREDICTION_CONFIGURATION_H_
 
-#include "base/cxx17_backports.h"
-
 namespace viz {
 
 struct PredictionConfiguration {
@@ -25,7 +23,7 @@
                                                           {2, 3}};
 
 // Current number of different prediction configurations that are being tested.
-constexpr int kNumberOfPredictionConfigs = base::size(kPredictionConfigs);
+constexpr int kNumberOfPredictionConfigs = std::size(kPredictionConfigs);
 
 // Indicates which element of |kPredictionConfigs| is being selected in
 // tests and viz/common/features.cc
diff --git a/components/viz/common/resources/resource_format_utils.cc b/components/viz/common/resources/resource_format_utils.cc
index 3deb072f..cdcc20e 100644
--- a/components/viz/common/resources/resource_format_utils.cc
+++ b/components/viz/common/resources/resource_format_utils.cc
@@ -11,7 +11,6 @@
 #include <ostream>
 
 #include "base/check_op.h"
-#include "base/cxx17_backports.h"
 #include "base/notreached.h"
 #include "ui/gfx/buffer_types.h"
 
@@ -209,7 +208,7 @@
       GL_ZERO,                             // YUV_420_BIPLANAR
       GL_ZERO,                             // P010
   };
-  static_assert(base::size(format_gl_data_type) == (RESOURCE_FORMAT_MAX + 1),
+  static_assert(std::size(format_gl_data_type) == (RESOURCE_FORMAT_MAX + 1),
                 "format_gl_data_type does not handle all cases.");
 
   return format_gl_data_type[format];
@@ -240,7 +239,7 @@
       GL_ZERO,       // YUV_420_BIPLANAR
       GL_ZERO,       // P010
   };
-  static_assert(base::size(format_gl_data_format) == (RESOURCE_FORMAT_MAX + 1),
+  static_assert(std::size(format_gl_data_format) == (RESOURCE_FORMAT_MAX + 1),
                 "format_gl_data_format does not handle all cases.");
 
   return format_gl_data_format[format];
@@ -298,7 +297,7 @@
       GL_ZERO,       // P010
   };
 
-  static_assert(base::size(format_gl_data_format) == (RESOURCE_FORMAT_MAX + 1),
+  static_assert(std::size(format_gl_data_format) == (RESOURCE_FORMAT_MAX + 1),
                 "format_gl_data_format does not handle all cases.");
 
   return format_gl_data_format[format];
diff --git a/components/viz/common/yuv_readback_unittest.cc b/components/viz/common/yuv_readback_unittest.cc
index 5cf43adb..6a0851c 100644
--- a/components/viz/common/yuv_readback_unittest.cc
+++ b/components/viz/common/yuv_readback_unittest.cc
@@ -514,8 +514,8 @@
   unsigned int x = std::get<2>(GetParam());
   unsigned int y = std::get<3>(GetParam());
 
-  for (unsigned int ox = x; ox < base::size(kYUVReadbackSizes); ox++) {
-    for (unsigned int oy = y; oy < base::size(kYUVReadbackSizes); oy++) {
+  for (unsigned int ox = x; ox < std::size(kYUVReadbackSizes); ox++) {
+    for (unsigned int oy = y; oy < std::size(kYUVReadbackSizes); oy++) {
       // If output is a subsection of the destination frame, (letterbox)
       // then try different variations of where the subsection goes.
       for (Margin xm = x < ox ? MarginLeft : MarginRight; xm <= MarginRight;
@@ -546,8 +546,8 @@
     ::testing::Combine(
         ::testing::Bool(),
         ::testing::Bool(),
-        ::testing::Range<unsigned int>(0, base::size(kYUVReadbackSizes)),
-        ::testing::Range<unsigned int>(0, base::size(kYUVReadbackSizes))));
+        ::testing::Range<unsigned int>(0, std::size(kYUVReadbackSizes)),
+        ::testing::Range<unsigned int>(0, std::size(kYUVReadbackSizes))));
 
 }  // namespace viz
 
diff --git a/components/viz/demo/client/demo_client.cc b/components/viz/demo/client/demo_client.cc
index d47f91f..cea51ef 100644
--- a/components/viz/demo/client/demo_client.cc
+++ b/components/viz/demo/client/demo_client.cc
@@ -135,7 +135,7 @@
   viz::SolidColorDrawQuad* color_quad =
       render_pass->CreateAndAppendDrawQuad<viz::SolidColorDrawQuad>();
   color_quad->SetNew(quad_state, output_rect, output_rect,
-                     colors[(++frame_count_ / 60) % base::size(colors)], false);
+                     colors[(++frame_count_ / 60) % std::size(colors)], false);
 
   frame.render_pass_list.push_back(std::move(render_pass));
 
diff --git a/components/viz/host/host_gpu_memory_buffer_manager.cc b/components/viz/host/host_gpu_memory_buffer_manager.cc
index 0c78238..88d20a6 100644
--- a/components/viz/host/host_gpu_memory_buffer_manager.cc
+++ b/components/viz/host/host_gpu_memory_buffer_manager.cc
@@ -263,7 +263,7 @@
       // TileManager can set to cancel this wait.
       base::WaitableEvent* waitables[] = {&wait_event, shutdown_event};
       size_t index =
-          base::WaitableEvent::WaitMany(waitables, base::size(waitables));
+          base::WaitableEvent::WaitMany(waitables, std::size(waitables));
       if (index == 1)
         cancelled->data = true;
     } else {
diff --git a/components/viz/service/display/bsp_tree_unittest.cc b/components/viz/service/display/bsp_tree_unittest.cc
index 41b1df7..4545316 100644
--- a/components/viz/service/display/bsp_tree_unittest.cc
+++ b/components/viz/service/display/bsp_tree_unittest.cc
@@ -11,7 +11,6 @@
 #include <utility>
 
 #include "base/containers/circular_deque.h"
-#include "base/cxx17_backports.h"
 #include "components/viz/service/display/bsp_walk_action.h"
 #include "components/viz/service/display/draw_polygon.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -28,7 +27,7 @@
   } while (false);
 
 #define INT_VECTOR_FROM_ARRAY(array) \
-  std::vector<int>(array, array + base::size(array))
+  std::vector<int>(array, array + std::size(array))
 
 #define CREATE_DRAW_POLYGON(vertex_vector, normal, polygon_id) \
   new DrawPolygon(NULL, vertex_vector, normal, polygon_id)
diff --git a/components/viz/service/display/display_unittest.cc b/components/viz/service/display/display_unittest.cc
index 2539b3de..67fc377 100644
--- a/components/viz/service/display/display_unittest.cc
+++ b/components/viz/service/display/display_unittest.cc
@@ -1041,9 +1041,9 @@
   // +---+ | 0 |
   // | 2   | . |
   // +-----+---+
-  EXPECT_EQ(base::size(rects), root_render_pass->quad_list.size());
+  EXPECT_EQ(std::size(rects), root_render_pass->quad_list.size());
   display_->RemoveOverdrawQuads(&frame);
-  ASSERT_EQ(base::size(rects), root_render_pass->quad_list.size());
+  ASSERT_EQ(std::size(rects), root_render_pass->quad_list.size());
 
   for (int i = 0; i < 3; i++) {
     EXPECT_EQ(rects[i], root_render_pass->quad_list.ElementAt(i)->visible_rect);
@@ -4227,7 +4227,7 @@
       gfx::Rect(850, 200, 500, 70),
   };
 
-  for (size_t i = 0; i < base::size(expected_visible_rects); ++i) {
+  for (size_t i = 0; i < std::size(expected_visible_rects); ++i) {
     EXPECT_EQ(
         expected_visible_rects[i],
         frame.render_pass_list.front()->quad_list.ElementAt(i)->visible_rect);
diff --git a/components/viz/service/display/gl_renderer.cc b/components/viz/service/display/gl_renderer.cc
index 62a4e2b1..11df6a6 100644
--- a/components/viz/service/display/gl_renderer.cc
+++ b/components/viz/service/display/gl_renderer.cc
@@ -18,7 +18,6 @@
 #include "base/callback_helpers.h"
 #include "base/check_op.h"
 #include "base/containers/cxx20_erase.h"
-#include "base/cxx17_backports.h"
 #include "base/feature_list.h"
 #include "base/memory/ptr_util.h"
 #include "base/memory/raw_ptr.h"
@@ -518,7 +517,7 @@
       output_surface_->capabilities().uses_default_gl_framebuffer;
   GLenum attachments[] = {static_cast<GLenum>(
       using_default_framebuffer ? GL_COLOR_EXT : GL_COLOR_ATTACHMENT0_EXT)};
-  gl_->DiscardFramebufferEXT(GL_FRAMEBUFFER, base::size(attachments),
+  gl_->DiscardFramebufferEXT(GL_FRAMEBUFFER, std::size(attachments),
                              attachments);
 }
 
diff --git a/components/viz/service/display/overlay_unittest.cc b/components/viz/service/display/overlay_unittest.cc
index 4fba6c24..cf91ff1 100644
--- a/components/viz/service/display/overlay_unittest.cc
+++ b/components/viz/service/display/overlay_unittest.cc
@@ -11,7 +11,6 @@
 #include "base/bind.h"
 #include "base/callback_helpers.h"
 #include "base/containers/flat_map.h"
-#include "base/cxx17_backports.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/test/scoped_feature_list.h"
 #include "base/time/time.h"
@@ -1326,7 +1325,7 @@
       gfx::Rect(6, 6, kCandidateSmall, kCandidateSmall)};
 
   AddExpectedRectToOverlayProcessor(gfx::RectF(kOverlayDisplayRect));
-  for (size_t i = 0; i < base::size(kDamageRect); ++i) {
+  for (size_t i = 0; i < std::size(kDamageRect); ++i) {
     SCOPED_TRACE(i);
 
     auto pass = CreateRenderPass();
@@ -1382,7 +1381,7 @@
   };
 
   AddExpectedRectToOverlayProcessor(gfx::RectF(kOverlayDisplayRect));
-  for (size_t i = 0; i < base::size(kExpectedDamage); ++i) {
+  for (size_t i = 0; i < std::size(kExpectedDamage); ++i) {
     SCOPED_TRACE(i);
 
     auto pass = CreateRenderPass();
@@ -1432,7 +1431,7 @@
       gfx::UnionRects(kInFrontDamage, kBehindOverlayDamage)};
 
   AddExpectedRectToOverlayProcessor(gfx::RectF(kOverlayDisplayRect));
-  for (size_t i = 0; i < base::size(kExpectedDamage); ++i) {
+  for (size_t i = 0; i < std::size(kExpectedDamage); ++i) {
     SCOPED_TRACE(i);
 
     auto pass = CreateRenderPass();
@@ -3493,7 +3492,7 @@
                                   gfx::Rect(0, 0, 312, 256)};
   size_t expected_candidate_size[] = {1, 1, 0};
 
-  for (size_t i = 0; i < base::size(expected_damages); ++i) {
+  for (size_t i = 0; i < std::size(expected_damages); ++i) {
     SCOPED_TRACE(i);
 
     auto pass = CreateRenderPass();
@@ -5099,16 +5098,16 @@
           kOccluderWidth * kOccluderWidth * 2};
 
   static_assert(
-      base::size(kCandidateRects) == base::size(kCandidateUseSurfaceIndex),
+      std::size(kCandidateRects) == std::size(kCandidateUseSurfaceIndex),
       "Number of elements in each list should be the identical.");
-  static_assert(base::size(kCandidateRects) == base::size(kExpectedDamages),
+  static_assert(std::size(kCandidateRects) == std::size(kExpectedDamages),
                 "Number of elements in each list should be the identical.");
 
   QuadList& quad_list = pass->quad_list;
   auto occluder_iter_count = quad_list.size();
 
   SurfaceDamageRectList surface_damage_rect_list;
-  for (size_t i = 0; i < base::size(kCandidateRects); ++i) {
+  for (size_t i = 0; i < std::size(kCandidateRects); ++i) {
     SCOPED_TRACE(i);
 
     // Create fake surface damage for this candidate.
diff --git a/components/viz/service/display/skia_renderer.cc b/components/viz/service/display/skia_renderer.cc
index 5ae3189f..a5ffac47 100644
--- a/components/viz/service/display/skia_renderer.cc
+++ b/components/viz/service/display/skia_renderer.cc
@@ -520,7 +520,7 @@
   SkPath draw_region_in_path() const {
     if (draw_region) {
       return SkPath::Polygon(draw_region->points,
-                             base::size(draw_region->points),
+                             std::size(draw_region->points),
                              /*isClosed=*/true);
     }
     return SkPath();
@@ -1584,7 +1584,7 @@
     // quadrilateral to the bypass'ed quad's coordinate space so that BSP
     // splitting is still respected.
     rpdq_to_bypass.mapPoints(params->draw_region->points,
-                             base::size(params->draw_region->points));
+                             std::size(params->draw_region->points));
   }
 
   // Compute draw params for the bypass quad from scratch, but since the
diff --git a/components/viz/service/frame_sinks/compositor_frame_sink_support_unittest.cc b/components/viz/service/frame_sinks/compositor_frame_sink_support_unittest.cc
index 4e86f15..2b6641b 100644
--- a/components/viz/service/frame_sinks/compositor_frame_sink_support_unittest.cc
+++ b/components/viz/service/frame_sinks/compositor_frame_sink_support_unittest.cc
@@ -7,7 +7,6 @@
 #include <utility>
 
 #include "base/bind.h"
-#include "base/cxx17_backports.h"
 #include "base/test/simple_test_tick_clock.h"
 #include "base/time/time.h"
 #include "build/build_config.h"
@@ -265,7 +264,7 @@
 TEST_F(CompositorFrameSinkSupportTest, ResourceLifetimeSimple) {
   ResourceId first_frame_ids[] = {ResourceId(1), ResourceId(2), ResourceId(3)};
   SubmitCompositorFrameWithResources(first_frame_ids,
-                                     base::size(first_frame_ids));
+                                     std::size(first_frame_ids));
 
   // All of the resources submitted in the first frame are still in use at this
   // time by virtue of being in the pending frame, so none can be returned to
@@ -283,11 +282,11 @@
   // Resources were never consumed so no sync token should be set.
   CheckReturnedResourcesMatchExpected(
       expected_returned_ids, expected_returned_counts,
-      base::size(expected_returned_counts), gpu::SyncToken());
+      std::size(expected_returned_counts), gpu::SyncToken());
 
   ResourceId third_frame_ids[] = {ResourceId(4), ResourceId(5), ResourceId(6)};
   SubmitCompositorFrameWithResources(third_frame_ids,
-                                     base::size(third_frame_ids));
+                                     std::size(third_frame_ids));
 
   // All of the resources submitted in the third frame are still in use at this
   // time by virtue of being in the pending frame, so none can be returned to
@@ -299,7 +298,7 @@
   // make all resources of third frame available to be returned.
   ResourceId forth_frame_ids[] = {ResourceId(7), ResourceId(8), ResourceId(9)};
   SubmitCompositorFrameWithResources(forth_frame_ids,
-                                     base::size(forth_frame_ids));
+                                     std::size(forth_frame_ids));
 
   ResourceId forth_expected_returned_ids[] = {ResourceId(4), ResourceId(5),
                                               ResourceId(6)};
@@ -307,7 +306,7 @@
   // Resources were never consumed so no sync token should be set.
   CheckReturnedResourcesMatchExpected(
       forth_expected_returned_ids, forth_expected_returned_counts,
-      base::size(forth_expected_returned_counts), gpu::SyncToken());
+      std::size(forth_expected_returned_counts), gpu::SyncToken());
 }
 
 // Tests submitting a frame with resources followed by one with no resources
@@ -316,7 +315,7 @@
        ResourceLifetimeSimpleWithProviderHoldingAlive) {
   ResourceId first_frame_ids[] = {ResourceId(1), ResourceId(2), ResourceId(3)};
   SubmitCompositorFrameWithResources(first_frame_ids,
-                                     base::size(first_frame_ids));
+                                     std::size(first_frame_ids));
 
   // All of the resources submitted in the first frame are still in use at this
   // time by virtue of being in the pending frame, so none can be returned to
@@ -335,7 +334,7 @@
   fake_support_client_.clear_returned_resources();
 
   int release_counts[] = {1, 1, 1};
-  UnrefResources(first_frame_ids, release_counts, base::size(first_frame_ids));
+  UnrefResources(first_frame_ids, release_counts, std::size(first_frame_ids));
 
   // None is returned to the client since DidReceiveCompositorAck is not
   // invoked.
@@ -349,7 +348,7 @@
   int expected_returned_counts[] = {1, 1, 1};
   CheckReturnedResourcesMatchExpected(
       expected_returned_ids, expected_returned_counts,
-      base::size(expected_returned_counts), consumer_sync_token_);
+      std::size(expected_returned_counts), consumer_sync_token_);
 }
 
 // Tests referencing a resource, unref'ing it to zero, then using it again
@@ -357,14 +356,14 @@
 TEST_F(CompositorFrameSinkSupportTest, ResourceReusedBeforeReturn) {
   ResourceId first_frame_ids[] = {ResourceId(7)};
   SubmitCompositorFrameWithResources(first_frame_ids,
-                                     base::size(first_frame_ids));
+                                     std::size(first_frame_ids));
 
   // This removes all references to resource id 7.
   SubmitCompositorFrameWithResources(nullptr, 0);
 
   // This references id 7 again.
   SubmitCompositorFrameWithResources(first_frame_ids,
-                                     base::size(first_frame_ids));
+                                     std::size(first_frame_ids));
 
   // This removes it again.
   SubmitCompositorFrameWithResources(nullptr, 0);
@@ -387,7 +386,7 @@
 TEST_F(CompositorFrameSinkSupportTest, ResourceRefMultipleTimes) {
   ResourceId first_frame_ids[] = {ResourceId(3), ResourceId(4)};
   SubmitCompositorFrameWithResources(first_frame_ids,
-                                     base::size(first_frame_ids));
+                                     std::size(first_frame_ids));
 
   // Ref resources from the first frame twice.
   RefCurrentFrameResources();
@@ -395,7 +394,7 @@
 
   ResourceId second_frame_ids[] = {ResourceId(4), ResourceId(5)};
   SubmitCompositorFrameWithResources(second_frame_ids,
-                                     base::size(second_frame_ids));
+                                     std::size(second_frame_ids));
 
   // Ref resources from the second frame 3 times.
   RefCurrentFrameResources();
@@ -417,18 +416,18 @@
     SCOPED_TRACE("unref all 3");
     ResourceId ids_to_unref[] = {ResourceId(3), ResourceId(4), ResourceId(5)};
     int counts[] = {1, 1, 1};
-    UnrefResources(ids_to_unref, counts, base::size(ids_to_unref));
+    UnrefResources(ids_to_unref, counts, std::size(ids_to_unref));
 
     EXPECT_EQ(0u, fake_support_client_.returned_resources().size());
     fake_support_client_.clear_returned_resources();
 
-    UnrefResources(ids_to_unref, counts, base::size(ids_to_unref));
+    UnrefResources(ids_to_unref, counts, std::size(ids_to_unref));
     SubmitCompositorFrameWithResources(nullptr, 0);
     ResourceId expected_returned_ids[] = {ResourceId(3)};
     int expected_returned_counts[] = {1};
     CheckReturnedResourcesMatchExpected(
         expected_returned_ids, expected_returned_counts,
-        base::size(expected_returned_counts), consumer_sync_token_);
+        std::size(expected_returned_counts), consumer_sync_token_);
   }
 
   // Expected refs remaining:
@@ -438,14 +437,14 @@
     SCOPED_TRACE("unref 4 and 5");
     ResourceId ids_to_unref[] = {ResourceId(4), ResourceId(5)};
     int counts[] = {1, 1};
-    UnrefResources(ids_to_unref, counts, base::size(ids_to_unref));
+    UnrefResources(ids_to_unref, counts, std::size(ids_to_unref));
     SubmitCompositorFrameWithResources(nullptr, 0);
 
     ResourceId expected_returned_ids[] = {ResourceId(5)};
     int expected_returned_counts[] = {1};
     CheckReturnedResourcesMatchExpected(
         expected_returned_ids, expected_returned_counts,
-        base::size(expected_returned_counts), consumer_sync_token_);
+        std::size(expected_returned_counts), consumer_sync_token_);
   }
 
   // Now, just 2 refs remaining on resource 4. Unref both at once and make sure
@@ -454,21 +453,21 @@
     SCOPED_TRACE("unref only 4");
     ResourceId ids_to_unref[] = {ResourceId(4)};
     int counts[] = {2};
-    UnrefResources(ids_to_unref, counts, base::size(ids_to_unref));
+    UnrefResources(ids_to_unref, counts, std::size(ids_to_unref));
     SubmitCompositorFrameWithResources(nullptr, 0);
 
     ResourceId expected_returned_ids[] = {ResourceId(4)};
     int expected_returned_counts[] = {2};
     CheckReturnedResourcesMatchExpected(
         expected_returned_ids, expected_returned_counts,
-        base::size(expected_returned_counts), consumer_sync_token_);
+        std::size(expected_returned_counts), consumer_sync_token_);
   }
 }
 
 TEST_F(CompositorFrameSinkSupportTest, ResourceLifetime) {
   ResourceId first_frame_ids[] = {ResourceId(1), ResourceId(2), ResourceId(3)};
   SubmitCompositorFrameWithResources(first_frame_ids,
-                                     base::size(first_frame_ids));
+                                     std::size(first_frame_ids));
 
   // All of the resources submitted in the first frame are still in use at this
   // time by virtue of being in the pending frame, so none can be returned to
@@ -481,14 +480,14 @@
   // only referenced by the first frame.
   ResourceId second_frame_ids[] = {ResourceId(2), ResourceId(3), ResourceId(4)};
   SubmitCompositorFrameWithResources(second_frame_ids,
-                                     base::size(second_frame_ids));
+                                     std::size(second_frame_ids));
   {
     SCOPED_TRACE("second frame");
     ResourceId expected_returned_ids[] = {ResourceId(1)};
     int expected_returned_counts[] = {1};
     CheckReturnedResourcesMatchExpected(
         expected_returned_ids, expected_returned_counts,
-        base::size(expected_returned_counts), gpu::SyncToken());
+        std::size(expected_returned_counts), gpu::SyncToken());
   }
 
   // The third frame references a disjoint set of resources, so we expect to
@@ -498,7 +497,7 @@
   ResourceId third_frame_ids[] = {ResourceId(10), ResourceId(11),
                                   ResourceId(12), ResourceId(13)};
   SubmitCompositorFrameWithResources(third_frame_ids,
-                                     base::size(third_frame_ids));
+                                     std::size(third_frame_ids));
 
   {
     SCOPED_TRACE("third frame");
@@ -507,7 +506,7 @@
     int expected_returned_counts[] = {2, 2, 1};
     CheckReturnedResourcesMatchExpected(
         expected_returned_ids, expected_returned_counts,
-        base::size(expected_returned_counts), gpu::SyncToken());
+        std::size(expected_returned_counts), gpu::SyncToken());
   }
 
   // Simulate a ResourceProvider taking a ref on all of the resources.
@@ -515,7 +514,7 @@
 
   ResourceId fourth_frame_ids[] = {ResourceId(12), ResourceId(13)};
   SubmitCompositorFrameWithResources(fourth_frame_ids,
-                                     base::size(fourth_frame_ids));
+                                     std::size(fourth_frame_ids));
 
   EXPECT_EQ(0u, fake_support_client_.returned_resources().size());
 
@@ -531,7 +530,7 @@
     ResourceId ids_to_unref[] = {ResourceId(10), ResourceId(11), ResourceId(12),
                                  ResourceId(13)};
     int counts[] = {1, 1, 1, 1};
-    UnrefResources(ids_to_unref, counts, base::size(ids_to_unref));
+    UnrefResources(ids_to_unref, counts, std::size(ids_to_unref));
   }
 
   // Nothing is returned to the client yet since DidReceiveCompositorFrameAck
@@ -545,7 +544,7 @@
   {
     ResourceId ids_to_unref[] = {ResourceId(12), ResourceId(13)};
     int counts[] = {1, 1};
-    UnrefResources(ids_to_unref, counts, base::size(ids_to_unref));
+    UnrefResources(ids_to_unref, counts, std::size(ids_to_unref));
   }
 
   // Resources 12 and 13 are still in use by the current frame, so they
@@ -563,7 +562,7 @@
     int expected_returned_counts[] = {1, 1, 2, 2};
     CheckReturnedResourcesMatchExpected(
         expected_returned_ids, expected_returned_counts,
-        base::size(expected_returned_counts), consumer_sync_token_);
+        std::size(expected_returned_counts), consumer_sync_token_);
   }
 }
 
@@ -673,7 +672,7 @@
   ResourceId frame_resource_ids[] = {ResourceId(1), ResourceId(2),
                                      ResourceId(3)};
   AddResourcesToFrame(&frame, frame_resource_ids,
-                      base::size(frame_resource_ids));
+                      std::size(frame_resource_ids));
 
   EXPECT_FALSE(SubmitCompositorFrameWithCopyRequest(std::move(frame),
                                                     std::move(request)));
@@ -682,7 +681,7 @@
 
   // All the resources in the rejected frame should have been returned.
   CheckReturnedResourcesMatchExpected(frame_resource_ids,
-                                      base::size(frame_resource_ids));
+                                      std::size(frame_resource_ids));
 
   manager_.InvalidateFrameSinkId(kAnotherArbitraryFrameSinkId);
 }
@@ -975,7 +974,7 @@
   ResourceId frame_resource_ids[] = {ResourceId(1), ResourceId(2),
                                      ResourceId(3)};
   AddResourcesToFrame(&frame, frame_resource_ids,
-                      base::size(frame_resource_ids));
+                      std::size(frame_resource_ids));
 
   result = support_->MaybeSubmitCompositorFrame(
       local_surface_id_, std::move(frame), absl::nullopt, 0,
@@ -985,7 +984,7 @@
 
   // All the resources in the rejected frame should have been returned.
   CheckReturnedResourcesMatchExpected(frame_resource_ids,
-                                      base::size(frame_resource_ids));
+                                      std::size(frame_resource_ids));
 }
 
 // Check that if the device scale factor of a CompositorFrame doesn't match the
@@ -1639,7 +1638,7 @@
   ResourceId first_frame_ids[] = {ResourceId(1), ResourceId(2), ResourceId(3),
                                   ResourceId(4), ResourceId(5)};
   SubmitCompositorFrameWithResources(first_frame_ids,
-                                     base::size(first_frame_ids));
+                                     std::size(first_frame_ids));
   EXPECT_EQ((gfx::Rect{0, 0, 20, 20}),
             (support_->GetCopyOutputRequestRegion(VideoCaptureSubTarget())));
 
diff --git a/components/viz/service/frame_sinks/video_capture/video_capture_overlay_unittest.cc b/components/viz/service/frame_sinks/video_capture/video_capture_overlay_unittest.cc
index 92b3298..44a9861 100644
--- a/components/viz/service/frame_sinks/video_capture/video_capture_overlay_unittest.cc
+++ b/components/viz/service/frame_sinks/video_capture/video_capture_overlay_unittest.cc
@@ -11,7 +11,6 @@
 #include "base/bind.h"
 #include "base/callback.h"
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_path.h"
 #include "base/numerics/safe_conversions.h"
 #include "base/path_service.h"
@@ -103,8 +102,8 @@
     CHECK(result.tryAllocPixels(info, info.minRowBytes()));
     SkCanvas canvas(result, SkSurfaceProps{});
     canvas.drawColor(kTestImageBackground);
-    for (size_t i = 0; i < base::size(kTestImageColors); ++i) {
-      const size_t idx = (i + cycle) % base::size(kTestImageColors);
+    for (size_t i = 0; i < std::size(kTestImageColors); ++i) {
+      const size_t idx = (i + cycle) % std::size(kTestImageColors);
       SkPaint paint;
       paint.setBlendMode(SkBlendMode::kSrc);
       paint.setColor(SkColor4f::FromColor(kTestImageColors[idx]),
diff --git a/components/viz/test/test_context_provider.cc b/components/viz/test/test_context_provider.cc
index 158bc2f..8cc2954 100644
--- a/components/viz/test/test_context_provider.cc
+++ b/components/viz/test/test_context_provider.cc
@@ -16,7 +16,6 @@
 #include "base/bind.h"
 #include "base/callback_helpers.h"
 #include "base/check.h"
-#include "base/cxx17_backports.h"
 #include "base/notreached.h"
 #include "build/build_config.h"
 #include "components/viz/common/gpu/context_cache_controller.h"
@@ -125,7 +124,7 @@
     return nullptr;
   }
   const GrGLubyte* GetStringi(GrGLenum name, GrGLuint i) override {
-    if (name == GL_EXTENSIONS && i < base::size(kExtensions))
+    if (name == GL_EXTENSIONS && i < std::size(kExtensions))
       return reinterpret_cast<const GLubyte*>(kExtensions[i]);
     return nullptr;
   }
@@ -158,7 +157,7 @@
  private:
   static std::string BuildExtensionString(std::string additional_extensions) {
     std::string extension_string = kExtensions[0];
-    for (size_t i = 1; i < base::size(kExtensions); ++i) {
+    for (size_t i = 1; i < std::size(kExtensions); ++i) {
       extension_string += " ";
       extension_string += kExtensions[i];
     }
diff --git a/components/webcrypto/algorithms/aes_cbc_unittest.cc b/components/webcrypto/algorithms/aes_cbc_unittest.cc
index 17763859..c3759e6 100644
--- a/components/webcrypto/algorithms/aes_cbc_unittest.cc
+++ b/components/webcrypto/algorithms/aes_cbc_unittest.cc
@@ -9,7 +9,6 @@
 #include <memory>
 #include <utility>
 
-#include "base/cxx17_backports.h"
 #include "base/values.h"
 #include "components/webcrypto/algorithm_dispatch.h"
 #include "components/webcrypto/algorithms/test_helpers.h"
@@ -171,7 +170,7 @@
   // Check key generation for each allowed key length.
   std::vector<blink::WebCryptoAlgorithm> algorithm;
   const uint16_t kKeyLength[] = {128, 256};
-  for (size_t key_length_i = 0; key_length_i < base::size(kKeyLength);
+  for (size_t key_length_i = 0; key_length_i < std::size(kKeyLength);
        ++key_length_i) {
     blink::WebCryptoKey key;
 
@@ -201,7 +200,7 @@
 TEST_F(WebCryptoAesCbcTest, GenerateKeyBadLength) {
   const uint16_t kKeyLen[] = {0, 127, 257};
   blink::WebCryptoKey key;
-  for (size_t i = 0; i < base::size(kKeyLen); ++i) {
+  for (size_t i = 0; i < std::size(kKeyLen); ++i) {
     SCOPED_TRACE(i);
     EXPECT_EQ(Status::ErrorGenerateAesKeyLength(),
               GenerateSecretKey(CreateAesCbcKeyGenAlgorithm(kKeyLen[i]), true,
@@ -443,7 +442,7 @@
 
   std::vector<uint8_t> key_bytes(16);
 
-  for (size_t i = 0; i < base::size(bad_usages); ++i) {
+  for (size_t i = 0; i < std::size(bad_usages); ++i) {
     SCOPED_TRACE(i);
 
     blink::WebCryptoKey key;
@@ -461,7 +460,7 @@
       blink::kWebCryptoKeyUsageDecrypt | blink::kWebCryptoKeyUsageVerify,
   };
 
-  for (size_t i = 0; i < base::size(bad_usages); ++i) {
+  for (size_t i = 0; i < std::size(bad_usages); ++i) {
     SCOPED_TRACE(i);
 
     blink::WebCryptoKey key;
diff --git a/components/webcrypto/algorithms/aes_ctr_unittest.cc b/components/webcrypto/algorithms/aes_ctr_unittest.cc
index 62ec5215..de633028 100644
--- a/components/webcrypto/algorithms/aes_ctr_unittest.cc
+++ b/components/webcrypto/algorithms/aes_ctr_unittest.cc
@@ -5,7 +5,6 @@
 #include <stddef.h>
 #include <stdint.h>
 
-#include "base/cxx17_backports.h"
 #include "base/values.h"
 #include "components/webcrypto/algorithm_dispatch.h"
 #include "components/webcrypto/algorithms/test_helpers.h"
@@ -85,7 +84,7 @@
   std::vector<uint8_t> input(32);
   std::vector<uint8_t> output;
 
-  for (size_t i = 0; i < base::size(kBadCounterBlockLengthBytes); ++i) {
+  for (size_t i = 0; i < std::size(kBadCounterBlockLengthBytes); ++i) {
     std::vector<uint8_t> bad_counter(kBadCounterBlockLengthBytes[i]);
 
     EXPECT_EQ(Status::ErrorIncorrectSizeAesCtrCounter(),
@@ -111,7 +110,7 @@
   std::vector<uint8_t> input(32);
   std::vector<uint8_t> output;
 
-  for (size_t i = 0; i < base::size(kBadCounterLengthBits); ++i) {
+  for (size_t i = 0; i < std::size(kBadCounterLengthBits); ++i) {
     uint8_t bad_counter_length_bits = kBadCounterLengthBits[i];
 
     EXPECT_EQ(Status::ErrorInvalidAesCtrCounterLength(),
@@ -149,7 +148,7 @@
 
   std::vector<uint8_t> output;
 
-  for (size_t i = 0; i < base::size(kStartCounter); ++i) {
+  for (size_t i = 0; i < std::size(kStartCounter); ++i) {
     std::vector<uint8_t> counter(16);
     counter[15] = kStartCounter[i];
 
diff --git a/components/webcrypto/algorithms/aes_gcm_unittest.cc b/components/webcrypto/algorithms/aes_gcm_unittest.cc
index 7f64590..89a1dff73 100644
--- a/components/webcrypto/algorithms/aes_gcm_unittest.cc
+++ b/components/webcrypto/algorithms/aes_gcm_unittest.cc
@@ -5,7 +5,6 @@
 #include <stddef.h>
 #include <stdint.h>
 
-#include "base/cxx17_backports.h"
 #include "base/values.h"
 #include "components/webcrypto/algorithm_dispatch.h"
 #include "components/webcrypto/algorithms/test_helpers.h"
@@ -99,7 +98,7 @@
 TEST_F(WebCryptoAesGcmTest, GenerateKeyBadLength) {
   const uint16_t kKeyLen[] = {0, 127, 257};
   blink::WebCryptoKey key;
-  for (size_t i = 0; i < base::size(kKeyLen); ++i) {
+  for (size_t i = 0; i < std::size(kKeyLen); ++i) {
     SCOPED_TRACE(i);
     EXPECT_EQ(Status::ErrorGenerateAesKeyLength(),
               GenerateSecretKey(CreateAesGcmKeyGenAlgorithm(kKeyLen[i]), true,
@@ -208,7 +207,7 @@
 
     // Try different incorrect tag lengths
     uint8_t kAlternateTagLengths[] = {0, 8, 96, 120, 128, 160, 255};
-    for (size_t tag_i = 0; tag_i < base::size(kAlternateTagLengths); ++tag_i) {
+    for (size_t tag_i = 0; tag_i < std::size(kAlternateTagLengths); ++tag_i) {
       unsigned int wrong_tag_size_bits = kAlternateTagLengths[tag_i];
       if (test_tag_size_bits == wrong_tag_size_bits)
         continue;
diff --git a/components/webcrypto/algorithms/aes_kw_unittest.cc b/components/webcrypto/algorithms/aes_kw_unittest.cc
index a96303d..3511d0a 100644
--- a/components/webcrypto/algorithms/aes_kw_unittest.cc
+++ b/components/webcrypto/algorithms/aes_kw_unittest.cc
@@ -7,7 +7,6 @@
 
 #include <memory>
 
-#include "base/cxx17_backports.h"
 #include "base/values.h"
 #include "components/webcrypto/algorithm_dispatch.h"
 #include "components/webcrypto/algorithms/test_helpers.h"
@@ -30,7 +29,7 @@
 TEST_F(WebCryptoAesKwTest, GenerateKeyBadLength) {
   const uint16_t kKeyLen[] = {0, 127, 257};
   blink::WebCryptoKey key;
-  for (size_t i = 0; i < base::size(kKeyLen); ++i) {
+  for (size_t i = 0; i < std::size(kKeyLen); ++i) {
     SCOPED_TRACE(i);
     EXPECT_EQ(Status::ErrorGenerateAesKeyLength(),
               GenerateSecretKey(CreateAesKwKeyGenAlgorithm(kKeyLen[i]), true,
@@ -447,7 +446,7 @@
 
   std::vector<uint8_t> key_bytes(16);
 
-  for (size_t i = 0; i < base::size(bad_usages); ++i) {
+  for (size_t i = 0; i < std::size(bad_usages); ++i) {
     SCOPED_TRACE(i);
 
     blink::WebCryptoKey key;
@@ -485,7 +484,7 @@
       "C2B7F19A32EE31372CD40C9C969B8CD67553E5AEA7FD1144874584E46ABCD79FDC308848"
       "B2DD8BD36A2D61062B9C5B8B499B8D6EF8EB320D87A614952B4EE771";
 
-  for (size_t i = 0; i < base::size(bad_usages); ++i) {
+  for (size_t i = 0; i < std::size(bad_usages); ++i) {
     SCOPED_TRACE(i);
 
     blink::WebCryptoKey key;
@@ -534,7 +533,7 @@
       "40C72DCF0AEA454113CC47457B13305B25507CBEAB9BDC8D8E0F867F9167F9DCEF0D9F9B"
       "30F2EE83CEDFD51136852C8A5939B768";
 
-  for (size_t i = 0; i < base::size(bad_usages); ++i) {
+  for (size_t i = 0; i < std::size(bad_usages); ++i) {
     SCOPED_TRACE(i);
 
     blink::WebCryptoKey key;
diff --git a/components/webcrypto/algorithms/ec.cc b/components/webcrypto/algorithms/ec.cc
index 13774c8..30b7b239e 100644
--- a/components/webcrypto/algorithms/ec.cc
+++ b/components/webcrypto/algorithms/ec.cc
@@ -5,9 +5,9 @@
 #include "components/webcrypto/algorithms/ec.h"
 
 #include <stddef.h>
+
 #include <utility>
 
-#include "base/cxx17_backports.h"
 #include "components/webcrypto/algorithms/asymmetric_key_util.h"
 #include "components/webcrypto/algorithms/util.h"
 #include "components/webcrypto/blink_key_handle.h"
@@ -81,7 +81,7 @@
   if (status.IsError())
     return status;
 
-  for (size_t i = 0; i < base::size(kJwkCrvMappings); ++i) {
+  for (size_t i = 0; i < std::size(kJwkCrvMappings); ++i) {
     if (kJwkCrvMappings[i].jwk_curve == jwk_curve) {
       *named_curve = kJwkCrvMappings[i].named_curve;
       return Status::Success();
@@ -94,7 +94,7 @@
 // Converts a WebCryptoNamedCurve to an equivalent JWK "crv".
 Status WebCryptoCurveToJwkCrv(blink::WebCryptoNamedCurve named_curve,
                               std::string* jwk_crv) {
-  for (size_t i = 0; i < base::size(kJwkCrvMappings); ++i) {
+  for (size_t i = 0; i < std::size(kJwkCrvMappings); ++i) {
     if (kJwkCrvMappings[i].named_curve == named_curve) {
       *jwk_crv = kJwkCrvMappings[i].jwk_curve;
       return Status::Success();
diff --git a/components/webcrypto/algorithms/rsa_oaep_unittest.cc b/components/webcrypto/algorithms/rsa_oaep_unittest.cc
index eb8f8ef..210c337 100644
--- a/components/webcrypto/algorithms/rsa_oaep_unittest.cc
+++ b/components/webcrypto/algorithms/rsa_oaep_unittest.cc
@@ -6,7 +6,6 @@
 #include <stdint.h>
 
 #include "base/base64url.h"
-#include "base/cxx17_backports.h"
 #include "components/webcrypto/algorithm_dispatch.h"
 #include "components/webcrypto/algorithms/test_helpers.h"
 #include "components/webcrypto/crypto_data.h"
@@ -128,7 +127,7 @@
                    {blink::kWebCryptoAlgorithmIdSha256, "RSA-OAEP-256"},
                    {blink::kWebCryptoAlgorithmIdSha384, "RSA-OAEP-384"},
                    {blink::kWebCryptoAlgorithmIdSha512, "RSA-OAEP-512"}};
-  for (size_t i = 0; i < base::size(kTestData); ++i) {
+  for (size_t i = 0; i < std::size(kTestData); ++i) {
     const TestData& test_data = kTestData[i];
     SCOPED_TRACE(test_data.expected_jwk_alg);
 
@@ -481,7 +480,7 @@
       {blink::kWebCryptoAlgorithmIdSha512, blink::kWebCryptoKeyUsageEncrypt,
        "RSA-OAEP-512"}};
 
-  for (size_t test_index = 0; test_index < base::size(kTests); ++test_index) {
+  for (size_t test_index = 0; test_index < std::size(kTests); ++test_index) {
     SCOPED_TRACE(test_index);
     const TestCase& test = kTests[test_index];
 
diff --git a/components/webcrypto/algorithms/rsa_ssa_unittest.cc b/components/webcrypto/algorithms/rsa_ssa_unittest.cc
index 04834ea..db13e2b 100644
--- a/components/webcrypto/algorithms/rsa_ssa_unittest.cc
+++ b/components/webcrypto/algorithms/rsa_ssa_unittest.cc
@@ -6,7 +6,6 @@
 #include <stdint.h>
 
 #include "base/check_op.h"
-#include "base/cxx17_backports.h"
 #include "base/values.h"
 #include "components/webcrypto/algorithm_dispatch.h"
 #include "components/webcrypto/algorithms/test_helpers.h"
@@ -485,7 +484,7 @@
 
   const std::vector<uint8_t> public_exponent = HexStringToBytes("010001");
 
-  for (size_t i = 0; i < base::size(kBadModulusBits); ++i) {
+  for (size_t i = 0; i < std::size(kBadModulusBits); ++i) {
     const unsigned int modulus_length_bits = kBadModulusBits[i];
     blink::WebCryptoAlgorithm algorithm = CreateRsaHashedKeyGenAlgorithm(
         blink::kWebCryptoAlgorithmIdRsaSsaPkcs1v1_5,
@@ -517,7 +516,7 @@
       "010000",  // 65536
   };
 
-  for (size_t i = 0; i < base::size(kPublicExponents); ++i) {
+  for (size_t i = 0; i < std::size(kPublicExponents); ++i) {
     SCOPED_TRACE(i);
     blink::WebCryptoAlgorithm algorithm = CreateRsaHashedKeyGenAlgorithm(
         blink::kWebCryptoAlgorithmIdRsaSsaPkcs1v1_5,
@@ -700,7 +699,7 @@
       blink::kWebCryptoKeyUsageEncrypt | blink::kWebCryptoKeyUsageDecrypt,
   };
 
-  for (size_t i = 0; i < base::size(bad_usages); ++i) {
+  for (size_t i = 0; i < std::size(bad_usages); ++i) {
     SCOPED_TRACE(i);
 
     blink::WebCryptoKey public_key;
@@ -730,7 +729,7 @@
   dict.RemoveKey("use");
   dict.SetString("alg", "RS256");
 
-  for (size_t i = 0; i < base::size(bad_usages); ++i) {
+  for (size_t i = 0; i < std::size(bad_usages); ++i) {
     SCOPED_TRACE(i);
 
     blink::WebCryptoKey public_key;
@@ -752,7 +751,7 @@
   const unsigned int modulus_length = 256;
   const std::vector<uint8_t> public_exponent = HexStringToBytes("010001");
 
-  for (size_t i = 0; i < base::size(bad_usages); ++i) {
+  for (size_t i = 0; i < std::size(bad_usages); ++i) {
     SCOPED_TRACE(i);
 
     blink::WebCryptoKey public_key;
@@ -888,7 +887,7 @@
                              {blink::kWebCryptoAlgorithmIdSha512,
                               blink::kWebCryptoKeyUsageVerify, "RS512"}};
 
-  for (size_t test_index = 0; test_index < base::size(kTests); ++test_index) {
+  for (size_t test_index = 0; test_index < std::size(kTests); ++test_index) {
     SCOPED_TRACE(test_index);
     const TestCase& test = kTests[test_index];
 
@@ -955,7 +954,7 @@
 
   // Fail if either "n" or "e" is not present or malformed.
   const std::string kKtyParmName[] = {"n", "e"};
-  for (size_t idx = 0; idx < base::size(kKtyParmName); ++idx) {
+  for (size_t idx = 0; idx < std::size(kKtyParmName); ++idx) {
     // Fail on missing parameter.
     dict.RemoveKey(kKtyParmName[idx]);
     EXPECT_NE(Status::Success(),
diff --git a/components/webcrypto/algorithms/test_helpers.cc b/components/webcrypto/algorithms/test_helpers.cc
index 87e2f54..93f5398 100644
--- a/components/webcrypto/algorithms/test_helpers.cc
+++ b/components/webcrypto/algorithms/test_helpers.cc
@@ -10,7 +10,6 @@
 
 #include "base/base64url.h"
 #include "base/check.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_util.h"
 #include "base/json/json_reader.h"
 #include "base/json/json_writer.h"
@@ -221,7 +220,7 @@
       {"sha-512", blink::kWebCryptoAlgorithmIdSha512},
   };
 
-  for (size_t i = 0; i < base::size(kDigestNameToId); ++i) {
+  for (size_t i = 0; i < std::size(kDigestNameToId); ++i) {
     if (kDigestNameToId[i].name == algorithm_name)
       return CreateAlgorithm(kDigestNameToId[i].id);
   }
diff --git a/components/webrtc/fake_ssl_client_socket.cc b/components/webrtc/fake_ssl_client_socket.cc
index ee11f24..e41bac58 100644
--- a/components/webrtc/fake_ssl_client_socket.cc
+++ b/components/webrtc/fake_ssl_client_socket.cc
@@ -6,13 +6,13 @@
 
 #include <stddef.h>
 #include <stdint.h>
+
 #include <cstdlib>
 #include <cstring>
 #include <utility>
 
 #include "base/bind.h"
 #include "base/compiler_specific.h"
-#include "base/cxx17_backports.h"
 #include "base/logging.h"
 #include "net/base/io_buffer.h"
 #include "net/base/net_errors.h"
@@ -81,12 +81,12 @@
 
 base::StringPiece FakeSSLClientSocket::GetSslClientHello() {
   return base::StringPiece(reinterpret_cast<const char*>(kSslClientHello),
-                           base::size(kSslClientHello));
+                           std::size(kSslClientHello));
 }
 
 base::StringPiece FakeSSLClientSocket::GetSslServerHello() {
   return base::StringPiece(reinterpret_cast<const char*>(kSslServerHello),
-                           base::size(kSslServerHello));
+                           std::size(kSslServerHello));
 }
 
 FakeSSLClientSocket::FakeSSLClientSocket(
@@ -94,10 +94,10 @@
     : transport_socket_(std::move(transport_socket)),
       next_handshake_state_(STATE_NONE),
       handshake_completed_(false),
-      write_buf_(NewDrainableIOBufferWithSize(base::size(kSslClientHello))),
-      read_buf_(NewDrainableIOBufferWithSize(base::size(kSslServerHello))) {
+      write_buf_(NewDrainableIOBufferWithSize(std::size(kSslClientHello))),
+      read_buf_(NewDrainableIOBufferWithSize(std::size(kSslServerHello))) {
   CHECK(transport_socket_.get());
-  std::memcpy(write_buf_->data(), kSslClientHello, base::size(kSslClientHello));
+  std::memcpy(write_buf_->data(), kSslClientHello, std::size(kSslClientHello));
 }
 
 FakeSSLClientSocket::~FakeSSLClientSocket() {}
@@ -301,7 +301,7 @@
     return net::ERR_UNEXPECTED;
   }
   const uint8_t* expected_data_start =
-      &kSslServerHello[base::size(kSslServerHello) -
+      &kSslServerHello[std::size(kSslServerHello) -
                        read_buf_->BytesRemaining()];
   if (std::memcmp(expected_data_start, read_buf_->data(), read) != 0) {
     return net::ERR_UNEXPECTED;
diff --git a/components/webrtc/fake_ssl_client_socket_unittest.cc b/components/webrtc/fake_ssl_client_socket_unittest.cc
index ca9f06e..46468bd 100644
--- a/components/webrtc/fake_ssl_client_socket_unittest.cc
+++ b/components/webrtc/fake_ssl_client_socket_unittest.cc
@@ -12,7 +12,6 @@
 #include <utility>
 #include <vector>
 
-#include "base/cxx17_backports.h"
 #include "base/memory/ref_counted.h"
 #include "base/test/task_environment.h"
 #include "net/base/completion_once_callback.h"
@@ -158,9 +157,9 @@
       AddChunkedOps(ssl_server_hello, read_chunk_size, mode, &reads);
       AddChunkedOps(ssl_client_hello, write_chunk_size, mode, &writes);
       reads.push_back(
-          net::MockRead(mode, kReadTestData, base::size(kReadTestData)));
+          net::MockRead(mode, kReadTestData, std::size(kReadTestData)));
       writes.push_back(
-          net::MockWrite(mode, kWriteTestData, base::size(kWriteTestData)));
+          net::MockWrite(mode, kWriteTestData, std::size(kWriteTestData)));
     }
     SetData(mock_connect, &reads, &writes);
 
@@ -175,7 +174,7 @@
       }
       ExpectStatus(mode, net::OK, status, &connect_callback);
       if (fake_ssl_client_socket.IsConnected()) {
-        int read_len = base::size(kReadTestData);
+        int read_len = std::size(kReadTestData);
         int read_buf_len = 2 * read_len;
         auto read_buf = base::MakeRefCounted<net::IOBuffer>(read_buf_len);
 
@@ -188,9 +187,9 @@
             base::MakeRefCounted<net::StringIOBuffer>(kWriteTestData);
         net::TestCompletionCallback write_callback;
         int write_status = fake_ssl_client_socket.Write(
-            write_buf.get(), base::size(kWriteTestData),
+            write_buf.get(), std::size(kWriteTestData),
             write_callback.callback(), TRAFFIC_ANNOTATION_FOR_TESTS);
-        ExpectStatus(mode, base::size(kWriteTestData), write_status,
+        ExpectStatus(mode, std::size(kWriteTestData), write_status,
                      &write_callback);
       } else {
         ADD_FAILURE();
@@ -239,7 +238,7 @@
         if (error == ERR_MALFORMED_SERVER_HELLO) {
           static const char kBadData[] = "BAD_DATA";
           reads[index].data = kBadData;
-          reads[index].data_len = base::size(kBadData);
+          reads[index].data_len = std::size(kBadData);
         } else {
           reads[index].result = error;
           reads[index].data = NULL;
diff --git a/components/webrtc/thread_wrapper.cc b/components/webrtc/thread_wrapper.cc
index 3789fc1..27baeaa 100644
--- a/components/webrtc/thread_wrapper.cc
+++ b/components/webrtc/thread_wrapper.cc
@@ -6,11 +6,11 @@
 
 #include <stddef.h>
 #include <stdint.h>
+
 #include <memory>
 
 #include "base/bind.h"
 #include "base/callback_helpers.h"
-#include "base/cxx17_backports.h"
 #include "base/lazy_instance.h"
 #include "base/memory/raw_ptr.h"
 #include "base/sequence_checker.h"
@@ -272,7 +272,7 @@
   while (!pending_send.done_event.IsSignaled()) {
     base::WaitableEvent* events[] = {&pending_send.done_event,
                                      &current_thread->pending_send_event_};
-    size_t event = base::WaitableEvent::WaitMany(events, base::size(events));
+    size_t event = base::WaitableEvent::WaitMany(events, std::size(events));
     DCHECK(event == 0 || event == 1);
 
     if (event == 1)
diff --git a/components/zoom/page_zoom_constants.cc b/components/zoom/page_zoom_constants.cc
index 5a8437f..290643d3 100644
--- a/components/zoom/page_zoom_constants.cc
+++ b/components/zoom/page_zoom_constants.cc
@@ -4,7 +4,6 @@
 
 #include "components/zoom/page_zoom_constants.h"
 
-#include "base/cxx17_backports.h"
 #include "base/json/json_writer.h"
 #include "base/values.h"
 
@@ -13,7 +12,7 @@
 const double kPresetZoomFactors[] = {0.25, 1 / 3.0, 0.5, 2 / 3.0, 0.75, 0.8,
                                      0.9, 1.0, 1.1, 1.25, 1.5, 1.75, 2.0, 2.5,
                                      3.0, 4.0, 5.0};
-const std::size_t kPresetZoomFactorsSize = base::size(kPresetZoomFactors);
+const std::size_t kPresetZoomFactorsSize = std::size(kPresetZoomFactors);
 
 std::string GetPresetZoomFactorsAsJSON() {
   base::Value zoom_factors(base::Value::Type::LIST);
diff --git a/components/zucchini/disassembler_ztf_unittest.cc b/components/zucchini/disassembler_ztf_unittest.cc
index 9b53e625..3703b563b 100644
--- a/components/zucchini/disassembler_ztf_unittest.cc
+++ b/components/zucchini/disassembler_ztf_unittest.cc
@@ -13,7 +13,6 @@
 #include <utility>
 #include <vector>
 
-#include "base/cxx17_backports.h"
 #include "base/strings/string_piece.h"
 #include "components/zucchini/buffer_view.h"
 #include "components/zucchini/element_detection.h"
@@ -30,7 +29,7 @@
 txTZ
 TRAILING DATA)";
 // -1 to exclude null byte.
-constexpr size_t kNormalTextExtraBytes = base::size("TRAILING DATA") - 1;
+constexpr size_t kNormalTextExtraBytes = std::size("TRAILING DATA") - 1;
 
 constexpr char kOutOfBoundsText[] = R"(ZTxt<1,1>
 Hello World!
diff --git a/content/app/content_main_runner_impl.cc b/content/app/content_main_runner_impl.cc
index 9d222388..abb29771 100644
--- a/content/app/content_main_runner_impl.cc
+++ b/content/app/content_main_runner_impl.cc
@@ -292,7 +292,7 @@
       switches::kVModule,
   };
   cmd_line->CopySwitchesFrom(*base::CommandLine::ForCurrentProcess(),
-                             kForwardSwitches, base::size(kForwardSwitches));
+                             kForwardSwitches, std::size(kForwardSwitches));
 
   GetContentClient()->browser()->AppendExtraCommandLineSwitches(cmd_line, -1);
 
@@ -606,7 +606,7 @@
 
   mojo::core::InitFeatures();
 
-  for (size_t i = 0; i < base::size(kMainFunctions); ++i) {
+  for (size_t i = 0; i < std::size(kMainFunctions); ++i) {
     if (process_type == kMainFunctions[i].name)
       return kMainFunctions[i].function(std::move(main_params));
   }
@@ -673,7 +673,7 @@
     base::HangWatcher::GetInstance()->Start();
   }
 
-  for (size_t i = 0; i < base::size(kMainFunctions); ++i) {
+  for (size_t i = 0; i < std::size(kMainFunctions); ++i) {
     if (process_type == kMainFunctions[i].name) {
       auto exit_code =
           delegate->RunProcess(process_type, std::move(main_function_params));
diff --git a/content/app_shim_remote_cocoa/window_occlusion_browsertest_mac.mm b/content/app_shim_remote_cocoa/window_occlusion_browsertest_mac.mm
index 51e6103..879a31d 100644
--- a/content/app_shim_remote_cocoa/window_occlusion_browsertest_mac.mm
+++ b/content/app_shim_remote_cocoa/window_occlusion_browsertest_mac.mm
@@ -317,7 +317,7 @@
   const NSSize window_offsets[] = {
       {1.0, 0.0}, {-1.0, 0.0}, {0.0, 1.0}, {0.0, -1.0}};
   NSRect window_b_frame = [window_b frame];
-  for (size_t i = 0; i < base::size(window_offsets); i++) {
+  for (size_t i = 0; i < std::size(window_offsets); i++) {
     // Move window b so that it no longer completely covers
     // window_a's webcontents.
     NSRect offset_window_frame = NSOffsetRect(
diff --git a/content/browser/accessibility/accessibility_event_recorder_auralinux.cc b/content/browser/accessibility/accessibility_event_recorder_auralinux.cc
index ed49f1cb..08a7fd46 100644
--- a/content/browser/accessibility/accessibility_event_recorder_auralinux.cc
+++ b/content/browser/accessibility/accessibility_event_recorder_auralinux.cc
@@ -8,7 +8,6 @@
 #include <atk/atkutil.h>
 #include <atspi/atspi.h>
 
-#include "base/cxx17_backports.h"
 #include "base/no_destructor.h"
 #include "base/process/process_handle.h"
 #include "base/strings/stringprintf.h"
@@ -294,7 +293,7 @@
       atspi_event_listener_new(OnATSPIEventReceived, this, nullptr);
 
   GError* error = nullptr;
-  for (size_t i = 0; i < base::size(kEventNames); i++) {
+  for (size_t i = 0; i < std::size(kEventNames); i++) {
     atspi_event_listener_register(atspi_event_listener_, kEventNames[i],
                                   &error);
     if (error) {
@@ -309,7 +308,7 @@
     return;
 
   GError* error = nullptr;
-  for (size_t i = 0; i < base::size(kEventNames); i++) {
+  for (size_t i = 0; i < std::size(kEventNames); i++) {
     atspi_event_listener_deregister(atspi_event_listener_, kEventNames[i],
                                     nullptr);
     if (error) {
diff --git a/content/browser/accessibility/accessibility_tree_formatter_android.cc b/content/browser/accessibility/accessibility_tree_formatter_android.cc
index 0e323cf..65f433d 100644
--- a/content/browser/accessibility/accessibility_tree_formatter_android.cc
+++ b/content/browser/accessibility/accessibility_tree_formatter_android.cc
@@ -8,7 +8,6 @@
 
 #include "base/android/jni_android.h"
 #include "base/android/jni_string.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_path.h"
 #include "base/json/json_writer.h"
 #include "base/strings/string_number_conversions.h"
@@ -256,14 +255,14 @@
         &line);
   }
 
-  for (unsigned i = 0; i < base::size(BOOL_ATTRIBUTES); i++) {
+  for (unsigned i = 0; i < std::size(BOOL_ATTRIBUTES); i++) {
     const char* attribute_name = BOOL_ATTRIBUTES[i];
     absl::optional<bool> value = dict.FindBoolPath(attribute_name);
     if (value && *value)
       WriteAttribute(true, attribute_name, &line);
   }
 
-  for (unsigned i = 0; i < base::size(STRING_ATTRIBUTES); i++) {
+  for (unsigned i = 0; i < std::size(STRING_ATTRIBUTES); i++) {
     const char* attribute_name = STRING_ATTRIBUTES[i];
     std::string value;
     if (!dict.GetString(attribute_name, &value) || value.empty())
@@ -272,7 +271,7 @@
                    &line);
   }
 
-  for (unsigned i = 0; i < base::size(INT_ATTRIBUTES); i++) {
+  for (unsigned i = 0; i < std::size(INT_ATTRIBUTES); i++) {
     const char* attribute_name = INT_ATTRIBUTES[i];
     int value = dict.FindIntKey(attribute_name).value_or(0);
     if (value == 0)
@@ -280,7 +279,7 @@
     WriteAttribute(true, StringPrintf("%s=%d", attribute_name, value), &line);
   }
 
-  for (unsigned i = 0; i < base::size(ACTION_ATTRIBUTES); i++) {
+  for (unsigned i = 0; i < std::size(ACTION_ATTRIBUTES); i++) {
     const char* attribute_name = ACTION_ATTRIBUTES[i];
     absl::optional<bool> value = dict.FindBoolPath(attribute_name);
     if (value && *value) {
diff --git a/content/browser/accessibility/accessibility_tree_formatter_fuchsia.cc b/content/browser/accessibility/accessibility_tree_formatter_fuchsia.cc
index dda8d77..df9d180 100644
--- a/content/browser/accessibility/accessibility_tree_formatter_fuchsia.cc
+++ b/content/browser/accessibility/accessibility_tree_formatter_fuchsia.cc
@@ -398,14 +398,14 @@
   node.GetString("role", &role_value);
   WriteAttribute(true, role_value, &line);
 
-  for (unsigned i = 0; i < base::size(kBoolAttributes); i++) {
+  for (unsigned i = 0; i < std::size(kBoolAttributes); i++) {
     const char* bool_attribute = kBoolAttributes[i];
     absl::optional<bool> value = node.FindBoolPath(bool_attribute);
     if (value && *value)
       WriteAttribute(/*include_by_default=*/true, bool_attribute, &line);
   }
 
-  for (unsigned i = 0; i < base::size(kStringAttributes); i++) {
+  for (unsigned i = 0; i < std::size(kStringAttributes); i++) {
     const char* string_attribute = kStringAttributes[i];
     std::string value;
     if (!node.GetString(string_attribute, &value) || value.empty())
@@ -416,7 +416,7 @@
         base::StringPrintf("%s='%s'", string_attribute, value.c_str()), &line);
   }
 
-  for (unsigned i = 0; i < base::size(kIntAttributes); i++) {
+  for (unsigned i = 0; i < std::size(kIntAttributes); i++) {
     const char* attribute_name = kIntAttributes[i];
     int value = node.FindIntKey(attribute_name).value_or(0);
     if (value == 0)
@@ -425,7 +425,7 @@
                    &line);
   }
 
-  for (unsigned i = 0; i < base::size(kDoubleAttributes); i++) {
+  for (unsigned i = 0; i < std::size(kDoubleAttributes); i++) {
     const char* attribute_name = kDoubleAttributes[i];
     int value = node.FindIntKey(attribute_name).value_or(0);
     if (value == 0)
diff --git a/content/browser/accessibility/browser_accessibility_state_impl_win.cc b/content/browser/accessibility/browser_accessibility_state_impl_win.cc
index a21ca14..88a0c4058 100644
--- a/content/browser/accessibility/browser_accessibility_state_impl_win.cc
+++ b/content/browser/accessibility/browser_accessibility_state_impl_win.cc
@@ -11,7 +11,6 @@
 
 #include <memory>
 
-#include "base/cxx17_backports.h"
 #include "base/files/file_path.h"
 #include "base/metrics/histogram_macros.h"
 #include "base/no_destructor.h"
@@ -204,7 +203,7 @@
   bool satogo = false;  // Very few users -- do not need uniques
   for (size_t i = 0; i < module_count; i++) {
     TCHAR filename[MAX_PATH];
-    GetModuleFileName(modules[i], filename, base::size(filename));
+    GetModuleFileName(modules[i], filename, std::size(filename));
     std::string module_name(base::FilePath(filename).BaseName().AsUTF8Unsafe());
     if (base::LowerCaseEqualsASCII(module_name, "fsdomsrv.dll"))
       g_jaws = true;
diff --git a/content/browser/android/java/java_type_unittest.cc b/content/browser/android/java/java_type_unittest.cc
index 4407aefd..16f9fb8 100644
--- a/content/browser/android/java/java_type_unittest.cc
+++ b/content/browser/android/java/java_type_unittest.cc
@@ -8,7 +8,6 @@
 
 #include <memory>
 
-#include "base/cxx17_backports.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace content {
@@ -38,7 +37,7 @@
      "Ljava/lang/Object;"},
     {"my.nested.Type$Foo", JavaType::TypeObject, "my/nested/Type$Foo",
      "Lmy/nested/Type$Foo;"}};
-  for (size_t i = 0; i < base::size(scalar_types); ++i) {
+  for (size_t i = 0; i < std::size(scalar_types); ++i) {
     JavaType jt = JavaType::CreateFromBinaryName(scalar_types[i].binary_type);
     EXPECT_EQ(scalar_types[i].java_type, jt.type);
     EXPECT_FALSE(jt.inner_type);
diff --git a/content/browser/android/message_port_descriptor.cc b/content/browser/android/message_port_descriptor.cc
index bed390d..c2875fb0 100644
--- a/content/browser/android/message_port_descriptor.cc
+++ b/content/browser/android/message_port_descriptor.cc
@@ -7,11 +7,9 @@
 // /third_party/blink/public/common/messaging/message_port_descriptor.h.
 
 #include "third_party/blink/public/common/messaging/message_port_descriptor.h"
-
 #include "base/android/jni_android.h"
 #include "base/android/jni_array.h"
 #include "base/android/scoped_java_ref.h"
-#include "base/cxx17_backports.h"
 #include "base/unguessable_token.h"
 #include "content/public/android/content_jni_headers/AppWebMessagePortDescriptor_jni.h"
 #include "mojo/public/cpp/system/message_pipe.h"
@@ -43,7 +41,7 @@
   uint64_t pointers[2] = {reinterpret_cast<uint64_t>(port0),
                           reinterpret_cast<uint64_t>(port1)};
   return base::android::ToJavaLongArray(
-      env, reinterpret_cast<const int64_t*>(pointers), base::size(pointers));
+      env, reinterpret_cast<const int64_t*>(pointers), std::size(pointers));
 }
 
 JNI_EXPORT jlong JNI_AppWebMessagePortDescriptor_Create(JNIEnv* env,
@@ -134,8 +132,7 @@
                             id.GetLowForSerialization(),
                             id.GetHighForSerialization(), sequence_number};
   return base::android::ToJavaLongArray(
-      env, reinterpret_cast<const int64_t*>(serialized),
-      base::size(serialized));
+      env, reinterpret_cast<const int64_t*>(serialized), std::size(serialized));
 }
 
 JNI_EXPORT void JNI_AppWebMessagePortDescriptor_CloseAndDestroy(
@@ -171,4 +168,4 @@
   // Reset it and finally delete the object.
   message_port_descriptor->Reset();
   delete message_port_descriptor;
-}
\ No newline at end of file
+}
diff --git a/content/browser/attribution_reporting/attribution_report.cc b/content/browser/attribution_reporting/attribution_report.cc
index 4141905..e18449b 100644
--- a/content/browser/attribution_reporting/attribution_report.cc
+++ b/content/browser/attribution_reporting/attribution_report.cc
@@ -10,7 +10,6 @@
 
 #include "base/check.h"
 #include "base/check_op.h"
-#include "base/cxx17_backports.h"
 #include "base/memory/raw_ptr.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/values.h"
@@ -242,7 +241,7 @@
   ctx->Update(kVersion, sizeof(kVersion));
 
   std::string output(crypto::kSHA256Length, 0);
-  ctx->Finish(base::data(output), output.size());
+  ctx->Finish(std::data(output), output.size());
 
   return output;
 }
diff --git a/content/browser/blob_storage/blob_url_unittest.cc b/content/browser/blob_storage/blob_url_unittest.cc
index c3ee2eb..daaaac2 100644
--- a/content/browser/blob_storage/blob_url_unittest.cc
+++ b/content/browser/blob_storage/blob_url_unittest.cc
@@ -8,7 +8,6 @@
 #include <memory>
 
 #include "base/bind.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
 #include "base/files/scoped_temp_dir.h"
@@ -136,12 +135,12 @@
     const char kFilename1[] = "FileSystemFile1.dat";
     temp_file_system_file1_ = GetFileSystemURL(kFilename1);
     WriteFileSystemFile(kFilename1, kTestFileSystemFileData1,
-                        base::size(kTestFileSystemFileData1) - 1,
+                        std::size(kTestFileSystemFileData1) - 1,
                         &temp_file_system_file_modification_time1_);
     const char kFilename2[] = "FileSystemFile2.dat";
     temp_file_system_file2_ = GetFileSystemURL(kFilename2);
     WriteFileSystemFile(kFilename2, kTestFileSystemFileData2,
-                        base::size(kTestFileSystemFileData2) - 1,
+                        std::size(kTestFileSystemFileData2) - 1,
                         &temp_file_system_file_modification_time2_);
   }
 
@@ -355,13 +354,13 @@
 
 TEST_F(BlobURLTest, TestGetSimpleDataRequest) {
   blob_data_->AppendData(kTestData1);
-  TestSuccessNonrangeRequest(kTestData1, base::size(kTestData1) - 1);
+  TestSuccessNonrangeRequest(kTestData1, std::size(kTestData1) - 1);
 }
 
 TEST_F(BlobURLTest, TestGetSimpleFileRequest) {
   blob_data_->AppendFile(temp_file1_, 0, std::numeric_limits<uint64_t>::max(),
                          base::Time());
-  TestSuccessNonrangeRequest(kTestFileData1, base::size(kTestFileData1) - 1);
+  TestSuccessNonrangeRequest(kTestFileData1, std::size(kTestFileData1) - 1);
 }
 
 TEST_F(BlobURLTest, TestGetLargeFileRequest) {
@@ -405,7 +404,7 @@
       0, std::numeric_limits<uint64_t>::max(), base::Time(),
       file_system_context_);
   TestSuccessNonrangeRequest(kTestFileSystemFileData1,
-                             base::size(kTestFileSystemFileData1) - 1);
+                             std::size(kTestFileSystemFileData1) - 1);
 }
 
 TEST_F(BlobURLTest, TestGetLargeFileSystemFileRequest) {
@@ -470,7 +469,7 @@
       base::MakeRefCounted<storage::FakeBlobDataHandle>(kTestDataHandleData1,
                                                         ""));
   TestSuccessNonrangeRequest(kTestDataHandleData1,
-                             base::size(kTestDataHandleData1) - 1);
+                             std::size(kTestDataHandleData1) - 1);
 }
 
 TEST_F(BlobURLTest, TestGetComplicatedDataFileAndDiskCacheRequest) {
@@ -570,7 +569,7 @@
   expected_status_code_ = 200;
   expected_response_ = kTestDataHandleData2;
   TestRequest("GET", net::HttpRequestHeaders());
-  EXPECT_EQ(static_cast<int>(base::size(kTestDataHandleData2) - 1),
+  EXPECT_EQ(static_cast<int>(std::size(kTestDataHandleData2) - 1),
             response_headers_->GetContentLength());
 
   EXPECT_EQ(std::string(kTestDiskCacheSideData), response_metadata_);
@@ -583,7 +582,7 @@
   expected_status_code_ = 200;
   expected_response_ = kTestDataHandleData2;
   TestRequest("GET", net::HttpRequestHeaders());
-  EXPECT_EQ(static_cast<int>(base::size(kTestDataHandleData2) - 1),
+  EXPECT_EQ(static_cast<int>(std::size(kTestDataHandleData2) - 1),
             response_headers_->GetContentLength());
 
   EXPECT_TRUE(response_metadata_.empty());
diff --git a/content/browser/browser_child_process_host_impl.cc b/content/browser/browser_child_process_host_impl.cc
index de662f5..d9dcf1b 100644
--- a/content/browser/browser_child_process_host_impl.cc
+++ b/content/browser/browser_child_process_host_impl.cc
@@ -10,7 +10,6 @@
 #include "base/bind.h"
 #include "base/clang_profiling_buildflags.h"
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "base/debug/dump_without_crashing.h"
 #include "base/feature_list.h"
 #include "base/files/file_path.h"
@@ -303,7 +302,7 @@
       switches::kVModule,
   };
   cmd_line->CopySwitchesFrom(browser_command_line, kForwardSwitches,
-                             base::size(kForwardSwitches));
+                             std::size(kForwardSwitches));
 
   // All processes should have a non-empty metrics name.
   if (data_.metrics_name.empty())
diff --git a/content/browser/browser_main_loop.cc b/content/browser/browser_main_loop.cc
index 4209582..67ea617 100644
--- a/content/browser/browser_main_loop.cc
+++ b/content/browser/browser_main_loop.cc
@@ -16,7 +16,6 @@
 #include "base/base_switches.h"
 #include "base/bind.h"
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "base/feature_list.h"
 #include "base/location.h"
 #include "base/logging.h"
@@ -284,7 +283,7 @@
   // Register GLib-handled assertions to go through our logging system.
   const char* const kLogDomains[] = {nullptr, "Gtk", "Gdk", "GLib",
                                      "GLib-GObject"};
-  for (size_t i = 0; i < base::size(kLogDomains); i++) {
+  for (size_t i = 0; i < std::size(kLogDomains); i++) {
     g_log_set_handler(
         kLogDomains[i],
         static_cast<GLogLevelFlags>(G_LOG_FLAG_RECURSION | G_LOG_FLAG_FATAL |
diff --git a/content/browser/browser_url_handler_impl.cc b/content/browser/browser_url_handler_impl.cc
index 90aa546..b5517a4 100644
--- a/content/browser/browser_url_handler_impl.cc
+++ b/content/browser/browser_url_handler_impl.cc
@@ -6,7 +6,6 @@
 
 #include <stddef.h>
 
-#include "base/cxx17_backports.h"
 #include "base/ranges/algorithm.h"
 #include "base/strings/string_util.h"
 #include "content/browser/renderer_host/debug_urls.h"
@@ -39,7 +38,7 @@
     // Merge all the schemes for which view-source is allowed by default, with
     // the view-source schemes defined by the ContentBrowserClient.
     std::vector<std::string> all_allowed_sub_schemes;
-    for (size_t i = 0; i < base::size(default_allowed_sub_schemes); ++i)
+    for (size_t i = 0; i < std::size(default_allowed_sub_schemes); ++i)
       all_allowed_sub_schemes.push_back(default_allowed_sub_schemes[i]);
     GetContentClient()->browser()->GetAdditionalViewSourceSchemes(
         &all_allowed_sub_schemes);
diff --git a/content/browser/browsing_data/clear_site_data_handler_unittest.cc b/content/browser/browsing_data/clear_site_data_handler_unittest.cc
index 1c8db91e..bcf1b87 100644
--- a/content/browser/browsing_data/clear_site_data_handler_unittest.cc
+++ b/content/browser/browsing_data/clear_site_data_handler_unittest.cc
@@ -479,7 +479,7 @@
 
     // |NetworkServiceClient| creates a new |ClearSiteDataHandler| for each
     // navigation, redirect, or subresource header responses.
-    for (size_t i = 0; i < base::size(kTestCases); i++) {
+    for (size_t i = 0; i < std::size(kTestCases); i++) {
       TestHandler handler(
           base::BindRepeating(&FakeBrowserContextGetter),
           base::BindRepeating(&FakeWebContentsGetter), GURL(kTestCases[i].url),
diff --git a/content/browser/code_cache/generated_code_cache.cc b/content/browser/code_cache/generated_code_cache.cc
index f8763f8..b15a04e4 100644
--- a/content/browser/code_cache/generated_code_cache.cc
+++ b/content/browser/code_cache/generated_code_cache.cc
@@ -195,7 +195,7 @@
 }
 
 std::string GeneratedCodeCache::GetResourceURLFromKey(const std::string& key) {
-  constexpr size_t kPrefixStringLen = base::size(kPrefix) - 1;
+  constexpr size_t kPrefixStringLen = std::size(kPrefix) - 1;
   // |key| may not have a prefix and separator (e.g. for deduplicated entries).
   // In that case, return an empty string.
   const size_t separator_index = key.find(kSeparator);
@@ -404,8 +404,8 @@
     uint8_t result[crypto::kSHA256Length];
     crypto::SHA256HashString(
         base::StringPiece(reinterpret_cast<char*>(copy.data()), copy.size()),
-        result, base::size(result));
-    std::string checksum_key = base::HexEncode(result, base::size(result));
+        result, std::size(result));
+    std::string checksum_key = base::HexEncode(result, std::size(result));
     small_buffer = base::MakeRefCounted<net::IOBufferWithSize>(
         kHeaderSizeInBytes + kSHAKeySizeInBytes);
     // Copy |checksum_key| into the small buffer.
diff --git a/content/browser/devtools/devtools_io_context.cc b/content/browser/devtools/devtools_io_context.cc
index 94961d6..d9183b7 100644
--- a/content/browser/devtools/devtools_io_context.cc
+++ b/content/browser/devtools/devtools_io_context.cc
@@ -5,7 +5,6 @@
 #include "content/browser/devtools/devtools_io_context.h"
 
 #include "base/bind.h"
-#include "base/cxx17_backports.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/task/sequenced_task_runner.h"
 #include "content/browser/blob_storage/chrome_blob_storage_context.h"
@@ -67,7 +66,7 @@
   static const char* kTextMIMETypePrefixes[] = {
       "text/", "application/x-javascript", "application/json",
       "application/xml"};
-  for (size_t i = 0; i < base::size(kTextMIMETypePrefixes); ++i) {
+  for (size_t i = 0; i < std::size(kTextMIMETypePrefixes); ++i) {
     if (base::StartsWith(mime_type, kTextMIMETypePrefixes[i],
                          base::CompareCase::INSENSITIVE_ASCII))
       return true;
diff --git a/content/browser/devtools/protocol/page_handler.cc b/content/browser/devtools/protocol/page_handler.cc
index aa1fba3..1232949 100644
--- a/content/browser/devtools/protocol/page_handler.cc
+++ b/content/browser/devtools/protocol/page_handler.cc
@@ -1413,6 +1413,9 @@
           CacheControlNoStoreHTTPOnlyCookieModified;
     case Reason::kNoResponseHead:
       return Page::BackForwardCacheNotRestoredReasonEnum::NoResponseHead;
+    case Reason::kActivationNavigationsDisallowedForBug1234857:
+      return Page::BackForwardCacheNotRestoredReasonEnum::
+          ActivationNavigationsDisallowedForBug1234857;
     case Reason::kBlocklistedFeatures:
       // Blocklisted features should be handled separately and be broken down
       // into sub reasons.
@@ -1698,6 +1701,7 @@
       return Page::BackForwardCacheNotRestoredReasonTypeEnum::PageSupportNeeded;
     case Reason::kNetworkRequestDatapipeDrainedAsBytesConsumer:
     case Reason::kUnknown:
+    case Reason::kActivationNavigationsDisallowedForBug1234857:
       return Page::BackForwardCacheNotRestoredReasonTypeEnum::SupportPending;
     case Reason::kBlocklistedFeatures:
       NOTREACHED();
diff --git a/content/browser/download/save_package_unittest.cc b/content/browser/download/save_package_unittest.cc
index 1e6e07db..060fd0e 100644
--- a/content/browser/download/save_package_unittest.cc
+++ b/content/browser/download/save_package_unittest.cc
@@ -2,12 +2,13 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "content/browser/download/save_package.h"
+
 #include <stddef.h>
 #include <stdint.h>
 
 #include <string>
 
-#include "base/cxx17_backports.h"
 #include "base/files/file_path.h"
 #include "base/files/scoped_temp_dir.h"
 #include "base/run_loop.h"
@@ -15,7 +16,6 @@
 #include "base/strings/utf_string_conversions.h"
 #include "build/build_config.h"
 #include "content/browser/download/save_file_manager.h"
-#include "content/browser/download/save_package.h"
 #include "content/public/browser/browser_context.h"
 #include "content/public/common/url_constants.h"
 #include "content/test/test_render_view_host.h"
@@ -187,7 +187,7 @@
 };
 
 TEST_F(SavePackageTest, TestSuccessfullyGenerateSavePackageFilename) {
-  for (size_t i = 0; i < base::size(kGeneratedFiles); ++i) {
+  for (size_t i = 0; i < std::size(kGeneratedFiles); ++i) {
     base::FilePath::StringType file_name;
     bool ok = GetGeneratedFilename(true,
                                    kGeneratedFiles[i].disposition,
@@ -200,7 +200,7 @@
 }
 
 TEST_F(SavePackageTest, TestUnSuccessfullyGenerateSavePackageFilename) {
-  for (size_t i = 0; i < base::size(kGeneratedFiles); ++i) {
+  for (size_t i = 0; i < std::size(kGeneratedFiles); ++i) {
     base::FilePath::StringType file_name;
     bool ok = GetGeneratedFilename(false,
                                    kGeneratedFiles[i].disposition,
diff --git a/content/browser/file_system/file_system_url_loader_factory_browsertest.cc b/content/browser/file_system/file_system_url_loader_factory_browsertest.cc
index 7e881ad..ab54e260 100644
--- a/content/browser/file_system/file_system_url_loader_factory_browsertest.cc
+++ b/content/browser/file_system/file_system_url_loader_factory_browsertest.cc
@@ -685,7 +685,7 @@
 
 IN_PROC_BROWSER_TEST_P(FileSystemURLLoaderFactoryTest, FileTest) {
   base::ScopedAllowBlockingForTesting allow_blocking;
-  WriteFile("file1.dat", kTestFileData, base::size(kTestFileData) - 1);
+  WriteFile("file1.dat", kTestFileData, std::size(kTestFileData) - 1);
   auto client = TestLoad(CreateFileSystemURL("file1.dat"));
 
   EXPECT_TRUE(client->has_received_response());
@@ -707,7 +707,7 @@
   IsolateAllSitesForTesting(base::CommandLine::ForCurrentProcess());
 
   base::ScopedAllowBlockingForTesting allow_blocking;
-  WriteFile("file1.dat", kTestFileData, base::size(kTestFileData) - 1);
+  WriteFile("file1.dat", kTestFileData, std::size(kTestFileData) - 1);
 
   // Navigate main frame to foo.com.
   ASSERT_TRUE(embedded_test_server()->Start());
@@ -781,7 +781,7 @@
 IN_PROC_BROWSER_TEST_P(FileSystemURLLoaderFactoryTest,
                        FileTestMultipleRangesNotSupported) {
   base::ScopedAllowBlockingForTesting allow_blocking;
-  WriteFile("file1.dat", kTestFileData, base::size(kTestFileData) - 1);
+  WriteFile("file1.dat", kTestFileData, std::size(kTestFileData) - 1);
   net::HttpRequestHeaders headers;
   headers.SetHeader(net::HttpRequestHeaders::kRange,
                     "bytes=0-5,10-200,200-300");
@@ -794,7 +794,7 @@
 
 IN_PROC_BROWSER_TEST_P(FileSystemURLLoaderFactoryTest, FileRangeOutOfBounds) {
   base::ScopedAllowBlockingForTesting allow_blocking;
-  WriteFile("file1.dat", kTestFileData, base::size(kTestFileData) - 1);
+  WriteFile("file1.dat", kTestFileData, std::size(kTestFileData) - 1);
   net::HttpRequestHeaders headers;
   headers.SetHeader(net::HttpRequestHeaders::kRange,
                     net::HttpByteRange::Bounded(500, 1000).GetHeaderValue());
@@ -838,7 +838,7 @@
 
 IN_PROC_BROWSER_TEST_P(FileSystemURLLoaderFactoryTest, FileCancel) {
   base::ScopedAllowBlockingForTesting allow_blocking;
-  WriteFile("file1.dat", kTestFileData, base::size(kTestFileData) - 1);
+  WriteFile("file1.dat", kTestFileData, std::size(kTestFileData) - 1);
   auto client = TestLoadNoRun(CreateFileSystemURL("file1.dat"));
 
   // client.reset();
@@ -872,7 +872,7 @@
 
 IN_PROC_BROWSER_TEST_P(FileSystemURLLoaderFactoryTest, FileIncognito) {
   base::ScopedAllowBlockingForTesting allow_blocking;
-  WriteFile("file", kTestFileData, base::size(kTestFileData) - 1);
+  WriteFile("file", kTestFileData, std::size(kTestFileData) - 1);
 
   // Creates a new filesystem context for incognito mode.
   scoped_refptr<FileSystemContext> file_system_context =
diff --git a/content/browser/file_system_access/safe_move_helper.cc b/content/browser/file_system_access/safe_move_helper.cc
index 414e39f..7b3355cf 100644
--- a/content/browser/file_system_access/safe_move_helper.cc
+++ b/content/browser/file_system_access/safe_move_helper.cc
@@ -99,7 +99,7 @@
     }
     if (bytes_read == 0) {
       std::string hash_str(hash_->GetHashLength(), 0);
-      hash_->Finish(base::data(hash_str), hash_str.size());
+      hash_->Finish(std::data(hash_str), hash_str.size());
       std::move(callback_).Run(base::File::FILE_OK, hash_str, file_size_);
       return;
     }
diff --git a/content/browser/font_unique_name_lookup/font_unique_name_browsertest.cc b/content/browser/font_unique_name_lookup/font_unique_name_browsertest.cc
index 8377a53..dc3fc05e 100644
--- a/content/browser/font_unique_name_lookup/font_unique_name_browsertest.cc
+++ b/content/browser/font_unique_name_lookup/font_unique_name_browsertest.cc
@@ -4,7 +4,6 @@
 
 #include <memory>
 
-#include "base/cxx17_backports.h"
 #include "base/test/scoped_feature_list.h"
 #include "base/threading/thread_restrictions.h"
 #include "build/build_config.h"
@@ -157,7 +156,7 @@
 
   unsigned num_added_nodes = static_cast<unsigned>(
       content::EvalJs(shell(), "addTestNodes()").ExtractInt());
-  ASSERT_EQ(num_added_nodes, base::size(kExpectedFontFamilyNames));
+  ASSERT_EQ(num_added_nodes, std::size(kExpectedFontFamilyNames));
 
   std::unique_ptr<base::DictionaryValue> params =
       std::make_unique<base::DictionaryValue>();
@@ -177,7 +176,7 @@
       result->FindKeyOfType("nodeIds", base::Value::Type::LIST)->Clone();
   base::Value::ConstListView nodes_view = node_list.GetListDeprecated();
   ASSERT_EQ(nodes_view.size(), num_added_nodes);
-  ASSERT_EQ(nodes_view.size(), base::size(kExpectedFontFamilyNames));
+  ASSERT_EQ(nodes_view.size(), std::size(kExpectedFontFamilyNames));
   for (size_t i = 0; i < nodes_view.size(); ++i) {
     const base::Value& nodeId = nodes_view[i];
     params = std::make_unique<base::DictionaryValue>();
diff --git a/content/browser/font_unique_name_lookup/font_unique_name_lookup_unittest.cc b/content/browser/font_unique_name_lookup/font_unique_name_lookup_unittest.cc
index ddfc24d9..91486c3 100644
--- a/content/browser/font_unique_name_lookup/font_unique_name_lookup_unittest.cc
+++ b/content/browser/font_unique_name_lookup/font_unique_name_lookup_unittest.cc
@@ -2,21 +2,20 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "testing/gtest/include/gtest/gtest.h"
+#include "content/browser/font_unique_name_lookup/font_unique_name_lookup.h"
+
+#include <functional>
+#include <memory>
 
 #include "base/android/build_info.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file.h"
 #include "base/files/file_enumerator.h"
 #include "base/files/file_util.h"
 #include "base/files/scoped_temp_dir.h"
 #include "base/strings/string_util.h"
-#include "content/browser/font_unique_name_lookup/font_unique_name_lookup.h"
+#include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/blink/public/common/font_unique_name_lookup/font_table_matcher.h"
 
-#include <functional>
-#include <memory>
-
 namespace {
 
 static const char* const kAndroidFontPaths[] = {"/system/fonts",
@@ -231,7 +230,7 @@
   font_file.Seek(base::File::FROM_BEGIN, 5);
   uint8_t num_tables_bytes[2] = {};
   font_file.ReadAtCurrentPos(reinterpret_cast<char*>(num_tables_bytes),
-                             base::size(num_tables_bytes));
+                             std::size(num_tables_bytes));
   uint16_t num_tables =
       static_cast<uint16_t>(num_tables_bytes[0] + (num_tables_bytes[1] << 8));
   return num_tables;
@@ -265,7 +264,7 @@
       for (size_t i = 0; i < num_tables; ++i) {
         CHECK_EQ(static_cast<int>(kSizeOneTableRecord),
                  font_file.Write(kOffsetTableRecords + i * kSizeOneTableRecord,
-                                 garbage, base::size(garbage)));
+                                 garbage, std::size(garbage)));
       }
     });
   }
diff --git a/content/browser/gpu/compositor_util.cc b/content/browser/gpu/compositor_util.cc
index b1089f1c..1e6b80a1 100644
--- a/content/browser/gpu/compositor_util.cc
+++ b/content/browser/gpu/compositor_util.cc
@@ -221,8 +221,8 @@
     {"direct_rendering_display_compositor", gpu::kGpuFeatureStatusEnabled,
      !features::IsDrDcEnabled(), DisableInfo::NotProblem(), false},
   };
-  DCHECK(index < base::size(kGpuFeatureData));
-  *eof = (index == base::size(kGpuFeatureData) - 1);
+  DCHECK(index < std::size(kGpuFeatureData));
+  *eof = (index == std::size(kGpuFeatureData) - 1);
   return kGpuFeatureData[index];
 }
 
diff --git a/content/browser/gpu/gpu_data_manager_testing_autogen.cc b/content/browser/gpu/gpu_data_manager_testing_autogen.cc
index 92c31a6..8b276b00 100644
--- a/content/browser/gpu/gpu_data_manager_testing_autogen.cc
+++ b/content/browser/gpu/gpu_data_manager_testing_autogen.cc
@@ -19,8 +19,8 @@
     {
         1,  // id
         "GpuDataManagerImplPrivateTest.GpuSideBlocklisting.0",
-        base::size(kFeatureListForGpuManagerTestingEntry1),  // features size
-        kFeatureListForGpuManagerTestingEntry1,              // features
+        std::size(kFeatureListForGpuManagerTestingEntry1),  // features size
+        kFeatureListForGpuManagerTestingEntry1,             // features
         0,        // DisabledExtensions size
         nullptr,  // DisabledExtensions
         0,        // DisabledWebGLExtensions size
@@ -53,8 +53,8 @@
     {
         2,  // id
         "GpuDataManagerImplPrivateTest.GpuSideBlocklisting.1",
-        base::size(kFeatureListForGpuManagerTestingEntry2),  // features size
-        kFeatureListForGpuManagerTestingEntry2,              // features
+        std::size(kFeatureListForGpuManagerTestingEntry2),  // features size
+        kFeatureListForGpuManagerTestingEntry2,             // features
         0,        // DisabledExtensions size
         nullptr,  // DisabledExtensions
         0,        // DisabledWebGLExtensions size
@@ -87,8 +87,8 @@
     {
         3,  // id
         "GpuDataManagerImplPrivateTest.GpuSideBlocklistingWebGL.0",
-        base::size(kFeatureListForGpuManagerTestingEntry3),  // features size
-        kFeatureListForGpuManagerTestingEntry3,              // features
+        std::size(kFeatureListForGpuManagerTestingEntry3),  // features size
+        kFeatureListForGpuManagerTestingEntry3,             // features
         0,        // DisabledExtensions size
         nullptr,  // DisabledExtensions
         0,        // DisabledWebGLExtensions size
@@ -121,8 +121,8 @@
     {
         4,  // id
         "GpuDataManagerImplPrivateTest.GpuSideBlocklistingWebGL.1",
-        base::size(kFeatureListForGpuManagerTestingEntry4),  // features size
-        kFeatureListForGpuManagerTestingEntry4,              // features
+        std::size(kFeatureListForGpuManagerTestingEntry4),  // features size
+        kFeatureListForGpuManagerTestingEntry4,             // features
         0,        // DisabledExtensions size
         nullptr,  // DisabledExtensions
         0,        // DisabledWebGLExtensions size
@@ -155,8 +155,8 @@
     {
         5,  // id
         "GpuDataManagerImplPrivateTest.GpuSideException",
-        base::size(kFeatureListForGpuManagerTestingEntry5),  // features size
-        kFeatureListForGpuManagerTestingEntry5,              // features
+        std::size(kFeatureListForGpuManagerTestingEntry5),  // features size
+        kFeatureListForGpuManagerTestingEntry5,             // features
         0,        // DisabledExtensions size
         nullptr,  // DisabledExtensions
         0,        // DisabledWebGLExtensions size
@@ -183,14 +183,14 @@
              nullptr},                  // intel_gpu_generation
             &kMoreForEntry5_572251052,  // more data
         },
-        base::size(kExceptionsForEntry5),  // exceptions count
-        kExceptionsForEntry5,              // exceptions
+        std::size(kExceptionsForEntry5),  // exceptions count
+        kExceptionsForEntry5,             // exceptions
     },
     {
         6,  // id
         "GpuDataManagerImplPrivateTest.BlocklistAllFeatures",
-        base::size(kFeatureListForGpuManagerTestingEntry6),  // features size
-        kFeatureListForGpuManagerTestingEntry6,              // features
+        std::size(kFeatureListForGpuManagerTestingEntry6),  // features size
+        kFeatureListForGpuManagerTestingEntry6,             // features
         0,        // DisabledExtensions size
         nullptr,  // DisabledExtensions
         0,        // DisabledWebGLExtensions size
diff --git a/content/browser/gpu/gpu_process_host.cc b/content/browser/gpu/gpu_process_host.cc
index f5d7392..bd4e9eb 100644
--- a/content/browser/gpu/gpu_process_host.cc
+++ b/content/browser/gpu/gpu_process_host.cc
@@ -619,7 +619,7 @@
     return;
   }
   bool has_gpu = false;
-  for (size_t i = 0; i < base::size(g_gpu_process_hosts); ++i) {
+  for (size_t i = 0; i < std::size(g_gpu_process_hosts); ++i) {
     GpuProcessHost* host = g_gpu_process_hosts[i];
     if (host && ValidateHost(host)) {
       has_gpu = true;
@@ -1198,7 +1198,7 @@
   // If you want a browser command-line switch passed to the GPU process
   // you need to add it to |kSwitchNames| at the beginning of this file.
   cmd_line->CopySwitchesFrom(browser_command_line, kSwitchNames,
-                             base::size(kSwitchNames));
+                             std::size(kSwitchNames));
   cmd_line->CopySwitchesFrom(
       browser_command_line, switches::kGLSwitchesCopiedFromGpuProcessHost,
       switches::kGLSwitchesCopiedFromGpuProcessHostNumSwitches);
diff --git a/content/browser/host_zoom_map_impl_unittest.cc b/content/browser/host_zoom_map_impl_unittest.cc
index db9c0fa..fd0291d 100644
--- a/content/browser/host_zoom_map_impl_unittest.cc
+++ b/content/browser/host_zoom_map_impl_unittest.cc
@@ -6,7 +6,6 @@
 
 #include <stddef.h>
 
-#include "base/cxx17_backports.h"
 #include "base/memory/ref_counted.h"
 #include "base/test/simple_test_clock.h"
 #include "content/public/test/browser_task_environment.h"
@@ -72,8 +71,8 @@
        zoomed},
       {HostZoomMap::ZOOM_CHANGED_FOR_SCHEME_AND_HOST, "zoomed.com", "https",
        zoomed}, };
-  ASSERT_EQ(base::size(expected), levels.size());
-  for (size_t i = 0; i < base::size(expected); ++i) {
+  ASSERT_EQ(std::size(expected), levels.size());
+  for (size_t i = 0; i < std::size(expected); ++i) {
     SCOPED_TRACE(testing::Message() << "levels[" << i << "]");
     EXPECT_EQ(expected[i].mode, levels[i].mode);
     EXPECT_EQ(expected[i].scheme, levels[i].scheme);
@@ -108,8 +107,8 @@
       {HostZoomMap::ZOOM_CHANGED_FOR_SCHEME_AND_HOST, "login", "chrome", 3.0,
        base::Time()},
   };
-  ASSERT_EQ(base::size(expected), levels.size());
-  for (size_t i = 0; i < base::size(expected); ++i) {
+  ASSERT_EQ(std::size(expected), levels.size());
+  for (size_t i = 0; i < std::size(expected); ++i) {
     SCOPED_TRACE(testing::Message() << "levels[" << i << "]");
     EXPECT_EQ(expected[i].mode, levels[i].mode);
     EXPECT_EQ(expected[i].scheme, levels[i].scheme);
diff --git a/content/browser/indexed_db/indexed_db_backing_store_unittest.cc b/content/browser/indexed_db/indexed_db_backing_store_unittest.cc
index 687607e0..f1c18af0 100644
--- a/content/browser/indexed_db/indexed_db_backing_store_unittest.cc
+++ b/content/browser/indexed_db/indexed_db_backing_store_unittest.cc
@@ -16,7 +16,6 @@
 #include "base/callback.h"
 #include "base/check_op.h"
 #include "base/containers/span.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_util.h"
 #include "base/files/scoped_temp_dir.h"
 #include "base/guid.h"
@@ -1009,7 +1008,7 @@
       IndexedDBKeyRange(keys[1], keys[3], false, true),
       IndexedDBKeyRange(keys[0], keys[3], true, true)};
 
-  for (size_t i = 0; i < base::size(ranges); ++i) {
+  for (size_t i = 0; i < std::size(ranges); ++i) {
     const int64_t database_id = 1;
     const int64_t object_store_id = i + 1;
     const IndexedDBKeyRange& range = ranges[i];
@@ -1104,7 +1103,7 @@
       IndexedDBKeyRange(keys[2], keys[1], false, false),
       IndexedDBKeyRange(keys[2], keys[1], true, true)};
 
-  for (size_t i = 0; i < base::size(ranges); ++i) {
+  for (size_t i = 0; i < std::size(ranges); ++i) {
     const int64_t database_id = 1;
     const int64_t object_store_id = i + 1;
     const IndexedDBKeyRange& range = ranges[i];
diff --git a/content/browser/indexed_db/indexed_db_leveldb_coding_unittest.cc b/content/browser/indexed_db/indexed_db_leveldb_coding_unittest.cc
index 2df6d0a..22e1bf5 100644
--- a/content/browser/indexed_db/indexed_db_leveldb_coding_unittest.cc
+++ b/content/browser/indexed_db/indexed_db_leveldb_coding_unittest.cc
@@ -12,7 +12,6 @@
 #include <utility>
 #include <vector>
 
-#include "base/cxx17_backports.h"
 #include "base/strings/string_piece.h"
 #include "components/services/storage/indexed_db/scopes/varint_coding.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -557,7 +556,7 @@
                        0      // Type is null
     };
     encoded_paths.push_back(
-        std::string(expected, expected + base::size(expected)));
+        std::string(expected, expected + std::size(expected)));
   }
 
   {
@@ -567,7 +566,7 @@
                        0      // Length is 0
     };
     encoded_paths.push_back(
-        std::string(expected, expected + base::size(expected)));
+        std::string(expected, expected + std::size(expected)));
   }
 
   {
@@ -577,7 +576,7 @@
                        3, 0, 'f', 0, 'o', 0, 'o'  // String length 3, UTF-16BE
     };
     encoded_paths.push_back(
-        std::string(expected, expected + base::size(expected)));
+        std::string(expected, expected + std::size(expected)));
   }
 
   {
@@ -588,7 +587,7 @@
                        'r'  // String length 7, UTF-16BE
     };
     encoded_paths.push_back(
-        std::string(expected, expected + base::size(expected)));
+        std::string(expected, expected + std::size(expected)));
   }
 
   {
@@ -603,7 +602,7 @@
                        'r'  // Member 3 (String length 7)
     };
     encoded_paths.push_back(
-        std::string(expected, expected + base::size(expected)));
+        std::string(expected, expected + std::size(expected)));
   }
 
   ASSERT_EQ(key_paths.size(), encoded_paths.size());
@@ -685,12 +684,12 @@
   {
     key_paths.emplace_back(u"foo");
     char expected[] = {0, 'f', 0, 'o', 0, 'o'};
-    encoded_paths.push_back(std::string(expected, base::size(expected)));
+    encoded_paths.push_back(std::string(expected, std::size(expected)));
   }
   {
     key_paths.emplace_back(u"foo.bar");
     char expected[] = {0, 'f', 0, 'o', 0, 'o', 0, '.', 0, 'b', 0, 'a', 0, 'r'};
-    encoded_paths.push_back(std::string(expected, base::size(expected)));
+    encoded_paths.push_back(std::string(expected, std::size(expected)));
   }
 
   ASSERT_EQ(key_paths.size(), encoded_paths.size());
diff --git a/content/browser/indexed_db/indexed_db_leveldb_operations.cc b/content/browser/indexed_db/indexed_db_leveldb_operations.cc
index 577e34da..6c6494c 100644
--- a/content/browser/indexed_db/indexed_db_leveldb_operations.cc
+++ b/content/browser/indexed_db/indexed_db_leveldb_operations.cc
@@ -137,7 +137,7 @@
     if (file.IsValid()) {
       std::string input_js(file_info->size, '\0');
       if (file_info->size ==
-          file.Read(0, base::data(input_js), file_info->size)) {
+          file.Read(0, std::data(input_js), file_info->size)) {
         absl::optional<base::Value> val = base::JSONReader::Read(input_js);
         if (val && val->is_dict()) {
           std::string* s = val->FindStringKey("message");
diff --git a/content/browser/interest_group/auction_worklet_manager_unittest.cc b/content/browser/interest_group/auction_worklet_manager_unittest.cc
index c616afc..0830903d 100644
--- a/content/browser/interest_group/auction_worklet_manager_unittest.cc
+++ b/content/browser/interest_group/auction_worklet_manager_unittest.cc
@@ -12,7 +12,6 @@
 #include "base/bind.h"
 #include "base/callback.h"
 #include "base/check.h"
-#include "base/cxx17_backports.h"
 #include "base/run_loop.h"
 #include "base/strings/stringprintf.h"
 #include "base/test/bind.h"
@@ -1301,7 +1300,7 @@
        "application/json"},
   };
 
-  for (size_t i = 0; i < base::size(kAllowedUrls); ++i) {
+  for (size_t i = 0; i < std::size(kAllowedUrls); ++i) {
     network::ResourceRequest request;
     request.url = kAllowedUrls[i].url;
     request.headers.SetHeader(net::HttpRequestHeaders::kAccept,
@@ -1332,7 +1331,7 @@
       net::MutableNetworkTrafficAnnotationTag(TRAFFIC_ANNOTATION_FOR_TESTS));
   bidder_worklet->url_loader_factory().FlushForTesting();
   EXPECT_FALSE(bidder_worklet->url_loader_factory().is_connected());
-  EXPECT_EQ(base::size(kAllowedUrls),
+  EXPECT_EQ(std::size(kAllowedUrls),
             url_loader_factory_.pending_requests()->size());
   EXPECT_EQ("Unexpected request", TakeBadMessage());
 }
@@ -1361,7 +1360,7 @@
        "application/json"},
   };
 
-  for (size_t i = 0; i < base::size(kAllowedUrls); ++i) {
+  for (size_t i = 0; i < std::size(kAllowedUrls); ++i) {
     network::ResourceRequest request;
     request.url = kAllowedUrls[i].url;
     request.headers.SetHeader(net::HttpRequestHeaders::kAccept,
@@ -1392,7 +1391,7 @@
       net::MutableNetworkTrafficAnnotationTag(TRAFFIC_ANNOTATION_FOR_TESTS));
   seller_worklet->url_loader_factory().FlushForTesting();
   EXPECT_FALSE(seller_worklet->url_loader_factory().is_connected());
-  EXPECT_EQ(base::size(kAllowedUrls),
+  EXPECT_EQ(std::size(kAllowedUrls),
             url_loader_factory_.pending_requests()->size());
   EXPECT_EQ("Unexpected request", TakeBadMessage());
 }
diff --git a/content/browser/launch_as_mojo_client_browsertest.cc b/content/browser/launch_as_mojo_client_browsertest.cc
index 9df0cd2..63599fc 100644
--- a/content/browser/launch_as_mojo_client_browsertest.cc
+++ b/content/browser/launch_as_mojo_client_browsertest.cc
@@ -72,7 +72,7 @@
         switches::kOzonePlatform,
     };
     command_line.CopySwitchesFrom(cmdline, kSwitchesToCopy,
-                                  base::size(kSwitchesToCopy));
+                                  std::size(kSwitchesToCopy));
 #endif
 
 #if BUILDFLAG(IS_CHROMEOS_ASH)
diff --git a/content/browser/media/capture/desktop_streams_registry_impl.cc b/content/browser/media/capture/desktop_streams_registry_impl.cc
index 9582ed7..719c168d 100644
--- a/content/browser/media/capture/desktop_streams_registry_impl.cc
+++ b/content/browser/media/capture/desktop_streams_registry_impl.cc
@@ -6,7 +6,6 @@
 
 #include "base/base64.h"
 #include "base/bind.h"
-#include "base/cxx17_backports.h"
 #include "base/location.h"
 #include "base/no_destructor.h"
 #include "base/time/time.h"
@@ -22,9 +21,9 @@
 
 std::string GenerateRandomStreamId() {
   char buffer[kStreamIdLengthBytes];
-  crypto::RandBytes(buffer, base::size(buffer));
+  crypto::RandBytes(buffer, std::size(buffer));
   std::string result;
-  base::Base64Encode(base::StringPiece(buffer, base::size(buffer)), &result);
+  base::Base64Encode(base::StringPiece(buffer, std::size(buffer)), &result);
   return result;
 }
 
diff --git a/content/browser/media/media_internals.cc b/content/browser/media/media_internals.cc
index 12383ad9..628e789f 100644
--- a/content/browser/media/media_internals.cc
+++ b/content/browser/media/media_internals.cc
@@ -13,7 +13,6 @@
 #include "base/bind.h"
 #include "base/containers/adapters.h"
 #include "base/containers/cxx20_erase.h"
-#include "base/cxx17_backports.h"
 #include "base/feature_list.h"
 #include "base/memory/raw_ptr.h"
 #include "base/metrics/field_trial_params.h"
@@ -74,7 +73,7 @@
   };
 
   std::string ret;
-  for (size_t i = 0; i < base::size(flags); ++i) {
+  for (size_t i = 0; i < std::size(flags); ++i) {
     if (effects & flags[i].flag) {
       if (!ret.empty())
         ret += " | ";
diff --git a/content/browser/media/midi_host_unittest.cc b/content/browser/media/midi_host_unittest.cc
index 624b7cd..2a3bcec 100644
--- a/content/browser/media/midi_host_unittest.cc
+++ b/content/browser/media/midi_host_unittest.cc
@@ -130,7 +130,7 @@
 
 class MidiHostTest : public testing::Test {
  public:
-  MidiHostTest() : data_(kNoteOn, kNoteOn + base::size(kNoteOn)), port_id_(0) {
+  MidiHostTest() : data_(kNoteOn, kNoteOn + std::size(kNoteOn)), port_id_(0) {
     browser_context_ = std::make_unique<TestBrowserContext>();
     rph_ = std::make_unique<MockRenderProcessHost>(browser_context_.get());
     std::unique_ptr<FakeMidiManagerFactory> factory =
diff --git a/content/browser/notifications/notification_database_conversions_unittest.cc b/content/browser/notifications/notification_database_conversions_unittest.cc
index 44b8ccb..7e7229a8 100644
--- a/content/browser/notifications/notification_database_conversions_unittest.cc
+++ b/content/browser/notifications/notification_database_conversions_unittest.cc
@@ -2,14 +2,14 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "content/browser/notifications/notification_database_conversions.h"
+
 #include <stddef.h>
 #include <stdint.h>
 
-#include "base/cxx17_backports.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/time/time.h"
-#include "content/browser/notifications/notification_database_conversions.h"
 #include "content/browser/notifications/notification_database_data.pb.h"
 #include "content/browser/notifications/notification_database_resources.pb.h"
 #include "content/public/browser/notification_database_data.h"
@@ -64,11 +64,10 @@
 TEST(NotificationDatabaseConversionsTest, SerializeAndDeserializeData) {
   std::vector<int> vibration_pattern(
       kNotificationVibrationPattern,
-      kNotificationVibrationPattern +
-          base::size(kNotificationVibrationPattern));
+      kNotificationVibrationPattern + std::size(kNotificationVibrationPattern));
 
   std::vector<char> developer_data(
-      kNotificationData, kNotificationData + base::size(kNotificationData));
+      kNotificationData, kNotificationData + std::size(kNotificationData));
 
   blink::PlatformNotificationData notification_data;
   notification_data.title = kNotificationTitle;
@@ -256,7 +255,7 @@
       blink::mojom::NotificationDirection::RIGHT_TO_LEFT,
       blink::mojom::NotificationDirection::AUTO};
 
-  for (size_t i = 0; i < base::size(directions); ++i) {
+  for (size_t i = 0; i < std::size(directions); ++i) {
     blink::PlatformNotificationData notification_data;
     notification_data.direction = directions[i];
 
@@ -282,7 +281,7 @@
       NotificationDatabaseData::ClosedReason::DEVELOPER,
       NotificationDatabaseData::ClosedReason::UNKNOWN};
 
-  for (size_t i = 0; i < base::size(closed_reasons); ++i) {
+  for (size_t i = 0; i < std::size(closed_reasons); ++i) {
     NotificationDatabaseData database_data;
     database_data.closed_reason = closed_reasons[i];
 
diff --git a/content/browser/ppapi_plugin_process_host.cc b/content/browser/ppapi_plugin_process_host.cc
index 4ff64cf..d757637 100644
--- a/content/browser/ppapi_plugin_process_host.cc
+++ b/content/browser/ppapi_plugin_process_host.cc
@@ -12,7 +12,6 @@
 #include "base/base_switches.h"
 #include "base/bind.h"
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_path.h"
 #include "base/memory/raw_ptr.h"
 #include "base/strings/string_number_conversions.h"
@@ -244,7 +243,7 @@
     switches::kVModule
   };
   cmd_line->CopySwitchesFrom(browser_command_line, kCommonForwardSwitches,
-                             base::size(kCommonForwardSwitches));
+                             std::size(kCommonForwardSwitches));
 
   static const char* const kPluginForwardSwitches[] = {
     sandbox::policy::switches::kDisableSeccompFilterSandbox,
@@ -256,7 +255,7 @@
     switches::kTimeZoneForTesting,
   };
   cmd_line->CopySwitchesFrom(browser_command_line, kPluginForwardSwitches,
-                             base::size(kPluginForwardSwitches));
+                             std::size(kPluginForwardSwitches));
 
   std::string locale = GetContentClient()->browser()->GetApplicationLocale();
   if (!locale.empty()) {
diff --git a/content/browser/renderer_host/back_forward_cache_can_store_document_result.cc b/content/browser/renderer_host/back_forward_cache_can_store_document_result.cc
index e030b49..ab9089f 100644
--- a/content/browser/renderer_host/back_forward_cache_can_store_document_result.cc
+++ b/content/browser/renderer_host/back_forward_cache_can_store_document_result.cc
@@ -181,6 +181,8 @@
       return ProtoEnum::CACHE_CONTROL_NO_STORE_HTTP_ONLY_COOKIE_MODIFIED;
     case Reason::kNoResponseHead:
       return ProtoEnum::NO_RESPONSE_HEAD;
+    case Reason::kActivationNavigationsDisallowedForBug1234857:
+      return ProtoEnum::ACTIVATION_NAVIGATION_DISALLOWED_FOR_BUG_1234857;
     case Reason::kBlocklistedFeatures:
       return ProtoEnum::BLOCKLISTED_FEATURES;
     case Reason::kUnknown:
@@ -389,6 +391,10 @@
     case Reason::kNoResponseHead:
       return "main RenderFrameHost doesn't have response headers set, probably "
              "due not having successfully committed a navigation.";
+    case Reason::kActivationNavigationsDisallowedForBug1234857:
+      return "Activation navigations are disallowed to avoid bypassing "
+             "PasswordProtectionService as a workaround for "
+             "https://crbug.com/1234857.";
   }
 }
 
diff --git a/content/browser/renderer_host/back_forward_cache_impl.cc b/content/browser/renderer_host/back_forward_cache_impl.cc
index c783a4eb..a61367b 100644
--- a/content/browser/renderer_host/back_forward_cache_impl.cc
+++ b/content/browser/renderer_host/back_forward_cache_impl.cc
@@ -797,6 +797,17 @@
         BackForwardCacheMetrics::NotRestoredReason::kSchemeNotHTTPOrHTTPS);
   }
 
+  // Do not store if activation navigations are disabled by the
+  // NavigatorDelegate as a workaround for the following bug.
+  // TODO(https://crbug.com/1234857): Remove this when the bug is fixed.
+  if (rfh->frame_tree()
+          ->navigator()
+          .GetDelegate()
+          ->IsActivationNavigationDisallowedForBug1234857()) {
+    result.No(BackForwardCacheMetrics::NotRestoredReason::
+                  kActivationNavigationsDisallowedForBug1234857);
+  }
+
   // We should not cache pages with Cache-control: no-store. Note that
   // even though this is categorized as a "feature", we will check this within
   // CanPotentiallyStorePageLater as it's not possible to change the HTTP
diff --git a/content/browser/renderer_host/back_forward_cache_metrics.h b/content/browser/renderer_host/back_forward_cache_metrics.h
index 33205be..a785419 100644
--- a/content/browser/renderer_host/back_forward_cache_metrics.h
+++ b/content/browser/renderer_host/back_forward_cache_metrics.h
@@ -110,8 +110,8 @@
     kCacheControlNoStoreCookieModified = 54,
     kCacheControlNoStoreHTTPOnlyCookieModified = 55,
     kNoResponseHead = 56,
-    // 57: kActivationNavigationsDisallowedForBug1234857 was fixed.
-    kMaxValue = kNoResponseHead,
+    kActivationNavigationsDisallowedForBug1234857 = 57,
+    kMaxValue = kActivationNavigationsDisallowedForBug1234857,
   };
 
   using NotRestoredReasons =
diff --git a/content/browser/renderer_host/commit_deferring_condition_runner.cc b/content/browser/renderer_host/commit_deferring_condition_runner.cc
index 7caafd8..7ea43832 100644
--- a/content/browser/renderer_host/commit_deferring_condition_runner.cc
+++ b/content/browser/renderer_host/commit_deferring_condition_runner.cc
@@ -57,13 +57,8 @@
   AddCondition(std::move(condition));
 }
 
-CommitDeferringCondition*
-CommitDeferringConditionRunner::GetDeferringConditionForTesting() const {
-  if (!is_deferred_)
-    return nullptr;
-
-  DCHECK(!conditions_.empty());
-  return (*conditions_.begin()).get();
+bool CommitDeferringConditionRunner::is_deferred_for_testing() const {
+  return is_deferred_;
 }
 
 void CommitDeferringConditionRunner::ResumeProcessing() {
diff --git a/content/browser/renderer_host/commit_deferring_condition_runner.h b/content/browser/renderer_host/commit_deferring_condition_runner.h
index 03003e7..ce932689 100644
--- a/content/browser/renderer_host/commit_deferring_condition_runner.h
+++ b/content/browser/renderer_host/commit_deferring_condition_runner.h
@@ -109,9 +109,9 @@
   void AddConditionForTesting(
       std::unique_ptr<CommitDeferringCondition> condition);
 
-  // Returns the condition that's currently causing the navigation commit to be
-  // deferred. If no condition is currently deferred, returns nullptr.
-  CommitDeferringCondition* GetDeferringConditionForTesting() const;
+  // Used in tests to check if CommitDeferringConditionRunner is currently
+  // deferred for the navigation or not.
+  bool is_deferred_for_testing() const;
 
  private:
   friend class CommitDeferringConditionRunnerTest;
diff --git a/content/browser/renderer_host/dwrite_font_proxy_impl_win.cc b/content/browser/renderer_host/dwrite_font_proxy_impl_win.cc
index 2a1e90c..ab5b215 100644
--- a/content/browser/renderer_host/dwrite_font_proxy_impl_win.cc
+++ b/content/browser/renderer_host/dwrite_font_proxy_impl_win.cc
@@ -16,7 +16,6 @@
 
 #include "base/callback_helpers.h"
 #include "base/check_op.h"
-#include "base/cxx17_backports.h"
 #include "base/feature_list.h"
 #include "base/i18n/case_conversion.h"
 #include "base/metrics/histogram_functions.h"
@@ -596,7 +595,7 @@
   }
 
   // Temp code to help track down crbug.com/561873
-  for (size_t font = 0; font < base::size(kLastResortFontNames); font++) {
+  for (size_t font = 0; font < std::size(kLastResortFontNames); font++) {
     uint32_t font_index = 0;
     BOOL exists = FALSE;
     if (SUCCEEDED(collection_->FindFamilyName(kLastResortFontNames[font],
diff --git a/content/browser/renderer_host/input/input_router_impl_unittest.cc b/content/browser/renderer_host/input/input_router_impl_unittest.cc
index 20d930b..79cb2521 100644
--- a/content/browser/renderer_host/input/input_router_impl_unittest.cc
+++ b/content/browser/renderer_host/input/input_router_impl_unittest.cc
@@ -13,7 +13,6 @@
 #include <vector>
 
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "base/location.h"
 #include "base/run_loop.h"
 #include "base/strings/utf_string_conversions.h"
@@ -1007,7 +1006,7 @@
       WebInputEvent::Type::kGesturePinchUpdate,
       WebInputEvent::Type::kGesturePinchEnd,
       WebInputEvent::Type::kGestureScrollEnd};
-  for (size_t i = 0; i < base::size(eventTypes); ++i) {
+  for (size_t i = 0; i < std::size(eventTypes); ++i) {
     WebInputEvent::Type type = eventTypes[i];
     if (type == WebInputEvent::Type::kGestureFlingStart ||
         type == WebInputEvent::Type::kGestureFlingCancel) {
@@ -1105,7 +1104,7 @@
       WebInputEvent::Type::kGestureScrollUpdate,
       WebInputEvent::Type::kTouchStart,
       WebInputEvent::Type::kTouchMove};
-  for (size_t i = 0; i < base::size(kRequiredEventAckTypes); ++i) {
+  for (size_t i = 0; i < std::size(kRequiredEventAckTypes); ++i) {
     const WebInputEvent::Type required_ack_type = kRequiredEventAckTypes[i];
     ASSERT_TRUE(ShouldBlockEventStream(GetEventWithType(required_ack_type)))
         << WebInputEvent::GetName(required_ack_type);
diff --git a/content/browser/renderer_host/input/motion_event_web_unittest.cc b/content/browser/renderer_host/input/motion_event_web_unittest.cc
index bc4472d..b8780444 100644
--- a/content/browser/renderer_host/input/motion_event_web_unittest.cc
+++ b/content/browser/renderer_host/input/motion_event_web_unittest.cc
@@ -2,11 +2,11 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "content/browser/renderer_host/input/motion_event_web.h"
+
 #include <stddef.h>
 
-#include "base/cxx17_backports.h"
 #include "base/numerics/math_constants.h"
-#include "content/browser/renderer_host/input/motion_event_web.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/events/blink/blink_event_util.h"
 #include "ui/events/gesture_detection/motion_event_generic.h"
@@ -33,7 +33,7 @@
   PointerProperties pp;
   MotionEventGeneric generic_event(MotionEvent::Action::MOVE, event_time, pp);
   for (MotionEvent::ToolType tool_type : tool_types) {
-    for (size_t i = 0; i < base::size(tilts_x); ++i) {
+    for (size_t i = 0; i < std::size(tilts_x); ++i) {
       const float tilt_x = tilts_x[i];
       const float tilt_y = tilts_y[i];
       const float orientation = orientations[i];
diff --git a/content/browser/renderer_host/input/web_input_event_builders_mac_unittest.mm b/content/browser/renderer_host/input/web_input_event_builders_mac_unittest.mm
index 8cc34d1..a4bde1aa 100644
--- a/content/browser/renderer_host/input/web_input_event_builders_mac_unittest.mm
+++ b/content/browser/renderer_host/input/web_input_event_builders_mac_unittest.mm
@@ -8,7 +8,6 @@
 #import <Cocoa/Cocoa.h>
 #include <stddef.h>
 
-#include "base/cxx17_backports.h"
 #include "base/mac/mac_util.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #import "ui/events/cocoa/cocoa_event_utils.h"
@@ -187,7 +186,7 @@
        ui::DomKey::FromCharacter('9')},
   };
 
-  for (size_t i = 0; i < base::size(table); ++i) {
+  for (size_t i = 0; i < std::size(table); ++i) {
     NSEvent* mac_event = BuildFakeKeyEvent(table[i].mac_key_code,
                                            table[i].character, 0, NSKeyDown);
     WebKeyboardEvent web_event = WebKeyboardEventBuilder::Build(mac_event);
@@ -200,7 +199,7 @@
 // Test that left- and right-hand modifier keys are interpreted correctly when
 // pressed simultaneously.
 TEST(WebInputEventFactoryTestMac, SimultaneousModifierKeys) {
-  for (size_t i = 0; i < base::size(kModifierKeys) / 2; ++i) {
+  for (size_t i = 0; i < std::size(kModifierKeys) / 2; ++i) {
     const ModifierKey& left = kModifierKeys[2 * i];
     const ModifierKey& right = kModifierKeys[2 * i + 1];
     // Press the left key.
@@ -231,7 +230,7 @@
 // Test that individual modifier keys are still reported correctly, even if the
 // undocumented left- or right-hand flags are not set.
 TEST(WebInputEventBuilderMacTest, MissingUndocumentedModifierFlags) {
-  for (size_t i = 0; i < base::size(kModifierKeys); ++i) {
+  for (size_t i = 0; i < std::size(kModifierKeys); ++i) {
     const ModifierKey& key = kModifierKeys[i];
     NSEvent* mac_event = BuildFakeKeyEvent(
         key.mac_key_code, 0, key.non_specific_mask, NSFlagsChanged);
diff --git a/content/browser/renderer_host/media/media_stream_manager.cc b/content/browser/renderer_host/media/media_stream_manager.cc
index 0621903..c1ef9f4 100644
--- a/content/browser/renderer_host/media/media_stream_manager.cc
+++ b/content/browser/renderer_host/media/media_stream_manager.cc
@@ -16,7 +16,6 @@
 #include "base/bind.h"
 #include "base/command_line.h"
 #include "base/compiler_specific.h"
-#include "base/cxx17_backports.h"
 #include "base/lazy_instance.h"
 #include "base/logging.h"
 #include "base/memory/ptr_util.h"
@@ -129,8 +128,8 @@
   static const size_t kRfc4122LengthLabel = 36u;
   std::string label(kRfc4122LengthLabel, ' ');
   for (char& c : label) {
-    // Use |base::size(kAlphabet) - 1| to avoid |kAlphabet|s terminating '\0';
-    c = kAlphabet[base::RandGenerator(base::size(kAlphabet) - 1)];
+    // Use |std::size(kAlphabet) - 1| to avoid |kAlphabet|s terminating '\0';
+    c = kAlphabet[base::RandGenerator(std::size(kAlphabet) - 1)];
     DCHECK(std::isalnum(c)) << c;
   }
   return label;
@@ -2338,7 +2337,7 @@
   bool requested[] = {requested_audio_input, requested_video_input};
   MediaStreamType stream_types[] = {MediaStreamType::DEVICE_AUDIO_CAPTURE,
                                     MediaStreamType::DEVICE_VIDEO_CAPTURE};
-  for (size_t i = 0; i < base::size(requested); ++i) {
+  for (size_t i = 0; i < std::size(requested); ++i) {
     if (!requested[i])
       continue;
 
diff --git a/content/browser/renderer_host/navigation_request.cc b/content/browser/renderer_host/navigation_request.cc
index 88c91e2..74c05b7 100644
--- a/content/browser/renderer_host/navigation_request.cc
+++ b/content/browser/renderer_host/navigation_request.cc
@@ -1009,7 +1009,9 @@
 
   base::WeakPtr<RenderFrameHostImpl> rfh_restored_from_back_forward_cache =
       nullptr;
-  if (entry) {
+  if (entry && !frame_tree_node->navigator()
+                    .GetDelegate()
+                    ->IsActivationNavigationDisallowedForBug1234857()) {
     BackForwardCacheImpl::Entry* restored_entry =
         frame_tree_node->navigator()
             .controller()
@@ -1726,16 +1728,7 @@
 }
 
 bool NavigationRequest::IsCommitDeferringConditionDeferredForTesting() {
-  if (!commit_deferrer_)
-    return false;
-  return commit_deferrer_->GetDeferringConditionForTesting();  // IN-TEST
-}
-
-CommitDeferringCondition*
-NavigationRequest::GetCommitDeferringConditionForTesting() {
-  if (!commit_deferrer_)
-    return nullptr;
-  return commit_deferrer_->GetDeferringConditionForTesting();  // IN-TEST
+  return commit_deferrer_->is_deferred_for_testing();  // IN-TEST
 }
 
 void NavigationRequest::BeginNavigation() {
@@ -1787,6 +1780,9 @@
   if (!blink::features::IsPrerender2Enabled())
     return false;
 
+  if (GetDelegate()->IsActivationNavigationDisallowedForBug1234857())
+    return false;
+
   // Find an available prerendered page for this request. If it's found, this
   // request may activate it instead of loading a page via network.
   int candidate_prerender_frame_tree_node_id =
diff --git a/content/browser/renderer_host/navigation_request.h b/content/browser/renderer_host/navigation_request.h
index 33509df..99324f4 100644
--- a/content/browser/renderer_host/navigation_request.h
+++ b/content/browser/renderer_host/navigation_request.h
@@ -336,7 +336,6 @@
       std::unique_ptr<NavigationThrottle> navigation_throttle) override;
   bool IsDeferredForTesting() override;
   bool IsCommitDeferringConditionDeferredForTesting() override;
-  CommitDeferringCondition* GetCommitDeferringConditionForTesting() override;
   bool WasStartedFromContextMenu() override;
   const GURL& GetSearchableFormURL() override;
   const std::string& GetSearchableFormEncoding() override;
diff --git a/content/browser/renderer_host/navigator_delegate.h b/content/browser/renderer_host/navigator_delegate.h
index fd06da92..2a45a96 100644
--- a/content/browser/renderer_host/navigator_delegate.h
+++ b/content/browser/renderer_host/navigator_delegate.h
@@ -133,6 +133,13 @@
   virtual void RegisterExistingOriginToPreventOptInIsolation(
       const url::Origin& origin,
       NavigationRequest* navigation_request_to_exclude) = 0;
+
+  // Returns true if activation navigations are disallowed in the
+  // Navigator.
+  // TODO(https://crbug.com/1234857): Remove this. This is a temporary
+  // workaround to avoid breaking features that must be taught to deal with
+  // activation navigations.
+  virtual bool IsActivationNavigationDisallowedForBug1234857() = 0;
 };
 
 }  // namespace content
diff --git a/content/browser/renderer_host/navigator_unittest.cc b/content/browser/renderer_host/navigator_unittest.cc
index c108fb1..1f857b4 100644
--- a/content/browser/renderer_host/navigator_unittest.cc
+++ b/content/browser/renderer_host/navigator_unittest.cc
@@ -6,7 +6,6 @@
 
 #include <stdint.h>
 
-#include "base/cxx17_backports.h"
 #include "base/feature_list.h"
 #include "base/test/test_simple_task_runner.h"
 #include "base/time/time.h"
@@ -572,7 +571,7 @@
   auto response = network::mojom::URLResponseHead::New();
   const char kNoContentHeaders[] = "HTTP/1.1 204 No Content\0\0";
   response->headers = new net::HttpResponseHeaders(
-      std::string(kNoContentHeaders, base::size(kNoContentHeaders)));
+      std::string(kNoContentHeaders, std::size(kNoContentHeaders)));
   GetLoaderForNavigationRequest(main_request)
       ->CallOnResponseStarted(std::move(response),
                               mojo::ScopedDataPipeConsumerHandle());
@@ -597,7 +596,7 @@
   response = network::mojom::URLResponseHead::New();
   const char kResetContentHeaders[] = "HTTP/1.1 205 Reset Content\0\0";
   response->headers = new net::HttpResponseHeaders(
-      std::string(kResetContentHeaders, base::size(kResetContentHeaders)));
+      std::string(kResetContentHeaders, std::size(kResetContentHeaders)));
   GetLoaderForNavigationRequest(main_request)
       ->CallOnResponseStarted(std::move(response),
                               mojo::ScopedDataPipeConsumerHandle());
diff --git a/content/browser/renderer_host/pepper/pepper_truetype_font_list_mac.mm b/content/browser/renderer_host/pepper/pepper_truetype_font_list_mac.mm
index f753ed2..28d2dc4b 100644
--- a/content/browser/renderer_host/pepper/pepper_truetype_font_list_mac.mm
+++ b/content/browser/renderer_host/pepper/pepper_truetype_font_list_mac.mm
@@ -6,7 +6,6 @@
 
 #import <Cocoa/Cocoa.h>
 
-#include "base/cxx17_backports.h"
 #include "base/strings/sys_string_conversions.h"
 #include "ppapi/c/dev/ppb_truetype_font_dev.h"
 #include "ppapi/proxy/serialized_structs.h"
@@ -30,7 +29,7 @@
     PP_TRUETYPEFONTWEIGHT_ULTRABOLD,
     PP_TRUETYPEFONTWEIGHT_HEAVY,
 };
-const NSInteger kPepperFontWeightsLength = base::size(kPepperFontWeights);
+const NSInteger kPepperFontWeightsLength = std::size(kPepperFontWeights);
 
 }  // namespace
 
diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc
index a002e39..6075a250 100644
--- a/content/browser/renderer_host/render_process_host_impl.cc
+++ b/content/browser/renderer_host/render_process_host_impl.cc
@@ -3501,7 +3501,7 @@
 #endif
   };
   renderer_cmd->CopySwitchesFrom(browser_cmd, kSwitchNames,
-                                 base::size(kSwitchNames));
+                                 std::size(kSwitchNames));
 
   // |switches::kGaiaConfig| can be set via browser command-line arguments,
   // usually by developers working on signin code. The switch, however, cannot
diff --git a/content/browser/renderer_host/render_widget_host_view_mac_editcommand_helper.mm b/content/browser/renderer_host/render_widget_host_view_mac_editcommand_helper.mm
index 26299d4..d83bcd4 100644
--- a/content/browser/renderer_host/render_widget_host_view_mac_editcommand_helper.mm
+++ b/content/browser/renderer_host/render_widget_host_view_mac_editcommand_helper.mm
@@ -7,7 +7,6 @@
 #import <objc/runtime.h>
 #include <stddef.h>
 
-#include "base/cxx17_backports.h"
 #include "content/browser/renderer_host/render_widget_host_impl.h"
 #import "content/browser/renderer_host/render_widget_host_view_mac.h"
 
@@ -180,7 +179,7 @@
 
 RenderWidgetHostViewMacEditCommandHelper::
     RenderWidgetHostViewMacEditCommandHelper() {
-  for (size_t i = 0; i < base::size(kEditCommands); ++i) {
+  for (size_t i = 0; i < std::size(kEditCommands); ++i) {
     edit_command_set_.insert(kEditCommands[i]);
   }
 }
@@ -213,7 +212,7 @@
 // static
 void RenderWidgetHostViewMacEditCommandHelper::AddEditingSelectorsToClass(
     Class klass) {
-  for (size_t i = 0; i < base::size(kEditCommands); ++i) {
+  for (size_t i = 0; i < std::size(kEditCommands); ++i) {
     // Append trailing ':' to command name to get selector name.
     NSString* sel_str = [NSString stringWithFormat:@"%s:", kEditCommands[i]];
 
@@ -230,7 +229,7 @@
 // static
 NSArray*
 RenderWidgetHostViewMacEditCommandHelper::GetEditSelectorNamesForTesting() {
-  size_t num_edit_commands = base::size(kEditCommands);
+  size_t num_edit_commands = std::size(kEditCommands);
   NSMutableArray* ret = [NSMutableArray arrayWithCapacity:num_edit_commands];
 
   for (size_t i = 0; i < num_edit_commands; ++i) {
diff --git a/content/browser/sandbox_ipc_linux.cc b/content/browser/sandbox_ipc_linux.cc
index f1d611c1..752fbb0c 100644
--- a/content/browser/sandbox_ipc_linux.cc
+++ b/content/browser/sandbox_ipc_linux.cc
@@ -13,7 +13,6 @@
 #include <sys/stat.h>
 
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "base/files/scoped_file.h"
 #include "base/linux_util.h"
 #include "base/logging.h"
@@ -44,7 +43,7 @@
   int failed_polls = 0;
   for (;;) {
     const int r =
-        HANDLE_EINTR(poll(pfds, base::size(pfds), -1 /* no timeout */));
+        HANDLE_EINTR(poll(pfds, std::size(pfds), -1 /* no timeout */));
     // '0' is not a possible return value with no timeout.
     DCHECK_NE(0, r);
     if (r < 0) {
diff --git a/content/browser/service_process_host_browsertest.cc b/content/browser/service_process_host_browsertest.cc
index f1d17ba..1a73eaf 100644
--- a/content/browser/service_process_host_browsertest.cc
+++ b/content/browser/service_process_host_browsertest.cc
@@ -2,16 +2,16 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "content/public/browser/service_process_host.h"
+
 #include <string.h>
 
-#include "base/cxx17_backports.h"
 #include "base/memory/shared_memory_mapping.h"
 #include "base/memory/unsafe_shared_memory_region.h"
 #include "base/run_loop.h"
 #include "base/test/bind.h"
 #include "base/time/time.h"
 #include "base/timer/elapsed_timer.h"
-#include "content/public/browser/service_process_host.h"
 #include "content/public/test/browser_test.h"
 #include "content/public/test/content_browser_test.h"
 #include "services/test/echo/public/mojom/echo.mojom.h"
@@ -121,7 +121,7 @@
   echo_service.reset();
   observer.WaitForDeath();
 
-  const std::string& kLastMessage = kMessages[base::size(kMessages) - 1];
+  const std::string& kLastMessage = kMessages[std::size(kMessages) - 1];
   EXPECT_EQ(0,
             memcmp(mapping.memory(), kLastMessage.data(), kLastMessage.size()));
 }
diff --git a/content/browser/service_worker/embedded_worker_test_helper.cc b/content/browser/service_worker/embedded_worker_test_helper.cc
index 9796ce1..fc2d23ee 100644
--- a/content/browser/service_worker/embedded_worker_test_helper.cc
+++ b/content/browser/service_worker/embedded_worker_test_helper.cc
@@ -183,7 +183,7 @@
       "Content-Type: application/javascript\0"
       "\0";
   response_head.headers = base::MakeRefCounted<net::HttpResponseHeaders>(
-      std::string(data, base::size(data)));
+      std::string(data, std::size(data)));
   return std::make_unique<ServiceWorkerVersion::MainScriptResponse>(
       response_head);
 }
diff --git a/content/browser/service_worker/service_worker_cache_writer_unittest.cc b/content/browser/service_worker/service_worker_cache_writer_unittest.cc
index 634e5bf4..56b383e 100644
--- a/content/browser/service_worker/service_worker_cache_writer_unittest.cc
+++ b/content/browser/service_worker/service_worker_cache_writer_unittest.cc
@@ -13,7 +13,6 @@
 #include "base/bind.h"
 #include "base/callback_helpers.h"
 #include "base/containers/queue.h"
-#include "base/cxx17_backports.h"
 #include "base/memory/ptr_util.h"
 #include "base/test/task_environment.h"
 #include "content/browser/service_worker/service_worker_test_utils.h"
@@ -169,7 +168,7 @@
     auto response_head = network::mojom::URLResponseHead::New();
     const char data[] = "HTTP/1.1 200 OK\0\0";
     response_head->headers = base::MakeRefCounted<net::HttpResponseHeaders>(
-        std::string(data, base::size(data)));
+        std::string(data, std::size(data)));
     response_head->content_length = len;
     net::Error error = cache_writer_->MaybeWriteHeaders(
         std::move(response_head), CreateWriteCallback());
diff --git a/content/browser/service_worker/service_worker_file_upload_browsertest.cc b/content/browser/service_worker/service_worker_file_upload_browsertest.cc
index e27f109..3113548 100644
--- a/content/browser/service_worker/service_worker_file_upload_browsertest.cc
+++ b/content/browser/service_worker/service_worker_file_upload_browsertest.cc
@@ -59,7 +59,7 @@
 }
 
 const char kFileContent[] = "uploaded file content";
-const size_t kFileSize = base::size(kFileContent) - 1;
+const size_t kFileSize = std::size(kFileContent) - 1;
 }  // namespace
 
 // Tests POST requests that include a file and are intercepted by a service
diff --git a/content/browser/service_worker/service_worker_job_unittest.cc b/content/browser/service_worker/service_worker_job_unittest.cc
index 5094369..c1d5491 100644
--- a/content/browser/service_worker/service_worker_job_unittest.cc
+++ b/content/browser/service_worker/service_worker_job_unittest.cc
@@ -11,7 +11,6 @@
 #include "base/bind.h"
 #include "base/callback_helpers.h"
 #include "base/check.h"
-#include "base/cxx17_backports.h"
 #include "base/files/scoped_temp_dir.h"
 #include "base/memory/raw_ptr.h"
 #include "base/run_loop.h"
@@ -1285,7 +1284,7 @@
     const std::string& body) {
   mojo_base::BigBuffer body_buffer(base::as_bytes(base::make_span(body)));
   const char kHttpHeaders[] = "HTTP/1.0 200 HONKYDORY\0\0";
-  std::string headers(kHttpHeaders, base::size(kHttpHeaders));
+  std::string headers(kHttpHeaders, std::size(kHttpHeaders));
   WriteResponse(writer, headers, std::move(body_buffer));
 }
 
@@ -1426,13 +1425,13 @@
       // Spoof caching the script for the initial version.
       WriteStringResponse(writer, kBody);
       version->script_cache_map()->NotifyFinishedCaching(
-          script, base::size(kBody), net::OK, std::string());
+          script, std::size(kBody), net::OK, std::string());
     } else {
       EXPECT_NE(GURL(kNoChangeOrigin), script.DeprecatedGetOriginAsURL());
       // The script must be changed.
       WriteStringResponse(writer, kNewBody);
       version->script_cache_map()->NotifyFinishedCaching(
-          script, base::size(kNewBody), net::OK, std::string());
+          script, std::size(kNewBody), net::OK, std::string());
     }
 
     version->SetMainScriptResponse(CreateMainScriptResponse());
@@ -1850,7 +1849,7 @@
   version->script_cache_map()->NotifyStartedCaching(new_script, resource_id);
   WriteStringResponse(writer, kBody);
   version->script_cache_map()->NotifyFinishedCaching(
-      new_script, base::size(kBody), net::OK, std::string());
+      new_script, std::size(kBody), net::OK, std::string());
 
   // Run the update job.
   base::RunLoop().RunUntilIdle();
diff --git a/content/browser/service_worker/service_worker_registry_unittest.cc b/content/browser/service_worker/service_worker_registry_unittest.cc
index 27f1001..b44a858f 100644
--- a/content/browser/service_worker/service_worker_registry_unittest.cc
+++ b/content/browser/service_worker/service_worker_registry_unittest.cc
@@ -129,7 +129,7 @@
     int64_t id) {
   const char kHttpHeaders[] = "HTTP/1.0 200 HONKYDORY\0Content-Length: 5\0\0";
   const char kHttpBody[] = "Hello";
-  std::string headers(kHttpHeaders, base::size(kHttpHeaders));
+  std::string headers(kHttpHeaders, std::size(kHttpHeaders));
   return WriteStringResponse(storage, id, headers, std::string(kHttpBody));
 }
 
diff --git a/content/browser/service_worker/service_worker_version_browsertest.cc b/content/browser/service_worker/service_worker_version_browsertest.cc
index ebc8920..4a20c39 100644
--- a/content/browser/service_worker/service_worker_version_browsertest.cc
+++ b/content/browser/service_worker/service_worker_version_browsertest.cc
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "content/browser/service_worker/service_worker_version.h"
+
 #include <stddef.h>
 #include <stdint.h>
 
@@ -13,7 +15,6 @@
 #include "base/bind.h"
 #include "base/callback.h"
 #include "base/callback_helpers.h"
-#include "base/cxx17_backports.h"
 #include "base/memory/raw_ptr.h"
 #include "base/memory/ref_counted.h"
 #include "base/metrics/statistics_recorder.h"
@@ -36,7 +37,6 @@
 #include "content/browser/service_worker/service_worker_host.h"
 #include "content/browser/service_worker/service_worker_registration.h"
 #include "content/browser/service_worker/service_worker_test_utils.h"
-#include "content/browser/service_worker/service_worker_version.h"
 #include "content/public/browser/browser_context.h"
 #include "content/public/browser/browser_thread.h"
 #include "content/public/browser/content_browser_client.h"
@@ -216,7 +216,7 @@
       "Content-Type: application/javascript\0"
       "\0";
   response_head.headers =
-      new net::HttpResponseHeaders(std::string(data, base::size(data)));
+      new net::HttpResponseHeaders(std::string(data, std::size(data)));
   return std::make_unique<ServiceWorkerVersion::MainScriptResponse>(
       response_head);
 }
diff --git a/content/browser/storage_partition_impl_unittest.cc b/content/browser/storage_partition_impl_unittest.cc
index d65ac3b..afd85e0 100644
--- a/content/browser/storage_partition_impl_unittest.cc
+++ b/content/browser/storage_partition_impl_unittest.cc
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "content/browser/storage_partition_impl.h"
+
 #include <stddef.h>
 #include <stdint.h>
 
@@ -16,7 +18,6 @@
 #include "base/callback.h"
 #include "base/callback_helpers.h"
 #include "base/containers/contains.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
 #include "base/location.h"
@@ -50,7 +51,6 @@
 #include "content/browser/code_cache/generated_code_cache_context.h"
 #include "content/browser/gpu/shader_cache_factory.h"
 #include "content/browser/interest_group/interest_group_manager_impl.h"
-#include "content/browser/storage_partition_impl.h"
 #include "content/public/browser/browser_task_traits.h"
 #include "content/public/browser/browser_thread.h"
 #include "content/public/browser/generated_code_cache_settings.h"
@@ -392,8 +392,8 @@
     std::vector<uint8_t> serialized_origin(origin_str.begin(),
                                            origin_str.end());
     std::vector<uint8_t> key;
-    key.reserve(base::size(kMetaPrefix) + serialized_origin.size());
-    key.insert(key.end(), kMetaPrefix, kMetaPrefix + base::size(kMetaPrefix));
+    key.reserve(std::size(kMetaPrefix) + serialized_origin.size());
+    key.insert(key.end(), kMetaPrefix, kMetaPrefix + std::size(kMetaPrefix));
     key.insert(key.end(), serialized_origin.begin(), serialized_origin.end());
     return key;
   }
diff --git a/content/browser/utility_process_host.cc b/content/browser/utility_process_host.cc
index 80eb2af..754952c 100644
--- a/content/browser/utility_process_host.cc
+++ b/content/browser/utility_process_host.cc
@@ -11,7 +11,6 @@
 #include "base/bind.h"
 #include "base/callback_helpers.h"
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_path.h"
 #include "base/i18n/base_i18n_switches.h"
 #include "base/strings/utf_string_conversions.h"
@@ -299,7 +298,7 @@
 #endif
     };
     cmd_line->CopySwitchesFrom(browser_command_line, kSwitchNames,
-                               base::size(kSwitchNames));
+                               std::size(kSwitchNames));
 
     network_session_configurator::CopyNetworkSwitches(browser_command_line,
                                                       cmd_line.get());
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
index 909eb84..5dd743c 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -2318,6 +2318,19 @@
            primary_frame_tree_.root()->frame_tree_node_id());
 }
 
+void WebContentsImpl::DisallowActivationNavigationsForBug1234857() {
+  disallow_activation_navigations_ = true;
+
+  // Flush any inactive frames since they will never be activated.
+  ForEachRenderFrameHost(base::BindRepeating([](RenderFrameHostImpl* rfh) {
+    // Just look at main frames since we only need to call
+    // IsInactiveAndDisallowActivation() on the main frame.
+    if (!rfh->GetParent())
+      rfh->IsInactiveAndDisallowActivation(
+          DisallowActivationReasonId::kBug1234857);
+  }));
+}
+
 const base::Location& WebContentsImpl::GetCreatorLocation() {
   return creator_location_;
 }
@@ -7457,6 +7470,10 @@
   }
 }
 
+bool WebContentsImpl::IsActivationNavigationDisallowedForBug1234857() {
+  return disallow_activation_navigations_;
+}
+
 void WebContentsImpl::DidChangeName(RenderFrameHostImpl* render_frame_host,
                                     const std::string& name) {
   OPTIONAL_TRACE_EVENT2("content", "WebContentsImpl::DidChangeName",
diff --git a/content/browser/web_contents/web_contents_impl.h b/content/browser/web_contents/web_contents_impl.h
index 5710f87..cbfb336 100644
--- a/content/browser/web_contents/web_contents_impl.h
+++ b/content/browser/web_contents/web_contents_impl.h
@@ -565,6 +565,7 @@
   void SetIgnoreInputEvents(bool ignore_input_events) override;
   bool HasActiveEffectivelyFullscreenVideo() override;
   void WriteIntoTrace(perfetto::TracedValue context) override;
+  void DisallowActivationNavigationsForBug1234857() override;
   const base::Location& GetCreatorLocation() override;
   void UpdateBrowserControlsState(cc::BrowserControlsState constraints,
                                   cc::BrowserControlsState current,
@@ -894,6 +895,7 @@
   void RegisterExistingOriginToPreventOptInIsolation(
       const url::Origin& origin,
       NavigationRequest* navigation_request_to_exclude) override;
+  bool IsActivationNavigationDisallowedForBug1234857() override;
 
   // RenderWidgetHostDelegate --------------------------------------------------
 
@@ -2291,6 +2293,8 @@
   // color or if the page does not set a background color.
   absl::optional<SkColor> page_base_background_color_;
 
+  bool disallow_activation_navigations_ = false;
+
   // TODO(1231679): Remove/reevaluate after the PCScan experiment is finished.
   std::unique_ptr<StarScanLoadObserver> star_scan_load_observer_;
 
diff --git a/content/browser/web_package/signed_exchange_subresource_prefetch_browsertest.cc b/content/browser/web_package/signed_exchange_subresource_prefetch_browsertest.cc
index 03e4dff5..e14f70b 100644
--- a/content/browser/web_package/signed_exchange_subresource_prefetch_browsertest.cc
+++ b/content/browser/web_package/signed_exchange_subresource_prefetch_browsertest.cc
@@ -5,7 +5,6 @@
 #include <string>
 #include <vector>
 
-#include "base/cxx17_backports.h"
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
 #include "base/format_macros.h"
@@ -1997,7 +1996,7 @@
   std::string requests_list_string;
 
   std::vector<MockSignedExchangeHandlerParams> mock_params;
-  for (size_t i = 0; i < base::size(kTestCases); ++i) {
+  for (size_t i = 0; i < std::size(kTestCases); ++i) {
     if (i) {
       target_sxg_outer_link_header += ",";
       target_sxg_inner_link_header += ",";
@@ -2083,7 +2082,7 @@
       NavigateToURL(shell(), embedded_test_server()->GetURL(prefetch_path)));
 
   // Wait until all (main- and sub-resource) SXGs are prefetched.
-  while (GetCachedExchanges(shell()).size() < base::size(kTestCases) + 1) {
+  while (GetCachedExchanges(shell()).size() < std::size(kTestCases) + 1) {
     base::RunLoop run_loop;
     base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
         FROM_HERE, run_loop.QuitClosure(), TestTimeouts::tiny_timeout());
@@ -2092,7 +2091,7 @@
 
   NavigateToURLAndWaitTitle(target_sxg_url, "done");
 
-  for (size_t i = 0; i < base::size(kTestCases); ++i) {
+  for (size_t i = 0; i < std::size(kTestCases); ++i) {
     SCOPED_TRACE(base::StringPrintf("TestCase %zu", i));
     EXPECT_EQ(
         EvalJs(shell(), base::StringPrintf("results[%zu]", i)).ExtractString(),
diff --git a/content/browser/webauth/authenticator_impl_unittest.cc b/content/browser/webauth/authenticator_impl_unittest.cc
index 692295e..730d67d 100644
--- a/content/browser/webauth/authenticator_impl_unittest.cc
+++ b/content/browser/webauth/authenticator_impl_unittest.cc
@@ -15,7 +15,6 @@
 #include "base/bind.h"
 #include "base/callback_helpers.h"
 #include "base/compiler_specific.h"
-#include "base/cxx17_backports.h"
 #include "base/json/json_reader.h"
 #include "base/json/json_writer.h"
 #include "base/memory/raw_ptr.h"
@@ -794,10 +793,10 @@
 TEST_F(AuthenticatorImplTest, MakeCredentialOriginAndRpIds) {
   std::vector<OriginClaimedAuthorityPair> tests(
       &kValidRelyingPartyTestCases[0],
-      &kValidRelyingPartyTestCases[base::size(kValidRelyingPartyTestCases)]);
-  tests.insert(tests.end(), &kInvalidRelyingPartyTestCases[0],
-               &kInvalidRelyingPartyTestCases[base::size(
-                   kInvalidRelyingPartyTestCases)]);
+      &kValidRelyingPartyTestCases[std::size(kValidRelyingPartyTestCases)]);
+  tests.insert(
+      tests.end(), &kInvalidRelyingPartyTestCases[0],
+      &kInvalidRelyingPartyTestCases[std::size(kInvalidRelyingPartyTestCases)]);
 
   for (const auto& test_case : tests) {
     SCOPED_TRACE(std::string(test_case.claimed_authority) + " " +
diff --git a/content/browser/webui/web_ui_data_source_unittest.cc b/content/browser/webui/web_ui_data_source_unittest.cc
index 31f4328..0e382225 100644
--- a/content/browser/webui/web_ui_data_source_unittest.cc
+++ b/content/browser/webui/web_ui_data_source_unittest.cc
@@ -3,7 +3,6 @@
 // found in the LICENSE file.
 
 #include "base/bind.h"
-#include "base/cxx17_backports.h"
 #include "base/memory/ref_counted_memory.h"
 #include "base/strings/utf_string_conversions.h"
 #include "content/browser/webui/web_ui_data_source_impl.h"
@@ -39,13 +38,13 @@
     base::RefCountedStaticMemory* bytes = nullptr;
     if (resource_id == kDummyDefaultResourceId) {
       bytes = new base::RefCountedStaticMemory(
-          kDummyDefaultResource, base::size(kDummyDefaultResource));
+          kDummyDefaultResource, std::size(kDummyDefaultResource));
     } else if (resource_id == kDummyResourceId) {
       bytes = new base::RefCountedStaticMemory(kDummyResource,
-                                               base::size(kDummyResource));
+                                               std::size(kDummyResource));
     } else if (resource_id == kDummyJSResourceId) {
       bytes = new base::RefCountedStaticMemory(kDummyJSResource,
-                                               base::size(kDummyJSResource));
+                                               std::size(kDummyJSResource));
     }
     return bytes;
   }
diff --git a/content/common/font_list_fontconfig.cc b/content/common/font_list_fontconfig.cc
index f91053b..42bb1ea 100644
--- a/content/common/font_list_fontconfig.cc
+++ b/content/common/font_list_fontconfig.cc
@@ -2,17 +2,15 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "content/common/font_list.h"
+#include <fontconfig/fontconfig.h>
 
 #include <memory>
 #include <set>
 #include <string>
 #include <utility>
 
-#include <fontconfig/fontconfig.h>
-
-#include "base/cxx17_backports.h"
 #include "base/values.h"
+#include "content/common/font_list.h"
 
 namespace content {
 
@@ -39,7 +37,7 @@
   // See https://www.freetype.org/freetype2/docs/reference/ft2-font_formats.html
   // for the list of possible formats.
   const char* allowed_formats[] = { "TrueType", "CFF" };
-  for (size_t i = 0; i < base::size(allowed_formats); ++i) {
+  for (size_t i = 0; i < std::size(allowed_formats); ++i) {
     auto format_pattern = CreateFormatPattern(allowed_formats[i]);
     std::unique_ptr<FcFontSet, decltype(&FcFontSetDestroy)> fontset(
         FcFontList(nullptr, format_pattern.get(), object_set.get()),
diff --git a/content/common/font_list_mac.mm b/content/common/font_list_mac.mm
index 7b466df5d..016cc1f 100644
--- a/content/common/font_list_mac.mm
+++ b/content/common/font_list_mac.mm
@@ -165,7 +165,7 @@
     CFStringRef set_values[] = {kCTFontFamilyNameAttribute};
     return base::ScopedCFTypeRef<CFSetRef>(CFSetCreate(
         kCFAllocatorDefault, reinterpret_cast<const void**>(set_values),
-        base::size(set_values), &kCFTypeSetCallBacks));
+        std::size(set_values), &kCFTypeSetCallBacks));
   }
 
   // Creates the mutable dictionary stored in |font_descriptor_attributes_|.
diff --git a/content/common/webplugininfo_unittest.cc b/content/common/webplugininfo_unittest.cc
index f76dced8..a204f28 100644
--- a/content/common/webplugininfo_unittest.cc
+++ b/content/common/webplugininfo_unittest.cc
@@ -10,7 +10,6 @@
 #include <string>
 #include <vector>
 
-#include "base/cxx17_backports.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/version.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -33,7 +32,7 @@
     { "1..0", "1.0.0" }                // Empty version component
   };
 
-  for (size_t i = 0; i < base::size(versions); i++) {
+  for (size_t i = 0; i < std::size(versions); i++) {
     base::Version version;
     WebPluginInfo::CreateVersionFromString(
         base::ASCIIToUTF16(versions[i][0]), &version);
diff --git a/content/common/zygote/zygote_communication_linux.cc b/content/common/zygote/zygote_communication_linux.cc
index 30d4c6b7..769d9d1d 100644
--- a/content/common/zygote/zygote_communication_linux.cc
+++ b/content/common/zygote/zygote_communication_linux.cc
@@ -9,7 +9,6 @@
 
 #include "base/base_switches.h"
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "base/i18n/unicodestring.h"
 #include "base/logging.h"
 #include "base/metrics/histogram_functions.h"
@@ -245,7 +244,7 @@
       sandbox::policy::switches::kNoSandbox,
   };
   cmd_line.CopySwitchesFrom(browser_command_line, kForwardSwitches,
-                            base::size(kForwardSwitches));
+                            std::size(kForwardSwitches));
 
   pid_ = std::move(launcher).Run(&cmd_line, &control_fd_);
 
diff --git a/content/public/browser/navigation_handle.h b/content/public/browser/navigation_handle.h
index 0a0cf34..b03b9ae4 100644
--- a/content/public/browser/navigation_handle.h
+++ b/content/public/browser/navigation_handle.h
@@ -47,7 +47,6 @@
 }  // namespace net
 
 namespace content {
-class CommitDeferringCondition;
 struct GlobalRenderFrameHostId;
 struct GlobalRequestID;
 class NavigationEntry;
@@ -561,11 +560,6 @@
   // Returns a reference to NavigationHandle Java counterpart.
   virtual const base::android::JavaRef<jobject>& GetJavaNavigationHandle() = 0;
 #endif
-
-  // Returns the CommitDeferringCondition that is currently preventing this
-  // navigation from committing, or nullptr if the navigation isn't currently
-  // blocked on a CommitDeferringCondition.
-  virtual CommitDeferringCondition* GetCommitDeferringConditionForTesting() = 0;
 };
 
 }  // namespace content
diff --git a/content/public/browser/web_contents.h b/content/public/browser/web_contents.h
index 68b521f..ad5c139 100644
--- a/content/public/browser/web_contents.h
+++ b/content/public/browser/web_contents.h
@@ -1313,6 +1313,14 @@
   // Serialise this object into a trace.
   virtual void WriteIntoTrace(perfetto::TracedValue context) = 0;
 
+  // Disallows navigations that activate a prerendered page or a back/forward
+  // cached page in this WebContents. Such pages will be ignored and normal
+  // navigation will occur instead.
+  // TODO(https://crbug.com/1234857): Remove this. This is a temporary
+  // workaround to avoid breaking features that must be taught to deal with
+  // activation navigations.
+  virtual void DisallowActivationNavigationsForBug1234857() = 0;
+
   // Returns the value from CreateParams::creator_location.
   virtual const base::Location& GetCreatorLocation() = 0;
 
diff --git a/content/public/test/browser_test_utils.cc b/content/public/test/browser_test_utils.cc
index 141b411..7d158699 100644
--- a/content/public/test/browser_test_utils.cc
+++ b/content/public/test/browser_test_utils.cc
@@ -3387,10 +3387,6 @@
 void TestActivationManager::ResumeActivation() {
   TRACE_EVENT("test", "TestActivationManager::ResumeActivation");
   DCHECK(is_paused());
-
-  // Set desired_state_ to kFinished so the navigation can proceed to finish
-  // unless it yields somewhere and/or the caller calls another WaitFor method.
-  desired_state_ = ActivationState::kFinished;
   std::move(resume_callback_).Run();
 }
 
diff --git a/content/public/test/mock_navigation_handle.h b/content/public/test/mock_navigation_handle.h
index 1293706a..cc0460c 100644
--- a/content/public/test/mock_navigation_handle.h
+++ b/content/public/test/mock_navigation_handle.h
@@ -211,9 +211,6 @@
     return weak_factory_.GetSafeRef();
   }
 
-  CommitDeferringCondition* GetCommitDeferringConditionForTesting() override {
-    return nullptr;
-  }
   void set_url(const GURL& url) { url_ = url; }
   void set_previous_main_frame_url(const GURL& previous_main_frame_url) {
     previous_main_frame_url_ = previous_main_frame_url;
diff --git a/content/renderer/java/gin_java_bridge_value_converter_unittest.cc b/content/renderer/java/gin_java_bridge_value_converter_unittest.cc
index d0ace60..6e6332da 100644
--- a/content/renderer/java/gin_java_bridge_value_converter_unittest.cc
+++ b/content/renderer/java/gin_java_bridge_value_converter_unittest.cc
@@ -9,7 +9,6 @@
 #include <cmath>
 #include <memory>
 
-#include "base/cxx17_backports.h"
 #include "base/strings/stringprintf.h"
 #include "content/common/android/gin_java_bridge_value.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -130,7 +129,7 @@
     "4", "Int32Array", "4", "Uint32Array",
     "4", "Float32Array", "8", "Float64Array"
   };
-  for (size_t i = 0; i < base::size(array_types); i += 2) {
+  for (size_t i = 0; i < std::size(array_types); i += 2) {
     const char* typed_array_type = array_types[i + 1];
     v8::Local<v8::Script> script(
         v8::Script::Compile(
diff --git a/content/renderer/pepper/pepper_audio_encoder_host.cc b/content/renderer/pepper/pepper_audio_encoder_host.cc
index 4da209c1..0d166d50 100644
--- a/content/renderer/pepper/pepper_audio_encoder_host.cc
+++ b/content/renderer/pepper/pepper_audio_encoder_host.cc
@@ -5,10 +5,10 @@
 #include "content/renderer/pepper/pepper_audio_encoder_host.h"
 
 #include <stddef.h>
+
 #include <utility>
 
 #include "base/bind.h"
-#include "base/cxx17_backports.h"
 #include "base/memory/unsafe_shared_memory_region.h"
 #include "content/public/renderer/renderer_ppapi_host.h"
 #include "content/renderer/pepper/host_globals.h"
@@ -95,7 +95,7 @@
   std::vector<PP_AudioProfileDescription> profiles;
   static const uint32_t sampling_rates[] = {8000, 12000, 16000, 24000, 48000};
 
-  for (uint32_t i = 0; i < base::size(sampling_rates); ++i) {
+  for (uint32_t i = 0; i < std::size(sampling_rates); ++i) {
     PP_AudioProfileDescription profile;
     profile.profile = PP_AUDIOPROFILE_OPUS;
     profile.max_channels = 2;
diff --git a/content/renderer/pepper/pepper_graphics_2d_host_unittest.cc b/content/renderer/pepper/pepper_graphics_2d_host_unittest.cc
index 9118164..606ef11ae 100644
--- a/content/renderer/pepper/pepper_graphics_2d_host_unittest.cc
+++ b/content/renderer/pepper/pepper_graphics_2d_host_unittest.cc
@@ -6,7 +6,6 @@
 
 #include <stddef.h>
 
-#include "base/cxx17_backports.h"
 #include "base/test/task_environment.h"
 #include "content/public/renderer/ppapi_gfx_conversion.h"
 #include "content/renderer/pepper/mock_renderer_ppapi_host.h"
@@ -136,7 +135,7 @@
                // Check negative scroll deltas
                {10, 10, 20, 20, 5, 5, 10, 10, -6, -4, -3, -2, 0.5, true},
                {10, 10, 20, 20, 5, 5, 10, 10, -6, -3, -3, -1, 0.5, false}, };
-  for (size_t i = 0; i < base::size(tests); ++i) {
+  for (size_t i = 0; i < std::size(tests); ++i) {
     gfx::Rect r1(tests[i].x1, tests[i].y1, tests[i].w1, tests[i].h1);
     gfx::Rect r2(tests[i].x2, tests[i].y2, tests[i].w2, tests[i].h2);
     gfx::Rect orig = r1;
diff --git a/content/renderer/render_view_browsertest.cc b/content/renderer/render_view_browsertest.cc
index b915910..53c77828 100644
--- a/content/renderer/render_view_browsertest.cc
+++ b/content/renderer/render_view_browsertest.cc
@@ -12,7 +12,6 @@
 #include "base/callback.h"
 #include "base/callback_helpers.h"
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "base/json/json_reader.h"
 #include "base/json/json_writer.h"
 #include "base/location.h"
@@ -162,7 +161,7 @@
       {MockKeyboard::RIGHT_ALT, ui::EF_ALT_DOWN},
   };
   int flags = 0;
-  for (size_t i = 0; i < base::size(kModifierMap); ++i) {
+  for (size_t i = 0; i < std::size(kModifierMap); ++i) {
     if (kModifierMap[i].src & modifiers) {
       flags |= kModifierMap[i].dst;
     }
@@ -712,7 +711,7 @@
 
   // Set up post data.
   const char raw_data[] = "post \0\ndata";
-  const size_t length = base::size(raw_data);
+  const size_t length = std::size(raw_data);
   scoped_refptr<network::ResourceRequestBody> post_data(
       new network::ResourceRequestBody);
   post_data->AppendBytes(raw_data, length);
@@ -894,7 +893,7 @@
       blink::kWebNavigationTypeOther,
   };
 
-  for (size_t i = 0; i < base::size(kNavTypes); ++i) {
+  for (size_t i = 0; i < std::size(kNavTypes); ++i) {
     auto navigation_info = std::make_unique<blink::WebNavigationInfo>();
     navigation_info->url_request = blink::WebURLRequest(GURL("http://foo.com"));
     navigation_info->url_request.SetRequestorOrigin(
@@ -1368,7 +1367,7 @@
     input_mode = updated_states()[0]->mode;
     EXPECT_EQ(ui::TEXT_INPUT_TYPE_PASSWORD, type);
 
-    for (size_t test = 0; test < base::size(kInputModeTestCases); test++) {
+    for (size_t test = 0; test < std::size(kInputModeTestCases); test++) {
       const InputModeTestCase* test_case = &kInputModeTestCases[test];
       std::u16string javascript = base::ASCIIToUTF16(base::StringPrintf(
           "document.getElementById('%s').focus();", test_case->input_id));
@@ -1943,7 +1942,7 @@
       {IME_FINISHCOMPOSINGTEXT, false, -1, -1, L"", L"\xC548\xB155"},
   };
 
-  for (size_t i = 0; i < base::size(kImeMessages); i++) {
+  for (size_t i = 0; i < std::size(kImeMessages); i++) {
     const ImeMessage* ime_message = &kImeMessages[i];
     switch (ime_message->command) {
       case IME_INITIALIZE:
diff --git a/content/services/auction_worklet/auction_v8_helper_unittest.cc b/content/services/auction_worklet/auction_v8_helper_unittest.cc
index eb28ce3..5edb4b6 100644
--- a/content/services/auction_worklet/auction_v8_helper_unittest.cc
+++ b/content/services/auction_worklet/auction_v8_helper_unittest.cc
@@ -8,7 +8,6 @@
 #include <string>
 #include <vector>
 
-#include "base/cxx17_backports.h"
 #include "base/strings/stringprintf.h"
 #include "base/synchronization/lock.h"
 #include "base/test/bind.h"
@@ -1266,13 +1265,12 @@
 
   v8::Local<v8::WasmModuleObject> wasm_module;
   absl::optional<std::string> compile_error;
-  ASSERT_TRUE(
-      helper_
-          ->CompileWasm(std::string(kMinimalWasmModuleBytes,
-                                    base::size(kMinimalWasmModuleBytes)),
-                        GURL("https://foo.test/"),
-                        /*debug_id=*/nullptr, compile_error)
-          .ToLocal(&wasm_module));
+  ASSERT_TRUE(helper_
+                  ->CompileWasm(std::string(kMinimalWasmModuleBytes,
+                                            std::size(kMinimalWasmModuleBytes)),
+                                GURL("https://foo.test/"),
+                                /*debug_id=*/nullptr, compile_error)
+                  .ToLocal(&wasm_module));
   EXPECT_FALSE(compile_error.has_value());
 }
 
@@ -1317,7 +1315,7 @@
   absl::optional<std::string> error_out;
   EXPECT_TRUE(CompileWasmOnV8ThreadAndWait(
       id, GURL("https://example.com"),
-      std::string(kMinimalWasmModuleBytes, base::size(kMinimalWasmModuleBytes)),
+      std::string(kMinimalWasmModuleBytes, std::size(kMinimalWasmModuleBytes)),
       &error_out));
   TestDevToolsAgentClient::Event script_parsed =
       debug_client.WaitForMethodNotification("Debugger.scriptParsed");
@@ -1348,13 +1346,12 @@
   // Compile the WASM module...
   v8::Local<v8::WasmModuleObject> wasm_module;
   absl::optional<std::string> error_msg;
-  ASSERT_TRUE(
-      helper_
-          ->CompileWasm(std::string(kMinimalWasmModuleBytes,
-                                    base::size(kMinimalWasmModuleBytes)),
-                        GURL("https://foo.test/"),
-                        /*debug_id=*/nullptr, error_msg)
-          .ToLocal(&wasm_module));
+  ASSERT_TRUE(helper_
+                  ->CompileWasm(std::string(kMinimalWasmModuleBytes,
+                                            std::size(kMinimalWasmModuleBytes)),
+                                GURL("https://foo.test/"),
+                                /*debug_id=*/nullptr, error_msg)
+                  .ToLocal(&wasm_module));
   EXPECT_FALSE(error_msg.has_value());
 
   // And the test script.
diff --git a/content/services/auction_worklet/auction_v8_inspector_util_unittest.cc b/content/services/auction_worklet/auction_v8_inspector_util_unittest.cc
index df41302..d24973a7 100644
--- a/content/services/auction_worklet/auction_v8_inspector_util_unittest.cc
+++ b/content/services/auction_worklet/auction_v8_inspector_util_unittest.cc
@@ -9,7 +9,6 @@
 #include <string>
 #include <vector>
 
-#include "base/cxx17_backports.h"
 #include "testing/gmock/include/gmock/gmock-matchers.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "v8/include/v8-inspector.h"
@@ -21,7 +20,7 @@
 TEST(AuctionV8InspectorUtilTest, GetStringBytes8) {
   const uint8_t chars[] = {'a', 'b', 'c', 0xD0, 0xB0, 0xD0, 0xB1, 0xD0, 0xB2};
   auto string_buf = v8_inspector::StringBuffer::create(
-      v8_inspector::StringView(chars, base::size(chars)));
+      v8_inspector::StringView(chars, std::size(chars)));
   EXPECT_THAT(GetStringBytes(string_buf.get()),
               ElementsAre('a', 'b', 'c', 0xD0, 0xB0, 0xD0, 0xB1, 0xD0, 0xB2));
 }
@@ -36,7 +35,7 @@
                               // U+1F600, GRINNING FACE, as surrogate pairs.
                               0xD83D, 0xDE00};
   auto string_buf = v8_inspector::StringBuffer::create(
-      v8_inspector::StringView(chars16, base::size(chars16)));
+      v8_inspector::StringView(chars16, std::size(chars16)));
   EXPECT_THAT(GetStringBytes(string_buf.get()),
               ElementsAre(0xD0, 0x94, 0xD1, 0x8F, 0xD0, 0xBA, 0xD1, 0x83, 0xD1,
                           0x8E, '!', 0xF0, 0x9F, 0x98, 0x80));
diff --git a/content/services/auction_worklet/bidder_worklet.cc b/content/services/auction_worklet/bidder_worklet.cc
index cc801cd..40fc8749 100644
--- a/content/services/auction_worklet/bidder_worklet.cc
+++ b/content/services/auction_worklet/bidder_worklet.cc
@@ -13,7 +13,6 @@
 
 #include "base/bind.h"
 #include "base/callback.h"
-#include "base/cxx17_backports.h"
 #include "base/logging.h"
 #include "base/memory/scoped_refptr.h"
 #include "base/strings/strcat.h"
@@ -92,7 +91,7 @@
       return v8::MaybeLocal<v8::Value>();
     }
     prev_wins_v8.push_back(
-        v8::Array::New(isolate, win_values, base::size(win_values)));
+        v8::Array::New(isolate, win_values, std::size(win_values)));
   }
   return v8::Array::New(isolate, prev_wins_v8.data(), prev_wins_v8.size());
 }
diff --git a/content/services/auction_worklet/bidder_worklet_unittest.cc b/content/services/auction_worklet/bidder_worklet_unittest.cc
index 5df3e20..60f0e19 100644
--- a/content/services/auction_worklet/bidder_worklet_unittest.cc
+++ b/content/services/auction_worklet/bidder_worklet_unittest.cc
@@ -9,7 +9,6 @@
 #include <vector>
 
 #include "base/bind.h"
-#include "base/cxx17_backports.h"
 #include "base/feature_list.h"
 #include "base/memory/raw_ptr.h"
 #include "base/run_loop.h"
@@ -58,7 +57,7 @@
 // Packs kToyWasm into a std::string.
 std::string ToyWasm() {
   return std::string(reinterpret_cast<const char*>(kToyWasm),
-                     base::size(kToyWasm));
+                     std::size(kToyWasm));
 }
 
 // Creates generateBid() scripts with the specified result value, in raw
diff --git a/content/services/auction_worklet/worklet_loader_unittest.cc b/content/services/auction_worklet/worklet_loader_unittest.cc
index 1673868..06af489 100644
--- a/content/services/auction_worklet/worklet_loader_unittest.cc
+++ b/content/services/auction_worklet/worklet_loader_unittest.cc
@@ -8,7 +8,6 @@
 #include <utility>
 
 #include "base/bind.h"
-#include "base/cxx17_backports.h"
 #include "base/run_loop.h"
 #include "base/synchronization/waitable_event.h"
 #include "base/test/bind.h"
@@ -233,10 +232,10 @@
 }
 
 TEST_F(WorkletLoaderTest, LoadWasmSuccess) {
-  AddResponse(&url_loader_factory_, url_, "application/wasm",
-              /*charset=*/absl::nullopt,
-              std::string(kMinimalWasmModuleBytes,
-                          base::size(kMinimalWasmModuleBytes)));
+  AddResponse(
+      &url_loader_factory_, url_, "application/wasm",
+      /*charset=*/absl::nullopt,
+      std::string(kMinimalWasmModuleBytes, std::size(kMinimalWasmModuleBytes)));
   WorkletWasmLoader worklet_loader(
       &url_loader_factory_, url_, v8_helper_,
       scoped_refptr<AuctionV8Helper::DebugId>(),
diff --git a/content/shell/browser/shell_content_browser_client.cc b/content/shell/browser/shell_content_browser_client.cc
index 4c98753..638ddca 100644
--- a/content/shell/browser/shell_content_browser_client.cc
+++ b/content/shell/browser/shell_content_browser_client.cc
@@ -5,11 +5,11 @@
 #include "content/shell/browser/shell_content_browser_client.h"
 
 #include <stddef.h>
+
 #include <utility>
 
 #include "base/base_switches.h"
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "base/feature_list.h"
 #include "base/files/file.h"
 #include "base/files/file_util.h"
@@ -302,8 +302,7 @@
   };
 
   command_line->CopySwitchesFrom(*base::CommandLine::ForCurrentProcess(),
-                                 kForwardSwitches,
-                                 base::size(kForwardSwitches));
+                                 kForwardSwitches, std::size(kForwardSwitches));
 
 #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
   if (base::CommandLine::ForCurrentProcess()->HasSwitch(
diff --git a/content/shell/browser/shell_download_manager_delegate.cc b/content/shell/browser/shell_download_manager_delegate.cc
index 6887ef5..2856779 100644
--- a/content/shell/browser/shell_download_manager_delegate.cc
+++ b/content/shell/browser/shell_download_manager_delegate.cc
@@ -167,7 +167,7 @@
 #if BUILDFLAG(IS_WIN)
   std::wstring file_part = base::FilePath(suggested_path).BaseName().value();
   wchar_t file_name[MAX_PATH];
-  base::wcslcpy(file_name, file_part.c_str(), base::size(file_name));
+  base::wcslcpy(file_name, file_part.c_str(), std::size(file_name));
   OPENFILENAME save_as;
   ZeroMemory(&save_as, sizeof(save_as));
   save_as.lStructSize = sizeof(OPENFILENAME);
@@ -178,7 +178,7 @@
   save_as.hwndOwner =
       web_contents->GetNativeView()->GetHost()->GetAcceleratedWidget();
   save_as.lpstrFile = file_name;
-  save_as.nMaxFile = base::size(file_name);
+  save_as.nMaxFile = std::size(file_name);
 
   std::wstring directory;
   if (!suggested_path.empty())
diff --git a/content/shell/browser/shell_platform_delegate_views.cc b/content/shell/browser/shell_platform_delegate_views.cc
index c68b149..56b42a4 100644
--- a/content/shell/browser/shell_platform_delegate_views.cc
+++ b/content/shell/browser/shell_platform_delegate_views.cc
@@ -2,9 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "base/memory/raw_ptr.h"
-#include "content/shell/browser/shell_platform_delegate.h"
-
 #include <stddef.h>
 
 #include <algorithm>
@@ -13,7 +10,7 @@
 #include "base/bind.h"
 #include "base/command_line.h"
 #include "base/containers/contains.h"
-#include "base/cxx17_backports.h"
+#include "base/memory/raw_ptr.h"
 #include "base/strings/utf_string_conversions.h"
 #include "build/build_config.h"
 #include "build/chromeos_buildflags.h"
@@ -21,6 +18,7 @@
 #include "content/public/browser/render_widget_host_view.h"
 #include "content/public/browser/web_contents.h"
 #include "content/shell/browser/shell.h"
+#include "content/shell/browser/shell_platform_delegate.h"
 #include "ui/aura/env.h"
 #include "ui/aura/window.h"
 #include "ui/aura/window_event_dispatcher.h"
@@ -241,7 +239,7 @@
     DCHECK(GetWidget());
     static const ui::KeyboardCode keys[] = {ui::VKEY_F5, ui::VKEY_BROWSER_BACK,
                                             ui::VKEY_BROWSER_FORWARD};
-    for (size_t i = 0; i < base::size(keys); ++i) {
+    for (size_t i = 0; i < std::size(keys); ++i) {
       GetFocusManager()->RegisterAccelerator(
           ui::Accelerator(keys[i], ui::EF_NONE),
           ui::AcceleratorManager::kNormalPriority, this);
diff --git a/content/test/content_browser_test_test.cc b/content/test/content_browser_test_test.cc
index b406e26..f27a5a8 100644
--- a/content/test/content_browser_test_test.cc
+++ b/content/test/content_browser_test_test.cc
@@ -66,7 +66,7 @@
       switches::kOzonePlatform,
   };
   command_line.CopySwitchesFrom(cmdline, kSwitchesToCopy,
-                                base::size(kSwitchesToCopy));
+                                std::size(kSwitchesToCopy));
 #endif
   return command_line;
 }
diff --git a/content/test/mock_keyboard_driver_win.cc b/content/test/mock_keyboard_driver_win.cc
index e721b672..e42125a5 100644
--- a/content/test/mock_keyboard_driver_win.cc
+++ b/content/test/mock_keyboard_driver_win.cc
@@ -8,7 +8,6 @@
 #include <string.h>
 
 #include "base/check.h"
-#include "base/cxx17_backports.h"
 #include "content/test/mock_keyboard.h"
 
 namespace content {
@@ -103,7 +102,7 @@
     {L"00001009", MockKeyboard::LAYOUT_CANADIAN_FRENCH},
   };
 
-  for (size_t i = 0; i < base::size(kLanguageIDs); ++i) {
+  for (size_t i = 0; i < std::size(kLanguageIDs); ++i) {
     if (layout == kLanguageIDs[i].keyboard_layout) {
       HKL new_keyboard_layout = LoadKeyboardLayout(kLanguageIDs[i].language,
                                                    KLF_ACTIVATE);
@@ -143,7 +142,7 @@
     {VK_RCONTROL, MockKeyboard::RIGHT_CONTROL},
     {VK_RMENU,    MockKeyboard::RIGHT_ALT},
   };
-  for (size_t i = 0; i < base::size(kModifierMasks); ++i) {
+  for (size_t i = 0; i < std::size(kModifierMasks); ++i) {
     const int kKeyDownMask = 0x80;
     if (modifiers & kModifierMasks[i].mask)
       keyboard_states_[kModifierMasks[i].key_code] = kKeyDownMask;
@@ -161,7 +160,7 @@
   wchar_t code[16];
   int length =
       ToUnicodeEx(key_code, MapVirtualKey(key_code, 0), &keyboard_states_[0],
-                  &code[0], base::size(code), 0, active_keyboard_layout_);
+                  &code[0], std::size(code), 0, active_keyboard_layout_);
   if (length > 0)
     output->assign(code);
   return length;
diff --git a/content/web_test/browser/web_test_browser_main_platform_support_win.cc b/content/web_test/browser/web_test_browser_main_platform_support_win.cc
index fa95feb..3563eac 100644
--- a/content/web_test/browser/web_test_browser_main_platform_support_win.cc
+++ b/content/web_test/browser/web_test_browser_main_platform_support_win.cc
@@ -6,12 +6,12 @@
 
 #include <stddef.h>
 #include <windows.h>
+
 #include <iostream>
 #include <list>
 #include <string>
 
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
 #include "base/logging.h"
@@ -64,7 +64,7 @@
                               &metrics.lfSmCaptionFont};
   const wchar_t required_font[] = L"Segoe UI";
   int required_font_size = -12;
-  for (size_t i = 0; i < base::size(system_fonts); ++i) {
+  for (size_t i = 0; i < std::size(system_fonts); ++i) {
     if (system_fonts[i]->lfHeight != required_font_size ||
         wcscmp(required_font, system_fonts[i]->lfFaceName)) {
       errors.push_back(
diff --git a/content/web_test/browser/web_test_content_browser_client.cc b/content/web_test/browser/web_test_content_browser_client.cc
index 54b6206..4379497 100644
--- a/content/web_test/browser/web_test_content_browser_client.cc
+++ b/content/web_test/browser/web_test_content_browser_client.cc
@@ -12,7 +12,6 @@
 #include <vector>
 
 #include "base/bind.h"
-#include "base/cxx17_backports.h"
 #include "base/no_destructor.h"
 #include "base/path_service.h"
 #include "base/strings/pattern.h"
@@ -351,8 +350,7 @@
   };
 
   command_line->CopySwitchesFrom(*base::CommandLine::ForCurrentProcess(),
-                                 kForwardSwitches,
-                                 base::size(kForwardSwitches));
+                                 kForwardSwitches, std::size(kForwardSwitches));
 }
 
 std::unique_ptr<BrowserMainParts>
@@ -411,8 +409,8 @@
     };
 
     origins_to_isolate.reserve(origins_to_isolate.size() +
-                               base::size(kWptHostnames) *
-                                   base::size(kOriginTemplates));
+                               std::size(kWptHostnames) *
+                                   std::size(kOriginTemplates));
     for (const char* kWptHostname : kWptHostnames) {
       for (const char* kOriginTemplate : kOriginTemplates) {
         std::string origin = base::StringPrintf(kOriginTemplate, kWptHostname);
diff --git a/content/web_test/browser/web_test_push_messaging_service.cc b/content/web_test/browser/web_test_push_messaging_service.cc
index 0d68b9a..4fe28a4 100644
--- a/content/web_test/browser/web_test_push_messaging_service.cc
+++ b/content/web_test/browser/web_test_push_messaging_service.cc
@@ -6,7 +6,6 @@
 
 #include "base/bind.h"
 #include "base/callback.h"
-#include "base/cxx17_backports.h"
 #include "base/time/time.h"
 #include "content/public/browser/permission_type.h"
 #include "content/web_test/browser/web_test_browser_context.h"
@@ -84,9 +83,9 @@
 
   if (permission_status == blink::mojom::PermissionStatus::GRANTED) {
     std::vector<uint8_t> p256dh(kTestP256Key,
-                                kTestP256Key + base::size(kTestP256Key));
+                                kTestP256Key + std::size(kTestP256Key));
     std::vector<uint8_t> auth(kAuthentication,
-                              kAuthentication + base::size(kAuthentication));
+                              kAuthentication + std::size(kAuthentication));
     const std::string subscription_id = "layoutTestRegistrationId";
     const GURL endpoint = CreateEndpoint(subscription_id);
 
@@ -110,9 +109,9 @@
     const std::string& subscription_id,
     SubscriptionInfoCallback callback) {
   std::vector<uint8_t> p256dh(kTestP256Key,
-                              kTestP256Key + base::size(kTestP256Key));
+                              kTestP256Key + std::size(kTestP256Key));
   std::vector<uint8_t> auth(kAuthentication,
-                            kAuthentication + base::size(kAuthentication));
+                            kAuthentication + std::size(kAuthentication));
   const GURL endpoint = CreateEndpoint(subscription_id);
   std::move(callback).Run(true /* is_valid */, endpoint, GetFutureTime(),
                           p256dh, auth);
diff --git a/content/web_test/renderer/accessibility_controller.cc b/content/web_test/renderer/accessibility_controller.cc
index 382adb9..6c4edf5d 100644
--- a/content/web_test/renderer/accessibility_controller.cc
+++ b/content/web_test/renderer/accessibility_controller.cc
@@ -4,7 +4,6 @@
 
 #include "content/web_test/renderer/accessibility_controller.h"
 
-#include "base/cxx17_backports.h"
 #include "content/web_test/renderer/web_frame_test_proxy.h"
 #include "gin/handle.h"
 #include "gin/object_template_builder.h"
@@ -235,7 +234,7 @@
   };
   local_frame->CallFunctionEvenIfScriptDisabled(
       v8::Local<v8::Function>::New(isolate, notification_callback_),
-      context->Global(), base::size(argv), argv);
+      context->Global(), std::size(argv), argv);
 }
 
 void AccessibilityController::LogAccessibilityEvents() {
diff --git a/content/web_test/renderer/web_ax_object_proxy.cc b/content/web_test/renderer/web_ax_object_proxy.cc
index 0df4445..c9c0708c 100644
--- a/content/web_test/renderer/web_ax_object_proxy.cc
+++ b/content/web_test/renderer/web_ax_object_proxy.cc
@@ -10,7 +10,6 @@
 #include <map>
 #include <utility>
 
-#include "base/cxx17_backports.h"
 #include "base/strings/stringprintf.h"
 #include "gin/handle.h"
 #include "third_party/blink/public/platform/web_string.h"
@@ -505,7 +504,7 @@
   // dirtying layout during post-layout hooks?
   frame->CallFunctionEvenIfScriptDisabled(
       v8::Local<v8::Function>::New(isolate, notification_callback_),
-      context->Global(), base::size(argv), argv);
+      context->Global(), std::size(argv), argv);
 }
 
 void WebAXObjectProxy::Reset() {
diff --git a/content/web_test/renderer/web_test_grammar_checker.cc b/content/web_test/renderer/web_test_grammar_checker.cc
index 309cd82..76516c7 100644
--- a/content/web_test/renderer/web_test_grammar_checker.cc
+++ b/content/web_test/renderer/web_test_grammar_checker.cc
@@ -9,7 +9,6 @@
 #include <algorithm>
 
 #include "base/check.h"
-#include "base/cxx17_backports.h"
 #include "base/strings/string_util.h"
 #include "third_party/blink/public/platform/web_string.h"
 #include "third_party/blink/public/web/web_text_checking_result.h"
@@ -54,7 +53,7 @@
       {"the the adlj adaasj sdklj. there there", 33, 5},
       {"zz apple orange.", 0, 16},
   };
-  for (size_t i = 0; i < base::size(kGrammarErrors); ++i) {
+  for (size_t i = 0; i < std::size(kGrammarErrors); ++i) {
     size_t offset = 0;
     std::u16string error(
         kGrammarErrors[i].text,
diff --git a/content/web_test/renderer/web_test_spell_checker.cc b/content/web_test/renderer/web_test_spell_checker.cc
index a6cc9a9..f6b278b6 100644
--- a/content/web_test/renderer/web_test_spell_checker.cc
+++ b/content/web_test/renderer/web_test_spell_checker.cc
@@ -9,7 +9,6 @@
 #include <algorithm>
 
 #include "base/check_op.h"
-#include "base/cxx17_backports.h"
 #include "base/strings/string_util.h"
 
 namespace content {
@@ -165,7 +164,7 @@
       "ifmmp", "qwertyuiopasd", "qwertyuiopasdf", "upper case", "wellcome"};
 
   misspelled_words_.clear();
-  for (size_t i = 0; i < base::size(misspelled_words); ++i)
+  for (size_t i = 0; i < std::size(misspelled_words); ++i)
     misspelled_words_.push_back(
         std::u16string(misspelled_words[i],
                        misspelled_words[i] + strlen(misspelled_words[i])));
diff --git a/device/bluetooth/bluetooth_device_unittest.cc b/device/bluetooth/bluetooth_device_unittest.cc
index 6345515..3066748 100644
--- a/device/bluetooth/bluetooth_device_unittest.cc
+++ b/device/bluetooth/bluetooth_device_unittest.cc
@@ -8,7 +8,6 @@
 
 #include "base/bind.h"
 #include "base/containers/contains.h"
-#include "base/cxx17_backports.h"
 #include "base/logging.h"
 #include "base/run_loop.h"
 #include "base/strings/utf_string_conversions.h"
@@ -88,7 +87,7 @@
     "1a2b3c4d5e6f",
   };
 
-  for (size_t i = 0; i < base::size(kValidFormats); ++i) {
+  for (size_t i = 0; i < std::size(kValidFormats); ++i) {
     SCOPED_TRACE(std::string("Input format: '") + kValidFormats[i] + "'");
     EXPECT_EQ("1A:2B:3C:4D:5E:6F",
               CanonicalizeBluetoothAddress(kValidFormats[i]));
@@ -127,7 +126,7 @@
       "1A|2B|3C|4D|5E|6F",
   };
 
-  for (size_t i = 0; i < base::size(kInvalidFormats); ++i) {
+  for (size_t i = 0; i < std::size(kInvalidFormats); ++i) {
     SCOPED_TRACE(std::string("Input format: '") + kInvalidFormats[i] + "'");
     EXPECT_EQ(std::string(), CanonicalizeBluetoothAddress(kInvalidFormats[i]));
 
diff --git a/device/bluetooth/bluetooth_gatt_descriptor.cc b/device/bluetooth/bluetooth_gatt_descriptor.cc
index 822e3ab..99441ce 100644
--- a/device/bluetooth/bluetooth_gatt_descriptor.cc
+++ b/device/bluetooth/bluetooth_gatt_descriptor.cc
@@ -5,9 +5,9 @@
 #include "device/bluetooth/bluetooth_gatt_descriptor.h"
 
 #include <stddef.h>
+
 #include <vector>
 
-#include "base/cxx17_backports.h"
 #include "base/lazy_instance.h"
 
 namespace device {
@@ -25,7 +25,7 @@
         "0x2900", "0x2901", "0x2902", "0x2903", "0x2904", "0x2905"
     };
 
-    for (size_t i = 0; i < base::size(strings); ++i)
+    for (size_t i = 0; i < std::size(strings); ++i)
       uuids.push_back(BluetoothUUID(strings[i]));
 
     return uuids;
diff --git a/device/bluetooth/bluetooth_remote_gatt_characteristic_unittest.cc b/device/bluetooth/bluetooth_remote_gatt_characteristic_unittest.cc
index 64973dd..3870b50 100644
--- a/device/bluetooth/bluetooth_remote_gatt_characteristic_unittest.cc
+++ b/device/bluetooth/bluetooth_remote_gatt_characteristic_unittest.cc
@@ -2,19 +2,19 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "device/bluetooth/bluetooth_remote_gatt_characteristic.h"
+
 #include <stdint.h>
 
 #include <functional>
 #include <utility>
 
 #include "base/bind.h"
-#include "base/cxx17_backports.h"
 #include "base/logging.h"
 #include "base/memory/raw_ptr.h"
 #include "base/run_loop.h"
 #include "base/test/bind.h"
 #include "build/build_config.h"
-#include "device/bluetooth/bluetooth_remote_gatt_characteristic.h"
 #include "device/bluetooth/bluetooth_remote_gatt_service.h"
 #include "device/bluetooth/test/mock_bluetooth_adapter.h"
 #include "device/bluetooth/test/test_bluetooth_adapter_observer.h"
@@ -1003,7 +1003,7 @@
 
   base::RunLoop loop;
   uint8_t values[] = {0, 1, 2, 3, 4, 0xf, 0xf0, 0xff};
-  std::vector<uint8_t> test_vector(values, values + base::size(values));
+  std::vector<uint8_t> test_vector(values, values + std::size(values));
   characteristic1_->WriteRemoteCharacteristic(
       test_vector, WriteType::kWithResponse, base::BindLambdaForTesting([&] {
         EXPECT_EQ(1, gatt_write_characteristic_attempts_);
@@ -1050,7 +1050,7 @@
   TestBluetoothAdapterObserver observer(adapter_);
 
   uint8_t values[] = {0, 1, 2, 3, 4, 0xf, 0xf0, 0xff};
-  std::vector<uint8_t> test_vector(values, values + base::size(values));
+  std::vector<uint8_t> test_vector(values, values + std::size(values));
   characteristic1_->DeprecatedWriteRemoteCharacteristic(
       test_vector, GetCallback(Call::EXPECTED),
       GetGattErrorCallback(Call::NOT_EXPECTED));
@@ -1090,7 +1090,7 @@
       GetReadValueCallback(Call::EXPECTED, Result::SUCCESS));
 
   uint8_t values[] = {0, 1, 2, 3, 4, 0xf, 0xf0, 0xff};
-  std::vector<uint8_t> test_vector(values, values + base::size(values));
+  std::vector<uint8_t> test_vector(values, values + std::size(values));
   SimulateGattCharacteristicRead(characteristic1_, test_vector);
   base::RunLoop().RunUntilIdle();
   EXPECT_EQ(1, gatt_read_characteristic_attempts_);
@@ -1136,7 +1136,7 @@
 
   base::RunLoop loop1;
   uint8_t values[] = {0, 1, 2, 3, 4, 0xf, 0xf0, 0xff};
-  std::vector<uint8_t> test_vector(values, values + base::size(values));
+  std::vector<uint8_t> test_vector(values, values + std::size(values));
   characteristic1_->WriteRemoteCharacteristic(
       test_vector, WriteType::kWithResponse, base::BindLambdaForTesting([&] {
         EXPECT_EQ(1, gatt_write_characteristic_attempts_);
@@ -1195,7 +1195,7 @@
       BluetoothRemoteGattCharacteristic::PROPERTY_WRITE));
 
   uint8_t values[] = {0, 1, 2, 3, 4, 0xf, 0xf0, 0xff};
-  std::vector<uint8_t> test_vector(values, values + base::size(values));
+  std::vector<uint8_t> test_vector(values, values + std::size(values));
   characteristic1_->DeprecatedWriteRemoteCharacteristic(
       test_vector, GetCallback(Call::EXPECTED),
       GetGattErrorCallback(Call::NOT_EXPECTED));
diff --git a/device/bluetooth/bluetooth_remote_gatt_descriptor_unittest.cc b/device/bluetooth/bluetooth_remote_gatt_descriptor_unittest.cc
index 79be6db..faf3d630 100644
--- a/device/bluetooth/bluetooth_remote_gatt_descriptor_unittest.cc
+++ b/device/bluetooth/bluetooth_remote_gatt_descriptor_unittest.cc
@@ -2,7 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "base/cxx17_backports.h"
 #include "base/logging.h"
 #include "base/memory/raw_ptr.h"
 #include "base/run_loop.h"
@@ -372,7 +371,7 @@
   EXPECT_EQ(1, gatt_read_descriptor_attempts_);
 
   uint8_t values[] = {0, 1, 2, 3, 4, 0xf, 0xf0, 0xff};
-  std::vector<uint8_t> test_vector(values, values + base::size(values));
+  std::vector<uint8_t> test_vector(values, values + std::size(values));
   SimulateGattDescriptorRead(descriptor1_, test_vector);
   base::RunLoop().RunUntilIdle();
 
@@ -403,7 +402,7 @@
   ASSERT_NO_FATAL_FAILURE(FakeDescriptorBoilerplate());
 
   uint8_t values[] = {0, 1, 2, 3, 4, 0xf, 0xf0, 0xff};
-  std::vector<uint8_t> test_vector(values, values + base::size(values));
+  std::vector<uint8_t> test_vector(values, values + std::size(values));
   descriptor1_->WriteRemoteDescriptor(test_vector, GetCallback(Call::EXPECTED),
                                       GetGattErrorCallback(Call::NOT_EXPECTED));
   EXPECT_EQ(1, gatt_write_descriptor_attempts_);
@@ -436,7 +435,7 @@
   EXPECT_EQ(1, gatt_read_descriptor_attempts_);
 
   uint8_t values[] = {0, 1, 2, 3, 4, 0xf, 0xf0, 0xff};
-  std::vector<uint8_t> test_vector(values, values + base::size(values));
+  std::vector<uint8_t> test_vector(values, values + std::size(values));
   SimulateGattDescriptorRead(descriptor1_, test_vector);
   base::RunLoop().RunUntilIdle();
   EXPECT_EQ(1, callback_count_);
@@ -477,7 +476,7 @@
   ASSERT_NO_FATAL_FAILURE(FakeDescriptorBoilerplate());
 
   uint8_t values[] = {0, 1, 2, 3, 4, 0xf, 0xf0, 0xff};
-  std::vector<uint8_t> test_vector(values, values + base::size(values));
+  std::vector<uint8_t> test_vector(values, values + std::size(values));
   descriptor1_->WriteRemoteDescriptor(test_vector, GetCallback(Call::EXPECTED),
                                       GetGattErrorCallback(Call::NOT_EXPECTED));
   EXPECT_EQ(1, gatt_write_descriptor_attempts_);
@@ -989,7 +988,7 @@
   base::RunLoop().RunUntilIdle();
 
   uint8_t values[] = {0x34, 0x12};
-  std::vector<uint8_t> test_vector(values, values + base::size(values));
+  std::vector<uint8_t> test_vector(values, values + std::size(values));
   EXPECT_EQ(test_vector, last_read_value_);
   EXPECT_EQ(test_vector, descriptor1_->GetValue());
 }
diff --git a/device/bluetooth/public/cpp/bluetooth_uuid_unittest.cc b/device/bluetooth/public/cpp/bluetooth_uuid_unittest.cc
index 0411519..e2497c9 100644
--- a/device/bluetooth/public/cpp/bluetooth_uuid_unittest.cc
+++ b/device/bluetooth/public/cpp/bluetooth_uuid_unittest.cc
@@ -8,7 +8,6 @@
 
 #include <sstream>
 
-#include "base/cxx17_backports.h"
 #include "base/strings/string_piece.h"
 #include "build/build_config.h"
 #include "testing/gmock/include/gmock/gmock.h"
@@ -163,7 +162,7 @@
       {"00001aBc-0000-1000-8000-00805F9b34fB", k128Bit},
   };
 
-  for (size_t i = 0; i < base::size(test_cases); ++i) {
+  for (size_t i = 0; i < std::size(test_cases); ++i) {
     SCOPED_TRACE("Input UUID: " + test_cases[i].input_uuid);
     BluetoothUUID uuid(test_cases[i].input_uuid);
     EXPECT_TRUE(uuid.IsValid());
diff --git a/device/fido/cable/v2_handshake.cc b/device/fido/cable/v2_handshake.cc
index 3150ec1..f7a31a52 100644
--- a/device/fido/cable/v2_handshake.cc
+++ b/device/fido/cable/v2_handshake.cc
@@ -5,12 +5,12 @@
 #include "device/fido/cable/v2_handshake.h"
 
 #include <inttypes.h>
+
 #include <array>
 #include <type_traits>
 
 #include "base/base64url.h"
 #include "base/bits.h"
-#include "base/cxx17_backports.h"  // for base::size
 #include "base/numerics/safe_conversions.h"
 #include "base/numerics/safe_math.h"
 #include "base/strings/string_number_conversions.h"
@@ -122,7 +122,7 @@
 static const char* kAssignedDomains[] = {"cable.ua5v.com", "cable.auth.com"};
 
 absl::optional<KnownDomainID> ToKnownDomainID(uint16_t domain) {
-  if (domain >= 256 || domain < base::size(kAssignedDomains)) {
+  if (domain >= 256 || domain < std::size(kAssignedDomains)) {
     return KnownDomainID(domain);
   }
   return absl::nullopt;
@@ -133,7 +133,7 @@
   if (domain < 256) {
     // The |KnownDomainID| type should only contain valid values for this but,
     // just in case, CHECK it too.
-    CHECK_LT(domain, base::size(kAssignedDomains));
+    CHECK_LT(domain, std::size(kAssignedDomains));
     return kAssignedDomains[domain];
   }
 
@@ -382,7 +382,7 @@
   const cbor::Value::MapValue& qr_contents_map(qr_contents->GetMap());
 
   base::span<const uint8_t> values[2];
-  for (size_t i = 0; i < base::size(values); i++) {
+  for (size_t i = 0; i < std::size(values); i++) {
     const cbor::Value::MapValue::const_iterator it =
         qr_contents_map.find(cbor::Value(static_cast<int>(i)));
     if (it == qr_contents_map.end() || !it->second.is_bytestring()) {
@@ -431,7 +431,7 @@
   qr_contents.emplace(1, qr_key.subspan(device::cablev2::kQRSeedSize));
 
   qr_contents.emplace(
-      2, static_cast<int64_t>(base::size(tunnelserver::kAssignedDomains)));
+      2, static_cast<int64_t>(std::size(tunnelserver::kAssignedDomains)));
 
   qr_contents.emplace(3, static_cast<int64_t>(base::Time::Now().ToTimeT()));
 
diff --git a/device/fido/cbor_extract.cc b/device/fido/cbor_extract.cc
index feb79596..29d4401 100644
--- a/device/fido/cbor_extract.cc
+++ b/device/fido/cbor_extract.cc
@@ -97,7 +97,7 @@
       const cbor::Value& value = map_it->second;
       const unsigned cbor_type_u = static_cast<unsigned>(value.type());
       const unsigned value_type_u = static_cast<unsigned>(value_type);
-      DCHECK(value_type_u < base::size(kExpectedCBORTypes));
+      DCHECK(value_type_u < std::size(kExpectedCBORTypes));
       if (cbor_type_u >= 8 ||
           (kExpectedCBORTypes[value_type_u] & (1u << cbor_type_u)) == 0) {
         return false;
diff --git a/device/fido/ctap_response_unittest.cc b/device/fido/ctap_response_unittest.cc
index c2d0d696..f76de25 100644
--- a/device/fido/ctap_response_unittest.cc
+++ b/device/fido/ctap_response_unittest.cc
@@ -5,7 +5,6 @@
 #include <algorithm>
 
 #include "base/containers/contains.h"
-#include "base/cxx17_backports.h"
 #include "components/cbor/reader.h"
 #include "components/cbor/values.h"
 #include "components/cbor/writer.h"
@@ -428,7 +427,7 @@
 
 // Get a subset of the response for testing error handling.
 std::vector<uint8_t> GetTestCorruptedSignResponse(size_t length) {
-  DCHECK_LE(length, base::size(test_data::kTestU2fSignResponse));
+  DCHECK_LE(length, std::size(test_data::kTestU2fSignResponse));
   return fido_parsing_utils::Materialize(fido_parsing_utils::ExtractSpan(
       test_data::kTestU2fSignResponse, 0, length));
 }
diff --git a/device/gamepad/dualshock4_controller.cc b/device/gamepad/dualshock4_controller.cc
index 16c0a1ae..379716f 100644
--- a/device/gamepad/dualshock4_controller.cc
+++ b/device/gamepad/dualshock4_controller.cc
@@ -202,7 +202,7 @@
       data->controller_data.button_ps,
       data->controller_data.button_touch,
   };
-  for (size_t i = 0; i < base::size(button_values); ++i) {
+  for (size_t i = 0; i < std::size(button_values); ++i) {
     pad->buttons[i].pressed = button_values[i];
     pad->buttons[i].touched = button_values[i];
     pad->buttons[i].value = button_values[i] ? 1.0 : 0.0;
diff --git a/device/gamepad/gamepad_blocklist_unittest.cc b/device/gamepad/gamepad_blocklist_unittest.cc
index 5aa19e7..7a02801 100644
--- a/device/gamepad/gamepad_blocklist_unittest.cc
+++ b/device/gamepad/gamepad_blocklist_unittest.cc
@@ -4,7 +4,6 @@
 
 #include "device/gamepad/gamepad_blocklist.h"
 
-#include "base/cxx17_backports.h"
 #include "device/gamepad/gamepad_id_list.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -16,7 +15,7 @@
     {0x05ac, 0x3232},  // Apple(?) bluetooth mouse
     {0x17ef, 0x6099},  // Lenovo keyboard
 };
-constexpr size_t kBlockedDevicesLength = base::size(kBlockedDevices);
+constexpr size_t kBlockedDevicesLength = std::size(kBlockedDevices);
 
 // Known devices from blocked vendors, taken from usb.ids.
 // http://www.linux-usb.org/usb.ids
@@ -36,8 +35,7 @@
     {0x2833, 0x3031},  // Oculus Rift CV1 subdevice
     {0xb58e, 0x9e84},  // Blue Yeti Stereo Microphone
 };
-constexpr size_t kBlockedVendorDevicesLength =
-    base::size(kBlockedVendorDevices);
+constexpr size_t kBlockedVendorDevicesLength = std::size(kBlockedVendorDevices);
 
 }  // namespace
 
diff --git a/device/gamepad/gamepad_device_linux.cc b/device/gamepad/gamepad_device_linux.cc
index 6798042..dde1650 100644
--- a/device/gamepad/gamepad_device_linux.cc
+++ b/device/gamepad/gamepad_device_linux.cc
@@ -12,7 +12,6 @@
 #include <sys/ioctl.h>
 
 #include "base/callback_helpers.h"
-#include "base/cxx17_backports.h"
 #include "base/posix/eintr_wrapper.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_piece.h"
@@ -53,7 +52,7 @@
     KEY_HOMEPAGE, KEY_BACK,
     // Record is used for Xbox Series X's share button over BT.
     KEY_RECORD};
-const size_t kSpecialKeysLen = base::size(kSpecialKeys);
+const size_t kSpecialKeysLen = std::size(kSpecialKeys);
 
 #define LONG_BITS (CHAR_BIT * sizeof(long))
 #define BITS_TO_LONGS(x) (((x) + LONG_BITS - 1) / LONG_BITS)
diff --git a/device/gamepad/gamepad_device_mac.mm b/device/gamepad/gamepad_device_mac.mm
index 3353cfd..3ffa1f6 100644
--- a/device/gamepad/gamepad_device_mac.mm
+++ b/device/gamepad/gamepad_device_mac.mm
@@ -6,7 +6,6 @@
 
 #import <Foundation/Foundation.h>
 
-#include "base/cxx17_backports.h"
 #include "base/mac/foundation_util.h"
 #include "base/mac/scoped_cftyperef.h"
 #include "base/strings/sys_string_conversions.h"
@@ -55,7 +54,7 @@
     {kConsumerUsagePage, kBackUsageNumber},
     {kConsumerUsagePage, kRecordUsageNumber},
 };
-const size_t kSpecialUsagesLen = base::size(kSpecialUsages);
+const size_t kSpecialUsagesLen = std::size(kSpecialUsages);
 
 float NormalizeAxis(CFIndex value, CFIndex min, CFIndex max) {
   return (2.f * (value - min) / static_cast<float>(max - min)) - 1.f;
diff --git a/device/gamepad/gamepad_id_list.cc b/device/gamepad/gamepad_id_list.cc
index 47c4a03..d16d83c 100644
--- a/device/gamepad/gamepad_id_list.cc
+++ b/device/gamepad/gamepad_id_list.cc
@@ -7,8 +7,6 @@
 #include <algorithm>
 #include <iterator>
 
-#include "base/cxx17_backports.h"
-
 namespace device {
 
 namespace {
@@ -626,7 +624,7 @@
     {0xf766, 0x0001, kXInputTypeNone},
     {0xf766, 0x0005, kXInputTypeNone},
 };
-constexpr size_t kGamepadInfoLength = base::size(kGamepadInfo);
+constexpr size_t kGamepadInfoLength = std::size(kGamepadInfo);
 
 bool CompareEntry(const GamepadInfo& a, const GamepadInfo& b) {
   return std::tie(a.vendor, a.product) < std::tie(b.vendor, b.product);
diff --git a/device/gamepad/hid_haptic_gamepad.cc b/device/gamepad/hid_haptic_gamepad.cc
index f52fe81..2158d9d 100644
--- a/device/gamepad/hid_haptic_gamepad.cc
+++ b/device/gamepad/hid_haptic_gamepad.cc
@@ -50,7 +50,7 @@
     // Stadia controller
     {0x18d1, 0x9400, 0x05, 5, 1, 3, 2 * kBitsPerByte, 0, 0xffff},
 };
-size_t kHapticReportDataLength = base::size(kHapticReportData);
+size_t kHapticReportDataLength = std::size(kHapticReportData);
 
 HidHapticGamepad::HidHapticGamepad(const HapticReportData& data,
                                    std::unique_ptr<HidWriter> writer)
diff --git a/device/gamepad/nintendo_controller.cc b/device/gamepad/nintendo_controller.cc
index c089e69..23fc7ee 100644
--- a/device/gamepad/nintendo_controller.cc
+++ b/device/gamepad/nintendo_controller.cc
@@ -130,7 +130,7 @@
     // This list must be kept sorted.
     {0x0068, 0x3a, 141},
     {0x0098, 0x46, 182}};
-const size_t kVibrationFrequencySize = base::size(kVibrationFrequency);
+const size_t kVibrationFrequencySize = std::size(kVibrationFrequency);
 
 // https://github.com/dekuNukem/Nintendo_Switch_Reverse_Engineering/blob/master/rumble_data_table.md
 struct VibrationAmplitude {
@@ -174,7 +174,7 @@
     {0xc0, 0x0070, 920}, {0xc2, 0x8070, 940},  {0xc4, 0x0071, 960},
     {0xc6, 0x8071, 981}, {0xc8, 0x0072, 1000},
 };
-const size_t kVibrationAmplitudeSize = base::size(kVibrationAmplitude);
+const size_t kVibrationAmplitudeSize = std::size(kVibrationAmplitude);
 
 // Define indices for the additional buttons on Switch controllers.
 enum SWITCH_BUTTON_INDICES {
@@ -1125,14 +1125,14 @@
       BUTTON_INDEX_DPAD_RIGHT,      SWITCH_BUTTON_INDEX_CAPTURE,
       SWITCH_BUTTON_INDEX_LEFT_SL,  SWITCH_BUTTON_INDEX_LEFT_SR,
   };
-  const size_t kLeftButtonIndicesSize = base::size(kLeftButtonIndices);
+  const size_t kLeftButtonIndicesSize = std::size(kLeftButtonIndices);
 
   // Axes associated with the left Joy-Con thumbstick.
   const size_t kLeftAxisIndices[] = {
       AXIS_INDEX_LEFT_STICK_X,  // Axes assume the Joy-Con is held vertically
       AXIS_INDEX_LEFT_STICK_Y,  // or is attached to a grip.
   };
-  const size_t kLeftAxisIndicesSize = base::size(kLeftAxisIndices);
+  const size_t kLeftAxisIndicesSize = std::size(kLeftAxisIndices);
 
   if (pad_.buttons_length == SWITCH_BUTTON_INDEX_COUNT) {
     for (size_t i = 0; i < kLeftButtonIndicesSize; ++i)
@@ -1163,14 +1163,14 @@
       SWITCH_BUTTON_INDEX_RIGHT_SL,
       SWITCH_BUTTON_INDEX_RIGHT_SR,
   };
-  const size_t kRightButtonIndicesSize = base::size(kRightButtonIndices);
+  const size_t kRightButtonIndicesSize = std::size(kRightButtonIndices);
 
   // Axes associated with the right Joy-Con thumbstick.
   const size_t kRightAxisIndices[] = {
       AXIS_INDEX_RIGHT_STICK_X,  // Axes assume the Joy-Con is held vertically
       AXIS_INDEX_RIGHT_STICK_Y,  // or is attached to a grip.
   };
-  const size_t kRightAxisIndicesSize = base::size(kRightAxisIndices);
+  const size_t kRightAxisIndicesSize = std::size(kRightAxisIndices);
 
   if (pad_.buttons_length == SWITCH_BUTTON_INDEX_COUNT) {
     for (size_t i = 0; i < kRightButtonIndicesSize; ++i)
diff --git a/device/gamepad/public/cpp/gamepad_mojom_traits_unittest.cc b/device/gamepad/public/cpp/gamepad_mojom_traits_unittest.cc
index 246dd22..9244522 100644
--- a/device/gamepad/public/cpp/gamepad_mojom_traits_unittest.cc
+++ b/device/gamepad/public/cpp/gamepad_mojom_traits_unittest.cc
@@ -58,7 +58,7 @@
   constexpr char16_t kTestIdString[] = {L'M', L'o', L'c', L'k', L'S',
                                         L't', L'i', L'c', L'k', L' ',
                                         L'3', L'0', L'0', L'0', L'\0'};
-  constexpr size_t kTestIdStringLength = base::size(kTestIdString);
+  constexpr size_t kTestIdStringLength = std::size(kTestIdString);
 
   Gamepad send;
   memset(&send, 0, sizeof(Gamepad));
diff --git a/device/gamepad/raw_input_data_fetcher_win.cc b/device/gamepad/raw_input_data_fetcher_win.cc
index 3a7fd991f..00a950d 100644
--- a/device/gamepad/raw_input_data_fetcher_win.cc
+++ b/device/gamepad/raw_input_data_fetcher_win.cc
@@ -9,7 +9,6 @@
 #include <memory>
 
 #include "base/bind.h"
-#include "base/cxx17_backports.h"
 #include "base/strings/sys_string_conversions.h"
 #include "base/trace_event/trace_event.h"
 #include "device/gamepad/gamepad_standard_mappings.h"
@@ -42,7 +41,7 @@
 }
 
 RAWINPUTDEVICE* RawInputDataFetcher::GetRawInputDevices(DWORD flags) {
-  size_t usage_count = base::size(DeviceUsages);
+  size_t usage_count = std::size(DeviceUsages);
   std::unique_ptr<RAWINPUTDEVICE[]> devices(new RAWINPUTDEVICE[usage_count]);
   for (size_t i = 0; i < usage_count; ++i) {
     devices[i].dwFlags = flags;
@@ -77,7 +76,7 @@
   // Register to receive raw HID input.
   std::unique_ptr<RAWINPUTDEVICE[]> devices(
       GetRawInputDevices(RIDEV_INPUTSINK));
-  if (!::RegisterRawInputDevices(devices.get(), base::size(DeviceUsages),
+  if (!::RegisterRawInputDevices(devices.get(), std::size(DeviceUsages),
                                  sizeof(RAWINPUTDEVICE))) {
     PLOG(ERROR) << "RegisterRawInputDevices() failed for RIDEV_INPUTSINK";
     window_.reset();
@@ -95,7 +94,7 @@
   DCHECK(window_);
   std::unique_ptr<RAWINPUTDEVICE[]> devices(GetRawInputDevices(RIDEV_REMOVE));
 
-  if (!::RegisterRawInputDevices(devices.get(), base::size(DeviceUsages),
+  if (!::RegisterRawInputDevices(devices.get(), std::size(DeviceUsages),
                                  sizeof(RAWINPUTDEVICE))) {
     PLOG(INFO) << "RegisterRawInputDevices() failed for RIDEV_REMOVE";
   }
diff --git a/device/gamepad/raw_input_gamepad_device_win.cc b/device/gamepad/raw_input_gamepad_device_win.cc
index a5c1f9e..7129777 100644
--- a/device/gamepad/raw_input_gamepad_device_win.cc
+++ b/device/gamepad/raw_input_gamepad_device_win.cc
@@ -55,7 +55,7 @@
     {kConsumerUsagePage, kHomeUsageNumber},
     {kConsumerUsagePage, kBackUsageNumber},
 };
-constexpr size_t kSpecialUsagesLen = base::size(kSpecialUsages);
+constexpr size_t kSpecialUsagesLen = std::size(kSpecialUsages);
 
 // Scales |value| from the range |min| <= x <= |max| to a Standard Gamepad axis
 // value in the range -1.0 <= x <= 1.0.
diff --git a/device/gamepad/xbox_data_fetcher_mac.cc b/device/gamepad/xbox_data_fetcher_mac.cc
index 509e5d6..c565a0d 100644
--- a/device/gamepad/xbox_data_fetcher_mac.cc
+++ b/device/gamepad/xbox_data_fetcher_mac.cc
@@ -4,18 +4,17 @@
 
 #include "device/gamepad/xbox_data_fetcher_mac.h"
 
-#include <algorithm>
-#include <cmath>
-#include <limits>
-#include <string>
-
 #include <CoreFoundation/CoreFoundation.h>
 #include <IOKit/IOCFPlugIn.h>
 #include <IOKit/IOKitLib.h>
 #include <IOKit/usb/IOUSBLib.h>
 #include <IOKit/usb/USB.h>
 
-#include "base/cxx17_backports.h"
+#include <algorithm>
+#include <cmath>
+#include <limits>
+#include <string>
+
 #include "base/logging.h"
 #include "base/mac/foundation_util.h"
 #include "base/strings/utf_string_conversions.h"
@@ -366,7 +365,7 @@
     pad.buttons[17].value = data.buttons[14] ? 1.0f : 0.0f;
     pad.buttons_length = 18;
   }
-  for (size_t i = 0; i < base::size(data.axes); i++) {
+  for (size_t i = 0; i < std::size(data.axes); i++) {
     pad.axes[i] = data.axes[i];
   }
 
diff --git a/device/vr/android/arcore/ar_renderer.cc b/device/vr/android/arcore/ar_renderer.cc
index d292e86..aa4d5638 100644
--- a/device/vr/android/arcore/ar_renderer.cc
+++ b/device/vr/android/arcore/ar_renderer.cc
@@ -4,7 +4,6 @@
 
 #include "device/vr/android/arcore/ar_renderer.h"
 
-#include "base/cxx17_backports.h"
 #include "device/vr/vr_gl_util.h"
 
 namespace device {
@@ -82,12 +81,12 @@
     index_buffer_ = buffers[1];
 
     glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer_);
-    glBufferData(GL_ARRAY_BUFFER, base::size(kQuadVertices) * sizeof(float),
+    glBufferData(GL_ARRAY_BUFFER, std::size(kQuadVertices) * sizeof(float),
                  kQuadVertices, GL_STATIC_DRAW);
 
     glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, index_buffer_);
     glBufferData(GL_ELEMENT_ARRAY_BUFFER,
-                 base::size(kQuadIndices) * sizeof(GLushort), kQuadIndices,
+                 std::size(kQuadIndices) * sizeof(GLushort), kQuadIndices,
                  GL_STATIC_DRAW);
   }
 
@@ -115,7 +114,7 @@
 
   // Blit texture to buffer
   glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, index_buffer_);
-  glDrawElements(GL_TRIANGLES, base::size(kQuadIndices), GL_UNSIGNED_SHORT, 0);
+  glDrawElements(GL_TRIANGLES, std::size(kQuadIndices), GL_UNSIGNED_SHORT, 0);
 
   glDisableVertexAttribArray(position_handle_);
 }
diff --git a/device/vr/android/arcore/arcore_impl.cc b/device/vr/android/arcore/arcore_impl.cc
index d2cb177d..7385288 100644
--- a/device/vr/android/arcore/arcore_impl.cc
+++ b/device/vr/android/arcore/arcore_impl.cc
@@ -233,7 +233,7 @@
       &cube_map->negative_y, &cube_map->positive_z, &cube_map->negative_z};
 
   static_assert(
-      base::size(cube_map_faces) == base::size(arcore_cube_map),
+      std::size(cube_map_faces) == std::size(arcore_cube_map),
       "`ArImageCubemap` and `device::mojom::XRCubeMap` are expected to "
       "have the same number of faces (6).");
 
@@ -241,7 +241,7 @@
                 "`device::mojom::XRCubeMap::kNumComponentsPerPixel` is "
                 "expected to be 4 (RGBA)`, as that's the format ArCore uses.");
 
-  for (size_t i = 0; i < base::size(arcore_cube_map); ++i) {
+  for (size_t i = 0; i < std::size(arcore_cube_map); ++i) {
     auto* arcore_cube_map_face = arcore_cube_map[i];
     if (!arcore_cube_map_face) {
       DVLOG(1) << "`ArLightEstimate_acquireEnvironmentalHdrCubemap` failed to "
diff --git a/device/vr/openxr/openxr_controller.cc b/device/vr/openxr/openxr_controller.cc
index 76a52d7..32b170aa 100644
--- a/device/vr/openxr/openxr_controller.cc
+++ b/device/vr/openxr/openxr_controller.cc
@@ -7,7 +7,6 @@
 #include <stdint.h>
 
 #include "base/check.h"
-#include "base/cxx17_backports.h"
 #include "base/notreached.h"
 #include "device/gamepad/public/cpp/gamepads.h"
 #include "device/vr/openxr/openxr_util.h"
@@ -186,11 +185,11 @@
       XR_TYPE_ACTION_SET_CREATE_INFO};
 
   errno_t error = strcpy_s(action_set_create_info.actionSetName,
-                           base::size(action_set_create_info.actionSetName),
+                           std::size(action_set_create_info.actionSetName),
                            action_set_name.c_str());
   DCHECK(!error);
   error = strcpy_s(action_set_create_info.localizedActionSetName,
-                   base::size(action_set_create_info.localizedActionSetName),
+                   std::size(action_set_create_info.localizedActionSetName),
                    action_set_name.c_str());
   DCHECK(!error);
 
@@ -622,10 +621,10 @@
 
   errno_t error =
       strcpy_s(action_create_info.actionName,
-               base::size(action_create_info.actionName), action_name.data());
+               std::size(action_create_info.actionName), action_name.data());
   DCHECK(error == 0);
   error = strcpy_s(action_create_info.localizedActionName,
-                   base::size(action_create_info.localizedActionName),
+                   std::size(action_create_info.localizedActionName),
                    action_name.data());
   DCHECK(error == 0);
   return xrCreateAction(action_set_, &action_create_info, action);
diff --git a/device/vr/openxr/openxr_util.cc b/device/vr/openxr/openxr_util.cc
index fb9215a3e..f8987de3 100644
--- a/device/vr/openxr/openxr_util.cc
+++ b/device/vr/openxr/openxr_util.cc
@@ -7,7 +7,6 @@
 #include <string>
 
 #include "base/check_op.h"
-#include "base/cxx17_backports.h"
 #include "base/version.h"
 #include "base/win/scoped_handle.h"
 #include "build/build_config.h"
@@ -97,7 +96,7 @@
                                  version_info::GetMajorVersionNumber();
   errno_t error =
       strcpy_s(instance_create_info.applicationInfo.applicationName,
-               base::size(instance_create_info.applicationInfo.applicationName),
+               std::size(instance_create_info.applicationInfo.applicationName),
                application_name.c_str());
   DCHECK_EQ(error, 0);
 
@@ -109,7 +108,7 @@
   instance_create_info.applicationInfo.applicationVersion = build;
 
   error = strcpy_s(instance_create_info.applicationInfo.engineName,
-                   base::size(instance_create_info.applicationInfo.engineName),
+                   std::size(instance_create_info.applicationInfo.engineName),
                    "Chromium");
   DCHECK_EQ(error, 0);
 
diff --git a/device/vr/openxr/test/fake_openxr_impl_api.cc b/device/vr/openxr/test/fake_openxr_impl_api.cc
index 2ce928c..a25b23a 100644
--- a/device/vr/openxr/test/fake_openxr_impl_api.cc
+++ b/device/vr/openxr/test/fake_openxr_impl_api.cc
@@ -5,7 +5,6 @@
 #include <wrl.h>
 
 #include "base/containers/contains.h"
-#include "base/cxx17_backports.h"
 #include "device/vr/openxr/openxr_util.h"
 #include "device/vr/openxr/test/openxr_negotiate.h"
 #include "device/vr/openxr/test/openxr_test_helper.h"
@@ -478,7 +477,7 @@
   for (uint32_t i = 0; i < OpenXrTestHelper::kNumExtensionsSupported; i++) {
     properties[i].type = XR_TYPE_EXTENSION_PROPERTIES;
     errno_t error = strcpy_s(properties[i].extensionName,
-                             base::size(properties[i].extensionName),
+                             std::size(properties[i].extensionName),
                              OpenXrTestHelper::kExtensions[i]);
     DCHECK(error == 0);
     properties[i].extensionVersion = 1;
diff --git a/device/vr/openxr/test/openxr_test_helper.h b/device/vr/openxr/test/openxr_test_helper.h
index 50ac34aa..1bb7d29 100644
--- a/device/vr/openxr/test/openxr_test_helper.h
+++ b/device/vr/openxr/test/openxr_test_helper.h
@@ -8,13 +8,13 @@
 #include <d3d11.h>
 #include <unknwn.h>
 #include <wrl.h>
+
 #include <array>
 #include <queue>
 #include <unordered_map>
 #include <unordered_set>
 #include <vector>
 
-#include "base/cxx17_backports.h"
 #include "base/synchronization/lock.h"
 #include "device/vr/openxr/openxr_defs.h"
 #include "device/vr/openxr/openxr_view_configuration.h"
@@ -170,7 +170,7 @@
       XR_TYPE_SYSTEM_PROPERTIES, nullptr,           0, 0xBADFACE, "Test System",
       {2048, 2048, 1},           {XR_TRUE, XR_TRUE}};
 
-  static constexpr uint32_t kNumExtensionsSupported = base::size(kExtensions);
+  static constexpr uint32_t kNumExtensionsSupported = std::size(kExtensions);
 
  private:
   struct ActionProperties {
diff --git a/device/vr/windows/d3d11_device_helpers.cc b/device/vr/windows/d3d11_device_helpers.cc
index 7264fb3d..da514e24 100644
--- a/device/vr/windows/d3d11_device_helpers.cc
+++ b/device/vr/windows/d3d11_device_helpers.cc
@@ -8,8 +8,9 @@
 #include <dxgi.h>
 #include <wrl.h>
 
+#include <iterator>
+
 #include "base/check.h"
-#include "base/cxx17_backports.h"
 
 namespace vr {
 
@@ -28,7 +29,7 @@
     Microsoft::WRL::ComPtr<ID3D11DeviceContext> d3d11_device_context;
     if (SUCCEEDED(D3D11CreateDevice(
             *adapter, D3D_DRIVER_TYPE_UNKNOWN, NULL, flags, feature_levels,
-            base::size(feature_levels), D3D11_SDK_VERSION, &d3d11_device,
+            std::size(feature_levels), D3D11_SDK_VERSION, &d3d11_device,
             &feature_level_out, &d3d11_device_context))) {
       *adapter_index = i;
       return;
diff --git a/device/vr/windows/d3d11_texture_helper.cc b/device/vr/windows/d3d11_texture_helper.cc
index 444569f3..4d5e5cc 100644
--- a/device/vr/windows/d3d11_texture_helper.cc
+++ b/device/vr/windows/d3d11_texture_helper.cc
@@ -3,7 +3,7 @@
 // found in the LICENSE file.
 
 #include "device/vr/windows/d3d11_texture_helper.h"
-#include "base/cxx17_backports.h"
+
 #include "base/trace_event/common/trace_event_common.h"
 #include "base/trace_event/trace_event.h"
 #include "mojo/public/c/system/platform_handle.h"
@@ -330,7 +330,7 @@
          D3D11_INPUT_PER_VERTEX_DATA, 0},
     };
     HRESULT hr = render_state_.d3d11_device_->CreateInputLayout(
-        vertex_desc, base::size(vertex_desc), g_vertex, _countof(g_vertex),
+        vertex_desc, std::size(vertex_desc), g_vertex, _countof(g_vertex),
         &render_state_.input_layout_);
     if (FAILED(hr)) {
       TraceDXError(ErrorLocation::InputLayout, hr);
@@ -635,7 +635,7 @@
   Microsoft::WRL::ComPtr<ID3D11Device> d3d11_device;
   HRESULT hr = D3D11CreateDevice(
       adapter.Get(), D3D_DRIVER_TYPE_UNKNOWN, NULL, flags, feature_levels,
-      base::size(feature_levels), D3D11_SDK_VERSION, &d3d11_device,
+      std::size(feature_levels), D3D11_SDK_VERSION, &d3d11_device,
       &feature_level_out, &(render_state_.d3d11_device_context_));
   if (SUCCEEDED(hr)) {
     hr = d3d11_device.As(&render_state_.d3d11_device_);
diff --git a/fuchsia/engine/browser/virtual_keyboard_browsertest.cc b/fuchsia/engine/browser/virtual_keyboard_browsertest.cc
index 9516b69..0bd72bfe 100644
--- a/fuchsia/engine/browser/virtual_keyboard_browsertest.cc
+++ b/fuchsia/engine/browser/virtual_keyboard_browsertest.cc
@@ -215,8 +215,8 @@
   testing::InSequence s;
   virtualkeyboard::TextType previous_text_type =
       virtualkeyboard::TextType::ALPHANUMERIC;
-  std::vector<base::RunLoop> set_type_loops(base::size(kInputTypeMappings));
-  for (size_t i = 0; i < base::size(kInputTypeMappings); ++i) {
+  std::vector<base::RunLoop> set_type_loops(std::size(kInputTypeMappings));
+  for (size_t i = 0; i < std::size(kInputTypeMappings); ++i) {
     const auto& field_type_pair = kInputTypeMappings[i];
     DCHECK_NE(field_type_pair.second, previous_text_type);
 
@@ -229,7 +229,7 @@
 
   controller_->AwaitWatchAndRespondWith(false);
 
-  for (size_t i = 0; i < base::size(kInputTypeMappings); ++i) {
+  for (size_t i = 0; i < std::size(kInputTypeMappings); ++i) {
     content::SimulateTapAt(
         web_contents_, GetCoordinatesOfInputField(kInputTypeMappings[i].first));
 
diff --git a/fuchsia/engine/browser/web_engine_content_browser_client.cc b/fuchsia/engine/browser/web_engine_content_browser_client.cc
index d71684b..53c7a399 100644
--- a/fuchsia/engine/browser/web_engine_content_browser_client.cc
+++ b/fuchsia/engine/browser/web_engine_content_browser_client.cc
@@ -7,7 +7,6 @@
 #include <string>
 #include <utility>
 
-#include "base/cxx17_backports.h"
 #include "base/i18n/rtl.h"
 #include "base/strings/string_split.h"
 #include "components/embedder_support/user_agent_utils.h"
@@ -205,7 +204,7 @@
   };
 
   command_line->CopySwitchesFrom(*base::CommandLine::ForCurrentProcess(),
-                                 kSwitchesToCopy, base::size(kSwitchesToCopy));
+                                 kSwitchesToCopy, std::size(kSwitchesToCopy));
 }
 
 std::string WebEngineContentBrowserClient::GetApplicationLocale() {
diff --git a/fuchsia/engine/web_engine_integration_test.cc b/fuchsia/engine/web_engine_integration_test.cc
index ec26f5b..17b7c44 100644
--- a/fuchsia/engine/web_engine_integration_test.cc
+++ b/fuchsia/engine/web_engine_integration_test.cc
@@ -4,14 +4,12 @@
 
 #include <fuchsia/mediacodec/cpp/fidl.h>
 #include <fuchsia/mem/cpp/fidl.h>
+#include <lib/zx/vmo.h>
 #include <zircon/rights.h>
 #include <zircon/types.h>
 
 #include <string>
 
-#include <lib/zx/vmo.h>
-
-#include "base/cxx17_backports.h"
 #include "base/fuchsia/fuchsia_logging.h"
 #include "base/fuchsia/mem_buffer_util.h"
 #include "base/strings/stringprintf.h"
@@ -110,7 +108,7 @@
 
     // Ensure the field was actually populated.
     EXPECT_GT(expected_ua.length(),
-              base::size(kDefaultUserAgentStringWithVersionPlaceholder));
+              std::size(kDefaultUserAgentStringWithVersionPlaceholder));
     EXPECT_NE(expected_ua.find(version_info::GetVersionNumber()),
               std::string::npos);
 
diff --git a/gin/arguments_unittest.cc b/gin/arguments_unittest.cc
index 77062c9..eeb9981d 100644
--- a/gin/arguments_unittest.cc
+++ b/gin/arguments_unittest.cc
@@ -57,7 +57,7 @@
     ASSERT_TRUE(ConvertFromV8(isolate, script->Run(context).ToLocalChecked(),
                               &function));
     v8::Local<v8::Value> args[] = {object};
-    function->Call(context, v8::Undefined(isolate), base::size(args), args)
+    function->Call(context, v8::Undefined(isolate), std::size(args), args)
         .ToLocalChecked();
   };
 
diff --git a/gin/converter_unittest.cc b/gin/converter_unittest.cc
index 3cae6318..dd780833 100644
--- a/gin/converter_unittest.cc
+++ b/gin/converter_unittest.cc
@@ -11,7 +11,6 @@
 #include <string>
 
 #include "base/compiler_specific.h"
-#include "base/cxx17_backports.h"
 #include "base/strings/utf_string_conversions.h"
 #include "gin/function_template.h"
 #include "gin/handle.h"
@@ -75,7 +74,7 @@
       {Undefined(instance_->isolate()).As<Value>(), false},
   };
 
-  for (size_t i = 0; i < base::size(test_data); ++i) {
+  for (size_t i = 0; i < std::size(test_data); ++i) {
     bool result = false;
     EXPECT_TRUE(Converter<bool>::FromV8(instance_->isolate(),
                                         test_data[i].input, &result));
@@ -116,7 +115,7 @@
   HandleScope handle_scope(instance_->isolate());
 
   int test_data_to[] = {-1, 0, 1};
-  for (size_t i = 0; i < base::size(test_data_to); ++i) {
+  for (size_t i = 0; i < std::size(test_data_to); ++i) {
     EXPECT_TRUE(Converter<int32_t>::ToV8(instance_->isolate(), test_data_to[i])
                     ->StrictEquals(
                           Integer::New(instance_->isolate(), test_data_to[i])));
@@ -150,7 +149,7 @@
       {v8::Undefined(instance_->isolate()).As<Value>(), false, 0},
   };
 
-  for (size_t i = 0; i < base::size(test_data_from); ++i) {
+  for (size_t i = 0; i < std::size(test_data_from); ++i) {
     int32_t result = std::numeric_limits<int32_t>::min();
     bool success = Converter<int32_t>::FromV8(instance_->isolate(),
                                               test_data_from[i].input, &result);
diff --git a/gin/wrappable_unittest.cc b/gin/wrappable_unittest.cc
index f402594..adf2b1f8 100644
--- a/gin/wrappable_unittest.cc
+++ b/gin/wrappable_unittest.cc
@@ -211,7 +211,7 @@
     v8::Local<v8::Function> func;
     EXPECT_TRUE(ConvertFromV8(isolate, val, &func));
     v8::Local<v8::Value> argv[] = {function_to_run, context_object};
-    func->Call(context, v8::Undefined(isolate), base::size(argv), argv)
+    func->Call(context, v8::Undefined(isolate), std::size(argv), argv)
         .FromMaybe(v8::Local<v8::Value>());
     if (!try_catch.HasCaught())
       return std::string();
@@ -267,7 +267,7 @@
     v8::Local<v8::Function> func;
     EXPECT_TRUE(ConvertFromV8(isolate, val, &func));
     v8::Local<v8::Value> argv[] = {function_to_run, context_object};
-    func->Call(context, v8::Undefined(isolate), base::size(argv), argv)
+    func->Call(context, v8::Undefined(isolate), std::size(argv), argv)
         .FromMaybe(v8::Local<v8::Value>());
     if (!try_catch.HasCaught())
       return std::string();
diff --git a/google_apis/drive/drive_api_parser.cc b/google_apis/drive/drive_api_parser.cc
index b3dec5a..e9dfac0 100644
--- a/google_apis/drive/drive_api_parser.cc
+++ b/google_apis/drive/drive_api_parser.cc
@@ -8,7 +8,6 @@
 
 #include <memory>
 
-#include "base/cxx17_backports.h"
 #include "base/json/json_value_converter.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_piece.h"
@@ -655,7 +654,7 @@
 // static
 bool ChangeResource::GetType(base::StringPiece type_name,
                              ChangeResource::ChangeType* result) {
-  for (size_t i = 0; i < base::size(kChangeTypeMap); i++) {
+  for (size_t i = 0; i < std::size(kChangeTypeMap); i++) {
     if (type_name == kChangeTypeMap[i].type_name) {
       *result = kChangeTypeMap[i].type;
       return true;
diff --git a/google_apis/drive/drive_api_url_generator_unittest.cc b/google_apis/drive/drive_api_url_generator_unittest.cc
index 656cb85..9cc4aba 100644
--- a/google_apis/drive/drive_api_url_generator_unittest.cc
+++ b/google_apis/drive/drive_api_url_generator_unittest.cc
@@ -7,7 +7,6 @@
 #include <stddef.h>
 #include <stdint.h>
 
-#include "base/cxx17_backports.h"
 #include "google_apis/common/test_util.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "url/gurl.h"
@@ -84,7 +83,7 @@
       {true, false, "&setModifiedDate=true&updateViewedDate=false"},
   };
 
-  for (size_t i = 0; i < base::size(kTestPatterns); ++i) {
+  for (size_t i = 0; i < std::size(kTestPatterns); ++i) {
     EXPECT_EQ(
         "https://www.example.com/drive/v2/files/0ADK06pfg"
         "?supportsTeamDrives=true" +
@@ -164,7 +163,7 @@
       "https://www.example.com/drive/v2/files?supportsTeamDrives=true&"
       "includeTeamDriveItems=true&corpora=default%2CallTeamDrives";
 
-  for (size_t i = 0; i < base::size(kTestPatterns); ++i) {
+  for (size_t i = 0; i < std::size(kTestPatterns); ++i) {
     EXPECT_EQ(kV2FilesUrlPrefixWithTeamDrives +
                   (kTestPatterns[i].expected_query.empty() ? "" : "&") +
                   kTestPatterns[i].expected_query,
@@ -283,7 +282,7 @@
   const std::string kV2ChangesUrlPrefixWithTeamDrives =
       "https://www.example.com/drive/v2/changes?"
       "supportsTeamDrives=true&includeTeamDriveItems=true";
-  for (size_t i = 0; i < base::size(kTestPatterns); ++i) {
+  for (size_t i = 0; i < std::size(kTestPatterns); ++i) {
     EXPECT_EQ(kV2ChangesUrlPrefixWithTeamDrives +
                   (kTestPatterns[i].expected_query.empty() ? "" : "&") +
                   kTestPatterns[i].expected_query,
diff --git a/google_apis/gcm/base/mcs_util.cc b/google_apis/gcm/base/mcs_util.cc
index a8bfca2..5f818a10 100644
--- a/google_apis/gcm/base/mcs_util.cc
+++ b/google_apis/gcm/base/mcs_util.cc
@@ -7,7 +7,6 @@
 #include <stddef.h>
 
 #include "base/check_op.h"
-#include "base/cxx17_backports.h"
 #include "base/format_macros.h"
 #include "base/notreached.h"
 #include "base/strings/string_number_conversions.h"
@@ -40,7 +39,7 @@
   "mcs_proto.BindAccountResponse",
   "mcs_proto.TalkMetadata"
 };
-static_assert(base::size(kProtoNames) == kNumProtoTypes,
+static_assert(std::size(kProtoNames) == kNumProtoTypes,
               "Proto Names Must Include All Tags");
 
 const char kLoginId[] = "chrome-";
diff --git a/google_apis/gcm/base/mcs_util_unittest.cc b/google_apis/gcm/base/mcs_util_unittest.cc
index 006926d..26c1eba 100644
--- a/google_apis/gcm/base/mcs_util_unittest.cc
+++ b/google_apis/gcm/base/mcs_util_unittest.cc
@@ -10,7 +10,6 @@
 #include <memory>
 
 #include "base/bind.h"
-#include "base/cxx17_backports.h"
 #include "base/run_loop.h"
 #include "base/strings/string_number_conversions.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -52,7 +51,7 @@
     kIqStanzaTag,
     kDataMessageStanzaTag
   };
-  for (size_t i = 0; i < base::size(kTagsWithPersistentIds); ++i) {
+  for (size_t i = 0; i < std::size(kTagsWithPersistentIds); ++i) {
     int tag = kTagsWithPersistentIds[i];
     std::unique_ptr<google::protobuf::MessageLite> protobuf =
         BuildProtobufFromTag(tag);
@@ -74,7 +73,7 @@
     kHeartbeatAckTag,
     kLoginResponseTag,
   };
-  for (size_t i = 0; i < base::size(kTagsWithStreamIds); ++i) {
+  for (size_t i = 0; i < std::size(kTagsWithStreamIds); ++i) {
     int tag = kTagsWithStreamIds[i];
     std::unique_ptr<google::protobuf::MessageLite> protobuf =
         BuildProtobufFromTag(tag);
diff --git a/google_apis/gcm/base/socket_stream_unittest.cc b/google_apis/gcm/base/socket_stream_unittest.cc
index 6c9e282..cf2ea89 100644
--- a/google_apis/gcm/base/socket_stream_unittest.cc
+++ b/google_apis/gcm/base/socket_stream_unittest.cc
@@ -12,7 +12,6 @@
 #include <vector>
 
 #include "base/bind.h"
-#include "base/cxx17_backports.h"
 #include "base/run_loop.h"
 #include "base/strings/string_piece.h"
 #include "base/test/bind.h"
@@ -38,11 +37,11 @@
 typedef std::vector<net::MockWrite> WriteList;
 
 const char kReadData[] = "read_data";
-const int kReadDataSize = base::size(kReadData) - 1;
+const int kReadDataSize = std::size(kReadData) - 1;
 const char kReadData2[] = "read_alternate_data";
-const int kReadData2Size = base::size(kReadData2) - 1;
+const int kReadData2Size = std::size(kReadData2) - 1;
 const char kWriteData[] = "write_data";
-const int kWriteDataSize = base::size(kWriteData) - 1;
+const int kWriteDataSize = std::size(kWriteData) - 1;
 
 class GCMSocketStreamTest : public testing::Test {
  public:
diff --git a/google_apis/gcm/engine/gcm_store_impl.cc b/google_apis/gcm/engine/gcm_store_impl.cc
index bea15eb..31cc793 100644
--- a/google_apis/gcm/engine/gcm_store_impl.cc
+++ b/google_apis/gcm/engine/gcm_store_impl.cc
@@ -9,7 +9,6 @@
 #include "base/bind.h"
 #include "base/callback.h"
 #include "base/callback_helpers.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
 #include "base/logging.h"
@@ -131,7 +130,7 @@
 }
 
 std::string ParseRegistrationKey(const std::string& key) {
-  return key.substr(base::size(kRegistrationKeyStart) - 1);
+  return key.substr(std::size(kRegistrationKeyStart) - 1);
 }
 
 std::string MakeIncomingKey(const std::string& persistent_id) {
@@ -151,7 +150,7 @@
 }
 
 std::string ParseOutgoingKey(const std::string& key) {
-  return key.substr(base::size(kOutgoingMsgKeyStart) - 1);
+  return key.substr(std::size(kOutgoingMsgKeyStart) - 1);
 }
 
 std::string MakeGServiceSettingKey(const std::string& setting_name) {
@@ -159,7 +158,7 @@
 }
 
 std::string ParseGServiceSettingKey(const std::string& key) {
-  return key.substr(base::size(kGServiceSettingKeyStart) - 1);
+  return key.substr(std::size(kGServiceSettingKeyStart) - 1);
 }
 
 std::string MakeAccountKey(const CoreAccountId& account_id) {
@@ -167,8 +166,7 @@
 }
 
 CoreAccountId ParseAccountKey(const std::string& key) {
-  return CoreAccountId::FromString(
-      key.substr(base::size(kAccountKeyStart) - 1));
+  return CoreAccountId::FromString(key.substr(std::size(kAccountKeyStart) - 1));
 }
 
 std::string MakeHeartbeatKey(const std::string& scope) {
@@ -176,7 +174,7 @@
 }
 
 std::string ParseHeartbeatKey(const std::string& key) {
-  return key.substr(base::size(kHeartbeatKeyStart) - 1);
+  return key.substr(std::size(kHeartbeatKeyStart) - 1);
 }
 
 std::string MakeInstanceIDKey(const std::string& app_id) {
@@ -184,7 +182,7 @@
 }
 
 std::string ParseInstanceIDKey(const std::string& key) {
-  return key.substr(base::size(kInstanceIDKeyStart) - 1);
+  return key.substr(std::size(kInstanceIDKeyStart) - 1);
 }
 
 // Note: leveldb::Slice keeps a pointer to the data in |s|, which must therefore
@@ -1012,7 +1010,7 @@
       std::string persistent_id = data.substr(0, found);
       int64_t expiration_time = 0LL;
       if (!base::StringToInt64(
-              data.substr(found + base::size(kIncomingMsgSeparator) - 1),
+              data.substr(found + std::size(kIncomingMsgSeparator) - 1),
               &expiration_time)) {
         LOG(ERROR)
             << "Failed to parse expiration time from the incoming message "
diff --git a/google_apis/gcm/engine/gcm_unregistration_request_handler.cc b/google_apis/gcm/engine/gcm_unregistration_request_handler.cc
index e1d9952..42606aa 100644
--- a/google_apis/gcm/engine/gcm_unregistration_request_handler.cc
+++ b/google_apis/gcm/engine/gcm_unregistration_request_handler.cc
@@ -4,7 +4,6 @@
 
 #include "google_apis/gcm/engine/gcm_unregistration_request_handler.h"
 
-#include "base/cxx17_backports.h"
 #include "base/metrics/histogram_macros.h"
 #include "google_apis/gcm/base/gcm_util.h"
 #include "net/url_request/url_fetcher.h"
@@ -39,8 +38,8 @@
     const std::string& response) {
   DVLOG(1) << "Parsing unregistration response.";
   if (response.find(kDeletedPrefix) != std::string::npos) {
-    std::string deleted_app_id = response.substr(
-        response.find(kDeletedPrefix) + base::size(kDeletedPrefix) - 1);
+    std::string deleted_app_id = response.substr(response.find(kDeletedPrefix) +
+                                                 std::size(kDeletedPrefix) - 1);
     return deleted_app_id == app_id_ ?
         UnregistrationRequest::SUCCESS :
         UnregistrationRequest::INCORRECT_APP_ID;
diff --git a/google_apis/gcm/engine/gservices_settings.cc b/google_apis/gcm/engine/gservices_settings.cc
index 1068ba9..7b50e37 100644
--- a/google_apis/gcm/engine/gservices_settings.cc
+++ b/google_apis/gcm/engine/gservices_settings.cc
@@ -8,7 +8,6 @@
 
 #include "base/bind.h"
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "base/hash/sha1.h"
 #include "base/logging.h"
 #include "base/strings/string_number_conversions.h"
@@ -231,7 +230,7 @@
     if (settings_diff && base::StartsWith(name, kDeleteSettingPrefix,
                                           base::CompareCase::SENSITIVE)) {
       std::string setting_to_delete =
-          name.substr(base::size(kDeleteSettingPrefix) - 1);
+          name.substr(std::size(kDeleteSettingPrefix) - 1);
       new_settings.erase(setting_to_delete);
       DVLOG(1) << "Setting deleted: " << setting_to_delete;
     } else {
diff --git a/google_apis/gcm/engine/registration_request.cc b/google_apis/gcm/engine/registration_request.cc
index 5e07366..f32c02f 100644
--- a/google_apis/gcm/engine/registration_request.cc
+++ b/google_apis/gcm/engine/registration_request.cc
@@ -5,10 +5,10 @@
 #include "google_apis/gcm/engine/registration_request.h"
 
 #include <stddef.h>
+
 #include <utility>
 
 #include "base/bind.h"
-#include "base/cxx17_backports.h"
 #include "base/location.h"
 #include "base/metrics/histogram.h"
 #include "base/strings/string_number_conversions.h"
@@ -260,7 +260,7 @@
   size_t error_pos = response.find(kErrorPrefix);
   if (error_pos != std::string::npos) {
     std::string error =
-        response.substr(error_pos + base::size(kErrorPrefix) - 1);
+        response.substr(error_pos + std::size(kErrorPrefix) - 1);
     LOG(ERROR) << "Registration response error message: " << error;
     return GetStatusFromError(error);
   }
@@ -281,7 +281,7 @@
 
   size_t token_pos = response.find(kTokenPrefix);
   if (token_pos != std::string::npos) {
-    *token = response.substr(token_pos + base::size(kTokenPrefix) - 1);
+    *token = response.substr(token_pos + std::size(kTokenPrefix) - 1);
     return SUCCESS;
   }
 
diff --git a/google_apis/gcm/engine/unregistration_request.cc b/google_apis/gcm/engine/unregistration_request.cc
index 8eed4d00..4860786 100644
--- a/google_apis/gcm/engine/unregistration_request.cc
+++ b/google_apis/gcm/engine/unregistration_request.cc
@@ -7,7 +7,6 @@
 #include <utility>
 
 #include "base/bind.h"
-#include "base/cxx17_backports.h"
 #include "base/location.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_piece.h"
@@ -218,7 +217,7 @@
   // some errors will have HTTP_OK response code!
   if (response.find(kErrorPrefix) != std::string::npos) {
     std::string error = response.substr(response.find(kErrorPrefix) +
-                                        base::size(kErrorPrefix) - 1);
+                                        std::size(kErrorPrefix) - 1);
     DVLOG(1) << "Unregistration response error message: " << error;
     return GetStatusFromError(error);
   }
diff --git a/google_apis/google_api_keys_unittest.cc b/google_apis/google_api_keys_unittest.cc
index fc92bc1..1861bfb 100644
--- a/google_apis/google_api_keys_unittest.cc
+++ b/google_apis/google_api_keys_unittest.cc
@@ -12,7 +12,6 @@
 
 #include "google_apis/google_api_keys_unittest.h"
 
-#include "base/cxx17_backports.h"
 #include "base/files/file_path.h"
 #include "base/path_service.h"
 #include "base/test/scoped_command_line.h"
@@ -69,7 +68,7 @@
 void GoogleAPIKeysTest::SetUp() {
   // Unset all environment variables that can affect these tests,
   // for the duration of the tests.
-  for (size_t i = 0; i < base::size(env_cache_); ++i) {
+  for (size_t i = 0; i < std::size(env_cache_); ++i) {
     EnvironmentCache& cache = env_cache_[i];
     cache.was_set = env_->HasVar(cache.variable_name);
     cache.value.clear();
@@ -82,7 +81,7 @@
 
 void GoogleAPIKeysTest::TearDown() {
   // Restore environment.
-  for (size_t i = 0; i < base::size(env_cache_); ++i) {
+  for (size_t i = 0; i < std::size(env_cache_); ++i) {
     EnvironmentCache& cache = env_cache_[i];
     if (cache.was_set) {
       env_->SetVar(cache.variable_name, cache.value);
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_am.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_am.xtb
index a4ff2e19..45320ab9 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_am.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_am.xtb
@@ -43,6 +43,7 @@
 <translation id="3344973607274501920">Chromium የእርስዎን የይለፍ ቃላት መፈተሽ አይችልም። የበይነመረብ ግንኙነትዎን ለመፈተሽ ይሞክሩ።</translation>
 <translation id="3472200483164753384">በChromium Canary ላይ አይደገፍም</translation>
 <translation id="3639997914391704523">Chromium በእርስዎ የGoogle መለያ በሚገቡበት ጊዜ የእርስዎን የይለፍ ቃላትን ሊፈትሽ ይችላል።</translation>
+<translation id="3650632991272923014"><ph name="USER_EMAIL1" /> በዚህ መሣሪያ ላይ Chromiumን እና ግራ ዕልባቶችን፣ የይለፍ ቃላትን እና ሌሎች ቅንብሮችን እየተጠቀመ ነበር።</translation>
 <translation id="3805899903892079518">Chromium የእርስዎ ፎቶዎች ወይም ቪዲዮዎች መዳረሻ የለውም። በiOS ቅንብሮች &gt; ግላዊነት &gt; ፎቶዎች ውስጥ መዳረሻን ያንቁ።</translation>
 <translation id="4043291146360695975">የይለፍ ቃላት የሚቀመጡት በዚህ መሣሪያ ላይ ብቻ ባለው የይለፍ ቃል አስተዳዳሪ ላይ ነው።</translation>
 <translation id="4099085513035183040">በChromium ቅድመ-ይሁንታ ላይ አይደገፍም</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_da.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_da.xtb
index e2e5e5a..b7faa89 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_da.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_da.xtb
@@ -44,6 +44,7 @@
 <translation id="3344973607274501920">Chromium kunne ikke tjekke dine adgangskoder. Prøv at tjekke din internetforbindelse.</translation>
 <translation id="3472200483164753384">Understøttes ikke i Chromium Canary</translation>
 <translation id="3639997914391704523">Chromium kan tjekke dine adgangskoder, når du er logget ind med din Google-konto</translation>
+<translation id="3650632991272923014"><ph name="USER_EMAIL1" /> brugte Chromium og gemte bogmærker, adgangskoder og andre indstillinger på denne enhed.</translation>
 <translation id="3805899903892079518">Chromium har ikke adgang til dine billeder eller videoer. Gå til iOS Indstillinger &gt; Privatliv &gt; Billeder for at få adgang.</translation>
 <translation id="4043291146360695975">Adgangskoder gemmes kun i Adgangskodeadministrator på denne enhed.</translation>
 <translation id="4099085513035183040">Understøttes ikke i Chromium Beta</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_de.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_de.xtb
index 095b3bf8..338eb5a6 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_de.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_de.xtb
@@ -43,6 +43,7 @@
 <translation id="3344973607274501920">Chromium konnte Ihre Passwörter nicht prüfen. Prüfen Sie Ihre Internetverbindung.</translation>
 <translation id="3472200483164753384">Wird von Chromium Canary nicht unterstützt</translation>
 <translation id="3639997914391704523">Chromium kann Ihre Passwörter prüfen, wenn Sie sich mit Ihrem Google-Konto anmelden.</translation>
+<translation id="3650632991272923014"><ph name="USER_EMAIL1" /> hat Chromium genutzt und Lesezeichen, Passwörter und andere Einstellungen auf diesem Gerät festgelegt.</translation>
 <translation id="3805899903892079518">Chromium hat keinen Zugriff auf Ihre Fotos und Videos. Aktivieren Sie den Zugriff unter "iOS-Einstellungen &gt; Datenschutz &gt; Fotos".</translation>
 <translation id="4043291146360695975">Passwörter werden auf diesem Gerät nur im Passwortmanager gespeichert.</translation>
 <translation id="4099085513035183040">Wird von Chromium Beta nicht unterstützt</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_el.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_el.xtb
index c8c97f3..d52bd5f 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_el.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_el.xtb
@@ -44,6 +44,7 @@
 <translation id="3344973607274501920">Το Chromium δεν μπόρεσε να ελέγξει τους κωδικούς πρόσβασής σας. Δοκιμάστε να ελέγξετε τη σύνδεσή σας στο διαδίκτυο.</translation>
 <translation id="3472200483164753384">Δεν υποστηρίζεται στο Chromium Canary</translation>
 <translation id="3639997914391704523">Το Chromium μπορεί να ελέγξει τους κωδικούς πρόσβασής σας όταν συνδέεστε με τον Λογαριασμό σας Google.</translation>
+<translation id="3650632991272923014">Ο χρήστης <ph name="USER_EMAIL1" /> χρησιμοποίησε το Chrome και οι σελιδοδείκτες, οι κωδικοί πρόσβασης και άλλες ρυθμίσεις του αποθηκεύτηκαν σε αυτήν τη συσκευή.</translation>
 <translation id="3805899903892079518">Το Chromium δεν έχει πρόσβαση σε φωτογραφίες ή βίντεό σας. Ενεργ. πρόσβασης στις Ρυθμίσεις iOS &gt; Απόρρητο &gt; Φωτογραφίες.</translation>
 <translation id="4043291146360695975">Οι κωδικοί πρόσβασης αποθηκεύονται στον Διαχειριστή κωδικών πρόσβασης μόνο σε αυτήν τη συσκευή.</translation>
 <translation id="4099085513035183040">Δεν υποστηρίζεται στο Chromium Beta</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_es.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_es.xtb
index 528eb2c7..7fc0294d6 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_es.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_es.xtb
@@ -44,6 +44,7 @@
 <translation id="3344973607274501920">Chromium no ha podido comprobar tus contraseñas. Revisa tu conexión a Internet.</translation>
 <translation id="3472200483164753384">No compatible con Chromium Canary</translation>
 <translation id="3639997914391704523">Chromium puede comprobar tus contraseñas cuando inicias sesión con tu cuenta de Google.</translation>
+<translation id="3650632991272923014"><ph name="USER_EMAIL1" /> ha usado Chromium y ha dejado marcadores, contraseñas y otras configuraciones en este dispositivo.</translation>
 <translation id="3805899903892079518">Chromium no puede acceder a tus fotos y vídeos (para permitirlo, ve a Ajustes de iOS &gt; Privacidad &gt; Fotos).</translation>
 <translation id="4043291146360695975">Las contraseñas se guardan en el gestor de contraseñas solo en este dispositivo.</translation>
 <translation id="4099085513035183040">No compatible con Chromium Beta</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_eu.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_eu.xtb
index fc65ec288..10bf500 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_eu.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_eu.xtb
@@ -44,6 +44,7 @@
 <translation id="3344973607274501920">Chromium-ek ezin izan ditu egiaztatu pasahitzak. Egiaztatu Internetera konektatuta zaudela.</translation>
 <translation id="3472200483164753384">Ez da bateragarria Chromium Canary-rekin</translation>
 <translation id="3639997914391704523">Saioa Google-ko kontu batekin hasten baduzu, Chromium-ek pasahitzak egiazta ditzake.</translation>
+<translation id="3650632991272923014"><ph name="USER_EMAIL1" /> Chromium-en erabiltzailea zenez, laster-markak, pasahitzak eta beste ezarpena batzuk utzi ditu gailuan.</translation>
 <translation id="3805899903892079518">Chromium-ek ez du argazki eta bideoetarako sarbiderik. Gaitu sarbidea iOS sistemako Settings &gt; Privacy &gt; Photos atalean.</translation>
 <translation id="4043291146360695975">Pasahitzak gailu honetan soilik gordetzen dira Pasahitz-kudeatzailea atalean.</translation>
 <translation id="4099085513035183040">Ez da bateragarria Chromium Beta-rekin</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_fil.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_fil.xtb
index bf2ce65..ca5298fd 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_fil.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_fil.xtb
@@ -44,6 +44,7 @@
 <translation id="3344973607274501920">Hindi masuri ng Chromium ang iyong mga password. Subukang tingnan ang iyong koneksyon sa internet.</translation>
 <translation id="3472200483164753384">Hindi sinusuportahan sa Chromium Canary</translation>
 <translation id="3639997914391704523">Masusuri ng Chromium ang iyong mga password kapag nag-sign in ka sa Google Account mo.</translation>
+<translation id="3650632991272923014">Ginamit ni <ph name="USER_EMAIL1" /> ang Chromium at nag-iwan siya ng mga bookmark, password, at iba pang mga setting sa device na ito.</translation>
 <translation id="3805899903892079518">Walang access ang Chromium sa mga larawan o video mo. I-enable ang access sa Mga Setting ng iOS &gt; Privacy &gt; Mga Larawan.</translation>
 <translation id="4043291146360695975">Sine-save ang mga password sa Password Manager sa device lang na ito.</translation>
 <translation id="4099085513035183040">Hindi sinusuportahan sa Chromium Beta</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_ky.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_ky.xtb
index 8c2eac2..b3001598 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_ky.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_ky.xtb
@@ -44,6 +44,7 @@
 <translation id="3344973607274501920">Chromium сырсөздөрүңүздү текшере алган жок. Интернет байланышын текшерип көрүңүз.</translation>
 <translation id="3472200483164753384">Chromium Canary'де колдоого алынбайт</translation>
 <translation id="3639997914391704523">Google аккаунтуңуз менен киргенде Chromium сырсөздөрүңүздү текшерет.</translation>
+<translation id="3650632991272923014"><ph name="USER_EMAIL1" /> бул түзмөктө Chromium'ду колдонуп, кыстармаларды, сырсөздөрдү жана башка жөндөөлөрдү өчүрбөй калды.</translation>
 <translation id="3805899903892079518">Chromium сүрөттөрүңүздү же видеолоруңузду көрө албайт. Көрүү үчүн iOS Жөндөөлөрү &gt; Купуялык &gt; Сүрөттөргө өтүңүз.</translation>
 <translation id="4043291146360695975">Сырсөздөр ушул түзмөктө гана Сырсөздөрдү башкаргычка сакталат.</translation>
 <translation id="4099085513035183040">Chromium'дун Бета версиясында колдоого алынбайт</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_mr.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_mr.xtb
index 620b557..904af9cb 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_mr.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_mr.xtb
@@ -44,6 +44,7 @@
 <translation id="3344973607274501920">Chromium ला तुमचे पासवर्ड तपासता आले नाहीत. तुमचे इंटरनेट कनेक्शन तपासून पहा.</translation>
 <translation id="3472200483164753384">Chromium कॅनरी वर सपोर्ट नाही</translation>
 <translation id="3639997914391704523">तुम्ही तुमचे Google खाते वापरून साइन इन करता तेव्हा, Chromium तुमचे पासवर्ड तपासू शकते.</translation>
+<translation id="3650632991272923014"><ph name="USER_EMAIL1" /> हा Chromium वापरत होता आणि त्याने या डिव्हाइसवर बुकमार्क, पासवर्ड आणि इतर सेटिंग्ज ठेवली आहेत.</translation>
 <translation id="3805899903892079518">Chromium ला तुमच्या फोटो किंवा व्हिडिओ ॲक्सेस नाही. iOS सेटिंग्ज&gt; गोपनीयता&gt; फोटो  ॲक्सेस सक्षम करा.</translation>
 <translation id="4043291146360695975">पासवर्ड फक्त या डिव्हाइसवर पासवर्ड व्यवस्थापक यामध्ये सेव्ह केले जातात.</translation>
 <translation id="4099085513035183040">Chromium बीटा वर सपोर्ट नाही</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_ne.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_ne.xtb
index 7887207..e4a3e4d 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_ne.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_ne.xtb
@@ -3,6 +3,7 @@
 <translationbundle lang="ne">
 <translation id="102360288709523007">Google मा प्रयोग सम्बन्धी तथ्याङ्क र क्रयास रिपोर्टहरू पठाएर Chromium लाई राम्रो बनाउन सहयोग गर्नुहोस्।</translation>
 <translation id="1047130070405668746">Chromium चयन गर्नुहोस्</translation>
+<translation id="1091252999271033193">यसको अर्थ Chromium ले हरेक पटक साइटको मोबाइल संस्करण प्रयोग गर्न अनुरोध गर्ने छ।</translation>
 <translation id="1185134272377778587">Chromium का बारेमा</translation>
 <translation id="1257458525759135959">फोटोहरू सुरक्षित गर्न सेटिङमा ट्याप गर्नुहोस् र Chromium लाई आफ्ना फोटोहरूको फोल्डरमा फोटो हाल्न दिनुहोस्</translation>
 <translation id="1289216811211435351">Chromium चलाउन थाल्नुहोस्</translation>
@@ -25,6 +26,7 @@
 <translation id="2178608107313874732">Chromium ले अहिले तपाईँको क्यामेरा प्रयोग गर्न सक्दैन</translation>
 <translation id="2195025571279539885">तपाइँ Chromiumलाई अर्को पटक यस साइटबाट <ph name="LANGUAGE_NAME" />का पृष्ठहरू अनुवाद गर्न प्रस्ताव गर्न चाहनुहुन्छ?</translation>
 <translation id="2218146227246548550">तपाईंको सङ्गठनको नीतिअनुसार तपाईंले Chromium चलाउन साइन इन गर्नु पर्ने हुन्छ। <ph name="BEGIN_LINK" />थप जान्नुहोस्<ph name="END_LINK" /></translation>
+<translation id="2236584955986023187">यसको अर्थ Chromium ले हरेक पटक साइटको डेस्कटप संस्करण प्रयोग गर्न अनुरोध गर्ने छ।</translation>
 <translation id="2426113998523353159">तपाईंको सङ्गठनको नीतिअनुसार तपाईंले Chromium चलाउन साइन इन गर्नु पर्ने हुन्छ।</translation>
 <translation id="2450140762465183767">तपाईंले अब कुनै म्यासेज, डकुमेन्ट वा अन्य एपमा भएका लिंकमा ट्याप गर्दा ती लिंक Chromium मा खुल्ने छन्।</translation>
 <translation id="2478931088402984578"><ph name="BEGIN_BOLD" />Chromium<ph name="END_BOLD" /> चयन गर्नुहोस्</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_no.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_no.xtb
index 637ea3b..a208fba 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_no.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_no.xtb
@@ -44,6 +44,7 @@
 <translation id="3344973607274501920">Chromium kunne ikke sjekke passordene dine. Se om du er koblet til internett.</translation>
 <translation id="3472200483164753384">Støttes ikke i Chromium Canary</translation>
 <translation id="3639997914391704523">Chromium kan sjekke passordene dine når du logger på med Google-kontoen din.</translation>
+<translation id="3650632991272923014"><ph name="USER_EMAIL1" /> har brukt Chromium og etterlatt seg bokmerker, passord og andre innstillinger på denne enheten.</translation>
 <translation id="3805899903892079518">Chromium har ikke tilgang til bildene eller videoene dine. Slå på tilgangen i iOS-innstillingene &gt; Personvern &gt; Bilder.</translation>
 <translation id="4043291146360695975">Passord lagres i Passordlagring kun på denne enheten.</translation>
 <translation id="4099085513035183040">Støttes ikke i Chromium Beta</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_zu.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_zu.xtb
index d0bb427..9ecd295 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_zu.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_zu.xtb
@@ -44,6 +44,7 @@
 <translation id="3344973607274501920">I-Chromium ayikwazanga ukuhlola iphasiwedi yakho. Zama ukuhlola ukuxhumeka kwakho ku-inthanethi.</translation>
 <translation id="3472200483164753384">Ayisekelwe ku-Chromium Canary</translation>
 <translation id="3639997914391704523">I-Chromium ingahlola amaphasiwedi akho uma ungena ngemvume nge-Akhawunti yakho ye-Google.</translation>
+<translation id="3650632991272923014">U-<ph name="USER_EMAIL1" /> ubesebenzisa i-Chromium futhi washiya amabhukhimakhi, amaphasiwedi, namanye amasethingi kule divayisi.</translation>
 <translation id="3805899903892079518">I-Chromium ayinakho ukufinyelela kuzithombe zakho noma amavidiyo. Nika amandla ukufinyelela kuzilungiselelo ze-iOS &gt; Ubumfihlo &gt; Izithombe.</translation>
 <translation id="4043291146360695975">Amaphasiwedi alondolozwa Kwisiphathi Sephasiwedi kule divayisi kuphela.</translation>
 <translation id="4099085513035183040">Ayisekelwe ku-Chromium Beta</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_am.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_am.xtb
index a5b3dfc..ab161d95 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_am.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_am.xtb
@@ -50,6 +50,7 @@
 <translation id="4099578267706723511">የአጠቃቀም ስታቲክሶችን እና የብልሽት ሪፖርቶችን ወደ Google በመላክ Chromeን የተሻለ ለማድረግ እገዛ ያድርጉ።</translation>
 <translation id="417201473131094001">በChrome Canary ላይ አይደገፍም</translation>
 <translation id="4214277427269650960">ወደዚህ ጣቢያ እና Chrome በመለያ ይግቡ። በኋላ ስምረትን ማብራት ይችላሉ።</translation>
+<translation id="4233521129555661685"><ph name="USER_EMAIL1" /> በዚህ መሣሪያ ላይ Chromeን እና ግራ ዕልባቶችን፣ የይለፍ ቃላትን እና ሌሎች ቅንብሮችን እየተጠቀመ ነበር።</translation>
 <translation id="424864128008805179">ከChrome ተዘግቶ ይወጣ?</translation>
 <translation id="4249068189593983585">የChrome ጠቃሚ ምክር። ተጨማሪ የትር አማራጮችን ለማግኘት በመሣሪያ አሞሌው ውስጥ የትሮችን አሳይ አዝራሩን ነክተው ይያዙ፣ ይህ በማያ ገጽዎ አናት ወይም ግርጌ ላይ ነው ያለው።</translation>
 <translation id="4523886039239821078">አንዳንድ ተጨማሪዎች Chrome እንዲበላሽ ያደርጋሉ። እባክዎ የሚከተለውን ያራግፉ፦</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_da.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_da.xtb
index ed58c076..5d60df14 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_da.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_da.xtb
@@ -50,6 +50,7 @@
 <translation id="4099578267706723511">Vær med til at gøre Chrome bedre ved at sende brugsstatistik og nedbrudsrapporter til Google.</translation>
 <translation id="417201473131094001">Understøttes ikke i Chrome Canary</translation>
 <translation id="4214277427269650960">Log ind på dette website og Chrome. Du kan aktivere synkronisering senere.</translation>
+<translation id="4233521129555661685"><ph name="USER_EMAIL1" /> brugte Chrome og gemte bogmærker, adgangskoder og andre indstillinger på denne enhed.</translation>
 <translation id="424864128008805179">Vil du logge ud af Chrome?</translation>
 <translation id="4249068189593983585">Chrome-tip. Hvis du vil se flere faneindstillinger, skal du trykke på knappen Vis faner på værktøjslinjen og holde fingeren nede. Du finder knappen nederst eller øverst på skærmen.</translation>
 <translation id="4523886039239821078">Nogle tilføjelser får Chrome til at gå ned. Prøv at afinstallere:</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_de.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_de.xtb
index 7ba4c10..3fcc25a 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_de.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_de.xtb
@@ -50,6 +50,7 @@
 <translation id="4099578267706723511">Nutzungsstatistiken und Absturzberichte zur Verbesserung von Chrome an Google senden</translation>
 <translation id="417201473131094001">Wird von Chrome Canary nicht unterstützt</translation>
 <translation id="4214277427269650960">Melden Sie sich bei dieser Website und in Chrome an. Sie können die Synchronisierung später aktivieren.</translation>
+<translation id="4233521129555661685"><ph name="USER_EMAIL1" /> hat Chrome genutzt und Lesezeichen, Passwörter und andere Einstellungen auf diesem Gerät festgelegt.</translation>
 <translation id="424864128008805179">Von Chrome abmelden?</translation>
 <translation id="4249068189593983585">Chrome-Tipp: Wenn Sie weitere Tab-Optionen sehen möchten, berühren und halten Sie die Schaltfläche "Tabs anzeigen" in der Symbolleiste. Sie befindet sich unten oder oben auf dem Bildschirm.</translation>
 <translation id="4523886039239821078">Einige Add-ons führen zum Ausfall von Chrome. Bitte deinstallieren Sie:</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_el.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_el.xtb
index f35ee8a..832f2c2 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_el.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_el.xtb
@@ -50,6 +50,7 @@
 <translation id="4099578267706723511">Συμβάλετε στη βελτίωση του Chrome, στέλνοντας στην Google στατιστικά στοιχεία χρήσης και αναφορές σφαλμάτων.</translation>
 <translation id="417201473131094001">Δεν υποστηρίζεται στο Chrome Canary</translation>
 <translation id="4214277427269650960">Συνδεθείτε σε αυτόν τον ιστότοπο και στο Chrome. Μπορείτε να ενεργοποιήσετε τον συγχρονισμό αργότερα.</translation>
+<translation id="4233521129555661685">Ο χρήστης <ph name="USER_EMAIL1" /> χρησιμοποίησε το Chrome και οι σελιδοδείκτες, οι κωδικοί πρόσβασης και άλλες ρυθμίσεις του αποθηκεύτηκαν σε αυτήν τη συσκευή.</translation>
 <translation id="424864128008805179">Αποσύνδεση από το Chrome;</translation>
 <translation id="4249068189593983585">Συμβουλή για το Chrome. Για περισσότερες επιλογές καρτελών, αγγίξτε παρατεταμένα το κουμπί Εμφάνιση καρτελών στη γραμμή εργαλείων, η οποία βρίσκεται στο κάτω ή το επάνω τμήμα της οθόνης.</translation>
 <translation id="4523886039239821078">Ορισμένα πρόσθετα προκαλούν σφάλματα στο Chrome. Aπεγκαταστήστε τα.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_es.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_es.xtb
index 4dc8fc3..fc59c9a9 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_es.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_es.xtb
@@ -50,6 +50,7 @@
 <translation id="4099578267706723511">Ayudar a mejorar Chrome enviando estadísticas de uso e informes sobre fallos.</translation>
 <translation id="417201473131094001">No compatible con Chrome Canary</translation>
 <translation id="4214277427269650960">Inicia sesión en este sitio y en Chrome. Puedes activar la sincronización más tarde.</translation>
+<translation id="4233521129555661685"><ph name="USER_EMAIL1" /> ha usado Chrome y ha dejado marcadores, contraseñas y otras configuraciones en este dispositivo.</translation>
 <translation id="424864128008805179">¿Quieres cerrar sesión en Chrome?</translation>
 <translation id="4249068189593983585">Consejo sobre Chrome: Para ver más opciones de pestañas, mantén pulsado el botón Mostrar pestañas en la barra de herramientas, que se encuentra en la parte inferior o superior de la pantalla.</translation>
 <translation id="4523886039239821078">Algunos complementos hacen que Chrome falle. Desinstálalos.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_eu.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_eu.xtb
index 5c72720..631f0c90 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_eu.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_eu.xtb
@@ -50,6 +50,7 @@
 <translation id="4099578267706723511">Hobetu Chrome Google-ri erabilera-estatistikak eta hutsegite-txostenak bidalita.</translation>
 <translation id="417201473131094001">Ez da bateragarria Chrome Canary-rekin</translation>
 <translation id="4214277427269650960">Hasi saioa webgune honetan eta Chrome-n. Geroago aktiba dezakezu sinkronizazioa.</translation>
+<translation id="4233521129555661685"><ph name="USER_EMAIL1" /> Chrome-ren erabiltzailea zenez, laster-markak, pasahitzak eta beste ezarpena batzuk utzi ditu gailuan.</translation>
 <translation id="424864128008805179">Chrome-ko saioa amaitu nahi duzu?</translation>
 <translation id="4249068189593983585">Chrome-ri buruzko aholkua: fitxetako aukera gehiago ikusteko, eduki sakatuta tresna-barrako Erakutsi fitxak botoia. Pantailaren goiko edo beheko aldean aurkituko duzu.</translation>
 <translation id="4523886039239821078">Gehigarri batzuek Chrome huts egitea eragiten dute. Desinstala itzazu.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_fil.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_fil.xtb
index ec3eade5..dbc30e0c5 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_fil.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_fil.xtb
@@ -50,6 +50,7 @@
 <translation id="4099578267706723511">Tulungang mapahusay ang Chrome sa pamamagitan ng pagpapadala sa Google ng mga istatistika ng paggamit at ulat ng pag-crash.</translation>
 <translation id="417201473131094001">Hindi sinusuportahan sa Chrome Canary</translation>
 <translation id="4214277427269650960">Mag-sign in sa site na ito at sa Chrome. Puwede mong i-on ang pag-sync sa ibang pagkakataon.</translation>
+<translation id="4233521129555661685">Ginamit ni <ph name="USER_EMAIL1" /> ang Chrome at nag-iwan siya ng mga bookmark, password, at iba pang mga setting sa device na ito.</translation>
 <translation id="424864128008805179">Mag-sign out sa Chrome?</translation>
 <translation id="4249068189593983585">Tip sa Chrome. Para sa higit pang opsyon sa tab, pindutin nang matagal ang button na Ipakita ang Mga Tab sa toolbar, na nasa ibaba o itaas ng iyong screen.</translation>
 <translation id="4523886039239821078">Nagiging dahilan ang ilang add-on ng pag-crash ng Chrome. Paki-uninstall.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ky.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ky.xtb
index b451edc..9b61226 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ky.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ky.xtb
@@ -50,6 +50,7 @@
 <translation id="4099578267706723511">Google'га колдонуу статистикасын жөнөтүп, ката жөнүндө кабарлап, Chrome өркүндөтүлүшүнө жардам бериңиз.</translation>
 <translation id="417201473131094001">Chrome Canary'де колдоого алынбайт</translation>
 <translation id="4214277427269650960">Бул сайтка жана Chrome'го кириңиз. Шайкештирүүнү кийинчерээк күйгүзө аласыз.</translation>
+<translation id="4233521129555661685"><ph name="USER_EMAIL1" /> бул түзмөктө Chrome'ду колдонуп, кыстармаларды, сырсөздөрдү жана башка жөндөөлөрдү өчүрбөй калды.</translation>
 <translation id="424864128008805179">Chrome каттоо эсебинен чыгасызбы?</translation>
 <translation id="4249068189593983585">Chrome'дон кеңеш. Өтмөктөгү башка параметрлерди көрүү үчүн Өтмөктөрдү көрсөтүү баскычын коё бербей басып туруңуз. Баскыч экраныңыздын төмөн же жогору жагындагы куралдар тилкесинде жайгашкан.</translation>
 <translation id="4523886039239821078">Айрым көмөкчү жөндөөлөрдөн улам Chrome бузулуп калды. Аларды орнотуудан чыгарыңыз.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_mr.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_mr.xtb
index 7b9f3ac..2b881954 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_mr.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_mr.xtb
@@ -50,6 +50,7 @@
 <translation id="4099578267706723511">वापरविषयक आकडेवारी आणि क्रॅश अहवाल Google कडे पाठवून Chrome अधिक चांगले करण्यास मदत करा.</translation>
 <translation id="417201473131094001">Chrome कॅनरी वर सपोर्ट नाही</translation>
 <translation id="4214277427269650960">ही साइट आणि Chrome मध्ये साइन इन करा. तुम्ही सिंक करणे नंतर सुरू करू शकता.</translation>
+<translation id="4233521129555661685"><ph name="USER_EMAIL1" /> हा Chrome वापरत होता आणि त्याने या डिव्हाइसवर बुकमार्क, पासवर्ड आणि इतर सेटिंग्ज ठेवली आहेत.</translation>
 <translation id="424864128008805179">Chrome मधून साइन आउट करायचे?</translation>
 <translation id="4249068189593983585">Chrome टीप. आणखी टॅब पर्यायांसाठी, तुमच्या स्क्रीनच्या तळाशी किंवा सर्वात वर असलेल्या टूलबारवरील टॅब दाखवा बटणाला स्पर्श करा आणि धरून ठेवा.</translation>
 <translation id="4523886039239821078">Chrome क्रॅश होण्याचे कारण काही ॲड-ऑन आहेत. कृपया ती अनइंस्टॉल करा:</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ne.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ne.xtb
index aa4599a..7ac520a 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_ne.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_ne.xtb
@@ -40,6 +40,7 @@
 <translation id="3522659714780527202">आफूले Chrome प्रयोग गर्ने सबै डिभाइसमा खोलिएका ट्याबहरू हेर्न सिंक गर्ने सुविधा अन गर्नुहोस्</translation>
 <translation id="3533694711092285624">कुनै पनि सुरक्षित गरिएको पासवर्ड छैन। तपाईंले आफ्ना पासवर्डहरू सुरक्षित गर्नुभएको छ भने मात्र Chrome ले तिनको जाँच गर्न सक्छ।</translation>
 <translation id="3634910711516114487">Chrome बाट बढीभन्दा बढी फाइदा लिन Chrome मा आफ्नो Google खातामार्फत साइन इन गर्नुहोस्</translation>
+<translation id="3655656110921623717">यसको अर्थ Chrome ले हरेक पटक साइटको मोबाइल संस्करण प्रयोग गर्न अनुरोध गर्ने छ।</translation>
 <translation id="3706101708757577809">तपाईंले अब कुनै सन्देश, कागजात वा अन्य एपमा भएका लिंकमा ट्याप गर्दा ती लिंक Chrome मा खुल्ने छन्।</translation>
 <translation id="3720541637541300822">मैले Chrome बन्द गरेपछि इन्कोग्निटो ट्याब लक गरियोस्</translation>
 <translation id="384394811301901750">Google Chrome ले अहिले तपाईँको क्यामेरा प्रयोग गर्न सक्दैन</translation>
@@ -116,4 +117,5 @@
 <translation id="8772179140489533211">Chrome मा साइन इन गर्ने निर्देशन देखाउँछ।</translation>
 <translation id="8788269841521769222">तपाईंले यो पासवर्ड याद गरिराख्नु पर्दैन। यो पासवर्ड <ph name="EMAIL" /> को Google पासवर्ड म्यानेजरमा सेभ गरिने छ</translation>
 <translation id="9112744793181547300">Chrome लाई डिफल्ट ब्राउजरका रूपमा प्रयोग गर्ने हो?</translation>
+<translation id="9122931302567044771">यसको अर्थ Chrome ले हरेक पटक साइटको डेस्कटप संस्करण प्रयोग गर्न अनुरोध गर्ने छ।</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_no.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_no.xtb
index d1aef45d..799eec1 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_no.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_no.xtb
@@ -50,6 +50,7 @@
 <translation id="4099578267706723511">Gjør Chrome bedre ved å sende bruksstatistikk og programstopprapporter til Google.</translation>
 <translation id="417201473131094001">Støttes ikke i Chrome Canary</translation>
 <translation id="4214277427269650960">Logg på dette nettstedet og Chrome. Du kan slå på synkronisering senere.</translation>
+<translation id="4233521129555661685"><ph name="USER_EMAIL1" /> har brukt Chrome og etterlatt seg bokmerker, passord og andre innstillinger på denne enheten.</translation>
 <translation id="424864128008805179">Vil du logge av Chrome?</translation>
 <translation id="4249068189593983585">Chrome-tips. For flere fanealternativer, trykk og hold inne Vis faner-knappen på verktøylinjen, som du finner nederst eller øverst på skjermen.</translation>
 <translation id="4523886039239821078">Noen tillegg fører til at Chrome krasjer. Avinstaller:</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_zu.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_zu.xtb
index 54f99415..19fd9e2 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_zu.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_zu.xtb
@@ -50,6 +50,7 @@
 <translation id="4099578267706723511">Siza ukwenza i-Google Chrome ukuthi ibe ngcono ngokuthumela ngokuzenzakalelayo izibalo zokusebenzisa nemibiko yokusaphazeka ku-Google.</translation>
 <translation id="417201473131094001">Ayisekelwe ku-Chrome Canary</translation>
 <translation id="4214277427269650960">Ngena ngemvume kuleli sayithi naku-Chrome. Ungavula ukuvumelanisa kamuva.</translation>
+<translation id="4233521129555661685">U-<ph name="USER_EMAIL1" /> ubesebenzisa i-Chrome futhi washiya amabhukhimakhi, amaphasiwedi, namanye amasethingi kule divayisi.</translation>
 <translation id="424864128008805179">Phuma ngemvume ku-Chrome?</translation>
 <translation id="4249068189593983585">Ithiphu le-Chrome. Ukuze uthole okunye okungakhethwa zethebhu, thinta uphinde ubambe inkinobho yokuthi Bonisa Ithebhu kubha yamathuluzi, engaphansi noma engaphezulu kwesikrini sakho.</translation>
 <translation id="4523886039239821078">Ezinye izengezo zidale ukuthi i-Chrome isaphazeke. Sicela ukhiphe:</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_am.xtb b/ios/chrome/app/strings/resources/ios_strings_am.xtb
index 54891d5..8357cd4 100644
--- a/ios/chrome/app/strings/resources/ios_strings_am.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_am.xtb
@@ -42,6 +42,7 @@
 <translation id="1265739287306757398">እንዴት እንደሆነ ይወቁ</translation>
 <translation id="1272079795634619415">አቁም</translation>
 <translation id="1275718070701477396">ተመርጧል</translation>
+<translation id="1281818060020671000">ውሂብን አቀናብር</translation>
 <translation id="1282311502488501110">በመለያ አይግቡ</translation>
 <translation id="1283524564873030414">ባለፉት 24 ሰዓቶች</translation>
 <translation id="1285320974508926690">ይህን ጣቢያ በጭራሽ አትተርጉም</translation>
@@ -406,6 +407,7 @@
 <translation id="4689564913179979534">የክፍያ ዘዴዎችን ያስተዳድሩ...</translation>
 <translation id="470966556546083668">ስምረትን አያብሩ</translation>
 <translation id="4731472194328757163">የካሜራ እና ማይክሮፎን መዳረሻ ተፈቅዷል</translation>
+<translation id="4737560986434232178">የቅርብ ጊዜ ትሮችን ይፈልጉ</translation>
 <translation id="473775607612524610">አዘምን</translation>
 <translation id="4747097190499141774">የእርስዎ የይለፍ ሐረግ ያለው ሰው ብቻ ነው የእርስዎን የተመሰጠረ ውሂብ ማንበብ የሚችለው። የይለፍ ሐረጉ ወደ Google አይላክም እንዲሁም አይከማችም። የእርስዎን የይለፍ ሐረግ ከረሱት ወይም ይህን ቅንብር መለወጥ ከፈለጉ ማሥመሩን ዳግም ማስጀመር ያስፈልገዎታል። <ph name="BEGIN_LINK" />የበለጠ ለመረዳት<ph name="END_LINK" /></translation>
 <translation id="4751645464639803239">አዲስ ማንነት የማያሳውቅ ትር</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_da.xtb b/ios/chrome/app/strings/resources/ios_strings_da.xtb
index 9bfab24..369b110 100644
--- a/ios/chrome/app/strings/resources/ios_strings_da.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_da.xtb
@@ -42,6 +42,7 @@
 <translation id="1265739287306757398">Se, hvordan du gør</translation>
 <translation id="1272079795634619415">Stop</translation>
 <translation id="1275718070701477396">Valgt</translation>
+<translation id="1281818060020671000">Administrer data</translation>
 <translation id="1282311502488501110">Log ikke ind</translation>
 <translation id="1283524564873030414">De seneste 24 timer</translation>
 <translation id="1285320974508926690">Oversæt aldrig dette website</translation>
@@ -406,6 +407,7 @@
 <translation id="4689564913179979534">Administrer betalingsmetoder…</translation>
 <translation id="470966556546083668">Aktivér ikke synkronisering</translation>
 <translation id="4731472194328757163">Der er givet adgang til kameraet og mikrofonen</translation>
+<translation id="4737560986434232178">Søg på fanen Seneste</translation>
 <translation id="473775607612524610">Opdater</translation>
 <translation id="4747097190499141774">Kryptering med adgangssætning omfatter ikke betalingsmetoder og adresser fra Google Pay. Det er kun personer med din adgangssætning, der kan læse dine krypterede data. Adgangssætningen sendes ikke til eller gemmes af Google. Hvis du glemmer din adgangssætning eller vil ændre denne indstilling, skal du nulstille synkronisering. <ph name="BEGIN_LINK" />Få flere oplysninger<ph name="END_LINK" /></translation>
 <translation id="4751645464639803239">Ny inkognitofane</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_de.xtb b/ios/chrome/app/strings/resources/ios_strings_de.xtb
index 872dd0e..f107fd4 100644
--- a/ios/chrome/app/strings/resources/ios_strings_de.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_de.xtb
@@ -42,6 +42,7 @@
 <translation id="1265739287306757398">Weitere Informationen</translation>
 <translation id="1272079795634619415">Stoppen</translation>
 <translation id="1275718070701477396">Ausgewählt</translation>
+<translation id="1281818060020671000">Daten verwalten</translation>
 <translation id="1282311502488501110">Nicht anmelden</translation>
 <translation id="1283524564873030414">Letzte 24 Stunden</translation>
 <translation id="1285320974508926690">Diese Website nie übersetzen</translation>
@@ -406,6 +407,7 @@
 <translation id="4689564913179979534">Zahlungsmethoden verwalten…</translation>
 <translation id="470966556546083668">Synchronisierung nicht aktivieren</translation>
 <translation id="4731472194328757163">Kamera- und Mikrofonzugriff gewährt</translation>
+<translation id="4737560986434232178">Auf zuletzt geöffneten Tabs suchen</translation>
 <translation id="473775607612524610">Aktualisieren</translation>
 <translation id="4747097190499141774">Die Passphrasenverschlüsselung enthält keine Zahlungsmethoden oder Adressen von Google Pay. Nur Personen mit Ihrer Passphrase können Ihre verschlüsselten Daten lesen. Die Passphrase wird nicht an Google gesendet oder von Google gespeichert. Falls Sie sie vergessen oder diese Einstellung ändern möchten, müssen Sie die Synchronisierung zurücksetzen. <ph name="BEGIN_LINK" />Weitere Informationen<ph name="END_LINK" /></translation>
 <translation id="4751645464639803239">Neuer Inkognitotab</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_el.xtb b/ios/chrome/app/strings/resources/ios_strings_el.xtb
index fda8c68..a21446b 100644
--- a/ios/chrome/app/strings/resources/ios_strings_el.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_el.xtb
@@ -42,6 +42,7 @@
 <translation id="1265739287306757398">Μάθετε με ποιον τρόπο</translation>
 <translation id="1272079795634619415">Διακοπή</translation>
 <translation id="1275718070701477396">Επιλεγμένο</translation>
+<translation id="1281818060020671000">Διαχείριση δεδομένων</translation>
 <translation id="1282311502488501110">Να μην γίνει σύνδεση</translation>
 <translation id="1283524564873030414">Τελευταίες 24 ώρες</translation>
 <translation id="1285320974508926690">Να μην γίνεται ποτέ μετάφραση αυτού του ιστότοπου</translation>
@@ -406,6 +407,7 @@
 <translation id="4689564913179979534">Διαχείριση τρόπων πληρωμής…</translation>
 <translation id="470966556546083668">Να μην ενεργοποιηθεί ο συγχρονισμός</translation>
 <translation id="4731472194328757163">Επιτρέπεται η πρόσβαση στην κάμερα και το μικρόφωνο.</translation>
+<translation id="4737560986434232178">Αναζήτηση στις πρόσφατες καρτέλες</translation>
 <translation id="473775607612524610">Ενημέρωση</translation>
 <translation id="4747097190499141774">Η κρυπτογράφηση με φράση πρόσβασης δεν περιλαμβάνει τρόπους πληρωμής και διευθύνσεις από το Google Pay. Μόνο κάποιος που γνωρίζει τη φράση πρόσβασής σας μπορεί να διαβάσει τα κρυπτογραφημένα δεδομένα σας. Η φράση πρόσβασης δεν αποστέλλεται στην Google ούτε αποθηκεύεται από αυτήν. Εάν ξεχάσετε τη φράση πρόσβασής σας ή θέλετε να αλλάξετε αυτήν τη ρύθμιση, θα πρέπει να επαναφέρετε τον συγχρονισμό. <ph name="BEGIN_LINK" />Μάθετε περισσότερα<ph name="END_LINK" /></translation>
 <translation id="4751645464639803239">Νέα καρτέλα ανώνυμης περιήγησης</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb b/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb
index e60e0de..35545a7 100644
--- a/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb
@@ -489,6 +489,7 @@
 <translation id="5490005495580364134">Block all cookies (not recommended)</translation>
 <translation id="5513681519188741830"><ph name="TIME" /> h ago</translation>
 <translation id="5525269841082836315">Create passphrase</translation>
+<translation id="5542540507657872337"><ph name="COUNT" /> found</translation>
 <translation id="5548760955356983418">Handoff lets you start browsing a website on this device and then easily continue on your Mac. The current open website will appear in the Dock of your Mac.
 
 Handoff must also be enabled in the General section of Settings, and your devices must use the same iCloud account.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_es.xtb b/ios/chrome/app/strings/resources/ios_strings_es.xtb
index 523e31bc..d0bb353e 100644
--- a/ios/chrome/app/strings/resources/ios_strings_es.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_es.xtb
@@ -42,6 +42,7 @@
 <translation id="1265739287306757398">Más información</translation>
 <translation id="1272079795634619415">Detener</translation>
 <translation id="1275718070701477396">Seleccionado</translation>
+<translation id="1281818060020671000">Gestionar datos</translation>
 <translation id="1282311502488501110">No iniciar sesión</translation>
 <translation id="1283524564873030414">Últimas 24 horas</translation>
 <translation id="1285320974508926690">No traducir nunca este sitio</translation>
@@ -406,6 +407,7 @@
 <translation id="4689564913179979534">Gestionar métodos de pago...</translation>
 <translation id="470966556546083668">No activar la sincronización</translation>
 <translation id="4731472194328757163">Accesos a cámara y micrófono permitidos</translation>
+<translation id="4737560986434232178">Buscar en las pestañas recientes</translation>
 <translation id="473775607612524610">Actualizar</translation>
 <translation id="4747097190499141774">El cifrado mediante frase de contraseña no incluye los métodos de pago ni las direcciones de Google Pay. Solo alguien que tenga tu frase de contraseña puede leer tus datos cifrados. La frase de contraseña no se envía a Google, que tampoco la guarda. Si la olvidas o quieres cambiar esta opción, deberás restablecer la sincronización. <ph name="BEGIN_LINK" />Más información<ph name="END_LINK" /></translation>
 <translation id="4751645464639803239">Nueva pestaña incógnito</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_eu.xtb b/ios/chrome/app/strings/resources/ios_strings_eu.xtb
index 4f6756f9..a61639e 100644
--- a/ios/chrome/app/strings/resources/ios_strings_eu.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_eu.xtb
@@ -42,6 +42,7 @@
 <translation id="1265739287306757398">Lortu argibideak</translation>
 <translation id="1272079795634619415">Gelditu</translation>
 <translation id="1275718070701477396">Hautatua</translation>
+<translation id="1281818060020671000">Kudeatu datuak</translation>
 <translation id="1282311502488501110">Ez hasi saioa</translation>
 <translation id="1283524564873030414">Azken 24 orduetakoak</translation>
 <translation id="1285320974508926690">Ez itzuli inoiz webgune hau</translation>
@@ -406,6 +407,7 @@
 <translation id="4689564913179979534">Kudeatu ordainketa-metodoak…</translation>
 <translation id="470966556546083668">Ez aktibatu sinkronizazioa</translation>
 <translation id="4731472194328757163">Kamerarako eta mikrofonorako sarbideak gaituta daude</translation>
+<translation id="4737560986434232178">Bilatu erabilitako azken fitxetan</translation>
 <translation id="473775607612524610">Eguneratu</translation>
 <translation id="4747097190499141774">Pasaesaldi bidezko enkriptatzeak ez ditu hartzen barne Google Pay-ko ordainketa-metodoak eta helbideak. Pasaesaldia dutenek soilik irakur ditzakete enkriptatutako datuak. Pasaesaldia ez da bidaltzen Google-ra, ezta bertan gordetzen ere. Pasaesaldia ahazten bazaizu edo ezarpena aldatu nahi baduzu, sinkronizazioa berrezarri beharko duzu. <ph name="BEGIN_LINK" />Lortu informazio gehiago<ph name="END_LINK" /></translation>
 <translation id="4751645464639803239">Ezkutuko moduko fitxa berria</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fil.xtb b/ios/chrome/app/strings/resources/ios_strings_fil.xtb
index 869c177..ba9b2296 100644
--- a/ios/chrome/app/strings/resources/ios_strings_fil.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_fil.xtb
@@ -42,6 +42,7 @@
 <translation id="1265739287306757398">Alamin kung paano</translation>
 <translation id="1272079795634619415">Stop</translation>
 <translation id="1275718070701477396">Pinili</translation>
+<translation id="1281818060020671000">Pamahalaan ang Data</translation>
 <translation id="1282311502488501110">Huwag Mag-sign In</translation>
 <translation id="1283524564873030414">Nakalipas na 24 na Oras</translation>
 <translation id="1285320974508926690">Huwag isalin kailanman ang site na ito</translation>
@@ -406,6 +407,7 @@
 <translation id="4689564913179979534">I-manage ang Payment Method...</translation>
 <translation id="470966556546083668">Huwag I-on ang Pag-sync</translation>
 <translation id="4731472194328757163">Pinapayagan ang access sa Camera at Mikopono</translation>
+<translation id="4737560986434232178">Maghanap sa Mga Kamakailang Tab</translation>
 <translation id="473775607612524610">I-update</translation>
 <translation id="4747097190499141774">Hindi kasama sa pag-encrypt ng passphrase ang mga paraan ng pagbabayad at address mula sa Google Pay. Ang tao lang na may alam ng iyong passphrase ang makakabasa sa naka-encrypt mong data. Hindi ipinapadala sa Google ang passphrase at hindi nito ito sino-store. Kung makalimutan mo ang iyong passphrase o gusto mong baguhin ang setting na ito, kakailanganin mong i-reset ang pag-sync. <ph name="BEGIN_LINK" />Matuto pa<ph name="END_LINK" /></translation>
 <translation id="4751645464639803239">Bagong Tab na Incognito</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ky.xtb b/ios/chrome/app/strings/resources/ios_strings_ky.xtb
index 8eba9aa..380735c 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ky.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ky.xtb
@@ -42,6 +42,7 @@
 <translation id="1265739287306757398">Үйрөнүп алыңыз</translation>
 <translation id="1272079795634619415">Токтотуу</translation>
 <translation id="1275718070701477396">Тандалган</translation>
+<translation id="1281818060020671000">Дайын-даректерди башкаруу</translation>
 <translation id="1282311502488501110">Кирбейм</translation>
 <translation id="1283524564873030414">Акыркы 24 саат</translation>
 <translation id="1285320974508926690">Бул сайт эч качан которулбасын</translation>
@@ -406,6 +407,7 @@
 <translation id="4689564913179979534">Төлөм ыкмаларын башкаруу…</translation>
 <translation id="470966556546083668">Шайкештирүү күйгүзүлбөсүн</translation>
 <translation id="4731472194328757163">Камера менен микрофонду колдонууга уруксат берилди</translation>
+<translation id="4737560986434232178">Акыркы өтмөктөрдөн издөө</translation>
 <translation id="473775607612524610">Жаңыртуу</translation>
 <translation id="4747097190499141774">Купуя сөз айкашы менен шифрлөө Google Pay'деги төлөм ыкмалары менен даректерине карата колдонулбайт. Шифрленген дайын-даректериңизди купуя сөз айкашын билген адам гана окуй алат. Бул купуя сөз айкашы Google'га жөнөтүлбөйт же анда сакталбайт. Эгер купуя сөз айкашыңызды унутуп калсаңыз, шайкештирүүнү баштапкы абалга келтиришиңиз керек болот. <ph name="BEGIN_LINK" />Кеңири маалымат<ph name="END_LINK" /></translation>
 <translation id="4751645464639803239">Жаңы жашыруун өтмөк</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_mr.xtb b/ios/chrome/app/strings/resources/ios_strings_mr.xtb
index 9d6c62d..13ccbe9 100644
--- a/ios/chrome/app/strings/resources/ios_strings_mr.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_mr.xtb
@@ -42,6 +42,7 @@
 <translation id="1265739287306757398">कसे ते जाणून घ्या</translation>
 <translation id="1272079795634619415">थांबा</translation>
 <translation id="1275718070701477396">निवडलेले</translation>
+<translation id="1281818060020671000">डेटा व्यवस्थापित करा</translation>
 <translation id="1282311502488501110">साइन इन करू नका</translation>
 <translation id="1283524564873030414">मागील २४ तासांचा</translation>
 <translation id="1285320974508926690">या साइटचा कधीही भाषांतर करु नका</translation>
@@ -407,6 +408,7 @@
 <translation id="4689564913179979534">पेमेंट पद्धती व्यवस्थापित करा...</translation>
 <translation id="470966556546083668">सिंक करा हे सुरू करू नका</translation>
 <translation id="4731472194328757163">कॅमेरा आणि मायक्रोफोन अ‍ॅक्सेस करण्याची अनुमती दिली</translation>
+<translation id="4737560986434232178">अलीकडील टॅबमध्ये शोधा</translation>
 <translation id="473775607612524610">अपडेट करा</translation>
 <translation id="4747097190499141774">पासफ्रेज एंक्रिप्शनमध्ये Google Pay वरील पेमेंट पद्धतींचा आणि पत्त्यांचा समावेश नसतो. फक्त तुमचा पासफ्रेज असलेली एखादी व्यक्ती तुमचा एंक्रिप्ट केलेला डेटा वाचू शकते. पासफ्रेज Google कडे पाठवला किंवा त्याद्वारे स्टोअर केला जात नाही. तुम्ही तुमचा पासफ्रेज विसरल्यास किंवा तुम्हाला हे सेटिंग बदलायचे असल्यास, तुम्हाला सिंक रीसेट करण्याची आवश्यकता असेल. <ph name="BEGIN_LINK" />अधिक जाणून घ्या<ph name="END_LINK" /></translation>
 <translation id="4751645464639803239">नवीन गुप्त टॅब</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ne.xtb b/ios/chrome/app/strings/resources/ios_strings_ne.xtb
index dad536db..ad7896f 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ne.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ne.xtb
@@ -12,6 +12,7 @@
 
         
 तपाईंको डिफल्ट सर्च इन्जिन <ph name="DSE_NAME" /> हो। तपाईंको सर्च इन्जिनमा खोजको इतिहास मेटाउन मिल्छ भने खोज इतिहास मेटाउन सर्च इन्जिनले उपलब्ध गराएका निर्देशनहरू हेर्नुहोस्।</translation>
+<translation id="1054045277222934172">तपाईं सेटिङ अनि सामग्रीसम्बन्धी सेटिङमा गई डिफल्ट साइट भ्यू बदलेर डेस्कटप बनाउन सक्नुहुन्छ</translation>
 <translation id="1063454504051558093">अर्को पासवर्ड प्रयोग गर्नुहोस्...</translation>
 <translation id="1066060668811609597">सिंक व्यवस्थापन गर्नुहोस्</translation>
 <translation id="1076421457278169141">कोड स्क्यान गरियो</translation>
@@ -182,6 +183,7 @@
 <translation id="2690858294534178585">क्यामेरा प्रयोग भइरहेको छ</translation>
 <translation id="2691653761409724435">अफलाइन उपलब्ध छैन</translation>
 <translation id="2695507686909505111">पृष्ठ अनुवाद गरियो</translation>
+<translation id="2700241355396984822">अनुमति तय गर्ने विकल्पहरू</translation>
 <translation id="2702801445560668637">पाठ्य सूची</translation>
 <translation id="2704491540504985681">डाउनलोडहरू</translation>
 <translation id="2704606927547763573">प्रतिलिपि गरियो</translation>
@@ -318,6 +320,8 @@
 <translation id="3861486700625780712">अनफलो गर्नुहोस्</translation>
 <translation id="3892144330757387737">तपाईंले गर्नुभएका क्रियाकलापको इतिहास यहाँ देखिने छ</translation>
 <translation id="3897092660631435901">मेनु</translation>
+<translation id="3904829425754749514">तपाईंको सङ्गठनले सिंक गर्ने सुविधा अफ गरेको छ। तपाईं यो डिभाइसमा आफ्ना बुकमार्क, हिस्ट्री, पासवर्ड र अन्य सेटिङ देखिरहनु हुने छ। तपाईंले यी कुरा परिवर्तन गर्नुभयो भने ती परिवर्तन तपाईंको खातामा सिंक हुने छैनन्।</translation>
+<translation id="3905353503976611311">वेबमा खोज्नुहोस्</translation>
 <translation id="3913386780052199712">तपाईंले Chrome मा साइन इन गर्नुभएको छ</translation>
 <translation id="3915450441834151894">साइटको जानकारी</translation>
 <translation id="3922310737605261887">प्रतिलिपि गरिएको पाठको खोजी गर्नुहोस्</translation>
@@ -347,6 +351,7 @@
 <translation id="4172051516777682613">सधैँ देखाउनुहोस्</translation>
 <translation id="418156467088430727">नयाँ ट्याबमा अफलाइन संस्करण हेर्नुहोस्</translation>
 <translation id="4181841719683918333">भाषाहरू</translation>
+<translation id="4223967053752765281">तपाईंको सङ्गठनले साइन इन गर्ने सुविधा अफ गरेको छ। तपाईं यो डिभाइसमा आफ्ना बुकमार्क, हिस्ट्री, पासवर्ड र अन्य सेटिङ देखिरहनु हुने छ। तपाईंले यी कुरा परिवर्तन गर्नुभयो भने ती परिवर्तन तपाईंको खातामा सिंक हुने छैनन्।</translation>
 <translation id="4237377247299956313"><ph name="BEGIN_BOLD" />डिफल्ट ब्राउजर एप<ph name="END_BOLD" />मा ट्याप गर्नुहोस्</translation>
 <translation id="424315890655130736">पासफ्रेज प्रविष्टि गर्नुहोस्</translation>
 <translation id="4249955472157341256">प्रकाशित समयअनुसार क्रमबद्ध गर्नुहोस्</translation>
@@ -371,6 +376,7 @@
 <translation id="4469418912670346607">सेटअप जारी राख्नुहोस्</translation>
 <translation id="4474494258097106883">तपाईंको iPhone का लागि बनाइएको</translation>
 <translation id="4476574785019001431">सेटिङहरू</translation>
+<translation id="448433063499977729">सिंक गर्ने सुविधा अफ गरिएको छ</translation>
 <translation id="4496373720959965247">ट्याबहरू थप्नुहोस् र पृष्ठहरू बीच बदल्नुहोस्</translation>
 <translation id="4502566650163919158">अहिले नै जाँच्नुहोस्</translation>
 <translation id="4505980578794259603">अन्तिम पटक <ph name="TIME" /> जाँच गरिएको थियो।</translation>
@@ -489,6 +495,7 @@
 <translation id="5580834567471114021">पछि पढ्न सेभ गरिएका वेबपेजको सूचीमा हाल्ने हो?</translation>
 <translation id="5592679540098330836"><ph name="NAME" /> को खातामा सिंक गर्ने सुविधा सक्रिय गर्नुहोस्</translation>
 <translation id="560322036295180549">तपाईंको सङ्गठनले यो विकल्प अफ गरेको छ</translation>
+<translation id="560999923643681074">बदल्ने अनुमति</translation>
 <translation id="5614553682702429503">पासवर्ड सेभ गर्नुहोस्</translation>
 <translation id="5626245204502895507">यस समयमा फाइल डाउनलोड गर्न सकिदैन।</translation>
 <translation id="5631164295104953411">भुक्तानी विधि थप्नुहोस्‌</translation>
@@ -758,6 +765,7 @@
 <translation id="7840771868269352570">तपाईंले चयन गर्नुभएका वस्तुहरू हटाइने छन्।</translation>
 <translation id="7856733331829174190">डाउनलोड गर्न सकिएन</translation>
 <translation id="7859704718976024901">ब्राउजिङ इतिहास</translation>
+<translation id="7884694604461143138">सर्च हिस्ट्री (<ph name="COUNT" /> वटा सामग्री भेटियो)</translation>
 <translation id="7887198238286927132">तपाईंको गोपनीयताको सुरक्षा गर्न Chrome ले यो फिल्ड स्वतः भर्ने छैन।</translation>
 <translation id="7911190106180361398">तपाईंको सङ्गठनले तपाईंलाई सबै सामग्री सिंक गर्ने अनुमति दिएको छैन।</translation>
 <translation id="7938254975914653459">फेसटाइम</translation>
@@ -789,6 +797,7 @@
 <translation id="8076014560081431679">सुरक्षित गरिएका साइटका सेटिङहरूलाई मेटाइने छैन र त्यसले तपाईँको ब्राउज गर्ने बानीलाई झल्काउन सक्छ। <ph name="BEGIN_LINK" />थप जान्नुहोस्<ph name="END_LINK" /></translation>
 <translation id="8079602123447022758">यो सेटिङ व्यवस्थापन गरिएको छ। थप जानकारीका लागि डबल ट्याप गर्नुहोस्</translation>
 <translation id="8080028325999236607">सबै ट्याबहरू बन्द गर्नुहोस्</translation>
+<translation id="809543534949702122">सर्च हिस्ट्री</translation>
 <translation id="8101409298456377967">तपाईं साइट र एपहरूमा सजिलै साइन इन गर्न चाहनुहुन्छ भने पासवर्ड सिर्जना गर्नुहोस्, सेभ गर्नुहोस् र व्यवस्थापन गर्नुहोस्। <ph name="BEGIN_LINK" />थप जान्नुहोस्<ph name="END_LINK" /></translation>
 <translation id="8105368624971345109">निष्क्रिय पार्नुहोस्</translation>
 <translation id="8114753159095730575">डाउनलोड गर्न फाइल उपलब्ध छ। स्क्रिनको फेदनजिकै विकल्पहरू उपलब्ध छन्।</translation>
@@ -810,6 +819,7 @@
 <translation id="8319076807703933069">नयाँ खोज</translation>
 <translation id="8323906514956095947">ट्याबसम्बन्धी थप विकल्पहरू हेर्न टच एण्ड होल्ड गर्नुहोस्</translation>
 <translation id="8328777765163860529">सबै बन्द गर्नुहोस्</translation>
+<translation id="8364085047956854021">तपाईं "<ph name="SITE_NAME" />" बाट बाहिरिनुभयो भने यो साइटसम्बन्धी अनुमति रिसेट गरी अफ गरिने छ।</translation>
 <translation id="8378714024927312812">तपाईंको सङ्गठनले व्यवस्थापन गरेको</translation>
 <translation id="8386068868580335421">रिसेट गर्नुहोस्</translation>
 <translation id="8407669440184693619">यो साइटका लागि कुनै पनि पासवर्ड फेला परेन</translation>
@@ -896,6 +906,7 @@
 <translation id="9148126808321036104">पुन: साइन इन गर्नुहोस्</translation>
 <translation id="9152539721251340337">QR कोड सिर्जना गर्नुहोस्</translation>
 <translation id="9157836665414082580">संवादहरू रोक्नुहोस्</translation>
+<translation id="9177438225260810839">खुला ट्याबहरूमा खोज्नुहोस्</translation>
 <translation id="9188680907066685419">व्यवस्थापन गरिएको खाताबाट साइन आउट गर्ने</translation>
 <translation id="9200875785104711666"><ph name="TIME" /> दिनअघि</translation>
 <translation id="9203116392574189331">ह्यान्डअफ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_no.xtb b/ios/chrome/app/strings/resources/ios_strings_no.xtb
index af90b5d4..e5538f7 100644
--- a/ios/chrome/app/strings/resources/ios_strings_no.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_no.xtb
@@ -42,6 +42,7 @@
 <translation id="1265739287306757398">Finn ut hvordan</translation>
 <translation id="1272079795634619415">Stopp</translation>
 <translation id="1275718070701477396">Valgt</translation>
+<translation id="1281818060020671000">Administrer data</translation>
 <translation id="1282311502488501110">Ikke logg på</translation>
 <translation id="1283524564873030414">Siste døgn</translation>
 <translation id="1285320974508926690">Oversett aldri dette nettstedet</translation>
@@ -406,6 +407,7 @@
 <translation id="4689564913179979534">Administrer betalingsmåter…</translation>
 <translation id="470966556546083668">Ikke slå på synkronisering</translation>
 <translation id="4731472194328757163">Kamera- og mikrofontilgang er tillatt</translation>
+<translation id="4737560986434232178">Søk i nylige faner</translation>
 <translation id="473775607612524610">Oppdater</translation>
 <translation id="4747097190499141774">Kryptering av passordfraser inkluderer ikke betalingsmåter og adresser fra Google Pay. Bare personer som har passordfrasen din, kan lese de krypterte dataene dine. Passordfrasen blir verken sendt til Google eller lagret. Hvis du glemmer den, må du tilbakestille synkroniseringen. <ph name="BEGIN_LINK" />Finn ut mer<ph name="END_LINK" /></translation>
 <translation id="4751645464639803239">Ny inkognitofane</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_uz.xtb b/ios/chrome/app/strings/resources/ios_strings_uz.xtb
index b050b30..655ccd9 100644
--- a/ios/chrome/app/strings/resources/ios_strings_uz.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_uz.xtb
@@ -489,6 +489,7 @@
 <translation id="5490005495580364134">Barcha cookie fayllarni taqiqlash (tavsiya etilmaydi)</translation>
 <translation id="5513681519188741830"><ph name="TIME" /> soat oldin</translation>
 <translation id="5525269841082836315">Kodli ibora yaratish</translation>
+<translation id="5542540507657872337"><ph name="COUNT" /> ta natija topildi</translation>
 <translation id="5548760955356983418">Handoff funksiyasi veb-saytni bir qurilmada ochib, boshqasida davom etish imkoniyatini beradi. Ochilgan sayt Mac kompyuteringizning Dock panelida paydo bo‘ladi.
 
 Handoff funksiyasini faqatgina Chrome sozlamalarida emas, balki qurilma sozlamalarida (“Umumiy” bo‘limida) ham yoqish kerak. Barcha qurilmalaringiz umumiy iCloud hisobida sinxronlanishi zarur.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_zu.xtb b/ios/chrome/app/strings/resources/ios_strings_zu.xtb
index 5af66f03..45edde0 100644
--- a/ios/chrome/app/strings/resources/ios_strings_zu.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_zu.xtb
@@ -42,6 +42,7 @@
 <translation id="1265739287306757398">Funda ukuthi kanjani</translation>
 <translation id="1272079795634619415">Misa</translation>
 <translation id="1275718070701477396">Ikhethiwe</translation>
+<translation id="1281818060020671000">Phatha Idatha</translation>
 <translation id="1282311502488501110">Ungangeni ngemvume</translation>
 <translation id="1283524564873030414">Amahora angu-24 okugcina</translation>
 <translation id="1285320974508926690">Ungalokothi uhumushe leli sayithi</translation>
@@ -406,6 +407,7 @@
 <translation id="4689564913179979534">Phatha izindlela zokukhokha...</translation>
 <translation id="470966556546083668">Ungakuvuli Ukuvumelanisa</translation>
 <translation id="4731472194328757163">Ukufinyelela kwemakhera nemakrofoni kuvunyelwe</translation>
+<translation id="4737560986434232178">Sesha Amathebhu Akamuva</translation>
 <translation id="473775607612524610">Buyekeza</translation>
 <translation id="4747097190499141774">Othile kuphela onomushwana wakho wokungena ongafunda idatha yakho ebetheliwe. Umushwana wokungena awuthunyelwa noma ugcinwe yi-Google. Uma ukhohlwa umushwana wakho wokungena noma ufuna ukushintsha lesi silungiselelo, kuzomele usethe kabusha ukuvumelanisa. <ph name="BEGIN_LINK" />Funda kabanzi<ph name="END_LINK" /></translation>
 <translation id="4751645464639803239">Ithebhu entsha ye-incognito</translation>
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 2ab526c6..0db4be4 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 @@
-ba6ad1c638e3256b31133e08caf9485c93051d32
\ No newline at end of file
+3ec6aada11a58fe5d6613970521b515239169777
\ 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 e6054dd9..2bae553 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 @@
-a09c859cafe91f68e00e9e59e18eef74983660bc
\ No newline at end of file
+f0b0bcd16d8fdd9b5f0a49f85e48b8ae69da410f
\ 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 28e83dc9..2e738b37 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 @@
-7f8132105ae765dccd9c6a414b2355cbd09294a8
\ No newline at end of file
+c5e105d6244ec3b6efffbd947d9b4fbc15251495
\ 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 d179395..5f895fa 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 @@
-839c876884736427f6452e1f402bface6f7f54ac
\ No newline at end of file
+8797b1b8b2a700d8a363b976fb9145eea5376a88
\ 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 227ec86..6cdb38a 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 @@
-3c26ca277558f14ad8dbb5c226c036ded76c1967
\ No newline at end of file
+76a9497ea48b5ebe60886da68e0202603855a699
\ 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 58c4242..aff0f836 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 @@
-6ac3db609148a88ef0d2fd48aa19c1a7aca1a182
\ No newline at end of file
+c330322134699a419a6b383f06cc0e7c141ab856
\ 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 684f1ea..734ae75 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 @@
-9678939255d6c5b7002470c81d949ab2f3354f6f
\ No newline at end of file
+f180d1d29615700c7ce4987cba76dbde982ea360
\ 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 63ded5a..35a9e21 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 @@
-ebc520291875285bea815a89d33740cd22b878e1
\ No newline at end of file
+ebc7c72d193aa115870ca9fe85ce66ac4820cc8b
\ 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 7ea93d560..72ea1c4 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 @@
-a2b63f6d53116c036b8617c89bad9b8835b931ef
\ No newline at end of file
+4e01b0b66b478402cd95c1d62c05199051e3659c
\ 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 3589fb5..60630c5 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 @@
-c13c3898bb1e5529c903fb5a1f6aad71fbdfe16b
\ No newline at end of file
+dc3faba6d7ea9d05c88e9e692ba3f713cb617390
\ No newline at end of file
diff --git a/ipc/message_filter_router.cc b/ipc/message_filter_router.cc
index 8e2b0ca..7542b97 100644
--- a/ipc/message_filter_router.cc
+++ b/ipc/message_filter_router.cc
@@ -7,7 +7,6 @@
 #include <stddef.h>
 #include <stdint.h>
 
-#include "base/cxx17_backports.h"
 #include "ipc/ipc_message_macros.h"
 #include "ipc/ipc_message_start.h"
 #include "ipc/ipc_message_utils.h"
@@ -72,7 +71,7 @@
   if (RemoveFilterImpl(global_filters_, filter))
     return;
 
-  for (size_t i = 0; i < base::size(message_class_filters_); ++i)
+  for (size_t i = 0; i < std::size(message_class_filters_); ++i)
     RemoveFilterImpl(message_class_filters_[i], filter);
 }
 
@@ -89,7 +88,7 @@
 
 void MessageFilterRouter::Clear() {
   global_filters_.clear();
-  for (size_t i = 0; i < base::size(message_class_filters_); ++i)
+  for (size_t i = 0; i < std::size(message_class_filters_); ++i)
     message_class_filters_[i].clear();
 }
 
diff --git a/ipc/sync_socket_unittest.cc b/ipc/sync_socket_unittest.cc
index 1173b5f7..7396a00 100644
--- a/ipc/sync_socket_unittest.cc
+++ b/ipc/sync_socket_unittest.cc
@@ -2,19 +2,18 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "base/sync_socket.h"
-
 #include <stddef.h>
 #include <stdio.h>
+
 #include <memory>
 #include <sstream>
 #include <string>
 
 #include "base/bind.h"
-#include "base/cxx17_backports.h"
 #include "base/location.h"
 #include "base/memory/raw_ptr.h"
 #include "base/run_loop.h"
+#include "base/sync_socket.h"
 #include "base/task/single_thread_task_runner.h"
 #include "base/threading/thread.h"
 #include "build/build_config.h"
@@ -53,7 +52,7 @@
 namespace {
 
 const char kHelloString[] = "Hello, SyncSocket Client";
-const size_t kHelloStringLength = base::size(kHelloString);
+const size_t kHelloStringLength = std::size(kHelloString);
 
 // The SyncSocket server listener class processes two sorts of
 // messages from the client.
@@ -229,7 +228,7 @@
   size_t received = 1U;  // Initialize to an unexpected value.
   worker.task_runner()->PostTask(
       FROM_HERE, base::BindOnce(&BlockingRead, &pair[0], &buf[0],
-                                base::size(buf), &received));
+                                std::size(buf), &received));
 
   // Wait for the worker thread to say hello.
   char hello[kHelloStringLength] = {0};
diff --git a/mojo/core/channel_fuchsia.cc b/mojo/core/channel_fuchsia.cc
index df08ba3d..6844e33 100644
--- a/mojo/core/channel_fuchsia.cc
+++ b/mojo/core/channel_fuchsia.cc
@@ -18,7 +18,6 @@
 
 #include "base/bind.h"
 #include "base/containers/circular_deque.h"
-#include "base/cxx17_backports.h"
 #include "base/files/scoped_file.h"
 #include "base/fuchsia/fuchsia_logging.h"
 #include "base/location.h"
@@ -291,7 +290,7 @@
       zx_handle_t handles[ZX_CHANNEL_MAX_MSG_HANDLES] = {};
 
       zx_status_t read_result =
-          handle_.read(0, buffer, handles, buffer_capacity, base::size(handles),
+          handle_.read(0, buffer, handles, buffer_capacity, std::size(handles),
                        &bytes_read, &handles_read);
       if (read_result == ZX_OK) {
         for (size_t i = 0; i < handles_read; ++i) {
@@ -304,7 +303,7 @@
           break;
         }
       } else if (read_result == ZX_ERR_BUFFER_TOO_SMALL) {
-        DCHECK_LE(handles_read, base::size(handles));
+        DCHECK_LE(handles_read, std::size(handles));
         next_read_size = bytes_read;
       } else if (read_result == ZX_ERR_SHOULD_WAIT) {
         break;
@@ -338,7 +337,7 @@
       zx_handle_t handles[ZX_CHANNEL_MAX_MSG_HANDLES] = {};
       size_t handles_count = outgoing_handles.size();
 
-      DCHECK_LE(handles_count, base::size(handles));
+      DCHECK_LE(handles_count, std::size(handles));
       for (size_t i = 0; i < handles_count; ++i) {
         DCHECK(outgoing_handles[i].handle().is_valid());
         handles[i] = outgoing_handles[i].handle().GetHandle().get();
diff --git a/mojo/core/data_pipe_unittest.cc b/mojo/core/data_pipe_unittest.cc
index 20e06bc4..9792ef80 100644
--- a/mojo/core/data_pipe_unittest.cc
+++ b/mojo/core/data_pipe_unittest.cc
@@ -9,7 +9,6 @@
 
 #include "base/bind.h"
 #include "base/check_op.h"
-#include "base/cxx17_backports.h"
 #include "base/location.h"
 #include "base/run_loop.h"
 #include "base/test/task_environment.h"
@@ -192,7 +191,7 @@
   int32_t elements[10] = {};
   uint32_t num_bytes = 0;
 
-  num_bytes = static_cast<uint32_t>(base::size(elements) * sizeof(elements[0]));
+  num_bytes = static_cast<uint32_t>(std::size(elements) * sizeof(elements[0]));
 
   elements[0] = 123;
   elements[1] = 456;
@@ -235,7 +234,7 @@
        100,                              // |element_num_bytes|.
        0}                                // |capacity_num_bytes|.
   };
-  for (size_t i = 0; i < base::size(test_options); i++) {
+  for (size_t i = 0; i < std::size(test_options); i++) {
     MojoHandle producer_handle, consumer_handle;
     MojoCreateDataPipeOptions* options = i ? &test_options[i] : nullptr;
     ASSERT_EQ(MOJO_RESULT_OK,
@@ -260,7 +259,7 @@
   uint32_t num_bytes = 0;
 
   // Try reading; nothing there yet.
-  num_bytes = static_cast<uint32_t>(base::size(elements) * sizeof(elements[0]));
+  num_bytes = static_cast<uint32_t>(std::size(elements) * sizeof(elements[0]));
   ASSERT_EQ(MOJO_RESULT_SHOULD_WAIT, ReadData(elements, &num_bytes));
 
   // Query; nothing there yet.
@@ -898,7 +897,7 @@
   // Try writing more than the total capacity of the pipe.
   uint32_t num_bytes = 20u * sizeof(int32_t);
   int32_t buffer[100];
-  Seq(0, base::size(buffer), buffer);
+  Seq(0, std::size(buffer), buffer);
   ASSERT_EQ(MOJO_RESULT_OUT_OF_RANGE, WriteData(buffer, &num_bytes, true));
 
   // Should still be empty.
@@ -908,7 +907,7 @@
 
   // Write some data.
   num_bytes = 5u * sizeof(int32_t);
-  Seq(100, base::size(buffer), buffer);
+  Seq(100, std::size(buffer), buffer);
   ASSERT_EQ(MOJO_RESULT_OK, WriteData(buffer, &num_bytes, true));
   ASSERT_EQ(5u * sizeof(int32_t), num_bytes);
 
@@ -934,7 +933,7 @@
   // Try writing more than the available capacity of the pipe, but less than the
   // total capacity.
   num_bytes = 6u * sizeof(int32_t);
-  Seq(200, base::size(buffer), buffer);
+  Seq(200, std::size(buffer), buffer);
   ASSERT_EQ(MOJO_RESULT_OUT_OF_RANGE, WriteData(buffer, &num_bytes, true));
 
   // Try reading too much.
@@ -951,13 +950,13 @@
 
   // Just a little.
   num_bytes = 2u * sizeof(int32_t);
-  Seq(300, base::size(buffer), buffer);
+  Seq(300, std::size(buffer), buffer);
   ASSERT_EQ(MOJO_RESULT_OK, WriteData(buffer, &num_bytes, true));
   ASSERT_EQ(2u * sizeof(int32_t), num_bytes);
 
   // Just right.
   num_bytes = 3u * sizeof(int32_t);
-  Seq(400, base::size(buffer), buffer);
+  Seq(400, std::size(buffer), buffer);
   ASSERT_EQ(MOJO_RESULT_OK, WriteData(buffer, &num_bytes, true));
   ASSERT_EQ(3u * sizeof(int32_t), num_bytes);
 
@@ -1053,7 +1052,7 @@
 // this.)
 TEST_F(DataPipeTest, WrapAround) {
   unsigned char test_data[1000];
-  for (size_t i = 0; i < base::size(test_data); i++)
+  for (size_t i = 0; i < std::size(test_data); i++)
     test_data[i] = static_cast<unsigned char>(i);
 
   const MojoCreateDataPipeOptions options = {
@@ -1130,7 +1129,7 @@
 
   // Read as much as possible. We should read 100 bytes.
   num_bytes =
-      static_cast<uint32_t>(base::size(read_buffer) * sizeof(read_buffer[0]));
+      static_cast<uint32_t>(std::size(read_buffer) * sizeof(read_buffer[0]));
   memset(read_buffer, 0, num_bytes);
   ASSERT_EQ(MOJO_RESULT_OK, ReadData(read_buffer, &num_bytes));
   ASSERT_EQ(100u, num_bytes);
diff --git a/mojo/core/embedder_unittest.cc b/mojo/core/embedder_unittest.cc
index ea68918..847d6be1 100644
--- a/mojo/core/embedder_unittest.cc
+++ b/mojo/core/embedder_unittest.cc
@@ -13,7 +13,6 @@
 #include "base/base_paths.h"
 #include "base/bind.h"
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file.h"
 #include "base/memory/ptr_util.h"
 #include "base/memory/read_only_shared_memory_region.h"
@@ -360,8 +359,8 @@
   const size_t kShmSize = 1234;
   RunTestClient("MultiprocessMixMachAndFdsClient", [&](MojoHandle server_mp) {
     // 1. Create fds or Mach objects and mojo handles from them.
-    MojoHandle platform_handles[base::size(kTestHandleTypes)];
-    for (size_t i = 0; i < base::size(kTestHandleTypes); i++) {
+    MojoHandle platform_handles[std::size(kTestHandleTypes)];
+    for (size_t i = 0; i < std::size(kTestHandleTypes); i++) {
       const auto type = kTestHandleTypes[i];
       PlatformHandle scoped_handle;
       if (type == HandleType::POSIX) {
@@ -387,7 +386,7 @@
 
     // 2. Send all the handles to the child.
     WriteMessageWithHandles(server_mp, "hello", platform_handles,
-                            base::size(kTestHandleTypes));
+                            std::size(kTestHandleTypes));
 
     // 3. Read a message from |server_mp|.
     EXPECT_EQ("bye", ReadMessage(server_mp));
@@ -397,7 +396,7 @@
 DEFINE_TEST_CLIENT_TEST_WITH_PIPE(MultiprocessMixMachAndFdsClient,
                                   EmbedderTest,
                                   client_mp) {
-  const int kNumHandles = base::size(kTestHandleTypes);
+  const int kNumHandles = std::size(kTestHandleTypes);
   MojoHandle platform_handles[kNumHandles];
 
   // 1. Read from |client_mp|, which should have a message containing
diff --git a/mojo/core/multiprocess_message_pipe_unittest.cc b/mojo/core/multiprocess_message_pipe_unittest.cc
index cb02b88..83d0585 100644
--- a/mojo/core/multiprocess_message_pipe_unittest.cc
+++ b/mojo/core/multiprocess_message_pipe_unittest.cc
@@ -13,7 +13,6 @@
 #include <vector>
 
 #include "base/bind.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
 #include "base/files/scoped_file.h"
@@ -270,7 +269,7 @@
   std::string read_buffer(100, '\0');
   uint32_t num_bytes = static_cast<uint32_t>(read_buffer.size());
   MojoHandle handles[10];
-  uint32_t num_handlers = base::size(handles);  // Maximum number to receive
+  uint32_t num_handlers = std::size(handles);  // Maximum number to receive
   CHECK_EQ(MojoReadMessage(h, &read_buffer[0], &num_bytes, &handles[0],
                            &num_handlers, MOJO_READ_MESSAGE_FLAG_NONE),
            MOJO_RESULT_OK);
@@ -350,7 +349,7 @@
     handles[0] = duplicated_shared_buffer;
     ASSERT_EQ(MOJO_RESULT_OK,
               MojoWriteMessage(h, &go1[0], static_cast<uint32_t>(go1.size()),
-                               &handles[0], base::size(handles),
+                               &handles[0], std::size(handles),
                                MOJO_WRITE_MESSAGE_FLAG_NONE));
 
     // Wait for a message from the child.
@@ -407,7 +406,7 @@
   std::string read_buffer(100, '\0');
   uint32_t num_bytes = static_cast<uint32_t>(read_buffer.size());
   MojoHandle handles[255];  // Maximum number to receive.
-  uint32_t num_handlers = base::size(handles);
+  uint32_t num_handlers = std::size(handles);
 
   CHECK_EQ(MojoReadMessage(h, &read_buffer[0], &num_bytes, &handles[0],
                            &num_handlers, MOJO_READ_MESSAGE_FLAG_NONE),
@@ -504,7 +503,7 @@
 
   // It should have a message pipe.
   MojoHandle handles[10];
-  uint32_t num_handlers = base::size(handles);
+  uint32_t num_handlers = std::size(handles);
   CHECK_EQ(MojoReadMessage(h, nullptr, nullptr, &handles[0], &num_handlers,
                            MOJO_READ_MESSAGE_FLAG_NONE),
            MOJO_RESULT_OK);
@@ -620,7 +619,7 @@
 
   // It should have a message pipe.
   MojoHandle handles[10];
-  uint32_t num_handlers = base::size(handles);
+  uint32_t num_handlers = std::size(handles);
   CHECK_EQ(MojoReadMessage(h, nullptr, nullptr, &handles[0], &num_handlers,
                            MOJO_READ_MESSAGE_FLAG_NONE),
            MOJO_RESULT_OK);
diff --git a/mojo/core/shared_buffer_dispatcher_unittest.cc b/mojo/core/shared_buffer_dispatcher_unittest.cc
index 84bae6bf..432a747 100644
--- a/mojo/core/shared_buffer_dispatcher_unittest.cc
+++ b/mojo/core/shared_buffer_dispatcher_unittest.cc
@@ -9,7 +9,6 @@
 
 #include <limits>
 
-#include "base/cxx17_backports.h"
 #include "base/memory/platform_shared_memory_region.h"
 #include "base/memory/ref_counted.h"
 #include "base/memory/writable_shared_memory_region.h"
@@ -67,7 +66,7 @@
   // Different flags.
   MojoCreateSharedBufferFlags flags_values[] = {
       MOJO_CREATE_SHARED_BUFFER_FLAG_NONE};
-  for (size_t i = 0; i < base::size(flags_values); i++) {
+  for (size_t i = 0; i < std::size(flags_values); i++) {
     const MojoCreateSharedBufferFlags flags = flags_values[i];
 
     // Different capacities (size 1).
diff --git a/mojo/public/cpp/base/byte_string_unittest.cc b/mojo/public/cpp/base/byte_string_unittest.cc
index fa39414..92d467648 100644
--- a/mojo/public/cpp/base/byte_string_unittest.cc
+++ b/mojo/public/cpp/base/byte_string_unittest.cc
@@ -17,7 +17,7 @@
       {'\xEF', '\xB7', '\xAF'},    // invalid UTF-8
       {'h', '\0', 'w', 'd', 'y'},  // embedded null
   };
-  for (size_t i = 0; i < base::size(kCases); ++i) {
+  for (size_t i = 0; i < std::size(kCases); ++i) {
     SCOPED_TRACE(base::StringPrintf("case %" PRIuS, i));
     std::string out;
     EXPECT_TRUE(mojom::ByteString::Deserialize(
diff --git a/mojo/public/cpp/base/ref_counted_memory_unittest.cc b/mojo/public/cpp/base/ref_counted_memory_unittest.cc
index 24c32dc..8a29c98c 100644
--- a/mojo/public/cpp/base/ref_counted_memory_unittest.cc
+++ b/mojo/public/cpp/base/ref_counted_memory_unittest.cc
@@ -2,7 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "base/cxx17_backports.h"
 #include "mojo/public/cpp/base/big_buffer_mojom_traits.h"
 #include "mojo/public/cpp/base/ref_counted_memory_mojom_traits.h"
 #include "mojo/public/cpp/test_support/test_utils.h"
@@ -15,7 +14,7 @@
   uint8_t data[] = {'a', 'b', 'c', 'd', 'e'};
 
   scoped_refptr<base::RefCountedMemory> in =
-      new base::RefCountedStaticMemory(&data, base::size(data));
+      new base::RefCountedStaticMemory(&data, std::size(data));
 
   scoped_refptr<base::RefCountedMemory> out;
   ASSERT_TRUE(
@@ -29,7 +28,7 @@
   // Stuff real data in out to ensure it gets overwritten with a null.
   uint8_t data[] = {'a', 'b', 'c', 'd', 'e'};
   scoped_refptr<base::RefCountedMemory> out =
-      new base::RefCountedStaticMemory(&data, base::size(data));
+      new base::RefCountedStaticMemory(&data, std::size(data));
 
   scoped_refptr<base::RefCountedMemory> in;
   ASSERT_TRUE(
diff --git a/mojo/public/cpp/bindings/lib/interface_endpoint_client.cc b/mojo/public/cpp/bindings/lib/interface_endpoint_client.cc
index afce763e..41071596c 100644
--- a/mojo/public/cpp/bindings/lib/interface_endpoint_client.cc
+++ b/mojo/public/cpp/bindings/lib/interface_endpoint_client.cc
@@ -12,7 +12,6 @@
 #include "base/check.h"
 #include "base/containers/contains.h"
 #include "base/containers/cxx20_erase.h"
-#include "base/cxx17_backports.h"
 #include "base/location.h"
 #include "base/logging.h"
 #include "base/memory/ptr_util.h"
@@ -398,7 +397,7 @@
     SyncEventWatcher watcher(&response->event,
                              base::BindRepeating(set_flag, &signaled));
     const bool* stop_flags[] = {&signaled};
-    watcher.SyncWatch(stop_flags, base::size(stop_flags));
+    watcher.SyncWatch(stop_flags, std::size(stop_flags));
   } else {
     // Else we can wait on the event directly. It will only signal after our
     // reply has been processed or cancelled.
diff --git a/mojo/public/cpp/bindings/tests/connector_unittest.cc b/mojo/public/cpp/bindings/tests/connector_unittest.cc
index d1e0d66..cb979a24 100644
--- a/mojo/public/cpp/bindings/tests/connector_unittest.cc
+++ b/mojo/public/cpp/bindings/tests/connector_unittest.cc
@@ -7,11 +7,11 @@
 #include <stddef.h>
 #include <stdlib.h>
 #include <string.h>
+
 #include <utility>
 
 #include "base/bind.h"
 #include "base/callback.h"
-#include "base/cxx17_backports.h"
 #include "base/memory/raw_ptr.h"
 #include "base/run_loop.h"
 #include "base/test/task_environment.h"
@@ -197,7 +197,7 @@
                        base::ThreadTaskRunnerHandle::Get());
 
   const char* kText[] = {"hello", "world"};
-  for (size_t i = 0; i < base::size(kText); ++i) {
+  for (size_t i = 0; i < std::size(kText); ++i) {
     Message message = CreateMessage(kText[i]);
     connector0.Accept(&message);
   }
@@ -205,7 +205,7 @@
   MessageAccumulator accumulator;
   connector1.set_incoming_receiver(&accumulator);
 
-  for (size_t i = 0; i < base::size(kText); ++i) {
+  for (size_t i = 0; i < std::size(kText); ++i) {
     if (accumulator.IsEmpty()) {
       base::RunLoop run_loop;
       accumulator.set_closure(run_loop.QuitClosure());
@@ -229,7 +229,7 @@
                        base::ThreadTaskRunnerHandle::Get());
 
   const char* kText[] = {"hello", "world"};
-  for (size_t i = 0; i < base::size(kText); ++i) {
+  for (size_t i = 0; i < std::size(kText); ++i) {
     Message message = CreateMessage(kText[i]);
     connector0.Accept(&message);
   }
@@ -379,7 +379,7 @@
                        base::ThreadTaskRunnerHandle::Get());
 
   const char* kText[] = {"hello", "world"};
-  for (size_t i = 0; i < base::size(kText); ++i) {
+  for (size_t i = 0; i < std::size(kText); ++i) {
     Message message = CreateMessage(kText[i]);
     connector0.Accept(&message);
   }
@@ -387,7 +387,7 @@
   ReentrantMessageAccumulator accumulator(&connector1);
   connector1.set_incoming_receiver(&accumulator);
 
-  for (size_t i = 0; i < base::size(kText); ++i) {
+  for (size_t i = 0; i < std::size(kText); ++i) {
     if (accumulator.IsEmpty()) {
       base::RunLoop run_loop;
       accumulator.set_closure(run_loop.QuitClosure());
diff --git a/mojo/public/cpp/bindings/tests/wtf_types_unittest.cc b/mojo/public/cpp/bindings/tests/wtf_types_unittest.cc
index 32168ec3..f995d7d 100644
--- a/mojo/public/cpp/bindings/tests/wtf_types_unittest.cc
+++ b/mojo/public/cpp/bindings/tests/wtf_types_unittest.cc
@@ -3,7 +3,6 @@
 // found in the LICENSE file.
 
 #include "base/bind.h"
-#include "base/cxx17_backports.h"
 #include "base/run_loop.h"
 #include "base/test/task_environment.h"
 #include "mojo/public/cpp/bindings/lib/message_fragment.h"
@@ -219,7 +218,7 @@
   // arrs[1] is null.
   arrs[2] = ConstructStringArray();
 
-  for (size_t i = 0; i < base::size(arrs); ++i) {
+  for (size_t i = 0; i < std::size(arrs); ++i) {
     base::RunLoop loop;
     // Test that a absl::optional<WTF::Vector<WTF::String>> is unchanged after
     // the following conversion:
@@ -246,7 +245,7 @@
   // maps[1] is null.
   maps[2] = ConstructStringMap();
 
-  for (size_t i = 0; i < base::size(maps); ++i) {
+  for (size_t i = 0; i < std::size(maps); ++i) {
     base::RunLoop loop;
     // Test that a absl::optional<WTF::HashMap<WTF::String, WTF::String>> is
     // unchanged after the following conversion:
diff --git a/pdf/pdf_view_plugin_base_unittest.cc b/pdf/pdf_view_plugin_base_unittest.cc
index be3fcd0..34e601d6 100644
--- a/pdf/pdf_view_plugin_base_unittest.cc
+++ b/pdf/pdf_view_plugin_base_unittest.cc
@@ -9,7 +9,6 @@
 #include <utility>
 #include <vector>
 
-#include "base/cxx17_backports.h"
 #include "base/memory/weak_ptr.h"
 #include "base/strings/string_piece.h"
 #include "base/test/icu_test_util.h"
@@ -1428,7 +1427,7 @@
   void SubmitFailingForm(const std::string& url) {
     EXPECT_CALL(fake_plugin_, CreateUrlLoaderInternal).Times(0);
     constexpr char kFormData[] = "form data";
-    fake_plugin_.SubmitForm(url, kFormData, base::size(kFormData));
+    fake_plugin_.SubmitForm(url, kFormData, std::size(kFormData));
   }
 
  protected:
diff --git a/pdf/pdfium/accessibility_unittest.cc b/pdf/pdfium/accessibility_unittest.cc
index 8280895d..6ed916c 100644
--- a/pdf/pdfium/accessibility_unittest.cc
+++ b/pdf/pdfium/accessibility_unittest.cc
@@ -54,7 +54,7 @@
       {15, 12, 26.666666f, 189.333328f, 84.000008f, 13.333344f},
       {15, 16, 28.000000f, 117.333334f, 152.000000f, 19.999992f},
   };
-  static_assert(base::size(kExpectedTextRuns) == kExpectedTextRunCount,
+  static_assert(std::size(kExpectedTextRuns) == kExpectedTextRunCount,
                 "Bad test expectation count");
 
   static constexpr size_t kExpectedCharCount = 30;
@@ -66,7 +66,7 @@
       {'y', 12}, {'e', 12},     {',', 4},      {' ', 6.6666}, {'w', 16},
       {'o', 12}, {'r', 8},      {'l', 4},      {'d', 12},     {'!', 2.6666},
   };
-  static_assert(base::size(kExpectedChars) == kExpectedCharCount,
+  static_assert(std::size(kExpectedChars) == kExpectedCharCount,
                 "Bad test expectation count");
 
   TestClient client;
@@ -134,7 +134,7 @@
   EXPECT_EQ(gfx::Rect(5, 3, 816, 1056), page_info.bounds);
   EXPECT_EQ(text_runs.size(), page_info.text_run_count);
   EXPECT_EQ(chars.size(), page_info.char_count);
-  ASSERT_EQ(page_objects.images.size(), base::size(kExpectedImageInfo));
+  ASSERT_EQ(page_objects.images.size(), std::size(kExpectedImageInfo));
 
   for (size_t i = 0; i < page_objects.images.size(); ++i) {
     EXPECT_EQ(page_objects.images[i].alt_text, kExpectedImageInfo[i].alt_text);
@@ -452,7 +452,7 @@
   EXPECT_EQ(gfx::Rect(5, 3, 533, 266), page_info.bounds);
   EXPECT_EQ(text_runs.size(), page_info.text_run_count);
   EXPECT_EQ(chars.size(), page_info.char_count);
-  ASSERT_EQ(page_objects.links.size(), base::size(expected_link_info));
+  ASSERT_EQ(page_objects.links.size(), std::size(expected_link_info));
 
   for (size_t i = 0; i < page_objects.links.size(); ++i) {
     const AccessibilityLinkInfo& link_info = page_objects.links[i];
@@ -491,7 +491,7 @@
   EXPECT_EQ(gfx::Rect(5, 3, 533, 266), page_info.bounds);
   EXPECT_EQ(text_runs.size(), page_info.text_run_count);
   EXPECT_EQ(chars.size(), page_info.char_count);
-  ASSERT_EQ(page_objects.highlights.size(), base::size(kExpectedHighlightInfo));
+  ASSERT_EQ(page_objects.highlights.size(), std::size(kExpectedHighlightInfo));
 
   for (size_t i = 0; i < page_objects.highlights.size(); ++i) {
     const AccessibilityHighlightInfo& highlight_info =
@@ -539,7 +539,7 @@
   EXPECT_EQ(text_runs.size(), page_info.text_run_count);
   EXPECT_EQ(chars.size(), page_info.char_count);
   ASSERT_EQ(page_objects.form_fields.text_fields.size(),
-            base::size(kExpectedTextFieldInfo));
+            std::size(kExpectedTextFieldInfo));
 
   for (size_t i = 0; i < page_objects.form_fields.text_fields.size(); ++i) {
     const AccessibilityTextFieldInfo& text_field_info =
diff --git a/pdf/pdfium/pdfium_engine.cc b/pdf/pdfium/pdfium_engine.cc
index 0f8171dd..c4ccad1 100644
--- a/pdf/pdfium/pdfium_engine.cc
+++ b/pdf/pdfium/pdfium_engine.cc
@@ -2951,7 +2951,7 @@
       static constexpr FPDF_ANNOTATION_SUBTYPE kFocusableAnnotSubtypes[] = {
           FPDF_ANNOT_LINK, FPDF_ANNOT_HIGHLIGHT, FPDF_ANNOT_WIDGET};
       FPDF_BOOL ret = FPDFAnnot_SetFocusableSubtypes(
-          form(), kFocusableAnnotSubtypes, base::size(kFocusableAnnotSubtypes));
+          form(), kFocusableAnnotSubtypes, std::size(kFocusableAnnotSubtypes));
       DCHECK(ret);
     }
   }
diff --git a/pdf/pdfium/pdfium_font_linux.cc b/pdf/pdfium/pdfium_font_linux.cc
index f24c26d..152f720 100644
--- a/pdf/pdfium/pdfium_font_linux.cc
+++ b/pdf/pdfium/pdfium_font_linux.cc
@@ -204,7 +204,7 @@
 
   // Map from the standard PDF fonts to TrueType font names.
   size_t i;
-  for (i = 0; i < base::size(kPdfFontSubstitutions); ++i) {
+  for (i = 0; i < std::size(kPdfFontSubstitutions); ++i) {
     if (strcmp(face, kPdfFontSubstitutions[i].pdf_name) == 0) {
       font_family = kPdfFontSubstitutions[i].face;
       if (kPdfFontSubstitutions[i].bold)
@@ -215,7 +215,7 @@
     }
   }
 
-  if (i == base::size(kPdfFontSubstitutions)) {
+  if (i == std::size(kPdfFontSubstitutions)) {
     // Convert to UTF-8 and make sure it is valid.
     std::string face_utf8;
     if (base::IsStringUTF8(face)) {
diff --git a/pdf/pdfium/pdfium_form_filler_unittest.cc b/pdf/pdfium/pdfium_form_filler_unittest.cc
index 9a04019..76927d4 100644
--- a/pdf/pdfium/pdfium_form_filler_unittest.cc
+++ b/pdf/pdfium/pdfium_form_filler_unittest.cc
@@ -6,7 +6,6 @@
 
 #include <vector>
 
-#include "base/cxx17_backports.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "build/build_config.h"
 #include "gin/public/isolate_holder.h"
@@ -227,7 +226,7 @@
 
 TEST_F(FormFillerJavaScriptTest, GetFilePath) {
   constexpr char kTestPath[] = "https://www.example.com/path/to/the.pdf";
-  constexpr int kTestPathSize = static_cast<int>(base::size(kTestPath));
+  constexpr int kTestPathSize = static_cast<int>(std::size(kTestPath));
 
   FormFillerTestClient client;
   EXPECT_CALL(client, GetURL).Times(2).WillRepeatedly(Return(kTestPath));
@@ -258,7 +257,7 @@
 
 TEST_F(FormFillerJavaScriptTest, GetFilePathShortBuffer) {
   constexpr char kTestPath[] = "https://www.example.com/path/to/the.pdf";
-  constexpr int kTestPathSize = static_cast<int>(base::size(kTestPath));
+  constexpr int kTestPathSize = static_cast<int>(std::size(kTestPath));
 
   FormFillerTestClient client;
   EXPECT_CALL(client, GetURL).WillRepeatedly(Return(kTestPath));
diff --git a/pdf/pdfium/pdfium_page_unittest.cc b/pdf/pdfium/pdfium_page_unittest.cc
index 14ac5a1..223aa396 100644
--- a/pdf/pdfium/pdfium_page_unittest.cc
+++ b/pdf/pdfium/pdfium_page_unittest.cc
@@ -178,7 +178,7 @@
   if (UsingTestFonts()) {
     expected_links[0].bounding_rects[0] = {99, 436, 236, 14};
   }
-  static constexpr size_t kExpectedLinkCount = base::size(expected_links);
+  static constexpr size_t kExpectedLinkCount = std::size(expected_links);
 
   TestClient client;
   std::unique_ptr<PDFiumEngine> engine =
@@ -501,7 +501,7 @@
 
   PDFiumPage& page = GetPDFiumPageForTest(*engine, 0);
   page.PopulateAnnotations();
-  ASSERT_EQ(base::size(kExpectedHighlights), page.highlights_.size());
+  ASSERT_EQ(std::size(kExpectedHighlights), page.highlights_.size());
 
   for (size_t i = 0; i < page.highlights_.size(); ++i) {
     ASSERT_EQ(kExpectedHighlights[i].start_char_index,
@@ -539,7 +539,7 @@
   PDFiumPage& page = GetPDFiumPageForTest(*engine, 0);
   page.PopulateAnnotations();
   size_t text_fields_count = page.text_fields_.size();
-  ASSERT_EQ(base::size(kExpectedTextFields), text_fields_count);
+  ASSERT_EQ(std::size(kExpectedTextFields), text_fields_count);
 
   for (size_t i = 0; i < text_fields_count; ++i) {
     EXPECT_EQ(kExpectedTextFields[i].name, page.text_fields_[i].name);
@@ -618,12 +618,12 @@
   PDFiumPage& page = GetPDFiumPageForTest(*engine, 0);
   page.PopulateAnnotations();
   size_t choice_fields_count = page.choice_fields_.size();
-  ASSERT_EQ(base::size(kExpectedChoiceFields), choice_fields_count);
+  ASSERT_EQ(std::size(kExpectedChoiceFields), choice_fields_count);
 
   for (size_t i = 0; i < choice_fields_count; ++i) {
     EXPECT_EQ(kExpectedChoiceFields[i].name, page.choice_fields_[i].name);
     size_t choice_field_options_count = page.choice_fields_[i].options.size();
-    ASSERT_EQ(base::size(kExpectedChoiceFields[i].options),
+    ASSERT_EQ(std::size(kExpectedChoiceFields[i].options),
               choice_field_options_count);
     for (size_t j = 0; j < choice_field_options_count; ++j) {
       EXPECT_EQ(kExpectedChoiceFields[i].options[j].name,
@@ -701,7 +701,7 @@
   PDFiumPage& page = GetPDFiumPageForTest(*engine, 0);
   page.PopulateAnnotations();
   size_t buttons_count = page.buttons_.size();
-  ASSERT_EQ(base::size(kExpectedButtons), buttons_count);
+  ASSERT_EQ(std::size(kExpectedButtons), buttons_count);
 
   for (size_t i = 0; i < buttons_count; ++i) {
     EXPECT_EQ(kExpectedButtons[i].name, page.buttons_[i].name);
diff --git a/pdf/ppapi_migration/printing_conversions_unittest.cc b/pdf/ppapi_migration/printing_conversions_unittest.cc
index 0bd0e1f..ad78696a 100644
--- a/pdf/ppapi_migration/printing_conversions_unittest.cc
+++ b/pdf/ppapi_migration/printing_conversions_unittest.cc
@@ -8,7 +8,6 @@
 
 #include <vector>
 
-#include "base/cxx17_backports.h"
 #include "ppapi/c/dev/ppp_printing_dev.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -25,35 +24,35 @@
 TEST(PrintingConversionsTest, SingleOnePageRange) {
   static constexpr PP_PrintPageNumberRange_Dev kRanges[] = {{1, 1}};
   EXPECT_THAT(
-      PageNumbersFromPPPrintPageNumberRange(kRanges, base::size(kRanges)),
+      PageNumbersFromPPPrintPageNumberRange(kRanges, std::size(kRanges)),
       ElementsAre(1));
 }
 
 TEST(PrintingConversionsTest, SingleMultiPageRange) {
   static constexpr PP_PrintPageNumberRange_Dev kRanges[] = {{1, 3}};
   EXPECT_THAT(
-      PageNumbersFromPPPrintPageNumberRange(kRanges, base::size(kRanges)),
+      PageNumbersFromPPPrintPageNumberRange(kRanges, std::size(kRanges)),
       ElementsAre(1, 2, 3));
 }
 
 TEST(PrintingConversionsTest, MultipleOnePageRange) {
   static constexpr PP_PrintPageNumberRange_Dev kRanges[] = {{1, 1}, {3, 3}};
   EXPECT_THAT(
-      PageNumbersFromPPPrintPageNumberRange(kRanges, base::size(kRanges)),
+      PageNumbersFromPPPrintPageNumberRange(kRanges, std::size(kRanges)),
       ElementsAre(1, 3));
 }
 
 TEST(PrintingConversionsTest, MultipleMultiPageRange) {
   static constexpr PP_PrintPageNumberRange_Dev kRanges[] = {{1, 3}, {5, 6}};
   EXPECT_THAT(
-      PageNumbersFromPPPrintPageNumberRange(kRanges, base::size(kRanges)),
+      PageNumbersFromPPPrintPageNumberRange(kRanges, std::size(kRanges)),
       ElementsAre(1, 2, 3, 5, 6));
 }
 
 TEST(PrintingConversionsTest, OverlappingPageRange) {
   static constexpr PP_PrintPageNumberRange_Dev kRanges[] = {{1, 3}, {2, 4}};
   EXPECT_THAT(
-      PageNumbersFromPPPrintPageNumberRange(kRanges, base::size(kRanges)),
+      PageNumbersFromPPPrintPageNumberRange(kRanges, std::size(kRanges)),
       ElementsAre(1, 2, 3, 2, 3, 4));
 }
 
diff --git a/printing/backend/win_helper.cc b/printing/backend/win_helper.cc
index 067e186c..36883ee 100644
--- a/printing/backend/win_helper.cc
+++ b/printing/backend/win_helper.cc
@@ -11,7 +11,6 @@
 #include <memory>
 
 #include "base/check_op.h"
-#include "base/cxx17_backports.h"
 #include "base/debug/alias.h"
 #include "base/file_version_info.h"
 #include "base/files/file_path.h"
@@ -415,10 +414,10 @@
     }
   }
 
-  for (size_t i = 0; i < base::size(info); ++i) {
+  for (size_t i = 0; i < std::size(info); ++i) {
     std::replace(info[i].begin(), info[i].end(), ';', ',');
     driver_info.append(info[i]);
-    if (i < base::size(info) - 1)
+    if (i < std::size(info) - 1)
       driver_info.append(";");
   }
   return driver_info;
diff --git a/printing/printing_context_system_dialog_win.cc b/printing/printing_context_system_dialog_win.cc
index a964910..ba604d3 100644
--- a/printing/printing_context_system_dialog_win.cc
+++ b/printing/printing_context_system_dialog_win.cc
@@ -7,7 +7,6 @@
 #include <utility>
 
 #include "base/auto_reset.h"
-#include "base/cxx17_backports.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/task/current_thread.h"
 #include "printing/backend/win_helper.h"
@@ -59,7 +58,7 @@
     ranges[0].nFromPage = 1;
     ranges[0].nToPage = max_pages;
     dialog_options.nPageRanges = 1;
-    dialog_options.nMaxPageRanges = base::size(ranges);
+    dialog_options.nMaxPageRanges = std::size(ranges);
     dialog_options.nMinPage = 1;
     dialog_options.nMaxPage = max_pages;
     dialog_options.lpPageRanges = ranges;
diff --git a/printing/printing_test.h b/printing/printing_test.h
index d9b0881..57e31dd 100644
--- a/printing/printing_test.h
+++ b/printing/printing_test.h
@@ -10,8 +10,6 @@
 
 #include <string>
 
-#include "base/cxx17_backports.h"
-
 // Disable the whole test case when executing on a computer that has no printer
 // installed.
 // Note: Parent should be testing::Test or InProcessBrowserTest.
@@ -21,7 +19,7 @@
   static bool IsTestCaseDisabled() { return GetDefaultPrinter().empty(); }
   static std::wstring GetDefaultPrinter() {
     wchar_t printer_name[MAX_PATH];
-    DWORD size = base::size(printer_name);
+    DWORD size = std::size(printer_name);
     BOOL result = ::GetDefaultPrinter(printer_name, &size);
     if (result == 0) {
       if (GetLastError() == ERROR_FILE_NOT_FOUND) {
diff --git a/rlz/lib/financial_ping.cc b/rlz/lib/financial_ping.cc
index 3ea8bd2f..f48b673 100644
--- a/rlz/lib/financial_ping.cc
+++ b/rlz/lib/financial_ping.cc
@@ -11,7 +11,6 @@
 #include <memory>
 
 #include "base/atomicops.h"
-#include "base/cxx17_backports.h"
 #include "base/location.h"
 #include "base/memory/ref_counted.h"
 #include "base/no_destructor.h"
@@ -129,7 +128,7 @@
   // Add the product events.
   char cgi[kMaxCgiLength + 1];
   cgi[0] = 0;
-  bool has_events = GetProductEventsAsCgi(product, cgi, base::size(cgi));
+  bool has_events = GetProductEventsAsCgi(product, cgi, std::size(cgi));
   if (has_events)
     base::StringAppendF(request, "&%s", cgi);
 
@@ -143,7 +142,7 @@
     for (int ap = NO_ACCESS_POINT + 1; ap < LAST_ACCESS_POINT; ap++) {
       rlz[0] = 0;
       AccessPoint point = static_cast<AccessPoint>(ap);
-      if (GetAccessPointRlz(point, rlz, base::size(rlz)) && rlz[0] != '\0')
+      if (GetAccessPointRlz(point, rlz, std::size(rlz)) && rlz[0] != '\0')
         all_points[idx++] = point;
     }
     all_points[idx] = NO_ACCESS_POINT;
@@ -153,7 +152,7 @@
   // This will also include the RLZ Exchange Protocol CGI Argument.
   cgi[0] = 0;
   if (GetPingParams(product, has_events ? access_points : all_points, cgi,
-                    base::size(cgi)))
+                    std::size(cgi)))
     base::StringAppendF(request, "&%s", cgi);
 
   if (has_events && !exclude_machine_id) {
@@ -441,7 +440,7 @@
   // Check if this product has any unreported events.
   char cgi[kMaxCgiLength + 1];
   cgi[0] = 0;
-  bool has_events = GetProductEventsAsCgi(product, cgi, base::size(cgi));
+  bool has_events = GetProductEventsAsCgi(product, cgi, std::size(cgi));
   if (no_delay && has_events)
     return true;
 
diff --git a/rlz/lib/financial_ping_test.cc b/rlz/lib/financial_ping_test.cc
index ff21ee3..1d99caf 100644
--- a/rlz/lib/financial_ping_test.cc
+++ b/rlz/lib/financial_ping_test.cc
@@ -18,7 +18,6 @@
 
 #include <stdint.h>
 
-#include "base/cxx17_backports.h"
 #include "base/strings/string_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
@@ -176,7 +175,7 @@
        ap < rlz_lib::LAST_ACCESS_POINT; ap++) {
     rlz[0] = 0;
     rlz_lib::AccessPoint point = static_cast<rlz_lib::AccessPoint>(ap);
-    if (rlz_lib::GetAccessPointRlz(point, rlz, base::size(rlz)) && rlz[0]) {
+    if (rlz_lib::GetAccessPointRlz(point, rlz, std::size(rlz)) && rlz[0]) {
       rlz_lib::SetAccessPointRlz(point, "");
     }
   }
@@ -193,7 +192,7 @@
       "Q1:QsbRlzValue" DCC_PARAM, brand);
   EXPECT_STREQ(expected_response.c_str(), request.c_str());
 
-  if (!GetAccessPointRlz(rlz_lib::IE_HOME_PAGE, rlz, base::size(rlz))) {
+  if (!GetAccessPointRlz(rlz_lib::IE_HOME_PAGE, rlz, std::size(rlz))) {
     points[2] = rlz_lib::IE_HOME_PAGE;
     EXPECT_TRUE(rlz_lib::FinancialPing::FormRequest(rlz_lib::TOOLBAR_NOTIFIER,
         points, "swg", brand, "MyId", "en-US", true, &request));
diff --git a/rlz/lib/rlz_lib.cc b/rlz/lib/rlz_lib.cc
index 16b6318..8f8d15e 100644
--- a/rlz/lib/rlz_lib.cc
+++ b/rlz/lib/rlz_lib.cc
@@ -9,7 +9,6 @@
 
 #include <algorithm>
 
-#include "base/cxx17_backports.h"
 #include "base/strings/string_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/syslog_logging.h"
@@ -625,7 +624,7 @@
     bool first_rlz = true;  // comma before every RLZ but the first.
     for (int i = 0; access_points[i] != NO_ACCESS_POINT; i++) {
       char rlz[kMaxRlzLength + 1];
-      if (GetAccessPointRlz(access_points[i], rlz, base::size(rlz))) {
+      if (GetAccessPointRlz(access_points[i], rlz, std::size(rlz))) {
         const char* access_point = GetAccessPointName(access_points[i]);
         if (!access_point)
           continue;
@@ -641,7 +640,7 @@
     // Report the DCC too if not empty. DCCs are windows-only.
     char dcc[kMaxDccLength + 1];
     dcc[0] = 0;
-    if (GetMachineDealCode(dcc, base::size(dcc)) && dcc[0])
+    if (GetMachineDealCode(dcc, std::size(dcc)) && dcc[0])
       base::StringAppendF(&cgi_string, "&%s=%s", kDccCgiVariable, dcc);
 #endif
   }
diff --git a/rlz/lib/rlz_lib_test.cc b/rlz/lib/rlz_lib_test.cc
index df55429..0297540 100644
--- a/rlz/lib/rlz_lib_test.cc
+++ b/rlz/lib/rlz_lib_test.cc
@@ -1142,7 +1142,7 @@
                               rlz_lib::FIRST_SEARCH);
   char cgi[256];
   EXPECT_TRUE(
-      rlz_lib::GetProductEventsAsCgi(rlz_lib::CHROME, cgi, base::size(cgi)));
+      rlz_lib::GetProductEventsAsCgi(rlz_lib::CHROME, cgi, std::size(cgi)));
   EXPECT_NE(nullptr, strstr(cgi, "CAF"));
 
   // Simulate another user on the machine sending the RLZ ping, so "should send
@@ -1154,7 +1154,7 @@
   // The first search event should no longer appear, so there are no events
   // to report.
   EXPECT_FALSE(
-      rlz_lib::GetProductEventsAsCgi(rlz_lib::CHROME, cgi, base::size(cgi)));
+      rlz_lib::GetProductEventsAsCgi(rlz_lib::CHROME, cgi, std::size(cgi)));
 
   // The event should be permanently deleted, so setting the flag back to
   // true should still not return the event.
@@ -1162,7 +1162,7 @@
       chromeos::system::kShouldSendRlzPingKey,
       chromeos::system::kShouldSendRlzPingValueTrue);
   EXPECT_FALSE(
-      rlz_lib::GetProductEventsAsCgi(rlz_lib::CHROME, cgi, base::size(cgi)));
+      rlz_lib::GetProductEventsAsCgi(rlz_lib::CHROME, cgi, std::size(cgi)));
 }
 
 TEST_F(RlzLibTest, NoRecordCAFEvent2) {
@@ -1178,7 +1178,7 @@
                               rlz_lib::FIRST_SEARCH);
   char cgi[256];
   EXPECT_TRUE(
-      rlz_lib::GetProductEventsAsCgi(rlz_lib::CHROME, cgi, base::size(cgi)));
+      rlz_lib::GetProductEventsAsCgi(rlz_lib::CHROME, cgi, std::size(cgi)));
   EXPECT_NE(nullptr, strstr(cgi, "CAF"));
   EXPECT_NE(nullptr, strstr(cgi, "CAI"));
 
@@ -1190,7 +1190,7 @@
 
   // Only the "CAI" event should appear.
   EXPECT_TRUE(
-      rlz_lib::GetProductEventsAsCgi(rlz_lib::CHROME, cgi, base::size(cgi)));
+      rlz_lib::GetProductEventsAsCgi(rlz_lib::CHROME, cgi, std::size(cgi)));
   EXPECT_NE(nullptr, strstr(cgi, "CAI"));
 
   // The event should be permanently deleted, so setting the flag back to
@@ -1199,7 +1199,7 @@
       chromeos::system::kShouldSendRlzPingKey,
       chromeos::system::kShouldSendRlzPingValueTrue);
   EXPECT_TRUE(
-      rlz_lib::GetProductEventsAsCgi(rlz_lib::CHROME, cgi, base::size(cgi)));
+      rlz_lib::GetProductEventsAsCgi(rlz_lib::CHROME, cgi, std::size(cgi)));
   EXPECT_NE(nullptr, strstr(cgi, "CAI"));
 }
 #endif
diff --git a/rlz/lib/string_utils_unittest.cc b/rlz/lib/string_utils_unittest.cc
index 565ed8e4..5a54905 100644
--- a/rlz/lib/string_utils_unittest.cc
+++ b/rlz/lib/string_utils_unittest.cc
@@ -8,7 +8,6 @@
 
 #include <stddef.h>
 
-#include "base/cxx17_backports.h"
 #include "base/strings/utf_string_conversions.h"
 #include "rlz/lib/assert.h"
 #include "testing/gmock/include/gmock/gmock.h"
@@ -18,11 +17,11 @@
   rlz_lib::SetExpectedAssertion("");
 
   char bad_letters[] = {'\x80', '\xA0', '\xFF'};
-  for (size_t i = 0; i < base::size(bad_letters); ++i)
+  for (size_t i = 0; i < std::size(bad_letters); ++i)
     EXPECT_FALSE(rlz_lib::IsAscii(bad_letters[i]));
 
   char good_letters[] = {'A', '~', '\n', 0x7F, 0x00};
-  for (size_t i = 0; i < base::size(good_letters); ++i)
+  for (size_t i = 0; i < std::size(good_letters); ++i)
     EXPECT_TRUE(rlz_lib::IsAscii(good_letters[i]));
 }
 
diff --git a/rlz/win/lib/machine_deal.cc b/rlz/win/lib/machine_deal.cc
index 803abfef..f046324 100644
--- a/rlz/win/lib/machine_deal.cc
+++ b/rlz/win/lib/machine_deal.cc
@@ -8,9 +8,9 @@
 
 #include <windows.h>
 #include <stddef.h>
+
 #include <vector>
 
-#include "base/cxx17_backports.h"
 #include "base/strings/string_split.h"
 #include "base/strings/string_util.h"
 #include "base/strings/stringprintf.h"
@@ -175,7 +175,7 @@
 
   // Get the current DCC value to compare to later)
   char stored_dcc[kMaxDccLength + 1];
-  if (!Get(stored_dcc, base::size(stored_dcc)))
+  if (!Get(stored_dcc, std::size(stored_dcc)))
     stored_dcc[0] = 0;
 
   int search_index = 0;
@@ -217,8 +217,8 @@
   bool has_new_dcc = false;
   char new_dcc[kMaxDccLength + 1];
 
-  bool response_valid = GetNewCodeFromPingResponse(
-      response, &has_new_dcc, new_dcc, base::size(new_dcc));
+  bool response_valid = GetNewCodeFromPingResponse(response, &has_new_dcc,
+                                                   new_dcc, std::size(new_dcc));
 
   if (response_valid && has_new_dcc)
     return Set(new_dcc);
@@ -291,7 +291,7 @@
 
   // Verify deletion.
   wchar_t dcc[kMaxDccLength + 1];
-  DWORD dcc_size = base::size(dcc);
+  DWORD dcc_size = std::size(dcc);
   if (dcc_key.ReadValue(kDccValueName, dcc, &dcc_size, NULL) == ERROR_SUCCESS) {
     ASSERT_STRING("MachineDealCode::Clear: Could not delete the DCC value.");
     return false;
diff --git a/rlz/win/lib/machine_id_win.cc b/rlz/win/lib/machine_id_win.cc
index 582de4ed..80f86fb 100644
--- a/rlz/win/lib/machine_id_win.cc
+++ b/rlz/win/lib/machine_id_win.cc
@@ -8,7 +8,6 @@
 #include <memory>
 #include <string>
 
-#include "base/cxx17_backports.h"
 #include "base/strings/utf_string_conversions.h"
 #include "rlz/lib/assert.h"
 
@@ -85,7 +84,7 @@
   // Calculate the Windows SID.
 
   wchar_t computer_name[MAX_COMPUTERNAME_LENGTH + 1] = {0};
-  DWORD size = base::size(computer_name);
+  DWORD size = std::size(computer_name);
 
   if (GetComputerNameW(computer_name, &size)) {
     char sid_buffer[SECURITY_MAX_SID_SIZE];
diff --git a/rlz/win/lib/rlz_value_store_registry.cc b/rlz/win/lib/rlz_value_store_registry.cc
index 47b9cce..4bb8dca 100644
--- a/rlz/win/lib/rlz_value_store_registry.cc
+++ b/rlz/win/lib/rlz_value_store_registry.cc
@@ -4,7 +4,6 @@
 
 #include "rlz/win/lib/rlz_value_store_registry.h"
 
-#include "base/cxx17_backports.h"
 #include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/win/registry.h"
@@ -285,7 +284,7 @@
     // Max 32767 bytes according to MSDN, but we never use that much.
     const size_t kMaxValueNameLength = 2048;
     char buffer[kMaxValueNameLength];
-    DWORD size = base::size(buffer);
+    DWORD size = std::size(buffer);
 
     result = RegEnumValueA(events_key.Handle(), num_values, buffer, &size,
                            NULL, NULL, NULL, NULL);
@@ -353,7 +352,7 @@
     kPingTimesSubkeyName
   };
 
-  for (size_t i = 0; i < base::size(subkeys); i++) {
+  for (size_t i = 0; i < std::size(subkeys); i++) {
     std::string subkey_name;
     base::StringAppendF(&subkey_name, "%s\\%s", kLibKeyName, subkeys[i]);
     AppendBrandToString(&subkey_name);
diff --git a/sandbox/linux/bpf_dsl/policy_compiler.cc b/sandbox/linux/bpf_dsl/policy_compiler.cc
index 19c0cf63..844cad5 100644
--- a/sandbox/linux/bpf_dsl/policy_compiler.cc
+++ b/sandbox/linux/bpf_dsl/policy_compiler.cc
@@ -14,7 +14,6 @@
 
 #include "base/bits.h"
 #include "base/check_op.h"
-#include "base/cxx17_backports.h"
 #include "sandbox/linux/bpf_dsl/bpf_dsl.h"
 #include "sandbox/linux/bpf_dsl/bpf_dsl_impl.h"
 #include "sandbox/linux/bpf_dsl/codegen.h"
@@ -451,7 +450,7 @@
 }
 
 bool PolicyCompiler::IsRequiredForUnsafeTrap(int sysno) {
-  for (size_t i = 0; i < base::size(kSyscallsRequiredForUnsafeTraps); ++i) {
+  for (size_t i = 0; i < std::size(kSyscallsRequiredForUnsafeTraps); ++i) {
     if (sysno == kSyscallsRequiredForUnsafeTraps[i]) {
       return true;
     }
diff --git a/sandbox/linux/bpf_dsl/syscall_set_unittest.cc b/sandbox/linux/bpf_dsl/syscall_set_unittest.cc
index 00c475ea..db710c1 100644
--- a/sandbox/linux/bpf_dsl/syscall_set_unittest.cc
+++ b/sandbox/linux/bpf_dsl/syscall_set_unittest.cc
@@ -7,7 +7,6 @@
 #include <stddef.h>
 #include <stdint.h>
 
-#include "base/cxx17_backports.h"
 #include "sandbox/linux/bpf_dsl/linux_syscall_ranges.h"
 #include "sandbox/linux/tests/unit_tests.h"
 
@@ -86,12 +85,12 @@
     size_t i = 0;
     for (uint32_t sysnum : set) {
       if (!SyscallSet::IsValid(sysnum)) {
-        SANDBOX_ASSERT(i < base::size(kExpected));
+        SANDBOX_ASSERT(i < std::size(kExpected));
         SANDBOX_ASSERT(kExpected[i] == sysnum);
         ++i;
       }
     }
-    SANDBOX_ASSERT(i == base::size(kExpected));
+    SANDBOX_ASSERT(i == std::size(kExpected));
   }
 }
 
diff --git a/sandbox/linux/bpf_dsl/test_trap_registry_unittest.cc b/sandbox/linux/bpf_dsl/test_trap_registry_unittest.cc
index 690ae24..e401b3e 100644
--- a/sandbox/linux/bpf_dsl/test_trap_registry_unittest.cc
+++ b/sandbox/linux/bpf_dsl/test_trap_registry_unittest.cc
@@ -6,7 +6,6 @@
 
 #include <stddef.h>
 
-#include "base/cxx17_backports.h"
 #include "base/memory/raw_ptr.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -38,7 +37,7 @@
 
   // Add traps twice to test that IDs are reused correctly.
   for (int i = 0; i < 2; ++i) {
-    for (size_t j = 0; j < base::size(funcs); ++j) {
+    for (size_t j = 0; j < std::size(funcs); ++j) {
       // Trap IDs start at 1.
       EXPECT_EQ(j + 1, traps.Add(funcs[j].fnc, funcs[j].aux, true));
     }
diff --git a/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc b/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc
index 1680781..a4c5c14a 100644
--- a/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc
+++ b/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc
@@ -14,7 +14,6 @@
 #include <unistd.h>
 
 #include "base/check.h"
-#include "base/cxx17_backports.h"
 #include "base/debug/crash_logging.h"
 #include "base/posix/eintr_wrapper.h"
 #include "build/build_config.h"
@@ -183,7 +182,7 @@
   memset(crash_key, '\0', crash_key_length);
 
   size_t offset = 0;
-  for (size_t i = 0; i < base::size(values); ++i) {
+  for (size_t i = 0; i < std::size(values); ++i) {
     const char* strings[2] = { prefixes[i], values[i] };
     for (auto* string : strings) {
       size_t string_len = strlen(string);
diff --git a/sandbox/linux/seccomp-bpf/syscall_unittest.cc b/sandbox/linux/seccomp-bpf/syscall_unittest.cc
index d49cf1af..3f55e946 100644
--- a/sandbox/linux/seccomp-bpf/syscall_unittest.cc
+++ b/sandbox/linux/seccomp-bpf/syscall_unittest.cc
@@ -16,7 +16,6 @@
 
 #include <vector>
 
-#include "base/cxx17_backports.h"
 #include "base/memory/page_size.h"
 #include "base/memory/raw_ptr.h"
 #include "base/posix/eintr_wrapper.h"
@@ -97,8 +96,8 @@
   // |aux| is our BPF_AUX pointer.
   std::vector<uint64_t>* const seen_syscall_args =
       static_cast<std::vector<uint64_t>*>(aux);
-  BPF_ASSERT(base::size(args.args) == 6);
-  seen_syscall_args->assign(args.args, args.args + base::size(args.args));
+  BPF_ASSERT(std::size(args.args) == 6);
+  seen_syscall_args->assign(args.args, args.args + std::size(args.args));
   return -ENOMEM;
 }
 
@@ -137,7 +136,7 @@
   // implementation details of kernel BPF filters and we will need to document
   // the expected behavior very clearly.
   int syscall_args[6];
-  for (size_t i = 0; i < base::size(syscall_args); ++i) {
+  for (size_t i = 0; i < std::size(syscall_args); ++i) {
     syscall_args[i] = kExpectedValue + i;
   }
 
diff --git a/sandbox/linux/services/credentials.cc b/sandbox/linux/services/credentials.cc
index c933eafd..00b969e 100644
--- a/sandbox/linux/services/credentials.cc
+++ b/sandbox/linux/services/credentials.cc
@@ -18,7 +18,6 @@
 
 #include "base/bind.h"
 #include "base/compiler_specific.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
 #include "base/logging.h"
@@ -236,7 +235,7 @@
 
   PCHECK(sys_capget(&hdr, data) == 0);
 
-  for (size_t i = 0; i < base::size(data); ++i) {
+  for (size_t i = 0; i < std::size(data); ++i) {
     if (data[i].effective || data[i].permitted || data[i].inheritable) {
       return true;
     }
diff --git a/sandbox/linux/services/namespace_sandbox.cc b/sandbox/linux/services/namespace_sandbox.cc
index d46ea080..3925c3e 100644
--- a/sandbox/linux/services/namespace_sandbox.cc
+++ b/sandbox/linux/services/namespace_sandbox.cc
@@ -17,7 +17,6 @@
 
 #include "base/check_op.h"
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "base/environment.h"
 #include "base/files/scoped_file.h"
 #include "base/posix/eintr_wrapper.h"
@@ -78,7 +77,7 @@
   // Return a special exit code so that the process is detected as terminated by
   // a signal.
   const size_t sig_idx = static_cast<size_t>(sig);
-  if (sig_idx < base::size(g_signal_exit_codes)) {
+  if (sig_idx < std::size(g_signal_exit_codes)) {
     _exit(g_signal_exit_codes[sig_idx]);
   }
 
@@ -261,7 +260,7 @@
   }
 
   const size_t sig_idx = static_cast<size_t>(sig);
-  CHECK_LT(sig_idx, base::size(g_signal_exit_codes));
+  CHECK_LT(sig_idx, std::size(g_signal_exit_codes));
 
   DCHECK_GE(exit_code, 0);
   DCHECK_LT(exit_code, 256);
diff --git a/sandbox/linux/suid/client/setuid_sandbox_host.cc b/sandbox/linux/suid/client/setuid_sandbox_host.cc
index 7022a65e..e79a6e0b 100644
--- a/sandbox/linux/suid/client/setuid_sandbox_host.cc
+++ b/sandbox/linux/suid/client/setuid_sandbox_host.cc
@@ -15,7 +15,6 @@
 #include <utility>
 
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "base/environment.h"
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
@@ -51,7 +50,7 @@
       kSandboxNETNSEnvironmentVarName,
   };
 
-  for (size_t i = 0; i < base::size(environment_vars); ++i) {
+  for (size_t i = 0; i < std::size(environment_vars); ++i) {
     // Setting values in EnvironmentMap to an empty-string will make
     // sure that they get unset from the environment via AlterEnvironment().
     (*env_map)[environment_vars[i]] = base::NativeEnvironmentString();
diff --git a/sandbox/linux/syscall_broker/broker_process_unittest.cc b/sandbox/linux/syscall_broker/broker_process_unittest.cc
index ad6e502..e66b1c1 100644
--- a/sandbox/linux/syscall_broker/broker_process_unittest.cc
+++ b/sandbox/linux/syscall_broker/broker_process_unittest.cc
@@ -23,7 +23,6 @@
 #include "base/callback.h"
 #include "base/containers/flat_map.h"
 #include "base/containers/flat_set.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_util.h"
 #include "base/files/scoped_file.h"
 #include "base/logging.h"
@@ -608,7 +607,7 @@
 
   // Save one FD to send to the broker later, and close the others.
   base::ScopedFD message_fd(available_fds[0]);
-  for (size_t i = 1; i < base::size(available_fds); i++) {
+  for (size_t i = 1; i < std::size(available_fds); i++) {
     SANDBOX_ASSERT(0 == IGNORE_EINTR(close(available_fds[i])));
   }
 
@@ -618,7 +617,7 @@
   // be assigned to newly-created descriptors allocated by the process.)
   const rlim_t fd_limit =
       1 + *std::max_element(available_fds,
-                            available_fds + base::size(available_fds));
+                            available_fds + std::size(available_fds));
 
   struct rlimit rlim;
   SANDBOX_ASSERT(0 == getrlimit(RLIMIT_NOFILE, &rlim));
diff --git a/sandbox/linux/syscall_broker/broker_simple_message_unittest.cc b/sandbox/linux/syscall_broker/broker_simple_message_unittest.cc
index bace6d9..d22ae2d 100644
--- a/sandbox/linux/syscall_broker/broker_simple_message_unittest.cc
+++ b/sandbox/linux/syscall_broker/broker_simple_message_unittest.cc
@@ -433,7 +433,7 @@
     ExpectedResultValue* expected_results[] = {&data1_value};
 
     BrokerSimpleMessageTestHelper::RecvMsg(&ipc_reader, expected_results,
-                                           base::size(expected_results));
+                                           std::size(expected_results));
 
     wait_event.Wait();
   }
@@ -457,7 +457,7 @@
     ExpectedResultValue* expected_results[] = {&int1_value};
 
     BrokerSimpleMessageTestHelper::RecvMsg(&ipc_reader, expected_results,
-                                           base::size(expected_results));
+                                           std::size(expected_results));
 
     wait_event.Wait();
   }
@@ -485,7 +485,7 @@
     ExpectedResultValue* expected_results[] = {&data1_value, &int1_value};
 
     BrokerSimpleMessageTestHelper::RecvMsg(&ipc_reader, expected_results,
-                                           base::size(expected_results));
+                                           std::size(expected_results));
 
     wait_event.Wait();
   }
@@ -518,7 +518,7 @@
                                                &data2_value, &int2_value};
 
     BrokerSimpleMessageTestHelper::RecvMsg(&ipc_reader, expected_results,
-                                           base::size(expected_results));
+                                           std::size(expected_results));
 
     wait_event.Wait();
   }
@@ -550,7 +550,7 @@
         FROM_HERE,
         base::BindOnce(&BrokerSimpleMessageTestHelper::RecvMsgAndReply,
                        &ipc_reader, expected_results,
-                       base::size(expected_results), reply_data1, -1));
+                       std::size(expected_results), reply_data1, -1));
 
     PostWaitableEventToThread(&message_thread, &wait_event);
 
@@ -583,7 +583,7 @@
         FROM_HERE,
         base::BindOnce(&BrokerSimpleMessageTestHelper::RecvMsgAndReply,
                        &ipc_reader, expected_results,
-                       base::size(expected_results), reply_data1, -1));
+                       std::size(expected_results), reply_data1, -1));
 
     PostWaitableEventToThread(&message_thread, &wait_event);
 
@@ -617,7 +617,7 @@
         FROM_HERE,
         base::BindOnce(&BrokerSimpleMessageTestHelper::RecvMsgAndReply,
                        &ipc_reader, expected_results,
-                       base::size(expected_results), reply_data1, -1));
+                       std::size(expected_results), reply_data1, -1));
 
     PostWaitableEventToThread(&message_thread, &wait_event);
 
@@ -655,7 +655,7 @@
         FROM_HERE,
         base::BindOnce(&BrokerSimpleMessageTestHelper::RecvMsgAndReply,
                        &ipc_reader, expected_results,
-                       base::size(expected_results), reply_data1, -1));
+                       std::size(expected_results), reply_data1, -1));
 
     PostWaitableEventToThread(&message_thread, &wait_event);
 
diff --git a/sandbox/mac/seatbelt_extension_unittest.cc b/sandbox/mac/seatbelt_extension_unittest.cc
index 9a2d74f..351b95a3 100644
--- a/sandbox/mac/seatbelt_extension_unittest.cc
+++ b/sandbox/mac/seatbelt_extension_unittest.cc
@@ -8,7 +8,6 @@
 #include <unistd.h>
 
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
 #include "base/files/scoped_file.h"
@@ -32,7 +31,7 @@
 )";
 
 const char kTestData[] = "hello world";
-constexpr int kTestDataLen = base::size(kTestData);
+constexpr int kTestDataLen = std::size(kTestData);
 
 const char kSwitchFile[] = "test-file";
 const char kSwitchExtension[] = "test-extension";
diff --git a/sandbox/policy/win/sandbox_win.cc b/sandbox/policy/win/sandbox_win.cc
index b963e6a8..88df0f30 100644
--- a/sandbox/policy/win/sandbox_win.cc
+++ b/sandbox/policy/win/sandbox_win.cc
@@ -11,7 +11,6 @@
 #include <vector>
 
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "base/debug/activity_tracker.h"
 #include "base/feature_list.h"
 #include "base/files/file_path.h"
@@ -216,12 +215,12 @@
 // Compares the loaded |module| file name matches |module_name|.
 bool IsExpandedModuleName(HMODULE module, const wchar_t* module_name) {
   wchar_t path[MAX_PATH];
-  DWORD sz = ::GetModuleFileNameW(module, path, base::size(path));
-  if ((sz == base::size(path)) || (sz == 0)) {
+  DWORD sz = ::GetModuleFileNameW(module, path, std::size(path));
+  if ((sz == std::size(path)) || (sz == 0)) {
     // XP does not set the last error properly, so we bail out anyway.
     return false;
   }
-  if (!::GetLongPathName(path, path, base::size(path)))
+  if (!::GetLongPathName(path, path, std::size(path)))
     return false;
   base::FilePath fname(path);
   return (fname.BaseName().value() == module_name);
@@ -283,7 +282,7 @@
 // Eviction of injected DLLs is done by the sandbox so that the injected module
 // does not get a chance to execute any code.
 void AddGenericDllEvictionPolicy(TargetPolicy* policy) {
-  for (int ix = 0; ix != base::size(kTroublesomeDlls); ++ix)
+  for (int ix = 0; ix != std::size(kTroublesomeDlls); ++ix)
     BlocklistAddOneDll(kTroublesomeDlls[ix], true, policy);
 }
 
diff --git a/sandbox/win/src/filesystem_policy.cc b/sandbox/win/src/filesystem_policy.cc
index 0560ad3..25fe202 100644
--- a/sandbox/win/src/filesystem_policy.cc
+++ b/sandbox/win/src/filesystem_policy.cc
@@ -8,7 +8,6 @@
 
 #include <string>
 
-#include "base/cxx17_backports.h"
 #include "base/notreached.h"
 #include "base/win/scoped_handle.h"
 #include "base/win/windows_version.h"
@@ -346,7 +345,7 @@
 
   // NT prefix escaped for rule matcher
   const wchar_t kNTPrefixEscaped[] = L"\\/?/?\\";
-  const int kNTPrefixEscapedLen = base::size(kNTPrefixEscaped) - 1;
+  const int kNTPrefixEscapedLen = std::size(kNTPrefixEscaped) - 1;
 
   if (0 != mod_name.compare(0, kNTPrefixLen, kNTPrefix)) {
     if (0 != mod_name.compare(0, kNTPrefixEscapedLen, kNTPrefixEscaped)) {
diff --git a/sandbox/win/src/ipc_leak_test.cc b/sandbox/win/src/ipc_leak_test.cc
index dc34063..a05406e 100644
--- a/sandbox/win/src/ipc_leak_test.cc
+++ b/sandbox/win/src/ipc_leak_test.cc
@@ -2,13 +2,11 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include <stdlib.h>
 #include <windows.h>
 
 #include <memory>
 
-#include <stdlib.h>
-
-#include "base/cxx17_backports.h"
 #include "base/memory/page_size.h"
 #include "base/win/win_util.h"
 #include "sandbox/win/src/crosscall_client.h"
@@ -274,7 +272,7 @@
                    {TESTIPC_CREATENAMEDPIPEW, "TESTIPC_CREATENAMEDPIPEW",
                     INVALID_HANDLE_VALUE}};
 
-  static_assert(base::size(test_data) == TESTIPC_LAST, "Not enough tests.");
+  static_assert(std::size(test_data) == TESTIPC_LAST, "Not enough tests.");
   for (auto test : test_data) {
     TestRunner runner;
     std::wstring command = std::wstring(L"IPC_Leak ");
diff --git a/sandbox/win/src/sandbox_nt_util_unittest.cc b/sandbox/win/src/sandbox_nt_util_unittest.cc
index 6da41b2..c1e7d75a 100644
--- a/sandbox/win/src/sandbox_nt_util_unittest.cc
+++ b/sandbox/win/src/sandbox_nt_util_unittest.cc
@@ -9,7 +9,6 @@
 #include <memory>
 #include <vector>
 
-#include "base/cxx17_backports.h"
 #include "base/files/file.h"
 #include "base/path_service.h"
 #include "base/strings/string_util.h"
@@ -286,8 +285,8 @@
             sandbox::CopyNameAndAttributes(&object_attributes, &name, &name_len,
                                            &attributes));
   EXPECT_EQ(object_attributes.Attributes, attributes);
-  EXPECT_EQ(base::size(name_buffer), name_len);
-  EXPECT_EQ(0, wcsncmp(name.get(), name_buffer, base::size(name_buffer)));
+  EXPECT_EQ(std::size(name_buffer), name_len);
+  EXPECT_EQ(0, wcsncmp(name.get(), name_buffer, std::size(name_buffer)));
   EXPECT_EQ(L'\0', name.get()[name_len]);
 }
 
diff --git a/sandbox/win/src/win_utils.cc b/sandbox/win/src/win_utils.cc
index 0769fd8..d60c996 100644
--- a/sandbox/win/src/win_utils.cc
+++ b/sandbox/win/src/win_utils.cc
@@ -16,7 +16,6 @@
 #include <string>
 #include <vector>
 
-#include "base/cxx17_backports.h"
 #include "base/numerics/safe_math.h"
 #include "base/strings/string_util.h"
 #include "base/win/pe_image.h"
@@ -31,7 +30,7 @@
 const size_t kDriveLetterLen = 3;
 
 constexpr wchar_t kNTDotPrefix[] = L"\\\\.\\";
-const size_t kNTDotPrefixLen = base::size(kNTDotPrefix) - 1;
+const size_t kNTDotPrefixLen = std::size(kNTDotPrefix) - 1;
 
 // Holds the information about a known registry key.
 struct KnownReservedKey {
@@ -108,7 +107,7 @@
 // "\Device\HarddiskVolumeX" in |path|.
 size_t PassHarddiskVolume(const std::wstring& path) {
   static constexpr wchar_t pattern[] = L"\\Device\\HarddiskVolume";
-  const size_t patternLen = base::size(pattern) - 1;
+  const size_t patternLen = std::size(pattern) - 1;
 
   // First, check for |pattern|.
   if ((path.size() < patternLen) || (!EqualPath(path, pattern, patternLen)))
@@ -176,14 +175,14 @@
     start = sandbox::kNTPrefixLen;
 
   const wchar_t kPipe[] = L"pipe\\";
-  if (path.size() < start + base::size(kPipe) - 1)
+  if (path.size() < start + std::size(kPipe) - 1)
     return false;
 
-  return EqualPath(path, start, kPipe, base::size(kPipe) - 1);
+  return EqualPath(path, start, kPipe, std::size(kPipe) - 1);
 }
 
 HKEY GetReservedKeyFromName(const std::wstring& name) {
-  for (size_t i = 0; i < base::size(kKnownKey); ++i) {
+  for (size_t i = 0; i < std::size(kKnownKey); ++i) {
     if (name == kKnownKey[i].name)
       return kKnownKey[i].key;
   }
@@ -192,7 +191,7 @@
 }
 
 bool ResolveRegistryName(std::wstring name, std::wstring* resolved_name) {
-  for (size_t i = 0; i < base::size(kKnownKey); ++i) {
+  for (size_t i = 0; i < std::size(kKnownKey); ++i) {
     if (name.find(kKnownKey[i].name) == 0) {
       HKEY key;
       DWORD disposition;
diff --git a/sandbox/win/src/win_utils.h b/sandbox/win/src/win_utils.h
index 2acbe034..4da3f64 100644
--- a/sandbox/win/src/win_utils.h
+++ b/sandbox/win/src/win_utils.h
@@ -12,7 +12,6 @@
 #include <string>
 #include <vector>
 
-#include "base/cxx17_backports.h"
 #include "base/win/windows_types.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
 
@@ -20,10 +19,10 @@
 
 // Prefix for path used by NT calls.
 const wchar_t kNTPrefix[] = L"\\??\\";
-const size_t kNTPrefixLen = base::size(kNTPrefix) - 1;
+const size_t kNTPrefixLen = std::size(kNTPrefix) - 1;
 
 const wchar_t kNTDevicePrefix[] = L"\\Device\\";
-const size_t kNTDevicePrefixLen = base::size(kNTDevicePrefix) - 1;
+const size_t kNTDevicePrefixLen = std::size(kNTDevicePrefix) - 1;
 
 // List of handles mapped to their kernel object type name.
 using ProcessHandleMap = std::map<std::wstring, std::vector<HANDLE>>;
diff --git a/services/audio/public/cpp/sounds/sounds_manager_unittest.cc b/services/audio/public/cpp/sounds/sounds_manager_unittest.cc
index 7720861..7053df8 100644
--- a/services/audio/public/cpp/sounds/sounds_manager_unittest.cc
+++ b/services/audio/public/cpp/sounds/sounds_manager_unittest.cc
@@ -2,13 +2,14 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "services/audio/public/cpp/sounds/sounds_manager.h"
+
 #include <memory>
 #include <utility>
 #include <vector>
 
 #include "base/callback_helpers.h"
 #include "base/compiler_specific.h"
-#include "base/cxx17_backports.h"
 #include "base/run_loop.h"
 #include "base/strings/string_piece.h"
 #include "base/test/test_message_loop.h"
@@ -17,7 +18,6 @@
 #include "media/audio/test_audio_thread.h"
 #include "mojo/public/cpp/bindings/pending_receiver.h"
 #include "services/audio/public/cpp/sounds/audio_stream_handler.h"
-#include "services/audio/public/cpp/sounds/sounds_manager.h"
 #include "services/audio/public/cpp/sounds/test_data.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -56,7 +56,7 @@
 
   ASSERT_TRUE(SoundsManager::Get()->Initialize(
       kTestAudioKey,
-      base::StringPiece(kTestAudioData, base::size(kTestAudioData))));
+      base::StringPiece(kTestAudioData, std::size(kTestAudioData))));
   ASSERT_EQ(20,
             SoundsManager::Get()->GetDuration(kTestAudioKey).InMicroseconds());
   ASSERT_TRUE(SoundsManager::Get()->Play(kTestAudioKey));
@@ -79,7 +79,7 @@
 
   ASSERT_TRUE(SoundsManager::Get()->Initialize(
       kTestAudioKey,
-      base::StringPiece(kTestAudioData, base::size(kTestAudioData))));
+      base::StringPiece(kTestAudioData, std::size(kTestAudioData))));
 
   ASSERT_EQ(0, observer.num_play_requests());
   ASSERT_EQ(0, observer.num_stop_requests());
diff --git a/services/audio/public/cpp/sounds/test_data.h b/services/audio/public/cpp/sounds/test_data.h
index f22e602..b8722e3 100644
--- a/services/audio/public/cpp/sounds/test_data.h
+++ b/services/audio/public/cpp/sounds/test_data.h
@@ -6,11 +6,11 @@
 #define SERVICES_AUDIO_PUBLIC_CPP_SOUNDS_TEST_DATA_H_
 
 #include <stddef.h>
+
 #include <memory>
 
 #include "base/callback.h"
 #include "base/compiler_specific.h"
-#include "base/cxx17_backports.h"
 #include "base/memory/raw_ptr.h"
 #include "base/memory/ref_counted.h"
 #include "base/task/single_thread_task_runner.h"
@@ -25,7 +25,7 @@
     "RIFF\x28\x00\x00\x00WAVEfmt \x10\x00\x00\x00"
     "\x01\x00\x02\x00\x80\xbb\x00\x00\x00\x77\x01\x00\x02\x00\x10\x00"
     "data\x04\x00\x00\x00\x01\x00\x01\x00";
-const size_t kTestAudioDataSize = base::size(kTestAudioData) - 1;
+const size_t kTestAudioDataSize = std::size(kTestAudioData) - 1;
 
 class TestObserver : public AudioStreamHandler::TestObserver {
  public:
diff --git a/services/data_decoder/image_decoder_impl_unittest.cc b/services/data_decoder/image_decoder_impl_unittest.cc
index 5ee8fc7..e3d2a6e 100644
--- a/services/data_decoder/image_decoder_impl_unittest.cc
+++ b/services/data_decoder/image_decoder_impl_unittest.cc
@@ -2,11 +2,12 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "services/data_decoder/image_decoder_impl.h"
+
 #include <memory>
 #include <vector>
 
 #include "base/bind.h"
-#include "base/cxx17_backports.h"
 #include "base/lazy_instance.h"
 #include "base/memory/raw_ptr.h"
 #include "base/test/task_environment.h"
@@ -14,7 +15,6 @@
 #include "gin/array_buffer.h"
 #include "gin/public/isolate_holder.h"
 #include "mojo/public/cpp/bindings/binder_map.h"
-#include "services/data_decoder/image_decoder_impl.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/blink/public/platform/platform.h"
 #include "third_party/blink/public/web/blink.h"
@@ -132,7 +132,7 @@
   int heights[] = {max_height_for_msg - 10, max_height_for_msg + 10,
                    2 * max_height_for_msg + 10};
   int widths[] = {heights[0] * 3 / 2, heights[1] * 3 / 2, heights[2] * 3 / 2};
-  for (size_t i = 0; i < base::size(heights); i++) {
+  for (size_t i = 0; i < std::size(heights); i++) {
     std::vector<unsigned char> jpg;
     ASSERT_TRUE(CreateJPEGImage(widths[i], heights[i], SK_ColorRED, &jpg));
 
diff --git a/services/device/generic_sensor/platform_sensor_reader_linux.cc b/services/device/generic_sensor/platform_sensor_reader_linux.cc
index f493cf1..5cc05451 100644
--- a/services/device/generic_sensor/platform_sensor_reader_linux.cc
+++ b/services/device/generic_sensor/platform_sensor_reader_linux.cc
@@ -7,7 +7,6 @@
 #include <memory>
 
 #include "base/bind.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_util.h"
 #include "base/sequence_checker.h"
 #include "base/strings/string_number_conversions.h"
@@ -147,7 +146,7 @@
 
   SensorReading readings;
   DCHECK_LE(sensor_info_.device_reading_files.size(),
-            base::size(readings.raw.values));
+            std::size(readings.raw.values));
   int i = 0;
   for (const auto& path : sensor_info_.device_reading_files) {
     std::string new_read_value;
diff --git a/services/device/generic_sensor/platform_sensor_reader_win.cc b/services/device/generic_sensor/platform_sensor_reader_win.cc
index 823f7d2..19c59cb 100644
--- a/services/device/generic_sensor/platform_sensor_reader_win.cc
+++ b/services/device/generic_sensor/platform_sensor_reader_win.cc
@@ -12,7 +12,6 @@
 #include <iomanip>
 
 #include "base/bind.h"
-#include "base/cxx17_backports.h"
 #include "base/memory/ptr_util.h"
 #include "base/memory/raw_ptr.h"
 #include "base/numerics/math_constants.h"
@@ -377,7 +376,7 @@
   }
 
   GUID interests[] = {SENSOR_EVENT_STATE_CHANGED, SENSOR_EVENT_DATA_UPDATED};
-  hr = sensor->SetEventInterest(interests, base::size(interests));
+  hr = sensor->SetEventInterest(interests, std::size(interests));
   if (FAILED(hr))
     return nullptr;
 
diff --git a/services/device/geolocation/wifi_data_provider_linux_unittest.cc b/services/device/geolocation/wifi_data_provider_linux_unittest.cc
index 271518cc..b74f009 100644
--- a/services/device/geolocation/wifi_data_provider_linux_unittest.cc
+++ b/services/device/geolocation/wifi_data_provider_linux_unittest.cc
@@ -8,7 +8,6 @@
 
 #include <memory>
 
-#include "base/cxx17_backports.h"
 #include "base/logging.h"
 #include "base/memory/ref_counted.h"
 #include "base/strings/utf_string_conversions.h"
@@ -190,7 +189,7 @@
           const uint8_t kSsid[] = {0x74, 0x65, 0x73, 0x74};  // "test"
           dbus::MessageWriter variant_writer(response.get());
           writer.OpenVariant("ay", &variant_writer);
-          variant_writer.AppendArrayOfBytes(kSsid, base::size(kSsid));
+          variant_writer.AppendArrayOfBytes(kSsid, std::size(kSsid));
           writer.CloseContainer(&variant_writer);
         } else if (property_name == "HwAddress") {
           // This will be converted to "00-11-22-33-44-55".
diff --git a/services/device/geolocation/wifi_data_provider_win.cc b/services/device/geolocation/wifi_data_provider_win.cc
index 5517b7c..036919d8c 100644
--- a/services/device/geolocation/wifi_data_provider_win.cc
+++ b/services/device/geolocation/wifi_data_provider_win.cc
@@ -8,7 +8,6 @@
 #include <winioctl.h>
 #include <wlanapi.h>
 
-#include "base/cxx17_backports.h"
 #include "base/logging.h"
 #include "base/memory/free_deleter.h"
 #include "base/memory/ptr_util.h"
@@ -111,7 +110,7 @@
   // Use an absolute path to load the DLL to avoid DLL preloading attacks.
   static const wchar_t* const kDLL = L"%WINDIR%\\system32\\wlanapi.dll";
   wchar_t path[MAX_PATH] = {0};
-  ExpandEnvironmentStrings(kDLL, path, base::size(path));
+  ExpandEnvironmentStrings(kDLL, path, std::size(path));
   HINSTANCE library = LoadLibraryEx(path, NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
   if (!library)
     return nullptr;
diff --git a/services/device/test/usb_test_gadget_impl.cc b/services/device/test/usb_test_gadget_impl.cc
index 161adfe..000069af 100644
--- a/services/device/test/usb_test_gadget_impl.cc
+++ b/services/device/test/usb_test_gadget_impl.cc
@@ -453,7 +453,7 @@
       const uint16_t product_id = device->product_id();
       if (product_id_ == -1) {
         bool found = false;
-        for (size_t i = 0; i < base::size(kConfigurations); ++i) {
+        for (size_t i = 0; i < std::size(kConfigurations); ++i) {
           if (product_id == kConfigurations[i].product_id) {
             found = true;
             break;
@@ -580,7 +580,7 @@
 
 bool UsbTestGadgetImpl::SetType(Type type) {
   const struct UsbTestGadgetConfiguration* config = NULL;
-  for (size_t i = 0; i < base::size(kConfigurations); ++i) {
+  for (size_t i = 0; i < std::size(kConfigurations); ++i) {
     if (kConfigurations[i].type == type) {
       config = &kConfigurations[i];
     }
diff --git a/services/device/time_zone_monitor/time_zone_monitor_linux.cc b/services/device/time_zone_monitor/time_zone_monitor_linux.cc
index 8ff30f3..b7c267b 100644
--- a/services/device/time_zone_monitor/time_zone_monitor_linux.cc
+++ b/services/device/time_zone_monitor/time_zone_monitor_linux.cc
@@ -11,7 +11,6 @@
 #include <vector>
 
 #include "base/bind.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_path.h"
 #include "base/files/file_path_watcher.h"
 #include "base/memory/ref_counted.h"
@@ -139,7 +138,7 @@
     const char* const kFilesToWatch[] = {
         "/etc/localtime", "/etc/timezone", "/etc/TZ",
     };
-    for (size_t index = 0; index < base::size(kFilesToWatch); ++index) {
+    for (size_t index = 0; index < std::size(kFilesToWatch); ++index) {
       file_path_watchers_.push_back(std::make_unique<base::FilePathWatcher>());
       file_path_watchers_.back()->Watch(
           base::FilePath(kFilesToWatch[index]),
diff --git a/services/network/cookie_manager_unittest.cc b/services/network/cookie_manager_unittest.cc
index 17fdda5e..36467b3 100644
--- a/services/network/cookie_manager_unittest.cc
+++ b/services/network/cookie_manager_unittest.cc
@@ -7,7 +7,6 @@
 #include <algorithm>
 
 #include "base/bind.h"
-#include "base/cxx17_backports.h"
 #include "base/files/scoped_temp_dir.h"
 #include "base/memory/raw_ptr.h"
 #include "base/run_loop.h"
@@ -1914,7 +1913,7 @@
   };
   mojom::CookieDeletionFilter test_filter;
   test_filter.including_domains = std::vector<std::string>();
-  for (int i = 0; i < static_cast<int>(base::size(filter_domains)); ++i)
+  for (int i = 0; i < static_cast<int>(std::size(filter_domains)); ++i)
     test_filter.including_domains->push_back(filter_domains[i]);
 
   struct TestCase {
@@ -1951,7 +1950,7 @@
   };
 
   mojom::CookieDeletionFilter clear_filter;
-  for (int i = 0; i < static_cast<int>(base::size(test_cases)); ++i) {
+  for (int i = 0; i < static_cast<int>(std::size(test_cases)); ++i) {
     TestCase& test_case(test_cases[i]);
 
     // Clear store.
diff --git a/services/network/http_cache_data_counter_unittest.cc b/services/network/http_cache_data_counter_unittest.cc
index b4e5a21c..e569bca8 100644
--- a/services/network/http_cache_data_counter_unittest.cc
+++ b/services/network/http_cache_data_counter_unittest.cc
@@ -11,7 +11,6 @@
 #include <vector>
 
 #include "base/bind.h"
-#include "base/cxx17_backports.h"
 #include "base/files/scoped_temp_dir.h"
 #include "base/run_loop.h"
 #include "base/test/bind.h"
@@ -133,7 +132,7 @@
     return size;
   }
 
-  int SizeAll() { return SizeBetween(0, base::size(kCacheEntries)); }
+  int SizeAll() { return SizeBetween(0, std::size(kCacheEntries)); }
 
   static std::pair<bool, int64_t> CountBetween(NetworkContext* network_context,
                                                base::Time start_time,
@@ -156,9 +155,9 @@
 
   void TestCountBetween(int start_index, int end_index) {
     DCHECK_LE(0, start_index);
-    DCHECK_LT(start_index, static_cast<int>(base::size(kCacheEntries)));
+    DCHECK_LT(start_index, static_cast<int>(std::size(kCacheEntries)));
     DCHECK_LE(0, end_index);
-    DCHECK_LT(end_index, static_cast<int>(base::size(kCacheEntries)));
+    DCHECK_LT(end_index, static_cast<int>(std::size(kCacheEntries)));
 
     base::Time start_time;
     ASSERT_TRUE(
diff --git a/services/network/http_cache_data_remover_unittest.cc b/services/network/http_cache_data_remover_unittest.cc
index 0b598515..f9568a8 100644
--- a/services/network/http_cache_data_remover_unittest.cc
+++ b/services/network/http_cache_data_remover_unittest.cc
@@ -7,7 +7,6 @@
 #include <vector>
 
 #include "base/bind.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_util.h"
 #include "base/location.h"
 #include "base/memory/raw_ptr.h"
@@ -111,7 +110,7 @@
       entry->Close();
       task_environment_.RunUntilIdle();
     }
-    ASSERT_EQ(base::size(kCacheEntries),
+    ASSERT_EQ(std::size(kCacheEntries),
               static_cast<size_t>(backend_->GetEntryCount()));
   }
 
diff --git a/services/network/network_context_unittest.cc b/services/network/network_context_unittest.cc
index b7bc799..3e3b6bc 100644
--- a/services/network/network_context_unittest.cc
+++ b/services/network/network_context_unittest.cc
@@ -1840,14 +1840,14 @@
           base::TimeTicks::Now(), base::Days(1));
     }
     // Sanity check.
-    EXPECT_EQ(base::size(kDomains) * 2, host_cache->entries().size());
+    EXPECT_EQ(std::size(kDomains) * 2, host_cache->entries().size());
 
     // Set up and run the filter, according to |test_case|.
     mojom::ClearDataFilterPtr clear_data_filter;
     if (!test_case.null_filter) {
       clear_data_filter = mojom::ClearDataFilter::New();
       clear_data_filter->type = test_case.type;
-      for (size_t i = 0; i < base::size(kDomains); ++i) {
+      for (size_t i = 0; i < std::size(kDomains); ++i) {
         if (test_case.filter_domains & (1 << i))
           clear_data_filter->domains.push_back(kDomains[i]);
       }
@@ -1859,7 +1859,7 @@
 
     // Check that only the expected domains remain in the cache.
     size_t expected_cached = 0;
-    for (size_t i = 0; i < base::size(kDomains); ++i) {
+    for (size_t i = 0; i < std::size(kDomains); ++i) {
       bool expect_domain_cached =
           ((test_case.expected_cached_domains & (1 << i)) != 0);
       EXPECT_EQ(expect_domain_cached,
diff --git a/services/network/p2p/socket_tcp_unittest.cc b/services/network/p2p/socket_tcp_unittest.cc
index fc17346fb9..ab21bd67 100644
--- a/services/network/p2p/socket_tcp_unittest.cc
+++ b/services/network/p2p/socket_tcp_unittest.cc
@@ -9,7 +9,6 @@
 
 #include <memory>
 
-#include "base/cxx17_backports.h"
 #include "base/memory/raw_ptr.h"
 #include "base/run_loop.h"
 #include "base/strings/stringprintf.h"
@@ -188,7 +187,7 @@
     size_t step_size = std::min(step_sizes[step], received_data.size() - pos);
     socket_->AppendInputData(&received_data[pos], step_size);
     pos += step_size;
-    if (++step >= base::size(step_sizes))
+    if (++step >= std::size(step_sizes))
       step = 0;
   }
 
@@ -434,7 +433,7 @@
     size_t step_size = std::min(step_sizes[step], received_data.size() - pos);
     socket_->AppendInputData(&received_data[pos], step_size);
     pos += step_size;
-    if (++step >= base::size(step_sizes))
+    if (++step >= std::size(step_sizes))
       step = 0;
   }
 
diff --git a/services/network/public/cpp/corb/corb_impl.cc b/services/network/public/cpp/corb/corb_impl.cc
index ebf406f..ee70b09 100644
--- a/services/network/public/cpp/corb/corb_impl.cc
+++ b/services/network/public/cpp/corb/corb_impl.cc
@@ -381,7 +381,7 @@
     AdvancePastWhitespace(&data);
 
     SniffingResult signature_match =
-        MatchesSignature(&data, kHtmlSignatures, base::size(kHtmlSignatures),
+        MatchesSignature(&data, kHtmlSignatures, std::size(kHtmlSignatures),
                          base::CompareCase::INSENSITIVE_ASCII);
     if (signature_match != kNo)
       return signature_match;
@@ -402,7 +402,7 @@
   // initializer.
   AdvancePastWhitespace(&data);
   static constexpr StringPiece kXmlSignatures[] = {StringPiece("<?xml")};
-  return MatchesSignature(&data, kXmlSignatures, base::size(kXmlSignatures),
+  return MatchesSignature(&data, kXmlSignatures, std::size(kXmlSignatures),
                           base::CompareCase::SENSITIVE);
 }
 
@@ -504,7 +504,7 @@
       StringPiece("while (1);"),
   };
   SniffingResult has_parser_breaker = MatchesSignature(
-      &data, kScriptBreakingPrefixes, base::size(kScriptBreakingPrefixes),
+      &data, kScriptBreakingPrefixes, std::size(kScriptBreakingPrefixes),
       base::CompareCase::SENSITIVE);
   if (has_parser_breaker != kNo)
     return has_parser_breaker;
diff --git a/services/network/public/cpp/cors/cors_unittest.cc b/services/network/public/cpp/cors/cors_unittest.cc
index bb7b6a72..aa97fb7 100644
--- a/services/network/public/cpp/cors/cors_unittest.cc
+++ b/services/network/public/cpp/cors/cors_unittest.cc
@@ -237,7 +237,7 @@
     SCOPED_TRACE(testing::Message() << "c = static_cast<char>(" << i << ")");
     char c = static_cast<char>(i);
     // 1 for the trailing null character.
-    auto* end = kAllowed + base::size(kAllowed) - 1;
+    auto* end = kAllowed + std::size(kAllowed) - 1;
     EXPECT_EQ(std::find(kAllowed, end, c) != end,
               IsCorsSafelistedHeader("accept", std::string(1, c)));
     EXPECT_EQ(std::find(kAllowed, end, c) != end,
@@ -266,7 +266,7 @@
     SCOPED_TRACE(testing::Message() << "c = static_cast<char>(" << i << ")");
     char c = static_cast<char>(i);
     // 1 for the trailing null character.
-    auto* end = kAllowed + base::size(kAllowed) - 1;
+    auto* end = kAllowed + std::size(kAllowed) - 1;
     EXPECT_EQ(std::find(kAllowed, end, c) != end,
               IsCorsSafelistedHeader("aCcEPT-lAngUAge", std::string(1, c)));
   }
@@ -313,7 +313,7 @@
     SCOPED_TRACE(testing::Message() << "c = static_cast<char>(" << i << ")");
     char c = static_cast<char>(i);
     // 1 for the trailing null character.
-    auto* end = kAllowed + base::size(kAllowed) - 1;
+    auto* end = kAllowed + std::size(kAllowed) - 1;
     EXPECT_EQ(std::find(kAllowed, end, c) != end,
               IsCorsSafelistedHeader("content-language", std::string(1, c)));
     EXPECT_EQ(std::find(kAllowed, end, c) != end,
@@ -337,7 +337,7 @@
     SCOPED_TRACE(testing::Message() << "c = static_cast<char>(" << i << ")");
     const char c = static_cast<char>(i);
     // 1 for the trailing null character.
-    const auto* const end = kAllowed + base::size(kAllowed) - 1;
+    const auto* const end = kAllowed + std::size(kAllowed) - 1;
     const bool is_allowed = std::find(kAllowed, end, c) != end;
     const std::string value = std::string("text/plain; charset=") + c;
 
diff --git a/services/network/public/cpp/is_potentially_trustworthy_unittest.h b/services/network/public/cpp/is_potentially_trustworthy_unittest.h
index 3cbc235..ef81d2a 100644
--- a/services/network/public/cpp/is_potentially_trustworthy_unittest.h
+++ b/services/network/public/cpp/is_potentially_trustworthy_unittest.h
@@ -361,7 +361,7 @@
       {false, false, "data:text/html,Hello"},
   };
 
-  for (size_t i = 0; i < base::size(inputs); ++i) {
+  for (size_t i = 0; i < std::size(inputs); ++i) {
     SCOPED_TRACE(inputs[i].url);
     auto origin = this->CreateOriginFromString(inputs[i].url);
     EXPECT_EQ(inputs[i].is_potentially_trustworthy,
diff --git a/services/network/public/cpp/server/http_server_unittest.cc b/services/network/public/cpp/server/http_server_unittest.cc
index ff02ccc..d48bd84 100644
--- a/services/network/public/cpp/server/http_server_unittest.cc
+++ b/services/network/public/cpp/server/http_server_unittest.cc
@@ -11,7 +11,6 @@
 
 #include "base/auto_reset.h"
 #include "base/bind.h"
-#include "base/cxx17_backports.h"
 #include "base/format_macros.h"
 #include "base/location.h"
 #include "base/run_loop.h"
@@ -425,7 +424,7 @@
       {"HeaderWithNonASCII", ":  ", "\xf7"},
   };
   std::string headers;
-  for (size_t i = 0; i < base::size(kHeaders); ++i) {
+  for (size_t i = 0; i < std::size(kHeaders); ++i) {
     headers +=
         std::string(kHeaders[i][0]) + kHeaders[i][1] + kHeaders[i][2] + "\r\n";
   }
@@ -434,7 +433,7 @@
   RunUntilRequestsReceived(1);
   ASSERT_EQ("", GetRequest(0).data);
 
-  for (size_t i = 0; i < base::size(kHeaders); ++i) {
+  for (size_t i = 0; i < std::size(kHeaders); ++i) {
     std::string field = base::ToLowerASCII(std::string(kHeaders[i][0]));
     std::string value = kHeaders[i][2];
     ASSERT_EQ(1u, GetRequest(0).headers.count(field)) << field;
@@ -451,7 +450,7 @@
       {"LastHeader", ": ", "5"},
   };
   std::string headers;
-  for (size_t i = 0; i < base::size(kHeaders); ++i) {
+  for (size_t i = 0; i < std::size(kHeaders); ++i) {
     headers +=
         std::string(kHeaders[i][0]) + kHeaders[i][1] + kHeaders[i][2] + "\r\n";
   }
@@ -460,7 +459,7 @@
   RunUntilRequestsReceived(1);
   ASSERT_EQ("", GetRequest(0).data);
 
-  for (size_t i = 0; i < base::size(kHeaders); ++i) {
+  for (size_t i = 0; i < std::size(kHeaders); ++i) {
     std::string field = base::ToLowerASCII(std::string(kHeaders[i][0]));
     std::string value = (field == "duplicateheader") ? "2,4" : kHeaders[i][2];
     ASSERT_EQ(1u, GetRequest(0).headers.count(field)) << field;
@@ -483,7 +482,7 @@
       "HeaderWithNonASCII:  \xf7",
   };
   std::string headers;
-  for (size_t i = 0; i < base::size(kHeaders); ++i) {
+  for (size_t i = 0; i < std::size(kHeaders); ++i) {
     headers += std::string(kHeaders[i]) + "\r\n";
   }
 
@@ -757,7 +756,7 @@
       "GET /test \r\n\r\n",
   };
 
-  for (size_t i = 0; i < base::size(kBadProtocolRequests); ++i) {
+  for (size_t i = 0; i < std::size(kBadProtocolRequests); ++i) {
     TestHttpClient client;
     CreateConnection(&client);
 
diff --git a/services/network/ssl_config_service_mojo_unittest.cc b/services/network/ssl_config_service_mojo_unittest.cc
index 977b072..4bd25c08 100644
--- a/services/network/ssl_config_service_mojo_unittest.cc
+++ b/services/network/ssl_config_service_mojo_unittest.cc
@@ -4,7 +4,6 @@
 
 #include "services/network/ssl_config_service_mojo.h"
 
-#include "base/cxx17_backports.h"
 #include "base/feature_list.h"
 #include "base/files/file_util.h"
 #include "base/memory/raw_ptr.h"
@@ -352,9 +351,9 @@
       {mojom::SSLVersion::kTLS13, net::SSL_PROTOCOL_VERSION_TLS1_3},
   };
 
-  for (size_t min_index = 0; min_index < base::size(kVersionTable);
+  for (size_t min_index = 0; min_index < std::size(kVersionTable);
        ++min_index) {
-    for (size_t max_index = min_index; max_index < base::size(kVersionTable);
+    for (size_t max_index = min_index; max_index < std::size(kVersionTable);
          ++max_index) {
       // If the versions match the default values, skip this value in the table.
       // The defaults will get plenty of testing anyways, when switching back to
diff --git a/services/network/throttling/throttling_controller_unittest.cc b/services/network/throttling/throttling_controller_unittest.cc
index 6be9f572e..fbe2c6d 100644
--- a/services/network/throttling/throttling_controller_unittest.cc
+++ b/services/network/throttling/throttling_controller_unittest.cc
@@ -11,7 +11,6 @@
 #include <utility>
 
 #include "base/bind.h"
-#include "base/cxx17_backports.h"
 #include "base/memory/ref_counted.h"
 #include "base/run_loop.h"
 #include "base/test/task_environment.h"
@@ -98,7 +97,7 @@
     if (with_upload) {
       upload_data_stream_ =
           std::make_unique<net::ChunkedUploadDataStream>(kUploadIdentifier);
-      upload_data_stream_->AppendData(kUploadData, base::size(kUploadData),
+      upload_data_stream_->AppendData(kUploadData, std::size(kUploadData),
                                       true);
       request_->upload_data_stream = upload_data_stream_.get();
     }
@@ -291,7 +290,7 @@
   int rv = helper.Start(true);
   EXPECT_EQ(rv, net::ERR_INTERNET_DISCONNECTED);
   rv = helper.ReadUploadData();
-  EXPECT_EQ(rv, static_cast<int>(base::size(kUploadData)));
+  EXPECT_EQ(rv, static_cast<int>(std::size(kUploadData)));
 }
 
 TEST(ThrottlingControllerTest, DownloadOnly) {
@@ -335,7 +334,7 @@
   EXPECT_EQ(callback->run_count(), 1);
   helper.FastForwardUntilNoTasksRemain();
   EXPECT_EQ(callback->run_count(), 2);
-  EXPECT_EQ(callback->value(), static_cast<int>(base::size(kUploadData)));
+  EXPECT_EQ(callback->value(), static_cast<int>(std::size(kUploadData)));
 }
 
 TEST(ThrottlingControllerTest, DownloadBufferSizeIsNotModifiedIfNotThrottled) {
diff --git a/services/network/trust_tokens/trust_token_request_helper_factory_unittest.cc b/services/network/trust_tokens/trust_token_request_helper_factory_unittest.cc
index 0d118901..6a92503b 100644
--- a/services/network/trust_tokens/trust_token_request_helper_factory_unittest.cc
+++ b/services/network/trust_tokens/trust_token_request_helper_factory_unittest.cc
@@ -170,7 +170,7 @@
   histogram_tester.ExpectUniqueSample(
       "Net.TrustTokens.RequestHelperFactoryOutcome.Signing",
       Outcome::kRequestRejectedDueToBearingAnInternalTrustTokensHeader,
-      base::size(TrustTokensRequestHeaders()));
+      std::size(TrustTokensRequestHeaders()));
 }
 
 TEST_F(TrustTokenRequestHelperFactoryTest,
diff --git a/services/network/trust_tokens/trust_token_request_signing_helper_unittest.cc b/services/network/trust_tokens/trust_token_request_signing_helper_unittest.cc
index 9a3811c..4e2a08f 100644
--- a/services/network/trust_tokens/trust_token_request_signing_helper_unittest.cc
+++ b/services/network/trust_tokens/trust_token_request_signing_helper_unittest.cc
@@ -180,8 +180,8 @@
   absl::optional<cbor::Value> parsed = cbor::Reader::Read(base::as_bytes(
       // Skip over the domain separator (e.g. "Trust Token v0").
       base::make_span(signing_data)
-          .subspan(base::size(TrustTokenRequestSigningHelper::
-                                  kRequestSigningDomainSeparator))));
+          .subspan(std::size(TrustTokenRequestSigningHelper::
+                                 kRequestSigningDomainSeparator))));
   ASSERT_TRUE(parsed);
 
   const cbor::Value::MapValue& map = parsed->GetMap();
diff --git a/services/preferences/tracked/device_id_win.cc b/services/preferences/tracked/device_id_win.cc
index 17a2e75..9b2b8369 100644
--- a/services/preferences/tracked/device_id_win.cc
+++ b/services/preferences/tracked/device_id_win.cc
@@ -11,13 +11,12 @@
 #include <memory>
 
 #include "base/check.h"
-#include "base/cxx17_backports.h"
 
 MachineIdStatus GetDeterministicMachineSpecificId(std::string* machine_id) {
   DCHECK(machine_id);
 
   wchar_t computer_name[MAX_COMPUTERNAME_LENGTH + 1] = {};
-  DWORD computer_name_size = base::size(computer_name);
+  DWORD computer_name_size = std::size(computer_name);
 
   if (!::GetComputerNameW(computer_name, &computer_name_size))
     return MachineIdStatus::FAILURE;
diff --git a/services/preferences/tracked/pref_hash_filter.cc b/services/preferences/tracked/pref_hash_filter.cc
index caf5a21..37c4ce5 100644
--- a/services/preferences/tracked/pref_hash_filter.cc
+++ b/services/preferences/tracked/pref_hash_filter.cc
@@ -12,7 +12,6 @@
 
 #include "base/bind.h"
 #include "base/check_op.h"
-#include "base/cxx17_backports.h"
 #include "base/metrics/histogram_macros.h"
 #include "base/notreached.h"
 #include "base/strings/string_number_conversions.h"
@@ -38,7 +37,7 @@
       // TODO(pmonette): Remove in 2022+.
       "module_blacklist_cache_md5_digest"};
 
-  for (size_t i = 0; i < base::size(kDeprecatedTrackedPreferences); ++i) {
+  for (size_t i = 0; i < std::size(kDeprecatedTrackedPreferences); ++i) {
     const char* key = kDeprecatedTrackedPreferences[i];
     pref_store_contents->RemovePath(key);
     hash_store_transaction->ClearHash(key);
diff --git a/services/preferences/tracked/pref_hash_filter_unittest.cc b/services/preferences/tracked/pref_hash_filter_unittest.cc
index 8ffad5c..d46eb180 100644
--- a/services/preferences/tracked/pref_hash_filter_unittest.cc
+++ b/services/preferences/tracked/pref_hash_filter_unittest.cc
@@ -15,7 +15,6 @@
 
 #include "base/bind.h"
 #include "base/compiler_specific.h"
-#include "base/cxx17_backports.h"
 #include "base/memory/raw_ptr.h"
 #include "base/metrics/histogram_base.h"
 #include "base/metrics/histogram_samples.h"
@@ -602,7 +601,7 @@
             std::move(temp_mock_external_validation_hash_store_contents)),
         std::move(configuration), std::move(reset_on_load_observer),
         std::move(validation_delegate_remote_ref),
-        base::size(kTestTrackedPrefs));
+        std::size(kTestTrackedPrefs));
   }
 
   // Verifies whether a reset was reported by the PrefHashFiler. Also verifies
@@ -662,13 +661,13 @@
 TEST_P(PrefHashFilterTest, EmptyAndUnchanged) {
   DoFilterOnLoad(false);
   // All paths checked.
-  ASSERT_EQ(base::size(kTestTrackedPrefs),
+  ASSERT_EQ(std::size(kTestTrackedPrefs),
             mock_pref_hash_store_->checked_paths_count());
   // No paths stored, since they all return |UNCHANGED|.
   ASSERT_EQ(0u, mock_pref_hash_store_->stored_paths_count());
   // Since there was nothing in |pref_store_contents_| the checked value should
   // have been NULL for all tracked preferences.
-  for (size_t i = 0; i < base::size(kTestTrackedPrefs); ++i) {
+  for (size_t i = 0; i < std::size(kTestTrackedPrefs); ++i) {
     ASSERT_EQ(
         NULL,
         mock_pref_hash_store_->checked_value(kTestTrackedPrefs[i].name).first);
@@ -677,9 +676,9 @@
   VerifyRecordedReset(false);
 
   // Delegate saw all paths, and all unchanged.
-  ASSERT_EQ(base::size(kTestTrackedPrefs),
+  ASSERT_EQ(std::size(kTestTrackedPrefs),
             mock_validation_delegate_record_->recorded_validations_count());
-  ASSERT_EQ(base::size(kTestTrackedPrefs),
+  ASSERT_EQ(std::size(kTestTrackedPrefs),
             mock_validation_delegate_record_->CountValidationsOfState(
                 ValueState::UNCHANGED));
 }
@@ -844,7 +843,7 @@
   mock_pref_hash_store_->SetCheckResult(kSplitPref,
                                         ValueState::TRUSTED_NULL_VALUE);
   DoFilterOnLoad(false);
-  ASSERT_EQ(base::size(kTestTrackedPrefs),
+  ASSERT_EQ(std::size(kTestTrackedPrefs),
             mock_pref_hash_store_->checked_paths_count());
   ASSERT_EQ(2u, mock_pref_hash_store_->stored_paths_count());
   ASSERT_EQ(1u, mock_pref_hash_store_->transactions_performed());
@@ -860,11 +859,11 @@
   ASSERT_EQ(PrefTrackingStrategy::SPLIT, stored_split_value.second);
 
   // Delegate saw all prefs, two of which had the expected value_state.
-  ASSERT_EQ(base::size(kTestTrackedPrefs),
+  ASSERT_EQ(std::size(kTestTrackedPrefs),
             mock_validation_delegate_record_->recorded_validations_count());
   ASSERT_EQ(2u, mock_validation_delegate_record_->CountValidationsOfState(
                     ValueState::TRUSTED_NULL_VALUE));
-  ASSERT_EQ(base::size(kTestTrackedPrefs) - 2u,
+  ASSERT_EQ(std::size(kTestTrackedPrefs) - 2u,
             mock_validation_delegate_record_->CountValidationsOfState(
                 ValueState::UNCHANGED));
 
@@ -896,17 +895,17 @@
                                         ValueState::UNTRUSTED_UNKNOWN_VALUE);
   // If we are enforcing, expect this to report changes.
   DoFilterOnLoad(GetParam() >= EnforcementLevel::ENFORCE_ON_LOAD);
-  ASSERT_EQ(base::size(kTestTrackedPrefs),
+  ASSERT_EQ(std::size(kTestTrackedPrefs),
             mock_pref_hash_store_->checked_paths_count());
   ASSERT_EQ(2u, mock_pref_hash_store_->stored_paths_count());
   ASSERT_EQ(1u, mock_pref_hash_store_->transactions_performed());
 
   // Delegate saw all prefs, two of which had the expected value_state.
-  ASSERT_EQ(base::size(kTestTrackedPrefs),
+  ASSERT_EQ(std::size(kTestTrackedPrefs),
             mock_validation_delegate_record_->recorded_validations_count());
   ASSERT_EQ(2u, mock_validation_delegate_record_->CountValidationsOfState(
                     ValueState::UNTRUSTED_UNKNOWN_VALUE));
-  ASSERT_EQ(base::size(kTestTrackedPrefs) - 2u,
+  ASSERT_EQ(std::size(kTestTrackedPrefs) - 2u,
             mock_validation_delegate_record_->CountValidationsOfState(
                 ValueState::UNCHANGED));
 
@@ -960,17 +959,17 @@
   mock_pref_hash_store_->SetCheckResult(kSplitPref,
                                         ValueState::TRUSTED_UNKNOWN_VALUE);
   DoFilterOnLoad(false);
-  ASSERT_EQ(base::size(kTestTrackedPrefs),
+  ASSERT_EQ(std::size(kTestTrackedPrefs),
             mock_pref_hash_store_->checked_paths_count());
   ASSERT_EQ(2u, mock_pref_hash_store_->stored_paths_count());
   ASSERT_EQ(1u, mock_pref_hash_store_->transactions_performed());
 
   // Delegate saw all prefs, two of which had the expected value_state.
-  ASSERT_EQ(base::size(kTestTrackedPrefs),
+  ASSERT_EQ(std::size(kTestTrackedPrefs),
             mock_validation_delegate_record_->recorded_validations_count());
   ASSERT_EQ(2u, mock_validation_delegate_record_->CountValidationsOfState(
                     ValueState::TRUSTED_UNKNOWN_VALUE));
-  ASSERT_EQ(base::size(kTestTrackedPrefs) - 2u,
+  ASSERT_EQ(std::size(kTestTrackedPrefs) - 2u,
             mock_validation_delegate_record_->CountValidationsOfState(
                 ValueState::UNCHANGED));
 
@@ -1014,7 +1013,7 @@
   mock_pref_hash_store_->SetInvalidKeysResult(kSplitPref, mock_invalid_keys);
 
   DoFilterOnLoad(GetParam() >= EnforcementLevel::ENFORCE_ON_LOAD);
-  ASSERT_EQ(base::size(kTestTrackedPrefs),
+  ASSERT_EQ(std::size(kTestTrackedPrefs),
             mock_pref_hash_store_->checked_paths_count());
   ASSERT_EQ(2u, mock_pref_hash_store_->stored_paths_count());
   ASSERT_EQ(1u, mock_pref_hash_store_->transactions_performed());
@@ -1071,17 +1070,17 @@
   mock_pref_hash_store_->SetCheckResult(kAtomicPref, ValueState::CLEARED);
   mock_pref_hash_store_->SetCheckResult(kSplitPref, ValueState::CLEARED);
   DoFilterOnLoad(false);
-  ASSERT_EQ(base::size(kTestTrackedPrefs),
+  ASSERT_EQ(std::size(kTestTrackedPrefs),
             mock_pref_hash_store_->checked_paths_count());
   ASSERT_EQ(2u, mock_pref_hash_store_->stored_paths_count());
   ASSERT_EQ(1u, mock_pref_hash_store_->transactions_performed());
 
   // Delegate saw all prefs, two of which had the expected value_state.
-  ASSERT_EQ(base::size(kTestTrackedPrefs),
+  ASSERT_EQ(std::size(kTestTrackedPrefs),
             mock_validation_delegate_record_->recorded_validations_count());
   ASSERT_EQ(2u, mock_validation_delegate_record_->CountValidationsOfState(
                     ValueState::CLEARED));
-  ASSERT_EQ(base::size(kTestTrackedPrefs) - 2u,
+  ASSERT_EQ(std::size(kTestTrackedPrefs) - 2u,
             mock_validation_delegate_record_->CountValidationsOfState(
                 ValueState::UNCHANGED));
 
@@ -1115,16 +1114,16 @@
   mock_pref_hash_store_->SetCheckResult(kAtomicPref, ValueState::SECURE_LEGACY);
   mock_pref_hash_store_->SetCheckResult(kSplitPref, ValueState::SECURE_LEGACY);
   DoFilterOnLoad(false);
-  ASSERT_EQ(base::size(kTestTrackedPrefs),
+  ASSERT_EQ(std::size(kTestTrackedPrefs),
             mock_pref_hash_store_->checked_paths_count());
   ASSERT_EQ(1u, mock_pref_hash_store_->transactions_performed());
 
   // Delegate saw all prefs, two of which had the expected value_state.
-  ASSERT_EQ(base::size(kTestTrackedPrefs),
+  ASSERT_EQ(std::size(kTestTrackedPrefs),
             mock_validation_delegate_record_->recorded_validations_count());
   ASSERT_EQ(2u, mock_validation_delegate_record_->CountValidationsOfState(
                     ValueState::SECURE_LEGACY));
-  ASSERT_EQ(base::size(kTestTrackedPrefs) - 2u,
+  ASSERT_EQ(std::size(kTestTrackedPrefs) - 2u,
             mock_validation_delegate_record_->CountValidationsOfState(
                 ValueState::UNCHANGED));
 
@@ -1176,17 +1175,17 @@
   DoFilterOnLoad(GetParam() >= EnforcementLevel::ENFORCE_ON_LOAD);
   // All prefs should be checked and a new hash should be stored for each tested
   // pref.
-  ASSERT_EQ(base::size(kTestTrackedPrefs),
+  ASSERT_EQ(std::size(kTestTrackedPrefs),
             mock_pref_hash_store_->checked_paths_count());
   ASSERT_EQ(4u, mock_pref_hash_store_->stored_paths_count());
   ASSERT_EQ(1u, mock_pref_hash_store_->transactions_performed());
 
   // Delegate saw all prefs, four of which had the expected value_state.
-  ASSERT_EQ(base::size(kTestTrackedPrefs),
+  ASSERT_EQ(std::size(kTestTrackedPrefs),
             mock_validation_delegate_record_->recorded_validations_count());
   ASSERT_EQ(4u, mock_validation_delegate_record_->CountValidationsOfState(
                     ValueState::CHANGED));
-  ASSERT_EQ(base::size(kTestTrackedPrefs) - 4u,
+  ASSERT_EQ(std::size(kTestTrackedPrefs) - 4u,
             mock_validation_delegate_record_->CountValidationsOfState(
                 ValueState::UNCHANGED));
 
@@ -1319,18 +1318,18 @@
 
   DoFilterOnLoad(false);
 
-  ASSERT_EQ(base::size(kTestTrackedPrefs),
+  ASSERT_EQ(std::size(kTestTrackedPrefs),
             mock_external_validation_pref_hash_store_->checked_paths_count());
   ASSERT_EQ(2u,
             mock_external_validation_pref_hash_store_->stored_paths_count());
   ASSERT_EQ(
       1u, mock_external_validation_pref_hash_store_->transactions_performed());
 
-  ASSERT_EQ(base::size(kTestTrackedPrefs),
+  ASSERT_EQ(std::size(kTestTrackedPrefs),
             mock_validation_delegate_record_->recorded_validations_count());
 
   // Regular validation should not have any CHANGED prefs.
-  ASSERT_EQ(base::size(kTestTrackedPrefs),
+  ASSERT_EQ(std::size(kTestTrackedPrefs),
             mock_validation_delegate_record_->CountValidationsOfState(
                 ValueState::UNCHANGED));
 
@@ -1338,7 +1337,7 @@
   ASSERT_EQ(2u,
             mock_validation_delegate_record_->CountExternalValidationsOfState(
                 ValueState::CHANGED));
-  ASSERT_EQ(base::size(kTestTrackedPrefs) - 2u,
+  ASSERT_EQ(std::size(kTestTrackedPrefs) - 2u,
             mock_validation_delegate_record_->CountExternalValidationsOfState(
                 ValueState::UNCHANGED));
 }
diff --git a/services/proxy_resolver/proxy_resolver_v8.cc b/services/proxy_resolver/proxy_resolver_v8.cc
index 573f2f5..2cf0db05 100644
--- a/services/proxy_resolver/proxy_resolver_v8.cc
+++ b/services/proxy_resolver/proxy_resolver_v8.cc
@@ -12,7 +12,6 @@
 #include "base/auto_reset.h"
 #include "base/check_op.h"
 #include "base/compiler_specific.h"
-#include "base/cxx17_backports.h"
 #include "base/debug/leak_annotations.h"
 #include "base/lazy_instance.h"
 #include "base/memory/raw_ptr.h"
@@ -483,7 +482,7 @@
     v8::TryCatch try_catch(isolate_);
     v8::Local<v8::Value> ret;
     if (!v8::Function::Cast(*function)
-             ->Call(context, context->Global(), base::size(argv), argv)
+             ->Call(context, context->Global(), std::size(argv), argv)
              .ToLocal(&ret)) {
       DCHECK(try_catch.HasCaught());
       HandleError(try_catch.Message());
diff --git a/services/proxy_resolver/proxy_resolver_v8_tracing_unittest.cc b/services/proxy_resolver/proxy_resolver_v8_tracing_unittest.cc
index 44f3114..96f65cf 100644
--- a/services/proxy_resolver/proxy_resolver_v8_tracing_unittest.cc
+++ b/services/proxy_resolver/proxy_resolver_v8_tracing_unittest.cc
@@ -9,7 +9,6 @@
 #include <vector>
 
 #include "base/bind.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_util.h"
 #include "base/memory/raw_ptr.h"
 #include "base/path_service.h"
@@ -954,7 +953,7 @@
       resolver3.get(),
   };
 
-  const size_t kNumResolvers = base::size(resolver);
+  const size_t kNumResolvers = std::size(resolver);
   const size_t kNumIterations = 20;
   const size_t kNumResults = kNumResolvers * kNumIterations;
   net::TestCompletionCallback callback[kNumResults];
diff --git a/services/proxy_resolver/proxy_resolver_v8_unittest.cc b/services/proxy_resolver/proxy_resolver_v8_unittest.cc
index 718bf36..810d18c 100644
--- a/services/proxy_resolver/proxy_resolver_v8_unittest.cc
+++ b/services/proxy_resolver/proxy_resolver_v8_unittest.cc
@@ -5,7 +5,6 @@
 #include "services/proxy_resolver/proxy_resolver_v8.h"
 
 #include "base/compiler_specific.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_util.h"
 #include "base/path_service.h"
 #include "base/strings/string_util.h"
@@ -213,7 +212,7 @@
       // TODO(eroman): Should 'null' be considered equivalent to "DIRECT" ?
       "return_null.js"};
 
-  for (size_t i = 0; i < base::size(filenames); ++i) {
+  for (size_t i = 0; i < std::size(filenames); ++i) {
     ASSERT_THAT(CreateResolver(filenames[i]), IsOk());
 
     MockJSBindings bindings;
diff --git a/services/tracing/public/cpp/perfetto/java_heap_profiler/hprof_parser_android_unittest.cc b/services/tracing/public/cpp/perfetto/java_heap_profiler/hprof_parser_android_unittest.cc
index 6512dd3..83c5ca8 100644
--- a/services/tracing/public/cpp/perfetto/java_heap_profiler/hprof_parser_android_unittest.cc
+++ b/services/tracing/public/cpp/perfetto/java_heap_profiler/hprof_parser_android_unittest.cc
@@ -307,8 +307,8 @@
        "base_f1", "base_f2"},
   };
 
-  ASSERT_EQ(parser.class_objects().size(), base::size(expected));
-  for (unsigned i = 1; i < base::size(expected); ++i) {
+  ASSERT_EQ(parser.class_objects().size(), std::size(expected));
+  for (unsigned i = 1; i < std::size(expected); ++i) {
     const auto& expected_class = expected[i - 1];
     auto it = parser.class_objects().find(i);
     ASSERT_TRUE(it != parser.class_objects().end())
@@ -612,7 +612,7 @@
                        ToLittleEndian(kRegistryInstanceId),
                        // Registry
                        0, ToLittleEndian(9876)};
-  const int length = base::size(file_data) * sizeof(uint32_t);
+  const int length = std::size(file_data) * sizeof(uint32_t);
   constexpr uint32_t kCleanerOffset = 0;    // First object
   constexpr uint32_t kThunkOffset = 12;     // Second object
   constexpr uint32_t kRegistryOffset = 16;  // Third object
diff --git a/services/tracing/public/cpp/perfetto/trace_string_lookup.cc b/services/tracing/public/cpp/perfetto/trace_string_lookup.cc
index 4412e9d..6f0b79d 100644
--- a/services/tracing/public/cpp/perfetto/trace_string_lookup.cc
+++ b/services/tracing/public/cpp/perfetto/trace_string_lookup.cc
@@ -4,7 +4,6 @@
 
 #include "services/tracing/public/cpp/perfetto/trace_string_lookup.h"
 
-#include "base/cxx17_backports.h"
 #include "base/strings/pattern.h"
 
 using ::perfetto::protos::pbzero::ChromeProcessDescriptor;
@@ -152,7 +151,7 @@
 };
 
 ChromeProcessDescriptor::ProcessType GetProcessType(const std::string& name) {
-  for (size_t i = 0; i < base::size(kProcessTypes); ++i) {
+  for (size_t i = 0; i < std::size(kProcessTypes); ++i) {
     if (base::MatchPattern(name, kProcessTypes[i].name)) {
       return kProcessTypes[i].type;
     }
@@ -163,7 +162,7 @@
 
 ChromeThreadDescriptor::ThreadType GetThreadType(
     const char* const thread_name) {
-  for (size_t i = 0; i < base::size(kThreadTypes); ++i) {
+  for (size_t i = 0; i < std::size(kThreadTypes); ++i) {
     if (base::MatchPattern(thread_name, kThreadTypes[i].name)) {
       return kThreadTypes[i].type;
     }
diff --git a/testing/buildbot/chrome.json b/testing/buildbot/chrome.json
index 17fdeb9..9c83490 100644
--- a/testing/buildbot/chrome.json
+++ b/testing/buildbot/chrome.json
@@ -1778,7 +1778,7 @@
       {
         "args": [],
         "cros_board": "atlas",
-        "cros_img": "atlas-release/R101-14531.0.0",
+        "cros_img": "atlas-release/R101-14535.0.0",
         "name": "lacros_all_tast_tests_ATLAS_LKGM",
         "resultdb": {
           "enable": true,
@@ -1838,7 +1838,7 @@
       {
         "args": [],
         "cros_board": "eve",
-        "cros_img": "eve-release/R101-14531.0.0",
+        "cros_img": "eve-release/R101-14535.0.0",
         "name": "lacros_all_tast_tests_EVE_LKGM",
         "resultdb": {
           "enable": true,
@@ -1943,7 +1943,7 @@
       {
         "args": [],
         "cros_board": "kevin",
-        "cros_img": "kevin-release/R101-14531.0.0",
+        "cros_img": "kevin-release/R101-14535.0.0",
         "name": "lacros_all_tast_tests_KEVIN_LKGM",
         "resultdb": {
           "enable": true,
@@ -1958,7 +1958,7 @@
       {
         "args": [],
         "cros_board": "hana",
-        "cros_img": "hana-release/R101-14531.0.0",
+        "cros_img": "hana-release/R101-14535.0.0",
         "name": "lacros_all_tast_tests_HANA_LKGM",
         "resultdb": {
           "enable": true,
@@ -1973,7 +1973,7 @@
       {
         "args": [],
         "cros_board": "kevin",
-        "cros_img": "kevin-release/R101-14531.0.0",
+        "cros_img": "kevin-release/R101-14535.0.0",
         "name": "ozone_unittests_KEVIN_LKGM",
         "resultdb": {
           "enable": true,
@@ -1987,7 +1987,7 @@
       {
         "args": [],
         "cros_board": "hana",
-        "cros_img": "hana-release/R101-14531.0.0",
+        "cros_img": "hana-release/R101-14535.0.0",
         "name": "ozone_unittests_HANA_LKGM",
         "resultdb": {
           "enable": true,
@@ -2001,7 +2001,7 @@
       {
         "args": [],
         "cros_board": "kevin",
-        "cros_img": "kevin-release/R101-14531.0.0",
+        "cros_img": "kevin-release/R101-14535.0.0",
         "name": "viz_unittests_KEVIN_LKGM",
         "resultdb": {
           "enable": true,
@@ -2015,7 +2015,7 @@
       {
         "args": [],
         "cros_board": "hana",
-        "cros_img": "hana-release/R101-14531.0.0",
+        "cros_img": "hana-release/R101-14535.0.0",
         "name": "viz_unittests_HANA_LKGM",
         "resultdb": {
           "enable": true,
diff --git a/testing/buildbot/chromium.android.fyi.json b/testing/buildbot/chromium.android.fyi.json
index c36f4ac..1e6f2be 100644
--- a/testing/buildbot/chromium.android.fyi.json
+++ b/testing/buildbot/chromium.android.fyi.json
@@ -5230,7 +5230,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M100",
-              "revision": "version:100.0.4896.14"
+              "revision": "version:100.0.4896.15"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -5398,7 +5398,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M99",
-              "revision": "version:99.0.4844.50"
+              "revision": "version:99.0.4844.52"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -5482,7 +5482,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M100",
-              "revision": "version:100.0.4896.14"
+              "revision": "version:100.0.4896.15"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -5650,7 +5650,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M99",
-              "revision": "version:99.0.4844.50"
+              "revision": "version:99.0.4844.52"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
diff --git a/testing/buildbot/chromium.android.json b/testing/buildbot/chromium.android.json
index 89f5688e..c5a7bfb 100644
--- a/testing/buildbot/chromium.android.json
+++ b/testing/buildbot/chromium.android.json
@@ -41650,7 +41650,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M100",
-              "revision": "version:100.0.4896.14"
+              "revision": "version:100.0.4896.15"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -41818,7 +41818,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M99",
-              "revision": "version:99.0.4844.50"
+              "revision": "version:99.0.4844.52"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -41902,7 +41902,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M100",
-              "revision": "version:100.0.4896.14"
+              "revision": "version:100.0.4896.15"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -42070,7 +42070,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M99",
-              "revision": "version:99.0.4844.50"
+              "revision": "version:99.0.4844.52"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -42158,7 +42158,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M100",
-              "revision": "version:100.0.4896.14"
+              "revision": "version:100.0.4896.15"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -42326,7 +42326,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M99",
-              "revision": "version:99.0.4844.50"
+              "revision": "version:99.0.4844.52"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -42410,7 +42410,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M100",
-              "revision": "version:100.0.4896.14"
+              "revision": "version:100.0.4896.15"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -42578,7 +42578,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M99",
-              "revision": "version:99.0.4844.50"
+              "revision": "version:99.0.4844.52"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -42733,7 +42733,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M100",
-              "revision": "version:100.0.4896.14"
+              "revision": "version:100.0.4896.15"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -42901,7 +42901,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M99",
-              "revision": "version:99.0.4844.50"
+              "revision": "version:99.0.4844.52"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -42985,7 +42985,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M100",
-              "revision": "version:100.0.4896.14"
+              "revision": "version:100.0.4896.15"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -43153,7 +43153,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M99",
-              "revision": "version:99.0.4844.50"
+              "revision": "version:99.0.4844.52"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -43308,7 +43308,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M100",
-              "revision": "version:100.0.4896.14"
+              "revision": "version:100.0.4896.15"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -43476,7 +43476,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M99",
-              "revision": "version:99.0.4844.50"
+              "revision": "version:99.0.4844.52"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -43560,7 +43560,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M100",
-              "revision": "version:100.0.4896.14"
+              "revision": "version:100.0.4896.15"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -43728,7 +43728,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M99",
-              "revision": "version:99.0.4844.50"
+              "revision": "version:99.0.4844.52"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
diff --git a/testing/buildbot/internal.chromeos.fyi.json b/testing/buildbot/internal.chromeos.fyi.json
index 181bdc1..196cd46 100644
--- a/testing/buildbot/internal.chromeos.fyi.json
+++ b/testing/buildbot/internal.chromeos.fyi.json
@@ -1125,7 +1125,7 @@
       {
         "args": [],
         "cros_board": "octopus",
-        "cros_img": "octopus-release/R101-14531.0.0",
+        "cros_img": "octopus-release/R101-14535.0.0",
         "name": "lacros_fyi_tast_tests_OCTOPUS_LKGM",
         "swarming": {},
         "tast_expr": "(\"group:mainline\" && \"dep:lacros\" && !informational)",
@@ -1169,7 +1169,7 @@
       {
         "args": [],
         "cros_board": "octopus",
-        "cros_img": "octopus-release/R101-14531.0.0",
+        "cros_img": "octopus-release/R101-14535.0.0",
         "name": "ozone_unittests_OCTOPUS_LKGM",
         "swarming": {},
         "test": "ozone_unittests",
@@ -1217,7 +1217,7 @@
       {
         "args": [],
         "cros_board": "kevin",
-        "cros_img": "kevin-release/R101-14531.0.0",
+        "cros_img": "kevin-release/R101-14535.0.0",
         "name": "lacros_all_tast_tests_KEVIN_LKGM",
         "swarming": {},
         "tast_expr": "(\"group:mainline\" && \"dep:lacros\" && !informational)",
@@ -1228,7 +1228,7 @@
       {
         "args": [],
         "cros_board": "hana",
-        "cros_img": "hana-release/R101-14531.0.0",
+        "cros_img": "hana-release/R101-14535.0.0",
         "name": "lacros_all_tast_tests_HANA_LKGM",
         "swarming": {},
         "tast_expr": "(\"group:mainline\" && \"dep:lacros\" && !informational)",
@@ -1239,7 +1239,7 @@
       {
         "args": [],
         "cros_board": "kevin",
-        "cros_img": "kevin-release/R101-14531.0.0",
+        "cros_img": "kevin-release/R101-14535.0.0",
         "name": "ozone_unittests_KEVIN_LKGM",
         "swarming": {},
         "test": "ozone_unittests",
@@ -1249,7 +1249,7 @@
       {
         "args": [],
         "cros_board": "hana",
-        "cros_img": "hana-release/R101-14531.0.0",
+        "cros_img": "hana-release/R101-14535.0.0",
         "name": "ozone_unittests_HANA_LKGM",
         "swarming": {},
         "test": "ozone_unittests",
@@ -1259,7 +1259,7 @@
       {
         "args": [],
         "cros_board": "kevin",
-        "cros_img": "kevin-release/R101-14531.0.0",
+        "cros_img": "kevin-release/R101-14535.0.0",
         "name": "viz_unittests_KEVIN_LKGM",
         "swarming": {},
         "test": "viz_unittests",
@@ -1269,7 +1269,7 @@
       {
         "args": [],
         "cros_board": "hana",
-        "cros_img": "hana-release/R101-14531.0.0",
+        "cros_img": "hana-release/R101-14535.0.0",
         "name": "viz_unittests_HANA_LKGM",
         "swarming": {},
         "test": "viz_unittests",
diff --git a/testing/buildbot/variants.pyl b/testing/buildbot/variants.pyl
index 8244a40..bbbc418 100644
--- a/testing/buildbot/variants.pyl
+++ b/testing/buildbot/variants.pyl
@@ -387,7 +387,7 @@
         {
           'cipd_package': 'chromium/testing/weblayer-x86',
           'location': 'weblayer_instrumentation_test_M100',
-          'revision': 'version:100.0.4896.14',
+          'revision': 'version:100.0.4896.15',
         }
       ],
     },
@@ -411,7 +411,7 @@
         {
           'cipd_package': 'chromium/testing/weblayer-x86',
           'location': 'weblayer_instrumentation_test_M99',
-          'revision': 'version:99.0.4844.50',
+          'revision': 'version:99.0.4844.52',
         }
       ],
     },
@@ -459,7 +459,7 @@
         {
           'cipd_package': 'chromium/testing/weblayer-x86',
           'location': 'weblayer_instrumentation_test_M100',
-          'revision': 'version:100.0.4896.14',
+          'revision': 'version:100.0.4896.15',
         }
       ],
     },
@@ -483,7 +483,7 @@
         {
           'cipd_package': 'chromium/testing/weblayer-x86',
           'location': 'weblayer_instrumentation_test_M99',
-          'revision': 'version:99.0.4844.50',
+          'revision': 'version:99.0.4844.52',
         }
       ],
     },
@@ -531,7 +531,7 @@
         {
           'cipd_package': 'chromium/testing/weblayer-x86',
           'location': 'weblayer_instrumentation_test_M100',
-          'revision': 'version:100.0.4896.14',
+          'revision': 'version:100.0.4896.15',
         }
       ],
     },
@@ -555,7 +555,7 @@
         {
           'cipd_package': 'chromium/testing/weblayer-x86',
           'location': 'weblayer_instrumentation_test_M99',
-          'revision': 'version:99.0.4844.50',
+          'revision': 'version:99.0.4844.52',
         }
       ],
     },
@@ -587,8 +587,8 @@
   'CROS_ATLAS_LKGM': {
     'skylab': {
       'cros_board': 'atlas',
-      'cros_chrome_version': '100.0.4892.0',
-      'cros_img': 'atlas-release/R101-14531.0.0',
+      'cros_chrome_version': '101.0.4907.0',
+      'cros_img': 'atlas-release/R101-14535.0.0',
     },
     'enabled': True,
     'identifier': 'ATLAS_LKGM',
@@ -623,8 +623,8 @@
   'CROS_EVE_LKGM': {
     'skylab': {
       'cros_board': 'eve',
-      'cros_chrome_version': '100.0.4892.0',
-      'cros_img': 'eve-release/R101-14531.0.0',
+      'cros_chrome_version': '101.0.4907.0',
+      'cros_img': 'eve-release/R101-14535.0.0',
     },
     'enabled': True,
     'identifier': 'EVE_LKGM',
@@ -659,8 +659,8 @@
   'CROS_KEVIN_LKGM': {
     'skylab': {
       'cros_board': 'kevin',
-      'cros_chrome_version': '100.0.4892.0',
-      'cros_img': 'kevin-release/R101-14531.0.0',
+      'cros_chrome_version': '101.0.4907.0',
+      'cros_img': 'kevin-release/R101-14535.0.0',
     },
     'enabled': True,
     'identifier': 'KEVIN_LKGM',
@@ -668,8 +668,8 @@
   'CROS_HANA_LKGM': {
     'skylab': {
       'cros_board': 'hana',
-      'cros_chrome_version': '100.0.4892.0',
-      'cros_img': 'hana-release/R101-14531.0.0',
+      'cros_chrome_version': '101.0.4907.0',
+      'cros_img': 'hana-release/R101-14535.0.0',
     },
     'enabled': True,
     'identifier': 'HANA_LKGM',
@@ -677,8 +677,8 @@
   'CROS_OCTOPUS_LKGM': {
     'skylab': {
       'cros_board': 'octopus',
-      'cros_chrome_version': '100.0.4892.0',
-      'cros_img': 'octopus-release/R101-14531.0.0',
+      'cros_chrome_version': '101.0.4907.0',
+      'cros_img': 'octopus-release/R101-14535.0.0',
     },
     'enabled': True,
     'identifier': 'OCTOPUS_LKGM',
diff --git a/third_party/blink/perf_tests/css/HasSiblingDescendantInvalidation.html b/third_party/blink/perf_tests/css/HasSiblingDescendantInvalidation.html
index 6ec486b..8bf2b91 100644
--- a/third_party/blink/perf_tests/css/HasSiblingDescendantInvalidation.html
+++ b/third_party/blink/perf_tests/css/HasSiblingDescendantInvalidation.html
@@ -46,7 +46,6 @@
 {
   child0_0.classList.toggle("c");
   container.offsetHeight; // force recalc style
-  document.querySelectorAll(".a").forEach(function(e) {
   child0_0.classList.toggle("c");
   container.offsetHeight; // force recalc style
 
diff --git a/third_party/blink/public/devtools_protocol/browser_protocol.pdl b/third_party/blink/public/devtools_protocol/browser_protocol.pdl
index 5f83e89..c993fa4 100644
--- a/third_party/blink/public/devtools_protocol/browser_protocol.pdl
+++ b/third_party/blink/public/devtools_protocol/browser_protocol.pdl
@@ -6540,6 +6540,7 @@
     enum
       rgb
       hsl
+      hwb
       hex
 
   # Configurations for Persistent Grid Highlight
diff --git a/third_party/blink/renderer/bindings/generated_in_core.gni b/third_party/blink/renderer/bindings/generated_in_core.gni
index a4f4bd65..b42975ba 100644
--- a/third_party/blink/renderer/bindings/generated_in_core.gni
+++ b/third_party/blink/renderer/bindings/generated_in_core.gni
@@ -615,6 +615,8 @@
   "$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_css_grouping_rule.h",
   "$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_css_hsl.cc",
   "$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_css_hsl.h",
+  "$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_css_hwb.cc",
+  "$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_css_hwb.h",
   "$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_css_image_value.cc",
   "$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_css_image_value.h",
   "$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_css_import_rule.cc",
diff --git a/third_party/blink/renderer/bindings/idl_in_core.gni b/third_party/blink/renderer/bindings/idl_in_core.gni
index eaccdd3..c40506e0 100644
--- a/third_party/blink/renderer/bindings/idl_in_core.gni
+++ b/third_party/blink/renderer/bindings/idl_in_core.gni
@@ -74,6 +74,7 @@
           "//third_party/blink/renderer/core/css/css_supports_rule.idl",
           "//third_party/blink/renderer/core/css/cssom/css_color_value.idl",
           "//third_party/blink/renderer/core/css/cssom/css_hsl.idl",
+          "//third_party/blink/renderer/core/css/cssom/css_hwb.idl",
           "//third_party/blink/renderer/core/css/cssom/css_image_value.idl",
           "//third_party/blink/renderer/core/css/cssom/css_keyword_value.idl",
           "//third_party/blink/renderer/core/css/cssom/css_math_clamp.idl",
diff --git a/third_party/blink/renderer/core/css/build.gni b/third_party/blink/renderer/core/css/build.gni
index b7adc21..8b22dfd0 100644
--- a/third_party/blink/renderer/core/css/build.gni
+++ b/third_party/blink/renderer/core/css/build.gni
@@ -271,6 +271,8 @@
   "cssom/css_color_value.h",
   "cssom/css_hsl.cc",
   "cssom/css_hsl.h",
+  "cssom/css_hwb.cc",
+  "cssom/css_hwb.h",
   "cssom/css_keyword_value.cc",
   "cssom/css_keyword_value.h",
   "cssom/css_math_clamp.cc",
diff --git a/third_party/blink/renderer/core/css/css.dict b/third_party/blink/renderer/core/css/css.dict
index 8f74e07..f957f19 100644
--- a/third_party/blink/renderer/core/css/css.dict
+++ b/third_party/blink/renderer/core/css/css.dict
@@ -711,6 +711,8 @@
 "rgba"
 "hsl"
 "hsla"
+"hwb"
+"hwba"
 "-internal-light-dark"
 "matrix"
 "matrix3d"
diff --git a/third_party/blink/renderer/core/css/css_value_keywords.json5 b/third_party/blink/renderer/core/css/css_value_keywords.json5
index 3959b24..14ac860c 100644
--- a/third_party/blink/renderer/core/css/css_value_keywords.json5
+++ b/third_party/blink/renderer/core/css/css_value_keywords.json5
@@ -1253,6 +1253,8 @@
     "rgba",
     "hsl",
     "hsla",
+    "hwb",
+    "hwba",
     "-internal-light-dark",
 
     // transform
diff --git a/third_party/blink/renderer/core/css/cssom/css_color_value.cc b/third_party/blink/renderer/core/css/cssom/css_color_value.cc
index eea5a7fb..4ed74d1 100644
--- a/third_party/blink/renderer/core/css/cssom/css_color_value.cc
+++ b/third_party/blink/renderer/core/css/cssom/css_color_value.cc
@@ -5,6 +5,7 @@
 #include "third_party/blink/renderer/core/css/cssom/css_color_value.h"
 #include "third_party/blink/renderer/core/css/css_color.h"
 #include "third_party/blink/renderer/core/css/cssom/css_hsl.h"
+#include "third_party/blink/renderer/core/css/cssom/css_hwb.h"
 #include "third_party/blink/renderer/core/css/cssom/css_rgb.h"
 #include "third_party/blink/renderer/core/css/cssom/css_unit_value.h"
 #include "third_party/blink/renderer/core/css/cssom/cssom_types.h"
@@ -19,6 +20,10 @@
   return MakeGarbageCollected<CSSHSL>(ToColor());
 }
 
+CSSHWB* CSSColorValue::toHWB() const {
+  return MakeGarbageCollected<CSSHWB>(ToColor());
+}
+
 const CSSValue* CSSColorValue::ToCSSValue() const {
   return cssvalue::CSSColor::Create(ToColor().Rgb());
 }
diff --git a/third_party/blink/renderer/core/css/cssom/css_color_value.h b/third_party/blink/renderer/core/css/cssom/css_color_value.h
index eb5c4db..dad3cc7 100644
--- a/third_party/blink/renderer/core/css/cssom/css_color_value.h
+++ b/third_party/blink/renderer/core/css/cssom/css_color_value.h
@@ -17,6 +17,7 @@
 class CSSNumericValue;
 class CSSRGB;
 class CSSHSL;
+class CSSHWB;
 
 class CORE_EXPORT CSSColorValue : public CSSStyleValue {
   DEFINE_WRAPPERTYPEINFO();
@@ -24,6 +25,7 @@
  public:
   CSSRGB* toRGB() const;
   CSSHSL* toHSL() const;
+  CSSHWB* toHWB() const;
 
   const CSSValue* ToCSSValue() const override;
 
diff --git a/third_party/blink/renderer/core/css/cssom/css_color_value.idl b/third_party/blink/renderer/core/css/cssom/css_color_value.idl
index 5c83d62..9eec2f6 100644
--- a/third_party/blink/renderer/core/css/cssom/css_color_value.idl
+++ b/third_party/blink/renderer/core/css/cssom/css_color_value.idl
@@ -11,4 +11,5 @@
 ] interface CSSColorValue {
   CSSRGB toRGB();
   CSSHSL toHSL();
+  CSSHWB toHWB();
 };
diff --git a/third_party/blink/renderer/core/css/cssom/css_hwb.cc b/third_party/blink/renderer/core/css/cssom/css_hwb.cc
new file mode 100644
index 0000000..a520acf6
--- /dev/null
+++ b/third_party/blink/renderer/core/css/cssom/css_hwb.cc
@@ -0,0 +1,108 @@
+// 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.
+
+#include "third_party/blink/renderer/core/css/cssom/css_hwb.h"
+
+#include "third_party/blink/renderer/bindings/core/v8/v8_union_cssnumericvalue_double.h"
+#include "third_party/blink/renderer/core/css/cssom/css_unit_value.h"
+#include "third_party/blink/renderer/core/css/cssom/cssom_types.h"
+#include "third_party/blink/renderer/platform/bindings/exception_state.h"
+#include "third_party/blink/renderer/platform/graphics/color.h"
+
+namespace blink {
+
+CSSHWB::CSSHWB(const Color& input_color) {
+  double h, w, b;
+  input_color.GetHWB(h, w, b);
+  h_ = CSSUnitValue::Create(h * 360, CSSPrimitiveValue::UnitType::kDegrees);
+  w_ = CSSUnitValue::Create(w * 100, CSSPrimitiveValue::UnitType::kPercentage);
+  b_ = CSSUnitValue::Create(b * 100, CSSPrimitiveValue::UnitType::kPercentage);
+
+  double a = double(input_color.Alpha()) / 255;
+  alpha_ =
+      CSSUnitValue::Create(a * 100, CSSPrimitiveValue::UnitType::kPercentage);
+}
+
+CSSHWB::CSSHWB(CSSNumericValue* h,
+               CSSNumericValue* w,
+               CSSNumericValue* b,
+               CSSNumericValue* alpha)
+    : h_(h), w_(w), b_(b), alpha_(alpha) {}
+
+CSSHWB* CSSHWB::Create(CSSNumericValue* hue,
+                       const V8CSSNumberish* white,
+                       const V8CSSNumberish* black,
+                       const V8CSSNumberish* alpha,
+                       ExceptionState& exception_state) {
+  if (!CSSOMTypes::IsCSSStyleValueAngle(*hue)) {
+    exception_state.ThrowTypeError("Hue must be a CSS angle type.");
+    return nullptr;
+  }
+
+  CSSNumericValue* w;
+  CSSNumericValue* b;
+  CSSNumericValue* a;
+
+  if (!(w = ToPercentage(white)) || !(b = ToPercentage(black)) ||
+      !(a = ToPercentage(alpha))) {
+    exception_state.ThrowTypeError(
+        "black, white and alpha values must all be percentages.");
+    return nullptr;
+  }
+
+  return MakeGarbageCollected<CSSHWB>(hue, w, b, a);
+}
+
+V8CSSNumberish* CSSHWB::w() const {
+  return MakeGarbageCollected<V8CSSNumberish>(w_);
+}
+
+V8CSSNumberish* CSSHWB::b() const {
+  return MakeGarbageCollected<V8CSSNumberish>(b_);
+}
+
+V8CSSNumberish* CSSHWB::alpha() const {
+  return MakeGarbageCollected<V8CSSNumberish>(alpha_);
+}
+
+void CSSHWB::setH(CSSNumericValue* hue, ExceptionState& exception_state) {
+  if (CSSOMTypes::IsCSSStyleValueAngle(*hue))
+    h_ = hue;
+  else
+    exception_state.ThrowTypeError("Hue must be a CSS angle type.");
+}
+
+void CSSHWB::setW(const V8CSSNumberish* white,
+                  ExceptionState& exception_state) {
+  if (auto* value = ToPercentage(white))
+    w_ = value;
+  else
+    exception_state.ThrowTypeError("White must be a percentage.");
+}
+
+void CSSHWB::setB(const V8CSSNumberish* black,
+                  ExceptionState& exception_state) {
+  if (auto* value = ToPercentage(black))
+    b_ = value;
+  else
+    exception_state.ThrowTypeError("Black must be a percentage.");
+}
+
+void CSSHWB::setAlpha(const V8CSSNumberish* alpha,
+                      ExceptionState& exception_state) {
+  if (auto* value = ToPercentage(alpha))
+    alpha_ = value;
+  else
+    exception_state.ThrowTypeError("Alpha must be a percentage.");
+}
+
+Color CSSHWB::ToColor() const {
+  // MakeRGBAFromHSLA expects hue in the range [0, 6)
+  return MakeRGBAFromHWBA(
+      h_->to(CSSPrimitiveValue::UnitType::kDegrees)->value() / 60,
+      ComponentToColorInput(w_), ComponentToColorInput(b_),
+      ComponentToColorInput(alpha_));
+}
+
+}  // namespace blink
diff --git a/third_party/blink/renderer/core/css/cssom/css_hwb.h b/third_party/blink/renderer/core/css/cssom/css_hwb.h
new file mode 100644
index 0000000..6b35af5
--- /dev/null
+++ b/third_party/blink/renderer/core/css/cssom/css_hwb.h
@@ -0,0 +1,64 @@
+// 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.
+
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_CSS_CSSOM_CSS_HWB_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_CSS_CSSOM_CSS_HWB_H_
+
+#include "third_party/blink/renderer/core/core_export.h"
+#include "third_party/blink/renderer/core/css/cssom/css_color_value.h"
+#include "third_party/blink/renderer/core/css/cssom/css_numeric_value.h"
+#include "third_party/blink/renderer/platform/bindings/script_wrappable.h"
+
+namespace blink {
+
+// Defines a javascript HSL color interface.
+// https://drafts.css-houdini.org/css-typed-om-1/#csshwb
+class CORE_EXPORT CSSHWB final : public CSSColorValue {
+  DEFINE_WRAPPERTYPEINFO();
+
+ public:
+  // Constructor defined in the IDL.
+  static CSSHWB* Create(CSSNumericValue* hue,
+                        const V8CSSNumberish* white,
+                        const V8CSSNumberish* black,
+                        const V8CSSNumberish* alpha,
+                        ExceptionState& exception_state);
+
+  // Internal constructor used by blink.
+  explicit CSSHWB(const Color&);
+  CSSHWB(CSSNumericValue*,
+         CSSNumericValue*,
+         CSSNumericValue*,
+         CSSNumericValue*);
+
+  // Getters and setters from the IDL
+  Member<CSSNumericValue> h() const { return h_; }
+  V8CSSNumberish* w() const;
+  V8CSSNumberish* b() const;
+  V8CSSNumberish* alpha() const;
+  void setH(CSSNumericValue* h, ExceptionState& exception_state);
+  void setW(const V8CSSNumberish* w, ExceptionState& exception_state);
+  void setB(const V8CSSNumberish* b, ExceptionState& exception_state);
+  void setAlpha(const V8CSSNumberish* alpha, ExceptionState& exception_state);
+
+  void Trace(Visitor* visitor) const override {
+    visitor->Trace(h_);
+    visitor->Trace(w_);
+    visitor->Trace(b_);
+    visitor->Trace(alpha_);
+    CSSColorValue::Trace(visitor);
+  }
+
+  Color ToColor() const final;
+
+ private:
+  Member<CSSNumericValue> h_;
+  Member<CSSNumericValue> w_;
+  Member<CSSNumericValue> b_;
+  Member<CSSNumericValue> alpha_;
+};
+
+}  // namespace blink
+
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_CSS_CSSOM_CSS_HWB_H_
diff --git a/third_party/blink/renderer/core/css/cssom/css_hwb.idl b/third_party/blink/renderer/core/css/cssom/css_hwb.idl
new file mode 100644
index 0000000..3dcdea1
--- /dev/null
+++ b/third_party/blink/renderer/core/css/cssom/css_hwb.idl
@@ -0,0 +1,18 @@
+// 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.
+
+// Represents an hwb color.
+// https://drafts.css-houdini.org/css-typed-om-1/#csshwb
+[
+  Exposed = (Window, LayoutWorklet, PaintWorklet), RuntimeEnabled =
+  CSSColorTypedOM
+] interface CSSHWB : CSSColorValue {
+  [RaisesException] constructor(CSSNumericValue h, CSSNumberish w,
+                                CSSNumberish b,
+                                optional CSSNumberish alpha = 1);
+  [RaisesException = Setter] attribute CSSNumericValue h;
+  [RaisesException = Setter] attribute CSSNumberish w;
+  [RaisesException = Setter] attribute CSSNumberish b;
+  [RaisesException = Setter] attribute CSSNumberish alpha;
+};
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 45718cc1..ddb7b66 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
@@ -1087,6 +1087,27 @@
   return ConsumeMathFunctionAngle(range, context);
 }
 
+// ConsumeHue takes an angle as input (as angle or as plain number in degrees)
+// and returns a number in the range [0.0, 6.0].
+CSSPrimitiveValue* ConsumeHue(
+    CSSParserTokenRange& range,
+    const CSSParserContext& context,
+    absl::optional<WebFeature> unitless_zero_feature) {
+  CSSPrimitiveValue* value = ConsumeAngle(range, context, absl::nullopt);
+  double angle_value;
+  if (!value) {
+    value = ConsumeNumber(range, context, CSSPrimitiveValue::ValueRange::kAll);
+    if (!value)
+      return nullptr;
+    angle_value = value->GetDoubleValue();
+  } else {
+    angle_value = value->ComputeDegrees();
+  }
+  return CSSNumericLiteralValue::Create(
+      fmod(fmod(angle_value, 360.0) + 360.0, 360.0) / 60.0,
+      CSSPrimitiveValue::UnitType::kNumber);
+}
+
 CSSPrimitiveValue* ConsumeTime(CSSParserTokenRange& range,
                                const CSSParserContext& context,
                                CSSPrimitiveValue::ValueRange value_range) {
@@ -1351,19 +1372,12 @@
   DCHECK(range.Peek().FunctionId() == CSSValueID::kHsl ||
          range.Peek().FunctionId() == CSSValueID::kHsla);
   CSSParserTokenRange args = ConsumeFunction(range);
-  CSSPrimitiveValue* hsl_value = ConsumeAngle(args, context, absl::nullopt);
-  double angle_value;
-  if (!hsl_value) {
-    hsl_value =
-        ConsumeNumber(args, context, CSSPrimitiveValue::ValueRange::kAll);
-    if (!hsl_value)
-      return false;
-    angle_value = hsl_value->GetDoubleValue();
-  } else {
-    angle_value = hsl_value->ComputeDegrees();
-  }
+  CSSPrimitiveValue* hsl_value = ConsumeHue(args, context, absl::nullopt);
+  if (!hsl_value)
+    return false;
   double color_array[3];
-  color_array[0] = fmod(fmod(angle_value, 360.0) + 360.0, 360.0) / 60.0;
+  color_array[0] = hsl_value->GetDoubleValue();
+
   bool requires_commas = false;
   for (int i = 1; i < 3; i++) {
     if (ConsumeCommaIncludingWhitespace(args)) {
@@ -1404,6 +1418,47 @@
   return args.AtEnd();
 }
 
+static bool ParseHWBParameters(CSSParserTokenRange& range,
+                               const CSSParserContext& context,
+                               RGBA32& result) {
+  DCHECK(range.Peek().FunctionId() == CSSValueID::kHwb ||
+         range.Peek().FunctionId() == CSSValueID::kHwba);
+  CSSParserTokenRange args = ConsumeFunction(range);
+  // Consume hue, an angle.
+  CSSPrimitiveValue* value = ConsumeHue(args, context, absl::nullopt);
+  if (!value)
+    return false;
+  double hue = value->GetDoubleValue();
+
+  // Consume two percentage values.
+  double percentages[2];
+  for (int i = 0; i < 2; i++) {
+    value = ConsumePercent(args, context, CSSPrimitiveValue::ValueRange::kAll);
+    if (!value)
+      return false;
+    double double_value = value->GetDoubleValue();
+    percentages[i] = ClampTo<double>(double_value, 0.0, 100.0) /
+                     100.0;  // Needs to be a value between 0 and 1.0.
+  }
+
+  // If present, consume the alpha value.
+  double alpha = 1.0;
+  if (ConsumeSlashIncludingWhitespace(args)) {
+    if (!ConsumeNumberRaw(args, context, alpha)) {
+      CSSPrimitiveValue* alpha_percent =
+          ConsumePercent(args, context, CSSPrimitiveValue::ValueRange::kAll);
+      if (!alpha_percent)
+        return false;
+      else
+        alpha = alpha_percent->GetDoubleValue() / 100.0;
+    }
+    alpha = ClampTo<double>(alpha, 0.0, 1.0);
+  }
+
+  result = MakeRGBAFromHWBA(hue, percentages[0], percentages[1], alpha);
+  return args.AtEnd();
+}
+
 static bool ParseHexColor(CSSParserTokenRange& range,
                           RGBA32& result,
                           bool accept_quirky_colors) {
@@ -1443,15 +1498,26 @@
 static bool ParseColorFunction(CSSParserTokenRange& range,
                                const CSSParserContext& context,
                                RGBA32& result) {
-  CSSValueID function_id = range.Peek().FunctionId();
-  if (function_id < CSSValueID::kRgb || function_id > CSSValueID::kHsla)
-    return false;
   CSSParserTokenRange color_range = range;
-  if ((function_id <= CSSValueID::kRgba &&
-       !ParseRGBParameters(color_range, context, result)) ||
-      (function_id >= CSSValueID::kHsl &&
-       !ParseHSLParameters(color_range, context, result)))
-    return false;
+  switch (range.Peek().FunctionId()) {
+    case CSSValueID::kRgb:
+    case CSSValueID::kRgba:
+      if (!ParseRGBParameters(color_range, context, result))
+        return false;
+      break;
+    case CSSValueID::kHsl:
+    case CSSValueID::kHsla:
+      if (!ParseHSLParameters(color_range, context, result))
+        return false;
+      break;
+    case CSSValueID::kHwb:
+    case CSSValueID::kHwba:
+      if (!ParseHWBParameters(color_range, context, result))
+        return false;
+      break;
+    default:
+      return false;
+  }
   range = color_range;
   return true;
 }
diff --git a/third_party/blink/renderer/core/css/properties/css_parsing_utils.h b/third_party/blink/renderer/core/css/properties/css_parsing_utils.h
index fed61db..c41796e 100644
--- a/third_party/blink/renderer/core/css/properties/css_parsing_utils.h
+++ b/third_party/blink/renderer/core/css/properties/css_parsing_utils.h
@@ -128,6 +128,9 @@
     absl::optional<WebFeature> unitless_zero_feature,
     double minimum_value,
     double maximum_value);
+CSSPrimitiveValue* ConsumeHue(CSSParserTokenRange&,
+                              const CSSParserContext&,
+                              absl::optional<WebFeature> unitless_zero_feature);
 CSSPrimitiveValue* ConsumeTime(CSSParserTokenRange&,
                                const CSSParserContext&,
                                CSSPrimitiveValue::ValueRange);
diff --git a/third_party/blink/renderer/core/inspector/inspector_highlight.cc b/third_party/blink/renderer/core/inspector/inspector_highlight.cc
index 3ad3081f..6e72d67 100644
--- a/third_party/blink/renderer/core/inspector/inspector_highlight.cc
+++ b/third_party/blink/renderer/core/inspector/inspector_highlight.cc
@@ -1947,6 +1947,9 @@
     case ColorFormat::kHsl:
       object->setString("colorFormat", "hsl");
       break;
+    case ColorFormat::kHwb:
+      object->setString("colorFormat", "hwb");
+      break;
     case ColorFormat::kHex:
       object->setString("colorFormat", "hex");
       break;
diff --git a/third_party/blink/renderer/core/inspector/inspector_highlight.h b/third_party/blink/renderer/core/inspector/inspector_highlight.h
index ba4e3f94..5c8d7230 100644
--- a/third_party/blink/renderer/core/inspector/inspector_highlight.h
+++ b/third_party/blink/renderer/core/inspector/inspector_highlight.h
@@ -18,7 +18,7 @@
 
 class Color;
 
-enum class ColorFormat { kRgb, kHex, kHsl };
+enum class ColorFormat { kRgb, kHex, kHsl, kHwb };
 enum class ContrastAlgorithm { kAa, kAaa, kApca };
 
 struct CORE_EXPORT LineStyle {
diff --git a/third_party/blink/renderer/core/inspector/inspector_overlay_agent.cc b/third_party/blink/renderer/core/inspector/inspector_overlay_agent.cc
index 6bdf410..7a2c292a 100644
--- a/third_party/blink/renderer/core/inspector/inspector_overlay_agent.cc
+++ b/third_party/blink/renderer/core/inspector/inspector_overlay_agent.cc
@@ -928,6 +928,8 @@
   namespace ColorFormatEnum = protocol::Overlay::ColorFormatEnum;
   if (format == ColorFormatEnum::Hsl) {
     config->color_format = ColorFormat::kHsl;
+  } else if (format == ColorFormatEnum::Hwb) {
+    config->color_format = ColorFormat::kHwb;
   } else if (format == ColorFormatEnum::Rgb) {
     config->color_format = ColorFormat::kRgb;
   } else {
@@ -1582,7 +1584,7 @@
   String format = config->getColorFormat("hex");
 
   if (format != ColorFormatEnum::Rgb && format != ColorFormatEnum::Hex &&
-      format != ColorFormatEnum::Hsl) {
+      format != ColorFormatEnum::Hsl && format != ColorFormatEnum::Hwb) {
     return Response::InvalidParams("Unknown color format");
   }
 
@@ -1838,6 +1840,8 @@
 
   if (format == ColorFormatEnum::Hsl) {
     highlight_config->color_format = ColorFormat::kHsl;
+  } else if (format == ColorFormatEnum::Hwb) {
+    highlight_config->color_format = ColorFormat::kHwb;
   } else if (format == ColorFormatEnum::Rgb) {
     highlight_config->color_format = ColorFormat::kRgb;
   } else {
diff --git a/third_party/blink/renderer/core/paint/ng/ng_box_fragment_painter.cc b/third_party/blink/renderer/core/paint/ng/ng_box_fragment_painter.cc
index f212b4c..38d8d3c 100644
--- a/third_party/blink/renderer/core/paint/ng/ng_box_fragment_painter.cc
+++ b/third_party/blink/renderer/core/paint/ng/ng_box_fragment_painter.cc
@@ -2310,11 +2310,6 @@
   }
   // Check descendants of this fragment because floats may be in the
   // |NGFragmentItems| of the descendants.
-  if (hit_test.action == kHitTestFloat &&
-      box_fragment_.HasFloatingDescendantsForPaint()) {
-    return HitTestFloatingChildren(hit_test, box_fragment_, accumulated_offset);
-  }
-
   if (hit_test.action == kHitTestFloat) {
     return box_fragment_.HasFloatingDescendantsForPaint() &&
            HitTestFloatingChildren(hit_test, box_fragment_, accumulated_offset);
diff --git a/third_party/blink/renderer/platform/graphics/color.cc b/third_party/blink/renderer/platform/graphics/color.cc
index 274b596..77fdb16 100644
--- a/third_party/blink/renderer/platform/graphics/color.cc
+++ b/third_party/blink/renderer/platform/graphics/color.cc
@@ -79,6 +79,32 @@
   return temp1;
 }
 
+// Explanation of this algorithm can be found in the CSS Color 4 Module
+// specification at https://drafts.csswg.org/css-color-4/#hsl-to-rgb with
+// further explanation available at http://en.wikipedia.org/wiki/HSL_color_space
+
+// Hue is in the range of 0.0 to 6.0, the remainder are in the range 0.0 to 1.0.
+// Out parameters r, g, and b are also returned in range 0.0 to 1.0.
+void HSLToRGB(double hue,
+              double saturation,
+              double lightness,
+              double& r,
+              double& g,
+              double& b) {
+  if (!saturation) {
+    r = g = b = lightness;
+  } else {
+    double temp2 = lightness <= 0.5
+                       ? lightness * (1.0 + saturation)
+                       : lightness + saturation - lightness * saturation;
+    double temp1 = 2.0 * lightness - temp2;
+
+    r = CalcHue(temp1, temp2, hue + 2.0);
+    g = CalcHue(temp1, temp2, hue);
+    b = CalcHue(temp1, temp2, hue - 2.0);
+  }
+}
+
 int ColorFloatToRGBAByte(float f) {
   return ClampTo(static_cast<int>(lroundf(255.0f * f)), 0, 255);
 }
@@ -156,33 +182,43 @@
          ColorFloatToRGBAByte(g) << 8 | ColorFloatToRGBAByte(b);
 }
 
-// Explanation of this algorithm can be found in the CSS Color 4 Module
-// specification at https://drafts.csswg.org/css-color-4/#hsl-to-rgb with
-// further explanation available at http://en.wikipedia.org/wiki/HSL_color_space
-
 // Hue is in the range of 0 to 6.0, the remainder are in the range 0 to 1.0
 RGBA32 MakeRGBAFromHSLA(double hue,
                         double saturation,
                         double lightness,
                         double alpha) {
   const double scale_factor = 255.0;
+  double r, g, b;
+  HSLToRGB(hue, saturation, lightness, r, g, b);
 
-  if (!saturation) {
-    int grey_value = static_cast<int>(round(lightness * scale_factor));
-    return MakeRGBA(grey_value, grey_value, grey_value,
+  return MakeRGBA(static_cast<int>(round(r * scale_factor)),
+                  static_cast<int>(round(g * scale_factor)),
+                  static_cast<int>(round(b * scale_factor)),
+                  static_cast<int>(round(alpha * scale_factor)));
+}
+
+// Hue is in the range of 0 to 6.0, the remainder are in the range 0 to 1.0
+RGBA32 MakeRGBAFromHWBA(double hue, double white, double black, double alpha) {
+  const double scale_factor = 255.0;
+
+  if (white + black >= 1.0) {
+    int gray = static_cast<int>(round(white / (white + black) * scale_factor));
+    return MakeRGBA(gray, gray, gray,
                     static_cast<int>(round(alpha * scale_factor)));
   }
 
-  double temp2 = lightness <= 0.5
-                     ? lightness * (1.0 + saturation)
-                     : lightness + saturation - lightness * saturation;
-  double temp1 = 2.0 * lightness - temp2;
+  // Leverage HSL to RGB conversion to find HWB to RGB, see
+  // https://drafts.csswg.org/css-color-4/#hwb-to-rgb
+  double r, g, b;
+  HSLToRGB(hue, 1.0, 0.5, r, g, b);
+  r += white - (white + black) * r;
+  g += white - (white + black) * g;
+  b += white - (white + black) * b;
 
-  return MakeRGBA(
-      static_cast<int>(round(CalcHue(temp1, temp2, hue + 2.0) * scale_factor)),
-      static_cast<int>(round(CalcHue(temp1, temp2, hue) * scale_factor)),
-      static_cast<int>(round(CalcHue(temp1, temp2, hue - 2.0) * scale_factor)),
-      static_cast<int>(round(alpha * scale_factor)));
+  return MakeRGBA(static_cast<int>(round(r * scale_factor)),
+                  static_cast<int>(round(g * scale_factor)),
+                  static_cast<int>(round(b * scale_factor)),
+                  static_cast<int>(round(alpha * scale_factor)));
 }
 
 RGBA32 MakeRGBAFromCMYKA(float c, float m, float y, float k, float a) {
@@ -370,15 +406,16 @@
   a = Alpha() / 255.0;
 }
 
-void Color::GetHSL(double& hue, double& saturation, double& lightness) const {
-  // http://en.wikipedia.org/wiki/HSL_color_space. This is a direct copy of
-  // the algorithm therein, although it's 360^o based and we end up wanting
-  // [0...1) based. It's clearer if we stick to 360^o until the end.
+// Hue, max and min are returned in range of 0.0 to 1.0.
+void Color::GetHueMaxMin(double& hue, double& max, double& min) const {
+  // This is a helper function to calculate intermediate quantities needed
+  // for conversion to HSL or HWB formats. The algorithm contained below
+  // is a copy of http://en.wikipedia.org/wiki/HSL_color_space.
   double r = static_cast<double>(Red()) / 255.0;
   double g = static_cast<double>(Green()) / 255.0;
   double b = static_cast<double>(Blue()) / 255.0;
-  double max = std::max(std::max(r, g), b);
-  double min = std::min(std::min(r, g), b);
+  max = std::max(std::max(r, g), b);
+  min = std::min(std::min(r, g), b);
 
   if (max == min)
     hue = 0.0;
@@ -389,11 +426,16 @@
   else
     hue = (60.0 * ((r - g) / (max - min))) + 240.0;
 
+  // Adjust for rounding errors and scale to interval 0.0 to 1.0.
   if (hue >= 360.0)
     hue -= 360.0;
-
-  // makeRGBAFromHSLA assumes that hue is in [0...1).
   hue /= 360.0;
+}
+
+// Hue, saturation and lightness are returned in range of 0.0 to 1.0.
+void Color::GetHSL(double& hue, double& saturation, double& lightness) const {
+  double max, min;
+  GetHueMaxMin(hue, max, min);
 
   lightness = 0.5 * (max + min);
   if (max == min)
@@ -404,6 +446,15 @@
     saturation = ((max - min) / (2.0 - (max + min)));
 }
 
+// Output parameters hue, white and black are in the range 0.0 to 1.0.
+void Color::GetHWB(double& hue, double& white, double& black) const {
+  // https://drafts.csswg.org/css-color-4/#the-hwb-notation. This is an
+  // implementation of the algorithm to transform sRGB to HWB.
+  double max;
+  GetHueMaxMin(hue, max, white);
+  black = 1.0 - max;
+}
+
 Color ColorFromPremultipliedARGB(RGBA32 pixel_color) {
   int alpha = AlphaChannel(pixel_color);
   if (alpha && alpha < 255) {
diff --git a/third_party/blink/renderer/platform/graphics/color.h b/third_party/blink/renderer/platform/graphics/color.h
index e50a866..ce71975 100644
--- a/third_party/blink/renderer/platform/graphics/color.h
+++ b/third_party/blink/renderer/platform/graphics/color.h
@@ -44,6 +44,7 @@
 
 PLATFORM_EXPORT RGBA32 MakeRGBA32FromFloats(float r, float g, float b, float a);
 PLATFORM_EXPORT RGBA32 MakeRGBAFromHSLA(double h, double s, double l, double a);
+PLATFORM_EXPORT RGBA32 MakeRGBAFromHWBA(double h, double w, double b, double a);
 PLATFORM_EXPORT RGBA32
 MakeRGBAFromCMYKA(float c, float m, float y, float k, float a);
 
@@ -121,6 +122,7 @@
   void GetRGBA(float& r, float& g, float& b, float& a) const;
   void GetRGBA(double& r, double& g, double& b, double& a) const;
   void GetHSL(double& h, double& s, double& l) const;
+  void GetHWB(double& h, double& w, double& b) const;
 
   explicit operator SkColor() const;
 
@@ -145,6 +147,8 @@
   static const RGBA32 kTransparent = 0x00000000;
 
  private:
+  void GetHueMaxMin(double&, double&, double&) const;
+
   RGBA32 color_;
 };
 
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations
index f33c83e..0f7ea39 100644
--- a/third_party/blink/web_tests/TestExpectations
+++ b/third_party/blink/web_tests/TestExpectations
@@ -1907,11 +1907,6 @@
 crbug.com/1068610 external/wpt/css/css-color/rec2020-003.html [ Failure ]
 crbug.com/1068610 external/wpt/css/css-color/rec2020-004.html [ Failure ]
 crbug.com/1068610 external/wpt/css/css-color/rec2020-005.html [ Failure ]
-crbug.com/1068610 external/wpt/css/css-color/hwb-001.html [ Failure ]
-crbug.com/1068610 external/wpt/css/css-color/hwb-002.html [ Failure ]
-crbug.com/1068610 external/wpt/css/css-color/hwb-003.html [ Failure ]
-crbug.com/1068610 external/wpt/css/css-color/hwb-004.html [ Failure ]
-crbug.com/1068610 external/wpt/css/css-color/hwb-005.html [ Failure ]
 crbug.com/1068610 external/wpt/css/css-color/xyz-001.html [ Failure ]
 crbug.com/1068610 external/wpt/css/css-color/xyz-002.html [ Failure ]
 crbug.com/1068610 external/wpt/css/css-color/xyz-003.html [ Failure ]
diff --git a/third_party/blink/web_tests/external/wpt/css/css-color/color-resolving-hwb-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-color/color-resolving-hwb-expected.txt
deleted file mode 100644
index 3f4cd36c..0000000
--- a/third_party/blink/web_tests/external/wpt/css/css-color/color-resolving-hwb-expected.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-This is a testharness.js-based test.
-FAIL HWB value should parse and round correctly: hwb(0 50% 50%) assert_equals: expected "rgb(128, 128, 128)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(30 50% 50%) assert_equals: expected "rgb(128, 128, 128)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(60 50% 50%) assert_equals: expected "rgb(128, 128, 128)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(90 50% 50%) assert_equals: expected "rgb(128, 128, 128)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(120 50% 50%) assert_equals: expected "rgb(128, 128, 128)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(180 50% 50%) assert_equals: expected "rgb(128, 128, 128)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(210 50% 50%) assert_equals: expected "rgb(128, 128, 128)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(240 50% 50%) assert_equals: expected "rgb(128, 128, 128)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(270 50% 50%) assert_equals: expected "rgb(128, 128, 128)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(300 50% 50%) assert_equals: expected "rgb(128, 128, 128)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(330 50% 50%) assert_equals: expected "rgb(128, 128, 128)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(360 50% 50%) assert_equals: expected "rgb(128, 128, 128)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(90deg 50% 50%) assert_equals: expected "rgb(128, 128, 128)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(90 0% 50%) assert_equals: expected "rgb(64, 128, 0)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(90 12.5% 50%) assert_equals: expected "rgb(80, 128, 32)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(90 25% 50%) assert_equals: expected "rgb(96, 128, 64)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(90 37.5% 50%) assert_equals: expected "rgb(112, 128, 96)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(90 62.5% 50%) assert_equals: expected "rgb(142, 142, 142)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(90 75% 50%) assert_equals: expected "rgb(153, 153, 153)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(90 87.5% 50%) assert_equals: expected "rgb(162, 162, 162)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(90 100% 50%) assert_equals: expected "rgb(170, 170, 170)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(90 50% 0%) assert_equals: expected "rgb(191, 255, 128)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(90 50% 12.5%) assert_equals: expected "rgb(175, 223, 128)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(90 50% 25%) assert_equals: expected "rgb(159, 191, 128)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(90 50% 37.5%) assert_equals: expected "rgb(143, 159, 128)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(90 50% 62.5%) assert_equals: expected "rgb(113, 113, 113)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(90 50% 75%) assert_equals: expected "rgb(102, 102, 102)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(90 50% 87.5%) assert_equals: expected "rgb(93, 93, 93)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(90 50% 100%) assert_equals: expected "rgb(85, 85, 85)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(90 50% 50% / 0) assert_equals: expected "rgba(128, 128, 128, 0)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(90 50% 50% / 0.2) assert_equals: expected "rgba(128, 128, 128, 0.2)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(90 50% 50% / 1) assert_equals: expected "rgb(128, 128, 128)" but got "rgb(12, 34, 223)"
-PASS HWB value with commas should not be parsed: hwb(90deg, 50%, 50%)
-PASS HWB value with commas should not be parsed: hwb(90deg, 50%, 50%, 0.2)
-PASS HWB value with commas should not be parsed: hwb(90, 50%, 50%)
-PASS HWB value with commas should not be parsed: hwb(90, 50%, 50%, 0.2)
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/css/css-color/parsing/color-computed-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-color/parsing/color-computed-expected.txt
index d290173..feeafdc 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-color/parsing/color-computed-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/css/css-color/parsing/color-computed-expected.txt
@@ -1,5 +1,5 @@
 This is a testharness.js-based test.
-Found 403 tests; 27 PASS, 376 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 407 tests; 40 PASS, 367 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS Property color value 'currentcolor'
 PASS Property color value 'transparent'
 PASS Property color value 'red'
@@ -34,6 +34,7 @@
 FAIL Property color value 'rgba(none none none / 50%)' assert_true: 'rgba(none none none / 50%)' is a supported value for color. expected true got false
 PASS Property color value 'hsl(120 30% 50%)'
 PASS Property color value 'hsl(120 30% 50% / 0.5)'
+PASS Property color value 'hsl(120 30% 50% / 50%)'
 FAIL Property color value 'hsl(none none none)' assert_true: 'hsl(none none none)' is a supported value for color. expected true got false
 PASS Property color value 'hsl(0 0% 0%)'
 FAIL Property color value 'hsl(none none none / none)' assert_true: 'hsl(none none none / none)' is a supported value for color. expected true got false
@@ -50,24 +51,27 @@
 PASS Property color value 'hsl(120 0% 50%)'
 FAIL Property color value 'hsl(120 100% 50% / none)' assert_true: 'hsl(120 100% 50% / none)' is a supported value for color. expected true got false
 PASS Property color value 'hsl(120 100% 50% / 0)'
+PASS Property color value 'hsl(120 100% 50% / 0%)'
 FAIL Property color value 'hsl(none 100% 50%)' assert_true: 'hsl(none 100% 50%)' is a supported value for color. expected true got false
 PASS Property color value 'hsl(0 100% 50%)'
-FAIL Property color value 'hwb(120 30% 50%)' assert_true: 'hwb(120 30% 50%)' is a supported value for color. expected true got false
-FAIL Property color value 'hwb(120 30% 50% / 0.5)' assert_true: 'hwb(120 30% 50% / 0.5)' is a supported value for color. expected true got false
+PASS Property color value 'hwb(120 30% 50%)'
+PASS Property color value 'hwb(120 30% 50% / 0.5)'
+PASS Property color value 'hwb(120 30% 50% / 50%)'
 FAIL Property color value 'hwb(none none none)' assert_true: 'hwb(none none none)' is a supported value for color. expected true got false
-FAIL Property color value 'hwb(0 0% 0%)' assert_true: 'hwb(0 0% 0%)' is a supported value for color. expected true got false
+PASS Property color value 'hwb(0 0% 0%)'
 FAIL Property color value 'hwb(none none none / none)' assert_true: 'hwb(none none none / none)' is a supported value for color. expected true got false
-FAIL Property color value 'hwb(0 0% 0% / 0)' assert_true: 'hwb(0 0% 0% / 0)' is a supported value for color. expected true got false
+PASS Property color value 'hwb(0 0% 0% / 0)'
 FAIL Property color value 'hwb(120 none none)' assert_true: 'hwb(120 none none)' is a supported value for color. expected true got false
-FAIL Property color value 'hwb(120 0% 0%)' assert_true: 'hwb(120 0% 0%)' is a supported value for color. expected true got false
+PASS Property color value 'hwb(120 0% 0%)'
 FAIL Property color value 'hwb(120 80% none)' assert_true: 'hwb(120 80% none)' is a supported value for color. expected true got false
-FAIL Property color value 'hwb(120 80% 0%)' assert_true: 'hwb(120 80% 0%)' is a supported value for color. expected true got false
+PASS Property color value 'hwb(120 80% 0%)'
 FAIL Property color value 'hwb(120 none 50%)' assert_true: 'hwb(120 none 50%)' is a supported value for color. expected true got false
-FAIL Property color value 'hwb(120 0% 50%)' assert_true: 'hwb(120 0% 50%)' is a supported value for color. expected true got false
+PASS Property color value 'hwb(120 0% 50%)'
 FAIL Property color value 'hwb(120 30% 50% / none)' assert_true: 'hwb(120 30% 50% / none)' is a supported value for color. expected true got false
-FAIL Property color value 'hwb(120 30% 50% / 0)' assert_true: 'hwb(120 30% 50% / 0)' is a supported value for color. expected true got false
+PASS Property color value 'hwb(120 30% 50% / 0)'
+PASS Property color value 'hwb(120 30% 50% / 0%)'
 FAIL Property color value 'hwb(none 100% 50% / none)' assert_true: 'hwb(none 100% 50% / none)' is a supported value for color. expected true got false
-FAIL Property color value 'hwb(0 100% 50% / 0)' assert_true: 'hwb(0 100% 50% / 0)' is a supported value for color. expected true got false
+PASS Property color value 'hwb(0 100% 50% / 0)'
 FAIL Property color value 'color(srgb 0% 0% 0%)' assert_true: 'color(srgb 0% 0% 0%)' is a supported value for color. expected true got false
 FAIL Property color value 'color(srgb 10% 10% 10%)' assert_true: 'color(srgb 10% 10% 10%)' is a supported value for color. expected true got false
 FAIL Property color value 'color(srgb .2 .2 25%)' assert_true: 'color(srgb .2 .2 25%)' is a supported value for color. expected true got false
diff --git a/third_party/blink/web_tests/external/wpt/css/css-color/parsing/color-computed.html b/third_party/blink/web_tests/external/wpt/css/css-color/parsing/color-computed.html
index 88de9df..34aa059e 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-color/parsing/color-computed.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-color/parsing/color-computed.html
@@ -57,6 +57,7 @@
 
 test_computed_value("color", "hsl(120 30% 50%)", "rgb(89, 166, 89)");
 test_computed_value("color", "hsl(120 30% 50% / 0.5)", "rgba(89, 166, 89, 0.5)");
+test_computed_value("color", "hsl(120 30% 50% / 50%)", "rgba(89, 166, 89, 0.5)");
 test_computed_value("color", "hsl(none none none)", "rgb(0, 0, 0)");
 test_computed_value("color", "hsl(0 0% 0%)", "rgb(0, 0, 0)");
 test_computed_value("color", "hsl(none none none / none)", "rgba(0, 0, 0, 0)");
@@ -73,11 +74,13 @@
 test_computed_value("color", "hsl(120 0% 50%)", "rgb(128, 128, 128)");
 test_computed_value("color", "hsl(120 100% 50% / none)", "rgba(0, 255, 0, 0)");
 test_computed_value("color", "hsl(120 100% 50% / 0)", "rgba(0, 255, 0, 0)");
+test_computed_value("color", "hsl(120 100% 50% / 0%)", "rgba(0, 255, 0, 0)");
 test_computed_value("color", "hsl(none 100% 50%)", "rgb(255, 0, 0)");
 test_computed_value("color", "hsl(0 100% 50%)", "rgb(255, 0, 0)");
 
 test_computed_value("color", "hwb(120 30% 50%)", "rgb(77, 128, 77)");
 test_computed_value("color", "hwb(120 30% 50% / 0.5)", "rgba(77, 128, 77, 0.5)");
+test_computed_value("color", "hwb(120 30% 50% / 50%)", "rgba(77, 128, 77, 0.5)");
 test_computed_value("color", "hwb(none none none)", "rgb(255, 0, 0)");
 test_computed_value("color", "hwb(0 0% 0%)", "rgb(255, 0, 0)");
 test_computed_value("color", "hwb(none none none / none)", "rgba(255, 0, 0, 0)");
@@ -90,6 +93,7 @@
 test_computed_value("color", "hwb(120 0% 50%)", "rgb(0, 128, 0)");
 test_computed_value("color", "hwb(120 30% 50% / none)", "rgba(77, 128, 77, 0)");
 test_computed_value("color", "hwb(120 30% 50% / 0)", "rgba(77, 128, 77, 0)");
+test_computed_value("color", "hwb(120 30% 50% / 0%)", "rgba(77, 128, 77, 0)");
 test_computed_value("color", "hwb(none 100% 50% / none)", "rgba(170, 170, 170, 0)");
 test_computed_value("color", "hwb(0 100% 50% / 0)", "rgba(170, 170, 170, 0)");
 
diff --git a/third_party/blink/web_tests/external/wpt/css/css-color/parsing/color-valid-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-color/parsing/color-valid-expected.txt
index f1e4105..8d9c22d9 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-color/parsing/color-valid-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/css/css-color/parsing/color-valid-expected.txt
@@ -1,5 +1,5 @@
 This is a testharness.js-based test.
-Found 403 tests; 27 PASS, 376 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 403 tests; 36 PASS, 367 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS e.style['color'] = "currentcolor" should set the property value
 PASS e.style['color'] = "transparent" should set the property value
 PASS e.style['color'] = "red" should set the property value
@@ -52,22 +52,22 @@
 PASS e.style['color'] = "hsl(120 100% 50% / 0)" should set the property value
 FAIL e.style['color'] = "hsl(none 100% 50%)" should set the property value assert_not_equals: property should be set got disallowed value ""
 PASS e.style['color'] = "hsl(0 100% 50%)" should set the property value
-FAIL e.style['color'] = "hwb(120 30% 50%)" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['color'] = "hwb(120 30% 50% / 0.5)" should set the property value assert_not_equals: property should be set got disallowed value ""
+PASS e.style['color'] = "hwb(120 30% 50%)" should set the property value
+PASS e.style['color'] = "hwb(120 30% 50% / 0.5)" should set the property value
 FAIL e.style['color'] = "hwb(none none none)" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['color'] = "hwb(0 0% 0%)" should set the property value assert_not_equals: property should be set got disallowed value ""
+PASS e.style['color'] = "hwb(0 0% 0%)" should set the property value
 FAIL e.style['color'] = "hwb(none none none / none)" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['color'] = "hwb(0 0% 0% / 0)" should set the property value assert_not_equals: property should be set got disallowed value ""
+PASS e.style['color'] = "hwb(0 0% 0% / 0)" should set the property value
 FAIL e.style['color'] = "hwb(120 none none)" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['color'] = "hwb(120 0% 0%)" should set the property value assert_not_equals: property should be set got disallowed value ""
+PASS e.style['color'] = "hwb(120 0% 0%)" should set the property value
 FAIL e.style['color'] = "hwb(120 80% none)" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['color'] = "hwb(120 80% 0%)" should set the property value assert_not_equals: property should be set got disallowed value ""
+PASS e.style['color'] = "hwb(120 80% 0%)" should set the property value
 FAIL e.style['color'] = "hwb(120 none 50%)" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['color'] = "hwb(120 0% 50%)" should set the property value assert_not_equals: property should be set got disallowed value ""
+PASS e.style['color'] = "hwb(120 0% 50%)" should set the property value
 FAIL e.style['color'] = "hwb(120 30% 50% / none)" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['color'] = "hwb(120 30% 50% / 0)" should set the property value assert_not_equals: property should be set got disallowed value ""
+PASS e.style['color'] = "hwb(120 30% 50% / 0)" should set the property value
 FAIL e.style['color'] = "hwb(none 100% 50% / none)" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['color'] = "hwb(0 100% 50% / 0)" should set the property value assert_not_equals: property should be set got disallowed value ""
+PASS e.style['color'] = "hwb(0 100% 50% / 0)" should set the property value
 FAIL e.style['color'] = "color(srgb 0% 0% 0%)" should set the property value assert_not_equals: property should be set got disallowed value ""
 FAIL e.style['color'] = "color(srgb 10% 10% 10%)" should set the property value assert_not_equals: property should be set got disallowed value ""
 FAIL e.style['color'] = "color(srgb .2 .2 25%)" should set the property value assert_not_equals: property should be set got disallowed value ""
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/idlharness-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/idlharness-expected.txt
index d44f50e..9d6e7e91 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/idlharness-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/idlharness-expected.txt
@@ -1,5 +1,5 @@
 This is a testharness.js-based test.
-Found 520 tests; 442 PASS, 78 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 520 tests; 452 PASS, 68 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS idl_test setup
 PASS idl_test validation
 PASS Partial interface Element: original interface defined
@@ -421,16 +421,16 @@
 PASS CSSHSL interface: attribute s
 PASS CSSHSL interface: attribute l
 PASS CSSHSL interface: attribute alpha
-FAIL CSSHWB interface: existence and properties of interface object assert_own_property: self does not have own property "CSSHWB" expected property "CSSHWB" missing
-FAIL CSSHWB interface object length assert_own_property: self does not have own property "CSSHWB" expected property "CSSHWB" missing
-FAIL CSSHWB interface object name assert_own_property: self does not have own property "CSSHWB" expected property "CSSHWB" missing
-FAIL CSSHWB interface: existence and properties of interface prototype object assert_own_property: self does not have own property "CSSHWB" expected property "CSSHWB" missing
-FAIL CSSHWB interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "CSSHWB" expected property "CSSHWB" missing
-FAIL CSSHWB interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "CSSHWB" expected property "CSSHWB" missing
-FAIL CSSHWB interface: attribute h assert_own_property: self does not have own property "CSSHWB" expected property "CSSHWB" missing
-FAIL CSSHWB interface: attribute w assert_own_property: self does not have own property "CSSHWB" expected property "CSSHWB" missing
-FAIL CSSHWB interface: attribute b assert_own_property: self does not have own property "CSSHWB" expected property "CSSHWB" missing
-FAIL CSSHWB interface: attribute alpha assert_own_property: self does not have own property "CSSHWB" expected property "CSSHWB" missing
+PASS CSSHWB interface: existence and properties of interface object
+PASS CSSHWB interface object length
+PASS CSSHWB interface object name
+PASS CSSHWB interface: existence and properties of interface prototype object
+PASS CSSHWB interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSHWB interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSHWB interface: attribute h
+PASS CSSHWB interface: attribute w
+PASS CSSHWB interface: attribute b
+PASS CSSHWB interface: attribute alpha
 FAIL CSSLab interface: existence and properties of interface object assert_own_property: self does not have own property "CSSLab" expected property "CSSLab" missing
 FAIL CSSLab interface object length assert_own_property: self does not have own property "CSSLab" expected property "CSSLab" missing
 FAIL CSSLab interface object name assert_own_property: self does not have own property "CSSLab" expected property "CSSLab" missing
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/stylevalue-subclasses/cssColorValue.html b/third_party/blink/web_tests/external/wpt/css/css-typed-om/stylevalue-subclasses/cssColorValue.html
index d57023f..f86948d 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/stylevalue-subclasses/cssColorValue.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/stylevalue-subclasses/cssColorValue.html
@@ -9,44 +9,98 @@
 'use strict';
 
 const TEST_COLORS = [
-  {name: "magenta", rgb: [1, 0, 1], hsl: [300, 1, 0.5]},
-  {name: "dark cyan", rgb: [0, 0.545, 0.545], hsl: [180, 1, 0.2725]},
-  {name: "light goldenrod yellow", rgb: [1, 1, 0.82], hsl: [60, 1, 0.91]},
-  {name: "medium purple", rgb: [0.58, 0.44, 0.86], hsl: [260, 0.5977, 0.649]},
+  {name: "magenta", rgb: [1, 0, 1], hsl: [300, 1, 0.5], hwb: [300, 0, 0]},
+  {name: "dark cyan", rgb: [0, 0.545, 0.545], hsl: [180, 1, 0.2725], hwb: [180, 0, 0.455]},
+  {name: "light goldenrod yellow", rgb: [1, 1, 0.82], hsl: [60, 1, 0.91], hwb: [60, 0.82, 0]},
+  {name: "medium purple", rgb: [0.58, 0.44, 0.86], hsl: [260, 0.5977, 0.649], hwb: [260, 0.44, 0.14]},
 ]
 
 for (const color of TEST_COLORS) {
   const hsl_color_degrees = new CSSHSL(CSS.deg(color.hsl[0]), color.hsl[1], color.hsl[2])
   const hsl_color_radians = new CSSHSL(CSS.rad(color.hsl[0]/360 * 2 * Math.PI), color.hsl[1], color.hsl[2])
-  const hsl_color_gradiens = new CSSHSL(CSS.grad(color.hsl[0]/360 * 400), color.hsl[1], color.hsl[2])
+  const hsl_color_gradians = new CSSHSL(CSS.grad(color.hsl[0]/360 * 400), color.hsl[1], color.hsl[2])
+  const hsl_attributes = ['h', 's', 'l', 'alpha']
+
+  const hwb_color_degrees = new CSSHWB(CSS.deg(color.hwb[0]), color.hwb[1], color.hwb[2])
+  const hwb_color_radians = new CSSHWB(CSS.rad(color.hwb[0]/360 * 2 * Math.PI), color.hwb[1], color.hwb[2])
+  const hwb_color_gradians = new CSSHWB(CSS.grad(color.hwb[0]/360 * 400), color.hwb[1], color.hwb[2])
+  const hwb_attributes = ['h', 'w', 'b', 'alpha']
 
   const rgb_color = new CSSRGB(color.rgb[0], color.rgb[1], color.rgb[2])
+  const rgb_attributes = ['r', 'g', 'b', 'alpha']
+
+  // Test conversion from CSSHSL to others.
   test(() => {
     const hsl_to_rgb = hsl_color_degrees.toRGB();
-    for (const attr of ['r', 'g', 'b', 'alpha']) {
+    for (const attr of rgb_attributes) {
       assert_color_channel_approx_equals(hsl_to_rgb[attr], rgb_color[attr]);
     }
   }, `Converting HSL using degrees to RGB works for ${color.name}.`);
 
   test(() => {
     const hsl_to_rgb = hsl_color_radians.toRGB();
-    for (const attr of ['r', 'g', 'b', 'alpha']) {
+    for (const attr of rgb_attributes) {
       assert_color_channel_approx_equals(hsl_to_rgb[attr], rgb_color[attr]);
     }
   }, `Converting HSL using radians to RGB works for ${color.name}.`);
 
   test(() => {
-    const hsl_to_rgb = hsl_color_gradiens.toRGB();
-    for (const attr of ['r', 'g', 'b', 'alpha']) {
+    const hsl_to_rgb = hsl_color_gradians.toRGB();
+    for (const attr of rgb_attributes) {
       assert_color_channel_approx_equals(hsl_to_rgb[attr], rgb_color[attr]);
     }
-  }, `Converting HSL using gradiens to RGB works for ${color.name}.`);
+  }, `Converting HSL using gradians to RGB works for ${color.name}.`);
 
   test(() => {
+    const hsl_to_hwb = hsl_color_degrees.toHWB();
+    for (const attr of hwb_attributes) {
+      assert_color_channel_approx_equals(hwb_color_degrees[attr], hsl_to_hwb[attr]);
+    }
+  }, `Converting HSL to HWB works for ${color.name}.`);
+
+  // Test conversion from CSSHWB to others.
+  test(() => {
+    const hwb_to_rgb = hwb_color_degrees.toRGB();
+    for (const attr of rgb_attributes) {
+      assert_color_channel_approx_equals(hwb_to_rgb[attr], rgb_color[attr]);
+    }
+  }, `Converting HWB using degrees to RGB works for ${color.name}.`);
+
+  test(() => {
+    const hwb_to_rgb = hwb_color_radians.toRGB();
+    for (const attr of rgb_attributes) {
+      assert_color_channel_approx_equals(hwb_to_rgb[attr], rgb_color[attr]);
+    }
+  }, `Converting HWB using radians to RGB works for ${color.name}.`);
+
+  test(() => {
+    const hwb_to_rgb = hwb_color_gradians.toRGB();
+    for (const attr of rgb_attributes) {
+      assert_color_channel_approx_equals(hwb_to_rgb[attr], rgb_color[attr]);
+    }
+  }, `Converting HWB using gradians to RGB works for ${color.name}.`);
+
+  test(() => {
+    const hwb_to_hsl = hwb_color_degrees.toHSL();
+    for (const attr of hsl_attributes) {
+      assert_color_channel_approx_equals(hsl_color_degrees[attr], hwb_to_hsl[attr]);
+    }
+  }, `Converting HWB to HSL works for ${color.name}.`);
+
+  // Test conversion from CSSRGB to others
+  test(() => {
     const rgb_to_hsl = rgb_color.toHSL();
-    for (const attr of ['h', 's', 'l', 'alpha']) {
+    for (const attr of hsl_attributes) {
       assert_color_channel_approx_equals(hsl_color_degrees[attr], rgb_to_hsl[attr]);
     }
   }, `Converting RGB to HSL works for ${color.name}.`);
+
+  test(() => {
+
+    const rgb_to_hwb = rgb_color.toHWB();
+    for (const attr of hwb_attributes) {
+      assert_color_channel_approx_equals(hwb_color_degrees[attr], rgb_to_hwb[attr]);
+    }
+  }, `Converting RGB to HWB works for ${color.name}.`);
 }
 </script>
\ No newline at end of file
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/stylevalue-subclasses/cssHWB.html b/third_party/blink/web_tests/external/wpt/css/css-typed-om/stylevalue-subclasses/cssHWB.html
new file mode 100644
index 0000000..192db518
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/stylevalue-subclasses/cssHWB.html
@@ -0,0 +1,82 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>CSSHWB tests</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#csshwb">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../resources/testhelper.js"></script>
+<script>
+'use strict';
+
+const gValidHueInputs = [
+  {hue: CSS.deg(180), desc: 'degrees'},
+  {hue: CSS.rad(1), desc: 'radians'},
+  {hue: CSS.grad(81), desc: 'gradians'},
+];
+
+const gInvalidHueInputs = [
+  {hue: 180, desc: "a number"},
+  {hue: CSS.px(1), desc: "css pixels"},
+  {hue: undefined, desc: "undefined"},
+]
+
+for (const {hue, desc} of gValidHueInputs) {
+  test(() => {
+    const result = new CSSHWB(hue, 0.5, 0.5);
+    assert_color_channel_approx_equals(result.h, hue);
+  }, `Constructing a CSSHWB with ${desc} for the hue works as intended.`);
+
+  test(() => {
+    const result = new CSSHWB(CSS.deg(0), 0.5, 0.5);
+    result.h = hue;
+    assert_color_channel_approx_equals(result.h, hue);
+  }, `CSSHWB.h can be updated with a ${desc}.`);
+}
+
+for (const {hue, desc} of gInvalidHueInputs) {
+  test(() => {
+    assert_throws_js(TypeError, () => new CSSHWB(hue, 0, 0));
+  }, `Constructing a CSSHWB with ${desc} for hue throws a type error.`);
+}
+
+test(() => {
+  const result = new CSSHWB(CSS.deg(27), 0.7, CSS.percent(91));
+  assert_color_channel_approx_equals(result.h, CSS.deg(27));
+  assert_color_channel_approx_equals(result.w, CSS.percent(70));
+  assert_color_channel_approx_equals(result.b, CSS.percent(91));
+  assert_color_channel_approx_equals(result.alpha, CSS.percent(100));
+}, 'CSSHWB can be constructed from three numbers and will get an alpha of 100%.');
+
+test(() => {
+  const result = new CSSHWB(CSS.grad(101), 0.2, 0.3, CSS.percent(0.4));
+  assert_color_channel_approx_equals(result.h, CSS.grad(101));
+  assert_color_channel_approx_equals(result.w, CSS.percent(20));
+  assert_color_channel_approx_equals(result.b, CSS.percent(30));
+  assert_color_channel_approx_equals(result.alpha, CSS.percent(0.4));
+}, 'CSSHWB can be constructed from four numbers.');
+
+test(() => {
+  assert_throws_js(TypeError, () => new CSSHWB(CSS.deg(0), CSS.number(1), 0, 0));
+  assert_throws_js(TypeError, () => new CSSHWB(CSS.deg(0), 0, CSS.number(1), 0));
+  assert_throws_js(TypeError, () => new CSSHWB(CSS.deg(0), 0, 0, CSS.number(1)));
+}, `Constructing a CSSHWB with CSS.number for s, l or alpha throws a TypeError`);
+
+for (const attr of ['w', 'b', 'alpha']) {
+  test(() => {
+    const result = new CSSHWB(CSS.deg(0), 0, 0);
+    assert_throws_js(TypeError, () => result[attr] = CSS.number(1));
+  }, `Updating a CSSHWB with CSS.number for ${attr} throws a TypeError`);
+
+  test(() => {
+    const result = new CSSHWB(CSS.deg(0), 0, 0);
+    result[attr] = 0.5;
+    assert_color_channel_approx_equals(result[attr], CSS.percent(50));
+  }, 'CSSHWB.' + attr + ' can be updated to a number.');
+
+  test(() => {
+    const result = new CSSHWB(CSS.deg(0), 0, 0);
+    result[attr] = CSS.percent(50);
+    assert_color_channel_approx_equals(result[attr], CSS.percent(50));
+  }, 'CSSHWB.' + attr + ' can be updated with a CSS percent.');
+}
+</script>
\ No newline at end of file
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/external/wpt/css/css-color/parsing/color-computed-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/external/wpt/css/css-color/parsing/color-computed-expected.txt
index d290173..feeafdc 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/external/wpt/css/css-color/parsing/color-computed-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/external/wpt/css/css-color/parsing/color-computed-expected.txt
@@ -1,5 +1,5 @@
 This is a testharness.js-based test.
-Found 403 tests; 27 PASS, 376 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 407 tests; 40 PASS, 367 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS Property color value 'currentcolor'
 PASS Property color value 'transparent'
 PASS Property color value 'red'
@@ -34,6 +34,7 @@
 FAIL Property color value 'rgba(none none none / 50%)' assert_true: 'rgba(none none none / 50%)' is a supported value for color. expected true got false
 PASS Property color value 'hsl(120 30% 50%)'
 PASS Property color value 'hsl(120 30% 50% / 0.5)'
+PASS Property color value 'hsl(120 30% 50% / 50%)'
 FAIL Property color value 'hsl(none none none)' assert_true: 'hsl(none none none)' is a supported value for color. expected true got false
 PASS Property color value 'hsl(0 0% 0%)'
 FAIL Property color value 'hsl(none none none / none)' assert_true: 'hsl(none none none / none)' is a supported value for color. expected true got false
@@ -50,24 +51,27 @@
 PASS Property color value 'hsl(120 0% 50%)'
 FAIL Property color value 'hsl(120 100% 50% / none)' assert_true: 'hsl(120 100% 50% / none)' is a supported value for color. expected true got false
 PASS Property color value 'hsl(120 100% 50% / 0)'
+PASS Property color value 'hsl(120 100% 50% / 0%)'
 FAIL Property color value 'hsl(none 100% 50%)' assert_true: 'hsl(none 100% 50%)' is a supported value for color. expected true got false
 PASS Property color value 'hsl(0 100% 50%)'
-FAIL Property color value 'hwb(120 30% 50%)' assert_true: 'hwb(120 30% 50%)' is a supported value for color. expected true got false
-FAIL Property color value 'hwb(120 30% 50% / 0.5)' assert_true: 'hwb(120 30% 50% / 0.5)' is a supported value for color. expected true got false
+PASS Property color value 'hwb(120 30% 50%)'
+PASS Property color value 'hwb(120 30% 50% / 0.5)'
+PASS Property color value 'hwb(120 30% 50% / 50%)'
 FAIL Property color value 'hwb(none none none)' assert_true: 'hwb(none none none)' is a supported value for color. expected true got false
-FAIL Property color value 'hwb(0 0% 0%)' assert_true: 'hwb(0 0% 0%)' is a supported value for color. expected true got false
+PASS Property color value 'hwb(0 0% 0%)'
 FAIL Property color value 'hwb(none none none / none)' assert_true: 'hwb(none none none / none)' is a supported value for color. expected true got false
-FAIL Property color value 'hwb(0 0% 0% / 0)' assert_true: 'hwb(0 0% 0% / 0)' is a supported value for color. expected true got false
+PASS Property color value 'hwb(0 0% 0% / 0)'
 FAIL Property color value 'hwb(120 none none)' assert_true: 'hwb(120 none none)' is a supported value for color. expected true got false
-FAIL Property color value 'hwb(120 0% 0%)' assert_true: 'hwb(120 0% 0%)' is a supported value for color. expected true got false
+PASS Property color value 'hwb(120 0% 0%)'
 FAIL Property color value 'hwb(120 80% none)' assert_true: 'hwb(120 80% none)' is a supported value for color. expected true got false
-FAIL Property color value 'hwb(120 80% 0%)' assert_true: 'hwb(120 80% 0%)' is a supported value for color. expected true got false
+PASS Property color value 'hwb(120 80% 0%)'
 FAIL Property color value 'hwb(120 none 50%)' assert_true: 'hwb(120 none 50%)' is a supported value for color. expected true got false
-FAIL Property color value 'hwb(120 0% 50%)' assert_true: 'hwb(120 0% 50%)' is a supported value for color. expected true got false
+PASS Property color value 'hwb(120 0% 50%)'
 FAIL Property color value 'hwb(120 30% 50% / none)' assert_true: 'hwb(120 30% 50% / none)' is a supported value for color. expected true got false
-FAIL Property color value 'hwb(120 30% 50% / 0)' assert_true: 'hwb(120 30% 50% / 0)' is a supported value for color. expected true got false
+PASS Property color value 'hwb(120 30% 50% / 0)'
+PASS Property color value 'hwb(120 30% 50% / 0%)'
 FAIL Property color value 'hwb(none 100% 50% / none)' assert_true: 'hwb(none 100% 50% / none)' is a supported value for color. expected true got false
-FAIL Property color value 'hwb(0 100% 50% / 0)' assert_true: 'hwb(0 100% 50% / 0)' is a supported value for color. expected true got false
+PASS Property color value 'hwb(0 100% 50% / 0)'
 FAIL Property color value 'color(srgb 0% 0% 0%)' assert_true: 'color(srgb 0% 0% 0%)' is a supported value for color. expected true got false
 FAIL Property color value 'color(srgb 10% 10% 10%)' assert_true: 'color(srgb 10% 10% 10%)' is a supported value for color. expected true got false
 FAIL Property color value 'color(srgb .2 .2 25%)' assert_true: 'color(srgb .2 .2 25%)' is a supported value for color. expected true got false
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/external/wpt/css/css-color/parsing/color-valid-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/external/wpt/css/css-color/parsing/color-valid-expected.txt
index f1e4105..8d9c22d9 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/external/wpt/css/css-color/parsing/color-valid-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/external/wpt/css/css-color/parsing/color-valid-expected.txt
@@ -1,5 +1,5 @@
 This is a testharness.js-based test.
-Found 403 tests; 27 PASS, 376 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 403 tests; 36 PASS, 367 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS e.style['color'] = "currentcolor" should set the property value
 PASS e.style['color'] = "transparent" should set the property value
 PASS e.style['color'] = "red" should set the property value
@@ -52,22 +52,22 @@
 PASS e.style['color'] = "hsl(120 100% 50% / 0)" should set the property value
 FAIL e.style['color'] = "hsl(none 100% 50%)" should set the property value assert_not_equals: property should be set got disallowed value ""
 PASS e.style['color'] = "hsl(0 100% 50%)" should set the property value
-FAIL e.style['color'] = "hwb(120 30% 50%)" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['color'] = "hwb(120 30% 50% / 0.5)" should set the property value assert_not_equals: property should be set got disallowed value ""
+PASS e.style['color'] = "hwb(120 30% 50%)" should set the property value
+PASS e.style['color'] = "hwb(120 30% 50% / 0.5)" should set the property value
 FAIL e.style['color'] = "hwb(none none none)" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['color'] = "hwb(0 0% 0%)" should set the property value assert_not_equals: property should be set got disallowed value ""
+PASS e.style['color'] = "hwb(0 0% 0%)" should set the property value
 FAIL e.style['color'] = "hwb(none none none / none)" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['color'] = "hwb(0 0% 0% / 0)" should set the property value assert_not_equals: property should be set got disallowed value ""
+PASS e.style['color'] = "hwb(0 0% 0% / 0)" should set the property value
 FAIL e.style['color'] = "hwb(120 none none)" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['color'] = "hwb(120 0% 0%)" should set the property value assert_not_equals: property should be set got disallowed value ""
+PASS e.style['color'] = "hwb(120 0% 0%)" should set the property value
 FAIL e.style['color'] = "hwb(120 80% none)" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['color'] = "hwb(120 80% 0%)" should set the property value assert_not_equals: property should be set got disallowed value ""
+PASS e.style['color'] = "hwb(120 80% 0%)" should set the property value
 FAIL e.style['color'] = "hwb(120 none 50%)" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['color'] = "hwb(120 0% 50%)" should set the property value assert_not_equals: property should be set got disallowed value ""
+PASS e.style['color'] = "hwb(120 0% 50%)" should set the property value
 FAIL e.style['color'] = "hwb(120 30% 50% / none)" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['color'] = "hwb(120 30% 50% / 0)" should set the property value assert_not_equals: property should be set got disallowed value ""
+PASS e.style['color'] = "hwb(120 30% 50% / 0)" should set the property value
 FAIL e.style['color'] = "hwb(none 100% 50% / none)" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['color'] = "hwb(0 100% 50% / 0)" should set the property value assert_not_equals: property should be set got disallowed value ""
+PASS e.style['color'] = "hwb(0 100% 50% / 0)" should set the property value
 FAIL e.style['color'] = "color(srgb 0% 0% 0%)" should set the property value assert_not_equals: property should be set got disallowed value ""
 FAIL e.style['color'] = "color(srgb 10% 10% 10%)" should set the property value assert_not_equals: property should be set got disallowed value ""
 FAIL e.style['color'] = "color(srgb .2 .2 25%)" should set the property value assert_not_equals: property should be set got disallowed value ""
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/http/tests/devtools/elements/highlight/highlight-node-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/http/tests/devtools/elements/highlight/highlight-node-expected.txt
index d78b041..c464063 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/http/tests/devtools/elements/highlight/highlight-node-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/http/tests/devtools/elements/highlight/highlight-node-expected.txt
@@ -288,6 +288,102 @@
     "showAccessibilityInfo": true
   }
 }
+inspectedElement with HWB format{
+  "paths": [
+    {
+      "path": [
+        "M",
+        30,
+        30,
+        "L",
+        230,
+        30,
+        "L",
+        230,
+        230,
+        "L",
+        30,
+        230,
+        "Z"
+      ],
+      "fillColor": "rgba(255, 0, 0, 0)",
+      "outlineColor": "rgba(128, 0, 0, 0)",
+      "name": "content"
+    },
+    {
+      "path": [
+        "M",
+        15,
+        15,
+        "L",
+        245,
+        15,
+        "L",
+        245,
+        245,
+        "L",
+        15,
+        245,
+        "Z"
+      ],
+      "fillColor": "rgba(0, 255, 0, 0)",
+      "name": "padding"
+    },
+    {
+      "path": [
+        "M",
+        5,
+        5,
+        "L",
+        255,
+        5,
+        "L",
+        255,
+        255,
+        "L",
+        5,
+        255,
+        "Z"
+      ],
+      "fillColor": "rgba(0, 0, 255, 0)",
+      "name": "border"
+    },
+    {
+      "path": [
+        "M",
+        0,
+        0,
+        "L",
+        260,
+        0,
+        "L",
+        260,
+        260,
+        "L",
+        0,
+        260,
+        "Z"
+      ],
+      "fillColor": "rgba(255, 255, 255, 0)",
+      "name": "margin"
+    }
+  ],
+  "showRulers": true,
+  "showExtensionLines": true,
+  "showAccessibilityInfo": true,
+  "colorFormat": "hwb",
+  "elementInfo": {
+    "tagName": "div",
+    "idValue": "inspectedElement",
+    "nodeWidth": "250",
+    "nodeHeight": "250",
+    "isKeyboardFocusable": false,
+    "accessibleName": "",
+    "accessibleRole": "generic",
+    "layoutObjectName": "LayoutBlockFlow",
+    "showAccessibilityInfo": true
+  }
+}
 
 First text node{
   "paths": [
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/system-color-compute/external/wpt/css/css-color/parsing/color-computed-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/system-color-compute/external/wpt/css/css-color/parsing/color-computed-expected.txt
index d290173..feeafdc 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/system-color-compute/external/wpt/css/css-color/parsing/color-computed-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/system-color-compute/external/wpt/css/css-color/parsing/color-computed-expected.txt
@@ -1,5 +1,5 @@
 This is a testharness.js-based test.
-Found 403 tests; 27 PASS, 376 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 407 tests; 40 PASS, 367 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS Property color value 'currentcolor'
 PASS Property color value 'transparent'
 PASS Property color value 'red'
@@ -34,6 +34,7 @@
 FAIL Property color value 'rgba(none none none / 50%)' assert_true: 'rgba(none none none / 50%)' is a supported value for color. expected true got false
 PASS Property color value 'hsl(120 30% 50%)'
 PASS Property color value 'hsl(120 30% 50% / 0.5)'
+PASS Property color value 'hsl(120 30% 50% / 50%)'
 FAIL Property color value 'hsl(none none none)' assert_true: 'hsl(none none none)' is a supported value for color. expected true got false
 PASS Property color value 'hsl(0 0% 0%)'
 FAIL Property color value 'hsl(none none none / none)' assert_true: 'hsl(none none none / none)' is a supported value for color. expected true got false
@@ -50,24 +51,27 @@
 PASS Property color value 'hsl(120 0% 50%)'
 FAIL Property color value 'hsl(120 100% 50% / none)' assert_true: 'hsl(120 100% 50% / none)' is a supported value for color. expected true got false
 PASS Property color value 'hsl(120 100% 50% / 0)'
+PASS Property color value 'hsl(120 100% 50% / 0%)'
 FAIL Property color value 'hsl(none 100% 50%)' assert_true: 'hsl(none 100% 50%)' is a supported value for color. expected true got false
 PASS Property color value 'hsl(0 100% 50%)'
-FAIL Property color value 'hwb(120 30% 50%)' assert_true: 'hwb(120 30% 50%)' is a supported value for color. expected true got false
-FAIL Property color value 'hwb(120 30% 50% / 0.5)' assert_true: 'hwb(120 30% 50% / 0.5)' is a supported value for color. expected true got false
+PASS Property color value 'hwb(120 30% 50%)'
+PASS Property color value 'hwb(120 30% 50% / 0.5)'
+PASS Property color value 'hwb(120 30% 50% / 50%)'
 FAIL Property color value 'hwb(none none none)' assert_true: 'hwb(none none none)' is a supported value for color. expected true got false
-FAIL Property color value 'hwb(0 0% 0%)' assert_true: 'hwb(0 0% 0%)' is a supported value for color. expected true got false
+PASS Property color value 'hwb(0 0% 0%)'
 FAIL Property color value 'hwb(none none none / none)' assert_true: 'hwb(none none none / none)' is a supported value for color. expected true got false
-FAIL Property color value 'hwb(0 0% 0% / 0)' assert_true: 'hwb(0 0% 0% / 0)' is a supported value for color. expected true got false
+PASS Property color value 'hwb(0 0% 0% / 0)'
 FAIL Property color value 'hwb(120 none none)' assert_true: 'hwb(120 none none)' is a supported value for color. expected true got false
-FAIL Property color value 'hwb(120 0% 0%)' assert_true: 'hwb(120 0% 0%)' is a supported value for color. expected true got false
+PASS Property color value 'hwb(120 0% 0%)'
 FAIL Property color value 'hwb(120 80% none)' assert_true: 'hwb(120 80% none)' is a supported value for color. expected true got false
-FAIL Property color value 'hwb(120 80% 0%)' assert_true: 'hwb(120 80% 0%)' is a supported value for color. expected true got false
+PASS Property color value 'hwb(120 80% 0%)'
 FAIL Property color value 'hwb(120 none 50%)' assert_true: 'hwb(120 none 50%)' is a supported value for color. expected true got false
-FAIL Property color value 'hwb(120 0% 50%)' assert_true: 'hwb(120 0% 50%)' is a supported value for color. expected true got false
+PASS Property color value 'hwb(120 0% 50%)'
 FAIL Property color value 'hwb(120 30% 50% / none)' assert_true: 'hwb(120 30% 50% / none)' is a supported value for color. expected true got false
-FAIL Property color value 'hwb(120 30% 50% / 0)' assert_true: 'hwb(120 30% 50% / 0)' is a supported value for color. expected true got false
+PASS Property color value 'hwb(120 30% 50% / 0)'
+PASS Property color value 'hwb(120 30% 50% / 0%)'
 FAIL Property color value 'hwb(none 100% 50% / none)' assert_true: 'hwb(none 100% 50% / none)' is a supported value for color. expected true got false
-FAIL Property color value 'hwb(0 100% 50% / 0)' assert_true: 'hwb(0 100% 50% / 0)' is a supported value for color. expected true got false
+PASS Property color value 'hwb(0 100% 50% / 0)'
 FAIL Property color value 'color(srgb 0% 0% 0%)' assert_true: 'color(srgb 0% 0% 0%)' is a supported value for color. expected true got false
 FAIL Property color value 'color(srgb 10% 10% 10%)' assert_true: 'color(srgb 10% 10% 10%)' is a supported value for color. expected true got false
 FAIL Property color value 'color(srgb .2 .2 25%)' assert_true: 'color(srgb .2 .2 25%)' is a supported value for color. expected true got false
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/system-color-compute/external/wpt/css/css-color/parsing/color-valid-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/system-color-compute/external/wpt/css/css-color/parsing/color-valid-expected.txt
index f1e4105..8d9c22d9 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/system-color-compute/external/wpt/css/css-color/parsing/color-valid-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/system-color-compute/external/wpt/css/css-color/parsing/color-valid-expected.txt
@@ -1,5 +1,5 @@
 This is a testharness.js-based test.
-Found 403 tests; 27 PASS, 376 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 403 tests; 36 PASS, 367 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS e.style['color'] = "currentcolor" should set the property value
 PASS e.style['color'] = "transparent" should set the property value
 PASS e.style['color'] = "red" should set the property value
@@ -52,22 +52,22 @@
 PASS e.style['color'] = "hsl(120 100% 50% / 0)" should set the property value
 FAIL e.style['color'] = "hsl(none 100% 50%)" should set the property value assert_not_equals: property should be set got disallowed value ""
 PASS e.style['color'] = "hsl(0 100% 50%)" should set the property value
-FAIL e.style['color'] = "hwb(120 30% 50%)" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['color'] = "hwb(120 30% 50% / 0.5)" should set the property value assert_not_equals: property should be set got disallowed value ""
+PASS e.style['color'] = "hwb(120 30% 50%)" should set the property value
+PASS e.style['color'] = "hwb(120 30% 50% / 0.5)" should set the property value
 FAIL e.style['color'] = "hwb(none none none)" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['color'] = "hwb(0 0% 0%)" should set the property value assert_not_equals: property should be set got disallowed value ""
+PASS e.style['color'] = "hwb(0 0% 0%)" should set the property value
 FAIL e.style['color'] = "hwb(none none none / none)" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['color'] = "hwb(0 0% 0% / 0)" should set the property value assert_not_equals: property should be set got disallowed value ""
+PASS e.style['color'] = "hwb(0 0% 0% / 0)" should set the property value
 FAIL e.style['color'] = "hwb(120 none none)" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['color'] = "hwb(120 0% 0%)" should set the property value assert_not_equals: property should be set got disallowed value ""
+PASS e.style['color'] = "hwb(120 0% 0%)" should set the property value
 FAIL e.style['color'] = "hwb(120 80% none)" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['color'] = "hwb(120 80% 0%)" should set the property value assert_not_equals: property should be set got disallowed value ""
+PASS e.style['color'] = "hwb(120 80% 0%)" should set the property value
 FAIL e.style['color'] = "hwb(120 none 50%)" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['color'] = "hwb(120 0% 50%)" should set the property value assert_not_equals: property should be set got disallowed value ""
+PASS e.style['color'] = "hwb(120 0% 50%)" should set the property value
 FAIL e.style['color'] = "hwb(120 30% 50% / none)" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['color'] = "hwb(120 30% 50% / 0)" should set the property value assert_not_equals: property should be set got disallowed value ""
+PASS e.style['color'] = "hwb(120 30% 50% / 0)" should set the property value
 FAIL e.style['color'] = "hwb(none 100% 50% / none)" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['color'] = "hwb(0 100% 50% / 0)" should set the property value assert_not_equals: property should be set got disallowed value ""
+PASS e.style['color'] = "hwb(0 100% 50% / 0)" should set the property value
 FAIL e.style['color'] = "color(srgb 0% 0% 0%)" should set the property value assert_not_equals: property should be set got disallowed value ""
 FAIL e.style['color'] = "color(srgb 10% 10% 10%)" should set the property value assert_not_equals: property should be set got disallowed value ""
 FAIL e.style['color'] = "color(srgb .2 .2 25%)" should set the property value assert_not_equals: property should be set got disallowed value ""
diff --git a/third_party/blink/web_tests/flag-specific/highdpi/http/tests/devtools/elements/highlight/highlight-node-expected.txt b/third_party/blink/web_tests/flag-specific/highdpi/http/tests/devtools/elements/highlight/highlight-node-expected.txt
index 3eddf97..7abfbb4 100644
--- a/third_party/blink/web_tests/flag-specific/highdpi/http/tests/devtools/elements/highlight/highlight-node-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/highdpi/http/tests/devtools/elements/highlight/highlight-node-expected.txt
@@ -288,6 +288,102 @@
     "showAccessibilityInfo": true
   }
 }
+inspectedElement with HWB format{
+  "paths": [
+    {
+      "path": [
+        "M",
+        30,
+        30,
+        "L",
+        230,
+        30,
+        "L",
+        230,
+        230,
+        "L",
+        30,
+        230,
+        "Z"
+      ],
+      "fillColor": "rgba(255, 0, 0, 0)",
+      "outlineColor": "rgba(128, 0, 0, 0)",
+      "name": "content"
+    },
+    {
+      "path": [
+        "M",
+        15,
+        15,
+        "L",
+        245,
+        15,
+        "L",
+        245,
+        245,
+        "L",
+        15,
+        245,
+        "Z"
+      ],
+      "fillColor": "rgba(0, 255, 0, 0)",
+      "name": "padding"
+    },
+    {
+      "path": [
+        "M",
+        5,
+        5,
+        "L",
+        255,
+        5,
+        "L",
+        255,
+        255,
+        "L",
+        5,
+        255,
+        "Z"
+      ],
+      "fillColor": "rgba(0, 0, 255, 0)",
+      "name": "border"
+    },
+    {
+      "path": [
+        "M",
+        0,
+        0,
+        "L",
+        260,
+        0,
+        "L",
+        260,
+        260,
+        "L",
+        0,
+        260,
+        "Z"
+      ],
+      "fillColor": "rgba(255, 255, 255, 0)",
+      "name": "margin"
+    }
+  ],
+  "showRulers": true,
+  "showExtensionLines": true,
+  "showAccessibilityInfo": true,
+  "colorFormat": "hwb",
+  "elementInfo": {
+    "tagName": "div",
+    "idValue": "inspectedElement",
+    "nodeWidth": "250",
+    "nodeHeight": "250",
+    "isKeyboardFocusable": false,
+    "accessibleName": "",
+    "accessibleRole": "generic",
+    "layoutObjectName": "LayoutBlockFlow",
+    "showAccessibilityInfo": true
+  }
+}
 
 First text node{
   "paths": [
diff --git a/third_party/blink/web_tests/http/tests/devtools/elements/highlight/highlight-node.js b/third_party/blink/web_tests/http/tests/devtools/elements/highlight/highlight-node.js
index 84511d0..df7d74e 100644
--- a/third_party/blink/web_tests/http/tests/devtools/elements/highlight/highlight-node.js
+++ b/third_party/blink/web_tests/http/tests/devtools/elements/highlight/highlight-node.js
@@ -43,6 +43,7 @@
   await nodeResolved(div, 'inspectedElement');
   await nodeResolved(div, 'inspectedElement with RGB format', 'rgb');
   await nodeResolved(div, 'inspectedElement with HSL format', 'hsl');
+  await nodeResolved(div, 'inspectedElement with HWB format', 'hwb');
 
   let textNode = await ElementsTestRunner.findNodePromise(node => {
       return node.nodeType() === Node.TEXT_NODE && node.parentNode && node.parentNode.nodeName() === 'P' && node.parentNode.children()[0] === node;
diff --git a/third_party/blink/web_tests/http/tests/worklet/webexposed/global-interface-listing-layout-worklet-expected.txt b/third_party/blink/web_tests/http/tests/worklet/webexposed/global-interface-listing-layout-worklet-expected.txt
index b0da4e5..7372338e8 100644
--- a/third_party/blink/web_tests/http/tests/worklet/webexposed/global-interface-listing-layout-worklet-expected.txt
+++ b/third_party/blink/web_tests/http/tests/worklet/webexposed/global-interface-listing-layout-worklet-expected.txt
@@ -9,6 +9,7 @@
 CONSOLE MESSAGE:     attribute @@toStringTag
 CONSOLE MESSAGE:     method constructor
 CONSOLE MESSAGE:     method toHSL
+CONSOLE MESSAGE:     method toHWB
 CONSOLE MESSAGE:     method toRGB
 CONSOLE MESSAGE: interface CSSHSL : CSSColorValue
 CONSOLE MESSAGE:     attribute @@toStringTag
@@ -21,6 +22,17 @@
 CONSOLE MESSAGE:     setter h
 CONSOLE MESSAGE:     setter l
 CONSOLE MESSAGE:     setter s
+CONSOLE MESSAGE: interface CSSHWB : CSSColorValue
+CONSOLE MESSAGE:     attribute @@toStringTag
+CONSOLE MESSAGE:     getter alpha
+CONSOLE MESSAGE:     getter b
+CONSOLE MESSAGE:     getter h
+CONSOLE MESSAGE:     getter w
+CONSOLE MESSAGE:     method constructor
+CONSOLE MESSAGE:     setter alpha
+CONSOLE MESSAGE:     setter b
+CONSOLE MESSAGE:     setter h
+CONSOLE MESSAGE:     setter w
 CONSOLE MESSAGE: interface CSSImageValue : CSSStyleValue
 CONSOLE MESSAGE:     attribute @@toStringTag
 CONSOLE MESSAGE:     method constructor
@@ -349,6 +361,7 @@
 CONSOLE MESSAGE:     attribute @@toStringTag
 CONSOLE MESSAGE:     method constructor
 CONSOLE MESSAGE:     method toHSL
+CONSOLE MESSAGE:     method toHWB
 CONSOLE MESSAGE:     method toRGB
 CONSOLE MESSAGE: interface CSSHSL : CSSColorValue
 CONSOLE MESSAGE:     attribute @@toStringTag
@@ -361,6 +374,17 @@
 CONSOLE MESSAGE:     setter h
 CONSOLE MESSAGE:     setter l
 CONSOLE MESSAGE:     setter s
+CONSOLE MESSAGE: interface CSSHWB : CSSColorValue
+CONSOLE MESSAGE:     attribute @@toStringTag
+CONSOLE MESSAGE:     getter alpha
+CONSOLE MESSAGE:     getter b
+CONSOLE MESSAGE:     getter h
+CONSOLE MESSAGE:     getter w
+CONSOLE MESSAGE:     method constructor
+CONSOLE MESSAGE:     setter alpha
+CONSOLE MESSAGE:     setter b
+CONSOLE MESSAGE:     setter h
+CONSOLE MESSAGE:     setter w
 CONSOLE MESSAGE: interface CSSImageValue : CSSStyleValue
 CONSOLE MESSAGE:     attribute @@toStringTag
 CONSOLE MESSAGE:     method constructor
diff --git a/third_party/blink/web_tests/http/tests/worklet/webexposed/global-interface-listing-paint-worklet-expected.txt b/third_party/blink/web_tests/http/tests/worklet/webexposed/global-interface-listing-paint-worklet-expected.txt
index d1fd1f33..da9b9b9 100644
--- a/third_party/blink/web_tests/http/tests/worklet/webexposed/global-interface-listing-paint-worklet-expected.txt
+++ b/third_party/blink/web_tests/http/tests/worklet/webexposed/global-interface-listing-paint-worklet-expected.txt
@@ -9,6 +9,7 @@
 CONSOLE MESSAGE:     attribute @@toStringTag
 CONSOLE MESSAGE:     method constructor
 CONSOLE MESSAGE:     method toHSL
+CONSOLE MESSAGE:     method toHWB
 CONSOLE MESSAGE:     method toRGB
 CONSOLE MESSAGE: interface CSSHSL : CSSColorValue
 CONSOLE MESSAGE:     attribute @@toStringTag
@@ -21,6 +22,17 @@
 CONSOLE MESSAGE:     setter h
 CONSOLE MESSAGE:     setter l
 CONSOLE MESSAGE:     setter s
+CONSOLE MESSAGE: interface CSSHWB : CSSColorValue
+CONSOLE MESSAGE:     attribute @@toStringTag
+CONSOLE MESSAGE:     getter alpha
+CONSOLE MESSAGE:     getter b
+CONSOLE MESSAGE:     getter h
+CONSOLE MESSAGE:     getter w
+CONSOLE MESSAGE:     method constructor
+CONSOLE MESSAGE:     setter alpha
+CONSOLE MESSAGE:     setter b
+CONSOLE MESSAGE:     setter h
+CONSOLE MESSAGE:     setter w
 CONSOLE MESSAGE: interface CSSImageValue : CSSStyleValue
 CONSOLE MESSAGE:     attribute @@toStringTag
 CONSOLE MESSAGE:     method constructor
@@ -408,6 +420,7 @@
 CONSOLE MESSAGE:     attribute @@toStringTag
 CONSOLE MESSAGE:     method constructor
 CONSOLE MESSAGE:     method toHSL
+CONSOLE MESSAGE:     method toHWB
 CONSOLE MESSAGE:     method toRGB
 CONSOLE MESSAGE: interface CSSHSL : CSSColorValue
 CONSOLE MESSAGE:     attribute @@toStringTag
@@ -420,6 +433,17 @@
 CONSOLE MESSAGE:     setter h
 CONSOLE MESSAGE:     setter l
 CONSOLE MESSAGE:     setter s
+CONSOLE MESSAGE: interface CSSHWB : CSSColorValue
+CONSOLE MESSAGE:     attribute @@toStringTag
+CONSOLE MESSAGE:     getter alpha
+CONSOLE MESSAGE:     getter b
+CONSOLE MESSAGE:     getter h
+CONSOLE MESSAGE:     getter w
+CONSOLE MESSAGE:     method constructor
+CONSOLE MESSAGE:     setter alpha
+CONSOLE MESSAGE:     setter b
+CONSOLE MESSAGE:     setter h
+CONSOLE MESSAGE:     setter w
 CONSOLE MESSAGE: interface CSSImageValue : CSSStyleValue
 CONSOLE MESSAGE:     attribute @@toStringTag
 CONSOLE MESSAGE:     method constructor
diff --git a/third_party/blink/web_tests/platform/mac/http/tests/devtools/elements/highlight/highlight-node-expected.txt b/third_party/blink/web_tests/platform/mac/http/tests/devtools/elements/highlight/highlight-node-expected.txt
index d2727eb..f5b5894 100644
--- a/third_party/blink/web_tests/platform/mac/http/tests/devtools/elements/highlight/highlight-node-expected.txt
+++ b/third_party/blink/web_tests/platform/mac/http/tests/devtools/elements/highlight/highlight-node-expected.txt
@@ -288,6 +288,102 @@
     "showAccessibilityInfo": true
   }
 }
+inspectedElement with HWB format{
+  "paths": [
+    {
+      "path": [
+        "M",
+        30,
+        30,
+        "L",
+        230,
+        30,
+        "L",
+        230,
+        230,
+        "L",
+        30,
+        230,
+        "Z"
+      ],
+      "fillColor": "rgba(255, 0, 0, 0)",
+      "outlineColor": "rgba(128, 0, 0, 0)",
+      "name": "content"
+    },
+    {
+      "path": [
+        "M",
+        15,
+        15,
+        "L",
+        245,
+        15,
+        "L",
+        245,
+        245,
+        "L",
+        15,
+        245,
+        "Z"
+      ],
+      "fillColor": "rgba(0, 255, 0, 0)",
+      "name": "padding"
+    },
+    {
+      "path": [
+        "M",
+        5,
+        5,
+        "L",
+        255,
+        5,
+        "L",
+        255,
+        255,
+        "L",
+        5,
+        255,
+        "Z"
+      ],
+      "fillColor": "rgba(0, 0, 255, 0)",
+      "name": "border"
+    },
+    {
+      "path": [
+        "M",
+        0,
+        0,
+        "L",
+        260,
+        0,
+        "L",
+        260,
+        260,
+        "L",
+        0,
+        260,
+        "Z"
+      ],
+      "fillColor": "rgba(255, 255, 255, 0)",
+      "name": "margin"
+    }
+  ],
+  "showRulers": true,
+  "showExtensionLines": true,
+  "showAccessibilityInfo": true,
+  "colorFormat": "hwb",
+  "elementInfo": {
+    "tagName": "div",
+    "idValue": "inspectedElement",
+    "nodeWidth": "250",
+    "nodeHeight": "250",
+    "isKeyboardFocusable": false,
+    "accessibleName": "",
+    "accessibleRole": "generic",
+    "layoutObjectName": "LayoutNGBlockFlow",
+    "showAccessibilityInfo": true
+  }
+}
 
 First text node{
   "paths": [
diff --git a/third_party/blink/web_tests/platform/win/http/tests/devtools/elements/highlight/highlight-node-expected.txt b/third_party/blink/web_tests/platform/win/http/tests/devtools/elements/highlight/highlight-node-expected.txt
index a3aa7c2..2ddfb5f 100644
--- a/third_party/blink/web_tests/platform/win/http/tests/devtools/elements/highlight/highlight-node-expected.txt
+++ b/third_party/blink/web_tests/platform/win/http/tests/devtools/elements/highlight/highlight-node-expected.txt
@@ -288,6 +288,102 @@
     "showAccessibilityInfo": true
   }
 }
+inspectedElement with HWB format{
+  "paths": [
+    {
+      "path": [
+        "M",
+        30,
+        30,
+        "L",
+        230,
+        30,
+        "L",
+        230,
+        230,
+        "L",
+        30,
+        230,
+        "Z"
+      ],
+      "fillColor": "rgba(255, 0, 0, 0)",
+      "outlineColor": "rgba(128, 0, 0, 0)",
+      "name": "content"
+    },
+    {
+      "path": [
+        "M",
+        15,
+        15,
+        "L",
+        245,
+        15,
+        "L",
+        245,
+        245,
+        "L",
+        15,
+        245,
+        "Z"
+      ],
+      "fillColor": "rgba(0, 255, 0, 0)",
+      "name": "padding"
+    },
+    {
+      "path": [
+        "M",
+        5,
+        5,
+        "L",
+        255,
+        5,
+        "L",
+        255,
+        255,
+        "L",
+        5,
+        255,
+        "Z"
+      ],
+      "fillColor": "rgba(0, 0, 255, 0)",
+      "name": "border"
+    },
+    {
+      "path": [
+        "M",
+        0,
+        0,
+        "L",
+        260,
+        0,
+        "L",
+        260,
+        260,
+        "L",
+        0,
+        260,
+        "Z"
+      ],
+      "fillColor": "rgba(255, 255, 255, 0)",
+      "name": "margin"
+    }
+  ],
+  "showRulers": true,
+  "showExtensionLines": true,
+  "showAccessibilityInfo": true,
+  "colorFormat": "hwb",
+  "elementInfo": {
+    "tagName": "div",
+    "idValue": "inspectedElement",
+    "nodeWidth": "250",
+    "nodeHeight": "250",
+    "isKeyboardFocusable": false,
+    "accessibleName": "",
+    "accessibleRole": "generic",
+    "layoutObjectName": "LayoutNGBlockFlow",
+    "showAccessibilityInfo": true
+  }
+}
 
 First text node{
   "paths": [
diff --git a/third_party/blink/web_tests/virtual/system-color-compute/external/wpt/css/css-color/color-resolving-hwb-expected.txt b/third_party/blink/web_tests/virtual/system-color-compute/external/wpt/css/css-color/color-resolving-hwb-expected.txt
index 3f4cd36c..a424f9ed 100644
--- a/third_party/blink/web_tests/virtual/system-color-compute/external/wpt/css/css-color/color-resolving-hwb-expected.txt
+++ b/third_party/blink/web_tests/virtual/system-color-compute/external/wpt/css/css-color/color-resolving-hwb-expected.txt
@@ -1,36 +1,36 @@
 This is a testharness.js-based test.
-FAIL HWB value should parse and round correctly: hwb(0 50% 50%) assert_equals: expected "rgb(128, 128, 128)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(30 50% 50%) assert_equals: expected "rgb(128, 128, 128)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(60 50% 50%) assert_equals: expected "rgb(128, 128, 128)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(90 50% 50%) assert_equals: expected "rgb(128, 128, 128)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(120 50% 50%) assert_equals: expected "rgb(128, 128, 128)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(180 50% 50%) assert_equals: expected "rgb(128, 128, 128)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(210 50% 50%) assert_equals: expected "rgb(128, 128, 128)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(240 50% 50%) assert_equals: expected "rgb(128, 128, 128)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(270 50% 50%) assert_equals: expected "rgb(128, 128, 128)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(300 50% 50%) assert_equals: expected "rgb(128, 128, 128)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(330 50% 50%) assert_equals: expected "rgb(128, 128, 128)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(360 50% 50%) assert_equals: expected "rgb(128, 128, 128)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(90deg 50% 50%) assert_equals: expected "rgb(128, 128, 128)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(90 0% 50%) assert_equals: expected "rgb(64, 128, 0)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(90 12.5% 50%) assert_equals: expected "rgb(80, 128, 32)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(90 25% 50%) assert_equals: expected "rgb(96, 128, 64)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(90 37.5% 50%) assert_equals: expected "rgb(112, 128, 96)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(90 62.5% 50%) assert_equals: expected "rgb(142, 142, 142)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(90 75% 50%) assert_equals: expected "rgb(153, 153, 153)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(90 87.5% 50%) assert_equals: expected "rgb(162, 162, 162)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(90 100% 50%) assert_equals: expected "rgb(170, 170, 170)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(90 50% 0%) assert_equals: expected "rgb(191, 255, 128)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(90 50% 12.5%) assert_equals: expected "rgb(175, 223, 128)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(90 50% 25%) assert_equals: expected "rgb(159, 191, 128)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(90 50% 37.5%) assert_equals: expected "rgb(143, 159, 128)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(90 50% 62.5%) assert_equals: expected "rgb(113, 113, 113)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(90 50% 75%) assert_equals: expected "rgb(102, 102, 102)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(90 50% 87.5%) assert_equals: expected "rgb(93, 93, 93)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(90 50% 100%) assert_equals: expected "rgb(85, 85, 85)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(90 50% 50% / 0) assert_equals: expected "rgba(128, 128, 128, 0)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(90 50% 50% / 0.2) assert_equals: expected "rgba(128, 128, 128, 0.2)" but got "rgb(12, 34, 223)"
-FAIL HWB value should parse and round correctly: hwb(90 50% 50% / 1) assert_equals: expected "rgb(128, 128, 128)" but got "rgb(12, 34, 223)"
+PASS HWB value should parse and round correctly: hwb(0 50% 50%)
+PASS HWB value should parse and round correctly: hwb(30 50% 50%)
+PASS HWB value should parse and round correctly: hwb(60 50% 50%)
+PASS HWB value should parse and round correctly: hwb(90 50% 50%)
+PASS HWB value should parse and round correctly: hwb(120 50% 50%)
+PASS HWB value should parse and round correctly: hwb(180 50% 50%)
+PASS HWB value should parse and round correctly: hwb(210 50% 50%)
+PASS HWB value should parse and round correctly: hwb(240 50% 50%)
+PASS HWB value should parse and round correctly: hwb(270 50% 50%)
+PASS HWB value should parse and round correctly: hwb(300 50% 50%)
+PASS HWB value should parse and round correctly: hwb(330 50% 50%)
+PASS HWB value should parse and round correctly: hwb(360 50% 50%)
+PASS HWB value should parse and round correctly: hwb(90deg 50% 50%)
+PASS HWB value should parse and round correctly: hwb(90 0% 50%)
+PASS HWB value should parse and round correctly: hwb(90 12.5% 50%)
+PASS HWB value should parse and round correctly: hwb(90 25% 50%)
+PASS HWB value should parse and round correctly: hwb(90 37.5% 50%)
+PASS HWB value should parse and round correctly: hwb(90 62.5% 50%)
+PASS HWB value should parse and round correctly: hwb(90 75% 50%)
+PASS HWB value should parse and round correctly: hwb(90 87.5% 50%)
+PASS HWB value should parse and round correctly: hwb(90 100% 50%)
+PASS HWB value should parse and round correctly: hwb(90 50% 0%)
+PASS HWB value should parse and round correctly: hwb(90 50% 12.5%)
+PASS HWB value should parse and round correctly: hwb(90 50% 25%)
+PASS HWB value should parse and round correctly: hwb(90 50% 37.5%)
+PASS HWB value should parse and round correctly: hwb(90 50% 62.5%)
+PASS HWB value should parse and round correctly: hwb(90 50% 75%)
+PASS HWB value should parse and round correctly: hwb(90 50% 87.5%)
+PASS HWB value should parse and round correctly: hwb(90 50% 100%)
+PASS HWB value should parse and round correctly: hwb(90 50% 50% / 0)
+PASS HWB value should parse and round correctly: hwb(90 50% 50% / 0.2)
+PASS HWB value should parse and round correctly: hwb(90 50% 50% / 1)
 PASS HWB value with commas should not be parsed: hwb(90deg, 50%, 50%)
 PASS HWB value with commas should not be parsed: hwb(90deg, 50%, 50%, 0.2)
 PASS HWB value with commas should not be parsed: hwb(90, 50%, 50%)
diff --git a/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt b/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt
index 4301ca8..2ee5f699 100644
--- a/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt
+++ b/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt
@@ -696,6 +696,7 @@
     attribute @@toStringTag
     method constructor
     method toHSL
+    method toHWB
     method toRGB
 interface CSSConditionRule : CSSGroupingRule
     attribute @@toStringTag
@@ -757,6 +758,17 @@
     setter h
     setter l
     setter s
+interface CSSHWB : CSSColorValue
+    attribute @@toStringTag
+    getter alpha
+    getter b
+    getter h
+    getter w
+    method constructor
+    setter alpha
+    setter b
+    setter h
+    setter w
 interface CSSImageValue : CSSStyleValue
     attribute @@toStringTag
     method constructor
diff --git a/tools/add_header.py b/tools/add_header.py
index 8eecf17..e28dd5e 100755
--- a/tools/add_header.py
+++ b/tools/add_header.py
@@ -249,7 +249,8 @@
 
 
 _PLATFORM_SUFFIX = (
-    r'(?:_(?:android|aura|chromeos|ios|linux|mac|ozone|posix|win|x11))?')
+    r'(?:_(?:android|aura|chromeos|fuchsia|ios|linux|mac|ozone|posix|win|x11))?'
+)
 _TEST_SUFFIX = r'(?:_(?:browser|interactive_ui|ui|unit)?test)?'
 
 
diff --git a/tools/perf/expectations.config b/tools/perf/expectations.config
index 32463c97..79572f0b 100644
--- a/tools/perf/expectations.config
+++ b/tools/perf/expectations.config
@@ -42,7 +42,6 @@
 
 # Benchmark: blink_perf.css
 crbug.com/891878 [ android-nexus-5x android-webview ] blink_perf.css/CustomPropertiesVarAlias.html [ Skip ]
-crbug.com/1300672 blink_perf.css/HasSiblingDescendantInvalidation.html [ Skip ]
 
 # Benchmark: blink_perf.events
 crbug.com/963945 [ android-nexus-5x android-webview ] blink_perf.events/EventsDispatchingInDeeplyNestedV1ShadowTrees.html [ Skip ]
diff --git a/ui/accessibility/ax_generated_tree_unittest.cc b/ui/accessibility/ax_generated_tree_unittest.cc
index b15731f..20e66126 100644
--- a/ui/accessibility/ax_generated_tree_unittest.cc
+++ b/ui/accessibility/ax_generated_tree_unittest.cc
@@ -6,7 +6,6 @@
 #include <numeric>
 #include <vector>
 
-#include "base/cxx17_backports.h"
 #include "base/strings/string_number_conversions.h"
 #include "build/build_config.h"
 #include "testing/gtest/include/gtest/gtest-param-test.h"
@@ -136,7 +135,7 @@
   // clang-format on
 
   int n = generator.UniqueTreeCount();
-  ASSERT_EQ(static_cast<int>(base::size(EXPECTED_TREES)), n);
+  ASSERT_EQ(static_cast<int>(std::size(EXPECTED_TREES)), n);
 
   for (int i = 0; i < n; ++i) {
     AXTree tree;
@@ -208,7 +207,7 @@
   // clang-format on
 
   int n = generator.UniqueTreeCount();
-  ASSERT_EQ(static_cast<int>(base::size(EXPECTED_TREES)), n);
+  ASSERT_EQ(static_cast<int>(std::size(EXPECTED_TREES)), n);
 
   for (int i = 0; i < n; i++) {
     AXTree tree;
diff --git a/ui/accessibility/platform/inspect/ax_event_recorder_win_uia.cc b/ui/accessibility/platform/inspect/ax_event_recorder_win_uia.cc
index 3a9cd55..94fb5230f 100644
--- a/ui/accessibility/platform/inspect/ax_event_recorder_win_uia.cc
+++ b/ui/accessibility/platform/inspect/ax_event_recorder_win_uia.cc
@@ -50,11 +50,11 @@
   auto str = base::WideToUTF8(UiaIdentifierToString(id));
   // Remove UIA_ prefix, and EventId/PropertyId suffixes
   if (base::StartsWith(str, "UIA_", base::CompareCase::SENSITIVE))
-    str = str.substr(base::size("UIA_") - 1);
+    str = str.substr(std::size("UIA_") - 1);
   if (base::EndsWith(str, "EventId", base::CompareCase::SENSITIVE))
-    str = str.substr(0, str.size() - base::size("EventId") + 1);
+    str = str.substr(0, str.size() - std::size("EventId") + 1);
   if (base::EndsWith(str, "PropertyId", base::CompareCase::SENSITIVE))
-    str = str.substr(0, str.size() - base::size("PropertyId") + 1);
+    str = str.substr(0, str.size() - std::size("PropertyId") + 1);
   return str;
 }
 
diff --git a/ui/accessibility/platform/inspect/ax_inspect_utils_auralinux.cc b/ui/accessibility/platform/inspect/ax_inspect_utils_auralinux.cc
index 42c6ba2..b0e27b57 100644
--- a/ui/accessibility/platform/inspect/ax_inspect_utils_auralinux.cc
+++ b/ui/accessibility/platform/inspect/ax_inspect_utils_auralinux.cc
@@ -8,7 +8,6 @@
 #include <utility>
 #include <vector>
 
-#include "base/cxx17_backports.h"
 #include "base/logging.h"
 #include "base/strings/pattern.h"
 #include "ui/accessibility/platform/inspect/ax_inspect.h"
@@ -109,8 +108,7 @@
 #endif
   };
 
-  return GetNameForPlatformConstant(state_table, base::size(state_table),
-                                    state);
+  return GetNameForPlatformConstant(state_table, std::size(state_table), state);
 }
 
 const char* ATSPIRoleToString(AtspiRole role) {
@@ -251,7 +249,7 @@
 #endif
   };
 
-  return GetNameForPlatformConstant(role_table, base::size(role_table), role);
+  return GetNameForPlatformConstant(role_table, std::size(role_table), role);
 }
 
 // This is used to ensure a standard set of AtkRole name conversions between
diff --git a/ui/accessibility/platform/inspect/ax_inspect_utils_win.cc b/ui/accessibility/platform/inspect/ax_inspect_utils_win.cc
index cebeaa789..7f4c455 100644
--- a/ui/accessibility/platform/inspect/ax_inspect_utils_win.cc
+++ b/ui/accessibility/platform/inspect/ax_inspect_utils_win.cc
@@ -9,7 +9,6 @@
 #include <map>
 #include <string>
 
-#include "base/cxx17_backports.h"
 #include "base/logging.h"
 #include "base/memory/singleton.h"
 #include "base/strings/pattern.h"
@@ -103,7 +102,7 @@
       QUOTE(ROLE_SYSTEM_WHITESPACE),     QUOTE(ROLE_SYSTEM_WINDOW),
   };
 
-  return GetNameForPlatformConstant(ia_table, base::size(ia_table), ia_role);
+  return GetNameForPlatformConstant(ia_table, std::size(ia_table), ia_role);
 }
 
 AX_EXPORT std::wstring IAccessible2RoleToString(int32_t ia2_role) {
@@ -167,7 +166,7 @@
       QUOTE(IA2_ROLE_COMMENT),
   };
 
-  return GetNameForPlatformConstant(ia2_table, base::size(ia2_table), ia2_role);
+  return GetNameForPlatformConstant(ia2_table, std::size(ia2_table), ia2_role);
 }
 
 AX_EXPORT std::wstring AccessibilityEventToString(int32_t event) {
@@ -244,8 +243,7 @@
       QUOTE(IA2_EVENT_ROLE_CHANGED),
   };
 
-  return GetNameForPlatformConstant(event_table, base::size(event_table),
-                                    event);
+  return GetNameForPlatformConstant(event_table, std::size(event_table), event);
 }
 
 void IAccessibleStateToStringVector(int32_t ia_state,
@@ -668,21 +666,21 @@
       QUOTE(UIA_AppBarControlTypeId),
   };
 
-  return GetNameForPlatformConstant(id_table, base::size(id_table), identifier);
+  return GetNameForPlatformConstant(id_table, std::size(id_table), identifier);
 }
 
 AX_EXPORT std::wstring UiaOrientationToString(int32_t identifier) {
   static const PlatformConstantToNameEntry id_table[] = {
       QUOTE(OrientationType_None), QUOTE(OrientationType_Horizontal),
       QUOTE(OrientationType_Vertical)};
-  return GetNameForPlatformConstant(id_table, base::size(id_table), identifier);
+  return GetNameForPlatformConstant(id_table, std::size(id_table), identifier);
 }
 
 AX_EXPORT std::wstring UiaLiveSettingToString(int32_t identifier) {
   static const PlatformConstantToNameEntry id_table[] = {
       QUOTE(LiveSetting::Off), QUOTE(LiveSetting::Polite),
       QUOTE(LiveSetting::Assertive)};
-  return GetNameForPlatformConstant(id_table, base::size(id_table), identifier);
+  return GetNameForPlatformConstant(id_table, std::size(id_table), identifier);
 }
 
 AX_EXPORT std::string BstrToUTF8(BSTR bstr) {
diff --git a/ui/aura/cursor/cursors_aura.cc b/ui/aura/cursor/cursors_aura.cc
index ad4e257..033fb43 100644
--- a/ui/aura/cursor/cursors_aura.cc
+++ b/ui/aura/cursor/cursors_aura.cc
@@ -6,7 +6,6 @@
 
 #include <stddef.h>
 
-#include "base/cxx17_backports.h"
 #include "build/build_config.h"
 #include "third_party/skia/include/core/SkBitmap.h"
 #include "ui/base/cursor/cursor.h"
@@ -273,12 +272,12 @@
 };
 
 const CursorSizeData kCursorSizes[] = {
-    {ui::CursorSize::kNormal, kNormalCursors, base::size(kNormalCursors)},
-    {ui::CursorSize::kLarge, kLargeCursors, base::size(kLargeCursors)},
+    {ui::CursorSize::kNormal, kNormalCursors, std::size(kNormalCursors)},
+    {ui::CursorSize::kLarge, kLargeCursors, std::size(kLargeCursors)},
 };
 
 const CursorSizeData* GetCursorSizeByType(ui::CursorSize cursor_size) {
-  for (size_t i = 0; i < base::size(kCursorSizes); ++i) {
+  for (size_t i = 0; i < std::size(kCursorSizes); ++i) {
     if (kCursorSizes[i].id == cursor_size)
       return &kCursorSizes[i];
   }
diff --git a/ui/base/accelerators/accelerator_manager_unittest.cc b/ui/base/accelerators/accelerator_manager_unittest.cc
index b297528..a8e60f89 100644
--- a/ui/base/accelerators/accelerator_manager_unittest.cc
+++ b/ui/base/accelerators/accelerator_manager_unittest.cc
@@ -4,7 +4,6 @@
 
 #include "ui/base/accelerators/accelerator_manager.h"
 
-#include "base/cxx17_backports.h"
 #include "base/test/scoped_feature_list.h"
 #include "build/build_config.h"
 #include "build/chromeos_buildflags.h"
@@ -32,7 +31,7 @@
 // kAcceleratorModifiers used to determine which flags are set.
 int BuildAcceleratorModifier(int id) {
   int result = 0;
-  for (size_t i = 0; i < base::size(kAcceleratorModifiers); ++i) {
+  for (size_t i = 0; i < std::size(kAcceleratorModifiers); ++i) {
     if (((1 << i) & id) != 0)
       result |= kAcceleratorModifiers[i];
   }
@@ -130,7 +129,7 @@
   TestAcceleratorTarget target;
 
   // Test all cases of possible modifiers.
-  for (size_t i = 0; i < (1 << base::size(kAcceleratorModifiers)); ++i) {
+  for (size_t i = 0; i < (1 << std::size(kAcceleratorModifiers)); ++i) {
     const int modifiers = BuildAcceleratorModifier(i);
     Accelerator accelerator(GetAccelerator(VKEY_A, modifiers));
     manager_.Register({accelerator}, AcceleratorManager::kNormalPriority,
@@ -152,7 +151,7 @@
     EXPECT_FALSE(manager_.Process(GetAccelerator(VKEY_SHIFT, modifiers)))
         << i;  // different vkey
 
-    for (size_t test_i = 0; test_i < (1 << base::size(kAcceleratorModifiers));
+    for (size_t test_i = 0; test_i < (1 << std::size(kAcceleratorModifiers));
          ++test_i) {
       if (test_i == i)
         continue;
diff --git a/ui/base/accelerators/menu_label_accelerator_util_linux_unittest.cc b/ui/base/accelerators/menu_label_accelerator_util_linux_unittest.cc
index 83ab48f..8cbdce4 100644
--- a/ui/base/accelerators/menu_label_accelerator_util_linux_unittest.cc
+++ b/ui/base/accelerators/menu_label_accelerator_util_linux_unittest.cc
@@ -6,7 +6,6 @@
 
 #include <stddef.h>
 
-#include "base/cxx17_backports.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace ui {
@@ -24,7 +23,7 @@
     { "&foo &&bar", "_foo &bar" },
     { "&foo &bar", "_foo _bar" },
   };
-  for (size_t i = 0; i < base::size(cases); ++i) {
+  for (size_t i = 0; i < std::size(cases); ++i) {
     std::string result = ConvertAcceleratorsFromWindowsStyle(cases[i].input);
     EXPECT_EQ(cases[i].output, result);
   }
@@ -43,7 +42,7 @@
     { "&foo &&bar", "foo &bar" },
     { "&foo &bar", "foo bar" },
   };
-  for (size_t i = 0; i < base::size(cases); ++i) {
+  for (size_t i = 0; i < std::size(cases); ++i) {
     std::string result = RemoveWindowsStyleAccelerators(cases[i].input);
     EXPECT_EQ(cases[i].output, result);
   }
diff --git a/ui/base/clipboard/clipboard_util_win.cc b/ui/base/clipboard/clipboard_util_win.cc
index 4acce28..6ae3176 100644
--- a/ui/base/clipboard/clipboard_util_win.cc
+++ b/ui/base/clipboard/clipboard_util_win.cc
@@ -7,11 +7,11 @@
 #include <shellapi.h>
 #include <wininet.h>  // For INTERNET_MAX_URL_LENGTH.
 #include <wrl/client.h>
+
 #include <algorithm>
 #include <limits>
 #include <utility>
 
-#include "base/cxx17_backports.h"
 #include "base/files/file_util.h"
 #include "base/logging.h"
 #include "base/strings/string_util.h"
@@ -65,11 +65,11 @@
       return false;
 
     wchar_t filename[MAX_PATH];
-    if (DragQueryFileW(hdrop.get(), 0, filename, base::size(filename))) {
+    if (DragQueryFileW(hdrop.get(), 0, filename, std::size(filename))) {
       wchar_t url_buffer[INTERNET_MAX_URL_LENGTH];
       if (0 == _wcsicmp(PathFindExtensionW(filename), L".url") &&
           GetPrivateProfileStringW(L"InternetShortcut", L"url", 0, url_buffer,
-                                   base::size(url_buffer), filename)) {
+                                   std::size(url_buffer), filename)) {
         *url = GURL(base::AsStringPiece16(url_buffer));
         PathRemoveExtension(filename);
         title->assign(base::as_u16cstr(PathFindFileName(filename)));
diff --git a/ui/base/cocoa/constrained_window/constrained_window_animation.mm b/ui/base/cocoa/constrained_window/constrained_window_animation.mm
index c894456..ae33e46 100644
--- a/ui/base/cocoa/constrained_window/constrained_window_animation.mm
+++ b/ui/base/cocoa/constrained_window/constrained_window_animation.mm
@@ -7,7 +7,6 @@
 #include <stdint.h>
 #include <stdlib.h>
 
-#include "base/cxx17_backports.h"
 #include "base/files/file_path.h"
 #include "base/location.h"
 #import "base/mac/foundation_util.h"
@@ -338,7 +337,7 @@
   };
 
   CGFloat scale = 1;
-  for (int i = base::size(frames) - 1; i >= 0; --i) {
+  for (int i = std::size(frames) - 1; i >= 0; --i) {
     if (value >= frames[i].value) {
       CGFloat delta = frames[i + 1].value - frames[i].value;
       CGFloat frame_progress = (value - frames[i].value) / delta;
diff --git a/ui/base/dragdrop/os_exchange_data_provider_win.cc b/ui/base/dragdrop/os_exchange_data_provider_win.cc
index 8cabb84..c6536868 100644
--- a/ui/base/dragdrop/os_exchange_data_provider_win.cc
+++ b/ui/base/dragdrop/os_exchange_data_provider_win.cc
@@ -18,7 +18,6 @@
 #include "base/callback.h"
 #include "base/check_op.h"
 #include "base/containers/span.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_path.h"
 #include "base/i18n/file_util_icu.h"
 #include "base/no_destructor.h"
@@ -1262,7 +1261,7 @@
 
   // Maximum length of title after truncation.
   static constexpr size_t kMaxFileTitleLength =
-      kMaxFileNameLength - base::size(kExtension);
+      kMaxFileNameLength - std::size(kExtension);
 
   if (validated.size() > kMaxFileTitleLength)
     validated.erase(kMaxFileTitleLength);
diff --git a/ui/base/ime/ash/input_method_util.cc b/ui/base/ime/ash/input_method_util.cc
index 8caa1a3d..679b838 100644
--- a/ui/base/ime/ash/input_method_util.cc
+++ b/ui/base/ime/ash/input_method_util.cc
@@ -13,7 +13,6 @@
 #include <unordered_set>
 #include <utility>
 
-#include "base/cxx17_backports.h"
 #include "base/logging.h"
 #include "base/strings/string_split.h"
 #include "base/strings/string_util.h"
@@ -196,7 +195,7 @@
     {"xkb:us:workman:eng", IDS_STATUSBAR_LAYOUT_USA_WORKMAN},
 };
 const size_t kEnglishToResourceIdArraySize =
-    base::size(kEnglishToResourceIdArray);
+    std::size(kEnglishToResourceIdArray);
 
 const struct InputMethodNameMap {
   const char* message_name;
@@ -417,7 +416,7 @@
   const std::string& disp = descriptor.name();
   if (base::StartsWith(disp, "__MSG_", base::CompareCase::SENSITIVE)) {
     const InputMethodNameMap* map = kInputMethodNameMap;
-    size_t map_size = base::size(kInputMethodNameMap);
+    size_t map_size = std::size(kInputMethodNameMap);
     std::string name = base::ToUpperASCII(disp);
     const InputMethodNameMap map_key = {name.c_str(), 0};
     const InputMethodNameMap* p =
diff --git a/ui/base/ime/ash/input_method_util_unittest.cc b/ui/base/ime/ash/input_method_util_unittest.cc
index bd794a3..4b9cc1a 100644
--- a/ui/base/ime/ash/input_method_util_unittest.cc
+++ b/ui/base/ime/ash/input_method_util_unittest.cc
@@ -10,7 +10,6 @@
 #include <string>
 
 #include "base/bind.h"
-#include "base/cxx17_backports.h"
 #include "base/strings/utf_string_conversions.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/base/ime/ash/extension_ime_util.h"
@@ -347,8 +346,8 @@
 
   util_.MigrateInputMethods(&input_method_ids);
 
-  EXPECT_EQ(base::size(migration_cases), input_method_ids.size());
-  for (size_t i = 0; i < base::size(migration_cases); ++i) {
+  EXPECT_EQ(std::size(migration_cases), input_method_ids.size());
+  for (size_t i = 0; i < std::size(migration_cases); ++i) {
     EXPECT_EQ(
         extension_ime_util::GetInputMethodIDByEngineID(migration_cases[i][1]),
         input_method_ids[i]);
diff --git a/ui/base/ime/character_composer_unittest.cc b/ui/base/ime/character_composer_unittest.cc
index 48cdda7..77d17e3 100644
--- a/ui/base/ime/character_composer_unittest.cc
+++ b/ui/base/ime/character_composer_unittest.cc
@@ -412,7 +412,7 @@
   ExpectUnicodeKeyComposed(
       VKEY_RETURN, DomCode::ENTER, EF_NONE, '\r',
       std::u16string(kMusicalKeyboard,
-                     kMusicalKeyboard + base::size(kMusicalKeyboard)));
+                     kMusicalKeyboard + std::size(kMusicalKeyboard)));
 }
 
 TEST_F(CharacterComposerTest, HexadecimalCompositionPreedit) {
diff --git a/ui/base/ime/linux/composition_text_util_pango_unittest.cc b/ui/base/ime/linux/composition_text_util_pango_unittest.cc
index a4ecf86..c5e2adc 100644
--- a/ui/base/ime/linux/composition_text_util_pango_unittest.cc
+++ b/ui/base/ime/linux/composition_text_util_pango_unittest.cc
@@ -11,7 +11,6 @@
 #include <string>
 #include <utility>
 
-#include "base/cxx17_backports.h"
 #include "base/notreached.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/base/ime/composition_text.h"
@@ -118,7 +117,7 @@
 }
 
 TEST(CompositionTextUtilPangoTest, ExtractCompositionText) {
-  for (size_t i = 0; i < base::size(kTestData); ++i) {
+  for (size_t i = 0; i < std::size(kTestData); ++i) {
     const char* text = kTestData[i].text;
     const AttributeInfo* attrs = kTestData[i].attrs;
     SCOPED_TRACE(testing::Message() << "Testing:" << i
diff --git a/ui/base/ime/mojom/ime_mojom_traits_unittest.cc b/ui/base/ime/mojom/ime_mojom_traits_unittest.cc
index dc95d15a..75c6931 100644
--- a/ui/base/ime/mojom/ime_mojom_traits_unittest.cc
+++ b/ui/base/ime/mojom/ime_mojom_traits_unittest.cc
@@ -2,16 +2,14 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "ui/base/ime/mojom/ime_types_mojom_traits.h"
-
 #include <utility>
 
-#include "base/cxx17_backports.h"
 #include "base/test/task_environment.h"
 #include "mojo/public/cpp/bindings/receiver_set.h"
 #include "mojo/public/cpp/bindings/remote.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/base/ime/mojom/ime_mojom_traits_test.mojom.h"
+#include "ui/base/ime/mojom/ime_types_mojom_traits.h"
 
 namespace ui {
 
@@ -68,7 +66,7 @@
   };
 
   mojo::Remote<mojom::IMEStructTraitsTest> remote = GetTraitsTestRemote();
-  for (size_t i = 0; i < base::size(kTextInputTypes); i++) {
+  for (size_t i = 0; i < std::size(kTextInputTypes); i++) {
     ui::TextInputType type_out;
     ASSERT_TRUE(remote->EchoTextInputType(kTextInputTypes[i], &type_out));
     EXPECT_EQ(kTextInputTypes[i], type_out);
diff --git a/ui/base/ime/win/tsf_bridge.cc b/ui/base/ime/win/tsf_bridge.cc
index e180d8a..1d629d46 100644
--- a/ui/base/ime/win/tsf_bridge.cc
+++ b/ui/base/ime/win/tsf_bridge.cc
@@ -2,11 +2,12 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "ui/base/ime/win/tsf_bridge.h"
+
 #include <msctf.h>
 
 #include <map>
 
-#include "base/cxx17_backports.h"
 #include "base/logging.h"
 #include "base/memory/raw_ptr.h"
 #include "base/memory/ref_counted.h"
@@ -18,7 +19,6 @@
 #include "ui/base/ime/input_method_delegate.h"
 #include "ui/base/ime/text_input_client.h"
 #include "ui/base/ime/win/mock_tsf_bridge.h"
-#include "ui/base/ime/win/tsf_bridge.h"
 #include "ui/base/ime/win/tsf_text_store.h"
 #include "ui/base/ui_base_features.h"
 
@@ -493,7 +493,7 @@
       TEXT_INPUT_TYPE_EMAIL,     TEXT_INPUT_TYPE_NUMBER,
       TEXT_INPUT_TYPE_TELEPHONE, TEXT_INPUT_TYPE_URL,
   };
-  for (size_t i = 0; i < base::size(kTextInputTypes); ++i) {
+  for (size_t i = 0; i < std::size(kTextInputTypes); ++i) {
     const TextInputType input_type = kTextInputTypes[i];
     Microsoft::WRL::ComPtr<ITfContext> context;
     Microsoft::WRL::ComPtr<ITfDocumentMgr> document_manager;
diff --git a/ui/base/ime/win/tsf_bridge.h b/ui/base/ime/win/tsf_bridge.h
index 072fe08..c5df58da 100644
--- a/ui/base/ime/win/tsf_bridge.h
+++ b/ui/base/ime/win/tsf_bridge.h
@@ -10,6 +10,7 @@
 #include <wrl/client.h>
 
 #include "base/component_export.h"
+#include "ui/base/ime/input_method_delegate.h"
 
 namespace ui {
 class TextInputClient;
diff --git a/ui/base/ime/win/tsf_text_store_unittest.cc b/ui/base/ime/win/tsf_text_store_unittest.cc
index af57883..54fcad9 100644
--- a/ui/base/ime/win/tsf_text_store_unittest.cc
+++ b/ui/base/ime/win/tsf_text_store_unittest.cc
@@ -12,7 +12,6 @@
 
 #include <vector>
 
-#include "base/cxx17_backports.h"
 #include "base/memory/ref_counted.h"
 #include "base/win/scoped_com_initializer.h"
 #include "base/win/scoped_variant.h"
@@ -1466,11 +1465,11 @@
 
   const TS_ATTRID kUnknownAttributes[] = {GUID_NULL};
   EXPECT_HRESULT_FAILED(text_store_->RequestSupportedAttrs(
-      0, base::size(kUnknownAttributes), kUnknownAttributes))
+      0, std::size(kUnknownAttributes), kUnknownAttributes))
       << "Must fail for unknown attributes";
 
   const TS_ATTRID kAttributes[] = {GUID_NULL, GUID_PROP_INPUTSCOPE, GUID_NULL};
-  EXPECT_EQ(S_OK, text_store_->RequestSupportedAttrs(0, base::size(kAttributes),
+  EXPECT_EQ(S_OK, text_store_->RequestSupportedAttrs(0, std::size(kAttributes),
                                                      kAttributes))
       << "InputScope must be supported";
 
@@ -1480,7 +1479,7 @@
     text_store_->SetFocusedTextInputClient(nullptr, nullptr);
     EXPECT_HRESULT_FAILED(text_store_->RequestSupportedAttrs(0, 0, nullptr));
     EXPECT_HRESULT_FAILED(text_store_->RequestSupportedAttrs(
-        0, base::size(kAttributes), kAttributes));
+        0, std::size(kAttributes), kAttributes));
   }
 }
 
@@ -1498,7 +1497,7 @@
     SCOPED_TRACE("Make sure if InputScope is supported");
     TS_ATTRVAL buffer[2] = {};
     num_copied = 0xfffffff;
-    ASSERT_EQ(S_OK, text_store_->RetrieveRequestedAttrs(base::size(buffer),
+    ASSERT_EQ(S_OK, text_store_->RetrieveRequestedAttrs(std::size(buffer),
                                                         buffer, &num_copied));
     bool input_scope_found = false;
     for (size_t i = 0; i < num_copied; ++i) {
@@ -1523,7 +1522,7 @@
     num_copied = 0xfffffff;
     TS_ATTRVAL buffer[2] = {};
     EXPECT_HRESULT_FAILED(text_store_->RetrieveRequestedAttrs(
-        base::size(buffer), buffer, &num_copied));
+        std::size(buffer), buffer, &num_copied));
   }
 }
 
diff --git a/ui/base/l10n/l10n_util.cc b/ui/base/l10n/l10n_util.cc
index 5a549d4..aeee828 100644
--- a/ui/base/l10n/l10n_util.cc
+++ b/ui/base/l10n/l10n_util.cc
@@ -13,7 +13,6 @@
 #include "base/check_op.h"
 #include "base/command_line.h"
 #include "base/compiler_specific.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_util.h"
 #include "base/i18n/file_util_icu.h"
 #include "base/i18n/message_formatter.h"
@@ -1026,7 +1025,7 @@
 }
 
 size_t GetAcceptLanguageListSizeForTesting() {
-  return base::size(kAcceptLanguageList);
+  return std::size(kAcceptLanguageList);
 }
 
 const char* const* GetPlatformLocalesForTesting() {
@@ -1034,7 +1033,7 @@
 }
 
 size_t GetPlatformLocalesSizeForTesting() {
-  return base::size(kPlatformLocales);
+  return std::size(kPlatformLocales);
 }
 
 }  // namespace l10n_util
diff --git a/ui/base/l10n/l10n_util_mac_unittest.mm b/ui/base/l10n/l10n_util_mac_unittest.mm
index 738cd92..98a2fde 100644
--- a/ui/base/l10n/l10n_util_mac_unittest.mm
+++ b/ui/base/l10n/l10n_util_mac_unittest.mm
@@ -2,14 +2,14 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "ui/base/l10n/l10n_util_mac.h"
+
 #import <Foundation/Foundation.h>
 #include <stddef.h>
 
-#include "base/cxx17_backports.h"
 #include "base/strings/sys_string_conversions.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "testing/platform_test.h"
-#include "ui/base/l10n/l10n_util_mac.h"
 
 typedef PlatformTest L10nUtilMacTest;
 
@@ -38,7 +38,7 @@
     { @"foo(&b)...", @"foo\u2026" },
     { @"(&b)foo", @"foo" },
   };
-  for (size_t idx = 0; idx < base::size(data); ++idx) {
+  for (size_t idx = 0; idx < std::size(data); ++idx) {
     std::u16string input16(base::SysNSStringToUTF16(data[idx].input));
 
     NSString* result = l10n_util::FixUpWindowsStyleLabel(input16);
diff --git a/ui/base/l10n/l10n_util_unittest.cc b/ui/base/l10n/l10n_util_unittest.cc
index c58f373..525a7f6 100644
--- a/ui/base/l10n/l10n_util_unittest.cc
+++ b/ui/base/l10n/l10n_util_unittest.cc
@@ -2,13 +2,14 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "ui/base/l10n/l10n_util.h"
+
 #include <stddef.h>
 
 #include <cstring>
 #include <memory>
 
 #include "base/containers/flat_set.h"
-#include "base/cxx17_backports.h"
 #include "base/environment.h"
 #include "base/files/file_util.h"
 #include "base/i18n/case_conversion.h"
@@ -26,7 +27,6 @@
 #include "testing/platform_test.h"
 #include "third_party/icu/source/common/unicode/locid.h"
 #include "ui/base/grit/ui_base_test_resources.h"
-#include "ui/base/l10n/l10n_util.h"
 #include "ui/base/l10n/l10n_util_collator.h"
 #include "ui/base/ui_base_paths.h"
 
@@ -115,7 +115,7 @@
       "fr", "he", "nb",          "pt-BR", "pt-PT", "zh-CN", "zh-TW",
   };
 
-  for (size_t i = 0; i < base::size(filenames); ++i) {
+  for (size_t i = 0; i < std::size(filenames); ++i) {
     base::FilePath filename = new_locale_dir.AppendASCII(
         filenames[i] + ".pak");
     base::WriteFile(filename, "");
diff --git a/ui/base/resource/resource_bundle.cc b/ui/base/resource/resource_bundle.cc
index cce05971..91283f745 100644
--- a/ui/base/resource/resource_bundle.cc
+++ b/ui/base/resource/resource_bundle.cc
@@ -132,7 +132,7 @@
   // Check that the data is brotli decoded by checking for kBrotliConst in
   // header. Header added during compression at tools/grit/grit/node/base.py.
   const uint8_t* data_bytes = reinterpret_cast<const uint8_t*>(data.data());
-  static_assert(base::size(ResourceBundle::kBrotliConst) == 2,
+  static_assert(std::size(ResourceBundle::kBrotliConst) == 2,
                 "Magic number should be 2 bytes long");
   return data.size() >= ResourceBundle::kBrotliHeaderSize &&
          *data_bytes == ResourceBundle::kBrotliConst[0] &&
@@ -144,11 +144,11 @@
   CHECK(input.data());
   CHECK(HasBrotliHeader(input));
   const uint8_t* raw_input = reinterpret_cast<const uint8_t*>(input.data());
-  raw_input = raw_input + base::size(ResourceBundle::kBrotliConst);
+  raw_input = raw_input + std::size(ResourceBundle::kBrotliConst);
   // Get size of uncompressed resource from header.
   uint64_t uncompress_size = 0;
   int bytes_size = static_cast<int>(ResourceBundle::kBrotliHeaderSize -
-                                    base::size(ResourceBundle::kBrotliConst));
+                                    std::size(ResourceBundle::kBrotliConst));
   for (int i = 0; i < bytes_size; i++) {
     uncompress_size |= static_cast<uint64_t>(*(raw_input + i)) << (i * 8);
   }
@@ -458,7 +458,7 @@
     base::debug::Alias(&last_error);
     wchar_t path_copy[MAX_PATH];
     base::wcslcpy(path_copy, locale_file_path.value().c_str(),
-                  base::size(path_copy));
+                  std::size(path_copy));
     base::debug::Alias(path_copy);
 #endif  // BUILDFLAG(IS_WIN)
     CHECK(false);
@@ -1188,12 +1188,12 @@
 // static
 bool ResourceBundle::PNGContainsFallbackMarker(const unsigned char* buf,
                                                size_t size) {
-  if (size < base::size(kPngMagic) ||
-      memcmp(buf, kPngMagic, base::size(kPngMagic)) != 0) {
+  if (size < std::size(kPngMagic) ||
+      memcmp(buf, kPngMagic, std::size(kPngMagic)) != 0) {
     // Data invalid or a JPEG.
     return false;
   }
-  size_t pos = base::size(kPngMagic);
+  size_t pos = std::size(kPngMagic);
 
   // Scan for custom chunks until we find one, find the IDAT chunk, or run out
   // of chunks.
@@ -1205,11 +1205,11 @@
     if (size - pos - kPngChunkMetadataSize < length)
       break;
     if (length == 0 && memcmp(buf + pos + sizeof(uint32_t), kPngScaleChunkType,
-                              base::size(kPngScaleChunkType)) == 0) {
+                              std::size(kPngScaleChunkType)) == 0) {
       return true;
     }
     if (memcmp(buf + pos + sizeof(uint32_t), kPngDataChunkType,
-               base::size(kPngDataChunkType)) == 0) {
+               std::size(kPngDataChunkType)) == 0) {
       // Stop looking for custom chunks, any custom chunks should be before an
       // IDAT chunk.
       break;
@@ -1232,10 +1232,10 @@
 bool ResourceBundle::LoadLottieBytesString(int resource_id,
                                            std::string* bytes_string) const {
   const base::StringPiece potential_lottie = GetRawDataResource(resource_id);
-  if (potential_lottie.substr(0u, base::size(kLottiePrefix)) !=
-      base::StringPiece(kLottiePrefix, base::size(kLottiePrefix)))
+  if (potential_lottie.substr(0u, std::size(kLottiePrefix)) !=
+      base::StringPiece(kLottiePrefix, std::size(kLottiePrefix)))
     return false;
-  DecompressIfNeeded(potential_lottie.substr(base::size(kLottiePrefix)),
+  DecompressIfNeeded(potential_lottie.substr(std::size(kLottiePrefix)),
                      bytes_string);
   return true;
 }
diff --git a/ui/base/resource/resource_bundle_unittest.cc b/ui/base/resource/resource_bundle_unittest.cc
index 0e85ad961..57e238c2 100644
--- a/ui/base/resource/resource_bundle_unittest.cc
+++ b/ui/base/resource/resource_bundle_unittest.cc
@@ -7,12 +7,12 @@
 #include <stddef.h>
 #include <stdint.h>
 #include <string.h>
+
 #include <string>
 
 #include "base/base_paths.h"
 #include "base/big_endian.h"
 #include "base/check_op.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
 #include "base/files/scoped_temp_dir.h"
@@ -78,11 +78,11 @@
 // Returns |bitmap_data| with |custom_chunk| inserted after the IHDR chunk.
 void AddCustomChunk(const base::StringPiece& custom_chunk,
                     std::vector<unsigned char>* bitmap_data) {
-  EXPECT_LT(base::size(kPngMagic) + kPngChunkMetadataSize, bitmap_data->size());
+  EXPECT_LT(std::size(kPngMagic) + kPngChunkMetadataSize, bitmap_data->size());
   EXPECT_TRUE(std::equal(bitmap_data->begin(),
-                         bitmap_data->begin() + base::size(kPngMagic),
+                         bitmap_data->begin() + std::size(kPngMagic),
                          kPngMagic));
-  auto ihdr_start = bitmap_data->begin() + base::size(kPngMagic);
+  auto ihdr_start = bitmap_data->begin() + std::size(kPngMagic);
   uint8_t ihdr_length_data[sizeof(uint32_t)];
   for (size_t i = 0; i < sizeof(uint32_t); ++i)
     ihdr_length_data[i] = *(ihdr_start + i);
@@ -641,7 +641,7 @@
   CreateDataPackWithSingleBitmap(
       data_2x_path, 10,
       base::StringPiece(reinterpret_cast<const char*>(kPngScaleChunk),
-                        base::size(kPngScaleChunk)));
+                        std::size(kPngScaleChunk)));
 
   // Load the regular and 2x pak files.
   ResourceBundle* resource_bundle = CreateResourceBundleWithEmptyLocalePak();
diff --git a/ui/base/resource/resource_scale_factor.cc b/ui/base/resource/resource_scale_factor.cc
index e2fd525..02aab822 100644
--- a/ui/base/resource/resource_scale_factor.cc
+++ b/ui/base/resource/resource_scale_factor.cc
@@ -4,14 +4,14 @@
 
 #include "ui/base/resource/resource_scale_factor.h"
 
-#include "base/cxx17_backports.h"
+#include <iterator>
 
 namespace ui {
 
 namespace {
 
 const float kResourceScaleFactorScales[] = {1.0f, 1.0f, 2.0f, 3.0f};
-static_assert(NUM_SCALE_FACTORS == base::size(kResourceScaleFactorScales),
+static_assert(NUM_SCALE_FACTORS == std::size(kResourceScaleFactorScales),
               "kScaleFactorScales has incorrect size");
 
 }  // namespace
diff --git a/ui/base/template_expressions.cc b/ui/base/template_expressions.cc
index 639da5e..757ff62 100644
--- a/ui/base/template_expressions.cc
+++ b/ui/base/template_expressions.cc
@@ -9,7 +9,6 @@
 #include <ostream>
 
 #include "base/check_op.h"
-#include "base/cxx17_backports.h"
 #include "base/strings/string_piece.h"
 #include "base/values.h"
 #include "build/chromeos_buildflags.h"
@@ -22,12 +21,12 @@
 
 namespace {
 const char kLeader[] = "$i18n";
-const size_t kLeaderSize = base::size(kLeader) - 1;
+const size_t kLeaderSize = std::size(kLeader) - 1;
 const char kKeyOpen = '{';
 const char kKeyClose = '}';
 const char kHtmlTemplateEnd[] = "<!--_html_template_end_-->";
 const char kHtmlTemplateStart[] = "<!--_html_template_start_-->";
-const size_t kHtmlTemplateStartSize = base::size(kHtmlTemplateStart) - 1;
+const size_t kHtmlTemplateStartSize = std::size(kHtmlTemplateStart) - 1;
 
 enum HtmlTemplateType { INVALID = 0, NONE = 1, VALID = 2 };
 
diff --git a/ui/base/test/ui_controls_mac.mm b/ui/base/test/ui_controls_mac.mm
index a4bc36f5..f700d40 100644
--- a/ui/base/test/ui_controls_mac.mm
+++ b/ui/base/test/ui_controls_mac.mm
@@ -5,11 +5,11 @@
 #include "ui/base/test/ui_controls.h"
 
 #import <Cocoa/Cocoa.h>
+
 #include <vector>
 
 #include "base/bind.h"
 #include "base/callback.h"
-#include "base/cxx17_backports.h"
 #import "base/mac/foundation_util.h"
 #import "base/mac/scoped_objc_class_swizzler.h"
 #include "base/task/current_thread.h"
@@ -195,7 +195,7 @@
   NSUInteger result = 0;
   const int buttons[3] = {
       ui_controls::LEFT, ui_controls::RIGHT, ui_controls::MIDDLE};
-  for (size_t i = 0; i < base::size(buttons); ++i) {
+  for (size_t i = 0; i < std::size(buttons); ++i) {
     if (g_mouse_button_down[buttons[i]])
       result |= (1 << i);
   }
diff --git a/ui/base/text/bytes_formatting.cc b/ui/base/text/bytes_formatting.cc
index eda25e9..dfd360551 100644
--- a/ui/base/text/bytes_formatting.cc
+++ b/ui/base/text/bytes_formatting.cc
@@ -7,7 +7,6 @@
 #include <ostream>
 
 #include "base/check.h"
-#include "base/cxx17_backports.h"
 #include "base/i18n/number_formatting.h"
 #include "base/notreached.h"
 #include "base/strings/string_util.h"
@@ -85,7 +84,7 @@
     return DATA_UNITS_BYTE;
   }
 
-  int unit_index = base::size(kUnitThresholds);
+  int unit_index = std::size(kUnitThresholds);
   while (--unit_index > 0) {
     if (bytes >= kUnitThresholds[unit_index])
       break;
diff --git a/ui/base/text/bytes_formatting_unittest.cc b/ui/base/text/bytes_formatting_unittest.cc
index 5bb2c46d..d85d481 100644
--- a/ui/base/text/bytes_formatting_unittest.cc
+++ b/ui/base/text/bytes_formatting_unittest.cc
@@ -2,13 +2,13 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "ui/base/text/bytes_formatting.h"
+
 #include <stddef.h>
 #include <stdint.h>
 
-#include "base/cxx17_backports.h"
 #include "base/strings/utf_string_conversions.h"
 #include "testing/gtest/include/gtest/gtest.h"
-#include "ui/base/text/bytes_formatting.h"
 
 namespace ui {
 
@@ -29,7 +29,7 @@
 #endif
   };
 
-  for (size_t i = 0; i < base::size(cases); ++i)
+  for (size_t i = 0; i < std::size(cases); ++i)
     EXPECT_EQ(cases[i].expected, GetByteDisplayUnits(cases[i].bytes));
 }
 
@@ -72,7 +72,7 @@
 #endif
   };
 
-  for (size_t i = 0; i < base::size(cases); ++i) {
+  for (size_t i = 0; i < std::size(cases); ++i) {
     EXPECT_EQ(base::ASCIIToUTF16(cases[i].expected),
               FormatBytesWithUnits(cases[i].bytes, cases[i].units, false));
     EXPECT_EQ(base::ASCIIToUTF16(cases[i].expected_with_units),
diff --git a/ui/base/webui/web_ui_util.cc b/ui/base/webui/web_ui_util.cc
index 85bf5ae..c991b5f 100644
--- a/ui/base/webui/web_ui_util.cc
+++ b/ui/base/webui/web_ui_util.cc
@@ -55,7 +55,7 @@
 
 std::string GetPngDataUrl(const unsigned char* data, size_t size) {
   constexpr char kPrefix[] = "data:image/png;base64,";
-  constexpr size_t kPrefixLen = base::size(kPrefix) - 1;
+  constexpr size_t kPrefixLen = std::size(kPrefix) - 1;
   // Includes room for trailing null byte.
   size_t max_encode_len = modp_b64_encode_len(size);
   std::string output;
diff --git a/ui/base/x/visual_picker_glx.cc b/ui/base/x/visual_picker_glx.cc
index 999f9164..0aef2ab 100644
--- a/ui/base/x/visual_picker_glx.cc
+++ b/ui/base/x/visual_picker_glx.cc
@@ -11,7 +11,6 @@
 #include <numeric>
 #include <vector>
 
-#include "base/cxx17_backports.h"
 #include "base/memory/singleton.h"
 #include "ui/gfx/x/future.h"
 
@@ -116,7 +115,7 @@
     for (const uint32_t prop : static_props)
       props[prop] = configs.property_list[i++];
     const size_t extra_props =
-        (configs.num_properties - base::size(static_props)) / 2;
+        (configs.num_properties - std::size(static_props)) / 2;
     for (size_t j = 0; j < extra_props; j++) {
       const auto key = configs.property_list[i++];
       const auto value = configs.property_list[i++];
diff --git a/ui/base/x/x11_cursor_loader.cc b/ui/base/x/x11_cursor_loader.cc
index 3208821..f2ee56f 100644
--- a/ui/base/x/x11_cursor_loader.cc
+++ b/ui/base/x/x11_cursor_loader.cc
@@ -11,7 +11,6 @@
 
 #include "base/bind.h"
 #include "base/compiler_specific.h"
-#include "base/cxx17_backports.h"
 #include "base/environment.h"
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
@@ -312,7 +311,7 @@
   if (auto pf_reply = pf_cookie.Sync())
     pict_format_ = GetRenderARGBFormat(*pf_reply.reply);
 
-  for (uint16_t i = 0; i < base::size(cursor_names); i++)
+  for (uint16_t i = 0; i < std::size(cursor_names); i++)
     cursor_name_to_char_[cursor_names[i]] = i;
 }
 
diff --git a/ui/base/x/x11_global_shortcut_listener.cc b/ui/base/x/x11_global_shortcut_listener.cc
index a7726661..898e15a2 100644
--- a/ui/base/x/x11_global_shortcut_listener.cc
+++ b/ui/base/x/x11_global_shortcut_listener.cc
@@ -7,7 +7,6 @@
 #include <stddef.h>
 
 #include "base/containers/contains.h"
-#include "base/cxx17_backports.h"
 #include "ui/base/x/x11_util.h"
 #include "ui/events/event.h"
 #include "ui/events/keycodes/keyboard_code_conversion_x.h"
@@ -90,8 +89,8 @@
   // Because XGrabKey only works on the exact modifiers mask, we should register
   // our hot keys with modifiers that we want to ignore, including Num lock,
   // Caps lock, Scroll lock. See comment about |kModifiersMasks|.
-  x11::Future<void> grab_requests[base::size(kModifiersMasks)];
-  for (size_t i = 0; i < base::size(kModifiersMasks); i++) {
+  x11::Future<void> grab_requests[std::size(kModifiersMasks)];
+  for (size_t i = 0; i < std::size(kModifiersMasks); i++) {
     grab_requests[i] = connection_->GrabKey(
         {false, x_root_window_, modifiers | kModifiersMasks[i], keycode,
          x11::GrabMode::Async, x11::GrabMode::Async});
diff --git a/ui/chromeos/events/event_rewriter_chromeos.cc b/ui/chromeos/events/event_rewriter_chromeos.cc
index b777b8f1..95307c6 100644
--- a/ui/chromeos/events/event_rewriter_chromeos.cc
+++ b/ui/chromeos/events/event_rewriter_chromeos.cc
@@ -8,7 +8,6 @@
 #include <stddef.h>
 
 #include "ash/constants/ash_features.h"
-#include "base/cxx17_backports.h"
 #include "base/feature_list.h"
 #include "base/files/file_path.h"
 #include "base/files/scoped_file.h"
@@ -123,7 +122,7 @@
     {EF_NONE, DomCode::F14, DomKey::F14, VKEY_F14},
     {EF_NONE, DomCode::F15, DomKey::F15, VKEY_F15},
 };
-const size_t kAllFKeysSize = base::size(kCustomTopRowLayoutFKeys);
+const size_t kAllFKeysSize = std::size(kCustomTopRowLayoutFKeys);
 constexpr KeyboardCode kMaxCustomTopRowLayoutFKeyCode = VKEY_F15;
 
 bool IsCustomLayoutFunctionKey(KeyboardCode key_code) {
@@ -1078,7 +1077,7 @@
                                                     int original_flags) const {
   int unmodified_flags = original_flags;
   int rewritten_flags = pressed_modifier_latches_ | latched_modifier_latches_;
-  for (size_t i = 0; unmodified_flags && (i < base::size(kModifierRemappings));
+  for (size_t i = 0; unmodified_flags && (i < std::size(kModifierRemappings));
        ++i) {
     const ModifierRemapping* remapped_key = nullptr;
     if (!(unmodified_flags & kModifierRemappings[i].flag))
@@ -1427,7 +1426,7 @@
         };
         if (!skip_search_key_remapping &&
             RewriteWithKeyboardRemappings(kNewSearchRemappings,
-                                          base::size(kNewSearchRemappings),
+                                          std::size(kNewSearchRemappings),
                                           incoming, state, /*strict=*/true)) {
           return;
         }
@@ -1453,7 +1452,7 @@
 
       if (!skip_search_key_remapping &&
           RewriteWithKeyboardRemappings(kNewInsertRemapping,
-                                        base::size(kNewInsertRemapping),
+                                        std::size(kNewInsertRemapping),
                                         incoming, state, strict)) {
         RecordSixPackEventRewrites(key_event.type(), state->key_code,
                                    /*legacy_variant=*/false);
@@ -1462,7 +1461,7 @@
 
       // Test for the deprecated insert rewrite in order to show a notification.
       const ui::KeyboardCode deprecated_key = MatchedDeprecatedRemapping(
-          kOldInsertRemapping, base::size(kOldInsertRemapping), incoming);
+          kOldInsertRemapping, std::size(kOldInsertRemapping), incoming);
       if (deprecated_key != VKEY_UNKNOWN) {
         // If the key would have matched prior to being deprecated then notify
         // the delegate to show a notification.
@@ -1471,7 +1470,7 @@
     } else {
       if (!skip_search_key_remapping &&
           RewriteWithKeyboardRemappings(kOldInsertRemapping,
-                                        base::size(kOldInsertRemapping),
+                                        std::size(kOldInsertRemapping),
                                         incoming, state, strict)) {
         RecordSixPackEventRewrites(key_event.type(), state->key_code,
                                    /*legacy_variant=*/true);
@@ -1498,7 +1497,7 @@
 
     if (!skip_search_key_remapping &&
         RewriteWithKeyboardRemappings(kSixPackRemappings,
-                                      base::size(kSixPackRemappings), incoming,
+                                      std::size(kSixPackRemappings), incoming,
                                       state, strict)) {
       RecordSixPackEventRewrites(key_event.type(), state->key_code,
                                  /*legacy_variant=*/false);
@@ -1527,7 +1526,7 @@
     if (!::features::IsImprovedKeyboardShortcutsEnabled() ||
         !::features::IsDeprecateAltBasedSixPackEnabled()) {
       if (RewriteWithKeyboardRemappings(kLegacySixPackRemappings,
-                                        base::size(kLegacySixPackRemappings),
+                                        std::size(kLegacySixPackRemappings),
                                         incoming, state)) {
         RecordSixPackEventRewrites(key_event.type(), state->key_code,
                                    /*legacy_variant=*/true);
@@ -1535,7 +1534,7 @@
       }
     } else {
       const ui::KeyboardCode deprecated_key = MatchedDeprecatedRemapping(
-          kLegacySixPackRemappings, base::size(kLegacySixPackRemappings),
+          kLegacySixPackRemappings, std::size(kLegacySixPackRemappings),
           incoming);
       if (deprecated_key != VKEY_UNKNOWN) {
         // If the key would have matched prior to being deprecated then notify
@@ -1663,12 +1662,12 @@
       switch (layout) {
         case kKbdTopRowLayout2:
           mapping = kFkeysToSystemKeys2;
-          mappingSize = base::size(kFkeysToSystemKeys2);
+          mappingSize = std::size(kFkeysToSystemKeys2);
           break;
         case kKbdTopRowLayout1:
         default:
           mapping = kFkeysToSystemKeys1;
-          mappingSize = base::size(kFkeysToSystemKeys1);
+          mappingSize = std::size(kFkeysToSystemKeys1);
           break;
       }
 
@@ -2106,12 +2105,12 @@
         return true;
       }
       return RewriteWithKeyboardRemappings(kFnkeysToActionKeys,
-                                           base::size(kFnkeysToActionKeys),
+                                           std::size(kFnkeysToActionKeys),
                                            incoming_without_command, state);
     }
     return true;
   } else if (IsKeyCodeInMappings(state->key_code, kActionToFnKeys,
-                                 base::size(kActionToFnKeys))) {
+                                 std::size(kActionToFnKeys))) {
     // Incoming key code is an action key. Check if it needs to be mapped back
     // to its corresponding function key.
     if (search_is_pressed != ForceTopRowAsFunctionKeys()) {
@@ -2123,7 +2122,7 @@
         return true;
       }
       return RewriteWithKeyboardRemappings(kActionToFnKeys,
-                                           base::size(kActionToFnKeys),
+                                           std::size(kActionToFnKeys),
                                            incoming_without_command, state);
     }
     // Remap Privacy Screen Toggle to F12 on Drallion devices that do not have
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ne.xtb b/ui/chromeos/translations/ui_chromeos_strings_ne.xtb
index a690538..1365e01 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ne.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ne.xtb
@@ -106,6 +106,7 @@
 <translation id="1853795129690976061">यो फोल्डर Linux सँग सेयर गरिएको छ</translation>
 <translation id="1864756863218646478">फाइल फेला पर्न सकेन।</translation>
 <translation id="1884013283844450420"><ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" /> मध्ये नेटवर्क <ph name="NETWORK_INDEX" />, जोड्नुहोस्</translation>
+<translation id="1914901738028575085">CloudReady २.० चल्ने डिभाइस</translation>
 <translation id="1920670151694390848">मलयालम लिपि रूपान्तरण</translation>
 <translation id="1920798810075583923">खरबुजा</translation>
 <translation id="1924372192547904021"><ph name="DRIVE_NAME" /> फर्म्याट गरियो</translation>
@@ -901,6 +902,7 @@
 <translation id="8714406895390098252">साइकल</translation>
 <translation id="8719721339511222681"><ph name="ENTRY_NAME" /> चयन गरियो।</translation>
 <translation id="872537912056138402">क्रोएसियाली</translation>
+<translation id="873847021056608403">CloudReady २.० चल्ने डिभाइसहरू</translation>
 <translation id="8743164338060742337"><ph name="NETWORK_COUNT" /> मध्ये <ph name="NETWORK_INDEX" /> औँ नेटवर्क, <ph name="NETWORK_NAME" />, <ph name="NETWORK_PROVIDER_NAME" />, सिग्नलको क्षमता <ph name="SIGNAL_STRENGTH" />%, तपाईंका एड्मिनले व्यवस्थापन गर्नुभएको, कनेक्ट गर्नुहोस्</translation>
 <translation id="8750438273876807512">आफ्ना फाइलहरू सेल्फबाट द्रुत रूपमा हेर्न तथा प्रयोग गर्न कुनै फाइलमा टच एण्ड होल्ड गर्नुहोस् र <ph name="ICON" /> मा ट्याप गर्नुहोस् र "सेल्फमा पिन गर्नुहोस्" चयन गर्नुहोस्।</translation>
 <translation id="8787254343425541995">साझा नेटवर्क को लागि प्रोक्सीहरू अनुमति दिनुहोस्</translation>
diff --git a/ui/display/mac/screen_mac.mm b/ui/display/mac/screen_mac.mm
index 4507df1e..21778ef 100644
--- a/ui/display/mac/screen_mac.mm
+++ b/ui/display/mac/screen_mac.mm
@@ -13,7 +13,6 @@
 #include <memory>
 
 #include "base/bind.h"
-#include "base/cxx17_backports.h"
 #include "base/logging.h"
 #include "base/mac/mac_util.h"
 #include "base/mac/scoped_cftyperef.h"
@@ -196,7 +195,7 @@
   // doesn't hurt.
   CGDirectDisplayID online_displays[1024];
   CGDisplayCount online_display_count = 0;
-  if (CGGetOnlineDisplayList(base::size(online_displays), online_displays,
+  if (CGGetOnlineDisplayList(std::size(online_displays), online_displays,
                              &online_display_count) != kCGErrorSuccess) {
     return std::vector<DisplayMac>(1, BuildPrimaryDisplay());
   }
diff --git a/ui/display/manager/configure_displays_task.cc b/ui/display/manager/configure_displays_task.cc
index 4cc919d..c3d094d 100644
--- a/ui/display/manager/configure_displays_task.cc
+++ b/ui/display/manager/configure_displays_task.cc
@@ -10,7 +10,6 @@
 #include "base/bind.h"
 #include "base/containers/flat_set.h"
 #include "base/containers/queue.h"
-#include "base/cxx17_backports.h"
 #include "base/logging.h"
 #include "base/metrics/histogram_functions.h"
 #include "base/metrics/histogram_macros.h"
@@ -96,23 +95,23 @@
   const gfx::Size size = mode->size();
   uint32_t width_idx = 0;
   uint32_t height_idx = 0;
-  for (; width_idx < base::size(kDisplayResolutionSamples); width_idx++) {
+  for (; width_idx < std::size(kDisplayResolutionSamples); width_idx++) {
     if (size.width() <= kDisplayResolutionSamples[width_idx])
       break;
   }
-  for (; height_idx < base::size(kDisplayResolutionSamples); height_idx++) {
+  for (; height_idx < std::size(kDisplayResolutionSamples); height_idx++) {
     if (size.height() <= kDisplayResolutionSamples[height_idx])
       break;
   }
 
-  if (width_idx == base::size(kDisplayResolutionSamples) ||
-      height_idx == base::size(kDisplayResolutionSamples))
-    return base::size(kDisplayResolutionSamples) *
-               base::size(kDisplayResolutionSamples) +
+  if (width_idx == std::size(kDisplayResolutionSamples) ||
+      height_idx == std::size(kDisplayResolutionSamples))
+    return std::size(kDisplayResolutionSamples) *
+               std::size(kDisplayResolutionSamples) +
            1;  // Overflow bucket
   // Computes the index of DisplayResolution, starting from 1, since 0 is used
   // when powering off the display.
-  return width_idx * base::size(kDisplayResolutionSamples) + height_idx + 1;
+  return width_idx * std::size(kDisplayResolutionSamples) + height_idx + 1;
 }
 
 void UpdateResolutionAndRefreshRateUma(const DisplayConfigureRequest& request) {
@@ -123,8 +122,8 @@
       internal ? "ConfigureDisplays.Internal.Modeset.Resolution"
                : "ConfigureDisplays.External.Modeset.Resolution",
       ComputeDisplayResolutionEnum(request.mode),
-      base::size(kDisplayResolutionSamples) *
-              base::size(kDisplayResolutionSamples) +
+      std::size(kDisplayResolutionSamples) *
+              std::size(kDisplayResolutionSamples) +
           2);
 
   base::HistogramBase* histogram = base::LinearHistogram::FactoryGet(
diff --git a/ui/display/manager/content_protection_manager_unittest.cc b/ui/display/manager/content_protection_manager_unittest.cc
index 9504592..1a59649 100644
--- a/ui/display/manager/content_protection_manager_unittest.cc
+++ b/ui/display/manager/content_protection_manager_unittest.cc
@@ -65,7 +65,7 @@
     DisplayConnectionType conn_types[] = {
         DISPLAY_CONNECTION_TYPE_INTERNAL, DISPLAY_CONNECTION_TYPE_HDMI,
         DISPLAY_CONNECTION_TYPE_VGA, DISPLAY_CONNECTION_TYPE_HDMI};
-    for (size_t i = 0; i < base::size(kDisplayIds); ++i) {
+    for (size_t i = 0; i < std::size(kDisplayIds); ++i) {
       displays_[i] = FakeDisplaySnapshot::Builder()
                          .SetId(kDisplayIds[i])
                          .SetType(conn_types[i])
@@ -93,7 +93,7 @@
 
  protected:
   void UpdateDisplays(size_t count) {
-    ASSERT_LE(count, base::size(displays_));
+    ASSERT_LE(count, std::size(displays_));
 
     std::vector<std::unique_ptr<DisplaySnapshot>> displays;
     for (size_t i = 0; i < count; ++i)
@@ -128,7 +128,7 @@
   uint32_t connection_mask_ = DISPLAY_CONNECTION_TYPE_NONE;
   uint32_t protection_mask_ = CONTENT_PROTECTION_METHOD_NONE;
 
-  std::unique_ptr<DisplaySnapshot> displays_[base::size(kDisplayIds)];
+  std::unique_ptr<DisplaySnapshot> displays_[std::size(kDisplayIds)];
 };
 
 TEST_F(ContentProtectionManagerTest, Basic) {
diff --git a/ui/display/manager/display_change_observer.cc b/ui/display/manager/display_change_observer.cc
index 4bc1d7b..2a41dea 100644
--- a/ui/display/manager/display_change_observer.cc
+++ b/ui/display/manager/display_change_observer.cc
@@ -14,7 +14,6 @@
 
 #include "base/check_op.h"
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "build/chromeos_buildflags.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/base/user_activity/user_activity_detector.h"
@@ -441,7 +440,7 @@
   } else if (size_in_pixels == k18DisplaySizeHackCoachZ) {
     return kDsf_1_8;
   } else {
-    for (size_t i = 0; i < base::size(kThresholdTableForInternal); ++i) {
+    for (size_t i = 0; i < std::size(kThresholdTableForInternal); ++i) {
       if (dpi >= kThresholdTableForInternal[i].dpi)
         return kThresholdTableForInternal[i].device_scale_factor;
     }
diff --git a/ui/display/manager/display_configurator_unittest.cc b/ui/display/manager/display_configurator_unittest.cc
index 1a20db9..0e2c526 100644
--- a/ui/display/manager/display_configurator_unittest.cc
+++ b/ui/display/manager/display_configurator_unittest.cc
@@ -10,7 +10,6 @@
 #include "ash/constants/ash_switches.h"
 #include "base/bind.h"
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "base/run_loop.h"
 #include "base/test/scoped_feature_list.h"
 #include "base/test/task_environment.h"
@@ -300,7 +299,7 @@
   // output-change events to |configurator_| and triggers the configure
   // timeout if one was scheduled.
   void UpdateOutputs(size_t num_outputs, bool send_events) {
-    ASSERT_LE(num_outputs, base::size(outputs_));
+    ASSERT_LE(num_outputs, std::size(outputs_));
     std::vector<DisplaySnapshot*> outputs;
     for (size_t i = 0; i < num_outputs; ++i)
       outputs.push_back(outputs_[i].get());
diff --git a/ui/display/util/display_util.cc b/ui/display/util/display_util.cc
index 96b0ee9..e01d14e 100644
--- a/ui/display/util/display_util.cc
+++ b/ui/display/util/display_util.cc
@@ -54,7 +54,7 @@
     VLOG(1) << "Smaller than minimum display size";
     return false;
   }
-  for (size_t i = 1; i < base::size(kInvalidDisplaySizeList); ++i) {
+  for (size_t i = 1; i < std::size(kInvalidDisplaySizeList); ++i) {
     const gfx::Size size(kInvalidDisplaySizeList[i][0],
                          kInvalidDisplaySizeList[i][1]);
     if (physical_size == size) {
diff --git a/ui/display/util/display_util_unittest.cc b/ui/display/util/display_util_unittest.cc
index 68156877..8c754d7 100644
--- a/ui/display/util/display_util_unittest.cc
+++ b/ui/display/util/display_util_unittest.cc
@@ -147,7 +147,7 @@
   skcms_Matrix3x3 expected_hpz32x_toXYZ50_matrix;
   expected_hpz32x_primaries.toXYZD50(&expected_hpz32x_toXYZ50_matrix);
   const std::vector<uint8_t> hpz32x_edid(kHPz32x,
-                                         kHPz32x + base::size(kHPz32x) - 1);
+                                         kHPz32x + std::size(kHPz32x) - 1);
   const gfx::ColorSpace expected_hpz32x_color_space =
       gfx::ColorSpace::CreateCustom(
           expected_hpz32x_toXYZ50_matrix,
@@ -171,8 +171,7 @@
                                                               .fWY = 0.329102f};
   skcms_Matrix3x3 expected_samus_toXYZ50_matrix;
   expected_samus_primaries.toXYZD50(&expected_samus_toXYZ50_matrix);
-  const std::vector<uint8_t> samus_edid(kSamus,
-                                        kSamus + base::size(kSamus) - 1);
+  const std::vector<uint8_t> samus_edid(kSamus, kSamus + std::size(kSamus) - 1);
   const gfx::ColorSpace expected_samus_color_space =
       gfx::ColorSpace::CreateCustom(
           expected_samus_toXYZ50_matrix,
@@ -200,7 +199,7 @@
       gfx::ColorSpace::PrimaryID::BT709, gfx::ColorSpace::TransferID::CUSTOM,
       gfx::ColorSpace::MatrixID::RGB, gfx::ColorSpace::RangeID::FULL,
       /*custom_primary_matrix=*/nullptr, &eve_transfer);
-  const std::vector<uint8_t> eve_edid(kEve, kEve + base::size(kEve) - 1);
+  const std::vector<uint8_t> eve_edid(kEve, kEve + std::size(kEve) - 1);
   EXPECT_EQ(expected_eve_color_space.ToString(),
             GetColorSpaceFromEdid(display::EdidParser(eve_edid)).ToString());
   histogram_tester.ExpectBucketCount(
@@ -220,7 +219,7 @@
                                                             .fWY = 0.32910f};
   skcms_Matrix3x3 expected_hdr_toXYZ50_matrix;
   expected_hdr_primaries.toXYZD50(&expected_hdr_toXYZ50_matrix);
-  const std::vector<uint8_t> hdr_edid(kHDR, kHDR + base::size(kHDR) - 1);
+  const std::vector<uint8_t> hdr_edid(kHDR, kHDR + std::size(kHDR) - 1);
   const gfx::ColorSpace expected_hdr_color_space =
       gfx::ColorSpace::CreateCustom(expected_hdr_toXYZ50_matrix,
                                     gfx::ColorSpace::TransferID::PQ);
@@ -235,7 +234,7 @@
 
   // Test with gamma marked as non-existent.
   const std::vector<uint8_t> no_gamma_edid(
-      kEdidWithNoGamma, kEdidWithNoGamma + base::size(kEdidWithNoGamma) - 1);
+      kEdidWithNoGamma, kEdidWithNoGamma + std::size(kEdidWithNoGamma) - 1);
   const gfx::ColorSpace no_gamma_color_space =
       GetColorSpaceFromEdid(display::EdidParser(no_gamma_edid));
   EXPECT_FALSE(no_gamma_color_space.IsValid());
@@ -260,7 +259,7 @@
       1);
 
   const std::vector<uint8_t> invalid_edid(
-      kInvalidEdid, kInvalidEdid + base::size(kInvalidEdid) - 1);
+      kInvalidEdid, kInvalidEdid + std::size(kInvalidEdid) - 1);
   const gfx::ColorSpace invalid_color_space =
       GetColorSpaceFromEdid(display::EdidParser(invalid_edid));
   EXPECT_FALSE(invalid_color_space.IsValid());
@@ -271,7 +270,7 @@
       2);
 
   const std::vector<uint8_t> sst210_edid(kSST210,
-                                         kSST210 + base::size(kSST210) - 1);
+                                         kSST210 + std::size(kSST210) - 1);
   const gfx::ColorSpace sst210_color_space =
       GetColorSpaceFromEdid(display::EdidParser(sst210_edid));
   EXPECT_FALSE(sst210_color_space.IsValid()) << sst210_color_space.ToString();
@@ -282,7 +281,7 @@
       1);
 
   const std::vector<uint8_t> sst210_edid_2(
-      kSST210Corrected, kSST210Corrected + base::size(kSST210Corrected) - 1);
+      kSST210Corrected, kSST210Corrected + std::size(kSST210Corrected) - 1);
   const gfx::ColorSpace sst210_color_space_2 =
       GetColorSpaceFromEdid(display::EdidParser(sst210_edid_2));
   EXPECT_FALSE(sst210_color_space_2.IsValid())
@@ -295,7 +294,7 @@
 
   const std::vector<uint8_t> broken_blue_edid(
       kBrokenBluePrimaries,
-      kBrokenBluePrimaries + base::size(kBrokenBluePrimaries) - 1);
+      kBrokenBluePrimaries + std::size(kBrokenBluePrimaries) - 1);
   const gfx::ColorSpace broken_blue_color_space =
       GetColorSpaceFromEdid(display::EdidParser(broken_blue_edid));
   EXPECT_FALSE(broken_blue_color_space.IsValid())
diff --git a/ui/display/util/edid_parser.cc b/ui/display/util/edid_parser.cc
index ff9e4359..31fa037 100644
--- a/ui/display/util/edid_parser.cc
+++ b/ui/display/util/edid_parser.cc
@@ -222,7 +222,7 @@
     base::UmaHistogramEnumeration(
         kBlockZeroSerialNumberTypeMetric,
         GetSerialNumberType(serial_number_bytes,
-                            base::size(serial_number_bytes)));
+                            std::size(serial_number_bytes)));
   }
 
   const uint32_t serial_number =
@@ -588,7 +588,7 @@
           const std::bitset<kMaxNumColorimetryEntries>
               supported_primaries_bitfield(edid[data_offset + 2]);
           static_assert(
-              kMaxNumColorimetryEntries == base::size(kPrimaryIDMap),
+              kMaxNumColorimetryEntries == std::size(kPrimaryIDMap),
               "kPrimaryIDMap should describe all possible colorimetry entries");
           for (size_t entry = 0; entry < kMaxNumColorimetryEntries; ++entry) {
             if (supported_primaries_bitfield[entry])
@@ -602,7 +602,7 @@
           const std::bitset<kMaxNumHDRStaticMedatataEntries>
               supported_eotfs_bitfield(edid[data_offset + 2]);
           static_assert(
-              kMaxNumHDRStaticMedatataEntries == base::size(kTransferIDMap),
+              kMaxNumHDRStaticMedatataEntries == std::size(kTransferIDMap),
               "kTransferIDMap should describe all possible transfer entries");
           for (size_t entry = 0; entry < kMaxNumHDRStaticMedatataEntries;
                ++entry) {
diff --git a/ui/display/util/edid_parser_unittest.cc b/ui/display/util/edid_parser_unittest.cc
index 4f45304..a2a1da6 100644
--- a/ui/display/util/edid_parser_unittest.cc
+++ b/ui/display/util/edid_parser_unittest.cc
@@ -9,7 +9,6 @@
 #include <memory>
 
 #include "base/containers/flat_set.h"
-#include "base/cxx17_backports.h"
 #include "base/hash/md5.h"
 #include "base/numerics/ranges.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -36,7 +35,7 @@
     "\x30\x20\x36\x00\x81\x90\x21\x00\x00\x1a\x00\x00\x00\xfc\x00\x48"
     "\x50\x20\x5a\x00\x33\x30\x77\x0a\x20\x20\x20\x20\x00\x00\x00\xff"
     "\x00\x43\x4e\x34\x32\x30\x32\x31\x33\x37\x51\x0a\x20\x20\x00\x71";
-constexpr size_t kBadDisplayNameLength = base::size(kBadDisplayName);
+constexpr size_t kBadDisplayNameLength = std::size(kBadDisplayName);
 
 // Sample EDID data extracted from real devices.
 constexpr unsigned char kNormalDisplay[] =
@@ -48,7 +47,7 @@
     "\x30\x20\x36\x00\x81\x90\x21\x00\x00\x1a\x00\x00\x00\xfc\x00\x48"
     "\x50\x20\x5a\x52\x33\x30\x77\x0a\x20\x20\x20\x20\x00\x00\x00\xff"
     "\x00\x43\x4e\x34\x32\x30\x32\x31\x33\x37\x51\x0a\x20\x20\x00\x71";
-constexpr size_t kNormalDisplayLength = base::size(kNormalDisplay);
+constexpr size_t kNormalDisplayLength = std::size(kNormalDisplay);
 
 // Max image display is an optional field and is omitted in this display by
 // setting bytes 21-22 to 0x00.
@@ -62,7 +61,7 @@
     "\x50\x20\x5a\x52\x33\x30\x77\x0a\x20\x20\x20\x20\x00\x00\x00\xff"
     "\x00\x43\x4e\x34\x32\x30\x32\x31\x33\x37\x51\x0a\x20\x20\x00\x71";
 constexpr size_t kNoMaxImageSizeDisplayLength =
-    base::size(kNoMaxImageSizeDisplay);
+    std::size(kNoMaxImageSizeDisplay);
 
 // Serial number is in bytes 12-15 of Block 0. Serial number descriptor
 // (tag: 0xff) is omitted and replaced by a dummy descriptor (tag: 0x10).
@@ -76,7 +75,7 @@
     "\x50\x20\x5a\x52\x33\x30\x77\x0a\x20\x20\x20\x20\x00\x00\x00\x10"
     "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71";
 constexpr size_t kBlockZeroSerialNumberOnlyDisplayLength =
-    base::size(kBlockZeroSerialNumberOnlyDisplay);
+    std::size(kBlockZeroSerialNumberOnlyDisplay);
 
 // Serial number is unavilable. Omitted from bytes 12-15 of block zero and SN
 // descriptor (tag: 0xff).
@@ -90,7 +89,7 @@
     "\x50\x20\x5a\x52\x33\x30\x77\x0a\x20\x20\x20\x20\x00\x00\x00\x10"
     "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71";
 constexpr size_t kNoSerialNumberDisplayLength =
-    base::size(kNoSerialNumberDisplay);
+    std::size(kNoSerialNumberDisplay);
 
 // Week of manufacture is optional and is omitted in this display
 // (0x00 at byte 16).
@@ -104,7 +103,7 @@
     "\x50\x20\x5a\x52\x33\x30\x77\x0a\x20\x20\x20\x20\x00\x00\x00\xff"
     "\x00\x43\x4e\x34\x32\x30\x32\x31\x33\x37\x51\x0a\x20\x20\x00\x71";
 constexpr size_t kNoWeekOfManufactureDisplayLength =
-    base::size(kNoWeekOfManufactureDisplay);
+    std::size(kNoWeekOfManufactureDisplay);
 
 // Week of manufacture can be used to signal that year of manufacture is the
 // model year by setting byte 16 to 0xff.
@@ -117,7 +116,7 @@
     "\x30\x20\x36\x00\x81\x90\x21\x00\x00\x1a\x00\x00\x00\xfc\x00\x48"
     "\x50\x20\x5a\x52\x33\x30\x77\x0a\x20\x20\x20\x20\x00\x00\x00\xff"
     "\x00\x43\x4e\x34\x32\x30\x32\x31\x33\x37\x51\x0a\x20\x20\x00\x71";
-constexpr size_t kModelYearDisplayLength = base::size(kModelYearDisplay);
+constexpr size_t kModelYearDisplayLength = std::size(kModelYearDisplay);
 
 constexpr unsigned char kInternalDisplay[] =
     "\x00\xff\xff\xff\xff\xff\xff\x00\x4c\xa3\x42\x31\x00\x00\x00\x00"
@@ -128,7 +127,7 @@
     "\x00\x00\x00\x00\x00\x23\x87\x02\x64\x00\x00\x00\x00\xfe\x00\x53"
     "\x41\x4d\x53\x55\x4e\x47\x0a\x20\x20\x20\x20\x20\x00\x00\x00\xfe"
     "\x00\x31\x32\x31\x41\x54\x31\x31\x2d\x38\x30\x31\x0a\x20\x00\x45";
-constexpr size_t kInternalDisplayLength = base::size(kInternalDisplay);
+constexpr size_t kInternalDisplayLength = std::size(kInternalDisplay);
 
 constexpr unsigned char kOverscanDisplay[] =
     "\x00\xff\xff\xff\xff\xff\xff\x00\x4c\x2d\xfe\x08\x00\x00\x00\x00"
@@ -147,7 +146,7 @@
     "\x5a\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
     "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
     "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc6";
-constexpr size_t kOverscanDisplayLength = base::size(kOverscanDisplay);
+constexpr size_t kOverscanDisplayLength = std::size(kOverscanDisplay);
 
 // The EDID info misdetecting overscan once. see crbug.com/226318
 constexpr unsigned char kMisdetectedDisplay[] =
@@ -167,7 +166,7 @@
     "\x72\x51\xd0\x1e\x20\x6e\x28\x55\x00\x81\x91\x21\x00\x00\x1e\x8c"
     "\x0a\xd0\x8a\x20\xe0\x2d\x10\x10\x3e\x96\x00\x81\x91\x21\x00\x00"
     "\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x94";
-constexpr size_t kMisdetectedDisplayLength = base::size(kMisdetectedDisplay);
+constexpr size_t kMisdetectedDisplayLength = std::size(kMisdetectedDisplay);
 
 constexpr unsigned char kLP2565A[] =
     "\x00\xFF\xFF\xFF\xFF\xFF\xFF\x00\x22\xF0\x76\x26\x01\x01\x01\x01"
@@ -178,7 +177,7 @@
     "\x5E\x11\x00\x0A\x20\x20\x20\x20\x20\x20\x00\x00\x00\xFC\x00\x48"
     "\x50\x20\x4C\x50\x32\x34\x36\x35\x0A\x20\x20\x20\x00\x00\x00\xFF"
     "\x00\x43\x4E\x4B\x38\x30\x32\x30\x34\x48\x4D\x0A\x20\x20\x00\xA4";
-constexpr size_t kLP2565ALength = base::size(kLP2565A);
+constexpr size_t kLP2565ALength = std::size(kLP2565A);
 
 constexpr unsigned char kLP2565B[] =
     "\x00\xFF\xFF\xFF\xFF\xFF\xFF\x00\x22\xF0\x75\x26\x01\x01\x01\x01"
@@ -189,7 +188,7 @@
     "\x5E\x15\x00\x0A\x20\x20\x20\x20\x20\x20\x00\x00\x00\xFC\x00\x48"
     "\x50\x20\x4C\x50\x32\x34\x36\x35\x0A\x20\x20\x20\x00\x00\x00\xFF"
     "\x00\x43\x4E\x4B\x38\x30\x32\x30\x34\x48\x4D\x0A\x20\x20\x00\x45";
-constexpr size_t kLP2565BLength = base::size(kLP2565B);
+constexpr size_t kLP2565BLength = std::size(kLP2565B);
 
 // HP z32x monitor.
 constexpr unsigned char kHPz32x[] =
@@ -209,7 +208,7 @@
     "\x00\xA0\xA0\x40\x2E\x60\x20\x30\x63\x00\xB9\x88\x21\x00\x00\x1C"
     "\x28\x3C\x80\xA0\x70\xB0\x23\x40\x30\x20\x36\x00\xB9\x88\x21\x00"
     "\x00\x1A\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3E";
-constexpr size_t kHPz32xLength = base::size(kHPz32x);
+constexpr size_t kHPz32xLength = std::size(kHPz32x);
 
 // Chromebook Samus internal display.
 constexpr unsigned char kSamus[] =
@@ -221,7 +220,7 @@
     "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x00\x4c"
     "\x47\x20\x44\x69\x73\x70\x6c\x61\x79\x0a\x20\x20\x00\x00\x00\xfe"
     "\x00\x4c\x50\x31\x32\x39\x51\x45\x32\x2d\x53\x50\x41\x31\x00\x6c";
-constexpr size_t kSamusLength = base::size(kSamus);
+constexpr size_t kSamusLength = std::size(kSamus);
 
 // Chromebook Eve internal display.
 constexpr unsigned char kEve[] =
@@ -233,7 +232,7 @@
     "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00"
     "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc"
     "\x00\x4c\x51\x31\x32\x33\x50\x31\x4a\x58\x33\x32\x0a\x20\x00\xb6";
-constexpr size_t kEveLength = base::size(kEve);
+constexpr size_t kEveLength = std::size(kEve);
 
 // A Samsung monitor that supports HDR metadata.
 constexpr unsigned char kHDRMetadata[] =
@@ -253,7 +252,7 @@
     "\x1d\x80\xd0\x72\x1c\x16\x20\x10\x2c\x25\x80\x50\x1d\x74\x00\x00"
     "\x9e\x66\x21\x56\xaa\x51\x00\x1e\x30\x46\x8f\x33\x00\x50\x1d\x74"
     "\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbd";
-constexpr size_t kHDRMetadataLength = base::size(kHDRMetadata);
+constexpr size_t kHDRMetadataLength = std::size(kHDRMetadata);
 
 const std::string kNoSerialNumber = "";
 const gfx::Size kNoMaxImageSize = gfx::Size(0, 0);
diff --git a/ui/events/blink/blink_event_util_unittest.cc b/ui/events/blink/blink_event_util_unittest.cc
index 499d404..a3817301 100644
--- a/ui/events/blink/blink_event_util_unittest.cc
+++ b/ui/events/blink/blink_event_util_unittest.cc
@@ -4,7 +4,6 @@
 
 #include "ui/events/blink/blink_event_util.h"
 
-#include "base/cxx17_backports.h"
 #include "base/time/time.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/blink/public/common/input/web_gesture_event.h"
@@ -166,9 +165,9 @@
       ui::ScrollGranularity::kScrollByDocument,
   };
 
-  for (size_t i = 0; i < base::size(types); i++) {
+  for (size_t i = 0; i < std::size(types); i++) {
     ui::EventType type = types[i];
-    for (size_t j = 0; j < base::size(units); j++) {
+    for (size_t j = 0; j < std::size(units); j++) {
       ui::ScrollGranularity unit = units[j];
       ui::GestureEventDetails details(type, 1, 1, unit);
       details.set_device_type(ui::GestureDeviceType::DEVICE_TOUCHSCREEN);
diff --git a/ui/events/blink/web_input_event_unittest.cc b/ui/events/blink/web_input_event_unittest.cc
index 4395d0f..046e317 100644
--- a/ui/events/blink/web_input_event_unittest.cc
+++ b/ui/events/blink/web_input_event_unittest.cc
@@ -7,7 +7,6 @@
 #include <cstddef>
 #include <cstdint>
 
-#include "base/cxx17_backports.h"
 #include "base/test/scoped_feature_list.h"
 #include "build/build_config.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -417,7 +416,7 @@
       {ui::KeyEvent(ui::ET_KEY_RELEASED, ui::VKEY_C, ui::EF_ALT_DOWN),
        blink::WebInputEvent::Type::kKeyUp, blink::WebInputEvent::kAltKey}};
 
-  for (size_t i = 0; i < base::size(tests); i++) {
+  for (size_t i = 0; i < std::size(tests); i++) {
     blink::WebKeyboardEvent web_event = MakeWebKeyboardEvent(tests[i].event);
     ASSERT_TRUE(blink::WebInputEvent::IsKeyboardEventType(web_event.GetType()));
     ASSERT_EQ(tests[i].web_type, web_event.GetType());
@@ -462,7 +461,7 @@
        gfx::Point(13, 3), gfx::Point(53, 3)},
   };
 
-  for (size_t i = 0; i < base::size(tests); i++) {
+  for (size_t i = 0; i < std::size(tests); i++) {
     ui::MouseEvent ui_event(tests[i].ui_type, tests[i].location,
                             tests[i].screen_location, base::TimeTicks(),
                             tests[i].ui_modifiers, 0);
diff --git a/ui/events/devices/x11/device_data_manager_x11.cc b/ui/events/devices/x11/device_data_manager_x11.cc
index d5b9899..4cbc3e4ee 100644
--- a/ui/events/devices/x11/device_data_manager_x11.cc
+++ b/ui/events/devices/x11/device_data_manager_x11.cc
@@ -12,7 +12,6 @@
 #include "base/bind.h"
 #include "base/callback_helpers.h"
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "base/logging.h"
 #include "base/memory/singleton.h"
 #include "base/system/sys_info.h"
@@ -109,7 +108,7 @@
 };
 
 // Make sure the sizes of enum and |kCachedAtoms| are aligned.
-static_assert(base::size(kCachedAtoms) ==
+static_assert(std::size(kCachedAtoms) ==
                   ui::DeviceDataManagerX11::DT_LAST_ENTRY,
               "kCachedAtoms count / enum mismatch");
 
diff --git a/ui/events/event_processor_unittest.cc b/ui/events/event_processor_unittest.cc
index 593a51d6..f676e53 100644
--- a/ui/events/event_processor_unittest.cc
+++ b/ui/events/event_processor_unittest.cc
@@ -6,7 +6,6 @@
 #include <utility>
 #include <vector>
 
-#include "base/cxx17_backports.h"
 #include "base/memory/ptr_util.h"
 #include "base/memory/raw_ptr.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -412,7 +411,7 @@
 
   std::string expected[] = { "PreR", "PreC", "PreG", "G", "PostG", "PostC",
       "PostR", "PreR", "PreC", "C", "PostC", "PostR", "PreR", "R", "PostR" };
-  EXPECT_EQ(std::vector<std::string>(expected, expected + base::size(expected)),
+  EXPECT_EQ(std::vector<std::string>(expected, expected + std::size(expected)),
             recorder);
 
   root()->RemovePreTargetHandler(&pre_root);
diff --git a/ui/events/event_unittest.cc b/ui/events/event_unittest.cc
index abe29e8..363db7b 100644
--- a/ui/events/event_unittest.cc
+++ b/ui/events/event_unittest.cc
@@ -12,7 +12,6 @@
 #include <string>
 
 #include "base/callback_helpers.h"
-#include "base/cxx17_backports.h"
 #include "base/strings/strcat.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/simple_test_tick_clock.h"
@@ -318,7 +317,7 @@
       {VKEY_OEM_3, EF_SHIFT_DOWN, '~'},
   };
 
-  for (size_t i = 0; i < base::size(kTestData); ++i) {
+  for (size_t i = 0; i < std::size(kTestData); ++i) {
     KeyEvent key(ET_KEY_PRESSED, kTestData[i].key_code, kTestData[i].flags);
     EXPECT_EQ(kTestData[i].character, key.GetCharacter())
         << " Index:" << i << " key_code:" << kTestData[i].key_code;
diff --git a/ui/events/keycodes/dom/dom_keyboard_layout.cc b/ui/events/keycodes/dom/dom_keyboard_layout.cc
index 753372a..7de59da 100644
--- a/ui/events/keycodes/dom/dom_keyboard_layout.cc
+++ b/ui/events/keycodes/dom/dom_keyboard_layout.cc
@@ -4,7 +4,6 @@
 
 #include "ui/events/keycodes/dom/dom_keyboard_layout.h"
 
-#include "base/cxx17_backports.h"
 #include "base/strings/utf_string_conversion_utils.h"
 #include "ui/events/keycodes/dom/dom_code.h"
 #include "ui/events/keycodes/dom/keycode_converter.h"
@@ -35,7 +34,7 @@
 };
 
 const size_t kWritingSystemKeyDomCodeEntries =
-    base::size(writing_system_key_domcodes);
+    std::size(writing_system_key_domcodes);
 
 const uint32_t kHankakuZenkakuPlaceholder = 0x89d2;
 
@@ -69,7 +68,7 @@
     // Map combining accents into the corresponding printable character.
     if (unicode >= 0x0300 && unicode <= 0x036f) {
       uint16_t printable = 0;
-      for (size_t j = 0; j < base::size(kCombiningKeyMapping); ++j) {
+      for (size_t j = 0; j < std::size(kCombiningKeyMapping); ++j) {
         if (kCombiningKeyMapping[j].combining == unicode) {
           printable = kCombiningKeyMapping[j].printable;
           break;
diff --git a/ui/events/keycodes/dom/dom_keyboard_layout_map_unittest.cc b/ui/events/keycodes/dom/dom_keyboard_layout_map_unittest.cc
index 25281ef2..7fe7a6e 100644
--- a/ui/events/keycodes/dom/dom_keyboard_layout_map_unittest.cc
+++ b/ui/events/keycodes/dom/dom_keyboard_layout_map_unittest.cc
@@ -7,7 +7,6 @@
 
 #include "base/check_op.h"
 #include "base/containers/flat_map.h"
-#include "base/cxx17_backports.h"
 #include "base/notreached.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/events/keycodes/dom/dom_key.h"
@@ -103,7 +102,7 @@
   // writing system table used by the class under test.  Ideally this would be a
   // static assert however that doesn't work since the other table is in a
   // different compilation unit.
-  DCHECK_EQ(base::size(kFullLookupTable), kWritingSystemKeyDomCodeEntries);
+  DCHECK_EQ(std::size(kFullLookupTable), kWritingSystemKeyDomCodeEntries);
 
   if (kFullLookupTable.count(dom_code) == 0)
     return DomKey::NONE;
diff --git a/ui/events/keycodes/dom/dom_keyboard_layout_map_win.cc b/ui/events/keycodes/dom/dom_keyboard_layout_map_win.cc
index 7d86fffd..b2ed04a 100644
--- a/ui/events/keycodes/dom/dom_keyboard_layout_map_win.cc
+++ b/ui/events/keycodes/dom/dom_keyboard_layout_map_win.cc
@@ -11,7 +11,6 @@
 
 #include "base/check_op.h"
 #include "base/containers/flat_map.h"
-#include "base/cxx17_backports.h"
 #include "base/logging.h"
 #include "ui/events/keycodes/dom/dom_code.h"
 #include "ui/events/keycodes/dom/dom_key.h"
@@ -102,7 +101,7 @@
   wchar_t char_buffer[1] = {0};
   int key_type =
       ::ToUnicodeEx(virtual_key_code, scan_code, keyboard_state, char_buffer,
-                    base::size(char_buffer), /*wFlags=*/0, keyboard_layout);
+                    std::size(char_buffer), /*wFlags=*/0, keyboard_layout);
 
   // Handle special cases for Japanese keyboard layout.
   if (0x04110411 == reinterpret_cast<uintptr_t>(keyboard_layout)) {
@@ -144,7 +143,7 @@
     // the dead key state. See crbug/977609 for details on how this problem
     // exhibits itself to users.
     ::ToUnicodeEx(0x0020, 0x0039, keyboard_state, char_buffer,
-                  base::size(char_buffer), /*wFlags=*/0, keyboard_layout);
+                  std::size(char_buffer), /*wFlags=*/0, keyboard_layout);
   }
   return key;
 }
diff --git a/ui/events/keycodes/dom/keycode_converter.cc b/ui/events/keycodes/dom/keycode_converter.cc
index 3aac7a8e..a8a1615e 100644
--- a/ui/events/keycodes/dom/keycode_converter.cc
+++ b/ui/events/keycodes/dom/keycode_converter.cc
@@ -4,7 +4,6 @@
 
 #include "ui/events/keycodes/dom/keycode_converter.h"
 
-#include "base/cxx17_backports.h"
 #include "base/logging.h"
 #include "base/strings/utf_string_conversion_utils.h"
 #include "build/build_config.h"
@@ -102,7 +101,7 @@
 
 // static
 size_t KeycodeConverter::NumKeycodeMapEntriesForTest() {
-  return base::size(kDomCodeMappings);
+  return std::size(kDomCodeMappings);
 }
 
 // static
@@ -112,7 +111,7 @@
 
 // static
 const char* KeycodeConverter::DomKeyStringForTest(size_t index) {
-  if (index >= base::size(kDomKeyMappings))
+  if (index >= std::size(kDomKeyMappings))
     return nullptr;
   return kDomKeyMappings[index].string;
 }
diff --git a/ui/events/keycodes/dom/keycode_converter_unittest.cc b/ui/events/keycodes/dom/keycode_converter_unittest.cc
index a09b27a..00e5aef3 100644
--- a/ui/events/keycodes/dom/keycode_converter_unittest.cc
+++ b/ui/events/keycodes/dom/keycode_converter_unittest.cc
@@ -10,7 +10,6 @@
 #include <map>
 #include <set>
 
-#include "base/cxx17_backports.h"
 #include "build/build_config.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/events/keycodes/dom/dom_code.h"
@@ -30,7 +29,7 @@
     119,  // mac
 };
 
-const size_t kNativeColumns = base::size(expected_mapped_key_count);
+const size_t kNativeColumns = std::size(expected_mapped_key_count);
 
 struct KeycodeConverterData {
   uint32_t usb_keycode;
diff --git a/ui/events/keycodes/keyboard_code_conversion.cc b/ui/events/keycodes/keyboard_code_conversion.cc
index 204414ae4..ed6b9fb 100644
--- a/ui/events/keycodes/keyboard_code_conversion.cc
+++ b/ui/events/keycodes/keyboard_code_conversion.cc
@@ -6,7 +6,6 @@
 
 #include <algorithm>
 
-#include "base/cxx17_backports.h"
 #include "ui/events/event_constants.h"
 #include "ui/events/keycodes/dom/dom_code.h"
 #include "ui/events/keycodes/dom/dom_key.h"
@@ -247,7 +246,7 @@
 
 KeyboardCode DomCodeToUsLayoutKeyboardCode(DomCode dom_code) {
   const DomCodeToKeyboardCodeEntry* end =
-      kDomCodeToKeyboardCodeMap + base::size(kDomCodeToKeyboardCodeMap);
+      kDomCodeToKeyboardCodeMap + std::size(kDomCodeToKeyboardCodeMap);
   const DomCodeToKeyboardCodeEntry* found = std::lower_bound(
       kDomCodeToKeyboardCodeMap, end, dom_code,
       [](const DomCodeToKeyboardCodeEntry& a, DomCode b) {
diff --git a/ui/events/keycodes/keyboard_code_conversion_mac.mm b/ui/events/keycodes/keyboard_code_conversion_mac.mm
index bf04dde..0b53a81 100644
--- a/ui/events/keycodes/keyboard_code_conversion_mac.mm
+++ b/ui/events/keycodes/keyboard_code_conversion_mac.mm
@@ -4,12 +4,11 @@
 
 #import "ui/events/keycodes/keyboard_code_conversion_mac.h"
 
-#include <algorithm>
-
 #import <Carbon/Carbon.h>
 
+#include <algorithm>
+
 #include "base/check_op.h"
-#include "base/cxx17_backports.h"
 #include "base/mac/mac_logging.h"
 #include "base/mac/scoped_cftyperef.h"
 #include "base/memory/scoped_policy.h"
@@ -577,9 +576,9 @@
   from.keycode = keycode;
 
   const KeyCodeMap* ptr = std::lower_bound(
-      kKeyCodesMap, kKeyCodesMap + base::size(kKeyCodesMap), from);
+      kKeyCodesMap, kKeyCodesMap + std::size(kKeyCodesMap), from);
 
-  if (ptr >= kKeyCodesMap + base::size(kKeyCodesMap) ||
+  if (ptr >= kKeyCodesMap + std::size(kKeyCodesMap) ||
       ptr->keycode != keycode || ptr->macKeycode == -1)
     return -1;
 
diff --git a/ui/events/keycodes/keyboard_code_conversion_x.cc b/ui/events/keycodes/keyboard_code_conversion_x.cc
index 67e5579..fd983f9b 100644
--- a/ui/events/keycodes/keyboard_code_conversion_x.cc
+++ b/ui/events/keycodes/keyboard_code_conversion_x.cc
@@ -8,7 +8,6 @@
 
 #include <algorithm>
 
-#include "base/cxx17_backports.h"
 #include "base/logging.h"
 #include "base/strings/stringprintf.h"
 #include "base/strings/sys_string_conversions.h"
@@ -648,12 +647,12 @@
       !IsCursorKey(keysym) && !IsPFKey(keysym) && !IsFunctionKey(keysym) &&
       !IsModifierKey(keysym)) {
     MAP0 key0 = {keysym & 0xFFFF, 0};
-    keycode = FindVK(key0, map0, base::size(map0));
+    keycode = FindVK(key0, map0, std::size(map0));
     if (keycode != VKEY_UNKNOWN)
       return keycode;
 
     MAP1 key1 = {keysym & 0xFFFF, xkeycode, 0};
-    keycode = FindVK(key1, map1, base::size(map1));
+    keycode = FindVK(key1, map1, std::size(map1));
     if (keycode != VKEY_UNKNOWN)
       return keycode;
 
@@ -661,7 +660,7 @@
     modifiers |= static_cast<int>(x11::KeyButMask::Shift);
     keysym_shift = TranslateKey(xkeycode, modifiers);
     MAP2 key2 = {keysym & 0xFFFF, xkeycode, keysym_shift & 0xFFFF, 0};
-    keycode = FindVK(key2, map2, base::size(map2));
+    keycode = FindVK(key2, map2, std::size(map2));
     if (keycode != VKEY_UNKNOWN)
       return keycode;
 
@@ -671,7 +670,7 @@
     keysym_altgr = TranslateKey(xkeycode, modifiers);
     MAP3 key3 = {keysym & 0xFFFF, xkeycode, keysym_shift & 0xFFFF,
                  keysym_altgr & 0xFFFF, 0};
-    keycode = FindVK(key3, map3, base::size(map3));
+    keycode = FindVK(key3, map3, std::size(map3));
     if (keycode != VKEY_UNKNOWN)
       return keycode;
 
@@ -680,9 +679,9 @@
     // to just find VKEY with (ch0+sc+ch1). This is the best we could do.
     MAP3 key4 = {keysym & 0xFFFF, xkeycode, keysym_shift & 0xFFFF, 0, 0};
     const MAP3* p =
-        std::lower_bound(map3, map3 + base::size(map3), key4, MAP3());
-    if (p != map3 + base::size(map3) && p->ch0 == key4.ch0 &&
-        p->sc == key4.sc && p->ch1 == key4.ch1)
+        std::lower_bound(map3, map3 + std::size(map3), key4, MAP3());
+    if (p != map3 + std::size(map3) && p->ch0 == key4.ch0 && p->sc == key4.sc &&
+        p->ch1 == key4.ch1)
       return static_cast<KeyboardCode>(p->vk);
   }
 
@@ -1167,7 +1166,7 @@
       VKEY_COMPOSE,            // 0x87: KEY_COMPOSE          Menu
   };
 
-  if (hardware_code >= base::size(kHardwareKeycodeMap)) {
+  if (hardware_code >= std::size(kHardwareKeycodeMap)) {
     // Additional keycodes used by the Chrome OS top row special function keys.
     switch (hardware_code) {
       case 0xA6:  // KEY_BACK
diff --git a/ui/events/keycodes/keysym_to_unicode.cc b/ui/events/keycodes/keysym_to_unicode.cc
index 2d8be131..7bc5b73 100644
--- a/ui/events/keycodes/keysym_to_unicode.cc
+++ b/ui/events/keycodes/keysym_to_unicode.cc
@@ -8,7 +8,6 @@
 
 #include <unordered_map>
 
-#include "base/cxx17_backports.h"
 #include "base/lazy_instance.h"
 #include "ui/gfx/x/keysyms/keysyms.h"
 
@@ -813,8 +812,8 @@
 class KeySymToUnicode {
  public:
   KeySymToUnicode()
-      : keysym_to_unicode_map_(base::size(g_keysym_to_unicode_table)) {
-    for (size_t i = 0; i < base::size(g_keysym_to_unicode_table); ++i) {
+      : keysym_to_unicode_map_(std::size(g_keysym_to_unicode_table)) {
+    for (size_t i = 0; i < std::size(g_keysym_to_unicode_table); ++i) {
       keysym_to_unicode_map_[g_keysym_to_unicode_table[i].keysym] =
           g_keysym_to_unicode_table[i].unicode;
     }
diff --git a/ui/events/keycodes/platform_key_map_win.cc b/ui/events/keycodes/platform_key_map_win.cc
index 254c98d..a33de7961 100644
--- a/ui/events/keycodes/platform_key_map_win.cc
+++ b/ui/events/keycodes/platform_key_map_win.cc
@@ -8,12 +8,10 @@
 #include <utility>
 
 #include "base/check_op.h"
-#include "base/cxx17_backports.h"
 #include "base/feature_list.h"
 #include "base/lazy_instance.h"
 #include "base/memory/ptr_util.h"
 #include "base/threading/thread_local.h"
-
 #include "ui/events/event_constants.h"
 #include "ui/events/event_utils.h"
 #include "ui/events/keycodes/dom/keycode_converter.h"
@@ -72,11 +70,11 @@
              : flags;
 }
 
-const int kModifierFlagsCombinations = (1 << base::size(modifier_flags)) - 1;
+const int kModifierFlagsCombinations = (1 << std::size(modifier_flags)) - 1;
 
 int GetModifierFlags(int combination) {
   int flags = EF_NONE;
-  for (size_t i = 0; i < base::size(modifier_flags); ++i) {
+  for (size_t i = 0; i < std::size(modifier_flags); ++i) {
     if (combination & (1 << i))
       flags |= modifier_flags[i];
   }
@@ -391,14 +389,14 @@
     for (int key_code = 0; key_code <= 0xFF; ++key_code) {
       wchar_t translated_chars[5];
       int rv = ::ToUnicodeEx(key_code, 0, keyboard_state, translated_chars,
-                             base::size(translated_chars), 0, keyboard_layout_);
+                             std::size(translated_chars), 0, keyboard_layout_);
 
       if (rv == -1) {
         // Dead key, injecting VK_SPACE to get character representation.
         BYTE empty_state[256];
         memset(empty_state, 0, sizeof(empty_state));
         rv = ::ToUnicodeEx(VK_SPACE, 0, empty_state, translated_chars,
-                           base::size(translated_chars), 0, keyboard_layout_);
+                           std::size(translated_chars), 0, keyboard_layout_);
         // Expecting a dead key character (not followed by a space).
         if (rv == 1) {
           printable_keycode_to_key_[std::make_pair(static_cast<int>(key_code),
diff --git a/ui/events/mojom/mojom_traits_unittest.cc b/ui/events/mojom/mojom_traits_unittest.cc
index 6a6aaae..5f7a444 100644
--- a/ui/events/mojom/mojom_traits_unittest.cc
+++ b/ui/events/mojom/mojom_traits_unittest.cc
@@ -4,7 +4,6 @@
 
 #include <utility>
 
-#include "base/cxx17_backports.h"
 #include "mojo/public/cpp/base/time_mojom_traits.h"
 #include "mojo/public/cpp/test_support/test_utils.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -111,7 +110,7 @@
        base::TimeTicks() + base::Microseconds(102)},
   };
 
-  for (size_t i = 0; i < base::size(kTestData); i++) {
+  for (size_t i = 0; i < std::size(kTestData); i++) {
     std::unique_ptr<Event> expected_copy = Event::Clone(kTestData[i]);
     std::unique_ptr<Event> output;
     ASSERT_TRUE(mojo::test::SerializeAndDeserialize<mojom::Event>(expected_copy,
@@ -150,7 +149,7 @@
        PointerDetails(EventPointerType::kMouse, kPointerIdMouse)},
   };
 
-  for (size_t i = 0; i < base::size(kTestData); i++) {
+  for (size_t i = 0; i < std::size(kTestData); i++) {
     std::unique_ptr<Event> expected_copy = Event::Clone(kTestData[i]);
     std::unique_ptr<Event> output;
     ASSERT_TRUE(mojo::test::SerializeAndDeserialize<mojom::Event>(expected_copy,
@@ -176,7 +175,7 @@
        gfx::Vector2d(120, -15)},
   };
 
-  for (size_t i = 0; i < base::size(kTestData); i++) {
+  for (size_t i = 0; i < std::size(kTestData); i++) {
     std::unique_ptr<Event> expected_copy = Event::Clone(kTestData[i]);
     std::unique_ptr<Event> output;
     ASSERT_TRUE(mojo::test::SerializeAndDeserialize<mojom::Event>(expected_copy,
@@ -257,7 +256,7 @@
        pinch_update_details},
   };
 
-  for (size_t i = 0; i < base::size(kTestData); i++) {
+  for (size_t i = 0; i < std::size(kTestData); i++) {
     std::unique_ptr<Event> expected_copy = Event::Clone(kTestData[i]);
     std::unique_ptr<Event> output;
     ASSERT_TRUE(mojo::test::SerializeAndDeserialize<mojom::Event>(expected_copy,
@@ -303,7 +302,7 @@
        EventMomentumPhase::END, ScrollEventPhase::kNone},
   };
 
-  for (size_t i = 0; i < base::size(kTestData); i++) {
+  for (size_t i = 0; i < std::size(kTestData); i++) {
     std::unique_ptr<Event> expected_copy = Event::Clone(kTestData[i]);
     std::unique_ptr<Event> output;
     ASSERT_TRUE(mojo::test::SerializeAndDeserialize<mojom::Event>(expected_copy,
@@ -332,7 +331,7 @@
       {EventPointerType::kTouch, 1, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f},
       {EventPointerType::kEraser, 21, 22.f, 23.f, 24.f, 25.f, 26.f, 27.f},
   };
-  for (size_t i = 0; i < base::size(kTestData); i++) {
+  for (size_t i = 0; i < std::size(kTestData); i++) {
     // Set |offset| as the constructor used above does not modify it.
     PointerDetails input(kTestData[i]);
     input.offset.set_x(i);
@@ -356,7 +355,7 @@
       {ET_TOUCH_MOVED, {1, 2}, base::TimeTicks::Now(), {}, EF_NONE},
       {ET_TOUCH_CANCELLED, {1, 2}, base::TimeTicks::Now(), {}, EF_NONE},
   };
-  for (size_t i = 0; i < base::size(kTestData); i++) {
+  for (size_t i = 0; i < std::size(kTestData); i++) {
     std::unique_ptr<Event> expected_copy = Event::Clone(kTestData[i]);
     std::unique_ptr<Event> output;
     ASSERT_TRUE(mojo::test::SerializeAndDeserialize<mojom::Event>(expected_copy,
diff --git a/ui/events/ozone/device/udev/device_manager_udev.cc b/ui/events/ozone/device/udev/device_manager_udev.cc
index 1b64e54..bebce2f 100644
--- a/ui/events/ozone/device/udev/device_manager_udev.cc
+++ b/ui/events/ozone/device/udev/device_manager_udev.cc
@@ -6,7 +6,6 @@
 
 #include <stddef.h>
 
-#include "base/cxx17_backports.h"
 #include "base/logging.h"
 #include "base/strings/stringprintf.h"
 #include "base/task/current_thread.h"
@@ -67,7 +66,7 @@
   struct udev_monitor* monitor =
       device::udev_monitor_new_from_netlink(udev, "udev");
   if (monitor) {
-    for (size_t i = 0; i < base::size(kSubsystems); ++i)
+    for (size_t i = 0; i < std::size(kSubsystems); ++i)
       device::udev_monitor_filter_add_match_subsystem_devtype(
           monitor, kSubsystems[i], NULL);
 
@@ -108,7 +107,7 @@
   if (!enumerate)
     return;
 
-  for (size_t i = 0; i < base::size(kSubsystems); ++i)
+  for (size_t i = 0; i < std::size(kSubsystems); ++i)
     device::udev_enumerate_add_match_subsystem(enumerate.get(), kSubsystems[i]);
   device::udev_enumerate_scan_devices(enumerate.get());
 
diff --git a/ui/events/ozone/evdev/capture_device_capabilities.py b/ui/events/ozone/evdev/capture_device_capabilities.py
index e5ab2bd..1f153ebb 100755
--- a/ui/events/ozone/evdev/capture_device_capabilities.py
+++ b/ui/events/ozone/evdev/capture_device_capabilities.py
@@ -138,7 +138,7 @@
 
   if has_abs:
     out.write('    %s,\n' % absinfo_identifier)
-    out.write('    base::size(%s),\n' % absinfo_identifier)
+    out.write('    std::size(%s),\n' % absinfo_identifier)
   else:
     out.write('    /* abs_axis */ nullptr,\n')
     out.write('    /* abs_axis_count */ 0,\n')
diff --git a/ui/events/ozone/evdev/event_converter_evdev_impl_unittest.cc b/ui/events/ozone/evdev/event_converter_evdev_impl_unittest.cc
index 8858b35..ec9a214 100644
--- a/ui/events/ozone/evdev/event_converter_evdev_impl_unittest.cc
+++ b/ui/events/ozone/evdev/event_converter_evdev_impl_unittest.cc
@@ -10,7 +10,6 @@
 #include <utility>
 
 #include "base/bind.h"
-#include "base/cxx17_backports.h"
 #include "base/files/scoped_file.h"
 #include "base/test/task_environment.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -162,7 +161,7 @@
       {{0, 0}, EV_SYN, SYN_REPORT, 0},
   };
 
-  dev->ProcessEvents(mock_kernel_queue, base::size(mock_kernel_queue));
+  dev->ProcessEvents(mock_kernel_queue, std::size(mock_kernel_queue));
   EXPECT_EQ(2u, size());
 
   ui::KeyEvent* event;
@@ -201,7 +200,7 @@
       {{0, 0}, EV_SYN, SYN_REPORT, 0},
   };
 
-  dev->ProcessEvents(mock_kernel_queue, base::size(mock_kernel_queue));
+  dev->ProcessEvents(mock_kernel_queue, std::size(mock_kernel_queue));
   EXPECT_EQ(2u, size());
 
   ui::KeyEvent* event;
@@ -246,7 +245,7 @@
       {{0, 0}, EV_SYN, SYN_REPORT, 0},
   };
 
-  dev->ProcessEvents(mock_kernel_queue, base::size(mock_kernel_queue));
+  dev->ProcessEvents(mock_kernel_queue, std::size(mock_kernel_queue));
   EXPECT_EQ(4u, size());
 
   ui::KeyEvent* event;
@@ -305,7 +304,7 @@
       {{0, 0}, EV_SYN, SYN_REPORT, 0},
   };
 
-  dev->ProcessEvents(mock_kernel_queue, base::size(mock_kernel_queue));
+  dev->ProcessEvents(mock_kernel_queue, std::size(mock_kernel_queue));
   EXPECT_EQ(6u, size());
 
   ui::KeyEvent* event;
@@ -360,7 +359,7 @@
       {{0, 0}, EV_SYN, SYN_REPORT, 0},
   };
 
-  dev->ProcessEvents(mock_kernel_queue, base::size(mock_kernel_queue));
+  dev->ProcessEvents(mock_kernel_queue, std::size(mock_kernel_queue));
   EXPECT_EQ(2u, size());
 
   ui::KeyEvent* event;
@@ -389,7 +388,7 @@
       {{0, 0}, EV_SYN, SYN_REPORT, 0},
   };
 
-  dev->ProcessEvents(mock_kernel_queue, base::size(mock_kernel_queue));
+  dev->ProcessEvents(mock_kernel_queue, std::size(mock_kernel_queue));
   EXPECT_EQ(2u, size());
 
   ui::MouseEvent* event;
@@ -421,7 +420,7 @@
       {{0, 0}, EV_SYN, SYN_REPORT, 0}
   };
 
-  dev->ProcessEvents(mock_kernel_queue, base::size(mock_kernel_queue));
+  dev->ProcessEvents(mock_kernel_queue, std::size(mock_kernel_queue));
   EXPECT_EQ(2u, size());
 
   ui::MouseEvent* event = nullptr;
@@ -453,7 +452,7 @@
       {{0, 0}, EV_SYN, SYN_REPORT, 0}
   };
 
-  dev->ProcessEvents(mock_kernel_queue, base::size(mock_kernel_queue));
+  dev->ProcessEvents(mock_kernel_queue, std::size(mock_kernel_queue));
   EXPECT_EQ(2u, size());
 
   ui::MouseEvent* event = nullptr;
@@ -476,7 +475,7 @@
       {{0, 0}, EV_SYN, SYN_REPORT, 0},
   };
 
-  dev->ProcessEvents(mock_kernel_queue, base::size(mock_kernel_queue));
+  dev->ProcessEvents(mock_kernel_queue, std::size(mock_kernel_queue));
   EXPECT_EQ(1u, size());
 
   ui::MouseEvent* event;
@@ -497,7 +496,7 @@
       {{0, 0}, EV_SYN, SYN_REPORT, 0},
   };
 
-  dev->ProcessEvents(mock_kernel_queue, base::size(mock_kernel_queue));
+  dev->ProcessEvents(mock_kernel_queue, std::size(mock_kernel_queue));
   EXPECT_EQ(0u, size());
 }
 
@@ -509,7 +508,7 @@
       {{0, 0}, EV_SYN, SYN_REPORT, 0},
   };
 
-  dev->ProcessEvents(mock_kernel_queue, base::size(mock_kernel_queue));
+  dev->ProcessEvents(mock_kernel_queue, std::size(mock_kernel_queue));
   EXPECT_EQ(1u, size());
 
   DestroyDevice();
@@ -534,7 +533,7 @@
       {{0, 0}, EV_SYN, SYN_DROPPED, 0},
   };
 
-  dev->ProcessEvents(mock_kernel_queue, base::size(mock_kernel_queue));
+  dev->ProcessEvents(mock_kernel_queue, std::size(mock_kernel_queue));
   EXPECT_EQ(2u, size());
 
   ui::KeyEvent* event = dispatched_event(0);
@@ -554,7 +553,7 @@
       {{0, 0}, EV_SYN, SYN_REPORT, 0},
   };
 
-  dev->ProcessEvents(mock_kernel_queue, base::size(mock_kernel_queue));
+  dev->ProcessEvents(mock_kernel_queue, std::size(mock_kernel_queue));
   EXPECT_EQ(1u, size());
 
   dev->SetEnabled(false);
@@ -587,7 +586,7 @@
     {{0, 0}, EV_KEY, SYN_REPORT, 0},
   };
 
-  dev->ProcessEvents(mock_kernel_queue, base::size(mock_kernel_queue));
+  dev->ProcessEvents(mock_kernel_queue, std::size(mock_kernel_queue));
 
   ASSERT_EQ(4u, size());
   ui::KeyEvent* event = dispatched_event(0);
@@ -607,7 +606,7 @@
   std::vector<ui::DomCode> allowed_keys;
   allowed_keys.push_back(ui::DomCode::POWER);
   dev->SetKeyFilter(true /* enable_filter */, allowed_keys);
-  dev->ProcessEvents(mock_kernel_queue, base::size(mock_kernel_queue));
+  dev->ProcessEvents(mock_kernel_queue, std::size(mock_kernel_queue));
 
   ASSERT_EQ(2u, size());
   event = dispatched_event(0);
@@ -619,7 +618,7 @@
 
   ClearDispatchedEvents();
   dev->SetKeyFilter(false /* enable_filter */, std::vector<ui::DomCode>());
-  dev->ProcessEvents(mock_kernel_queue, base::size(mock_kernel_queue));
+  dev->ProcessEvents(mock_kernel_queue, std::size(mock_kernel_queue));
 
   event = dispatched_event(0);
   EXPECT_EQ(ui::ET_KEY_PRESSED, event->type());
@@ -649,7 +648,7 @@
     {{0, 0}, EV_SYN, SYN_REPORT, 0},
   };
 
-  dev->ProcessEvents(key_press, base::size(key_press));
+  dev->ProcessEvents(key_press, std::size(key_press));
   ASSERT_EQ(1u, size());
   ui::KeyEvent* event = dispatched_event(0);
   EXPECT_EQ(ui::ET_KEY_PRESSED, event->type());
@@ -665,7 +664,7 @@
 
   // The real key release should be dropped, whenever it comes.
   ClearDispatchedEvents();
-  dev->ProcessEvents(key_release, base::size(key_release));
+  dev->ProcessEvents(key_release, std::size(key_release));
   ASSERT_EQ(0u, size());
 }
 
@@ -692,7 +691,7 @@
   SetTestNowSeconds(1510019415);
   ClearDispatchedEvents();
   GetInputController()->SetPrimaryButtonRight(false);
-  dev->ProcessEvents(mock_kernel_queue, base::size(mock_kernel_queue));
+  dev->ProcessEvents(mock_kernel_queue, std::size(mock_kernel_queue));
   EXPECT_EQ(4u, size());
 
   ui::MouseEvent* event;
@@ -732,7 +731,7 @@
 
   ClearDispatchedEvents();
   GetInputController()->SetPrimaryButtonRight(true);
-  dev->ProcessEvents(mock_kernel_queue2, base::size(mock_kernel_queue2));
+  dev->ProcessEvents(mock_kernel_queue2, std::size(mock_kernel_queue2));
   EXPECT_EQ(4u, size());
 
   event = dispatched_mouse_event(0);
diff --git a/ui/events/ozone/evdev/event_device_info.cc b/ui/events/ozone/evdev/event_device_info.cc
index a47bacbb..5ffe838 100644
--- a/ui/events/ozone/evdev/event_device_info.cc
+++ b/ui/events/ozone/evdev/event_device_info.cc
@@ -8,7 +8,6 @@
 
 #include <cstring>
 
-#include "base/cxx17_backports.h"
 #include "base/feature_list.h"
 #include "base/files/file_path.h"
 #include "base/logging.h"
@@ -229,7 +228,7 @@
       {0x222a, 0x0001},  // ILITEK ILITEK-TP
   };
 
-  for (size_t i = 0; i < base::size(kUSBLegacyDenyListedDevices); ++i) {
+  for (size_t i = 0; i < std::size(kUSBLegacyDenyListedDevices); ++i) {
     if (id.vendor == kUSBLegacyDenyListedDevices[i].vid &&
         id.product == kUSBLegacyDenyListedDevices[i].pid) {
       return true;
@@ -323,39 +322,39 @@
 }
 
 void EventDeviceInfo::SetEventTypes(const unsigned long* ev_bits, size_t len) {
-  AssignBitset(ev_bits, len, ev_bits_, base::size(ev_bits_));
+  AssignBitset(ev_bits, len, ev_bits_, std::size(ev_bits_));
 }
 
 void EventDeviceInfo::SetKeyEvents(const unsigned long* key_bits, size_t len) {
-  AssignBitset(key_bits, len, key_bits_, base::size(key_bits_));
+  AssignBitset(key_bits, len, key_bits_, std::size(key_bits_));
 }
 
 void EventDeviceInfo::SetRelEvents(const unsigned long* rel_bits, size_t len) {
-  AssignBitset(rel_bits, len, rel_bits_, base::size(rel_bits_));
+  AssignBitset(rel_bits, len, rel_bits_, std::size(rel_bits_));
 }
 
 void EventDeviceInfo::SetAbsEvents(const unsigned long* abs_bits, size_t len) {
-  AssignBitset(abs_bits, len, abs_bits_, base::size(abs_bits_));
+  AssignBitset(abs_bits, len, abs_bits_, std::size(abs_bits_));
 }
 
 void EventDeviceInfo::SetMscEvents(const unsigned long* msc_bits, size_t len) {
-  AssignBitset(msc_bits, len, msc_bits_, base::size(msc_bits_));
+  AssignBitset(msc_bits, len, msc_bits_, std::size(msc_bits_));
 }
 
 void EventDeviceInfo::SetSwEvents(const unsigned long* sw_bits, size_t len) {
-  AssignBitset(sw_bits, len, sw_bits_, base::size(sw_bits_));
+  AssignBitset(sw_bits, len, sw_bits_, std::size(sw_bits_));
 }
 
 void EventDeviceInfo::SetLedEvents(const unsigned long* led_bits, size_t len) {
-  AssignBitset(led_bits, len, led_bits_, base::size(led_bits_));
+  AssignBitset(led_bits, len, led_bits_, std::size(led_bits_));
 }
 
 void EventDeviceInfo::SetFfEvents(const unsigned long* ff_bits, size_t len) {
-  AssignBitset(ff_bits, len, ff_bits_, base::size(ff_bits_));
+  AssignBitset(ff_bits, len, ff_bits_, std::size(ff_bits_));
 }
 
 void EventDeviceInfo::SetProps(const unsigned long* prop_bits, size_t len) {
-  AssignBitset(prop_bits, len, prop_bits_, base::size(prop_bits_));
+  AssignBitset(prop_bits, len, prop_bits_, std::size(prop_bits_));
 }
 
 void EventDeviceInfo::SetAbsInfo(unsigned int code,
@@ -729,7 +728,7 @@
   };
 
   if (id.bustype == BUS_USB) {
-    for (size_t i = 0; i < base::size(kUSBInternalDevices); ++i) {
+    for (size_t i = 0; i < std::size(kUSBInternalDevices); ++i) {
       if (id.vendor == kUSBInternalDevices[i].vid &&
           id.product == kUSBInternalDevices[i].pid)
         return InputDeviceType::INPUT_DEVICE_INTERNAL;
diff --git a/ui/events/ozone/evdev/event_device_test_util.cc b/ui/events/ozone/evdev/event_device_test_util.cc
index bac784b8..1768d11 100644
--- a/ui/events/ozone/evdev/event_device_test_util.cc
+++ b/ui/events/ozone/evdev/event_device_test_util.cc
@@ -6,7 +6,6 @@
 
 #include <stdint.h>
 
-#include "base/cxx17_backports.h"
 #include "base/format_macros.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_split.h"
@@ -106,7 +105,7 @@
     /* led */ "0",
     /* ff */ "0",
     kHJCGamepadAbsAxes,
-    base::size(kHJCGamepadAbsAxes),
+    std::size(kHJCGamepadAbsAxes),
 };
 
 // Captured from Xbox 360 gamepad.
@@ -140,7 +139,7 @@
     /* led */ "0",
     /* ff */ "107030000 0",
     kXboxGamepadAbsAxes,
-    base::size(kXboxGamepadAbsAxes),
+    std::size(kXboxGamepadAbsAxes),
 };
 
 // Captured from iBuffalo gamepad.
@@ -169,7 +168,7 @@
     /* led */ "0",
     /* ff */ "0",
     kiBuffaloGamepadAbsAxes,
-    base::size(kiBuffaloGamepadAbsAxes),
+    std::size(kiBuffaloGamepadAbsAxes),
 };
 
 // Captured from Basking.
@@ -206,7 +205,7 @@
     /* led */ "0",
     /* ff */ "0",
     kBaskingTouchScreenAbsAxes,
-    base::size(kBaskingTouchScreenAbsAxes),
+    std::size(kBaskingTouchScreenAbsAxes),
 };
 
 // Captured from Pixelbook.
@@ -245,7 +244,7 @@
     /* led */ "0",
     /* ff */ "0",
     kEveTouchScreenAbsAxes,
-    base::size(kEveTouchScreenAbsAxes),
+    std::size(kEveTouchScreenAbsAxes),
 };
 
 // Captured from Pixel Slate.
@@ -284,7 +283,7 @@
     /* led */ "0",
     /* ff */ "0",
     kNocturneTouchScreenAbsAxes,
-    base::size(kNocturneTouchScreenAbsAxes),
+    std::size(kNocturneTouchScreenAbsAxes),
 };
 
 // Captured from Chromebook Pixel.
@@ -342,7 +341,7 @@
     /* led */ "0",
     /* ff */ "0",
     kLinkTouchscreenAbsAxes,
-    base::size(kLinkTouchscreenAbsAxes),
+    std::size(kLinkTouchscreenAbsAxes),
 };
 
 // Fake Atmel touchscreen based on real device from Chromebook Pixel,
@@ -381,7 +380,7 @@
     /* led */ "0",
     /* ff */ "0",
     kLinkWithToolTypeTouchscreenAbsAxes,
-    base::size(kLinkWithToolTypeTouchscreenAbsAxes),
+    std::size(kLinkWithToolTypeTouchscreenAbsAxes),
 };
 
 // Captured from Chromebook Pixel.
@@ -418,7 +417,7 @@
     /* led */ "0",
     /* ff */ "0",
     kLinkTouchpadAbsAxes,
-    base::size(kLinkTouchpadAbsAxes),
+    std::size(kLinkTouchpadAbsAxes),
 };
 
 const DeviceCapabilities kMorphiusPointingStick = {
@@ -491,7 +490,7 @@
     /* led */ "0",
     /* ff */ "0",
     kHpUsbKeyboard_ExtraAbsAxes,
-    base::size(kHpUsbKeyboard_ExtraAbsAxes),
+    std::size(kHpUsbKeyboard_ExtraAbsAxes),
 };
 
 // Captured from Dell MS111-L 3-Button Optical USB Mouse.
@@ -542,7 +541,7 @@
     /* led */ "0",
     /* ff */ "0",
     kMimoTouch2TouchscreenAbsAxes,
-    base::size(kMimoTouch2TouchscreenAbsAxes),
+    std::size(kMimoTouch2TouchscreenAbsAxes),
 };
 
 // Captured from Wacom Intuos Pen and Touch Small Tablet.
@@ -573,7 +572,7 @@
     /* led */ "0",
     /* ff */ "0",
     kWacomIntuosPtS_PenAbsAxes,
-    base::size(kWacomIntuosPtS_PenAbsAxes),
+    std::size(kWacomIntuosPtS_PenAbsAxes),
 };
 
 // Captured from Wacom Intuos Pen and Touch Small Tablet.
@@ -608,7 +607,7 @@
     /* led */ "0",
     /* ff */ "0",
     kWacomIntuosPtS_FingerAbsAxes,
-    base::size(kWacomIntuosPtS_FingerAbsAxes),
+    std::size(kWacomIntuosPtS_FingerAbsAxes),
 };
 
 // Captured from Logitech Wireless Touch Keyboard K400.
@@ -639,7 +638,7 @@
     /* led */ "1f",
     /* ff */ "0",
     kLogitechTouchKeyboardK400AbsAxes,
-    base::size(kLogitechTouchKeyboardK400AbsAxes),
+    std::size(kLogitechTouchKeyboardK400AbsAxes),
 };
 
 // Captured from Elo TouchSystems 2700 touchscreen.
@@ -671,7 +670,7 @@
     /* led */ "0",
     /* ff */ "0",
     kElo_TouchSystems_2700AbsAxes,
-    base::size(kElo_TouchSystems_2700AbsAxes),
+    std::size(kElo_TouchSystems_2700AbsAxes),
 };
 
 // Captured from Intel reference design: "Wilson Beach".
@@ -702,7 +701,7 @@
     /* led */ "0",
     /* ff */ "0",
     kWilsonBeachActiveStylusAbsAxes,
-    base::size(kWilsonBeachActiveStylusAbsAxes),
+    std::size(kWilsonBeachActiveStylusAbsAxes),
 };
 
 // Captured from Eve Chromebook
@@ -732,7 +731,7 @@
     /* led */ "0",
     /* ff */ "0",
     kEveStylusAbsAxes,
-    base::size(kEveStylusAbsAxes),
+    std::size(kEveStylusAbsAxes),
 };
 
 // Captured from Pixel Slate
@@ -762,7 +761,7 @@
     /* led */ "0",
     /* ff */ "0",
     kNocturneStylusAbsAxes,
-    base::size(kNocturneStylusAbsAxes),
+    std::size(kNocturneStylusAbsAxes),
 };
 
 const DeviceCapabilities kHammerKeyboard = {
@@ -823,7 +822,7 @@
     /* led */ "0",
     /* ff */ "0",
     kHammerTouchpadAbsAxes,
-    base::size(kHammerTouchpadAbsAxes),
+    std::size(kHammerTouchpadAbsAxes),
 };
 
 // Captured from Logitech Tap touch controller
@@ -852,7 +851,7 @@
     /* led */ "0",
     /* ff */ "0",
     kIlitekTP_Mouse_AbsAxes,
-    base::size(kIlitekTP_Mouse_AbsAxes),
+    std::size(kIlitekTP_Mouse_AbsAxes),
 };
 const DeviceAbsoluteAxis kIlitekTPAbsAxes[] = {
     {ABS_X, {0, 0, 16384, 0, 0, 76}},
@@ -883,7 +882,7 @@
     /* led */ "0",
     /* ff */ "0",
     kIlitekTPAbsAxes,
-    base::size(kIlitekTPAbsAxes),
+    std::size(kIlitekTPAbsAxes),
 };
 
 const DeviceCapabilities kSideVolumeButton = {
@@ -943,7 +942,7 @@
     /* led */ "0",
     /* ff */ "0",
     kKohakuTouchscreenAxes,
-    base::size(kKohakuTouchscreenAxes),
+    std::size(kKohakuTouchscreenAxes),
 };
 
 const DeviceAbsoluteAxis kKohakuStylusAxes[] = {
@@ -976,7 +975,7 @@
     /* led */ "0",
     /* ff */ "0",
     kKohakuStylusAxes,
-    base::size(kKohakuStylusAxes),
+    std::size(kKohakuStylusAxes),
 };
 
 const DeviceAbsoluteAxis kXboxEliteAxes[] = {
@@ -1004,7 +1003,9 @@
     /* version */ "0903",
     /* prop */ "0",
     /* ev */ "10001b",
-    /* key */ "4000000 0 7fff000000000000 1000000000000 100040000000 e080ffdf01cfffff fffffffffffffffe",
+    /* key */
+    "4000000 0 7fff000000000000 1000000000000 100040000000 e080ffdf01cfffff "
+    "fffffffffffffffe",
     /* rel */ "0",
     /* abs */ "30627",
     /* msc */ "10",
@@ -1012,7 +1013,7 @@
     /* led */ "0",
     /* ff */ "0",
     kXboxEliteAxes,
-    base::size(kXboxEliteAxes),
+    std::size(kXboxEliteAxes),
 };
 const DeviceCapabilities kDellActivePenButton = {
     /* path */
@@ -1065,7 +1066,7 @@
     /* led */ "0",
     /* ff */ "0",
     kDrallionStylusAxes,
-    base::size(kDrallionStylusAxes),
+    std::size(kDrallionStylusAxes),
 };
 
 const DeviceCapabilities kDrallionKeyboard = {
@@ -1303,7 +1304,7 @@
     /* led */ "7",
     /* ff */ "0",
     kMicrosoftBluetoothNumberPadAbsAxes,
-    base::size(kMicrosoftBluetoothNumberPadAbsAxes),
+    std::size(kMicrosoftBluetoothNumberPadAbsAxes),
 };
 
 // Captured from Dell Latitude E6510, which report non valid resolutions and is
@@ -1336,7 +1337,7 @@
     /* led */ "0",
     /* ff */ "0",
     kDellLatitudeE6510TouchpadAbsAxes,
-    base::size(kDellLatitudeE6510TouchpadAbsAxes),
+    std::size(kDellLatitudeE6510TouchpadAbsAxes),
 };
 
 // Captured from HP ProBook 6560b. Touchpad that is semi-multitouch.
@@ -1369,7 +1370,7 @@
     /* led */ "0",
     /* ff */ "0",
     kHPProBook6560bTouchpadAbsAxes,
-    base::size(kHPProBook6560bTouchpadAbsAxes),
+    std::size(kHPProBook6560bTouchpadAbsAxes),
 };
 
 const DeviceCapabilities kJinlonKeyboard = {
@@ -1435,7 +1436,7 @@
     /* led */ "0",
     /* ff */ "8000 0",
     kRedrixTouchpadAxes,
-    base::size(kRedrixTouchpadAxes),
+    std::size(kRedrixTouchpadAxes),
 };
 
 // NB: Please use the capture_device_capabilities.py script to add more
diff --git a/ui/events/ozone/evdev/gamepad_event_converter_evdev_unittest.cc b/ui/events/ozone/evdev/gamepad_event_converter_evdev_unittest.cc
index 0660fd02..c0c7702 100644
--- a/ui/events/ozone/evdev/gamepad_event_converter_evdev_unittest.cc
+++ b/ui/events/ozone/evdev/gamepad_event_converter_evdev_unittest.cc
@@ -15,7 +15,6 @@
 #include <vector>
 
 #include "base/bind.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_util.h"
 #include "base/files/scoped_file.h"
 #include "base/posix/eintr_wrapper.h"
@@ -210,7 +209,7 @@
       {GamepadEventType::BUTTON, 307, 1}, {GamepadEventType::FRAME, 0, 0},
   };
 
-  for (unsigned i = 0; i < base::size(mock_kernel_queue); ++i) {
+  for (unsigned i = 0; i < std::size(mock_kernel_queue); ++i) {
     dev->ProcessEvent(mock_kernel_queue[i]);
   }
 
diff --git a/ui/events/ozone/evdev/libgestures_glue/gesture_interpreter_libevdev_cros.cc b/ui/events/ozone/evdev/libgestures_glue/gesture_interpreter_libevdev_cros.cc
index a87af19..28e917b 100644
--- a/ui/events/ozone/evdev/libgestures_glue/gesture_interpreter_libevdev_cros.cc
+++ b/ui/events/ozone/evdev/libgestures_glue/gesture_interpreter_libevdev_cros.cc
@@ -8,7 +8,6 @@
 #include <libevdev/libevdev.h>
 #include <linux/input.h>
 
-#include "base/cxx17_backports.h"
 #include "base/logging.h"
 #include "base/strings/stringprintf.h"
 #include "base/timer/timer.h"
@@ -559,7 +558,7 @@
   unsigned long key_state_diff[EVDEV_BITS_TO_LONGS(KEY_CNT)];
 
   // Find changed keys.
-  for (unsigned long i = 0; i < base::size(key_state_diff); ++i)
+  for (unsigned long i = 0; i < std::size(key_state_diff); ++i)
     key_state_diff[i] = new_key_state[i] ^ prev_key_state_[i];
 
   // Dispatch events for changed keys.
diff --git a/ui/events/ozone/evdev/libgestures_glue/gesture_property_provider.cc b/ui/events/ozone/evdev/libgestures_glue/gesture_property_provider.cc
index a03469f..7971290 100644
--- a/ui/events/ozone/evdev/libgestures_glue/gesture_property_provider.cc
+++ b/ui/events/ozone/evdev/libgestures_glue/gesture_property_provider.cc
@@ -13,7 +13,6 @@
 #include <algorithm>
 #include <unordered_map>
 
-#include "base/cxx17_backports.h"
 #include "base/files/file_enumerator.h"
 #include "base/files/file_util.h"
 #include "base/logging.h"
@@ -483,10 +482,10 @@
 // Check if a match criteria is currently implemented. Note that we didn't
 // implemented all of them as some are inapplicable in the non-X world.
 bool IsMatchTypeSupported(const std::string& match_type) {
-  for (size_t i = 0; i < base::size(kSupportedMatchTypes); ++i)
+  for (size_t i = 0; i < std::size(kSupportedMatchTypes); ++i)
     if (match_type == kSupportedMatchTypes[i])
       return true;
-  for (size_t i = 0; i < base::size(kUnsupportedMatchTypes); ++i) {
+  for (size_t i = 0; i < std::size(kUnsupportedMatchTypes); ++i) {
     if (match_type == kUnsupportedMatchTypes[i]) {
       LOG(ERROR) << "Unsupported gestures input class match type: "
                  << match_type;
@@ -503,11 +502,11 @@
 
 // Parse a boolean value keyword (e.g., on/off, true/false).
 int ParseBooleanKeyword(const std::string& value) {
-  for (size_t i = 0; i < base::size(kTrue); ++i) {
+  for (size_t i = 0; i < std::size(kTrue); ++i) {
     if (base::LowerCaseEqualsASCII(value, kTrue[i]))
       return 1;
   }
-  for (size_t i = 0; i < base::size(kFalse); ++i) {
+  for (size_t i = 0; i < std::size(kFalse); ++i) {
     if (base::LowerCaseEqualsASCII(value, kFalse[i]))
       return -1;
   }
diff --git a/ui/events/ozone/evdev/stylus_button_event_converter_evdev_unittest.cc b/ui/events/ozone/evdev/stylus_button_event_converter_evdev_unittest.cc
index da1979f..eea6521 100644
--- a/ui/events/ozone/evdev/stylus_button_event_converter_evdev_unittest.cc
+++ b/ui/events/ozone/evdev/stylus_button_event_converter_evdev_unittest.cc
@@ -14,7 +14,6 @@
 #include <vector>
 
 #include "base/bind.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_util.h"
 #include "base/files/scoped_file.h"
 #include "base/memory/ptr_util.h"
@@ -187,7 +186,7 @@
       {{0, 0}, EV_SYN, SYN_REPORT, 0},
   };
 
-  for (unsigned i = 0; i < base::size(mock_kernel_queue); ++i) {
+  for (unsigned i = 0; i < std::size(mock_kernel_queue); ++i) {
     dev->ProcessEvent(mock_kernel_queue[i]);
   }
   EXPECT_EQ(0u, size());
@@ -211,7 +210,7 @@
       {{0, 0}, EV_SYN, SYN_REPORT, 0},
   };
 
-  for (unsigned i = 0; i < base::size(mock_kernel_queue); ++i) {
+  for (unsigned i = 0; i < std::size(mock_kernel_queue); ++i) {
     dev->ProcessEvent(mock_kernel_queue[i]);
   }
   EXPECT_EQ(2u, size());
@@ -243,7 +242,7 @@
       {{0, 0}, EV_SYN, SYN_REPORT, 0},
   };
 
-  for (unsigned i = 0; i < base::size(mock_kernel_queue); ++i) {
+  for (unsigned i = 0; i < std::size(mock_kernel_queue); ++i) {
     dev->ProcessEvent(mock_kernel_queue[i]);
   }
   EXPECT_EQ(0u, size());
diff --git a/ui/events/ozone/evdev/tablet_event_converter_evdev_unittest.cc b/ui/events/ozone/evdev/tablet_event_converter_evdev_unittest.cc
index 510b7fe71..59ac3531 100644
--- a/ui/events/ozone/evdev/tablet_event_converter_evdev_unittest.cc
+++ b/ui/events/ozone/evdev/tablet_event_converter_evdev_unittest.cc
@@ -14,7 +14,6 @@
 #include <vector>
 
 #include "base/bind.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_util.h"
 #include "base/files/scoped_file.h"
 #include "base/memory/ptr_util.h"
@@ -71,7 +70,7 @@
     /* led */ "0",
     /* ff */ "0",
     kWacomIntuos5SPenAbsAxes,
-    base::size(kWacomIntuos5SPenAbsAxes),
+    std::size(kWacomIntuos5SPenAbsAxes),
 };
 
 const ui::DeviceAbsoluteAxis EpsonBrightLink1430AbsAxes[] = {
@@ -104,7 +103,7 @@
     /* led */ "0",
     /* ff */ "0",
     EpsonBrightLink1430AbsAxes,
-    base::size(EpsonBrightLink1430AbsAxes),
+    std::size(EpsonBrightLink1430AbsAxes),
 };
 
 }  // namespace
@@ -305,7 +304,7 @@
       {{0, 0}, EV_SYN, SYN_REPORT, 0},
   };
 
-  dev->ProcessEvents(mock_kernel_queue, base::size(mock_kernel_queue));
+  dev->ProcessEvents(mock_kernel_queue, std::size(mock_kernel_queue));
   EXPECT_EQ(1u, size());
 
   ui::MouseEvent* event = dispatched_event(0);
@@ -339,7 +338,7 @@
       {{0, 0}, EV_SYN, SYN_REPORT, 0},
   };
 
-  dev->ProcessEvents(mock_kernel_queue, base::size(mock_kernel_queue));
+  dev->ProcessEvents(mock_kernel_queue, std::size(mock_kernel_queue));
   EXPECT_EQ(1u, size());
 
   ui::MouseEvent* event = dispatched_event(0);
@@ -374,7 +373,7 @@
       {{0, 0}, EV_SYN, SYN_REPORT, 0},
   };
 
-  dev->ProcessEvents(mock_kernel_queue, base::size(mock_kernel_queue));
+  dev->ProcessEvents(mock_kernel_queue, std::size(mock_kernel_queue));
   EXPECT_EQ(1u, size());
 
   ui::MouseEvent* event = dispatched_event(0);
@@ -410,7 +409,7 @@
       {{0, 0}, EV_SYN, SYN_REPORT, 0},
   };
 
-  dev->ProcessEvents(mock_kernel_queue, base::size(mock_kernel_queue));
+  dev->ProcessEvents(mock_kernel_queue, std::size(mock_kernel_queue));
   EXPECT_EQ(1u, size());
 
   ui::MouseEvent* event = dispatched_event(0);
@@ -461,7 +460,7 @@
       {{0, 0}, EV_SYN, SYN_REPORT, 0},
   };
 
-  dev->ProcessEvents(mock_kernel_queue, base::size(mock_kernel_queue));
+  dev->ProcessEvents(mock_kernel_queue, std::size(mock_kernel_queue));
   EXPECT_EQ(3u, size());
 
   ui::MouseEvent* event = dispatched_event(0);
@@ -520,7 +519,7 @@
       {{0, 0}, EV_SYN, SYN_REPORT, 0},
   };
 
-  dev->ProcessEvents(mock_kernel_queue, base::size(mock_kernel_queue));
+  dev->ProcessEvents(mock_kernel_queue, std::size(mock_kernel_queue));
   EXPECT_EQ(3u, size());
 
   ui::MouseEvent* event = dispatched_event(0);
@@ -544,7 +543,7 @@
       {{0, 0}, EV_SYN, SYN_REPORT, 0},
   };
 
-  dev->ProcessEvents(mock_kernel_queue, base::size(mock_kernel_queue));
+  dev->ProcessEvents(mock_kernel_queue, std::size(mock_kernel_queue));
   EXPECT_EQ(0u, size());
 }
 
@@ -591,7 +590,7 @@
       {{0, 0}, EV_SYN, SYN_REPORT, 0},
   };
 
-  dev->ProcessEvents(mock_kernel_queue, base::size(mock_kernel_queue));
+  dev->ProcessEvents(mock_kernel_queue, std::size(mock_kernel_queue));
   EXPECT_EQ(3u, size());
 
   ui::MouseEvent* event = dispatched_event(0);
diff --git a/ui/events/ozone/evdev/touch_event_converter_evdev_unittest.cc b/ui/events/ozone/evdev/touch_event_converter_evdev_unittest.cc
index 6303723..5c3a0f6 100644
--- a/ui/events/ozone/evdev/touch_event_converter_evdev_unittest.cc
+++ b/ui/events/ozone/evdev/touch_event_converter_evdev_unittest.cc
@@ -15,7 +15,6 @@
 #include "base/bind.h"
 #include "base/callback_helpers.h"
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_util.h"
 #include "base/files/scoped_file.h"
 #include "base/posix/eintr_wrapper.h"
@@ -390,7 +389,7 @@
 
   // Press.
   dev->ConfigureReadMock(mock_kernel_queue_press,
-                         base::size(mock_kernel_queue_press), 0);
+                         std::size(mock_kernel_queue_press), 0);
   dev->ReadNow();
   EXPECT_EQ(1u, size());
   ui::TouchEventParams event = dispatched_touch_event(0);
@@ -405,7 +404,7 @@
 
   // Move.
   dev->ConfigureReadMock(mock_kernel_queue_move,
-                         base::size(mock_kernel_queue_move), 0);
+                         std::size(mock_kernel_queue_move), 0);
   dev->ReadNow();
   EXPECT_EQ(2u, size());
   event = dispatched_touch_event(1);
@@ -420,7 +419,7 @@
 
   // Release.
   dev->ConfigureReadMock(mock_kernel_queue_release,
-                         base::size(mock_kernel_queue_release), 0);
+                         std::size(mock_kernel_queue_release), 0);
   dev->ReadNow();
   EXPECT_EQ(3u, size());
   event = dispatched_touch_event(2);
@@ -625,7 +624,7 @@
   };
 
   dev->ConfigureReadMock(mock_kernel_queue_empty_report,
-                         base::size(mock_kernel_queue_empty_report), 0);
+                         std::size(mock_kernel_queue_empty_report), 0);
   dev->ReadNow();
   EXPECT_EQ(1u, size());
 
@@ -662,7 +661,7 @@
   SetTestNowTime(time);
 
   dev->ConfigureReadMock(mock_kernel_queue_press,
-                         base::size(mock_kernel_queue_press), 0);
+                         std::size(mock_kernel_queue_press), 0);
   dev->ReadNow();
   EXPECT_EQ(1u, size());
 
@@ -707,7 +706,7 @@
   dev->Initialize(devinfo);
 
   dev->ConfigureReadMock(mock_kernel_queue_press,
-                         base::size(mock_kernel_queue_press), 0);
+                         std::size(mock_kernel_queue_press), 0);
   dev->ReadNow();
   EXPECT_EQ(1u, size());
 
@@ -739,7 +738,7 @@
 
   // Send updates to touch (touch is cancelled, should not come back)
   dev->ConfigureReadMock(mock_kernel_queue_press,
-                         base::size(mock_kernel_queue_press), 0);
+                         std::size(mock_kernel_queue_press), 0);
   dev->ReadNow();
   EXPECT_EQ(2u, size());
 }
@@ -802,7 +801,7 @@
   dev->Initialize(devinfo);
 
   dev->ConfigureReadMock(mock_kernel_queue_max_major,
-                         base::size(mock_kernel_queue_max_major), 0);
+                         std::size(mock_kernel_queue_max_major), 0);
   dev->ReadNow();
   EXPECT_EQ(6u, size());
 
@@ -892,7 +891,7 @@
   dev->Initialize(devinfo);
 
   dev->ConfigureReadMock(mock_kernel_queue_max_major,
-                         base::size(mock_kernel_queue_max_major), 0);
+                         std::size(mock_kernel_queue_max_major), 0);
   dev->ReadNow();
   EXPECT_EQ(5u, size());
 
@@ -992,7 +991,7 @@
   dev->Initialize(devinfo);
 
   dev->ConfigureReadMock(mock_kernel_queue_max_major,
-                         base::size(mock_kernel_queue_max_major), 0);
+                         std::size(mock_kernel_queue_max_major), 0);
   dev->ReadNow();
   EXPECT_EQ(4u, size());
 
@@ -1019,7 +1018,7 @@
   EXPECT_EQ(1, ev1_4.slot);
 
   dev->ConfigureReadMock(mock_kernel_queue_tool_palm,
-                         base::size(mock_kernel_queue_tool_palm), 0);
+                         std::size(mock_kernel_queue_tool_palm), 0);
   dev->ReadNow();
   EXPECT_EQ(8u, size());
 
@@ -1103,7 +1102,7 @@
   dev->Initialize(devinfo);
 
   dev->ConfigureReadMock(mock_kernel_queue_tool_palm,
-                         base::size(mock_kernel_queue_tool_palm), 0);
+                         std::size(mock_kernel_queue_tool_palm), 0);
   dev->ReadNow();
   EXPECT_EQ(4u, size());
 
@@ -1237,7 +1236,7 @@
   dev->Initialize(devinfo);
 
   dev->ConfigureReadMock(mock_kernel_queue_max_major,
-                         base::size(mock_kernel_queue_max_major), 0);
+                         std::size(mock_kernel_queue_max_major), 0);
   dev->ReadNow();
   EXPECT_EQ(4u, size());
 
@@ -1264,13 +1263,12 @@
   EXPECT_EQ(1, ev1_4.slot);
 
   dev->ConfigureReadMock(mock_kernel_new_touch_without_new_major,
-                         base::size(mock_kernel_new_touch_without_new_major),
-                         0);
+                         std::size(mock_kernel_new_touch_without_new_major), 0);
   dev->ReadNow();
   EXPECT_EQ(4u, size());
 
   dev->ConfigureReadMock(mock_kernel_queue_tool_palm,
-                         base::size(mock_kernel_queue_tool_palm), 0);
+                         std::size(mock_kernel_queue_tool_palm), 0);
   dev->ReadNow();
   EXPECT_EQ(8u, size());
 
@@ -1408,7 +1406,7 @@
   dev->Initialize(devinfo);
 
   dev->ConfigureReadMock(mock_kernel_queue_max_major,
-                         base::size(mock_kernel_queue_max_major), 0);
+                         std::size(mock_kernel_queue_max_major), 0);
   dev->ReadNow();
   EXPECT_EQ(4u, size());
   {
@@ -1436,8 +1434,7 @@
   // We expect 3 touches to be read: fine: touch at slot 1 is pressed and then
   // moved and then lifted. touch 0 ignored.
   dev->ConfigureReadMock(mock_kernel_new_touch_without_new_major,
-                         base::size(mock_kernel_new_touch_without_new_major),
-                         0);
+                         std::size(mock_kernel_new_touch_without_new_major), 0);
   dev->ReadNow();
   EXPECT_EQ(7u, size());
   {
@@ -1458,7 +1455,7 @@
     EXPECT_EQ(1, ev2_3.slot);
   }
   dev->ConfigureReadMock(mock_kernel_queue_tool_palm,
-                         base::size(mock_kernel_queue_tool_palm), 0);
+                         std::size(mock_kernel_queue_tool_palm), 0);
   dev->ReadNow();
   EXPECT_EQ(10u, size());
   {
@@ -1522,7 +1519,7 @@
 
   // Press.
   dev->ConfigureReadMock(mock_kernel_queue_press,
-                         base::size(mock_kernel_queue_press), 0);
+                         std::size(mock_kernel_queue_press), 0);
   dev->ReadNow();
   EXPECT_EQ(1u, size());
   ui::TouchEventParams event = dispatched_touch_event(0);
@@ -1536,7 +1533,7 @@
 
   // Move.
   dev->ConfigureReadMock(mock_kernel_queue_move,
-                         base::size(mock_kernel_queue_move), 0);
+                         std::size(mock_kernel_queue_move), 0);
   dev->ReadNow();
   EXPECT_EQ(2u, size());
   event = dispatched_touch_event(1);
@@ -1550,7 +1547,7 @@
 
   // Release.
   dev->ConfigureReadMock(mock_kernel_queue_release,
-                         base::size(mock_kernel_queue_release), 0);
+                         std::size(mock_kernel_queue_release), 0);
   dev->ReadNow();
   EXPECT_EQ(3u, size());
   event = dispatched_touch_event(2);
@@ -1592,7 +1589,7 @@
   };
 
   // Check that two events are generated.
-  dev->ConfigureReadMock(mock_kernel_queue, base::size(mock_kernel_queue), 0);
+  dev->ConfigureReadMock(mock_kernel_queue, std::size(mock_kernel_queue), 0);
   dev->ReadNow();
 
   const unsigned int kExpectedEventCount = 2;
@@ -1633,7 +1630,7 @@
   };
 
   // Check that one 1 event is generated
-  dev->ConfigureReadMock(mock_kernel_queue, base::size(mock_kernel_queue), 0);
+  dev->ConfigureReadMock(mock_kernel_queue, std::size(mock_kernel_queue), 0);
   dev->ReadNow();
   EXPECT_EQ(1u, size());
 }
@@ -1732,7 +1729,7 @@
       {{0, 0}, EV_SYN, SYN_REPORT, 0},
   };
 
-  dev->ConfigureReadMock(mock_kernel_queue, base::size(mock_kernel_queue), 0);
+  dev->ConfigureReadMock(mock_kernel_queue, std::size(mock_kernel_queue), 0);
   dev->ReadNow();
   EXPECT_EQ(2u, size());
 
@@ -1784,7 +1781,7 @@
       {{0, 0}, EV_SYN, SYN_REPORT, 0},
   };
 
-  dev->ConfigureReadMock(mock_kernel_queue, base::size(mock_kernel_queue), 0);
+  dev->ConfigureReadMock(mock_kernel_queue, std::size(mock_kernel_queue), 0);
   dev->ReadNow();
   EXPECT_EQ(4u, size());
 
@@ -1841,7 +1838,7 @@
     {{0, 0}, EV_SYN, SYN_REPORT, 0},
   };
 
-  dev->ConfigureReadMock(mock_kernel_queue, base::size(mock_kernel_queue), 0);
+  dev->ConfigureReadMock(mock_kernel_queue, std::size(mock_kernel_queue), 0);
   dev->ReadNow();
   EXPECT_EQ(4u, size());
 
@@ -1894,7 +1891,7 @@
       {{0, 0}, EV_SYN, SYN_REPORT, 0},
   };
 
-  dev->ConfigureReadMock(mock_kernel_queue, base::size(mock_kernel_queue), 0);
+  dev->ConfigureReadMock(mock_kernel_queue, std::size(mock_kernel_queue), 0);
   dev->ReadNow();
   EXPECT_EQ(2u, size());
 
@@ -1941,7 +1938,7 @@
       {{0, 0}, EV_SYN, SYN_REPORT, 0},
   };
 
-  dev->ConfigureReadMock(mock_kernel_queue, base::size(mock_kernel_queue), 0);
+  dev->ConfigureReadMock(mock_kernel_queue, std::size(mock_kernel_queue), 0);
   dev->ReadNow();
   EXPECT_EQ(4u, size());
 
@@ -1993,12 +1990,12 @@
     EXPECT_FALSE(device()->event(0).held);
     device()->event(0).held = true;
     time.tv_usec = i * 8000;
-    UpdateTime(mock_kernel_queue, base::size(mock_kernel_queue), time);
+    UpdateTime(mock_kernel_queue, std::size(mock_kernel_queue), time);
     // We move the item slightly to the right every time.
     mock_kernel_queue[1].value = 1795 + i;
     SetTestNowTime(time);
-    device()->ConfigureReadMock(mock_kernel_queue,
-                                base::size(mock_kernel_queue), 0);
+    device()->ConfigureReadMock(mock_kernel_queue, std::size(mock_kernel_queue),
+                                0);
     device()->ReadNow();
   }
   SetTestNowTime(time);
@@ -2008,11 +2005,11 @@
 
   // Now send an event which is not held.
   time.tv_usec += 8000;
-  UpdateTime(mock_kernel_queue, base::size(mock_kernel_queue), time);
+  UpdateTime(mock_kernel_queue, std::size(mock_kernel_queue), time);
   SetTestNowTime(time);
   // We move the item slightly to the right every time.
   mock_kernel_queue[1].value = 1798;
-  device()->ConfigureReadMock(mock_kernel_queue, base::size(mock_kernel_queue),
+  device()->ConfigureReadMock(mock_kernel_queue, std::size(mock_kernel_queue),
                               0);
   device()->ReadNow();
   EXPECT_EQ(4u, size());
@@ -2060,11 +2057,11 @@
     EXPECT_FALSE(device()->event(0).held);
     device()->event(0).held = true;
     time.tv_usec += 8000;
-    UpdateTime(mock_kernel_queue, base::size(mock_kernel_queue), time);
+    UpdateTime(mock_kernel_queue, std::size(mock_kernel_queue), time);
     // We move the item slightly to the right every time.
     mock_kernel_queue[1].value = 1795 + i;
-    device()->ConfigureReadMock(mock_kernel_queue,
-                                base::size(mock_kernel_queue), 0);
+    device()->ConfigureReadMock(mock_kernel_queue, std::size(mock_kernel_queue),
+                                0);
     device()->ReadNow();
   }
   SetTestNowTime(time);
@@ -2084,7 +2081,7 @@
 
   // Press.
   device()->ConfigureReadMock(mock_kernel_queue_release,
-                              base::size(mock_kernel_queue_release), 0);
+                              std::size(mock_kernel_queue_release), 0);
   device()->ReadNow();
   EXPECT_EQ(4u, size());
   EXPECT_EQ(ui::ET_TOUCH_RELEASED, dispatched_touch_event(3).type);
@@ -2135,11 +2132,11 @@
     }
     time.tv_usec = i * 8000;
     SetTestNowTime(time);
-    UpdateTime(mock_kernel_queue, base::size(mock_kernel_queue), time);
+    UpdateTime(mock_kernel_queue, std::size(mock_kernel_queue), time);
     // We move the item slightly to the right every time.
     mock_kernel_queue[1].value = 1795 + i;
-    device()->ConfigureReadMock(mock_kernel_queue,
-                                base::size(mock_kernel_queue), 0);
+    device()->ConfigureReadMock(mock_kernel_queue, std::size(mock_kernel_queue),
+                                0);
     device()->ReadNow();
   }
   SetTestNowTime(time);
@@ -2210,11 +2207,11 @@
       mock_kernel_queue[3].value = MT_TOOL_FINGER;
     }
     time.tv_usec += 8000;
-    UpdateTime(mock_kernel_queue, base::size(mock_kernel_queue), time);
+    UpdateTime(mock_kernel_queue, std::size(mock_kernel_queue), time);
     // We move the item slightly to the right every time.
     mock_kernel_queue[1].value = 1795 + i;
-    device()->ConfigureReadMock(mock_kernel_queue,
-                                base::size(mock_kernel_queue), 0);
+    device()->ConfigureReadMock(mock_kernel_queue, std::size(mock_kernel_queue),
+                                0);
     device()->ReadNow();
   }
   SetTestNowTime(time);
@@ -2252,16 +2249,16 @@
       {time, EV_MSC, MSC_TIMESTAMP, 0},
       {time, EV_SYN, SYN_REPORT, 0},
   };
-  device()->ConfigureReadMock(mock_kernel_queue, base::size(mock_kernel_queue),
+  device()->ConfigureReadMock(mock_kernel_queue, std::size(mock_kernel_queue),
                               0);
   device()->ReadNow();
   // Update the items.
   time.tv_usec += 8000;
-  UpdateTime(mock_kernel_queue, base::size(mock_kernel_queue), time);
+  UpdateTime(mock_kernel_queue, std::size(mock_kernel_queue), time);
   mock_kernel_queue[3].value = 22;
   mock_kernel_queue[4].value = 1;
   mock_kernel_queue[5].value = 13;
-  device()->ConfigureReadMock(mock_kernel_queue, base::size(mock_kernel_queue),
+  device()->ConfigureReadMock(mock_kernel_queue, std::size(mock_kernel_queue),
                               0);
   device()->ReadNow();
   ASSERT_EQ(2u, size());
@@ -2301,7 +2298,7 @@
   SetTestNowTime(time);
 
   // Finger pressed with major/minor reported.
-  device()->ConfigureReadMock(mock_kernel_queue, base::size(mock_kernel_queue),
+  device()->ConfigureReadMock(mock_kernel_queue, std::size(mock_kernel_queue),
                               0);
   device()->ReadNow();
   EXPECT_EQ(1u, size());
@@ -2339,7 +2336,7 @@
   SetTestNowTime(time);
 
   // Finger pressed with major/minor reported.
-  dev->ConfigureReadMock(mock_kernel_queue, base::size(mock_kernel_queue), 0);
+  dev->ConfigureReadMock(mock_kernel_queue, std::size(mock_kernel_queue), 0);
   dev->ReadNow();
   EXPECT_EQ(1u, size());
   ui::TouchEventParams event = dispatched_touch_event(0);
diff --git a/ui/events/ozone/evdev/touch_filter/false_touch_finder_unittest.cc b/ui/events/ozone/evdev/touch_filter/false_touch_finder_unittest.cc
index 1df22ddc..720e574 100644
--- a/ui/events/ozone/evdev/touch_filter/false_touch_finder_unittest.cc
+++ b/ui/events/ozone/evdev/touch_filter/false_touch_finder_unittest.cc
@@ -10,7 +10,6 @@
 #include <memory>
 
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "base/logging.h"
 #include "base/strings/stringprintf.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -114,7 +113,7 @@
       {100, 4, true, gfx::PointF(100, touchscreen_height - 1), 0.35, true},
       {110, 4, true, gfx::PointF(100, touchscreen_height - 1), 0.35, true},
       {120, 4, false, gfx::PointF(100, touchscreen_height - 1), 0.35, true}};
-  EXPECT_TRUE(FilterAndCheck(kTestData, base::size(kTestData)));
+  EXPECT_TRUE(FilterAndCheck(kTestData, std::size(kTestData)));
 }
 
 // Test that a touch on the edge which starts at an edge is delayed but released
@@ -129,7 +128,7 @@
       {60, 1, true, gfx::PointF(0, 100), 0.35, true},
       {70, 1, true, gfx::PointF(0, 101), 0.35, false},
       {80, 1, false, gfx::PointF(0, 101), 0.35, false}};
-  EXPECT_TRUE(FilterAndCheck(kTestData, base::size(kTestData)));
+  EXPECT_TRUE(FilterAndCheck(kTestData, std::size(kTestData)));
 }
 
 // Test that a touch on the edge which starts away from the edge is not
@@ -140,7 +139,7 @@
       {20, 1, true, gfx::PointF(100, 100), 0.35, false},
       {30, 1, true, gfx::PointF(0, 100), 0.35, false},
       {40, 1, false, gfx::PointF(0, 100), 0.35, false}};
-  EXPECT_TRUE(FilterAndCheck(kTestData, base::size(kTestData)));
+  EXPECT_TRUE(FilterAndCheck(kTestData, std::size(kTestData)));
 }
 
 // Test that a pinky finger lightly pressed is not filtered out. Based on real
@@ -152,7 +151,7 @@
       {30, 1, true, gfx::PointF(10, 10), 0.215686, false},
       {40, 1, true, gfx::PointF(10, 10), 0.211765, false},
       {50, 1, true, gfx::PointF(10, 10), 0.203922, false}};
-  EXPECT_TRUE(FilterAndCheck(kTestData, base::size(kTestData)));
+  EXPECT_TRUE(FilterAndCheck(kTestData, std::size(kTestData)));
 }
 
 }  // namespace ui
diff --git a/ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine.cc b/ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine.cc
index d8b0594..3986e23 100644
--- a/ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine.cc
+++ b/ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine.cc
@@ -13,7 +13,6 @@
 #include "base/bind.h"
 #include "base/callback_helpers.h"
 #include "base/containers/span.h"
-#include "base/cxx17_backports.h"
 #include "base/location.h"
 #include "base/logging.h"
 #include "base/memory/free_deleter.h"
@@ -511,64 +510,64 @@
 
 // Entries are ordered by character value.
 const PrintableMultiEntry kMultiMap[] = {
-    {0x0021, kU0021, base::size(kU0021)},  // exclamation mark
-    {0x0022, kU0022, base::size(kU0022)},  // quotation mark
-    {0x0023, kU0023, base::size(kU0023)},  // number sign
-    {0x0024, kU0024, base::size(kU0024)},  // dollar sign
-    {0x0027, kU0027, base::size(kU0027)},  // apostrophe
-    {0x0028, kU0028, base::size(kU0028)},  // left parenthesis
-    {0x0029, kU0029, base::size(kU0029)},  // right parenthesis
-    {0x002A, kU002A, base::size(kU002A)},  // asterisk
-    {0x002B, kU002B, base::size(kU002B)},  // plus sign
-    {0x002C, kU002C, base::size(kU002C)},  // comma
-    {0x002D, kU002D, base::size(kU002D)},  // hyphen-minus
-    {0x002E, kU002E, base::size(kU002E)},  // full stop
-    {0x002F, kU002F, base::size(kU002F)},  // solidus
-    {0x003A, kU003A, base::size(kU003A)},  // colon
-    {0x003B, kU003B, base::size(kU003B)},  // semicolon
-    {0x003D, kU003D, base::size(kU003D)},  // equals sign
-    {0x003F, kU003F, base::size(kU003F)},  // question mark
-    {0x0040, kU0040, base::size(kU0040)},  // commercial at
-    {0x005B, kU005B, base::size(kU005B)},  // left square bracket
-    {0x005C, kU005C, base::size(kU005C)},  // reverse solidus
-    {0x005D, kU005D, base::size(kU005D)},  // right square bracket
-    {0x005F, kU005F, base::size(kU005F)},  // low line
-    {0x0060, kU0060, base::size(kU0060)},  // grave accent
-    {0x00A7, kU00A7, base::size(kU00A7)},  // section sign
-    {0x00AB, kU00AB, base::size(kU00AB)},  // left double angle quotation mark
-    {0x00B0, kU00B0, base::size(kU00B0)},  // degree sign
-    {0x00BA, kU00BA, base::size(kU00BA)},  // masculine ordinal indicator
-    {0x00E0, kU00E0, base::size(kU00E0)},  // a grave
-    {0x00E1, kU00E1, base::size(kU00E1)},  // a acute
-    {0x00E2, kU00E2, base::size(kU00E2)},  // a circumflex
-    {0x00E4, kU00E4, base::size(kU00E4)},  // a diaeresis
-    {0x00E6, kU00E6, base::size(kU00E6)},  // ae
-    {0x00E7, kU00E7, base::size(kU00E7)},  // c cedilla
-    {0x00E8, kU00E8, base::size(kU00E8)},  // e grave
-    {0x00E9, kU00E9, base::size(kU00E9)},  // e acute
-    {0x00ED, kU00ED, base::size(kU00ED)},  // i acute
-    {0x00F0, kU00F0, base::size(kU00F0)},  // eth
-    {0x00F3, kU00F3, base::size(kU00F3)},  // o acute
-    {0x00F4, kU00F4, base::size(kU00F4)},  // o circumflex
-    {0x00F6, kU00F6, base::size(kU00F6)},  // o diaeresis
-    {0x00F8, kU00F8, base::size(kU00F8)},  // o stroke
-    {0x00F9, kU00F9, base::size(kU00F9)},  // u grave
-    {0x00FA, kU00FA, base::size(kU00FA)},  // u acute
-    {0x00FC, kU00FC, base::size(kU00FC)},  // u diaeresis
-    {0x0103, kU0103, base::size(kU0103)},  // a breve
-    {0x0105, kU0105, base::size(kU0105)},  // a ogonek
-    {0x010D, kU010D, base::size(kU010D)},  // c caron
-    {0x0111, kU0111, base::size(kU0111)},  // d stroke
-    {0x0117, kU0117, base::size(kU0117)},  // e dot above
-    {0x0119, kU0119, base::size(kU0119)},  // e ogonek
-    {0x012F, kU012F, base::size(kU012F)},  // i ogonek
-    {0x0142, kU0142, base::size(kU0142)},  // l stroke
-    {0x015F, kU015F, base::size(kU015F)},  // s cedilla
-    {0x0161, kU0161, base::size(kU0161)},  // s caron
-    {0x016B, kU016B, base::size(kU016B)},  // u macron
-    {0x0173, kU0173, base::size(kU0173)},  // u ogonek
-    {0x017C, kU017C, base::size(kU017C)},  // z dot above
-    {0x017E, kU017E, base::size(kU017E)},  // z caron
+    {0x0021, kU0021, std::size(kU0021)},  // exclamation mark
+    {0x0022, kU0022, std::size(kU0022)},  // quotation mark
+    {0x0023, kU0023, std::size(kU0023)},  // number sign
+    {0x0024, kU0024, std::size(kU0024)},  // dollar sign
+    {0x0027, kU0027, std::size(kU0027)},  // apostrophe
+    {0x0028, kU0028, std::size(kU0028)},  // left parenthesis
+    {0x0029, kU0029, std::size(kU0029)},  // right parenthesis
+    {0x002A, kU002A, std::size(kU002A)},  // asterisk
+    {0x002B, kU002B, std::size(kU002B)},  // plus sign
+    {0x002C, kU002C, std::size(kU002C)},  // comma
+    {0x002D, kU002D, std::size(kU002D)},  // hyphen-minus
+    {0x002E, kU002E, std::size(kU002E)},  // full stop
+    {0x002F, kU002F, std::size(kU002F)},  // solidus
+    {0x003A, kU003A, std::size(kU003A)},  // colon
+    {0x003B, kU003B, std::size(kU003B)},  // semicolon
+    {0x003D, kU003D, std::size(kU003D)},  // equals sign
+    {0x003F, kU003F, std::size(kU003F)},  // question mark
+    {0x0040, kU0040, std::size(kU0040)},  // commercial at
+    {0x005B, kU005B, std::size(kU005B)},  // left square bracket
+    {0x005C, kU005C, std::size(kU005C)},  // reverse solidus
+    {0x005D, kU005D, std::size(kU005D)},  // right square bracket
+    {0x005F, kU005F, std::size(kU005F)},  // low line
+    {0x0060, kU0060, std::size(kU0060)},  // grave accent
+    {0x00A7, kU00A7, std::size(kU00A7)},  // section sign
+    {0x00AB, kU00AB, std::size(kU00AB)},  // left double angle quotation mark
+    {0x00B0, kU00B0, std::size(kU00B0)},  // degree sign
+    {0x00BA, kU00BA, std::size(kU00BA)},  // masculine ordinal indicator
+    {0x00E0, kU00E0, std::size(kU00E0)},  // a grave
+    {0x00E1, kU00E1, std::size(kU00E1)},  // a acute
+    {0x00E2, kU00E2, std::size(kU00E2)},  // a circumflex
+    {0x00E4, kU00E4, std::size(kU00E4)},  // a diaeresis
+    {0x00E6, kU00E6, std::size(kU00E6)},  // ae
+    {0x00E7, kU00E7, std::size(kU00E7)},  // c cedilla
+    {0x00E8, kU00E8, std::size(kU00E8)},  // e grave
+    {0x00E9, kU00E9, std::size(kU00E9)},  // e acute
+    {0x00ED, kU00ED, std::size(kU00ED)},  // i acute
+    {0x00F0, kU00F0, std::size(kU00F0)},  // eth
+    {0x00F3, kU00F3, std::size(kU00F3)},  // o acute
+    {0x00F4, kU00F4, std::size(kU00F4)},  // o circumflex
+    {0x00F6, kU00F6, std::size(kU00F6)},  // o diaeresis
+    {0x00F8, kU00F8, std::size(kU00F8)},  // o stroke
+    {0x00F9, kU00F9, std::size(kU00F9)},  // u grave
+    {0x00FA, kU00FA, std::size(kU00FA)},  // u acute
+    {0x00FC, kU00FC, std::size(kU00FC)},  // u diaeresis
+    {0x0103, kU0103, std::size(kU0103)},  // a breve
+    {0x0105, kU0105, std::size(kU0105)},  // a ogonek
+    {0x010D, kU010D, std::size(kU010D)},  // c caron
+    {0x0111, kU0111, std::size(kU0111)},  // d stroke
+    {0x0117, kU0117, std::size(kU0117)},  // e dot above
+    {0x0119, kU0119, std::size(kU0119)},  // e ogonek
+    {0x012F, kU012F, std::size(kU012F)},  // i ogonek
+    {0x0142, kU0142, std::size(kU0142)},  // l stroke
+    {0x015F, kU015F, std::size(kU015F)},  // s cedilla
+    {0x0161, kU0161, std::size(kU0161)},  // s caron
+    {0x016B, kU016B, std::size(kU016B)},  // u macron
+    {0x0173, kU0173, std::size(kU0173)},  // u ogonek
+    {0x017C, kU017C, std::size(kU017C)},  // z dot above
+    {0x017E, kU017E, std::size(kU017E)},  // z caron
 };
 
 // Table mapping unshifted characters to VKEY values.
@@ -881,11 +880,11 @@
                {ui::EF_CAPS_LOCK_ON, XKB_MOD_NAME_CAPS},
                {ui::EF_NUM_LOCK_ON, XKB_MOD_NAME_NUM}};
   xkb_flag_map_.clear();
-  xkb_flag_map_.reserve(base::size(flags));
+  xkb_flag_map_.reserve(std::size(flags));
 #if BUILDFLAG(IS_CHROMEOS_ASH)
   xkb_mod_mask_t num_lock_mask = 0;
 #endif
-  for (size_t i = 0; i < base::size(flags); ++i) {
+  for (size_t i = 0; i < std::size(flags); ++i) {
     xkb_mod_index_t index = xkb_keymap_mod_get_index(keymap, flags[i].xkb_name);
     if (index == XKB_MOD_INVALID) {
       DVLOG(3) << "XKB keyboard layout does not contain " << flags[i].xkb_name;
@@ -1058,7 +1057,7 @@
     return key_code;
 
   // Check the multi-character tables.
-  const PrintableMultiEntry* multi_end = kMultiMap + base::size(kMultiMap);
+  const PrintableMultiEntry* multi_end = kMultiMap + std::size(kMultiMap);
   const PrintableMultiEntry* multi =
       std::lower_bound(kMultiMap, multi_end, plain_character,
                        [](const PrintableMultiEntry& e, char16_t c) {
@@ -1092,7 +1091,7 @@
   }
 
   // Check the simple character table.
-  const PrintableSimpleEntry* simple_end = kSimpleMap + base::size(kSimpleMap);
+  const PrintableSimpleEntry* simple_end = kSimpleMap + std::size(kSimpleMap);
   const PrintableSimpleEntry* simple =
       std::lower_bound(kSimpleMap, simple_end, plain_character,
                        [](const PrintableSimpleEntry& e, char16_t c) {
diff --git a/ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine_unittest.cc b/ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine_unittest.cc
index 3f9223e6..d885c627 100644
--- a/ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine_unittest.cc
+++ b/ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine_unittest.cc
@@ -10,7 +10,6 @@
 
 #include <tuple>
 
-#include "base/cxx17_backports.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/events/event_constants.h"
 #include "ui/events/keycodes/dom/dom_code.h"
@@ -71,8 +70,8 @@
     static const int kTestFlags[] = {EF_SHIFT_DOWN, EF_ALTGR_DOWN,
                                      EF_MOD3_DOWN};
     xkb_flag_map_.clear();
-    xkb_flag_map_.resize(base::size(kTestFlags));
-    for (size_t i = 0; i < base::size(kTestFlags); ++i) {
+    xkb_flag_map_.resize(std::size(kTestFlags));
+    for (size_t i = 0; i < std::size(kTestFlags); ++i) {
       XkbFlagMapEntry e = {kTestFlags[i],
                            static_cast<xkb_mod_mask_t>(kTestFlags[i])};
       xkb_flag_map_.push_back(e);
@@ -773,7 +772,7 @@
 
   };
 
-  for (size_t i = 0; i < base::size(kVkeyTestCase); ++i) {
+  for (size_t i = 0; i < std::size(kVkeyTestCase); ++i) {
     SCOPED_TRACE(i);
     const auto& e = kVkeyTestCase[i];
     layout_engine_->SetEntry(&e.test);
@@ -909,7 +908,7 @@
       /* 50 */ {"ge", "ge", ""},
       /* 51 */ {"mn", "mn", ""},
       /* 52 */ {"ie", "ie", ""}};
-  for (size_t i = 0; i < base::size(kVkeyTestCase); ++i) {
+  for (size_t i = 0; i < std::size(kVkeyTestCase); ++i) {
     SCOPED_TRACE(i);
     const VkTestXkbKeyboardLayoutEngine::RuleNames* e = &kVkeyTestCase[i];
     std::string layout_id;
diff --git a/ui/events/platform/platform_event_source_unittest.cc b/ui/events/platform/platform_event_source_unittest.cc
index fe7510d..e47d040 100644
--- a/ui/events/platform/platform_event_source_unittest.cc
+++ b/ui/events/platform/platform_event_source_unittest.cc
@@ -12,7 +12,6 @@
 #include <vector>
 
 #include "base/bind.h"
-#include "base/cxx17_backports.h"
 #include "base/memory/raw_ptr.h"
 #include "base/run_loop.h"
 #include "base/task/single_thread_task_runner.h"
@@ -176,8 +175,8 @@
   }
   std::unique_ptr<PlatformEvent> event = CreatePlatformEvent();
   source()->Dispatch(*event);
-  ASSERT_EQ(base::size(sequence), list_dispatcher.size());
-  EXPECT_EQ(std::vector<int>(sequence, sequence + base::size(sequence)),
+  ASSERT_EQ(std::size(sequence), list_dispatcher.size());
+  EXPECT_EQ(std::vector<int>(sequence, sequence + std::size(sequence)),
             list_dispatcher);
 }
 
@@ -234,8 +233,8 @@
   }
   std::unique_ptr<PlatformEvent> event = CreatePlatformEvent();
   source()->Dispatch(*event);
-  ASSERT_EQ(base::size(sequence), list_observer.size());
-  EXPECT_EQ(std::vector<int>(sequence, sequence + base::size(sequence)),
+  ASSERT_EQ(std::size(sequence), list_observer.size());
+  EXPECT_EQ(std::vector<int>(sequence, sequence + std::size(sequence)),
             list_observer);
 }
 
@@ -249,7 +248,7 @@
   std::unique_ptr<PlatformEvent> event = CreatePlatformEvent();
   source()->Dispatch(*event);
   const int expected[] = {10, 20, 12, 23};
-  EXPECT_EQ(std::vector<int>(expected, expected + base::size(expected)), list);
+  EXPECT_EQ(std::vector<int>(expected, expected + std::size(expected)), list);
 }
 
 // Tests that an overridden dispatcher receives events before the default
diff --git a/ui/events/test/events_test_utils_x11.cc b/ui/events/test/events_test_utils_x11.cc
index c5b1f4a..8e9855d 100644
--- a/ui/events/test/events_test_utils_x11.cc
+++ b/ui/events/test/events_test_utils_x11.cc
@@ -7,7 +7,6 @@
 #include <stddef.h>
 
 #include "base/check_op.h"
-#include "base/cxx17_backports.h"
 #include "base/notreached.h"
 #include "ui/events/devices/x11/touch_factory_x11.h"
 #include "ui/events/devices/x11/xinput_util.h"
@@ -234,7 +233,7 @@
       Valuator(DeviceDataManagerX11::DT_CMT_ORDINAL_Y, y_offset_ordinal),
       Valuator(DeviceDataManagerX11::DT_CMT_FINGER_COUNT, finger_count)};
   SetUpValuators(
-      std::vector<Valuator>(valuators, valuators + base::size(valuators)));
+      std::vector<Valuator>(valuators, valuators + std::size(valuators)));
 }
 
 void ScopedXI2Event::InitFlingScrollEvent(int deviceid,
@@ -254,7 +253,7 @@
       Valuator(DeviceDataManagerX11::DT_CMT_ORDINAL_X, x_velocity_ordinal)};
 
   SetUpValuators(
-      std::vector<Valuator>(valuators, valuators + base::size(valuators)));
+      std::vector<Valuator>(valuators, valuators + std::size(valuators)));
 }
 
 void ScopedXI2Event::InitTouchEvent(int deviceid,
diff --git a/ui/gfx/animation/keyframe/keyframe_model.cc b/ui/gfx/animation/keyframe/keyframe_model.cc
index db37d76b..ed95de6 100644
--- a/ui/gfx/animation/keyframe/keyframe_model.cc
+++ b/ui/gfx/animation/keyframe/keyframe_model.cc
@@ -4,7 +4,6 @@
 
 #include "ui/gfx/animation/keyframe/keyframe_model.h"
 
-#include "base/cxx17_backports.h"
 #include "base/memory/ptr_util.h"
 #include "base/notreached.h"
 
@@ -22,7 +21,7 @@
                                               "ABORTED_BUT_NEEDS_COMPLETION"};
 
 static_assert(static_cast<int>(KeyframeModel::LAST_RUN_STATE) + 1 ==
-                  base::size(s_runStateNames),
+                  std::size(s_runStateNames),
               "RunStateEnumSize should equal the number of elements in "
               "s_runStateNames");
 
diff --git a/ui/gfx/break_list_unittest.cc b/ui/gfx/break_list_unittest.cc
index 81a66210..c862df9c 100644
--- a/ui/gfx/break_list_unittest.cc
+++ b/ui/gfx/break_list_unittest.cc
@@ -6,7 +6,6 @@
 
 #include <stddef.h>
 
-#include "base/cxx17_backports.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/skia/include/core/SkColor.h"
 #include "ui/gfx/range/range.h"
@@ -158,7 +157,7 @@
     { 9, 4, Range(6, 8) },
   };
 
-  for (size_t i = 0; i < base::size(cases); ++i) {
+  for (size_t i = 0; i < std::size(cases); ++i) {
     BreakList<bool>::const_iterator it = breaks.GetBreak(cases[i].position);
     EXPECT_EQ(breaks.breaks()[cases[i].break_index], *it);
     EXPECT_EQ(breaks.GetRange(it), cases[i].range);
diff --git a/ui/gfx/buffer_format_util.cc b/ui/gfx/buffer_format_util.cc
index 677bea4..72b7ea78 100644
--- a/ui/gfx/buffer_format_util.cc
+++ b/ui/gfx/buffer_format_util.cc
@@ -5,7 +5,6 @@
 #include "ui/gfx/buffer_format_util.h"
 
 #include "base/check_op.h"
-#include "base/cxx17_backports.h"
 #include "base/notreached.h"
 #include "base/numerics/safe_math.h"
 #include "ui/gfx/switches.h"
@@ -23,7 +22,7 @@
     BufferFormat::RGBA_F16,     BufferFormat::YUV_420_BIPLANAR,
     BufferFormat::YVU_420,      BufferFormat::P010};
 
-static_assert(base::size(kBufferFormats) ==
+static_assert(std::size(kBufferFormats) ==
                   (static_cast<int>(BufferFormat::LAST) + 1),
               "BufferFormat::LAST must be last value of kBufferFormats");
 
@@ -31,7 +30,7 @@
 
 std::vector<BufferFormat> GetBufferFormatsForTesting() {
   return std::vector<BufferFormat>(kBufferFormats,
-                                   kBufferFormats + base::size(kBufferFormats));
+                                   kBufferFormats + std::size(kBufferFormats));
 }
 
 size_t AlphaBitsForBufferFormat(BufferFormat format) {
@@ -107,13 +106,13 @@
       return 1;
     case BufferFormat::YVU_420: {
       static size_t factor[] = {1, 2, 2};
-      DCHECK_LT(static_cast<size_t>(plane), base::size(factor));
+      DCHECK_LT(static_cast<size_t>(plane), std::size(factor));
       return factor[plane];
     }
     case BufferFormat::YUV_420_BIPLANAR:
     case BufferFormat::P010: {
       static size_t factor[] = {1, 2};
-      DCHECK_LT(static_cast<size_t>(plane), base::size(factor));
+      DCHECK_LT(static_cast<size_t>(plane), std::size(factor));
       return factor[plane];
     }
   }
@@ -235,19 +234,19 @@
       return 0;
     case BufferFormat::YVU_420: {
       static size_t offset_in_2x2_sub_sampling_sizes[] = {0, 4, 5};
-      DCHECK_LT(plane, base::size(offset_in_2x2_sub_sampling_sizes));
+      DCHECK_LT(plane, std::size(offset_in_2x2_sub_sampling_sizes));
       return offset_in_2x2_sub_sampling_sizes[plane] * (size.width() / 2) *
              (size.height() / 2);
     }
     case gfx::BufferFormat::YUV_420_BIPLANAR: {
       static size_t offset_in_2x2_sub_sampling_sizes[] = {0, 4};
-      DCHECK_LT(plane, base::size(offset_in_2x2_sub_sampling_sizes));
+      DCHECK_LT(plane, std::size(offset_in_2x2_sub_sampling_sizes));
       return offset_in_2x2_sub_sampling_sizes[plane] * (size.width() / 2) *
              (size.height() / 2);
     }
     case BufferFormat::P010: {
       static size_t offset_in_2x2_sub_sampling_sizes[] = {0, 4};
-      DCHECK_LT(plane, base::size(offset_in_2x2_sub_sampling_sizes));
+      DCHECK_LT(plane, std::size(offset_in_2x2_sub_sampling_sizes));
       return 2 * offset_in_2x2_sub_sampling_sizes[plane] *
              (size.width() / 2 + size.height() / 2);
     }
diff --git a/ui/gfx/codec/jpeg_codec_unittest.cc b/ui/gfx/codec/jpeg_codec_unittest.cc
index 2d0748e8..66791cb9 100644
--- a/ui/gfx/codec/jpeg_codec_unittest.cc
+++ b/ui/gfx/codec/jpeg_codec_unittest.cc
@@ -2,18 +2,18 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "ui/gfx/codec/jpeg_codec.h"
+
 #include <math.h>
 #include <stddef.h>
 #include <stdint.h>
 
 #include "base/barrier_closure.h"
-#include "base/cxx17_backports.h"
 #include "base/run_loop.h"
 #include "base/task/thread_pool.h"
 #include "base/test/bind.h"
 #include "base/test/task_environment.h"
 #include "testing/gtest/include/gtest/gtest.h"
-#include "ui/gfx/codec/jpeg_codec.h"
 
 namespace {
 
@@ -179,7 +179,7 @@
   std::vector<unsigned char> output;
   int outw, outh;
   JPEGCodec::Decode(kTopSitesMigrationTestImage,
-                    base::size(kTopSitesMigrationTestImage),
+                    std::size(kTopSitesMigrationTestImage),
                     JPEGCodec::FORMAT_RGBA, &output, &outw, &outh);
 }
 
diff --git a/ui/gfx/codec/png_codec_unittest.cc b/ui/gfx/codec/png_codec_unittest.cc
index 083c6a8..8d75850 100644
--- a/ui/gfx/codec/png_codec_unittest.cc
+++ b/ui/gfx/codec/png_codec_unittest.cc
@@ -2,13 +2,15 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "ui/gfx/codec/png_codec.h"
+
 #include <stddef.h>
 #include <stdint.h>
 
 #include <algorithm>
 #include <cmath>
 
-#include "base/cxx17_backports.h"
+#include "base/check.h"
 #include "base/logging.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/libpng/png.h"
@@ -16,7 +18,6 @@
 #include "third_party/skia/include/core/SkColorPriv.h"
 #include "third_party/skia/include/core/SkUnPreMultiply.h"
 #include "third_party/zlib/zlib.h"
-#include "ui/gfx/codec/png_codec.h"
 #include "ui/gfx/geometry/size.h"
 #include "ui/gfx/skia_util.h"
 
@@ -923,13 +924,13 @@
       "\x00\x00\x00\x18tEXthave some\x00spaces in both\x8d\x69\x34\x2d";
 
   EXPECT_NE(std::search(encoded.begin(), encoded.end(), kExpected1,
-                        kExpected1 + base::size(kExpected1)),
+                        kExpected1 + std::size(kExpected1)),
             encoded.end());
   EXPECT_NE(std::search(encoded.begin(), encoded.end(), kExpected2,
-                        kExpected2 + base::size(kExpected2)),
+                        kExpected2 + std::size(kExpected2)),
             encoded.end());
   EXPECT_NE(std::search(encoded.begin(), encoded.end(), kExpected3,
-                        kExpected3 + base::size(kExpected3)),
+                        kExpected3 + std::size(kExpected3)),
             encoded.end());
 }
 
diff --git a/ui/gfx/font_fallback_unittest.cc b/ui/gfx/font_fallback_unittest.cc
index 4d596d4..ad99d87 100644
--- a/ui/gfx/font_fallback_unittest.cc
+++ b/ui/gfx/font_fallback_unittest.cc
@@ -2,11 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "ui/gfx/font_fallback_win.h"
-
 #include <tuple>
 
-#include "base/cxx17_backports.h"
 #include "base/strings/string_piece.h"
 #include "base/strings/string_util.h"
 #include "base/strings/stringprintf.h"
@@ -17,6 +14,7 @@
 #include "third_party/icu/source/common/unicode/uscript.h"
 #include "third_party/icu/source/common/unicode/utf16.h"
 #include "third_party/skia/include/core/SkTypeface.h"
+#include "ui/gfx/font_fallback_win.h"
 #include "ui/gfx/platform_font.h"
 #include "ui/gfx/test/font_fallback_test_data.h"
 
@@ -240,7 +238,7 @@
     char16_t text[8];
     UErrorCode errorCode = U_ZERO_ERROR;
     int text_length =
-        uscript_getSampleString(script, text, base::size(text), &errorCode);
+        uscript_getSampleString(script, text, std::size(text), &errorCode);
     if (text_length <= 0 || errorCode != U_ZERO_ERROR)
       continue;
 
diff --git a/ui/gfx/font_fallback_win_unittest.cc b/ui/gfx/font_fallback_win_unittest.cc
index 76d6279..ed81cf0 100644
--- a/ui/gfx/font_fallback_win_unittest.cc
+++ b/ui/gfx/font_fallback_win_unittest.cc
@@ -4,7 +4,6 @@
 
 #include "ui/gfx/font_fallback_win.h"
 
-#include "base/cxx17_backports.h"
 #include "base/strings/string_piece.h"
 #include "base/test/task_environment.h"
 #include "base/win/windows_version.h"
@@ -91,18 +90,18 @@
   // Multiple ending NUL characters.
   const char16_t kTest1[] = {0x0540, 0x0541, 0, 0, 0};
   EXPECT_FALSE(GetFallbackFont(base_font, kDefaultApplicationLocale,
-                               base::StringPiece16(kTest1, base::size(kTest1)),
+                               base::StringPiece16(kTest1, std::size(kTest1)),
                                &fallback_font));
   // No ending NUL character.
   const char16_t kTest2[] = {0x0540, 0x0541};
   EXPECT_TRUE(GetFallbackFont(base_font, kDefaultApplicationLocale,
-                              base::StringPiece16(kTest2, base::size(kTest2)),
+                              base::StringPiece16(kTest2, std::size(kTest2)),
                               &fallback_font));
 
   // NUL only characters.
   const char16_t kTest3[] = {0, 0, 0};
   EXPECT_FALSE(GetFallbackFont(base_font, kDefaultApplicationLocale,
-                               base::StringPiece16(kTest3, base::size(kTest3)),
+                               base::StringPiece16(kTest3, std::size(kTest3)),
                                &fallback_font));
 }
 
diff --git a/ui/gfx/geometry/point3_f_unittest.cc b/ui/gfx/geometry/point3_f_unittest.cc
index ea3cc66..0bd5044 100644
--- a/ui/gfx/geometry/point3_f_unittest.cc
+++ b/ui/gfx/geometry/point3_f_unittest.cc
@@ -6,7 +6,6 @@
 
 #include <stddef.h>
 
-#include "base/cxx17_backports.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace gfx {
@@ -29,7 +28,7 @@
     { gfx::Point3F(-9.6f, 9.5f, -2.8f), a - v1 + v2 }
   };
 
-  for (size_t i = 0; i < base::size(tests); ++i)
+  for (size_t i = 0; i < std::size(tests); ++i)
     EXPECT_EQ(tests[i].expected.ToString(),
               tests[i].actual.ToString());
 
diff --git a/ui/gfx/geometry/quaternion_unittest.cc b/ui/gfx/geometry/quaternion_unittest.cc
index 3c9fd2b7..36ca9c41 100644
--- a/ui/gfx/geometry/quaternion_unittest.cc
+++ b/ui/gfx/geometry/quaternion_unittest.cc
@@ -2,12 +2,12 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "ui/gfx/geometry/quaternion.h"
+
 #include <cmath>
 
-#include "base/cxx17_backports.h"
 #include "base/numerics/math_constants.h"
 #include "testing/gtest/include/gtest/gtest.h"
-#include "ui/gfx/geometry/quaternion.h"
 #include "ui/gfx/geometry/vector3d_f.h"
 
 namespace gfx {
@@ -62,7 +62,7 @@
 
 TEST(QuatTest, Addition) {
   double values[] = {0, 1, 100};
-  for (size_t i = 0; i < base::size(values); ++i) {
+  for (size_t i = 0; i < std::size(values); ++i) {
     float t = values[i];
     Quaternion a(t, 2 * t, 3 * t, 4 * t);
     Quaternion b(5 * t, 4 * t, 3 * t, 2 * t);
@@ -87,7 +87,7 @@
        Quaternion(32, 32, 56, -6)},
   };
 
-  for (size_t i = 0; i < base::size(cases); ++i) {
+  for (size_t i = 0; i < std::size(cases); ++i) {
     Quaternion product = cases[i].a * cases[i].b;
     CompareQuaternions(cases[i].expected, product);
   }
@@ -95,7 +95,7 @@
 
 TEST(QuatTest, Scaling) {
   double values[] = {0, 10, 100};
-  for (size_t i = 0; i < base::size(values); ++i) {
+  for (size_t i = 0; i < std::size(values); ++i) {
     double s = values[i];
     Quaternion q(1, 2, 3, 4);
     Quaternion expected(s, 2 * s, 3 * s, 4 * s);
diff --git a/ui/gfx/geometry/rect_unittest.cc b/ui/gfx/geometry/rect_unittest.cc
index 95ee361..11f4db5 100644
--- a/ui/gfx/geometry/rect_unittest.cc
+++ b/ui/gfx/geometry/rect_unittest.cc
@@ -5,9 +5,9 @@
 #include "ui/gfx/geometry/rect.h"
 
 #include <stddef.h>
+
 #include <limits>
 
-#include "base/cxx17_backports.h"
 #include "build/build_config.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/gfx/geometry/insets.h"
@@ -44,7 +44,7 @@
     {0, 0, -10, -10, 0, 0, false},
   #endif
   };
-  for (size_t i = 0; i < base::size(contains_cases); ++i) {
+  for (size_t i = 0; i < std::size(contains_cases); ++i) {
     const ContainsCase& value = contains_cases[i];
     Rect rect(value.rect_x, value.rect_y, value.rect_width, value.rect_height);
     EXPECT_EQ(value.contained, rect.Contains(value.point_x, value.point_y));
@@ -74,7 +74,7 @@
     { 10, 10, 10, 10, 20, 15, 10, 10, false },
     { 10, 10, 10, 10, 21, 15, 10, 10, false }
   };
-  for (size_t i = 0; i < base::size(tests); ++i) {
+  for (size_t i = 0; i < std::size(tests); ++i) {
     Rect r1(tests[i].x1, tests[i].y1, tests[i].w1, tests[i].h1);
     Rect r2(tests[i].x2, tests[i].y2, tests[i].w2, tests[i].h2);
     EXPECT_EQ(tests[i].intersects, r1.Intersects(r2));
@@ -116,7 +116,7 @@
       0, 0, 2, 2,
       0, 0, 0, 0 }
   };
-  for (size_t i = 0; i < base::size(tests); ++i) {
+  for (size_t i = 0; i < std::size(tests); ++i) {
     Rect r1(tests[i].x1, tests[i].y1, tests[i].w1, tests[i].h1);
     Rect r2(tests[i].x2, tests[i].y2, tests[i].w2, tests[i].h2);
     Rect r3(tests[i].x3, tests[i].y3, tests[i].w3, tests[i].h3);
@@ -207,7 +207,7 @@
       0, 0, 3, 3,
       2, 2, 1, 1 }
   };
-  for (size_t i = 0; i < base::size(tests); ++i) {
+  for (size_t i = 0; i < std::size(tests); ++i) {
     Rect r1(tests[i].x1, tests[i].y1, tests[i].w1, tests[i].h1);
     Rect r2(tests[i].x2, tests[i].y2, tests[i].w2, tests[i].h2);
     Rect r3(tests[i].x3, tests[i].y3, tests[i].w3, tests[i].h3);
@@ -506,7 +506,7 @@
     { Point(-4, 6), Point(6, -4), Rect(-4, -4, 10, 10) },
   };
 
-  for (size_t i = 0; i < base::size(int_tests); ++i) {
+  for (size_t i = 0; i < std::size(int_tests); ++i) {
     Rect actual = BoundingRect(int_tests[i].a, int_tests[i].b);
     EXPECT_EQ(int_tests[i].expected, actual);
   }
diff --git a/ui/gfx/geometry/vector3d_f_unittest.cc b/ui/gfx/geometry/vector3d_f_unittest.cc
index 27224bd..6b2f8fef 100644
--- a/ui/gfx/geometry/vector3d_f_unittest.cc
+++ b/ui/gfx/geometry/vector3d_f_unittest.cc
@@ -2,15 +2,15 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "ui/gfx/geometry/vector3d_f.h"
+
 #include <stddef.h>
 
 #include <cmath>
 #include <limits>
 
-#include "base/cxx17_backports.h"
 #include "build/build_config.h"
 #include "testing/gtest/include/gtest/gtest.h"
-#include "ui/gfx/geometry/vector3d_f.h"
 
 namespace gfx {
 
@@ -35,7 +35,7 @@
     { gfx::Vector3dF(3.1f - 4.3f, 5.1f + 1.3f, 2.7f - 8.1f), f1 - f2 }
   };
 
-  for (size_t i = 0; i < base::size(float_tests); ++i)
+  for (size_t i = 0; i < std::size(float_tests); ++i)
     EXPECT_EQ(float_tests[i].expected.ToString(),
               float_tests[i].actual.ToString());
 }
@@ -53,7 +53,7 @@
     { gfx::Vector3dF(-0.3f, -0.3f, 0.3f), -gfx::Vector3dF(0.3f, 0.3f, -0.3f) }
   };
 
-  for (size_t i = 0; i < base::size(float_tests); ++i)
+  for (size_t i = 0; i < std::size(float_tests); ++i)
     EXPECT_EQ(float_tests[i].expected.ToString(),
               float_tests[i].actual.ToString());
 }
@@ -86,7 +86,7 @@
     { 0, 1.2f, 1.8f, 3.3f, 5.6f, 4.2f }
   };
 
-  for (size_t i = 0; i < base::size(triple_values); ++i) {
+  for (size_t i = 0; i < std::size(triple_values); ++i) {
     gfx::Vector3dF v(triple_values[i][0],
                      triple_values[i][1],
                      triple_values[i][2]);
@@ -122,7 +122,7 @@
     { 4.5f, 1.2f, 0, 3.3f }
   };
 
-  for (size_t i = 0; i < base::size(single_values); ++i) {
+  for (size_t i = 0; i < std::size(single_values); ++i) {
     gfx::Vector3dF v(single_values[i][0],
                      single_values[i][1],
                      single_values[i][2]);
@@ -164,7 +164,7 @@
       27861786423846742743236423478236784678.236713617231f }
   };
 
-  for (size_t i = 0; i < base::size(float_values); ++i) {
+  for (size_t i = 0; i < std::size(float_values); ++i) {
     double v0 = float_values[i][0];
     double v1 = float_values[i][1];
     double v2 = float_values[i][2];
@@ -198,7 +198,7 @@
       gfx::Vector3dF(1.1f, 2.2f, 3.3f), gfx::Vector3dF(4.4f, 5.5f, 6.6f) }
   };
 
-  for (size_t i = 0; i < base::size(tests); ++i) {
+  for (size_t i = 0; i < std::size(tests); ++i) {
     float actual = gfx::DotProduct(tests[i].input1, tests[i].input2);
     EXPECT_EQ(tests[i].expected, actual);
   }
@@ -226,7 +226,7 @@
     { Vector3dF(0, -1, 1), Vector3dF(1, 0, 0), Vector3dF(1, 1, 1) }
   };
 
-  for (size_t i = 0; i < base::size(tests); ++i) {
+  for (size_t i = 0; i < std::size(tests); ++i) {
     SCOPED_TRACE(i);
     Vector3dF actual = gfx::CrossProduct(tests[i].input1, tests[i].input2);
     EXPECT_EQ(tests[i].expected.ToString(), actual.ToString());
@@ -281,7 +281,7 @@
                {0, gfx::Vector3dF(0, -0.990842f, -0.003177f),
                 gfx::Vector3dF(0, -0.999995f, -0.003124f)}};
 
-  for (size_t i = 0; i < base::size(tests); ++i) {
+  for (size_t i = 0; i < std::size(tests); ++i) {
     float actual =
         gfx::AngleBetweenVectorsInDegrees(tests[i].input1, tests[i].input2);
     EXPECT_FLOAT_EQ(tests[i].expected, actual);
@@ -308,7 +308,7 @@
 
   const gfx::Vector3dF normal_vector(1.0f, 0.0f, 0.0f);
 
-  for (size_t i = 0; i < base::size(tests); ++i) {
+  for (size_t i = 0; i < std::size(tests); ++i) {
     float actual = gfx::ClockwiseAngleBetweenVectorsInDegrees(
         tests[i].input1, tests[i].input2, normal_vector);
     EXPECT_FLOAT_EQ(tests[i].expected, actual);
@@ -339,7 +339,7 @@
        gfx::Vector3dF(1, 0, 0)},
   };
 
-  for (size_t i = 0; i < base::size(tests); ++i) {
+  for (size_t i = 0; i < std::size(tests); ++i) {
     gfx::Vector3dF n;
     EXPECT_EQ(tests[i].expected, tests[i].v.GetNormalized(&n));
     EXPECT_EQ(tests[i].normalized.ToString(), n.ToString());
diff --git a/ui/gfx/half_float_unittest.cc b/ui/gfx/half_float_unittest.cc
index d6a1965..eac8df4 100644
--- a/ui/gfx/half_float_unittest.cc
+++ b/ui/gfx/half_float_unittest.cc
@@ -2,11 +2,11 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "ui/gfx/half_float.h"
+
 #include <math.h>
 
-#include "base/cxx17_backports.h"
 #include "testing/gtest/include/gtest/gtest.h"
-#include "ui/gfx/half_float.h"
 
 namespace gfx {
 
@@ -75,7 +75,7 @@
       0.0f,    1.0f,    10.0f,    1000.0f,  65503.0f,
       1.0E-3f, 1.0E-6f, 1.0E-20f, 1.0E-44f,
   };
-  for (size_t i = 0; i < base::size(test); i++) {
+  for (size_t i = 0; i < std::size(test); i++) {
     EXPECT_EQ(ConvertTruth(test[i]), Convert(test[i])) << " float = "
                                                        << test[i];
     if (test[i] != 0.0) {
diff --git a/ui/gfx/icon_util.cc b/ui/gfx/icon_util.cc
index 93cba79..62df8b1 100644
--- a/ui/gfx/icon_util.cc
+++ b/ui/gfx/icon_util.cc
@@ -5,7 +5,6 @@
 #include "ui/gfx/icon_util.h"
 
 #include "base/check_op.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_util.h"
 #include "base/files/important_file_writer.h"
 #include "base/memory/ref_counted_memory.h"
@@ -157,7 +156,7 @@
   256   // Used by Vista onwards for large icons.
 };
 
-const size_t IconUtil::kNumIconDimensions = base::size(kIconDimensions);
+const size_t IconUtil::kNumIconDimensions = std::size(kIconDimensions);
 const size_t IconUtil::kNumIconDimensionsUpToMediumSize = 9;
 
 base::win::ScopedHICON IconUtil::CreateHICONFromSkBitmap(
diff --git a/ui/gfx/image/image_ios_unittest.mm b/ui/gfx/image/image_ios_unittest.mm
index c3cd6395..961c1c3e 100644
--- a/ui/gfx/image/image_ios_unittest.mm
+++ b/ui/gfx/image/image_ios_unittest.mm
@@ -2,14 +2,14 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#import <QuartzCore/QuartzCore.h>
-#include <stddef.h>
-#import <UIKit/UIKit.h>
+#include "ui/gfx/image/image.h"
 
-#include "base/cxx17_backports.h"
+#import <QuartzCore/QuartzCore.h>
+#import <UIKit/UIKit.h>
+#include <stddef.h>
+
 #include "base/mac/scoped_cftyperef.h"
 #include "testing/gtest/include/gtest/gtest.h"
-#include "ui/gfx/image/image.h"
 #include "ui/gfx/image/image_skia.h"
 
 namespace {
@@ -73,8 +73,8 @@
   const CGFloat kHeight = 100;
   const CGFloat kTestScales[3] = { 1.0f, 2.0f, 3.0f };
 
-  for (size_t i = 0; i < base::size(kTestScales); ++i) {
-    for (size_t j = 0; j < base::size(kTestScales); ++j) {
+  for (size_t i = 0; i < std::size(kTestScales); ++i) {
+    for (size_t j = 0; j < std::size(kTestScales); ++j) {
       const CGFloat source_scale = kTestScales[i];
       const CGFloat supported_scale = kTestScales[j];
 
diff --git a/ui/gfx/ios/uikit_util_unittest.mm b/ui/gfx/ios/uikit_util_unittest.mm
index 269b4b3..c096600 100644
--- a/ui/gfx/ios/uikit_util_unittest.mm
+++ b/ui/gfx/ios/uikit_util_unittest.mm
@@ -2,12 +2,12 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#import "ui/gfx/ios/uikit_util.h"
+
 #import <Foundation/Foundation.h>
 #include <stddef.h>
 
-#include "base/cxx17_backports.h"
 #include "testing/platform_test.h"
-#import "ui/gfx/ios/uikit_util.h"
 
 namespace {
 
@@ -20,7 +20,7 @@
    // "integer" values within <1 of the original value in the scaled space.
    CGFloat test_values[] = { 10.0, 55.5, 3.1, 2.9 };
    const CGFloat kMaxAlignDelta = 0.9999;
-   size_t value_count = base::size(test_values);
+   size_t value_count = std::size(test_values);
    for (unsigned int i = 0; i < value_count; ++i) {
      CGFloat aligned = ui::AlignValueToUpperPixel(test_values[i]);
      EXPECT_FLOAT_EQ(aligned * scale, floor(aligned * scale));
@@ -35,7 +35,7 @@
   // "integer" values within <1 of the original value in the scaled space.
   CGFloat test_values[] = { 10.0, 55.5, 3.1, 2.9 };
   const CGFloat kMaxAlignDelta = 0.9999;
-  size_t value_count = base::size(test_values);
+  size_t value_count = std::size(test_values);
   for (unsigned int i = 0; i < value_count; ++i) {
     CGFloat width = test_values[i];
     CGFloat height = test_values[(i + 1) % value_count];
diff --git a/ui/gfx/mac/io_surface.cc b/ui/gfx/mac/io_surface.cc
index 298321f..e361879 100644
--- a/ui/gfx/mac/io_surface.cc
+++ b/ui/gfx/mac/io_surface.cc
@@ -11,7 +11,6 @@
 
 #include "base/bits.h"
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "base/feature_list.h"
 #include "base/logging.h"
 #include "base/mac/mac_util.h"
@@ -62,12 +61,12 @@
       return 8;
     case gfx::BufferFormat::YUV_420_BIPLANAR: {
       constexpr int32_t bytes_per_element[] = {1, 2};
-      DCHECK_LT(static_cast<size_t>(plane), base::size(bytes_per_element));
+      DCHECK_LT(static_cast<size_t>(plane), std::size(bytes_per_element));
       return bytes_per_element[plane];
     }
     case gfx::BufferFormat::P010: {
       constexpr int32_t bytes_per_element[] = {2, 4};
-      DCHECK_LT(static_cast<size_t>(plane), base::size(bytes_per_element));
+      DCHECK_LT(static_cast<size_t>(plane), std::size(bytes_per_element));
       return bytes_per_element[plane];
     }
     case gfx::BufferFormat::BGR_565:
diff --git a/ui/gfx/nine_image_painter.cc b/ui/gfx/nine_image_painter.cc
index f183b27..464953e 100644
--- a/ui/gfx/nine_image_painter.cc
+++ b/ui/gfx/nine_image_painter.cc
@@ -8,7 +8,6 @@
 
 #include <limits>
 
-#include "base/cxx17_backports.h"
 #include "base/numerics/safe_conversions.h"
 #include "cc/paint/paint_flags.h"
 #include "third_party/skia/include/core/SkRect.h"
@@ -53,8 +52,8 @@
 }  // namespace
 
 NineImagePainter::NineImagePainter(const std::vector<ImageSkia>& images) {
-  DCHECK_EQ(base::size(images_), images.size());
-  for (size_t i = 0; i < base::size(images_); ++i)
+  DCHECK_EQ(std::size(images_), images.size());
+  for (size_t i = 0; i < std::size(images_); ++i)
     images_[i] = images[i];
 }
 
@@ -113,8 +112,8 @@
   canvas->Translate(gfx::Vector2d(left_in_pixels, top_in_pixels));
 
   ImageSkiaRep image_reps[9];
-  static_assert(base::size(image_reps) == std::extent<decltype(images_)>(), "");
-  for (size_t i = 0; i < base::size(image_reps); ++i) {
+  static_assert(std::size(image_reps) == std::extent<decltype(images_)>(), "");
+  for (size_t i = 0; i < std::size(image_reps); ++i) {
     image_reps[i] = images_[i].GetRepresentation(scale);
     DCHECK(image_reps[i].is_null() || image_reps[i].scale() == scale);
   }
diff --git a/ui/gfx/paint_vector_icon_unittest.cc b/ui/gfx/paint_vector_icon_unittest.cc
index ff7bd2e..2b552e0 100644
--- a/ui/gfx/paint_vector_icon_unittest.cc
+++ b/ui/gfx/paint_vector_icon_unittest.cc
@@ -5,9 +5,9 @@
 #include "ui/gfx/paint_vector_icon.h"
 
 #include <gtest/gtest.h>
+
 #include <vector>
 
-#include "base/cxx17_backports.h"
 #include "base/i18n/rtl.h"
 #include "cc/paint/paint_record.h"
 #include "cc/paint/paint_recorder.h"
@@ -52,7 +52,7 @@
       MOVE_TO, 4, 5, LINE_TO, 10, 11, CLOSE,
       // This move should use (4, 5) as the start point rather than (10, 11).
       R_MOVE_TO, 20, 21, R_LINE_TO, 50, 51};
-  const VectorIconRep rep_list[] = {{elements, base::size(elements)}};
+  const VectorIconRep rep_list[] = {{elements, std::size(elements)}};
   const VectorIcon icon = {rep_list, 1u};
 
   PaintVectorIcon(&canvas, icon, 100, SK_ColorMAGENTA);
@@ -93,7 +93,7 @@
                                   R_H_LINE_TO,
                                   -20,
                                   CLOSE};
-  const VectorIconRep rep_list[] = {{elements, base::size(elements)}};
+  const VectorIconRep rep_list[] = {{elements, std::size(elements)}};
   const VectorIcon icon = {rep_list, 1u};
   PaintVectorIcon(&canvas, icon, canvas_size, color);
 
@@ -219,11 +219,11 @@
                                     0,
                                     CLOSE};
   // VectorIconReps are always sorted in descending order of size.
-  const VectorIconRep rep_list[] = {{elements48, base::size(elements48)},
-                                    {elements32, base::size(elements32)},
-                                    {elements24, base::size(elements24)},
-                                    {elements20, base::size(elements20)},
-                                    {elements16, base::size(elements16)}};
+  const VectorIconRep rep_list[] = {{elements48, std::size(elements48)},
+                                    {elements32, std::size(elements32)},
+                                    {elements24, std::size(elements24)},
+                                    {elements20, std::size(elements20)},
+                                    {elements16, std::size(elements16)}};
   const VectorIcon icon = {rep_list, 5u};
 
   // Test exact sizes paint the correctly sized icon, including the largest and
diff --git a/ui/gfx/path_win_unittest.cc b/ui/gfx/path_win_unittest.cc
index c001370..7de3f5e6 100644
--- a/ui/gfx/path_win_unittest.cc
+++ b/ui/gfx/path_win_unittest.cc
@@ -10,7 +10,6 @@
 #include <vector>
 
 #include "base/check_op.h"
-#include "base/cxx17_backports.h"
 #include "base/win/scoped_gdi_object.h"
 #include "skia/ext/skia_utils_win.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -84,8 +83,8 @@
   path.addRRect(rrect);
   base::win::ScopedRegion region(CreateHRGNFromSkPath(path));
   const std::vector<SkIRect>& region_rects = GetRectsFromHRGN(region.get());
-  EXPECT_EQ(base::size(rects), region_rects.size());
-  for (size_t i = 0; i < base::size(rects) && i < region_rects.size(); ++i)
+  EXPECT_EQ(std::size(rects), region_rects.size());
+  for (size_t i = 0; i < std::size(rects) && i < region_rects.size(); ++i)
     EXPECT_EQ(rects[i], region_rects[i]);
 }
 
@@ -103,8 +102,8 @@
   }
   base::win::ScopedRegion region(CreateHRGNFromSkPath(path));
   const std::vector<SkIRect>& region_rects = GetRectsFromHRGN(region.get());
-  ASSERT_EQ(base::size(rects), region_rects.size());
-  for (size_t i = 0; i < base::size(rects); ++i)
+  ASSERT_EQ(std::size(rects), region_rects.size());
+  for (size_t i = 0; i < std::size(rects); ++i)
     EXPECT_EQ(rects[i], region_rects[i]);
 }
 
diff --git a/ui/gfx/platform_font_mac_unittest.mm b/ui/gfx/platform_font_mac_unittest.mm
index 46b2e6d..ff2c4ad 100644
--- a/ui/gfx/platform_font_mac_unittest.mm
+++ b/ui/gfx/platform_font_mac_unittest.mm
@@ -7,7 +7,6 @@
 #include <Cocoa/Cocoa.h>
 #include <stddef.h>
 
-#include "base/cxx17_backports.h"
 #import "base/mac/foundation_util.h"
 #include "base/mac/scoped_cftyperef.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -189,7 +188,7 @@
   Font default_font;
   Font::FontStyle styles[] = {Font::NORMAL, Font::ITALIC, Font::UNDERLINE};
 
-  for (size_t i = 0; i < base::size(styles); ++i) {
+  for (size_t i = 0; i < std::size(styles); ++i) {
     SCOPED_TRACE(testing::Message() << "Font::FontStyle: " << styles[i]);
     // Include the range of sizes used by ResourceBundle::FontStyle (-1 to +8).
     for (int delta = -1; delta <= 8; ++delta) {
diff --git a/ui/gfx/render_text_unittest.cc b/ui/gfx/render_text_unittest.cc
index 43d0369..f6e6490 100644
--- a/ui/gfx/render_text_unittest.cc
+++ b/ui/gfx/render_text_unittest.cc
@@ -12,7 +12,6 @@
 #include <memory>
 #include <numeric>
 
-#include "base/cxx17_backports.h"
 #include "base/format_macros.h"
 #include "base/i18n/break_iterator.h"
 #include "base/i18n/char_iterator.h"
@@ -671,7 +670,7 @@
   RenderText* render_text = GetRenderText();
   EXPECT_TRUE(render_text->text().empty());
   const char16_t* const cases[] = {kWeak, kLtr, u"Hello", kRtl, u"", u""};
-  for (size_t i = 0; i < base::size(cases); ++i) {
+  for (size_t i = 0; i < std::size(cases); ++i) {
     EXPECT_TRUE(test_api()->colors().EqualsValueForTesting(kPlaceholderColor));
     EXPECT_TRUE(test_api()->baselines().EqualsValueForTesting(NORMAL_BASELINE));
     EXPECT_TRUE(test_api()->font_size_overrides().EqualsValueForTesting(0));
@@ -690,7 +689,7 @@
   render_text->SetWeight(Font::Weight::BOLD);
   render_text->SetStyle(TEXT_STYLE_UNDERLINE, false);
   const char16_t* const cases[] = {kWeak, kLtr, u"Hello", kRtl, u"", u""};
-  for (size_t i = 0; i < base::size(cases); ++i) {
+  for (size_t i = 0; i < std::size(cases); ++i) {
     EXPECT_TRUE(test_api()->colors().EqualsValueForTesting(color));
     EXPECT_TRUE(test_api()->baselines().EqualsValueForTesting(SUPERSCRIPT));
     EXPECT_TRUE(
@@ -1263,7 +1262,7 @@
       u"hop on pop",  // Check LTR word boundaries.
       u"אב אג בג",    // Check RTL word boundaries.
   };
-  for (size_t i = 0; i < base::size(texts); ++i) {
+  for (size_t i = 0; i < std::size(texts); ++i) {
     TestVisualCursorMotionInObscuredField(render_text, texts[i],
                                           SELECTION_NONE);
     TestVisualCursorMotionInObscuredField(render_text, texts[i],
@@ -2642,7 +2641,7 @@
 
   RenderText* render_text = GetRenderText();
   render_text->set_truncate_length(5);
-  for (size_t i = 0; i < base::size(cases); i++) {
+  for (size_t i = 0; i < std::size(cases); i++) {
     render_text->SetText(cases[i].text);
     EXPECT_EQ(cases[i].text, render_text->text());
     EXPECT_EQ(cases[i].display_text, render_text->GetDisplayText())
@@ -3445,7 +3444,7 @@
         base::i18n::RIGHT_TO_LEFT : base::i18n::LEFT_TO_RIGHT;
 
     // Ensure that directionality modes yield the correct text directions.
-    for (size_t j = 0; j < base::size(cases); j++) {
+    for (size_t j = 0; j < std::size(cases); j++) {
       render_text->SetText(cases[j].text);
       render_text->SetDirectionalityMode(DIRECTIONALITY_FROM_TEXT);
       EXPECT_EQ(render_text->GetDisplayTextDirection(),cases[j].text_direction);
@@ -3942,7 +3941,7 @@
   };
 
   RenderText* render_text = GetRenderText();
-  for (size_t i = 0; i < base::size(cases); i++) {
+  for (size_t i = 0; i < std::size(cases); i++) {
     SCOPED_TRACE(base::StringPrintf("Testing cases[%" PRIuS "]", i));
     render_text->SetText(cases[i].text);
 
@@ -3966,7 +3965,7 @@
 
   RenderText* render_text = GetRenderText();
   render_text->SetDisplayRect(Rect(100, 1000));
-  for (size_t i = 0; i < base::size(cases); i++) {
+  for (size_t i = 0; i < std::size(cases); i++) {
     SCOPED_TRACE(base::StringPrintf("Testing cases[%" PRIuS "]", i));
     render_text->SetText(cases[i]);
     EXPECT_TRUE(render_text->IsValidLogicalIndex(1));
@@ -3995,7 +3994,7 @@
   const char16_t* kTestStrings[] = {kLtrRtl, kLtrRtlLtr, kRtlLtr, kRtlLtrRtl};
   RenderText* render_text = GetRenderText();
   render_text->SetDisplayRect(Rect(0, 0, 100, 20));
-  for (size_t i = 0; i < base::size(kTestStrings); ++i) {
+  for (size_t i = 0; i < std::size(kTestStrings); ++i) {
     SCOPED_TRACE(base::StringPrintf("Testing case[%" PRIuS "]", i));
     render_text->SetText(kTestStrings[i]);
     for (size_t j = 0; j < render_text->text().length(); ++j) {
@@ -4139,7 +4138,7 @@
   render_text->SetDisplayRect(Rect(25, 1000));
   render_text->SetMultiline(true);
 
-  for (size_t i = 0; i < base::size(kTestStrings); i++) {
+  for (size_t i = 0; i < std::size(kTestStrings); i++) {
     render_text->SetText(kTestStrings[i]);
     EXPECT_EQ(2u, render_text->GetNumLines());
 
@@ -4180,7 +4179,7 @@
 
   RenderText* render_text = GetRenderText();
   render_text->SetDisplayRect(gfx::Rect(100, 30));
-  for (size_t i = 0; i < base::size(cases); i++) {
+  for (size_t i = 0; i < std::size(cases); i++) {
     SCOPED_TRACE(base::StringPrintf("Testing case %" PRIuS "", i));
     render_text->SetText(cases[i].text);
     std::set<size_t> obtained_cursor_positions;
@@ -4217,7 +4216,7 @@
   };
 
   RenderText* render_text = GetRenderText();
-  for (size_t i = 0; i < base::size(cases); i++) {
+  for (size_t i = 0; i < std::size(cases); i++) {
     render_text->SetText(cases[i].text);
     bool ltr = (cases[i].expected_text_direction == base::i18n::LEFT_TO_RIGHT);
 
@@ -4249,7 +4248,7 @@
     EXPECT_EQ(render_text->selection_model(), SelectionModel());
 
     // Test the weak, LTR, RTL, and Bidi string cases.
-    for (size_t j = 0; j < base::size(cases); j++) {
+    for (size_t j = 0; j < std::size(cases); j++) {
       render_text->SetText(cases[j]);
       render_text->SelectAll(false);
       EXPECT_EQ(render_text->selection_model(), expected_forwards);
@@ -5193,7 +5192,7 @@
   const FontList& larger_font_list = default_font_list.DeriveWithSizeDelta(24);
   EXPECT_GT(larger_font_list.GetHeight(), default_font_list.GetHeight());
 
-  for (size_t i = 0; i < base::size(cases); i++) {
+  for (size_t i = 0; i < std::size(cases); i++) {
     ResetRenderTextInstance();
     RenderText* render_text = GetRenderText();
     render_text->SetFontList(default_font_list);
@@ -5241,7 +5240,7 @@
   render_text->SetVerticalAlignment(ALIGN_TOP);
 
   static const size_t kGraphemeBoundaries[] = {0, 2, 4, 6, 7};
-  for (size_t i = 0; i < base::size(kGraphemeBoundaries); ++i) {
+  for (size_t i = 0; i < std::size(kGraphemeBoundaries); ++i) {
     const size_t text_offset = kGraphemeBoundaries[i];
     EXPECT_EQ(render_text->GetCursorBounds(
                   SelectionModel(text_offset, CURSOR_FORWARD), true),
@@ -5442,7 +5441,7 @@
     { ALIGN_CENTER, kEnlargement },
   };
 
-  for (size_t i = 0; i < base::size(small_content_cases); i++) {
+  for (size_t i = 0; i < std::size(small_content_cases); i++) {
     render_text->SetHorizontalAlignment(small_content_cases[i].alignment);
     render_text->SetDisplayOffset(small_content_cases[i].offset);
     EXPECT_EQ(0, render_text->GetUpdatedDisplayOffset().x());
@@ -5477,7 +5476,7 @@
     { ALIGN_CENTER, kEnlargement, (kEnlargement - 1) / 2 },
   };
 
-  for (size_t i = 0; i < base::size(large_content_cases); i++) {
+  for (size_t i = 0; i < std::size(large_content_cases); i++) {
     render_text->SetHorizontalAlignment(large_content_cases[i].alignment);
     render_text->SetDisplayOffset(large_content_cases[i].offset);
     EXPECT_EQ(large_content_cases[i].expected_offset,
@@ -5525,14 +5524,14 @@
   };
 
   RenderText* render_text = GetRenderText();
-  for (size_t i = 0; i < base::size(cases); ++i) {
+  for (size_t i = 0; i < std::size(cases); ++i) {
     std::u16string text = cases[i].text;
     const size_t start_paren_char_index = text.find('(');
     ASSERT_NE(std::u16string::npos, start_paren_char_index);
     const size_t end_paren_char_index = text.find(')');
     ASSERT_NE(std::u16string::npos, end_paren_char_index);
 
-    for (size_t j = 0; j < base::size(punctuation_pairs); ++j) {
+    for (size_t j = 0; j < std::size(punctuation_pairs); ++j) {
       text[start_paren_char_index] = punctuation_pairs[j].left_char;
       text[end_paren_char_index] = punctuation_pairs[j].right_char;
       render_text->SetText(text);
@@ -5595,7 +5594,7 @@
     { 16, 13, 16 },
   };
 
-  for (size_t i = 0; i < base::size(cases); ++i) {
+  for (size_t i = 0; i < std::size(cases); ++i) {
     render_text->SetCursorPosition(cases[i].cursor);
     render_text->SelectWord();
     EXPECT_EQ(Range(cases[i].selection_start, cases[i].selection_end),
@@ -5762,7 +5761,7 @@
   RenderText* render_text = GetRenderText();
   render_text->set_selection_color(SK_ColorGREEN);
 
-  for (size_t i = 0; i < base::size(kTestStrings); ++i) {
+  for (size_t i = 0; i < std::size(kTestStrings); ++i) {
     render_text->SetText(kTestStrings[i]);
     const int expected_width = render_text->GetStringSize().width();
     render_text->SelectRange({0, 1});
@@ -5827,7 +5826,7 @@
   render_text->SetMultiline(true);
   render_text->SetWordWrapBehavior(WRAP_LONG_WORDS);
 
-  for (size_t i = 0; i < base::size(kTestStrings); ++i) {
+  for (size_t i = 0; i < std::size(kTestStrings); ++i) {
     SCOPED_TRACE(base::StringPrintf("kTestStrings[%" PRIuS "]", i));
     render_text->SetText(kTestStrings[i]);
     render_text->Draw(canvas());
@@ -5882,7 +5881,7 @@
   render_text->SetWordWrapBehavior(WRAP_LONG_WORDS);
   render_text->SetHorizontalAlignment(ALIGN_TO_HEAD);
 
-  for (size_t i = 0; i < base::size(kTestStrings); ++i) {
+  for (size_t i = 0; i < std::size(kTestStrings); ++i) {
     SCOPED_TRACE(base::StringPrintf("kTestStrings[%" PRIuS "]", i));
     render_text->SetText(kTestStrings[i].text);
     DrawVisualText();
@@ -5931,7 +5930,7 @@
   render_text->SetDisplayRect(Rect(1000, 1000));
   render_text->SetMultiline(true);
 
-  for (size_t i = 0; i < base::size(kTestStrings); ++i) {
+  for (size_t i = 0; i < std::size(kTestStrings); ++i) {
     SCOPED_TRACE(base::StringPrintf("kTestStrings[%" PRIuS "]", i));
     render_text->SetText(kTestStrings[i]);
     render_text->Draw(canvas());
@@ -5958,7 +5957,7 @@
   render_text->SetDisplayRect(Rect(200, 1000));
   render_text->SetMultiline(true);
 
-  for (size_t i = 0; i < base::size(kTestStrings); ++i) {
+  for (size_t i = 0; i < std::size(kTestStrings); ++i) {
     SCOPED_TRACE(base::StringPrintf("kTestStrings[%" PRIuS "]", i));
     render_text->SetText(kTestStrings[i].text);
     render_text->Draw(canvas());
@@ -6001,7 +6000,7 @@
       u"abc\ndef", u"a \n b ", u"ab\n", u"a\n\nb", u"\nab", u"\n",
   };
 
-  for (size_t i = 0; i < base::size(kTestStrings); ++i) {
+  for (size_t i = 0; i < std::size(kTestStrings); ++i) {
     SCOPED_TRACE(base::StringPrintf("kTestStrings[%" PRIuS "]", i));
     ResetRenderTextInstance();
     RenderText* render_text = GetRenderText();
@@ -6053,7 +6052,7 @@
   render_text->SetDisplayRect(Rect(100, 1000));
   render_text->SetMultiline(true);
 
-  for (size_t i = 0; i < base::size(kTestStrings); ++i) {
+  for (size_t i = 0; i < std::size(kTestStrings); ++i) {
     SCOPED_TRACE(testing::Message("kTestStrings[")
                  << i << "] = " << kTestStrings[i].text);
     render_text->SetText(kTestStrings[i].text);
@@ -6108,7 +6107,7 @@
   SetGlyphWidth(kGlyphSize);
   render_text->SetDisplayRect(Rect(0, 0, kGlyphSize * 4, 0));
 
-  for (size_t i = 0; i < base::size(kTestScenarios); ++i) {
+  for (size_t i = 0; i < std::size(kTestScenarios); ++i) {
     SCOPED_TRACE(base::StringPrintf(
         "kTestScenarios[%" PRIuS "] %d", i, kTestScenarios[i].behavior));
     render_text->SetWordWrapBehavior(kTestScenarios[i].behavior);
@@ -6176,7 +6175,7 @@
   SetGlyphWidth(kGlyphSize);
   render_text->SetDisplayRect(Rect(0, 0, kGlyphSize * 4, 0));
 
-  for (size_t i = 0; i < base::size(kTestScenarios); ++i) {
+  for (size_t i = 0; i < std::size(kTestScenarios); ++i) {
     SCOPED_TRACE(base::StringPrintf("kTestStrings[%" PRIuS "]", i));
     render_text->SetText(kTestScenarios[i].text);
     render_text->SetWordWrapBehavior(kTestScenarios[i].behavior);
@@ -6239,7 +6238,7 @@
        {Range(0, 2), Range(2, 3), Range(3, 5)}},
   };
 
-  for (size_t i = 0; i < base::size(kTestScenarios); ++i) {
+  for (size_t i = 0; i < std::size(kTestScenarios); ++i) {
     SCOPED_TRACE(base::StringPrintf("kTestStrings[%" PRIuS "]", i));
     render_text->SetText(kTestScenarios[i].text);
     render_text->SetDisplayRect(Rect(0, 0, kTestScenarios[i].display_width, 0));
@@ -6273,7 +6272,7 @@
 
   EXPECT_EQ(3u, test_api()->lines().size());
   for (size_t j = 0;
-       j < std::min(base::size(char_ranges), test_api()->lines().size()); ++j) {
+       j < std::min(std::size(char_ranges), test_api()->lines().size()); ++j) {
     SCOPED_TRACE(base::StringPrintf("%" PRIuS "-th line", j));
     int segment_size = test_api()->lines()[j].segments.size();
     ASSERT_GT(segment_size, 0);
@@ -6355,7 +6354,7 @@
   RenderText* render_text = GetRenderText();
   render_text->SetDisplayRect(Rect(200, 1000));
 
-  for (size_t i = 0; i < base::size(kTestStrings); ++i) {
+  for (size_t i = 0; i < std::size(kTestStrings); ++i) {
     SCOPED_TRACE(base::StringPrintf("kTestStrings[%" PRIuS "]", i));
     render_text->SetText(kTestStrings[i]);
     render_text->Draw(canvas());
@@ -6460,7 +6459,7 @@
 
   RenderTextHarfBuzz* render_text = GetRenderText();
 
-  for (size_t i = 0; i < base::size(kTestStrings); ++i) {
+  for (size_t i = 0; i < std::size(kTestStrings); ++i) {
     SCOPED_TRACE(base::StringPrintf("kTestStrings[%" PRIuS "]", i));
     render_text->SetText(kTestStrings[i].text);
 
@@ -6523,7 +6522,7 @@
   run.shape.glyph_count = 4;
   run.shape.glyph_to_char.resize(4);
 
-  for (size_t i = 0; i < base::size(cases); ++i) {
+  for (size_t i = 0; i < std::size(cases); ++i) {
     std::copy(cases[i].glyph_to_char, cases[i].glyph_to_char + 4,
               run.shape.glyph_to_char.begin());
     run.font_params.is_rtl = cases[i].is_rtl;
@@ -6566,7 +6565,7 @@
 
   RenderTextHarfBuzz* render_text = GetRenderText();
 
-  for (size_t i = 0; i < base::size(cases); ++i) {
+  for (size_t i = 0; i < std::size(cases); ++i) {
     SCOPED_TRACE(base::StringPrintf("Case %" PRIuS, i));
 
     std::u16string text = cases[i];
@@ -6621,7 +6620,7 @@
   RenderTextHarfBuzz* render_text = GetRenderText();
   render_text->SetText(u"abcd");
 
-  for (size_t i = 0; i < base::size(cases); ++i) {
+  for (size_t i = 0; i < std::size(cases); ++i) {
     std::copy(cases[i].glyph_to_char, cases[i].glyph_to_char + 2,
               run.shape.glyph_to_char.begin());
     run.font_params.is_rtl = cases[i].is_rtl;
@@ -6946,7 +6945,7 @@
                                     u"\u0645\u0631\u062D\u0628\u0627"};
   RenderText* render_text = GetRenderText();
 
-  for (size_t i = 0; i < base::size(kTestStrings); ++i) {
+  for (size_t i = 0; i < std::size(kTestStrings); ++i) {
     render_text->SetText(kTestStrings[i]);
 
     for (size_t j = 0; j < render_text->text().length(); ++j)
@@ -8044,7 +8043,7 @@
   render_text->SetMultiline(true);
   render_text->SetDisplayRect(Rect(20, 1000));
 
-  for (size_t i = 0; i < base::size(cases); i++) {
+  for (size_t i = 0; i < std::size(cases); i++) {
     SCOPED_TRACE(base::StringPrintf("Testing case %" PRIuS "", i));
     render_text->SetText(cases[i].text);
 
diff --git a/ui/gfx/shadow_value_unittest.cc b/ui/gfx/shadow_value_unittest.cc
index 713b473..70e4445 100644
--- a/ui/gfx/shadow_value_unittest.cc
+++ b/ui/gfx/shadow_value_unittest.cc
@@ -2,13 +2,13 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "ui/gfx/shadow_value.h"
+
 #include <stddef.h>
 
-#include "base/cxx17_backports.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/gfx/geometry/insets.h"
 #include "ui/gfx/geometry/vector2d.h"
-#include "ui/gfx/shadow_value.h"
 
 namespace gfx {
 
@@ -58,7 +58,7 @@
       },
   };
 
-  for (size_t i = 0; i < base::size(kTestCases); ++i) {
+  for (size_t i = 0; i < std::size(kTestCases); ++i) {
     Insets margin = ShadowValue::GetMargin(
         ShadowValues(kTestCases[i].shadows,
                      kTestCases[i].shadows + kTestCases[i].shadow_count));
diff --git a/ui/gfx/test/icc_profiles.cc b/ui/gfx/test/icc_profiles.cc
index 4ec059f..8bdfc58 100644
--- a/ui/gfx/test/icc_profiles.cc
+++ b/ui/gfx/test/icc_profiles.cc
@@ -4,8 +4,6 @@
 
 #include "ui/gfx/test/icc_profiles.h"
 
-#include "base/cxx17_backports.h"
-
 namespace gfx {
 
 namespace {
@@ -1897,42 +1895,42 @@
 ICCProfile ICCProfileForTestingAdobeRGB() {
   return ICCProfile::FromData(
       reinterpret_cast<const char*>(adobe_rgb_profile_data),
-      base::size(adobe_rgb_profile_data));
+      std::size(adobe_rgb_profile_data));
 }
 
 ICCProfile ICCProfileForTestingGenericRGB() {
   return ICCProfile::FromData(
       reinterpret_cast<const char*>(generic_rgb_profile_data),
-      base::size(generic_rgb_profile_data));
+      std::size(generic_rgb_profile_data));
 }
 
 ICCProfile ICCProfileForTestingSRGB() {
   return ICCProfile::FromData(reinterpret_cast<const char*>(srgb_profile_data),
-                              base::size(srgb_profile_data));
+                              std::size(srgb_profile_data));
 }
 
 ICCProfile ICCProfileForTestingColorSpin() {
   return ICCProfile::FromData(
       reinterpret_cast<const char*>(colorspin_profile_data),
-      base::size(colorspin_profile_data));
+      std::size(colorspin_profile_data));
 }
 
 ICCProfile ICCProfileForTestingNoAnalyticTrFn() {
   return ICCProfile::FromData(
       reinterpret_cast<const char*>(no_analytic_tr_fn_profile_data),
-      base::size(no_analytic_tr_fn_profile_data));
+      std::size(no_analytic_tr_fn_profile_data));
 }
 
 ICCProfile ICCProfileForTestingA2BOnly() {
   return ICCProfile::FromData(
       reinterpret_cast<const char*>(a2b_only_profile_data),
-      base::size(a2b_only_profile_data));
+      std::size(a2b_only_profile_data));
 }
 
 ICCProfile ICCProfileForTestingOvershoot() {
   return ICCProfile::FromData(
       reinterpret_cast<const char*>(overshoot_profile_data),
-      base::size(overshoot_profile_data));
+      std::size(overshoot_profile_data));
 }
 
 }  // namespace gfx
diff --git a/ui/gfx/text_elider_unittest.cc b/ui/gfx/text_elider_unittest.cc
index 79a9cf7..7a868f5 100644
--- a/ui/gfx/text_elider_unittest.cc
+++ b/ui/gfx/text_elider_unittest.cc
@@ -11,7 +11,6 @@
 #include <memory>
 #include <vector>
 
-#include "base/cxx17_backports.h"
 #include "base/files/file_path.h"
 #include "base/i18n/rtl.h"
 #include "base/logging.h"
@@ -85,7 +84,7 @@
   };
 
   const FontList font_list;
-  for (size_t i = 0; i < base::size(testcases); ++i) {
+  for (size_t i = 0; i < std::size(testcases); ++i) {
     const std::u16string expected_output = testcases[i].output;
     EXPECT_EQ(
         expected_output,
@@ -155,7 +154,7 @@
        u"file.name.re…emelylongext"}};
 
   static const FontList font_list;
-  for (size_t i = 0; i < base::size(testcases); ++i) {
+  for (size_t i = 0; i < std::size(testcases); ++i) {
     base::FilePath filepath(testcases[i].input);
     std::u16string expected = testcases[i].output;
     std::u16string using_width_of = testcases[i].using_width_of.empty()
@@ -184,7 +183,7 @@
       {u"Tests", kTestWidth, u"Test"},
   };
 
-  for (size_t i = 0; i < base::size(cases); ++i) {
+  for (size_t i = 0; i < std::size(cases); ++i) {
     std::u16string result =
         ElideText(cases[i].input, font_list, cases[i].width, TRUNCATE);
     EXPECT_EQ(cases[i].output, result);
@@ -208,7 +207,7 @@
       {u"Test", kTestWidth, u"Test"},
   };
 
-  for (size_t i = 0; i < base::size(cases); ++i) {
+  for (size_t i = 0; i < std::size(cases); ++i) {
     std::u16string result =
         ElideText(cases[i].input, font_list, cases[i].width, ELIDE_TAIL);
     EXPECT_EQ(cases[i].output, result);
@@ -234,7 +233,7 @@
       {u"Test123", kEllipsis23Width, u"…23"},
   };
 
-  for (size_t i = 0; i < base::size(cases); ++i) {
+  for (size_t i = 0; i < std::size(cases); ++i) {
     std::u16string result =
         ElideText(cases[i].input, font_list, cases[i].width, ELIDE_HEAD);
     EXPECT_EQ(cases[i].output, result);
@@ -327,7 +326,7 @@
 
   const FontList font_list;
   float ellipsis_width = GetStringWidthF(u"…", font_list);
-  for (size_t i = 0; i < base::size(testcases_end); ++i) {
+  for (size_t i = 0; i < std::size(testcases_end); ++i) {
     // Compare sizes rather than actual contents because if the test fails,
     // output is rather long.
     EXPECT_EQ(testcases_end[i].output.size(),
@@ -355,7 +354,7 @@
       {data_scheme + million_a, long_string_middle},
   };
 
-  for (size_t i = 0; i < base::size(testcases_middle); ++i) {
+  for (size_t i = 0; i < std::size(testcases_middle); ++i) {
     // Compare sizes rather than actual contents because if the test fails,
     // output is rather long.
     EXPECT_EQ(testcases_middle[i].output.size(),
@@ -381,7 +380,7 @@
       {data_scheme + hundred_thousand_a, long_string_beginning},
       {data_scheme + million_a, long_string_beginning},
   };
-  for (size_t i = 0; i < base::size(testcases_beginning); ++i) {
+  for (size_t i = 0; i < std::size(testcases_beginning); ++i) {
     EXPECT_EQ(testcases_beginning[i].output.size(),
               ElideText(
                   testcases_beginning[i].input, font_list,
@@ -656,7 +655,7 @@
       {u"Hello, my name is Tom", 7, true, u"He...om"},
       {u"Hello, my name is Tom", 10, true, u"Hell...Tom"},
       {u"Hello, my name is Tom", 100, false, u"Hello, my name is Tom"}};
-  for (size_t i = 0; i < base::size(cases); ++i) {
+  for (size_t i = 0; i < std::size(cases); ++i) {
     std::u16string output;
     EXPECT_EQ(cases[i].result,
               ElideString(cases[i].input, cases[i].max_len, &output));
@@ -706,7 +705,7 @@
       {u"Te  Te Test", test_width, 3 * line_height, false, u"Te|Te|Test"},
   };
 
-  for (size_t i = 0; i < base::size(cases); ++i) {
+  for (size_t i = 0; i < std::size(cases); ++i) {
     std::vector<std::u16string> lines;
     EXPECT_EQ(cases[i].truncated_y ? INSUFFICIENT_SPACE_VERTICAL : 0,
               ElideRectangleText(cases[i].input, font_list,
@@ -795,7 +794,7 @@
       {u"Test. Test", test_width, line_height * 3, true, false, u"Test|.|Test"},
   };
 
-  for (size_t i = 0; i < base::size(cases); ++i) {
+  for (size_t i = 0; i < std::size(cases); ++i) {
     std::vector<std::u16string> lines;
     const WordWrapBehavior wrap_behavior =
         (cases[i].wrap_words ? WRAP_LONG_WORDS : TRUNCATE_LONG_WORDS);
@@ -859,7 +858,7 @@
        u"Test|Test|Test|T"},
   };
 
-  for (size_t i = 0; i < base::size(cases); ++i) {
+  for (size_t i = 0; i < std::size(cases); ++i) {
     std::vector<std::u16string> lines;
     EXPECT_EQ(cases[i].truncated_x ? INSUFFICIENT_SPACE_HORIZONTAL : 0,
               ElideRectangleText(
@@ -985,7 +984,7 @@
       {u"Hi, my name is Tom", 1, 40, false, u"Hi, my name is Tom"},
   };
   std::u16string output;
-  for (size_t i = 0; i < base::size(cases); ++i) {
+  for (size_t i = 0; i < std::size(cases); ++i) {
     EXPECT_EQ(cases[i].result,
               ElideRectangleString(cases[i].input, cases[i].max_rows,
                                    cases[i].max_cols, true, &output));
@@ -1066,7 +1065,7 @@
       {u"Hi, my name_is Dick", 1, 40, false, u"Hi, my name_is Dick"},
   };
   std::u16string output;
-  for (size_t i = 0; i < base::size(cases); ++i) {
+  for (size_t i = 0; i < std::size(cases); ++i) {
     EXPECT_EQ(cases[i].result,
               ElideRectangleString(cases[i].input, cases[i].max_rows,
                                    cases[i].max_cols, false, &output));
diff --git a/ui/gfx/win/window_impl.cc b/ui/gfx/win/window_impl.cc
index 247ecac..44c4dc5 100644
--- a/ui/gfx/win/window_impl.cc
+++ b/ui/gfx/win/window_impl.cc
@@ -8,7 +8,6 @@
 
 #include "base/at_exit.h"
 #include "base/bind.h"
-#include "base/cxx17_backports.h"
 #include "base/debug/alias.h"
 #include "base/logging.h"
 #include "base/memory/singleton.h"
@@ -145,7 +144,7 @@
     auto last_error = ::GetLastError();
     base::debug::Alias(&last_error);
     wchar_t name_copy[64];
-    base::wcslcpy(name_copy, name.c_str(), base::size(name_copy));
+    base::wcslcpy(name_copy, name.c_str(), std::size(name_copy));
     base::debug::Alias(name_copy);
     PCHECK(atom);
   }
diff --git a/ui/gfx/x/x11_atom_cache.cc b/ui/gfx/x/x11_atom_cache.cc
index 256c6111..a5c4c8f4 100644
--- a/ui/gfx/x/x11_atom_cache.cc
+++ b/ui/gfx/x/x11_atom_cache.cc
@@ -8,7 +8,6 @@
 #include <vector>
 
 #include "base/check.h"
-#include "base/cxx17_backports.h"
 #include "base/memory/singleton.h"
 #include "ui/gfx/x/connection.h"
 #include "ui/gfx/x/future.h"
@@ -169,7 +168,7 @@
     "xwayland-touch",
 };
 
-constexpr int kCacheCount = base::size(kAtomsToCache);
+constexpr int kCacheCount = std::size(kAtomsToCache);
 
 }  // namespace
 
diff --git a/ui/gl/gl_api_unittest.cc b/ui/gl/gl_api_unittest.cc
index 2ef3057..d4eba66b 100644
--- a/ui/gl/gl_api_unittest.cc
+++ b/ui/gl/gl_api_unittest.cc
@@ -7,7 +7,6 @@
 #include <memory>
 
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/gl/gl_context.h"
 #include "ui/gl/gl_gl_api_implementation.h"
@@ -152,7 +151,7 @@
   };
   static const char* kFakeDisabledExtensions = "GL_ARB_timer_query";
 
-  SetFakeExtensionStrings(kFakeExtensions, base::size(kFakeExtensions));
+  SetFakeExtensionStrings(kFakeExtensions, std::size(kFakeExtensions));
   InitializeAPI(nullptr);
   EXPECT_TRUE(driver_->ext.b_GL_ARB_timer_query);
 
@@ -173,17 +172,17 @@
     "GL_EXT_4"
   };
 
-  SetFakeExtensionStrings(kFakeExtensions, base::size(kFakeExtensions));
+  SetFakeExtensionStrings(kFakeExtensions, std::size(kFakeExtensions));
   InitializeAPI(nullptr);
 
-  EXPECT_EQ(base::size(kFakeExtensions), GetNumExtensions());
-  for (uint32_t i = 0; i < base::size(kFakeExtensions); ++i) {
+  EXPECT_EQ(std::size(kFakeExtensions), GetNumExtensions());
+  for (uint32_t i = 0; i < std::size(kFakeExtensions); ++i) {
     EXPECT_STREQ(kFakeExtensions[i], GetExtensioni(i));
   }
 
   InitializeAPI(kFakeDisabledExtensions);
-  EXPECT_EQ(base::size(kFilteredExtensions), GetNumExtensions());
-  for (uint32_t i = 0; i < base::size(kFilteredExtensions); ++i) {
+  EXPECT_EQ(std::size(kFilteredExtensions), GetNumExtensions());
+  for (uint32_t i = 0; i < std::size(kFilteredExtensions); ++i) {
     EXPECT_STREQ(kFilteredExtensions[i], GetExtensioni(i));
   }
 }
diff --git a/ui/gl/gl_image_io_surface_unittest.cc b/ui/gl/gl_image_io_surface_unittest.cc
index 56488a60..d508c38 100644
--- a/ui/gl/gl_image_io_surface_unittest.cc
+++ b/ui/gl/gl_image_io_surface_unittest.cc
@@ -2,15 +2,15 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "ui/gl/gl_image_io_surface.h"
+
 #include <stddef.h>
 #include <stdint.h>
 
-#include "base/cxx17_backports.h"
 #include "build/build_config.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/gfx/buffer_format_util.h"
 #include "ui/gfx/mac/io_surface.h"
-#include "ui/gl/gl_image_io_surface.h"
 #include "ui/gl/test/gl_image_bind_test_template.h"
 #include "ui/gl/test/gl_image_test_template.h"
 #include "ui/gl/test/gl_image_zero_initialize_test_template.h"
@@ -53,7 +53,7 @@
       corrected_color[2] = color[0];
       corrected_color[3] = color[3];
     } else {
-      memcpy(corrected_color, color, base::size(corrected_color));
+      memcpy(corrected_color, color, std::size(corrected_color));
     }
 
     for (size_t plane = 0; plane < NumberOfPlanesForLinearBufferFormat(format);
diff --git a/ui/gl/gl_image_native_pixmap.cc b/ui/gl/gl_image_native_pixmap.cc
index 417bc72..38f8064 100644
--- a/ui/gl/gl_image_native_pixmap.cc
+++ b/ui/gl/gl_image_native_pixmap.cc
@@ -6,7 +6,6 @@
 
 #include <vector>
 
-#include "base/cxx17_backports.h"
 #include "base/files/scoped_file.h"
 #include "build/build_config.h"
 #include "ui/gfx/buffer_format_util.h"
@@ -186,7 +185,7 @@
         uint64_t modifier = pixmap->GetBufferFormatModifier();
         if (has_dma_buf_import_modifier &&
             modifier != gfx::NativePixmapHandle::kNoModifier) {
-          DCHECK(attrs_plane < base::size(kLinuxDrmModifiers));
+          DCHECK(attrs_plane < std::size(kLinuxDrmModifiers));
           attrs.push_back(kLinuxDrmModifiers[attrs_plane]);
           attrs.push_back(modifier & 0xffffffff);
           attrs.push_back(kLinuxDrmModifiers[attrs_plane] + 1);
diff --git a/ui/gl/gl_switches.cc b/ui/gl/gl_switches.cc
index 609e022b..3c72737c 100644
--- a/ui/gl/gl_switches.cc
+++ b/ui/gl/gl_switches.cc
@@ -4,7 +4,6 @@
 
 #include "ui/gl/gl_switches.h"
 
-#include "base/cxx17_backports.h"
 #include "build/build_config.h"
 
 #if BUILDFLAG(IS_ANDROID)
@@ -193,7 +192,7 @@
     kDirectCompositionVideoSwapChainFormat,
 };
 const int kGLSwitchesCopiedFromGpuProcessHostNumSwitches =
-    base::size(kGLSwitchesCopiedFromGpuProcessHost);
+    std::size(kGLSwitchesCopiedFromGpuProcessHost);
 
 }  // namespace switches
 
diff --git a/ui/gl/gl_version_info_unittest.cc b/ui/gl/gl_version_info_unittest.cc
index bfc2777..ca508099 100644
--- a/ui/gl/gl_version_info_unittest.cc
+++ b/ui/gl/gl_version_info_unittest.cc
@@ -2,11 +2,11 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "ui/gl/gl_version_info.h"
+
 #include <memory>
 
-#include "base/cxx17_backports.h"
 #include "testing/gtest/include/gtest/gtest.h"
-#include "ui/gl/gl_version_info.h"
 
 namespace gl {
 
@@ -51,7 +51,7 @@
       {"OpenGL ES 3.1V@104.0", 3, 1, true, false, true, "", "104.0"}};
 
   gfx::ExtensionSet extensions;
-  for (size_t ii = 0; ii < base::size(kTestData); ++ii) {
+  for (size_t ii = 0; ii < std::size(kTestData); ++ii) {
     GLVersionInfo version_info(kTestData[ii].gl_version, nullptr, extensions);
     EXPECT_EQ(kTestData[ii].expected_gl_major, version_info.major_version);
     EXPECT_EQ(kTestData[ii].expected_gl_minor, version_info.minor_version);
@@ -128,7 +128,7 @@
   };
 
   gfx::ExtensionSet extensions;
-  for (size_t ii = 0; ii < base::size(kTestData); ++ii) {
+  for (size_t ii = 0; ii < std::size(kTestData); ++ii) {
     GLVersionInfo version_info(kTestData[ii].gl_version,
                                kTestData[ii].gl_renderer, extensions);
     EXPECT_TRUE(version_info.is_angle);
diff --git a/ui/gtk/gtk_ui.cc b/ui/gtk/gtk_ui.cc
index 74a3edf5..6c372f96 100644
--- a/ui/gtk/gtk_ui.cc
+++ b/ui/gtk/gtk_ui.cc
@@ -14,7 +14,6 @@
 
 #include "base/command_line.h"
 #include "base/containers/flat_map.h"
-#include "base/cxx17_backports.h"
 #include "base/debug/leak_annotations.h"
 #include "base/environment.h"
 #include "base/logging.h"
@@ -555,7 +554,7 @@
 
   std::string content_types[] = {content_type, kUnknownContentType};
 
-  for (size_t i = 0; i < base::size(content_types); ++i) {
+  for (size_t i = 0; i < std::size(content_types); ++i) {
     auto icon = TakeGObject(g_content_type_get_icon(content_type.c_str()));
     SkBitmap bitmap;
     if (GtkCheckVersion(4)) {
diff --git a/ui/message_center/views/relative_time_formatter.cc b/ui/message_center/views/relative_time_formatter.cc
index 71dcb7e..e68a6076 100644
--- a/ui/message_center/views/relative_time_formatter.cc
+++ b/ui/message_center/views/relative_time_formatter.cc
@@ -4,7 +4,6 @@
 
 #include "ui/message_center/views/relative_time_formatter.h"
 
-#include "base/cxx17_backports.h"
 #include "base/numerics/safe_conversions.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/strings/grit/ui_strings.h"
@@ -39,7 +38,7 @@
       {base::Days(364), IDS_MESSAGE_NOTIFICATION_DURATION_YEARS_SHORTEST,
        IDS_MESSAGE_NOTIFICATION_DURATION_YEARS_SHORTEST_FUTURE},
   };
-  constexpr size_t kTimeFormatsCount = base::size(kTimeFormats);
+  constexpr size_t kTimeFormatsCount = std::size(kTimeFormats);
   static_assert(kTimeFormatsCount > 0, "kTimeFormats must not be empty");
 
   for (size_t i = 0; i < kTimeFormatsCount - 1; ++i) {
diff --git a/ui/ozone/demo/skia/skia_surfaceless_gl_renderer.cc b/ui/ozone/demo/skia/skia_surfaceless_gl_renderer.cc
index 25bf025..9f41f94 100644
--- a/ui/ozone/demo/skia/skia_surfaceless_gl_renderer.cc
+++ b/ui/ozone/demo/skia/skia_surfaceless_gl_renderer.cc
@@ -5,13 +5,13 @@
 #include "ui/ozone/demo/skia/skia_surfaceless_gl_renderer.h"
 
 #include <stddef.h>
+
 #include <memory>
 #include <utility>
 
 #include "base/bind.h"
 #include "base/callback_helpers.h"
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "base/trace_event/trace_event.h"
 #include "third_party/skia/include/core/SkCanvas.h"
 #include "third_party/skia/include/core/SkDeferredDisplayListRecorder.h"
@@ -178,7 +178,7 @@
   else
     primary_plane_rect_ = gfx::Rect(size_);
 
-  for (size_t i = 0; i < base::size(buffers_); ++i) {
+  for (size_t i = 0; i < std::size(buffers_); ++i) {
     buffers_[i] = std::make_unique<BufferWrapper>();
     if (!buffers_[i]->Initialize(gr_context_.get(), widget_,
                                  primary_plane_rect_.size()))
@@ -187,7 +187,7 @@
 
   if (command_line->HasSwitch(kEnableOverlay)) {
     gfx::Size overlay_size = gfx::Size(size_.width() / 8, size_.height() / 8);
-    for (size_t i = 0; i < base::size(overlay_buffer_); ++i) {
+    for (size_t i = 0; i < std::size(overlay_buffer_); ++i) {
       overlay_buffer_[i] = std::make_unique<BufferWrapper>();
       overlay_buffer_[i]->Initialize(gr_context_.get(),
                                      gfx::kNullAcceleratedWidget, overlay_size);
@@ -284,7 +284,7 @@
     gfx::SwapCompletionResult result) {
   switch (result.swap_result) {
     case gfx::SwapResult::SWAP_NAK_RECREATE_BUFFERS:
-      for (size_t i = 0; i < base::size(buffers_); ++i) {
+      for (size_t i = 0; i < std::size(buffers_); ++i) {
         buffers_[i] = std::make_unique<BufferWrapper>();
         if (!buffers_[i]->Initialize(gr_context_.get(), widget_,
                                      primary_plane_rect_.size()))
diff --git a/ui/ozone/demo/surfaceless_gl_renderer.cc b/ui/ozone/demo/surfaceless_gl_renderer.cc
index 4f033db..0c8db95 100644
--- a/ui/ozone/demo/surfaceless_gl_renderer.cc
+++ b/ui/ozone/demo/surfaceless_gl_renderer.cc
@@ -134,11 +134,11 @@
   // Need to make current when deleting the framebuffer resources allocated in
   // the buffers.
   context_->MakeCurrent(gl_surface_.get());
-  for (size_t i = 0; i < base::size(buffers_); ++i)
+  for (size_t i = 0; i < std::size(buffers_); ++i)
     buffers_[i].reset();
 
   for (size_t i = 0; i < kMaxLayers; ++i) {
-    for (size_t j = 0; j < base::size(overlay_buffers_[i]); ++j)
+    for (size_t j = 0; j < std::size(overlay_buffers_[i]); ++j)
       overlay_buffers_[i][j].reset();
   }
 }
@@ -164,7 +164,7 @@
   else
     primary_plane_rect_ = gfx::Rect(size_);
 
-  for (size_t i = 0; i < base::size(buffers_); ++i) {
+  for (size_t i = 0; i < std::size(buffers_); ++i) {
     buffers_[i] = std::make_unique<BufferWrapper>();
     if (!buffers_[i]->Initialize(widget_, primary_plane_rect_.size()))
       return false;
@@ -180,7 +180,7 @@
     const gfx::Size overlay_size =
         gfx::Size(size_.width() / 8, size_.height() / 8);
     for (size_t i = 0; i < overlay_cnt_; ++i) {
-      for (size_t j = 0; j < base::size(overlay_buffers_[i]); ++j) {
+      for (size_t j = 0; j < std::size(overlay_buffers_[i]); ++j) {
         overlay_buffers_[i][j] = std::make_unique<BufferWrapper>();
         overlay_buffers_[i][j]->Initialize(gfx::kNullAcceleratedWidget,
                                            overlay_size);
@@ -302,7 +302,7 @@
 
   switch (result.swap_result) {
     case gfx::SwapResult::SWAP_NAK_RECREATE_BUFFERS:
-      for (size_t i = 0; i < base::size(buffers_); ++i) {
+      for (size_t i = 0; i < std::size(buffers_); ++i) {
         buffers_[i] = std::make_unique<BufferWrapper>();
         if (!buffers_[i]->Initialize(widget_, primary_plane_rect_.size()))
           LOG(FATAL) << "Failed to recreate buffer";
diff --git a/ui/ozone/demo/vulkan_overlay_renderer.cc b/ui/ozone/demo/vulkan_overlay_renderer.cc
index 4a648468..e32de92 100644
--- a/ui/ozone/demo/vulkan_overlay_renderer.cc
+++ b/ui/ozone/demo/vulkan_overlay_renderer.cc
@@ -90,7 +90,7 @@
       /* .pipelineBindPoint = */ VK_PIPELINE_BIND_POINT_GRAPHICS,
       /* .inputAttachmentCount = */ 0,
       /* .pInputAttachments = */ nullptr,
-      /* .colorAttachmentCount = */ base::size(color_attachment_references),
+      /* .colorAttachmentCount = */ std::size(color_attachment_references),
       /* .pColorAttachments = */ color_attachment_references,
       /* .pResolveAttachments = */ nullptr,
       /* .pDepthStencilAttachment = */ nullptr,
@@ -102,9 +102,9 @@
       /* .sType = */ VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO,
       /* .pNext = */ nullptr,
       /* .flags = */ 0,
-      /* .attachmentCount = */ base::size(render_pass_attachments),
+      /* .attachmentCount = */ std::size(render_pass_attachments),
       /* .pAttachments = */ render_pass_attachments,
-      /* .subpassCount = */ base::size(render_pass_subpasses),
+      /* .subpassCount = */ std::size(render_pass_subpasses),
       /* .pSubpasses = */ render_pass_subpasses,
       /* .dependencyCount = */ 0,
       /* .pDependencies = */ nullptr,
@@ -173,9 +173,9 @@
 
   const Buffer& buffer = *buffers_[next_buffer_];
   next_buffer_++;
-  next_buffer_ %= base::size(buffers_);
+  next_buffer_ %= std::size(buffers_);
   ++in_use_buffers_;
-  DCHECK_LE(in_use_buffers_, base::size(buffers_));
+  DCHECK_LE(in_use_buffers_, std::size(buffers_));
 
   gpu::VulkanCommandBuffer& command_buffer = *buffer.command_buffer();
 
@@ -218,7 +218,7 @@
     VkFence fence) {
   VkResult result;
   VkFence fences[] = {fence};
-  result = vkResetFences(device_queue_->GetVulkanDevice(), base::size(fences),
+  result = vkResetFences(device_queue_->GetVulkanDevice(), std::size(fences),
                          fences);
   CHECK_EQ(result, VK_SUCCESS);
 
diff --git a/ui/ozone/demo/vulkan_renderer.cc b/ui/ozone/demo/vulkan_renderer.cc
index 8d2ea165..50b7b4ad 100644
--- a/ui/ozone/demo/vulkan_renderer.cc
+++ b/ui/ozone/demo/vulkan_renderer.cc
@@ -144,7 +144,7 @@
       /* .pipelineBindPoint = */ VK_PIPELINE_BIND_POINT_GRAPHICS,
       /* .inputAttachmentCount = */ 0,
       /* .pInputAttachments = */ nullptr,
-      /* .colorAttachmentCount = */ base::size(color_attachment_references),
+      /* .colorAttachmentCount = */ std::size(color_attachment_references),
       /* .pColorAttachments = */ color_attachment_references,
       /* .pResolveAttachments = */ nullptr,
       /* .pDepthStencilAttachment = */ nullptr,
@@ -156,9 +156,9 @@
       /* .sType = */ VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO,
       /* .pNext = */ nullptr,
       /* .flags = */ 0,
-      /* .attachmentCount = */ base::size(render_pass_attachments),
+      /* .attachmentCount = */ std::size(render_pass_attachments),
       /* .pAttachments = */ render_pass_attachments,
-      /* .subpassCount = */ base::size(render_pass_subpasses),
+      /* .subpassCount = */ std::size(render_pass_subpasses),
       /* .pSubpasses = */ render_pass_subpasses,
       /* .dependencyCount = */ 0,
       /* .pDependencies = */ nullptr,
diff --git a/ui/ozone/platform/drm/gpu/drm_gpu_util.cc b/ui/ozone/platform/drm/gpu/drm_gpu_util.cc
index b76943a..7620248 100644
--- a/ui/ozone/platform/drm/gpu/drm_gpu_util.cc
+++ b/ui/ozone/platform/drm/gpu/drm_gpu_util.cc
@@ -75,8 +75,8 @@
 
   ScopedDrmColorCtmPtr ctm(
       static_cast<drm_color_ctm*>(malloc(sizeof(drm_color_ctm))));
-  DCHECK_EQ(color_matrix.size(), base::size(ctm->matrix));
-  for (size_t i = 0; i < base::size(ctm->matrix); ++i) {
+  DCHECK_EQ(color_matrix.size(), std::size(ctm->matrix));
+  for (size_t i = 0; i < std::size(ctm->matrix); ++i) {
     if (color_matrix[i] < 0) {
       ctm->matrix[i] = static_cast<uint64_t>(-color_matrix[i] * (1ull << 32));
       ctm->matrix[i] |= static_cast<uint64_t>(1) << 63;
diff --git a/ui/ozone/platform/drm/gpu/hardware_display_controller.cc b/ui/ozone/platform/drm/gpu/hardware_display_controller.cc
index 2809e59..91b0861 100644
--- a/ui/ozone/platform/drm/gpu/hardware_display_controller.cc
+++ b/ui/ozone/platform/drm/gpu/hardware_display_controller.cc
@@ -517,7 +517,7 @@
   gfx::Size max_cursor_size = GetMaximumCursorSize(GetDrmDevice()->get_fd());
   SkImageInfo info = SkImageInfo::MakeN32Premul(max_cursor_size.width(),
                                                 max_cursor_size.height());
-  for (size_t i = 0; i < base::size(cursor_buffers_); ++i) {
+  for (size_t i = 0; i < std::size(cursor_buffers_); ++i) {
     cursor_buffers_[i] = std::make_unique<DrmDumbBuffer>(GetDrmDevice());
     // Don't register a framebuffer for cursors since they are special (they
     // aren't modesetting buffers and drivers may fail to register them due to
@@ -531,7 +531,7 @@
 
 DrmDumbBuffer* HardwareDisplayController::NextCursorBuffer() {
   ++cursor_frontbuffer_;
-  cursor_frontbuffer_ %= base::size(cursor_buffers_);
+  cursor_frontbuffer_ %= std::size(cursor_buffers_);
   return cursor_buffers_[cursor_frontbuffer_].get();
 }
 
diff --git a/ui/shell_dialogs/execute_select_file_win_unittest.cc b/ui/shell_dialogs/execute_select_file_win_unittest.cc
index 8ea24392..df5e8a8 100644
--- a/ui/shell_dialogs/execute_select_file_win_unittest.cc
+++ b/ui/shell_dialogs/execute_select_file_win_unittest.cc
@@ -6,7 +6,6 @@
 
 #include <stddef.h>
 
-#include "base/cxx17_backports.h"
 #include "base/strings/stringprintf.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/shell_dialogs/select_file_dialog.h"
@@ -42,7 +41,7 @@
       {L"sample.unknown", L"*.*", L"", L"sample.unknown"},
   };
 
-  for (size_t i = 0; i < base::size(test_cases); ++i) {
+  for (size_t i = 0; i < std::size(test_cases); ++i) {
     SCOPED_TRACE(base::StringPrintf("i=%zu", i));
 
     EXPECT_EQ(std::wstring(test_cases[i].expected_filename),
diff --git a/ui/shell_dialogs/select_file_dialog_mac_unittest.mm b/ui/shell_dialogs/select_file_dialog_mac_unittest.mm
index 68c67f14..b603040 100644
--- a/ui/shell_dialogs/select_file_dialog_mac_unittest.mm
+++ b/ui/shell_dialogs/select_file_dialog_mac_unittest.mm
@@ -5,7 +5,6 @@
 #import "ui/shell_dialogs/select_file_dialog_mac.h"
 
 #include "base/callback_forward.h"
-#include "base/cxx17_backports.h"
 #include "base/files/file_util.h"
 #import "base/mac/foundation_util.h"
 #include "base/mac/mac_util.h"
@@ -408,7 +407,7 @@
        PICK_FILES | MULTIPLE_SELECTION, "Open"},
   };
 
-  for (size_t i = 0; i < base::size(test_cases); i++) {
+  for (size_t i = 0; i < std::size(test_cases); i++) {
     SCOPED_TRACE(
         base::StringPrintf("i=%lu file_dialog_type=%d", i, test_cases[i].type));
     args.type = test_cases[i].type;
diff --git a/ui/shell_dialogs/select_file_dialog_unittest.cc b/ui/shell_dialogs/select_file_dialog_unittest.cc
index 285f40d..52ed758 100644
--- a/ui/shell_dialogs/select_file_dialog_unittest.cc
+++ b/ui/shell_dialogs/select_file_dialog_unittest.cc
@@ -2,11 +2,11 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "ui/shell_dialogs/select_file_dialog.h"
+
 #include <stddef.h>
 
-#include "base/cxx17_backports.h"
 #include "testing/gtest/include/gtest/gtest.h"
-#include "ui/shell_dialogs/select_file_dialog.h"
 
 TEST(ShellDialogs, ShortenFileNameIfNeeded) {
   struct ShortenFileNameTestCase {
@@ -101,7 +101,7 @@
                          "jklmnopqrstuvwxyz1234abcdefghijklmnopqrstuvwxyz1234ab"
                          "cdefghijklmnopqrstuvwxyz1234ab.abcdefghijkl")}};
 
-  for (size_t i = 0; i < base::size(test_cases); ++i) {
+  for (size_t i = 0; i < std::size(test_cases); ++i) {
     base::FilePath input =
         base::FilePath(test_cases[i].input).NormalizePathSeparators();
     base::FilePath output =
diff --git a/ui/shell_dialogs/select_file_dialog_win_unittest.cc b/ui/shell_dialogs/select_file_dialog_win_unittest.cc
index fe1f2395..2b225bb 100644
--- a/ui/shell_dialogs/select_file_dialog_win_unittest.cc
+++ b/ui/shell_dialogs/select_file_dialog_win_unittest.cc
@@ -2,13 +2,14 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "ui/shell_dialogs/select_file_dialog_win.h"
+
 #include <stddef.h>
 
 #include <memory>
 #include <string>
 #include <vector>
 
-#include "base/cxx17_backports.h"
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
 #include "base/files/scoped_temp_dir.h"
@@ -23,7 +24,6 @@
 #include "base/win/windows_version.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/base/l10n/l10n_util.h"
-#include "ui/shell_dialogs/select_file_dialog_win.h"
 #include "ui/shell_dialogs/select_file_dialog.h"
 #include "ui/shell_dialogs/select_file_policy.h"
 #include "ui/strings/grit/ui_strings.h"
@@ -38,7 +38,7 @@
 // Returns the title of |window|.
 std::wstring GetWindowTitle(HWND window) {
   wchar_t buffer[256];
-  UINT count = ::GetWindowText(window, buffer, base::size(buffer));
+  UINT count = ::GetWindowText(window, buffer, std::size(buffer));
   return std::wstring(buffer, count);
 }
 
@@ -123,7 +123,7 @@
 
   wchar_t buffer[256];
   UINT count =
-      ::GetDlgItemText(window, dialog_item_id, buffer, base::size(buffer));
+      ::GetDlgItemText(window, dialog_item_id, buffer, std::size(buffer));
   return std::wstring(buffer, count);
 }
 
@@ -226,7 +226,7 @@
           ui::SelectFileDialog::SELECT_OPEN_MULTI_FILE, kSelectFileDefaultTitle,
       }};
 
-  for (size_t i = 0; i < base::size(kTestCases); ++i) {
+  for (size_t i = 0; i < std::size(kTestCases); ++i) {
     SCOPED_TRACE(base::StringPrintf("i=%zu", i));
 
     const auto& test_case = kTestCases[i];
diff --git a/ui/views/bubble/bubble_border_unittest.cc b/ui/views/bubble/bubble_border_unittest.cc
index ccfd8f75..3cb60ad 100644
--- a/ui/views/bubble/bubble_border_unittest.cc
+++ b/ui/views/bubble/bubble_border_unittest.cc
@@ -2,15 +2,15 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "ui/views/bubble/bubble_border.h"
+
 #include <stddef.h>
 
 #include <memory>
 
-#include "base/cxx17_backports.h"
 #include "base/strings/stringprintf.h"
 #include "ui/gfx/canvas.h"
 #include "ui/gfx/geometry/rect.h"
-#include "ui/views/bubble/bubble_border.h"
 #include "ui/views/bubble/bubble_border_arrow_utils.h"
 #include "ui/views/test/views_test_base.h"
 
@@ -280,7 +280,7 @@
       {BubbleBorder::NONE, kMediumSize, kMediumNoArrow},
       {BubbleBorder::FLOAT, kMediumSize, kMediumNoArrow}};
 
-  for (size_t i = 0; i < base::size(cases); ++i) {
+  for (size_t i = 0; i < std::size(cases); ++i) {
     SCOPED_TRACE(base::StringPrintf("i=%d arrow=%d", static_cast<int>(i),
                                     cases[i].arrow));
 
@@ -363,7 +363,7 @@
          kAnchor.y() + (kAnchor.height() - kTotalSize.height()) / 2},
     };
 
-    for (size_t j = 0; j < base::size(cases); ++j) {
+    for (size_t j = 0; j < std::size(cases); ++j) {
       SCOPED_TRACE(base::StringPrintf("shadow=%d j=%d arrow=%d",
                                       static_cast<int>(shadow),
                                       static_cast<int>(j), cases[j].arrow));
diff --git a/ui/views/controls/button/label_button_unittest.cc b/ui/views/controls/button/label_button_unittest.cc
index fa31f79..774f3f5d 100644
--- a/ui/views/controls/button/label_button_unittest.cc
+++ b/ui/views/controls/button/label_button_unittest.cc
@@ -222,8 +222,8 @@
 
     bool preferred_size_is_sometimes_narrower_than_max = false;
 
-    for (size_t i = 0; i < base::size(text_cases); ++i) {
-      for (size_t j = 0; j < base::size(width_cases); ++j) {
+    for (size_t i = 0; i < std::size(text_cases); ++i) {
+      for (size_t j = 0; j < std::size(width_cases); ++j) {
         button_->SetText(ASCIIToUTF16(text_cases[i]));
         button_->SetMaxSize(gfx::Size(width_cases[j], 30));
 
diff --git a/ui/views/controls/textfield/textfield_model_unittest.cc b/ui/views/controls/textfield/textfield_model_unittest.cc
index 68a9726..b87b93f5 100644
--- a/ui/views/controls/textfield/textfield_model_unittest.cc
+++ b/ui/views/controls/textfield/textfield_model_unittest.cc
@@ -11,7 +11,6 @@
 #include <vector>
 
 #include "base/auto_reset.h"
-#include "base/cxx17_backports.h"
 #include "build/build_config.h"
 #include "build/chromeos_buildflags.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -2443,9 +2442,9 @@
 
   TextfieldModel model(nullptr);
 
-  EXPECT_EQ(all_tests.size(), base::size(test_strings));
+  EXPECT_EQ(all_tests.size(), std::size(test_strings));
 
-  for (size_t i = 0; i < base::size(test_strings); i++) {
+  for (size_t i = 0; i < std::size(test_strings); i++) {
     for (size_t j = 0; j < all_tests[i].size(); j++) {
       SCOPED_TRACE(testing::Message() << "Testing case " << i << ", " << j
                                       << " with string " << test_strings[i]);
diff --git a/ui/views/controls/textfield/textfield_unittest.cc b/ui/views/controls/textfield/textfield_unittest.cc
index 78e5aee4..f9f48d00 100644
--- a/ui/views/controls/textfield/textfield_unittest.cc
+++ b/ui/views/controls/textfield/textfield_unittest.cc
@@ -12,7 +12,6 @@
 #include <vector>
 
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "base/format_macros.h"
 #include "base/i18n/rtl.h"
 #include "base/memory/raw_ptr.h"
@@ -1365,7 +1364,7 @@
   InitTextfield();
   // [Ctrl] ([Alt] on Mac) + [Delete]/[Backspace] should delete the active
   // selection, regardless of [Shift].
-  for (size_t i = 0; i < base::size(cases); ++i) {
+  for (size_t i = 0; i < std::size(cases); ++i) {
     SCOPED_TRACE(base::StringPrintf("Testing cases[%" PRIuS "]", i));
     textfield_->SetText(u"one two three");
     textfield_->SetSelectedRange(gfx::Range(2, 6));
@@ -1392,7 +1391,7 @@
   InitTextfield();
   // [Ctrl] ([Alt] on Mac) + [Delete]/[Backspace] should delete the active
   // selection, regardless of [Shift].
-  for (size_t i = 0; i < base::size(cases); ++i) {
+  for (size_t i = 0; i < std::size(cases); ++i) {
     SCOPED_TRACE(base::StringPrintf("Testing cases[%" PRIuS "]", i));
     textfield_->SetText(u"one two three");
     // Select: o[ne] [two] th[re]e
@@ -1420,7 +1419,7 @@
   };
 
   InitTextfield();
-  for (size_t i = 0; i < base::size(cases); ++i) {
+  for (size_t i = 0; i < std::size(cases); ++i) {
     SCOPED_TRACE(base::StringPrintf("Testing cases[%" PRIuS "]", i));
     textfield_->SetText(u"one two three");
     textfield_->SetSelectedRange(gfx::Range(4));
@@ -3118,7 +3117,7 @@
       // U+0020 SPACE
       0x0020,
   };
-  const size_t kUtf16CharsCount = base::size(kUtf16Chars);
+  const size_t kUtf16CharsCount = std::size(kUtf16Chars);
 
   ui::CompositionText composition;
   composition.text.assign(kUtf16Chars, kUtf16Chars + kUtf16CharsCount);
diff --git a/ui/views/examples/box_layout_example.cc b/ui/views/examples/box_layout_example.cc
index 7ce5757..b96f4a1 100644
--- a/ui/views/examples/box_layout_example.cc
+++ b/ui/views/examples/box_layout_example.cc
@@ -56,20 +56,20 @@
 void BoxLayoutExample::CreateAdditionalControls() {
   constexpr const char* kOrientationValues[2] = {"Horizontal", "Vertical"};
   orientation_ = CreateAndAddCombobox(
-      u"Orientation", kOrientationValues, base::size(kOrientationValues),
+      u"Orientation", kOrientationValues, std::size(kOrientationValues),
       base::BindRepeating(&LayoutExampleBase::RefreshLayoutPanel,
                           base::Unretained(this), true));
 
   constexpr const char* kMainAxisValues[3] = {"Start", "Center", "End"};
   main_axis_alignment_ = CreateAndAddCombobox(
-      u"Main axis", kMainAxisValues, base::size(kMainAxisValues),
+      u"Main axis", kMainAxisValues, std::size(kMainAxisValues),
       base::BindRepeating(&BoxLayoutExample::MainAxisAlignmentChanged,
                           base::Unretained(this)));
 
   constexpr const char* kCrossAxisValues[4] = {"Stretch", "Start", "Center",
                                                "End"};
   cross_axis_alignment_ = CreateAndAddCombobox(
-      u"Cross axis", kCrossAxisValues, base::size(kCrossAxisValues),
+      u"Cross axis", kCrossAxisValues, std::size(kCrossAxisValues),
       base::BindRepeating(&BoxLayoutExample::CrossAxisAlignmentChanged,
                           base::Unretained(this)));
 
diff --git a/ui/views/examples/bubble_example.cc b/ui/views/examples/bubble_example.cc
index 09cb92e..d2b80d2e2 100644
--- a/ui/views/examples/bubble_example.cc
+++ b/ui/views/examples/bubble_example.cc
@@ -6,7 +6,6 @@
 
 #include <memory>
 
-#include "base/cxx17_backports.h"
 #include "base/strings/utf_string_conversions.h"
 #include "ui/gfx/geometry/insets.h"
 #include "ui/views/bubble/bubble_dialog_delegate_view.h"
@@ -120,7 +119,7 @@
                                bool persistent,
                                const ui::Event& event) {
   static int arrow_index = 0, color_index = 0;
-  static const int count = base::size(arrows);
+  static const int count = std::size(arrows);
   arrow_index = (arrow_index + count + (event.IsShiftDown() ? -1 : 1)) % count;
   BubbleBorder::Arrow arrow = arrows[arrow_index];
   if (event.IsControlDown())
@@ -130,7 +129,7 @@
 
   // |bubble| will be destroyed by its widget when the widget is destroyed.
   ExampleBubble* bubble = new ExampleBubble(*button, arrow);
-  bubble->set_color(colors[(color_index++) % base::size(colors)]);
+  bubble->set_color(colors[(color_index++) % std::size(colors)]);
   bubble->set_shadow(shadow);
   if (persistent)
     bubble->set_close_on_deactivate(false);
diff --git a/ui/views/examples/flex_layout_example.cc b/ui/views/examples/flex_layout_example.cc
index 14171fb4..9eaaf1b2 100644
--- a/ui/views/examples/flex_layout_example.cc
+++ b/ui/views/examples/flex_layout_example.cc
@@ -44,20 +44,20 @@
 void FlexLayoutExample::CreateAdditionalControls() {
   constexpr const char* kOrientationValues[2] = {"Horizontal", "Vertical"};
   orientation_ = CreateAndAddCombobox(
-      u"Orientation", kOrientationValues, base::size(kOrientationValues),
+      u"Orientation", kOrientationValues, std::size(kOrientationValues),
       base::BindRepeating(&FlexLayoutExample::OrientationChanged,
                           base::Unretained(this)));
 
   constexpr const char* kMainAxisValues[3] = {"Start", "Center", "End"};
   main_axis_alignment_ = CreateAndAddCombobox(
-      u"Main axis", kMainAxisValues, base::size(kMainAxisValues),
+      u"Main axis", kMainAxisValues, std::size(kMainAxisValues),
       base::BindRepeating(&FlexLayoutExample::MainAxisAlignmentChanged,
                           base::Unretained(this)));
 
   constexpr const char* kCrossAxisValues[4] = {"Stretch", "Start", "Center",
                                                "End"};
   cross_axis_alignment_ = CreateAndAddCombobox(
-      u"Cross axis", kCrossAxisValues, base::size(kCrossAxisValues),
+      u"Cross axis", kCrossAxisValues, std::size(kCrossAxisValues),
       base::BindRepeating(&FlexLayoutExample::CrossAxisAlignmentChanged,
                           base::Unretained(this)));
 
diff --git a/ui/views/examples/label_example.cc b/ui/views/examples/label_example.cc
index 41f97d30..2ecdba57 100644
--- a/ui/views/examples/label_example.cc
+++ b/ui/views/examples/label_example.cc
@@ -7,7 +7,6 @@
 #include <memory>
 #include <utility>
 
-#include "base/cxx17_backports.h"
 #include "base/memory/ptr_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "ui/base/l10n/l10n_util.h"
@@ -177,11 +176,11 @@
   textfield_->SetAssociatedLabel(content_label);
 
   alignment_ =
-      AddCombobox(table, u"Alignment: ", kAlignments, base::size(kAlignments),
+      AddCombobox(table, u"Alignment: ", kAlignments, std::size(kAlignments),
                   &LabelExample::AlignmentChanged);
   elide_behavior_ = AddCombobox(
       table, u"Elide Behavior: ", ExamplePreferredSizeLabel::kElideBehaviors,
-      base::size(ExamplePreferredSizeLabel::kElideBehaviors),
+      std::size(ExamplePreferredSizeLabel::kElideBehaviors),
       &LabelExample::ElidingChanged);
 
   auto* checkboxes =
diff --git a/ui/views/examples/text_example.cc b/ui/views/examples/text_example.cc
index 1b5f1d10..807c4247 100644
--- a/ui/views/examples/text_example.cc
+++ b/ui/views/examples/text_example.cc
@@ -7,7 +7,6 @@
 #include <memory>
 #include <utility>
 
-#include "base/cxx17_backports.h"
 #include "base/strings/utf_string_conversions.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/color/color_id.h"
@@ -161,12 +160,12 @@
       "Right",
   };
   h_align_cb_ = AddCombobox(table_container, u"H-Align", kHorizontalAligments,
-                            base::size(kHorizontalAligments),
+                            std::size(kHorizontalAligments),
                             &TextExample::AlignComboboxChanged);
 
   constexpr const char* kElideBehaviors[] = {"Elide", "No Elide"};
   eliding_cb_ = AddCombobox(table_container, u"Eliding", kElideBehaviors,
-                            base::size(kElideBehaviors),
+                            std::size(kElideBehaviors),
                             &TextExample::ElideComboboxChanged);
 
   constexpr const char* kPrefixOptions[] = {
@@ -175,7 +174,7 @@
       "Hide",
   };
   prefix_cb_ = AddCombobox(table_container, u"Prefix", kPrefixOptions,
-                           base::size(kPrefixOptions),
+                           std::size(kPrefixOptions),
                            &TextExample::PrefixComboboxChanged);
 
   constexpr const char* kTextExamples[] = {
@@ -186,14 +185,14 @@
   };
   text_cb_ =
       AddCombobox(table_container, u"Example Text", kTextExamples,
-                  base::size(kTextExamples), &TextExample::TextComboboxChanged);
+                  std::size(kTextExamples), &TextExample::TextComboboxChanged);
 
   constexpr const char* kWeightLabels[] = {
       "Thin",     "Extra Light", "Light",      "Normal", "Medium",
       "Semibold", "Bold",        "Extra Bold", "Black",
   };
   weight_cb_ = AddCombobox(table_container, u"Font Weight", kWeightLabels,
-                           base::size(kWeightLabels),
+                           std::size(kWeightLabels),
                            &TextExample::WeightComboboxChanged);
   weight_cb_->SelectValue(u"Normal");
 
diff --git a/ui/views/focus/focus_traversal_unittest.cc b/ui/views/focus/focus_traversal_unittest.cc
index 764c433..0e16dfc2 100644
--- a/ui/views/focus/focus_traversal_unittest.cc
+++ b/ui/views/focus/focus_traversal_unittest.cc
@@ -4,7 +4,6 @@
 
 #include <stddef.h>
 
-#include "base/cxx17_backports.h"
 #include "base/memory/raw_ptr.h"
 #include "base/run_loop.h"
 #include "base/strings/string_number_conversions.h"
@@ -456,10 +455,10 @@
                              CAMPING_LINK_ID,    BRICE_DE_NICE_LINK_ID,
                              TAXI_LINK_ID,       ASTERIX_LINK_ID};
 
-  DCHECK(base::size(kTitles) == base::size(kIDs));
+  DCHECK(std::size(kTitles) == std::size(kIDs));
 
   y = 5;
-  for (size_t i = 0; i < base::size(kTitles); ++i) {
+  for (size_t i = 0; i < std::size(kTitles); ++i) {
     auto link = std::make_unique<Link>(ASCIIToUTF16(kTitles[i]));
     link->SetHorizontalAlignment(gfx::ALIGN_LEFT);
     link->SetID(kIDs[i]);
diff --git a/ui/views/test/event_generator_delegate_mac.mm b/ui/views/test/event_generator_delegate_mac.mm
index 1d7e6e39..21b4e51 100644
--- a/ui/views/test/event_generator_delegate_mac.mm
+++ b/ui/views/test/event_generator_delegate_mac.mm
@@ -5,7 +5,6 @@
 #import <Cocoa/Cocoa.h>
 #include <stddef.h>
 
-#include "base/cxx17_backports.h"
 #import "base/mac/scoped_nsobject.h"
 #import "base/mac/scoped_objc_class_swizzler.h"
 #include "base/memory/singleton.h"
@@ -370,7 +369,7 @@
       {@"Paste", @selector(paste:), @"v"},
       {@"Select All", @selector(selectAll:), @"a"},
   };
-  for (size_t i = 0; i < base::size(fake_menu_item); ++i) {
+  for (size_t i = 0; i < std::size(fake_menu_item); ++i) {
     [fake_menu_ insertItemWithTitle:fake_menu_item[i].title
                              action:fake_menu_item[i].action
                       keyEquivalent:fake_menu_item[i].key_equivalent