diff --git a/.gn b/.gn
index d87b72e..4c82403 100644
--- a/.gn
+++ b/.gn
@@ -63,6 +63,7 @@
 # their includes checked for proper dependencies when you run either
 # "gn check" or "gn gen --check".
 no_check_targets = [
+  "//chrome/test:browser_tests",
   "//chrome/test:browser_tests_runner",
   "//chrome/test:interactive_ui_tests",
   "//chrome/test:unit_tests",
diff --git a/DEPS b/DEPS
index 6668c0c9..1ecb475a 100644
--- a/DEPS
+++ b/DEPS
@@ -177,7 +177,7 @@
   # luci-go CIPD package version.
   # Make sure the revision is uploaded by infra-packagers builder.
   # https://ci.chromium.org/p/infra-internal/g/infra-packagers/console
-  'luci_go': 'git_revision:03ef3f6285cef3766c18a5c7b8cc8c0069eaa2ed',
+  'luci_go': 'git_revision:03ab00ce4982877f2d4a0b0db48cd355e5ca65ab',
 
   # This can be overridden, e.g. with custom_vars, to build clang from HEAD
   # instead of downloading the prebuilt pinned revision.
@@ -209,11 +209,11 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling Skia
   # and whatever else without interference from each other.
-  'skia_revision': '30fd35da015e0b7964c3e60fada040fc22cf71c8',
+  'skia_revision': '7f17d36c2c7b8ba7bdb6eade58fb114f5b2fffe6',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling V8
   # and whatever else without interference from each other.
-  'v8_revision': 'e5e9fe700307fd42bc7b29ae13166cec46c796c7',
+  'v8_revision': '329091a1ea44e643cc946d0f3c96e05072753950',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling swarming_client
   # and whatever else without interference from each other.
@@ -221,7 +221,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling ANGLE
   # and whatever else without interference from each other.
-  'angle_revision': '91e693afce9b4671fc46d562847f674e71074a01',
+  'angle_revision': '75b9ac3084a94c85d465da78735a4f9b18f430b6',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling SwiftShader
   # and whatever else without interference from each other.
@@ -260,7 +260,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling freetype
   # and whatever else without interference from each other.
-  'freetype_revision': '5f485339be5b2dab5dc0a7ee6c80c6ea1bd407c8',
+  'freetype_revision': '0d1c306e51aeda3e51bc54fcaa1e41f34c387a4b',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling freetype
   # and whatever else without interference from each other.
@@ -280,7 +280,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling catapult
   # and whatever else without interference from each other.
-  'catapult_revision': '53102de187a48ac2cfc241fef54dcbc29c453a8e',
+  'catapult_revision': '9c5e41e7872db9471693953b10c99c4a0b241141',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling libFuzzer
   # and whatever else without interference from each other.
@@ -288,7 +288,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling devtools-frontend
   # and whatever else without interference from each other.
-  'devtools_frontend_revision': '66c6dc0ca6f4063ad44c1121cf8331dd605fa2b9',
+  'devtools_frontend_revision': 'c3472f4064f8b4977dd0bdea81738cfbc0782d3a',
   # 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.
@@ -340,7 +340,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling libexpat
   # and whatever else without interference from each other.
-  'libexpat_revision': 'e976867fb57a0cd87e3b0fe05d59e0ed63c6febb',
+  'libexpat_revision': 'a28238bdeebc087071777001245df1876a11f5ee',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling wuffs
   # and whatever else without interference from each other.
@@ -643,7 +643,7 @@
       'packages': [
         {
           'package': 'chromium/rts/model/linux-amd64',
-          'version': 'WeiEp0njpTiO-7-MBnxQLtPCtQ5Bt_WMCYJhWXLz5YwC',
+          'version': 'cn05po7z5Zn3ieNZwLKqq9mPHjBONsRq5FpMI9tALRUC',
         },
       ],
       'dep_type': 'cipd',
@@ -654,7 +654,7 @@
       'packages': [
         {
           'package': 'chromium/rts/model/mac-amd64',
-          'version': 'UOQKgrp8FuQYuWnLupsppa9l_L_D0pmgUQDJb8lIxmQC',
+          'version': 'umap3PN-vBDPzpLwrRJZbREmNnK47U-F9wp-m8NoYr0C',
         },
       ],
       'dep_type': 'cipd',
@@ -665,7 +665,7 @@
       'packages': [
         {
           'package': 'chromium/rts/model/windows-amd64',
-          'version': 'RPtJGpZ98nibL9TOY32pHPKGru3rWd6SrRf70cv0zzUC',
+          'version': '9cIUNcnfDNZQXft_h7dHvKPvKkVamQH7btEDwseSGwsC',
         },
       ],
       'dep_type': 'cipd',
@@ -946,7 +946,7 @@
   # Tools used when building Chrome for Chrome OS. This affects both the Simple
   # Chrome workflow, as well as the chromeos-chrome ebuild.
   'src/third_party/chromite': {
-      'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + 'e852b077f0b67202a8b2fbd492bd5eb0e7a63f85',
+      'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + 'af3d4787a8604b0c583c3c5515c8b6de1b8d66fa',
       'condition': 'checkout_chromeos',
   },
 
@@ -1349,7 +1349,7 @@
   },
 
   'src/third_party/perfetto':
-    Var('android_git') + '/platform/external/perfetto.git' + '@' + 'e2a0b3126ecbd306d8742dc073185c0e942e83a5',
+    Var('android_git') + '/platform/external/perfetto.git' + '@' + '70fc3006adbce543ead4e3c85cadd6bb1e65d044',
 
   'src/third_party/perl': {
       'url': Var('chromium_git') + '/chromium/deps/perl.git' + '@' + '6f3e5028eb65d0b4c5fdd792106ac4c84eee1eb3',
@@ -1574,7 +1574,7 @@
     Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + '0c95613c1111e1e8e7f5aba23343ff552d26352b',
 
   'src/third_party/webrtc':
-    Var('webrtc_git') + '/src.git' + '@' + '096ad02c02b4bc6c046282b8793ef84d041dd0d8',
+    Var('webrtc_git') + '/src.git' + '@' + '2ab4764b9e305b7427b97e1c4a30d73975fc19e7',
 
   'src/third_party/libgifcodec':
      Var('skia_git') + '/libgifcodec' + '@'+  Var('libgifcodec_revision'),
@@ -1635,7 +1635,7 @@
     Var('chromium_git') + '/v8/v8.git' + '@' +  Var('v8_revision'),
 
   'src-internal': {
-    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@043f655383f8ed031d04cb403beda85083d0f786',
+    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@f91bc3e41f7edb924fce097bf81cc34c5e14c94b',
     'condition': 'checkout_src_internal',
   },
 
@@ -1654,7 +1654,7 @@
     'packages': [
       {
         'package': 'chromeos_internal/apps/help_app/app',
-        'version': 'fsRSEnsDAIodMRoduc4l9K20FcKWkGslMX-MZxTvoNgC',
+        'version': '5DqEAt2sUuCsgNCCKZJptjiD7q3wMT02i-SkhH7wRMAC',
       },
     ],
     'condition': 'checkout_chromeos and checkout_src_internal',
@@ -1665,7 +1665,7 @@
     'packages': [
       {
         'package': 'chromeos_internal/apps/media_app/app',
-        'version': 'M7MdY7Bk33d3EQxKfreqoDuMksdj2YKF-CE2rXpJKFgC',
+        'version': '5tPPpduxsGjYyTjvsRWiZ4sHOITUcEuYY4zCF0OlADwC',
       },
     ],
     'condition': 'checkout_chromeos and checkout_src_internal',
diff --git a/WATCHLISTS b/WATCHLISTS
index b5648693..8e354dc 100644
--- a/WATCHLISTS
+++ b/WATCHLISTS
@@ -2008,8 +2008,10 @@
       'filepath': 'chrome/browser/content_settings/'\
                   '|chrome/browser/ui/views/website_settings/'\
                   '|chrome/browser/ui/website_settings/'\
+                  '|chrome/browser/privacy_sandbox/privacy_sandbox_settings'\
                   '|chrome/common/content_settings'\
-                  '|components/content_settings/',
+                  '|components/content_settings/'\
+                  '|services/network/cookie_settings',
     },
     'windows_sandboxing': {
       'filepath': 'sandbox/win/',
diff --git a/ash/BUILD.gn b/ash/BUILD.gn
index 9a3be9b..63279434 100644
--- a/ash/BUILD.gn
+++ b/ash/BUILD.gn
@@ -25,7 +25,6 @@
   friend = [
     ":*",
     "//ash/app_list:*",
-    "//chrome/test:browser_tests",
     "//components/exo:*",
     "//components/exo/wayland:*",
   ]
@@ -631,6 +630,7 @@
     "login/ui/login_big_user_view.h",
     "login/ui/login_button.cc",
     "login/ui/login_button.h",
+    "login/ui/login_constants.h",
     "login/ui/login_data_dispatcher.cc",
     "login/ui/login_data_dispatcher.h",
     "login/ui/login_detachable_base_model.cc",
@@ -2628,7 +2628,6 @@
     "//ash/app_list:*",
     "//ash/shortcut_viewer:*",
     "//chrome/test:accessibility_live_site_tests",
-    "//chrome/test:browser_tests",
     "//chrome/test:captured_sites_interactive_tests",
     "//chrome/test:test_support",
     "//chrome/test:test_support_ui",
diff --git a/ash/app_list/app_list_bubble_presenter_unittest.cc b/ash/app_list/app_list_bubble_presenter_unittest.cc
index 928c2f9..7693b011 100644
--- a/ash/app_list/app_list_bubble_presenter_unittest.cc
+++ b/ash/app_list/app_list_bubble_presenter_unittest.cc
@@ -37,13 +37,12 @@
   return widgets.size();
 }
 
-// TODO(jamescook): Rename to AppListBubbleTest.
-class AppListBubbleTest : public AshTestBase {
+class AppListBubblePresenterTest : public AshTestBase {
  public:
-  AppListBubbleTest() {
+  AppListBubblePresenterTest() {
     scoped_features_.InitAndEnableFeature(features::kAppListBubble);
   }
-  ~AppListBubbleTest() override = default;
+  ~AppListBubblePresenterTest() override = default;
 
   // testing::Test:
   void SetUp() override {
@@ -62,14 +61,14 @@
   base::test::ScopedFeatureList scoped_features_;
 };
 
-TEST_F(AppListBubbleTest, ShowOpensOneWidgetInAppListContainer) {
+TEST_F(AppListBubblePresenterTest, ShowOpensOneWidgetInAppListContainer) {
   AppListBubblePresenter* presenter = GetBubblePresenter();
   presenter->Show(GetPrimaryDisplay().id());
 
   EXPECT_EQ(1u, NumberOfWidgetsInAppListContainer());
 }
 
-TEST_F(AppListBubbleTest, DismissClosesWidget) {
+TEST_F(AppListBubblePresenterTest, DismissClosesWidget) {
   AppListBubblePresenter* presenter = GetBubblePresenter();
   presenter->Show(GetPrimaryDisplay().id());
 
@@ -80,7 +79,7 @@
   EXPECT_EQ(0u, NumberOfWidgetsInAppListContainer());
 }
 
-TEST_F(AppListBubbleTest, DismissWhenNotShowingDoesNotCrash) {
+TEST_F(AppListBubblePresenterTest, DismissWhenNotShowingDoesNotCrash) {
   AppListBubblePresenter* presenter = GetBubblePresenter();
   EXPECT_FALSE(presenter->IsShowing());
 
@@ -88,14 +87,14 @@
   // No crash.
 }
 
-TEST_F(AppListBubbleTest, ToggleOpensOneWidgetInAppListContainer) {
+TEST_F(AppListBubblePresenterTest, ToggleOpensOneWidgetInAppListContainer) {
   AppListBubblePresenter* presenter = GetBubblePresenter();
   presenter->Toggle(GetPrimaryDisplay().id());
 
   EXPECT_EQ(1u, NumberOfWidgetsInAppListContainer());
 }
 
-TEST_F(AppListBubbleTest, ToggleClosesWidgetInAppListContainer) {
+TEST_F(AppListBubblePresenterTest, ToggleClosesWidgetInAppListContainer) {
   AppListBubblePresenter* presenter = GetBubblePresenter();
   presenter->Toggle(GetPrimaryDisplay().id());
 
@@ -106,20 +105,20 @@
   EXPECT_EQ(0u, NumberOfWidgetsInAppListContainer());
 }
 
-TEST_F(AppListBubbleTest, BubbleIsNotShowingByDefault) {
+TEST_F(AppListBubblePresenterTest, BubbleIsNotShowingByDefault) {
   AppListBubblePresenter* presenter = GetBubblePresenter();
 
   EXPECT_FALSE(presenter->IsShowing());
 }
 
-TEST_F(AppListBubbleTest, BubbleIsShowingAfterShow) {
+TEST_F(AppListBubblePresenterTest, BubbleIsShowingAfterShow) {
   AppListBubblePresenter* presenter = GetBubblePresenter();
   presenter->Show(GetPrimaryDisplay().id());
 
   EXPECT_TRUE(presenter->IsShowing());
 }
 
-TEST_F(AppListBubbleTest, BubbleIsNotShowingAfterDismiss) {
+TEST_F(AppListBubblePresenterTest, BubbleIsNotShowingAfterDismiss) {
   AppListBubblePresenter* presenter = GetBubblePresenter();
   presenter->Show(GetPrimaryDisplay().id());
   presenter->Dismiss();
@@ -127,7 +126,7 @@
   EXPECT_FALSE(presenter->IsShowing());
 }
 
-TEST_F(AppListBubbleTest, DoesNotCrashWhenNativeWidgetDestroyed) {
+TEST_F(AppListBubblePresenterTest, DoesNotCrashWhenNativeWidgetDestroyed) {
   AppListBubblePresenter* presenter = GetBubblePresenter();
   presenter->Show(GetPrimaryDisplay().id());
 
@@ -144,7 +143,7 @@
   // No crash.
 }
 
-TEST_F(AppListBubbleTest, ClickInTopLeftOfScreenClosesBubble) {
+TEST_F(AppListBubblePresenterTest, ClickInTopLeftOfScreenClosesBubble) {
   AppListBubblePresenter* presenter = GetBubblePresenter();
   presenter->Show(GetPrimaryDisplay().id());
 
@@ -160,7 +159,7 @@
 
 // Verifies that the launcher does not reopen when it's closed by a click on the
 // home button.
-TEST_F(AppListBubbleTest, ClickOnHomeButtonClosesBubble) {
+TEST_F(AppListBubblePresenterTest, ClickOnHomeButtonClosesBubble) {
   AppListBubblePresenter* presenter = GetBubblePresenter();
   presenter->Show(GetPrimaryDisplay().id());
 
diff --git a/ash/app_list/app_list_controller_impl.cc b/ash/app_list/app_list_controller_impl.cc
index 3d70598..57e5041 100644
--- a/ash/app_list/app_list_controller_impl.cc
+++ b/ash/app_list/app_list_controller_impl.cc
@@ -568,7 +568,7 @@
   DCHECK(!features::IsAppListBubbleEnabled() ||
          !bubble_presenter_->IsShowing());
   presenter_.Show(AppListViewState::kPeeking, GetDisplayIdToShowAppListOn(),
-                  base::TimeTicks());
+                  base::TimeTicks(), /*show_source=*/absl::nullopt);
 }
 
 aura::Window* AppListControllerImpl::GetWindow() {
@@ -713,7 +713,8 @@
     bubble_presenter_->Show(display_id);
     return;
   }
-  presenter_.Show(AppListViewState::kPeeking, display_id, event_time_stamp);
+  presenter_.Show(AppListViewState::kPeeking, display_id, event_time_stamp,
+                  show_source);
 }
 
 void AppListControllerImpl::UpdateYPositionAndOpacity(
diff --git a/ash/app_list/app_list_controller_impl_unittest.cc b/ash/app_list/app_list_controller_impl_unittest.cc
index 81e3cc3..e1060ce 100644
--- a/ash/app_list/app_list_controller_impl_unittest.cc
+++ b/ash/app_list/app_list_controller_impl_unittest.cc
@@ -101,7 +101,7 @@
 void ShowAppListNow(AppListViewState state) {
   Shell::Get()->app_list_controller()->presenter()->Show(
       state, display::Screen::GetScreen()->GetPrimaryDisplay().id(),
-      base::TimeTicks::Now());
+      base::TimeTicks::Now(), /*show_source*/ absl::nullopt);
 }
 
 void DismissAppListNow() {
diff --git a/ash/app_list/app_list_presenter_impl.cc b/ash/app_list/app_list_presenter_impl.cc
index ca97ab6..0ae6b31 100644
--- a/ash/app_list/app_list_presenter_impl.cc
+++ b/ash/app_list/app_list_presenter_impl.cc
@@ -150,7 +150,8 @@
 
 void AppListPresenterImpl::Show(AppListViewState preferred_state,
                                 int64_t display_id,
-                                base::TimeTicks event_time_stamp) {
+                                base::TimeTicks event_time_stamp,
+                                absl::optional<AppListShowSource> show_source) {
   if (is_target_visibility_show_) {
     // Launcher is always visible on the internal display when home launcher is
     // enabled in tablet mode.
@@ -196,6 +197,17 @@
       shelf->shelf_widget()->GetDragAndDropHostForAppList());
   view_->SetShelfHasRoundedCorners(
       IsShelfBackgroundTypeWithRoundedCorners(shelf->GetBackgroundType()));
+  std::unique_ptr<AppListView::ScopedAccessibilityAnnouncementLock>
+      scoped_accessibility_lock;
+
+  // App list view state accessibility alerts should be suppressed when the app
+  // list view is shown by the assistant. The assistant UI should handle its
+  // own accessibility notifications.
+  if (show_source && *show_source == kAssistantEntryPoint) {
+    scoped_accessibility_lock =
+        std::make_unique<AppListView::ScopedAccessibilityAnnouncementLock>(
+            view_);
+  }
   view_->Show(preferred_state, IsSideShelf(shelf));
 
   SnapAppListBoundsToDisplayEdge();
@@ -288,7 +300,7 @@
   }
   Show(request_fullscreen ? AppListViewState::kFullscreenAllApps
                           : AppListViewState::kPeeking,
-       display_id, event_time_stamp);
+       display_id, event_time_stamp, show_source);
   return SHELF_ACTION_APP_LIST_SHOWN;
 }
 
diff --git a/ash/app_list/app_list_presenter_impl.h b/ash/app_list/app_list_presenter_impl.h
index 20fb5be..489bc9a0 100644
--- a/ash/app_list/app_list_presenter_impl.h
+++ b/ash/app_list/app_list_presenter_impl.h
@@ -80,7 +80,8 @@
   // AppListShowSources: kSearchKey, kShelfButton, or kSwipeFromShelf.
   void Show(AppListViewState preferred_state,
             int64_t display_id,
-            base::TimeTicks event_time_stamp);
+            base::TimeTicks event_time_stamp,
+            absl::optional<AppListShowSource> show_source);
 
   // Hide the open app list window. This may leave the view open but hidden.
   // If |event_time_stamp| is not 0, it means |Dismiss()| was triggered by
diff --git a/ash/app_list/app_list_presenter_impl_unittest.cc b/ash/app_list/app_list_presenter_impl_unittest.cc
index dd12a953..9dab623 100644
--- a/ash/app_list/app_list_presenter_impl_unittest.cc
+++ b/ash/app_list/app_list_presenter_impl_unittest.cc
@@ -43,7 +43,7 @@
   // Shows the app list on the primary display.
   void ShowAppList() {
     presenter()->Show(AppListViewState::kPeeking, GetPrimaryDisplay().id(),
-                      base::TimeTicks());
+                      base::TimeTicks(), /*show_source=*/absl::nullopt);
   }
 
   // Shows the Assistant UI.
diff --git a/ash/app_list/views/app_list_view.h b/ash/app_list/views/app_list_view.h
index 49f528f..ec7e391 100644
--- a/ash/app_list/views/app_list_view.h
+++ b/ash/app_list/views/app_list_view.h
@@ -80,6 +80,21 @@
     DISALLOW_COPY_AND_ASSIGN(TestApi);
   };
 
+  class ASH_EXPORT ScopedAccessibilityAnnouncementLock {
+   public:
+    explicit ScopedAccessibilityAnnouncementLock(AppListView* view)
+        : view_(view) {
+      ++view_->accessibility_event_disablers_;
+    }
+
+    ~ScopedAccessibilityAnnouncementLock() {
+      --view_->accessibility_event_disablers_;
+    }
+
+   private:
+    AppListView* const view_;
+  };
+
   // Number of the size of shelf. Used to determine the opacity of items in the
   // app list during dragging.
   static constexpr float kNumOfShelfSize = 2.0;
@@ -524,6 +539,10 @@
   AppListModel* const model_;        // Not Owned.
   SearchModel* const search_model_;  // Not Owned.
 
+  // Keeps track of the number of locks that prevent the app list view
+  // from creating app list transition accessibility events. This is used to
+  // prevent A11Y announcements when showing the assistant UI.
+  int accessibility_event_disablers_ = 0;
   AppListMainView* app_list_main_view_ = nullptr;
   gfx::NativeView parent_window_ = nullptr;
 
diff --git a/ash/login/ui/access_code_input.cc b/ash/login/ui/access_code_input.cc
index 3a363562..1d8b7ee 100644
--- a/ash/login/ui/access_code_input.cc
+++ b/ash/login/ui/access_code_input.cc
@@ -6,7 +6,6 @@
 
 #include <string>
 
-#include "ash/public/cpp/login_constants.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/style/ash_color_provider.h"
 #include "base/strings/strcat.h"
diff --git a/ash/login/ui/login_auth_user_view.cc b/ash/login/ui/login_auth_user_view.cc
index 4dfe04b..7dee15ce 100644
--- a/ash/login/ui/login_auth_user_view.cc
+++ b/ash/login/ui/login_auth_user_view.cc
@@ -13,6 +13,7 @@
 #include "ash/login/ui/arrow_button_view.h"
 #include "ash/login/ui/horizontal_image_sequence_animation_decoder.h"
 #include "ash/login/ui/lock_screen.h"
+#include "ash/login/ui/login_constants.h"
 #include "ash/login/ui/login_display_style.h"
 #include "ash/login/ui/login_password_view.h"
 #include "ash/login/ui/login_pin_input_view.h"
@@ -23,7 +24,6 @@
 #include "ash/login/ui/pin_request_view.h"
 #include "ash/login/ui/system_label_button.h"
 #include "ash/login/ui/views_utils.h"
-#include "ash/public/cpp/login_constants.h"
 #include "ash/resources/vector_icons/vector_icons.h"
 #include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
@@ -1371,7 +1371,7 @@
         ui::LayerAnimationElement::CreateInterpolatedTransformElement(
             std::move(move_to_center),
             base::TimeDelta::FromMilliseconds(
-                login_constants::kChangeUserAnimationDurationMs));
+                login::kChangeUserAnimationDurationMs));
     transition->set_tween_type(gfx::Tween::Type::FAST_OUT_SLOW_IN);
     auto* sequence = new ui::LayerAnimationSequence(std::move(transition));
     auto* observer = BuildObserverToNotifyA11yLocationChanged(this);
@@ -1394,7 +1394,7 @@
       ui::ScopedLayerAnimationSettings settings(
           password_view_->layer()->GetAnimator());
       settings.SetTransitionDuration(base::TimeDelta::FromMilliseconds(
-          login_constants::kChangeUserAnimationDurationMs));
+          login::kChangeUserAnimationDurationMs));
       settings.SetTweenType(gfx::Tween::Type::FAST_OUT_SLOW_IN);
       if (previous_state_->has_password && !current_state.has_password) {
         settings.AddObserver(
@@ -1418,7 +1418,7 @@
       ui::ScopedLayerAnimationSettings settings(
           pin_password_toggle_->layer()->GetAnimator());
       settings.SetTransitionDuration(base::TimeDelta::FromMilliseconds(
-          login_constants::kChangeUserAnimationDurationMs));
+          login::kChangeUserAnimationDurationMs));
       settings.SetTweenType(gfx::Tween::Type::FAST_OUT_SLOW_IN);
       pin_password_toggle_->layer()->SetOpacity(opacity_end);
     }
@@ -1446,7 +1446,7 @@
         current_state.has_pinpad /*grow*/, pin_view_->height(),
         // TODO(https://crbug.com/955119): Implement proper animation.
         base::TimeDelta::FromMilliseconds(
-            login_constants::kChangeUserAnimationDurationMs / 2.0f),
+            login::kChangeUserAnimationDurationMs / 2.0f),
         gfx::Tween::FAST_OUT_SLOW_IN);
     auto* sequence = new ui::LayerAnimationSequence(std::move(transition));
 
@@ -1476,7 +1476,7 @@
       ui::ScopedLayerAnimationSettings settings(
           fingerprint_view_->layer()->GetAnimator());
       settings.SetTransitionDuration(base::TimeDelta::FromMilliseconds(
-          login_constants::kChangeUserAnimationDurationMs));
+          login::kChangeUserAnimationDurationMs));
       settings.SetTweenType(gfx::Tween::Type::FAST_OUT_SLOW_IN);
       fingerprint_view_->layer()->SetOpacity(opacity_end);
     }
@@ -1496,7 +1496,7 @@
       ui::ScopedLayerAnimationSettings settings(
           challenge_response_view_->layer()->GetAnimator());
       settings.SetTransitionDuration(base::TimeDelta::FromMilliseconds(
-          login_constants::kChangeUserAnimationDurationMs));
+          login::kChangeUserAnimationDurationMs));
       settings.SetTweenType(gfx::Tween::Type::FAST_OUT_SLOW_IN);
       challenge_response_view_->layer()->SetOpacity(opacity_end);
     }
diff --git a/ash/login/ui/login_big_user_view.cc b/ash/login/ui/login_big_user_view.cc
index 860407c..502085f2 100644
--- a/ash/login/ui/login_big_user_view.cc
+++ b/ash/login/ui/login_big_user_view.cc
@@ -4,7 +4,7 @@
 
 #include "ash/login/ui/login_big_user_view.h"
 
-#include "ash/public/cpp/login_constants.h"
+#include "ash/login/ui/login_constants.h"
 #include "ash/shell.h"
 #include "ash/style/default_color_constants.h"
 #include "ash/wallpaper/wallpaper_controller_impl.h"
@@ -122,7 +122,7 @@
         views::Painter::CreateSolidRoundRectPainter(
             AshColorProvider::Get()->GetShieldLayerColor(
                 AshColorProvider::ShieldLayerType::kShield80),
-            login_constants::kNonBlurredWallpaperBackgroundRadiusDp)));
+            login::kNonBlurredWallpaperBackgroundRadiusDp)));
   }
 }
 
diff --git a/ash/login/ui/login_constants.h b/ash/login/ui/login_constants.h
new file mode 100644
index 0000000..ae90467
--- /dev/null
+++ b/ash/login/ui/login_constants.h
@@ -0,0 +1,22 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef ASH_LOGIN_UI_LOGIN_CONSTANTS_H_
+#define ASH_LOGIN_UI_LOGIN_CONSTANTS_H_
+
+namespace ash {
+namespace login {
+
+// Per above, the background should be a rounded rect with this corner radius.
+constexpr int kNonBlurredWallpaperBackgroundRadiusDp = 4;
+
+// How long should animations that change the layout of the user run for? For
+// example, this includes the user switch animation as well as the PIN keyboard
+// show/hide animation.
+constexpr int kChangeUserAnimationDurationMs = 300;
+
+}  // namespace login
+}  // namespace ash
+
+#endif  // ASH_LOGIN_UI_LOGIN_CONSTANTS_H_
diff --git a/ash/login/ui/login_palette.cc b/ash/login/ui/login_palette.cc
index 9cf946e..f62d983 100644
--- a/ash/login/ui/login_palette.cc
+++ b/ash/login/ui/login_palette.cc
@@ -3,7 +3,6 @@
 // found in the LICENSE file.
 
 #include "ash/login/ui/login_palette.h"
-#include "ash/public/cpp/login_constants.h"
 #include "ash/style/ash_color_provider.h"
 #include "ui/gfx/color_palette.h"
 
diff --git a/ash/login/ui/login_password_view.cc b/ash/login/ui/login_password_view.cc
index eaa8777..822454b 100644
--- a/ash/login/ui/login_password_view.cc
+++ b/ash/login/ui/login_password_view.cc
@@ -10,7 +10,6 @@
 #include "ash/login/ui/hover_notifier.h"
 #include "ash/login/ui/lock_screen.h"
 #include "ash/login/ui/non_accessible_view.h"
-#include "ash/public/cpp/login_constants.h"
 #include "ash/public/cpp/login_types.h"
 #include "ash/public/cpp/shelf_config.h"
 #include "ash/resources/vector_icons/vector_icons.h"
diff --git a/ash/login/ui/login_pin_view.cc b/ash/login/ui/login_pin_view.cc
index 3c04c76..9ea1ad32 100644
--- a/ash/login/ui/login_pin_view.cc
+++ b/ash/login/ui/login_pin_view.cc
@@ -9,7 +9,6 @@
 #include "ash/login/ui/login_button.h"
 #include "ash/login/ui/views_utils.h"
 #include "ash/public/cpp/ash_constants.h"
-#include "ash/public/cpp/login_constants.h"
 #include "ash/resources/vector_icons/vector_icons.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "base/bind.h"
diff --git a/ash/login/ui/login_user_view.cc b/ash/login/ui/login_user_view.cc
index e82023ff..e9504de 100644
--- a/ash/login/ui/login_user_view.cc
+++ b/ash/login/ui/login_user_view.cc
@@ -10,11 +10,11 @@
 #include "ash/login/ui/hover_notifier.h"
 #include "ash/login/ui/image_parser.h"
 #include "ash/login/ui/login_button.h"
+#include "ash/login/ui/login_constants.h"
 #include "ash/login/ui/non_accessible_view.h"
 #include "ash/login/ui/user_switch_flip_animation.h"
 #include "ash/login/ui/views_utils.h"
 #include "ash/public/cpp/ash_constants.h"
-#include "ash/public/cpp/login_constants.h"
 #include "ash/public/cpp/session/user_info.h"
 #include "ash/resources/vector_icons/vector_icons.h"
 #include "ash/shell.h"
@@ -499,7 +499,7 @@
         user_image_->width(), 0 /*start_degrees*/, 90 /*midpoint_degrees*/,
         180 /*end_degrees*/,
         base::TimeDelta::FromMilliseconds(
-            login_constants::kChangeUserAnimationDurationMs),
+            login::kChangeUserAnimationDurationMs),
         gfx::Tween::Type::EASE_OUT,
         base::BindOnce(&LoginUserView::UpdateCurrentUserState,
                        base::Unretained(this)));
@@ -512,9 +512,8 @@
     auto make_opacity_sequence = [is_opaque]() {
       auto make_opacity_element = [](float target_opacity) {
         auto element = ui::LayerAnimationElement::CreateOpacityElement(
-            target_opacity,
-            base::TimeDelta::FromMilliseconds(
-                login_constants::kChangeUserAnimationDurationMs / 2.0f));
+            target_opacity, base::TimeDelta::FromMilliseconds(
+                                login::kChangeUserAnimationDurationMs / 2.0f));
         element->set_tween_type(gfx::Tween::Type::EASE_OUT);
         return element;
       };
diff --git a/ash/login/ui/scrollable_users_list_view.cc b/ash/login/ui/scrollable_users_list_view.cc
index 02ced7a..6d256be 100644
--- a/ash/login/ui/scrollable_users_list_view.cc
+++ b/ash/login/ui/scrollable_users_list_view.cc
@@ -7,11 +7,11 @@
 #include <limits>
 #include <memory>
 
+#include "ash/login/ui/login_constants.h"
 #include "ash/login/ui/login_display_style.h"
 #include "ash/login/ui/login_user_view.h"
 #include "ash/login/ui/non_accessible_view.h"
 #include "ash/login/ui/views_utils.h"
-#include "ash/public/cpp/login_constants.h"
 #include "ash/shell.h"
 #include "ash/style/ash_color_provider.h"
 #include "ash/style/default_color_constants.h"
@@ -430,9 +430,8 @@
     flags.setStyle(cc::PaintFlags::kFill_Style);
     flags.setColor(AshColorProvider::Get()->GetShieldLayerColor(
         AshColorProvider::ShieldLayerType::kShield80));
-    canvas->DrawRoundRect(
-        render_bounds, login_constants::kNonBlurredWallpaperBackgroundRadiusDp,
-        flags);
+    canvas->DrawRoundRect(render_bounds,
+                          login::kNonBlurredWallpaperBackgroundRadiusDp, flags);
   }
 }
 
diff --git a/ash/login/ui/views_utils.h b/ash/login/ui/views_utils.h
index 3c261299..4953e72 100644
--- a/ash/login/ui/views_utils.h
+++ b/ash/login/ui/views_utils.h
@@ -6,7 +6,6 @@
 #define ASH_LOGIN_UI_VIEWS_UTILS_H_
 
 #include "ash/ash_export.h"
-#include "ash/public/cpp/login_constants.h"
 #include "ash/style/ash_color_provider.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
 #include "ui/views/controls/label.h"
@@ -22,15 +21,21 @@
 namespace login_views_utils {
 
 namespace {
+
+// The most used font size on login/lock screen.
+constexpr int kLoginDefaultFontSize = 13;
+
+// The most used font on login/lock screen.
+constexpr char kLoginDefaultFontName[] = "Roboto";
+
 constexpr int kDefaultLineHeight = 20;
 
 // Helper function to get default font list for login/lock screen text label.
 // It is slightly different from views::Label::GetDefaultFontList since the
 // font size returned is 13 pt instead of 12 pt.
 const gfx::FontList GetLoginDefaultFontList() {
-  return gfx::FontList(
-      {login_constants::kDefaultFontName}, gfx::Font::FontStyle::NORMAL,
-      login_constants::kDefaultFontSize, gfx::Font::Weight::NORMAL);
+  return gfx::FontList({kLoginDefaultFontName}, gfx::Font::FontStyle::NORMAL,
+                       kLoginDefaultFontSize, gfx::Font::Weight::NORMAL);
 }
 
 }  // namespace
diff --git a/ash/public/cpp/BUILD.gn b/ash/public/cpp/BUILD.gn
index 22de3b2..1cdf53b9 100644
--- a/ash/public/cpp/BUILD.gn
+++ b/ash/public/cpp/BUILD.gn
@@ -169,7 +169,6 @@
     "lock_screen_widget_factory.h",
     "login_accelerators.cc",
     "login_accelerators.h",
-    "login_constants.h",
     "login_screen.cc",
     "login_screen.h",
     "login_screen_client.h",
diff --git a/ash/public/cpp/ash_features.cc b/ash/public/cpp/ash_features.cc
index 6e81ab5..087c69f 100644
--- a/ash/public/cpp/ash_features.cc
+++ b/ash/public/cpp/ash_features.cc
@@ -85,7 +85,7 @@
                                   base::FEATURE_DISABLED_BY_DEFAULT};
 
 const base::Feature kPipRoundedCorners{"PipRoundedCorners",
-                                       base::FEATURE_DISABLED_BY_DEFAULT};
+                                       base::FEATURE_ENABLED_BY_DEFAULT};
 
 const base::Feature kReduceDisplayNotifications{
     "ReduceDisplayNotifications", base::FEATURE_ENABLED_BY_DEFAULT};
diff --git a/ash/public/cpp/login_constants.h b/ash/public/cpp/login_constants.h
deleted file mode 100644
index c796f230..0000000
--- a/ash/public/cpp/login_constants.h
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2017 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef ASH_PUBLIC_CPP_LOGIN_CONSTANTS_H_
-#define ASH_PUBLIC_CPP_LOGIN_CONSTANTS_H_
-
-#include "third_party/skia/include/core/SkColor.h"
-
-// TODO(crbug/1148231): Move this file to ash/login/ui/login_constant.h.
-
-namespace ash {
-namespace login_constants {
-
-// Per above, the background should be a rounded rect with this corner radius.
-constexpr int kNonBlurredWallpaperBackgroundRadiusDp = 4;
-
-// The blur sigma for login/lock screen.
-constexpr float kBlurSigma = 30.0f;
-
-// How long should animations that change the layout of the user run for? For
-// example, this includes the user switch animation as well as the PIN keyboard
-// show/hide animation.
-constexpr int kChangeUserAnimationDurationMs = 300;
-
-// The most used font size on login/lock screen.
-constexpr int kDefaultFontSize = 13;
-
-// The most used font on login/lock screen.
-constexpr char kDefaultFontName[] = "Roboto";
-
-}  // namespace login_constants
-}  // namespace ash
-
-#endif  // ASH_PUBLIC_CPP_LOGIN_CONSTANTS_H_
diff --git a/ash/shelf/login_shelf_view.cc b/ash/shelf/login_shelf_view.cc
index f8cf470..7af4fdc 100644
--- a/ash/shelf/login_shelf_view.cc
+++ b/ash/shelf/login_shelf_view.cc
@@ -16,7 +16,6 @@
 #include "ash/login/ui/lock_screen.h"
 #include "ash/public/cpp/ash_constants.h"
 #include "ash/public/cpp/login_accelerators.h"
-#include "ash/public/cpp/login_constants.h"
 #include "ash/public/cpp/shelf_config.h"
 #include "ash/resources/vector_icons/vector_icons.h"
 #include "ash/root_window_controller.h"
diff --git a/ash/shelf/shelf_background_animator.cc b/ash/shelf/shelf_background_animator.cc
index 829bd36..f8285040 100644
--- a/ash/shelf/shelf_background_animator.cc
+++ b/ash/shelf/shelf_background_animator.cc
@@ -8,7 +8,6 @@
 #include <memory>
 
 #include "ash/animation/animation_change_type.h"
-#include "ash/public/cpp/login_constants.h"
 #include "ash/public/cpp/shelf_config.h"
 #include "ash/public/cpp/shelf_types.h"
 #include "ash/public/cpp/wallpaper_types.h"
diff --git a/ash/strings/ash_strings_af.xtb b/ash/strings/ash_strings_af.xtb
index ab08b0d..7f571d2 100644
--- a/ash/strings/ash_strings_af.xtb
+++ b/ash/strings/ash_strings_af.xtb
@@ -245,6 +245,7 @@
 <translation id="2963773877003373896">mod3</translation>
 <translation id="2970920913501714344">Installeer programme, uitbreidings en temas</translation>
 <translation id="2977598380246111477">Volgende syfer</translation>
+<translation id="2992327365391326550">Toestel se mikrofoonknoppie is afgeskakel.</translation>
 <translation id="2995447421581609334">Wys uitsaaitoestelle.</translation>
 <translation id="2996462380875591307">Gedokte vergrootglas is geaktiveer. Druk weer Ctrl+Search+D om dit af te skakel.</translation>
 <translation id="3000461861112256445">Mono-oudio</translation>
@@ -255,6 +256,7 @@
 <translation id="3038571455154067151">Voer jou Family Link-ouertoegangskode in om aan te meld</translation>
 <translation id="3039939407102840004">Stilusbattery is op <ph name="PERCENTAGE" /> persent.</translation>
 <translation id="3045488863354895414">Goeiemiddag</translation>
+<translation id="3051189971848907985">Hernoem tans profiel. Wag 'n paar minute.</translation>
 <translation id="3055162170959710888">Jy het hierdie toestel vandag <ph name="USED_TIME" /> lank gebruik</translation>
 <translation id="3077734595579995578">shift</translation>
 <translation id="3081696990447829002">Vou kieslys uit</translation>
@@ -295,6 +297,7 @@
 <translation id="3368922792935385530">Gekoppel</translation>
 <translation id="3371140690572404006">USB C-toestel (voorste poort aan regterkant)</translation>
 <translation id="3375634426936648815">Gekoppel</translation>
+<translation id="3378442621503952303">Koppel tans aan profiel. Wag 'n paar minute.</translation>
 <translation id="3386978599540877378">die volskermvergrootglas</translation>
 <translation id="3400357268283240774">Bykomende instellings</translation>
 <translation id="3410336247007142655">Wys Donkertema-instellings</translation>
@@ -352,6 +355,7 @@
 <translation id="380165613292957338">Hallo, hoe kan ek help?</translation>
 <translation id="3826099427150913765">Skakel oor na wagwoord</translation>
 <translation id="383058930331066723">Batterybespaardermodus is aan</translation>
+<translation id="3835880383832568924">Maak die Kortpaaie-program oop om die opdaterings te sien</translation>
 <translation id="383629559565718788">Wys sleutelbordinstellings</translation>
 <translation id="3846214748874656680">Verlaat volskerm</translation>
 <translation id="3846575436967432996">Geen netwerkinligting beskikbaar nie</translation>
@@ -472,6 +476,7 @@
 <translation id="4705716602320768426">Dien terugvoer in</translation>
 <translation id="4731797938093519117">Ouertoegang</translation>
 <translation id="4734965478015604180">Horisontaal</translation>
+<translation id="4735498845456076464">Die kortpadsleutel <ph name="LAUNCHER_KEY_NAME" /> + syfer het verander. Om funksiesleutels te gebruik, moet jy die <ph name="LAUNCHER_KEY_NAME" />-sleutel + 'n sleutel in die boonste ry druk.</translation>
 <translation id="4744944742468440486">Inligting wat met jou keuse verband hou</translation>
 <translation id="4759238208242260848">Aflaaie</translation>
 <translation id="4774338217796918551">Kom môre om <ph name="COME_BACK_TIME" /> terug.</translation>
@@ -729,6 +734,7 @@
 <translation id="6896758677409633944">Kopieer</translation>
 <translation id="6910714959251846841">Hierdie opdatering vereis dat jou toestel 'n kragwas kry. Kom meer te wete oor die jongste <ph name="SYSTEM_APP_NAME" />-opdatering.</translation>
 <translation id="6919251195245069855">Kon nie jou slimkaart herken nie. Probeer weer.</translation>
+<translation id="6921188888306725546">Sleutelbordkortpaaie is verbeter</translation>
 <translation id="6945221475159498467">Kies</translation>
 <translation id="6961121602502368900">Maak Foon Stil is nie op werkprofiel beskikbaar nie</translation>
 <translation id="6961840794482373852">Die kortpadsleutel Alt + oppyl het verander. Om die Page Up-sleutel te gebruik, moet jy die <ph name="LAUNCHER_KEY_NAME" />-sleutel + oppyl druk.</translation>
@@ -935,6 +941,7 @@
 <translation id="8631727435199967028">Toeganklikheidinstellings</translation>
 <translation id="8637598503828012618"><ph name="CONNECTION_STATUS" />, seinsterkte <ph name="SIGNAL_STRENGTH" />, deur jou administrateur bestuur</translation>
 <translation id="8639760480004882931"><ph name="PERCENTAGE" /> oor</translation>
+<translation id="8641805545866562088">Herlaai tans profiellys. Wag 'n paar minute.</translation>
 <translation id="8646417893960517480"><ph name="TOTAL_TIME" />-afteller</translation>
 <translation id="8647931990447795414">Voer jou Family Link-ouertoegangskode in om 'n persoon by te voeg</translation>
 <translation id="8649101189709089199">Hardoplees</translation>
@@ -962,6 +969,7 @@
 <translation id="8788027118671217603"><ph name="STATE_TEXT" />. <ph name="ENTERPRISE_TEXT" /></translation>
 <translation id="8814190375133053267">Wi-Fi</translation>
 <translation id="881757059229893486">Invoermetodesinstellings</translation>
+<translation id="8818320199597151042">Verwyder tans profiel. Wag 'n paar minute.</translation>
 <translation id="8825863694328519386">Swiep van links af om terug te gaan</translation>
 <translation id="8828714802988429505">90°</translation>
 <translation id="8841375032071747811">Terugknoppie</translation>
@@ -1007,6 +1015,7 @@
 <translation id="9091626656156419976">Het skerm <ph name="DISPLAY_NAME" /> verwyder</translation>
 <translation id="9098969848082897657">Maak foon stil</translation>
 <translation id="9099154003160514616">Lacros-opdatering is beskikbaar</translation>
+<translation id="9100887602489003640">Voeg tans profiel by. Wag 'n paar minute.</translation>
 <translation id="9105450214093926548">'n Tweede gebruiker kan nie aangemeld word terwyl die Lacros-blaaier gebruik word nie. Gebruik asseblief eerder 'n tweede blaaierprofiel in Lacros, of maak Lacros toe en probeer weer.</translation>
 <translation id="9133335900048457298">Kan nie beskermde inhoud opneem nie</translation>
 <translation id="9151726767154816831">Herbegin en powerwash om te opdateer</translation>
diff --git a/ash/strings/ash_strings_fa.xtb b/ash/strings/ash_strings_fa.xtb
index 2f263cb2..ca4bf5f 100644
--- a/ash/strings/ash_strings_fa.xtb
+++ b/ash/strings/ash_strings_fa.xtb
@@ -245,6 +245,7 @@
 <translation id="2963773877003373896">mod3</translation>
 <translation id="2970920913501714344">نصب برنامه‌ها، افزونه‌ها و طرح‌های زمینه</translation>
 <translation id="2977598380246111477">عدد بعدی</translation>
+<translation id="2992327365391326550">دکمه میکروفون دستگاه خاموش است.</translation>
 <translation id="2995447421581609334">نمایش دستگاه‌های ارسال محتوا.</translation>
 <translation id="2996462380875591307">‏«ذره‌بین متصل» فعال شد. برای خاموش کردن آن، Ctrl+Search+D را دوباره فشار دهید.</translation>
 <translation id="3000461861112256445">صدای مونو</translation>
@@ -255,6 +256,7 @@
 <translation id="3038571455154067151">‏برای ورود به سیستم، کد دسترسی والدین Family Link خود را وارد کنید</translation>
 <translation id="3039939407102840004">شارژ باتری قلم <ph name="PERCENTAGE" /> درصد است.</translation>
 <translation id="3045488863354895414">بعدازظهر به‌خیر،</translation>
+<translation id="3051189971848907985">درحال تغییر نام نمایه. چند دقیقه صبر کنید.</translation>
 <translation id="3055162170959710888">امروز از این دستگاه به‌مدت <ph name="USED_TIME" /> استفاده کردید</translation>
 <translation id="3077734595579995578">تبدیل</translation>
 <translation id="3081696990447829002">بزرگ کردن منو</translation>
@@ -295,6 +297,7 @@
 <translation id="3368922792935385530">متصل</translation>
 <translation id="3371140690572404006">‏دستگاه USB-C (درگاه جلوی سمت راست)</translation>
 <translation id="3375634426936648815">متصل است</translation>
+<translation id="3378442621503952303">درحال اتصال به نمایه. چند دقیقه صبر کنید.</translation>
 <translation id="3386978599540877378">ذره‌بین تمام‌صفحه</translation>
 <translation id="3400357268283240774">تنظیمات بیشتر</translation>
 <translation id="3410336247007142655">نمایش تنظیمات طرح زمینه تیره</translation>
@@ -351,6 +354,7 @@
 <translation id="380165613292957338">سلام، چه کمکی می‌توانم بکنم؟</translation>
 <translation id="3826099427150913765">رفتن به گذرواژه</translation>
 <translation id="383058930331066723">حالت «بهینه‌سازی باتری» روشن است</translation>
+<translation id="3835880383832568924">برای دیدن به‌روزرسانی‌ها، برنامه «میان‌برها» را باز کنید</translation>
 <translation id="383629559565718788">نمایش تنظیمات صفحه‌کلید</translation>
 <translation id="3846214748874656680">خروج از حالت تمام صفحه</translation>
 <translation id="3846575436967432996">اطلاعات شبکه در دسترس نیست</translation>
@@ -471,6 +475,7 @@
 <translation id="4705716602320768426">ثبت بازخورد</translation>
 <translation id="4731797938093519117">دسترسی والدین</translation>
 <translation id="4734965478015604180">افقی</translation>
+<translation id="4735498845456076464">میان‌بر صفحه‌کلید «<ph name="LAUNCHER_KEY_NAME" /> + عدد» تغییر کرده است. برای استفاده از کلیدهای عملکرد، کلید <ph name="LAUNCHER_KEY_NAME" /> + یکی از کلیدهای ردیف بالا را فشار دهید.</translation>
 <translation id="4744944742468440486">اطلاعات مرتبط با انتخاب شما</translation>
 <translation id="4759238208242260848">بارگیری‌ها</translation>
 <translation id="4774338217796918551">فردا ساعت <ph name="COME_BACK_TIME" /> برگردید.</translation>
@@ -728,6 +733,7 @@
 <translation id="6896758677409633944">کپی</translation>
 <translation id="6910714959251846841">‏این به‌روزرسانی نیاز به انجام powerwash دستگاهتان دارد. درباره جدیدترین به‌روزرسانی <ph name="SYSTEM_APP_NAME" /> بیشتر بدانید.</translation>
 <translation id="6919251195245069855">کارت هوشمندتان تشخیص داده نشد. دوباره امتحان کنید.</translation>
+<translation id="6921188888306725546">میان‌برهای صفحه‌کلید بهبود یافته‌اند</translation>
 <translation id="6945221475159498467">انتخاب</translation>
 <translation id="6961121602502368900">«بی‌صدا کردن تلفن» در نمایه کاری دردسترس نیست</translation>
 <translation id="6961840794482373852">میان‌بر صفحه‌کلید «دگرساز + جهت‌نمای بالا» تغییر کرده است. برای استفاده از کلید «صفحه قبلی»، کلید «<ph name="LAUNCHER_KEY_NAME" /> + جهت‌نمای بالا» را فشار دهید.</translation>
@@ -934,6 +940,7 @@
 <translation id="8631727435199967028">تنظیمات دسترس‌پذیری</translation>
 <translation id="8637598503828012618"><ph name="CONNECTION_STATUS" />، قدرت سیگنال <ph name="SIGNAL_STRENGTH" />، تحت‌مدیریت سرپرست</translation>
 <translation id="8639760480004882931"><ph name="PERCENTAGE" /> باقی‌مانده</translation>
+<translation id="8641805545866562088">درحال بازخوانی فهرست نمایه. چند دقیقه صبر کنید.</translation>
 <translation id="8646417893960517480">زمان‌سنج <ph name="TOTAL_TIME" /></translation>
 <translation id="8647931990447795414">‏برای افزودن فرد، کد دسترسی والدین Family Link خود را وارد کنید</translation>
 <translation id="8649101189709089199">انتخاب برای شنیدن</translation>
@@ -961,6 +968,7 @@
 <translation id="8788027118671217603"><ph name="STATE_TEXT" />. <ph name="ENTERPRISE_TEXT" /></translation>
 <translation id="8814190375133053267">Wi-Fi</translation>
 <translation id="881757059229893486">تنظیمات روش‌های ورودی</translation>
+<translation id="8818320199597151042">درحال برداشتن نمایه. چند دقیقه صبر کنید.</translation>
 <translation id="8825863694328519386">برای برگشتن به عقب از سمت راست تند بکشید</translation>
 <translation id="8828714802988429505">۹۰°</translation>
 <translation id="8841375032071747811">دکمه برگشت</translation>
@@ -1006,6 +1014,7 @@
 <translation id="9091626656156419976">نمایشگر <ph name="DISPLAY_NAME" /> برداشته شد</translation>
 <translation id="9098969848082897657">بی‌صدا کردن تلفن</translation>
 <translation id="9099154003160514616">‏به‌روزرسانی Lacros موجود است</translation>
+<translation id="9100887602489003640">درحال افزودن نمایه. چند دقیقه صبر کنید.</translation>
 <translation id="9105450214093926548">‏درحین اجرای مرورگر Lacros، از ورود به سیستم کاربر دوم پشتیبانی نمی‌شود. لطفاً درعوض از نمایه مرورگر دیگری در Lacros استفاده کنید یا Lacros را ببندید و دوباره امتحان کنید.</translation>
 <translation id="9133335900048457298">نمی‌توان محتوای محافظت‌شده را ضبط کرد</translation>
 <translation id="9151726767154816831">‏راه‌اندازی مجدد و Powerwash برای به‌روزرسانی</translation>
diff --git a/ash/strings/ash_strings_is.xtb b/ash/strings/ash_strings_is.xtb
index 6c93903..189ad0d 100644
--- a/ash/strings/ash_strings_is.xtb
+++ b/ash/strings/ash_strings_is.xtb
@@ -40,7 +40,7 @@
 <translation id="1247372569136754018">Hljóðnemi (innbyggður)</translation>
 <translation id="1252999807265626933">Verið er að hlaða með <ph name="POWER_SOURCE" /></translation>
 <translation id="1255033239764210633">Hvernig er veðrið?</translation>
-<translation id="1266097335951928626">Kveikja ásjálfsmyndarmyndavél</translation>
+<translation id="1266097335951928626">Kveikja á sjálfsmyndarmyndavél</translation>
 <translation id="1267032506238418139">Breyting á flýtileið</translation>
 <translation id="1269405891096105529">Jaðartæki ekki stutt í gestastillingu</translation>
 <translation id="1270290102613614947">Skjályklaborð óvirkt</translation>
@@ -335,7 +335,7 @@
 <translation id="3638400994746983214">Kveikja/slökkva á persónuverndarskjá. <ph name="STATE_TEXT" />.</translation>
 <translation id="366222428570480733"><ph name="USER_EMAIL_ADDRESS" /> Stýrður notandi</translation>
 <translation id="3665889125180354336">Upptaka hljóðnema</translation>
-<translation id="3680908746918359504">Hreinsa öll merki</translation>
+<translation id="3680908746918359504">Hreinsa alla penna</translation>
 <translation id="36813544980941320">Wi-Fi netum verður deilt á milli símans og <ph name="DEVICE_NAME" /></translation>
 <translation id="3702809606464356667">Sýnir glugga núverandi skrifborðs, ýttu á ör upp til að sýna glugga allra skrifborða</translation>
 <translation id="3702846122927433391">Íbúafjöldi í Nígeríu</translation>
@@ -464,7 +464,7 @@
 <translation id="4587299710837179226">Slökkt er á hljóðnemanum</translation>
 <translation id="4596144739579517758">Slökkt er á dökku þema</translation>
 <translation id="4611292653554630842">Skrá inn</translation>
-<translation id="4614295562446151104">Stækka merkjaverkfæri</translation>
+<translation id="4614295562446151104">Stækka merkiverkfæri</translation>
 <translation id="4623167406982293031">Staðfesta reikning</translation>
 <translation id="4628757576491864469">Tæki</translation>
 <translation id="4642092649622328492">Taka mynd af hluta skjás</translation>
@@ -770,7 +770,7 @@
 <translation id="7256634071279256947">Aftari hljóðnemi</translation>
 <translation id="726276584504105859">Dragðu hingað til að skipta skjánum</translation>
 <translation id="7262906531272962081">Búa til áminningu</translation>
-<translation id="7279434993080105272"><ph name="COLOR_PARAMETER" /> tússlitur</translation>
+<translation id="7279434993080105272"><ph name="COLOR_PARAMETER" /> litur</translation>
 <translation id="7302889331339392448">Slökkt er á skjátextum í rauntíma.</translation>
 <translation id="7303365578352795231">Svarar á öðru tæki.</translation>
 <translation id="7305884605064981971">EDGE</translation>
@@ -800,7 +800,7 @@
 <translation id="7466449121337984263">Snertu fingrafaralesarann</translation>
 <translation id="7477793887173910789">Stjórnaðu tónlistinni, myndskeiðunum og fleiru</translation>
 <translation id="7483025031359818980">Valsvæði stillt á allan skjáinn</translation>
-<translation id="7486227320194954040">Minnka merkjaverkfæri</translation>
+<translation id="7486227320194954040">Draga saman merkiverkfæri</translation>
 <translation id="7497767806359279797">Velja tungumál og lyklaborð</translation>
 <translation id="7509246181739783082">Staðfestu hver þú ert</translation>
 <translation id="7513622367902644023">Skjámyndastilling valin</translation>
diff --git a/ash/wallpaper/wallpaper_constants.h b/ash/wallpaper/wallpaper_constants.h
index c20498f..f6fbdcd 100644
--- a/ash/wallpaper/wallpaper_constants.h
+++ b/ash/wallpaper/wallpaper_constants.h
@@ -5,7 +5,7 @@
 #ifndef ASH_WALLPAPER_WALLPAPER_CONSTANTS_H_
 #define ASH_WALLPAPER_WALLPAPER_CONSTANTS_H_
 
-#include "ash/public/cpp/login_constants.h"
+#include "ash/login/ui/login_constants.h"
 #include "ash/style/ash_color_provider.h"
 
 namespace ash {
@@ -18,7 +18,7 @@
 constexpr float kOverviewBlur =
     static_cast<float>(AshColorProvider::LayerBlurSigma::kBlurDefault);
 // Blur sigma in lock/login screen.
-constexpr float kLockLoginBlur = login_constants::kBlurSigma;
+constexpr float kLockLoginBlur = 30.0f;
 
 }  // namespace wallpaper_constants
 
diff --git a/ash/wallpaper/wallpaper_controller_impl.cc b/ash/wallpaper/wallpaper_controller_impl.cc
index 3c81142..e204f3a 100644
--- a/ash/wallpaper/wallpaper_controller_impl.cc
+++ b/ash/wallpaper/wallpaper_controller_impl.cc
@@ -12,10 +12,10 @@
 #include "ash/constants/ash_features.h"
 #include "ash/constants/ash_switches.h"
 #include "ash/display/window_tree_host_manager.h"
+#include "ash/login/ui/login_constants.h"
 #include "ash/public/cpp/ash_pref_names.h"
 #include "ash/public/cpp/ash_switches.h"
 #include "ash/public/cpp/image_downloader.h"
-#include "ash/public/cpp/login_constants.h"
 #include "ash/public/cpp/shell_window_ids.h"
 #include "ash/public/cpp/wallpaper_controller_client.h"
 #include "ash/public/cpp/wallpaper_controller_observer.h"
diff --git a/ash/wm/lock_state_controller_unittest.cc b/ash/wm/lock_state_controller_unittest.cc
index 36ee9ed..84fa0f1d 100644
--- a/ash/wm/lock_state_controller_unittest.cc
+++ b/ash/wm/lock_state_controller_unittest.cc
@@ -8,7 +8,6 @@
 #include <utility>
 
 #include "ash/public/cpp/ash_switches.h"
-#include "ash/public/cpp/login_constants.h"
 #include "ash/public/cpp/shutdown_controller.h"
 #include "ash/root_window_controller.h"
 #include "ash/session/session_controller_impl.h"
@@ -738,7 +737,7 @@
   // Start lock animation and verify wallpaper properties.
   PressLockButton();
   ExpectPreLockAnimationStarted("2");
-  EXPECT_EQ(login_constants::kBlurSigma, wallpaper_view->blur_sigma());
+  EXPECT_EQ(wallpaper_constants::kLockLoginBlur, wallpaper_view->blur_sigma());
 
   // Cancel lock animation.
   AdvancePartially(SessionStateAnimator::ANIMATION_SPEED_UNDOABLE, 0.5f);
diff --git a/base/compiler_specific.h b/base/compiler_specific.h
index 457334d3..0e11403 100644
--- a/base/compiler_specific.h
+++ b/base/compiler_specific.h
@@ -388,9 +388,10 @@
 #if defined(__has_attribute)
 #if __has_attribute(require_constant_initialization)
 #define CONSTINIT __attribute__((require_constant_initialization))
-#else
-#define CONSTINIT
 #endif
 #endif
+#if !defined(CONSTINIT)
+#define CONSTINIT
+#endif
 
 #endif  // BASE_COMPILER_SPECIFIC_H_
diff --git a/base/task/thread_pool/thread_group_impl.cc b/base/task/thread_pool/thread_group_impl.cc
index 7392399..a3a9fa6 100644
--- a/base/task/thread_pool/thread_group_impl.cc
+++ b/base/task/thread_pool/thread_group_impl.cc
@@ -586,9 +586,6 @@
 
   DCHECK(ContainsWorker(outer_->workers_, worker));
 
-  if (!CanGetWorkLockRequired(&executor, worker))
-    return nullptr;
-
   // Use this opportunity, before assigning work to this worker, to create/wake
   // additional workers if needed (doing this here allows us to reduce
   // potentially expensive create/wake directly on PostTask()).
@@ -599,6 +596,9 @@
     executor.FlushWorkerCreation(&outer_->lock_);
   }
 
+  if (!CanGetWorkLockRequired(&executor, worker))
+    return nullptr;
+
   RegisteredTaskSource task_source;
   TaskPriority priority;
   while (!task_source && !outer_->priority_queue_.IsEmpty()) {
diff --git a/build/config/nacl/rules.gni b/build/config/nacl/rules.gni
index c08357c..834c461 100644
--- a/build/config/nacl/rules.gni
+++ b/build/config/nacl/rules.gni
@@ -3,7 +3,6 @@
 # found in the LICENSE file.
 
 import("//build/config/nacl/config.gni")
-import("//build/config/python.gni")
 
 # Generate a nmf file
 #
@@ -20,8 +19,7 @@
   assert(defined(invoker.executables), "Must define executables")
   assert(defined(invoker.nmf), "Must define nmf")
 
-  # TODO(crbug.com/1112471): Get this to run cleanly under Python 3.
-  python2_action(target_name) {
+  action(target_name) {
     forward_variables_from(invoker,
                            [
                              "deps",
diff --git a/build/config/python.gni b/build/config/python.gni
index 89fa317..bddff13 100644
--- a/build/config/python.gni
+++ b/build/config/python.gni
@@ -109,50 +109,6 @@
   }
 }
 
-# This is a wrapper around action_foreach() that ensures that the script is
-# run under a Python2 executable, even if the main script_executable is
-# Python3.
-#
-# It supports all of action_foreach()'s arguments.
-#
-# TODO(crbug.com/1112471): Remove this once everything runs cleanly under
-# Python3.
-template("python2_action_foreach") {
-  action_foreach(target_name) {
-    # Forward all variables. Ensure that testonly and visibility are forwarded
-    # explicitly, since this performs recursive scope lookups, which is
-    # required to ensure their definition from scopes above the caller are
-    # properly handled. All other variables are forwarded with "*", which
-    # doesn't perform recursive lookups at all. See https://crbug.com/862232
-    forward_variables_from(invoker,
-                           [
-                             "testonly",
-                             "visibility",
-                           ])
-    forward_variables_from(invoker,
-                           "*",
-                           [
-                             "testonly",
-                             "visibility",
-                           ])
-
-    if (!_is_python2) {
-      script = "//build/util/python2_action.py"
-      _rebased_script = rebase_path(invoker.script, root_build_dir)
-      inputs = []
-      inputs = [ invoker.script ]
-      if (defined(invoker.inputs)) {
-        inputs += invoker.inputs
-      }
-      args = []
-      args = [ _rebased_script ]
-      if (defined(invoker.args)) {
-        args += invoker.args
-      }
-    }
-  }
-}
-
 # A template used for actions that execute a Python script, which has an
 # associated .pydeps file. In other words:
 #
diff --git a/build/fuchsia/linux.sdk.sha1 b/build/fuchsia/linux.sdk.sha1
index 2af62cc..a4e40740 100644
--- a/build/fuchsia/linux.sdk.sha1
+++ b/build/fuchsia/linux.sdk.sha1
@@ -1 +1 @@
-4.20210525.0.1
+4.20210525.1.1
diff --git a/build/fuchsia/mac.sdk.sha1 b/build/fuchsia/mac.sdk.sha1
index 2af62cc..a4e40740 100644
--- a/build/fuchsia/mac.sdk.sha1
+++ b/build/fuchsia/mac.sdk.sha1
@@ -1 +1 @@
-4.20210525.0.1
+4.20210525.1.1
diff --git a/chrome/android/expectations/monochrome_public_bundle.AndroidManifest.expected b/chrome/android/expectations/monochrome_public_bundle.AndroidManifest.expected
index e57c5bbf..26f3aff7 100644
--- a/chrome/android/expectations/monochrome_public_bundle.AndroidManifest.expected
+++ b/chrome/android/expectations/monochrome_public_bundle.AndroidManifest.expected
@@ -988,7 +988,7 @@
     </receiver>  # DIFF-ANCHOR: df76237f
     <receiver  # DIFF-ANCHOR: a9b53579
         android:name="org.chromium.chrome.browser.notifications.channels.LocaleChangedBroadcastReceiver"
-        android:exported="false">
+        android:exported="true">
       <intent-filter>  # DIFF-ANCHOR: 5458f2a2
         <action android:name="android.intent.action.LOCALE_CHANGED"/>
       </intent-filter>  # DIFF-ANCHOR: 5458f2a2
diff --git a/chrome/android/expectations/trichrome_chrome_bundle.AndroidManifest.expected b/chrome/android/expectations/trichrome_chrome_bundle.AndroidManifest.expected
index ce5e858..dd436f16 100644
--- a/chrome/android/expectations/trichrome_chrome_bundle.AndroidManifest.expected
+++ b/chrome/android/expectations/trichrome_chrome_bundle.AndroidManifest.expected
@@ -928,7 +928,7 @@
     </receiver>  # DIFF-ANCHOR: df76237f
     <receiver  # DIFF-ANCHOR: a9b53579
         android:name="org.chromium.chrome.browser.notifications.channels.LocaleChangedBroadcastReceiver"
-        android:exported="false">
+        android:exported="true">
       <intent-filter>  # DIFF-ANCHOR: 5458f2a2
         <action android:name="android.intent.action.LOCALE_CHANGED"/>
       </intent-filter>  # DIFF-ANCHOR: 5458f2a2
diff --git a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/user_data/AssistantCollectUserDataBinder.java b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/user_data/AssistantCollectUserDataBinder.java
index 7f7703d..7abd88a 100644
--- a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/user_data/AssistantCollectUserDataBinder.java
+++ b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/user_data/AssistantCollectUserDataBinder.java
@@ -477,13 +477,15 @@
      */
     private boolean updateSectionSelectedItem(
             AssistantCollectUserDataModel model, PropertyKey propertyKey, ViewHolder view) {
+        // These changes are sent by the controller, do not notify it when selecting the added item.
+        // This prevents creating a loop.
         if (propertyKey == AssistantCollectUserDataModel.SELECTED_SHIPPING_ADDRESS) {
             if (model.get(AssistantCollectUserDataModel.REQUEST_SHIPPING_ADDRESS)) {
                 AutofillAddress shippingAddress =
                         model.get(AssistantCollectUserDataModel.SELECTED_SHIPPING_ADDRESS);
                 if (shippingAddress != null) {
                     view.mShippingAddressSection.addOrUpdateItem(
-                            shippingAddress, /* select= */ true);
+                            shippingAddress, /* select= */ true, /* notify= */ false);
                 }
                 // No need to reset selection if null, this will be handled by setItems().
             }
@@ -494,7 +496,7 @@
                         model.get(AssistantCollectUserDataModel.SELECTED_PAYMENT_INSTRUMENT);
                 if (paymentInstrument != null) {
                     view.mPaymentMethodSection.addOrUpdateItem(
-                            paymentInstrument, /* select= */ true);
+                            paymentInstrument, /* select= */ true, /* notify= */ false);
                 }
                 // No need to reset selection if null, this will be handled by setItems().
             }
@@ -504,7 +506,8 @@
                 AutofillContact contact =
                         model.get(AssistantCollectUserDataModel.SELECTED_CONTACT_DETAILS);
                 if (contact != null) {
-                    view.mContactDetailsSection.addOrUpdateItem(contact, /* select= */ true);
+                    view.mContactDetailsSection.addOrUpdateItem(
+                            contact, /* select= */ true, /* notify= */ false);
                 }
                 // No need to reset selection if null, this will be handled by setItems().
             }
@@ -516,7 +519,8 @@
             return true;
         } else if (propertyKey == AssistantCollectUserDataModel.SELECTED_LOGIN) {
             view.mLoginSection.addOrUpdateItem(
-                    model.get(AssistantCollectUserDataModel.SELECTED_LOGIN), true);
+                    model.get(AssistantCollectUserDataModel.SELECTED_LOGIN), /* select= */ true,
+                    /* notify= */ false);
             return true;
         }
         return false;
diff --git a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/user_data/AssistantCollectUserDataSection.java b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/user_data/AssistantCollectUserDataSection.java
index f33d735..b8785d2 100644
--- a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/user_data/AssistantCollectUserDataSection.java
+++ b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/user_data/AssistantCollectUserDataSection.java
@@ -173,9 +173,7 @@
         updateVisibility();
 
         if (initiallySelectedItem != null) {
-            mIgnoreItemSelectedNotifications = true;
-            selectItem(initiallySelectedItem);
-            mIgnoreItemSelectedNotifications = false;
+            selectItem(initiallySelectedItem, /*notify=*/true);
         }
     }
 
@@ -208,8 +206,9 @@
      *
      * @param option The item to add or update.
      * @param select Whether to select the new/updated item or not.
+     * @param notify Whether to notify the controller of this change or not.
      */
-    void addOrUpdateItem(@Nullable T option, boolean select) {
+    void addOrUpdateItem(@Nullable T option, boolean select, boolean notify) {
         if (option == null) {
             return;
         }
@@ -233,9 +232,7 @@
         }
 
         if (select) {
-            mIgnoreItemSelectedNotifications = true;
-            selectItem(item);
-            mIgnoreItemSelectedNotifications = false;
+            selectItem(item, notify);
         }
     }
 
@@ -316,9 +313,7 @@
                     if (mIgnoreItemSelectedNotifications || !selected) {
                         return;
                     }
-                    mIgnoreItemSelectedNotifications = true;
-                    selectItem(item);
-                    mIgnoreItemSelectedNotifications = false;
+                    selectItem(item, /*notify=*/true);
                     if (item.mOption.isComplete()) {
                         // Workaround for Android bug: a layout transition may cause the newly
                         // checked radiobutton to not render properly.
@@ -334,13 +329,15 @@
         updateVisibility();
     }
 
-    private void selectItem(Item item) {
+    private void selectItem(Item item, boolean notify) {
         mSelectedOption = item.mOption;
+        mIgnoreItemSelectedNotifications = true;
         mItemsView.setCheckedItem(item.mFullView);
+        mIgnoreItemSelectedNotifications = false;
         updateSummaryView(mSummaryView, item.mOption);
         updateVisibility();
 
-        if (mListener != null) {
+        if (mListener != null && notify) {
             mListener.onResult(
                     item.mOption != null && item.mOption.isComplete() ? item.mOption : null);
         }
diff --git a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/user_data/AssistantContactDetailsSection.java b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/user_data/AssistantContactDetailsSection.java
index 06d34253..1bb2336 100644
--- a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/user_data/AssistantContactDetailsSection.java
+++ b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/user_data/AssistantContactDetailsSection.java
@@ -56,7 +56,7 @@
             mEditor.edit(oldItem, newItem -> {
                 assert (newItem != null && newItem.isComplete());
                 mIgnoreProfileChangeNotifications = true;
-                addOrUpdateItem(newItem, true);
+                addOrUpdateItem(newItem, /* select= */ true, /* notify= */ true);
                 mIgnoreProfileChangeNotifications = false;
             }, cancel -> {});
         }
@@ -159,8 +159,8 @@
     }
 
     @Override
-    protected void addOrUpdateItem(AutofillContact contact, boolean select) {
-        super.addOrUpdateItem(contact, select);
+    protected void addOrUpdateItem(AutofillContact contact, boolean select, boolean notify) {
+        super.addOrUpdateItem(contact, select, notify);
         addAutocompleteInformationToEditor(contact);
     }
 
diff --git a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/user_data/AssistantPaymentMethodSection.java b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/user_data/AssistantPaymentMethodSection.java
index 363d0a4..bbb8bcf 100644
--- a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/user_data/AssistantPaymentMethodSection.java
+++ b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/user_data/AssistantPaymentMethodSection.java
@@ -70,7 +70,7 @@
         mEditor.edit(oldItem, newItem -> {
             assert (newItem != null && newItem.isComplete());
             mIgnorePaymentMethodsChangeNotifications = true;
-            addOrUpdateItem(newItem, true);
+            addOrUpdateItem(newItem, /* select= */ true, /* notify= */ true);
             mIgnorePaymentMethodsChangeNotifications = false;
         }, cancel -> {});
     }
diff --git a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/user_data/AssistantShippingAddressSection.java b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/user_data/AssistantShippingAddressSection.java
index a62c2195..199d565 100644
--- a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/user_data/AssistantShippingAddressSection.java
+++ b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/user_data/AssistantShippingAddressSection.java
@@ -46,12 +46,12 @@
         if (mEditor == null) {
             return;
         }
-        mIgnoreProfileChangeNotifications = true;
         mEditor.edit(oldItem, newItem -> {
             assert (newItem != null && newItem.isComplete());
-            addOrUpdateItem(newItem, true);
+            mIgnoreProfileChangeNotifications = true;
+            addOrUpdateItem(newItem, /* select= */ true, /* notify= */ true);
+            mIgnoreProfileChangeNotifications = false;
         }, cancel -> {});
-        mIgnoreProfileChangeNotifications = false;
     }
 
     @Override
@@ -147,8 +147,8 @@
     }
 
     @Override
-    protected void addOrUpdateItem(AutofillAddress address, boolean select) {
-        super.addOrUpdateItem(address, select);
+    protected void addOrUpdateItem(AutofillAddress address, boolean select, boolean notify) {
+        super.addOrUpdateItem(address, select, notify);
 
         // Update autocomplete information in the editor.
         if (mEditor == null) {
diff --git a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantCollectUserDataUiTest.java b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantCollectUserDataUiTest.java
index 3a8b20c..eefad1a1 100644
--- a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantCollectUserDataUiTest.java
+++ b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantCollectUserDataUiTest.java
@@ -725,7 +725,34 @@
         testLoginDetails("Guest", "Description of guest checkout",
                 viewHolder.mLoginsSection.getCollapsedView(), viewHolder.mLoginList.getItem(0));
 
-        /* Check delegate status. */
+        /* Check delegate status. The selections set in the model have been sent to the delegate. */
+        assertThat(delegate.mPaymentMethod, is(nullValue()));
+        assertThat(delegate.mContact, is(nullValue()));
+        assertThat(delegate.mAddress, is(nullValue()));
+        assertThat(delegate.mTermsStatus, is(AssistantTermsAndConditionsState.NOT_SELECTED));
+        assertThat(delegate.mLoginChoice.getIdentifier(), is("id")); // Default selected
+
+        TestThreadUtils.runOnUiThreadBlocking(() -> {
+            AutofillContact contact = AssistantCollectUserDataModel.createAutofillContact(
+                    mTestRule.getActivity(), profile, /* requestName= */ true,
+                    /* requestPhone= */ true, /* requestEmail= */ true);
+            model.set(AssistantCollectUserDataModel.AVAILABLE_CONTACTS,
+                    Collections.singletonList(contact));
+            AutofillAddress address = AssistantCollectUserDataModel.createAutofillAddress(
+                    mTestRule.getActivity(), profile);
+            model.set(AssistantCollectUserDataModel.AVAILABLE_SHIPPING_ADDRESSES,
+                    Collections.singletonList(address));
+            AutofillPaymentInstrument paymentInstrument =
+                    AssistantCollectUserDataModel.createAutofillPaymentInstrument(
+                            mTestRule.getWebContents(), creditCard, profile);
+            model.set(AssistantCollectUserDataModel.AVAILABLE_PAYMENT_INSTRUMENTS,
+                    Collections.singletonList(paymentInstrument));
+            model.set(AssistantCollectUserDataModel.AVAILABLE_LOGINS,
+                    Collections.singletonList(new AssistantLoginChoice(
+                            "id", "Guest", "Description of guest checkout", "", 0, null, "")));
+        });
+
+        /* Check delegate status. The previously selected items were sent to the delegate. */
         assertThat(delegate.mPaymentMethod.getCard().getNumber(), is("4111111111111111"));
         assertThat(delegate.mPaymentMethod.getCard().getName(), is("Jon Doe"));
         assertThat(delegate.mPaymentMethod.getCard().getBasicCardIssuerNetwork(), is("visa"));
diff --git a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantGenericUiTest.java b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantGenericUiTest.java
index 484773a..cba867d 100644
--- a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantGenericUiTest.java
+++ b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantGenericUiTest.java
@@ -3026,7 +3026,6 @@
      */
     @Test
     @MediumTest
-    @DisabledTest(message = "https://crbug.com/1102828")
     public void testCreditCardUi() throws Exception {
         // When the toggle button becomes checked, we write the current card to
         // |selected_credit_card|.
@@ -3113,12 +3112,6 @@
                                                         .addChunk(
                                                                 Chunk.newBuilder().setText("•••• "))
                                                         .addChunk(Chunk.newBuilder().setKey(-4))))
-                                        .addCallbacks(CallbackProto.newBuilder().setCreateNestedUi(
-                                                CreateNestedGenericUiProto.newBuilder()
-                                                        .setGenericUiIdentifier("nested_ui_${i}")
-                                                        .setGenericUi(singleCardUi)
-                                                        .setParentViewIdentifier(
-                                                                "credit_card_container_view")))
                                         .addCallbacks(CallbackProto.newBuilder().setComputeValue(
                                                 ComputeValueProto.newBuilder()
                                                         .setResultModelIdentifier(
@@ -3129,8 +3122,19 @@
                                                                 createValueReference(
                                                                         "previously_selected_card"),
                                                                 ValueComparisonProto.Mode.EQUAL))))
-
-                                        ))
+                                        // The nested view is created as the last step since
+                                        // creating views can trigger OnValueChanged events for
+                                        // model values. In this case OnValueChanged for
+                                        // credit_card_selected_${i} will trigger in the creation of
+                                        // the radio button, so we need to make sure it has already
+                                        // been updated to the correct value before creating the
+                                        // view.
+                                        .addCallbacks(CallbackProto.newBuilder().setCreateNestedUi(
+                                                CreateNestedGenericUiProto.newBuilder()
+                                                        .setGenericUiIdentifier("nested_ui_${i}")
+                                                        .setGenericUi(singleCardUi)
+                                                        .setParentViewIdentifier(
+                                                                "credit_card_container_view")))))
                         .build());
 
         // Every time |selected_credit_card| changes:
diff --git a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantPersonalDataManagerTest.java b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantPersonalDataManagerTest.java
index 6e394a0..dc90986f 100644
--- a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantPersonalDataManagerTest.java
+++ b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantPersonalDataManagerTest.java
@@ -574,7 +574,7 @@
                 .inRoot(withDecorView(withClassName(containsString("Popup"))))
                 .perform(click());
         onView(allOf(withId(org.chromium.chrome.R.id.spinner), withChild(withText("Select"))))
-                .perform(click());
+                .perform(scrollTo(), click());
         onData(anything())
                 .atPosition(1 /* address of Adam, 0 is SELECT (empty) */)
                 .inRoot(withDecorView(withClassName(containsString("Popup"))))
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_af.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_af.xtb
index 6c8d449..59c57f5 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_af.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_af.xtb
@@ -24,4 +24,5 @@
 <translation id="8037472847879765671">Wys betaalmetodes</translation>
 <translation id="8507520749471379845">Wagwoorde beskikbaar</translation>
 <translation id="8705308553596171387">Geen wagwoord nie</translation>
+<translation id="8849262850971482943">Gebruik jou virtuele kaart vir bykomende sekuriteit</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_fa.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_fa.xtb
index 8b169987..19ee4c0 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_fa.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_fa.xtb
@@ -24,4 +24,5 @@
 <translation id="8037472847879765671">نمایش روش‌های پرداخت</translation>
 <translation id="8507520749471379845">گذرواژه‌ها دردسترس است</translation>
 <translation id="8705308553596171387">گذرواژه لازم نیست</translation>
+<translation id="8849262850971482943">برای افزایش امنیت، از کارت مجازی استفاده کنید</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml
index b53bde79..ec023e3 100644
--- a/chrome/android/java/AndroidManifest.xml
+++ b/chrome/android/java/AndroidManifest.xml
@@ -429,7 +429,7 @@
 
         <!-- Locale related -->
         <receiver android:name="org.chromium.chrome.browser.notifications.channels.LocaleChangedBroadcastReceiver"
-            android:exported="false">
+            android:exported="true">
             <intent-filter>
                 <action android:name="android.intent.action.LOCALE_CHANGED" />
             </intent-filter>
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/downloads/OfflinePageDownloadBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/downloads/OfflinePageDownloadBridge.java
index 94dab7e..9afee06b 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/downloads/OfflinePageDownloadBridge.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/downloads/OfflinePageDownloadBridge.java
@@ -19,18 +19,13 @@
 import org.chromium.base.annotations.JNINamespace;
 import org.chromium.base.annotations.NativeMethods;
 import org.chromium.chrome.R;
-import org.chromium.chrome.browser.AppHooks;
 import org.chromium.chrome.browser.ChromeTabbedActivity;
 import org.chromium.chrome.browser.IntentHandler;
 import org.chromium.chrome.browser.LaunchIntentDispatcher;
 import org.chromium.chrome.browser.browserservices.intents.BrowserServicesIntentDataProvider.CustomTabsUiType;
 import org.chromium.chrome.browser.customtabs.CustomTabIntentDataProvider;
 import org.chromium.chrome.browser.download.DownloadActivity;
-import org.chromium.chrome.browser.download.DownloadInfo;
 import org.chromium.chrome.browser.download.DownloadManagerService;
-import org.chromium.chrome.browser.download.DownloadNotifier;
-import org.chromium.chrome.browser.download.DownloadSharedPreferenceEntry;
-import org.chromium.chrome.browser.download.DownloadSharedPreferenceHelper;
 import org.chromium.chrome.browser.flags.ChromeFeatureList;
 import org.chromium.chrome.browser.offlinepages.OfflinePageOrigin;
 import org.chromium.chrome.browser.offlinepages.OfflinePageUtils;
@@ -39,9 +34,7 @@
 import org.chromium.chrome.browser.tab.TabLaunchType;
 import org.chromium.chrome.browser.tabmodel.AsyncTabCreationParams;
 import org.chromium.chrome.browser.tabmodel.document.TabDelegate;
-import org.chromium.components.offline_items_collection.ContentId;
 import org.chromium.components.offline_items_collection.LaunchLocation;
-import org.chromium.components.offline_items_collection.LegacyHelpers;
 import org.chromium.content_public.browser.LoadUrlParams;
 import org.chromium.ui.widget.Toast;
 
@@ -185,55 +178,6 @@
     }
 
     /**
-     * Aborts the notification.
-     *
-     * @param guid GUID of a request to download a page related to the notification.
-     */
-    private static void suppressNotification(String guid) {
-        DownloadNotifier notifier =
-                DownloadManagerService.getDownloadManagerService().getDownloadNotifier();
-        if (notifier == null) return;
-
-        ContentId id = LegacyHelpers.buildLegacyContentId(true, guid);
-
-        DownloadSharedPreferenceEntry entry =
-                DownloadSharedPreferenceHelper.getInstance().getDownloadSharedPreferenceEntry(id);
-
-        if (entry == null) return;
-
-        DownloadInfo downloadInfo = new DownloadInfo.Builder().setContentId(id).build();
-
-        notifier.removeDownloadNotification(entry.notificationId, downloadInfo);
-    }
-
-    /**
-     * Returns whether we should suppress download complete notification based
-     * on the origin app of the download.
-     * @param originString the qualified string form of an OfflinePageOrigin
-     */
-    private static boolean shouldSuppressCompletedNotification(String originString) {
-        OfflinePageOrigin origin = new OfflinePageOrigin(originString);
-        return AppHooks.get().getOfflinePagesSuppressNotificationPackages().contains(
-                origin.getAppName());
-    }
-
-    /**
-     * Returns whether the notification is suppressed. Suppression is determined
-     * based on the origin app of the download.
-     *
-     * @param originString the qualified string form of an OfflinePageOrigin
-     * @param guid GUID of a request to download a page related to the notification.
-     */
-    @CalledByNative
-    private static boolean maybeSuppressNotification(String originString, String guid) {
-        if (shouldSuppressCompletedNotification(originString)) {
-            suppressNotification(guid);
-            return true;
-        }
-        return false;
-    }
-
-    /**
      * Shows a "Downloading ..." toast for the requested items already scheduled for download.
      */
     @CalledByNative
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/downloads/OfflinePageNotificationBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/downloads/OfflinePageNotificationBridge.java
index d02f47d8..bc7bd1c4d 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/downloads/OfflinePageNotificationBridge.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/downloads/OfflinePageNotificationBridge.java
@@ -7,16 +7,11 @@
 import org.chromium.base.ContextUtils;
 import org.chromium.base.annotations.CalledByNative;
 import org.chromium.chrome.R;
-import org.chromium.chrome.browser.AppHooks;
 import org.chromium.chrome.browser.download.DownloadInfo;
 import org.chromium.chrome.browser.download.DownloadManagerService;
 import org.chromium.chrome.browser.download.DownloadNotifier;
-import org.chromium.chrome.browser.download.DownloadSharedPreferenceEntry;
-import org.chromium.chrome.browser.download.DownloadSharedPreferenceHelper;
 import org.chromium.chrome.browser.download.items.OfflineContentAggregatorFactory;
 import org.chromium.chrome.browser.flags.ChromeFeatureList;
-import org.chromium.chrome.browser.offlinepages.OfflinePageOrigin;
-import org.chromium.components.offline_items_collection.ContentId;
 import org.chromium.components.offline_items_collection.FailState;
 import org.chromium.components.offline_items_collection.LegacyHelpers;
 import org.chromium.components.offline_items_collection.OfflineContentProvider;
@@ -155,54 +150,6 @@
     }
 
     /**
-     * Aborts the notification.
-     *
-     * @param guid GUID of a request to download a page related to the notification.
-     */
-    private static void suppressNotification(String guid) {
-        DownloadNotifier notifier = getDownloadNotifier();
-        if (notifier == null) return;
-
-        ContentId id = LegacyHelpers.buildLegacyContentId(true, guid);
-
-        DownloadSharedPreferenceEntry entry =
-                DownloadSharedPreferenceHelper.getInstance().getDownloadSharedPreferenceEntry(id);
-
-        if (entry == null) return;
-
-        DownloadInfo downloadInfo = new DownloadInfo.Builder().setContentId(id).build();
-
-        notifier.removeDownloadNotification(entry.notificationId, downloadInfo);
-    }
-
-    /**
-     * Returns whether we should suppress download complete notification based
-     * on the origin app of the download.
-     * @param originString the qualified string form of an OfflinePageOrigin
-     */
-    private static boolean shouldSuppressCompletedNotification(String originString) {
-        OfflinePageOrigin origin = new OfflinePageOrigin(originString);
-        return AppHooks.get().getOfflinePagesSuppressNotificationPackages().contains(
-                origin.getAppName());
-    }
-
-    /**
-     * Returns whether the notification is suppressed. Suppression is determined
-     * based on the origin app of the download.
-     *
-     * @param originString the qualified string form of an OfflinePageOrigin
-     * @param guid GUID of a request to download a page related to the notification.
-     */
-    @CalledByNative
-    private static boolean maybeSuppressNotification(String originString, String guid) {
-        if (shouldSuppressCompletedNotification(originString)) {
-            suppressNotification(guid);
-            return true;
-        }
-        return false;
-    }
-
-    /**
      * Shows a "Downloading ..." toast for the requested items already scheduled for download.
      */
     @CalledByNative
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/payments/ChromePaymentRequestService.java b/chrome/android/java/src/org/chromium/chrome/browser/payments/ChromePaymentRequestService.java
index 4c843e2..ac185889 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/payments/ChromePaymentRequestService.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/payments/ChromePaymentRequestService.java
@@ -354,7 +354,8 @@
         // Only allowing payment apps that own their own UIs.
         // This excludes AutofillPaymentInstrument as its UI is rendered inline in
         // the app selector UI, thus can't be skipped.
-        if (!urlPaymentMethodIdentifiersSupported && !mDelegate.skipUiForBasicCard()) {
+        if (!urlPaymentMethodIdentifiersSupported && !mDelegate.skipUiForBasicCard()
+                && !mSpec.isSecurePaymentConfirmationRequested()) {
             shouldSkipAppSelector = false;
         }
         if (mSkipToGPayHelper != null) shouldSkipAppSelector = true;
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/DetachedResourceRequestTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/DetachedResourceRequestTest.java
index aa2795e..b4d92dc 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/DetachedResourceRequestTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/DetachedResourceRequestTest.java
@@ -393,14 +393,12 @@
     }
 
     /**
-     * Demonstrates upcoming restrictions on cookies in third party contexts
+     * Demonstrates that cookies are SameSite=Lax by default, and cookies in third-party contexts
+     * require both SameSite=None and Secure.
      */
     @Test
     @SmallTest
-    @EnableFeatures({ChromeFeatureList.SAME_SITE_BY_DEFAULT_COOKIES,
-            ChromeFeatureList.COOKIES_WITHOUT_SAME_SITE_MUST_BE_SECURE})
-    public void
-    testUpcomingThirdPartyCookiePolicies() throws Exception {
+    public void testSameSiteLaxByDefaultCookies() throws Exception {
         CustomTabsSessionToken session = prepareSession();
         CustomTabsTestUtils.warmUpAndWait();
         mServer = EmbeddedTestServer.createAndStartHTTPSServer(mContext, ServerCertificate.CERT_OK);
diff --git a/chrome/app/resources/chromium_strings_is.xtb b/chrome/app/resources/chromium_strings_is.xtb
index d47d51a..d4a6286 100644
--- a/chrome/app/resources/chromium_strings_is.xtb
+++ b/chrome/app/resources/chromium_strings_is.xtb
@@ -139,7 +139,7 @@
 <translation id="5438241569118040789"><ph name="PAGE_TITLE" /> - tilraunaútgáfa Chromium</translation>
 <translation id="5479196819031988440">Stýrikerfi Chromium getur ekki opnað þessa síðu.</translation>
 <translation id="5480860683791598150">Chromium þarf staðsetningaraðgang til að deila staðsetningu þinni með þessu vefsvæði</translation>
-<translation id="5481338274774984070">Chromium mælir með að þú hvorki sækir né opnir þessa skrá.</translation>
+<translation id="5481338274774984070">Chromium mælir með að þú sækir hvorki né opnir þessa skrá.</translation>
 <translation id="549669000822060376">Bíddu á meðan Chromium setur upp nýjustu kerfisuppfærslunar.</translation>
 <translation id="5496810170689441661">Chromium er að reyna að breyta aðgangsorðum. Sláðu inn Windows-aðgangsorðið þitt til að leyfa það.</translation>
 <translation id="5527463683072221100">Opna PDF-skjöl í Chromium</translation>
diff --git a/chrome/app/resources/generated_resources_af.xtb b/chrome/app/resources/generated_resources_af.xtb
index b9aa647..26d8cb2 100644
--- a/chrome/app/resources/generated_resources_af.xtb
+++ b/chrome/app/resources/generated_resources_af.xtb
@@ -711,6 +711,7 @@
 <translation id="173628468822554835">Het dit. Nuwe werwe wat jy besoek, sal by verstek nie kennisgewings vir jou stuur nie.</translation>
 <translation id="1736419249208073774">Verken</translation>
 <translation id="1737968601308870607">Lêerfout</translation>
+<translation id="1739684185846730053">Privacy Sandbox-proeflopies word nog aktief ontwikkel en is in uitgesoekte streke beskikbaar. Vir nou kan werwe Privacy Sandbox probeer terwyl hulle steeds huidige webtegnologieë soos derdepartywebkoekies gebruik.</translation>
 <translation id="174123615272205933">Gepasmaak</translation>
 <translation id="1741314857973421784">Gaan voort</translation>
 <translation id="1743570585616704562">Nie herken nie</translation>
@@ -1135,6 +1136,7 @@
 <translation id="217576141146192373">Kan nie drukker byvoeg nie. Gaan asseblief jou drukker se opstelling na en probeer weer.</translation>
 <translation id="2177950615300672361">Incognito-oortjie: <ph name="TAB_NAME" /></translation>
 <translation id="2178614541317717477">CA-kompromie</translation>
+<translation id="2179416702468739594">Soek tans beskikbare profiele. Dit kan veroorsaak dat jou selnetwerk vir 'n paar minute ontkoppel.</translation>
 <translation id="2182058453334755893">Gekopieer na jou knipbord</translation>
 <translation id="2184515124301515068">Laat Chrome kies wanneer webwerwe klank kan speel (aanbeveel)</translation>
 <translation id="2187675480456493911">Is met ander toestelle in jou rekening gesinkroniseer. Instellings wat deur ander gebruikers gewysig is, sal nie gesinkroniseer word nie. <ph name="LINK_BEGIN" />Kom meer te wete<ph name="LINK_END" /></translation>
@@ -1402,6 +1404,7 @@
 <translation id="2469375675106140201">Pasmaak speltoets</translation>
 <translation id="247051149076336810">Lêerdeling-URL</translation>
 <translation id="2470702053775288986">Nie-gesteunde uitbreidings gedeaktiveer</translation>
+<translation id="2470939964922472929">'n Verkeerde PIN is te veel kere ingevoer. Voer die persoonlike deblokkeringsleutel (PUK) van 8 syfers wat deur jou selfoonmaatskappy verskaf is in om 'n nuwe PIN op te stel.</translation>
 <translation id="2471469610750100598">Swart (verstek)</translation>
 <translation id="2471506181342525583">Liggingtoegang word toegelaat</translation>
 <translation id="2473195200299095979">Vertaal hierdie bladsy</translation>
@@ -1605,6 +1608,7 @@
 <translation id="2691440343905273290">Verander invoerinstellings</translation>
 <translation id="2693176596243495071">Oeps! 'n Onbekende fout het voorgekom. Probeer asseblief later weer of kontak jou administrateur as die probleem voortduur.</translation>
 <translation id="2699911226086014512">PIN-bewerking het misluk met kode <ph name="RETRIES" />.</translation>
+<translation id="2701330563083355633">Gedeel vanaf <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">Meld aan, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Leeslys</translation>
 <translation id="270358213449696159">Inhoud van Google Chrome-bedryfstelselbepalings</translation>
@@ -1697,6 +1701,7 @@
 <translation id="2785873697295365461">Lêerbeskrywers</translation>
 <translation id="2787354132612937472">–</translation>
 <translation id="2788135150614412178">+</translation>
+<translation id="2788468313014644040">Groepgetal</translation>
 <translation id="2789486458103222910">OK</translation>
 <translation id="2791529110887957050">Verwyder Linux</translation>
 <translation id="2791952154587244007">'n Fout het voorgekom. Kioskprogram sal nie outomaties op hierdie toestel kan begin nie.</translation>
@@ -1886,6 +1891,7 @@
 <translation id="2989123969927553766">Muisrolversnelling</translation>
 <translation id="2989474696604907455">nie aangeheg nie</translation>
 <translation id="2989786307324390836">DER-geënkodeerde binêre, enkele sertifikaat</translation>
+<translation id="2989805286512600854">Maak in 'n nuwe oortjie oop</translation>
 <translation id="2990313168615879645">Voeg Google-rekening by</translation>
 <translation id="2990583317361835189">Moenie werwe toelaat om bewegingsensors te gebruik nie</translation>
 <translation id="2992931425024192067">Wys alle kennisgewinginhoud</translation>
@@ -1997,6 +2003,7 @@
 <translation id="310671807099593501">Werf gebruik tans Bluetooth</translation>
 <translation id="3108931485517391283">Kan nie ontvang nie</translation>
 <translation id="3109724472072898302">Ingevou</translation>
+<translation id="3113592018909187986">Jy het 1 poging oor. Jy sal nie hierdie netwerk kan gebruik voordat jy 'n nuwe PIN opgestel het nie.</translation>
 <translation id="311394601889664316">Moenie werwe toelaat om lêers of vouers op jou toestel te wysig nie</translation>
 <translation id="3115147772012638511">Wag tans vir kas …</translation>
 <translation id="3115580024857770654">Vou alles in</translation>
@@ -2285,6 +2292,7 @@
 <translation id="3440663250074896476">Meer handelinge vir <ph name="BOOKMARK_NAME" /></translation>
 <translation id="3441653493275994384">Skerm</translation>
 <translation id="3441663102605358937">Meld weer by <ph name="ACCOUNT" /> aan om hierdie rekening te verifieer</translation>
+<translation id="3444641828375597683">Adverteerders en uitgewers kan FLoC gebruik, wat later op hierdie bladsy beskryf word.</translation>
 <translation id="3445047461171030979">Vinnige antwoorde in Google Assistent</translation>
 <translation id="3445288400492335833"><ph name="MINUTES" /> min.</translation>
 <translation id="3445925074670675829">USB C-toestel</translation>
@@ -2868,6 +2876,7 @@
 <translation id="4036778507053569103">Die beleid wat van die bediener afgelaai is, is ongeldig.</translation>
 <translation id="4037084878352560732">Perd</translation>
 <translation id="4037889604535939429">Wysig persoon</translation>
+<translation id="4040753847560036377">Verkeerde PUK</translation>
 <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Verlaat bladsy}other{Verlaat bladsye}}</translation>
 <translation id="4044612648082411741">Voer jou sertifikaatwagwoord in</translation>
 <translation id="4044708573046946214">Skermslotwagwoord</translation>
@@ -3076,6 +3085,7 @@
 <translation id="4297813521149011456">Skermrotasie</translation>
 <translation id="4299022904780065004">Nuwe &amp;Incognito-venster</translation>
 <translation id="4301671483919369635">Hierdie bladsy word toegelaat om lêers te wysig</translation>
+<translation id="4302605047395093221">Enigiemand wat hierdie toestel gebruik, moet die PIN invoer om aan hierdie selnetwerk te koppel</translation>
 <translation id="4303079906735388947">Stel 'n nuwe PIN vir jou sekuriteitsleutel op</translation>
 <translation id="4305402730127028764">Kopieer na <ph name="DEVICE_NAME" /></translation>
 <translation id="4305817255990598646">Skakel oor</translation>
@@ -3261,6 +3271,7 @@
 <translation id="4510479820467554003">Ouerrekeninglys</translation>
 <translation id="4510614391273086606">Linux-lêers en -programme word tans na hul gerugsteunde toestand toe teruggestel.</translation>
 <translation id="451102079304155829">mandjies</translation>
+<translation id="4513275008300099962">Deaktiveer vensterkontrolesoorlegger</translation>
 <translation id="4513946894732546136">Terugvoer</translation>
 <translation id="451407183922382411">Aangedryf deur <ph name="COMPANY_NAME" /></translation>
 <translation id="4514610446763173167">Wissel video tussen speel en laat wag</translation>
@@ -4606,10 +4617,12 @@
 <translation id="6026819612896463875"><ph name="WINDOW_TITLE" /> – USB-toestel is gekoppel</translation>
 <translation id="6028117231645531007">Voeg vingerafdruk by</translation>
 <translation id="6031600495088157824">Invoeropsies in nutsbalk</translation>
+<translation id="6032091552407840792">Hierdie proeflopie is net in <ph name="BEGIN_LINK" />sommige streke<ph name="END_LINK" /> aktief.</translation>
 <translation id="6032715498678347852">Om aan 'n uitbreiding toegang tot hierdie werf te gee, moet jy dit klik.</translation>
 <translation id="6032912588568283682">Lêerstelsel</translation>
 <translation id="603539183851330738">Ontdoen Outokorrigeer-knoppie. Stel terug na <ph name="TYPED_WORD" />.  Druk Enter om te aktiveer, Escape om te weier.</translation>
 <translation id="6038929619733116134">Blokkeer as werf indringerige of misleidende advertensies wys</translation>
+<translation id="603895874132768835">Jy sal nie hierdie netwerk kan gebruik voordat jy 'n nuwe PIN opgestel het nie</translation>
 <translation id="6039651071822577588">Netwerkeiendom-woordeboek is misvorm</translation>
 <translation id="6040143037577758943">Maak toe</translation>
 <translation id="6041046205544295907"><ph name="BEGIN_PARAGRAPH1" />Google se liggingdiens gebruik bronne soos Wi-Fi, selnetwerke en sensors om jou toestel se ligging te help beraam.<ph name="END_PARAGRAPH1" />
@@ -4857,6 +4870,7 @@
 <translation id="6292699686837272722">Oortjies krimp na medium breedte</translation>
 <translation id="6295158916970320988">Alle werwe</translation>
 <translation id="6295855836753816081">Stoor tans …</translation>
+<translation id="6296410173147755564">Ongeldige PUK</translation>
 <translation id="6298962879096096191">Gebruik Google Play om Android-programme te installeer</translation>
 <translation id="6300177430812514606">Mag nie data klaar stuur of ontvang nie</translation>
 <translation id="630065524203833229">Gaan uit</translation>
@@ -4903,6 +4917,7 @@
 <translation id="6340526405444716530">Personalisering</translation>
 <translation id="6341850831632289108">Bespeur jou fisieke ligging</translation>
 <translation id="6342069812937806050">Nou net</translation>
+<translation id="6343003829431264373">Net ewe bladsye</translation>
 <translation id="6344170822609224263">Gaan by lys netwerkverbindings in</translation>
 <translation id="6344576354370880196">Gestoorde drukkers</translation>
 <translation id="6345418402353744910">Jou gebruikernaam en wagwoord word vir die instaanbediener <ph name="PROXY" /> vereis sodat die admin jou netwerk kan opstel</translation>
@@ -5151,6 +5166,7 @@
 <translation id="6624535038674360844"><ph name="FILE_NAME" /> het sensitiewe of gevaarlike inhoud. Vra sy eienaar om dit reg te stel.</translation>
 <translation id="6624687053722465643">Soetigheid</translation>
 <translation id="6628328486509726751">Het <ph name="WEBRTC_LOG_UPLOAD_TIME" /> opgelaai</translation>
+<translation id="6629518321609546825">Voer minstens 4 syfers in</translation>
 <translation id="6630752851777525409"><ph name="EXTENSION_NAME" /> wil permanente toegang hê tot 'n sertifikaat om hom namens jou te staaf.</translation>
 <translation id="6635362468090274700">Niemand kan met jou deel voordat jy jouself sigbaar maak nie.<ph name="BR" /><ph name="BR" />Om jouself tydelik sigbaar te maak, moet jy die statusarea oopmaak en Nabysigbaarheid aanskakel.</translation>
 <translation id="6635944431854494329">Die eienaar kan hierdie kenmerk beheer vanaf Instellings &gt; Gevorderd &gt; Stuur diagnostiese en gebruiksdata outomaties na Google toe.</translation>
@@ -5189,6 +5205,7 @@
 <translation id="6664774537677393800">Iets het verkeerd geloop met die oopmaak van jou profiel. Meld asseblief af en meld dan weer aan.</translation>
 <translation id="6670142487971298264"><ph name="APP_NAME" /> is nou beskikbaar</translation>
 <translation id="6671320560732140690">{COUNT,plural, =1{'n adres}other{# adresse}}</translation>
+<translation id="6671497123040790595">Stel tans bestuur deur <ph name="MANAGER" /> op</translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">Voer jou wagfrase in om sinkronisering te begin</translation>
 <translation id="6675665718701918026">Wystoestel is gekoppel</translation>
@@ -5197,6 +5214,7 @@
 <translation id="6680442031740878064">Beskikbaar: <ph name="AVAILABLE_SPACE" /></translation>
 <translation id="6680650203439190394">Gradeer</translation>
 <translation id="6681668084120808868">Neem foto</translation>
+<translation id="6683087162435654533">Stel alle oortjies terug</translation>
 <translation id="6683948477137300040">Wys toestel-EID en QR-kodeopspringer</translation>
 <translation id="6684827949542560880">Laai tans die jongste opdatering af</translation>
 <translation id="668599234725812620">Maak Google Play oop</translation>
@@ -5766,6 +5784,7 @@
 <translation id="7308643132139167865">Webwerftale</translation>
 <translation id="7309257895202129721">Wys kontroles</translation>
 <translation id="7310598146671372464">Kon nie aanmeld nie. Die bediener steun nie gespesifiseerde Kerberos-enkripsietipes nie. Kontak asseblief jou administrateur.</translation>
+<translation id="7315168816273861089">Aktiveer vensterkontrolesoorlegger</translation>
 <translation id="7320213904474460808">Verstek vir netwerk</translation>
 <translation id="7321545336522791733">Bediener onbereikbaar</translation>
 <translation id="7324297612904500502">Beta-forum</translation>
@@ -5942,7 +5961,9 @@
 <translation id="7506541170099744506">Jou <ph name="DEVICE_TYPE" /> is suksesvol ingeskryf vir ondernemingbestuur.</translation>
 <translation id="7507207699631365376">Lees hierdie verskaffer se <ph name="BEGIN_LINK" />privaatheidsbeleid<ph name="END_LINK" /></translation>
 <translation id="7507930499305566459">Statusreageerder se sertifikaat</translation>
+<translation id="7509097596023256288">Stel tans bestuur op</translation>
 <translation id="7509246181739783082">Verifieer jou identiteit</translation>
+<translation id="7511415964832680006">Wanneer dit aan is, kan werwe die privaatheidinstandhoudingtegnieke wat hier gewys word, gebruik om hul inhoud en dienste te verskaf. Dit sluit alternatiewe vir kruiswerfnasporing in. Nog proeflopies kan oor tyd bygevoeg word.</translation>
 <translation id="7513029293694390567">Meld outomaties aan by webwerwe wat gebergde eiebewyse gebruik. As dit gedeaktiveer is, sal jy elke keer vir bevestiging gevra word voordat jy by 'n webwerf aanmeld.</translation>
 <translation id="7514239104543605883">Kopieer na jou toestel toe</translation>
 <translation id="7514365320538308">Laai af</translation>
@@ -6303,6 +6324,8 @@
 <translation id="7876027585589532670">Kan nie kortpad wysig nie</translation>
 <translation id="7877451762676714207">Onbekende bedienerfout. Probeer asseblief weer, of kontak die bedieneradministrateur.</translation>
 <translation id="7879631849810108578">Kortpadstel: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
+<translation id="7880685873361171388">Wanneer dit aan is en die status aktief is, gebruik Chrome jou blaaigeskiedenis oor 7 dae om 'n groep, of "kohort", te bepaal waarin jy is. Adverteerders kan advertensies vir die groep kies. Jou blaaigeskiedenis word privaat gehou op jou toestel. Hierdie proeflopie is net in 
+    <ph name="BEGIN_LINK" />sommige streke<ph name="END_LINK" /> aktief.</translation>
 <translation id="7880823633812189969">Plaaslike data sal uitgevee word wanneer jy herbegin</translation>
 <translation id="7881066108824108340">DNS</translation>
 <translation id="7881483672146086348">Bekyk rekening</translation>
@@ -6461,6 +6484,7 @@
 <translation id="804786196054284061">Lisensie-ooreenkoms vir eindgebruikers</translation>
 <translation id="8048977114738515028">Skep 'n werkskermkortpad op jou toestel om direk na hierdie profiel toe te gaan</translation>
 <translation id="8049029041626250638">Koppel 'n sleutelbord of muis. As jy Bluetooth-toestelle gebruik, moet jy seker maak dat jou toestelle gereed is om saam te bind.</translation>
+<translation id="8049184478152619004">Voer persoonlike deblokkeringsleutel (PUK) in</translation>
 <translation id="8049705080247101012">Google het "<ph name="EXTENSION_NAME" />" as kwaadwillig gevlag en installering is verhoed</translation>
 <translation id="8049948037269924837">Raakpaneel – omgekeerde rollees</translation>
 <translation id="8050038245906040378">Microsoft se kommersiële kode-ondertekening</translation>
@@ -6497,6 +6521,7 @@
 <translation id="8082106343289440791">Bind saam met "<ph name="DEVICE_NAME" />"?</translation>
 <translation id="8082390128630131497">As jy ADB-ontfouting deaktiveer, sal <ph name="DEVICE_TYPE" /> teruggestel word na fabriekinstellings. Alle gebruikerrekeninge en plaaslike data sal uitgevee word.</translation>
 <translation id="8084114998886531721">Gestoorde wagwoord</translation>
+<translation id="8084510406207562688">Stel alle oortjies terug</translation>
 <translation id="8086015605808120405">Stel <ph name="PRINTER_NAME" /> tans op …</translation>
 <translation id="8086442853986205778">Stel <ph name="PRINTER_NAME" /> op</translation>
 <translation id="80866457114322936">{NUM_FILES,plural, =1{Hierdie lêer is geënkripteer. Vra die eienaar om dit te dekripteer.}other{Sommige van hierdie lêers is geënkripteer. Vra hul eienaar om hulle te dekripteer.}}</translation>
@@ -6538,6 +6563,7 @@
 <translation id="8119438628456698432">Genereer tans loglêers …</translation>
 <translation id="811994229154425014">Dubbelspasie om punt te tik</translation>
 <translation id="8120505434908124087">Installeer e-SIM-profiel</translation>
+<translation id="812260729110117038">Adverteerders en uitgewers kan die doeltreffendheid van advertensies op 'n manier bestudeer wat jou nie oor werwe heen naspoor nie.</translation>
 <translation id="8123590694679414600">Data is met jou wagfrase geënkripteer op
           <ph name="TIME" />. Dit sluit nie betaalmetodes en adresse van Google Pay af in nie.</translation>
 <translation id="81238879832906896">Geel-en-wit blom</translation>
@@ -6575,6 +6601,7 @@
 <translation id="816055135686411707">Kon nie sertifikaatvertroue stel nie</translation>
 <translation id="8160775796528709999">Kry onderskrifte vir jou oudio en video deur Intydse Onderskrifte in instellings te aktiveer</translation>
 <translation id="816095449251911490"><ph name="SPEED" /> – <ph name="RECEIVED_AMOUNT" />, <ph name="TIME_REMAINING" /></translation>
+<translation id="81610453212785426">Met <ph name="BEGIN_LINK" />Privacy Sandbox<ph name="END_LINK" /> ontwikkel Chrome nuwe tegnologieë om jou teen kruiswerfnasporing te beveilig terwyl dit die oop web in stand hou.</translation>
 <translation id="8161293209665121583">Lesermodus vir webbladsye</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{Skuif oortjie na nuwe venster toe}other{Skuif oortjies na nuwe venster toe}}</translation>
 <translation id="8165997195302308593">Crostini-poortaanstuur</translation>
@@ -7368,6 +7395,7 @@
 <translation id="9031549947500880805">Rugsteun in Google Drive. Laai jou data maklik terug of wissel enige tyd jou toestel. Jou rugsteun sluit programdata in.</translation>
 <translation id="9033765790910064284">Gaan in elk geval voort</translation>
 <translation id="9033857511263905942">Plak</translation>
+<translation id="9035689366572880647">Voer huidige PIN in</translation>
 <translation id="9037640663275993951">Toestel word nie toegelaat nie</translation>
 <translation id="9037818663270399707">Jou verbinding is nie vir alle netwerkverkeer privaat nie</translation>
 <translation id="9037965129289936994">Wys oorspronklike</translation>
@@ -7443,6 +7471,7 @@
 <translation id="9112748030372401671">Verander jou muurpapier</translation>
 <translation id="9112786533191410418"><ph name="FILE_NAME" /> kan gevaarlik wees. Stuur na Google om geskandeer te word?</translation>
 <translation id="9112987648460918699">Vind …</translation>
+<translation id="9113240369465613386">Net onewe bladsye</translation>
 <translation id="9114663181201435112">Meld maklik aan</translation>
 <translation id="9115675100829699941">Boekmerke</translation>
 <translation id="9116465289595958864">Laas gewysig</translation>
@@ -7597,6 +7626,7 @@
 <translation id="991413375315957741">beweging- of ligsensors</translation>
 <translation id="992032470292211616">Uitbreidings, programme en temas kan jou toestel beskadig. Is jy seker jy wil voortgaan?</translation>
 <translation id="992256792861109788">Pienk</translation>
+<translation id="992401651319295351">Jy het <ph name="RETRIES" /> pogings oor. Jy sal nie hierdie netwerk kan gebruik voordat jy 'n nuwe PIN opgestel het nie.</translation>
 <translation id="992592832486024913">Deaktiveer ChromeVox (gesproke terugvoering)</translation>
 <translation id="992778845837390402">Linux-rugsteun vind tans plaas</translation>
 <translation id="993540765962421562">Besig om te installeer</translation>
diff --git a/chrome/app/resources/generated_resources_am.xtb b/chrome/app/resources/generated_resources_am.xtb
index d586b0771..def5bdca 100644
--- a/chrome/app/resources/generated_resources_am.xtb
+++ b/chrome/app/resources/generated_resources_am.xtb
@@ -1599,6 +1599,7 @@
 <translation id="2691440343905273290">የግቤት ቅንብሮችን ይቀይሩ</translation>
 <translation id="2693176596243495071">ውይ! አንድ ያልታወቀ ስህተት ተከስቷል። እባክዎ ቆይተው እንደገና ይሞክሩ ወይም ችግሩ ከቀጠለ አስተዳዳሪዎን ያነጋግሩ።</translation>
 <translation id="2699911226086014512">ከኮድ <ph name="RETRIES" /> ጋር የፒን ሥርዓተ ክወና ተሰናክሏል።</translation>
+<translation id="2701330563083355633">በ <ph name="DEVICE_NAME" /> የተጋራ</translation>
 <translation id="2701737434167469065">ግባ፣ <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">የንባብ ዝርዝር</translation>
 <translation id="270358213449696159">የGoogle Chrome OS ውል ይዘቶች</translation>
@@ -1880,6 +1881,7 @@
 <translation id="2989123969927553766">የመዳፊት ሽብለላ ማፍጠኛ</translation>
 <translation id="2989474696604907455">አልተያያዘም</translation>
 <translation id="2989786307324390836">DER-encoded binary፣ ነጠላ ሰርቲፊኬት</translation>
+<translation id="2989805286512600854">በአዲስ ትር ክፈት</translation>
 <translation id="2990313168615879645">የGoogle መለያን አክል</translation>
 <translation id="2990583317361835189">ጣቢያዎች የእንቅስቃሴ ዳሳሾችን እንዲጠቀሙ አይፍቀዱ</translation>
 <translation id="2992931425024192067">ሁሉንም የማሳወቂያ ይዘቶች አሳይ</translation>
diff --git a/chrome/app/resources/generated_resources_ar.xtb b/chrome/app/resources/generated_resources_ar.xtb
index 29bb749..79cdc28 100644
--- a/chrome/app/resources/generated_resources_ar.xtb
+++ b/chrome/app/resources/generated_resources_ar.xtb
@@ -1591,6 +1591,7 @@
 <translation id="2691440343905273290">تغيير إعدادات الإدخال</translation>
 <translation id="2693176596243495071">عفوًا،  حدث خطأ غير معروف. يُرجى إعادة المحاولة فيما بعد أو الاتصال بالمشرف في حال استمرار المشكلة.</translation>
 <translation id="2699911226086014512">تعذَّر إتمام عملية رقم التعريف الشخصي باستخدام الرمز <ph name="RETRIES" />.</translation>
+<translation id="2701330563083355633">تمت المشاركة من <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">تسجيل الدخول، <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">قائمة القراءة</translation>
 <translation id="270358213449696159">‏محتوى بنود نظام التشغيل Google Chrome</translation>
@@ -1872,6 +1873,7 @@
 <translation id="2989123969927553766">تسريع التمرير عبر الماوس</translation>
 <translation id="2989474696604907455">غير متصل</translation>
 <translation id="2989786307324390836">‏حفظ شهادة واحدة بتشفير DER ثنائي</translation>
+<translation id="2989805286512600854">فتح في علامة تبويب جديدة</translation>
 <translation id="2990313168615879645">‏إضافة حساب Google</translation>
 <translation id="2990583317361835189">عدم السماح للمواقع الإلكترونية باستخدام أجهزة استشعار الحركة</translation>
 <translation id="2992931425024192067">عرض كل محتوى الإشعارات</translation>
diff --git a/chrome/app/resources/generated_resources_as.xtb b/chrome/app/resources/generated_resources_as.xtb
index a58e2b5..ccaf99e 100644
--- a/chrome/app/resources/generated_resources_as.xtb
+++ b/chrome/app/resources/generated_resources_as.xtb
@@ -1603,6 +1603,7 @@
 <translation id="2691440343905273290">ইনপুট ছেটিং সলনি কৰক</translation>
 <translation id="2693176596243495071">আমি দুঃখিত!  কোনো অজ্ঞাত আসোঁৱাহ হৈছে। অনুগ্ৰহ কৰি পিছত আকৌ চেষ্টা কৰক বা সমস্যাটো যদি হৈয়েই থাকে, নিজৰ প্ৰশাসকৰ সৈতে যোগাযোগ কৰক।</translation>
 <translation id="2699911226086014512"><ph name="RETRIES" /> ক'ডৰ সৈতে পিনৰ কাৰ্য বিফল হ'ল।</translation>
+<translation id="2701330563083355633"><ph name="DEVICE_NAME" />ৰ পৰা শ্বেয়াৰ কৰা হৈছে</translation>
 <translation id="2701737434167469065">ছাইন ইন কৰক, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">পঢ়াৰ সূচী</translation>
 <translation id="270358213449696159">Google Chrome OSৰ চৰ্তাৱলীৰ সমল</translation>
@@ -1883,6 +1884,7 @@
 <translation id="2989123969927553766">মাউছ স্ক্ৰ’লৰ এক্সিলাৰেশ্বন</translation>
 <translation id="2989474696604907455">সংলগ্ন কৰা হোৱা নাই</translation>
 <translation id="2989786307324390836">DER-এনক’ড কৰা বাইনেৰী, একক প্ৰমাণপত্ৰ</translation>
+<translation id="2989805286512600854">নতুন টেবত খোলক</translation>
 <translation id="2990313168615879645">Google একাউণ্ট যোগ দিয়ক</translation>
 <translation id="2990583317361835189">ছাইটক ম’শ্বন ছেন্সৰ ব্যৱহাৰ কৰাৰ অনুমতি নিদিব</translation>
 <translation id="2992931425024192067">সকলো জাননীৰ সমল দেখুৱাওক</translation>
diff --git a/chrome/app/resources/generated_resources_az.xtb b/chrome/app/resources/generated_resources_az.xtb
index 2f3ad57..a736bab 100644
--- a/chrome/app/resources/generated_resources_az.xtb
+++ b/chrome/app/resources/generated_resources_az.xtb
@@ -1589,6 +1589,7 @@
 <translation id="2691440343905273290">Daxiletmə ayarlarını dəyişin</translation>
 <translation id="2693176596243495071">Xəta oldu. Sonra cəhd edin və ya administratorla əlaqə saxlayın.</translation>
 <translation id="2699911226086014512">PIN əməliyyatı <ph name="RETRIES" /> kodu ilə alınmadı.</translation>
+<translation id="2701330563083355633"><ph name="DEVICE_NAME" /> adlı cihazdan paylaşıldı</translation>
 <translation id="2701737434167469065">Daxil olun, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Siyahı oxunur</translation>
 <translation id="270358213449696159">Google Chrome OS Şərtlərinin kontentləri</translation>
@@ -1869,6 +1870,7 @@
 <translation id="2989123969927553766">Siçanın sürüşdürmə sürəti</translation>
 <translation id="2989474696604907455">qoşulmayıb</translation>
 <translation id="2989786307324390836">DER-kodlaşdırılmış binar, tək sertifikat</translation>
+<translation id="2989805286512600854">Yeni Paneldə açın</translation>
 <translation id="2990313168615879645">Google Hesabı əlavə edin</translation>
 <translation id="2990583317361835189">Saytlara hərəkət sensorlarından istifadə etmək icazəsi verməyin</translation>
 <translation id="2992931425024192067">Bütün bildirişlər göstərilsin</translation>
diff --git a/chrome/app/resources/generated_resources_be.xtb b/chrome/app/resources/generated_resources_be.xtb
index 91105a9..5fb8440 100644
--- a/chrome/app/resources/generated_resources_be.xtb
+++ b/chrome/app/resources/generated_resources_be.xtb
@@ -1596,6 +1596,7 @@
 <translation id="2691440343905273290">Змяніць налады ўводу</translation>
 <translation id="2693176596243495071">Памылка!  Адбылася невядомая памылка. Паўтарыце спробу пазней або звярніцеся да адміністратара, калі праблема не знікла.</translation>
 <translation id="2699911226086014512">Не ўдалося выканаць аперацыю з PIN-кодам. Код памылкі: <ph name="RETRIES" />.</translation>
+<translation id="2701330563083355633">Абагулена з прылады <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">Увайсці, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Спіс чытання</translation>
 <translation id="270358213449696159">Змест умоў выкарыстання АС Google Chrome</translation>
@@ -1877,6 +1878,7 @@
 <translation id="2989123969927553766">Паскарэнне прагорткі мышшу</translation>
 <translation id="2989474696604907455">не далучана</translation>
 <translation id="2989786307324390836">Адзін двайковы сертыфікат з DER-шыфраваннем</translation>
+<translation id="2989805286512600854">Адкрыць у новай укладцы</translation>
 <translation id="2990313168615879645">Дадаць Уліковы запіс Google</translation>
 <translation id="2990583317361835189">Не дазваляць сайтам выкарыстоўваць датчыкі руху</translation>
 <translation id="2992931425024192067">Паказваць усе апавяшчэнні</translation>
diff --git a/chrome/app/resources/generated_resources_bg.xtb b/chrome/app/resources/generated_resources_bg.xtb
index 9bc481d0..ebf88cd 100644
--- a/chrome/app/resources/generated_resources_bg.xtb
+++ b/chrome/app/resources/generated_resources_bg.xtb
@@ -1601,6 +1601,7 @@
 <translation id="2691440343905273290">Промяна на настройките за въвеждане</translation>
 <translation id="2693176596243495071">Ами сега! Възникна неизвестна грешка. Моля, опитайте отново по-късно или се свържете с администратора си, ако проблемът продължи.</translation>
 <translation id="2699911226086014512">Операцията с ПИН кода не бе успешна: код <ph name="RETRIES" />.</translation>
+<translation id="2701330563083355633">Споделено от <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">Влизане в профила <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Списък за четене</translation>
 <translation id="270358213449696159">Съдържание на Общите условия на Google Chrome OS</translation>
@@ -1882,6 +1883,7 @@
 <translation id="2989123969927553766">Ускоряване на превъртането с мишката</translation>
 <translation id="2989474696604907455">не е свързано</translation>
 <translation id="2989786307324390836">DER кодирано двоично, единичен сертификат</translation>
+<translation id="2989805286512600854">Отваряне в нов раздел</translation>
 <translation id="2990313168615879645">Добавяне на профил в Google</translation>
 <translation id="2990583317361835189">Да не се разрешава на сайтовете да използват сензорите за движение</translation>
 <translation id="2992931425024192067">Показване на цялото съдържание от известията</translation>
diff --git a/chrome/app/resources/generated_resources_bn.xtb b/chrome/app/resources/generated_resources_bn.xtb
index 80603c2..404613b7 100644
--- a/chrome/app/resources/generated_resources_bn.xtb
+++ b/chrome/app/resources/generated_resources_bn.xtb
@@ -1596,6 +1596,7 @@
 <translation id="2691440343905273290">ইনপুট সেটিংস পরিবর্তন করুন</translation>
 <translation id="2693176596243495071">একটি অজানা সমস্যা হয়েছে। অনুগ্রহ করে পরে আবার চেষ্টা করুন বা সমস্যাটি হতে থাকলে আপনার প্রশাসককে জানান।</translation>
 <translation id="2699911226086014512">পিন ভিত্তিক কাজটি সঠিকভাবে করা যায়নি, সমস্যার কোড <ph name="RETRIES" />।</translation>
+<translation id="2701330563083355633"><ph name="DEVICE_NAME" /> থেকে শেয়ার করা হয়েছে</translation>
 <translation id="2701737434167469065">সাইন-ইন করুন, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">পড়ার তালিকা</translation>
 <translation id="270358213449696159">Google Chrome OS শর্তাদির সামগ্রী</translation>
@@ -1874,6 +1875,7 @@
 <translation id="2989123969927553766">মাউস স্ক্রল করার অ্যাক্সিলারেশন</translation>
 <translation id="2989474696604907455">সংযুক্ত নয়</translation>
 <translation id="2989786307324390836">DER-এনকোডেড বাইনারি, একক সার্টিফিকেট</translation>
+<translation id="2989805286512600854">নতুন ট্যাবে খুলুন</translation>
 <translation id="2990313168615879645">Google অ্যাকাউন্ট যোগ করুন</translation>
 <translation id="2990583317361835189">সাইটগুলিকে মোশন সেন্সর ব্যবহার করতে দেয় না</translation>
 <translation id="2992931425024192067">সব বিজ্ঞপ্তি দেখতে চাই</translation>
diff --git a/chrome/app/resources/generated_resources_bs.xtb b/chrome/app/resources/generated_resources_bs.xtb
index a7d5c93..de35711 100644
--- a/chrome/app/resources/generated_resources_bs.xtb
+++ b/chrome/app/resources/generated_resources_bs.xtb
@@ -1604,6 +1604,7 @@
 <translation id="2691440343905273290">Promijenite postavke unosa</translation>
 <translation id="2693176596243495071">Ups!  Došlo je do nepoznate greške. Pokušajte ponovo kasnije ili se obratite administratoru ako se problem nastavi.</translation>
 <translation id="2699911226086014512">Korištenje PIN-a s kodom <ph name="RETRIES" /> nije uspjelo.</translation>
+<translation id="2701330563083355633">Dijeljeno s uređaja: <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">Prijavite se, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Lista za čitanje</translation>
 <translation id="270358213449696159">Sadržaj uslova Google Chrome OS-a</translation>
@@ -1884,6 +1885,7 @@
 <translation id="2989123969927553766">Ubrzanje klizanja miša</translation>
 <translation id="2989474696604907455">nije priključeno</translation>
 <translation id="2989786307324390836">DER šifrirani binarni sistem, pojedinačni certifikat</translation>
+<translation id="2989805286512600854">Otvori u novoj kartici</translation>
 <translation id="2990313168615879645">Dodaj Google račun</translation>
 <translation id="2990583317361835189">Nemoj dozvoliti web lokacijama korištenje senzora kretanja</translation>
 <translation id="2992931425024192067">Prikaži sav sadržaj obavještenja</translation>
diff --git a/chrome/app/resources/generated_resources_ca.xtb b/chrome/app/resources/generated_resources_ca.xtb
index a31fa82a..9b44947 100644
--- a/chrome/app/resources/generated_resources_ca.xtb
+++ b/chrome/app/resources/generated_resources_ca.xtb
@@ -1590,6 +1590,7 @@
 <translation id="2691440343905273290">Canvia la configuració de la introducció</translation>
 <translation id="2693176596243495071">S'ha produït un error desconegut. Torna-ho a provar més tard o contacta amb l'administrador si el problema no es resol.</translation>
 <translation id="2699911226086014512">Ha fallat l'operació del PIN; codi: <ph name="RETRIES" />.</translation>
+<translation id="2701330563083355633">S'ha compartit des del dispositiu <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">Inicia la sessió, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Llista de lectura</translation>
 <translation id="270358213449696159">Contingut de les Condicions de Google Chrome OS</translation>
@@ -1871,6 +1872,7 @@
 <translation id="2989123969927553766">Acceleració de desplaçament del ratolí</translation>
 <translation id="2989474696604907455">no connectat</translation>
 <translation id="2989786307324390836">Binari codificat amb DER, certificat únic</translation>
+<translation id="2989805286512600854">Obre en una pestanya nova</translation>
 <translation id="2990313168615879645">Afegeix un Compte de Google</translation>
 <translation id="2990583317361835189">No permetis que els llocs web utilitzin sensors de moviment</translation>
 <translation id="2992931425024192067">Mostra tot el contingut de les notificacions</translation>
diff --git a/chrome/app/resources/generated_resources_cs.xtb b/chrome/app/resources/generated_resources_cs.xtb
index 6714123..388668a 100644
--- a/chrome/app/resources/generated_resources_cs.xtb
+++ b/chrome/app/resources/generated_resources_cs.xtb
@@ -1591,6 +1591,7 @@
 <translation id="2691440343905273290">Změnit nastavení vstupu</translation>
 <translation id="2693176596243495071">Jejda! Došlo k neznámé chybě. Zkuste to znovu později, a pokud problém bude přetrvávat, kontaktujte administrátora.</translation>
 <translation id="2699911226086014512">Operace s kódem PIN selhala. Kód chyby: <ph name="RETRIES" />.</translation>
+<translation id="2701330563083355633">Sdíleno ze zařízení <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">Přihlásit se, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Seznam četby</translation>
 <translation id="270358213449696159">Obsah smluvních podmínek systému Google Chrome OS</translation>
@@ -1871,6 +1872,7 @@
 <translation id="2989123969927553766">Zrychlení posouvání myší</translation>
 <translation id="2989474696604907455">nepřipojeno</translation>
 <translation id="2989786307324390836">Binární soubor kódovaný DER, jeden certifikát</translation>
+<translation id="2989805286512600854">Otevřít v nové kartě</translation>
 <translation id="2990313168615879645">Přidat účet Google</translation>
 <translation id="2990583317361835189">Nepovolovat webům používat senzory pohybu</translation>
 <translation id="2992931425024192067">Zobrazovat veškerý obsah oznámení</translation>
diff --git a/chrome/app/resources/generated_resources_da.xtb b/chrome/app/resources/generated_resources_da.xtb
index 1033167..816240b 100644
--- a/chrome/app/resources/generated_resources_da.xtb
+++ b/chrome/app/resources/generated_resources_da.xtb
@@ -1609,6 +1609,7 @@
 <translation id="2691440343905273290">Skift indstillinger for indtastning</translation>
 <translation id="2693176596243495071">Ups! Der opstod en ukendt fejl. Prøv igen senere, eller kontakt din administrator, hvis problemet fortsætter.</translation>
 <translation id="2699911226086014512">Pinkodehandlingen mislykkedes med koden <ph name="RETRIES" />.</translation>
+<translation id="2701330563083355633">Delt fra <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">Log ind, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Læseliste</translation>
 <translation id="270358213449696159">Indholdet i vilkårene for Google Chrome OS</translation>
@@ -1891,6 +1892,7 @@
 <translation id="2989123969927553766">Acceleration af rulning med mus</translation>
 <translation id="2989474696604907455">ikke tilknyttet</translation>
 <translation id="2989786307324390836">DER-kodet binær, enkeltcertifikat</translation>
+<translation id="2989805286512600854">Åbn på ny fane</translation>
 <translation id="2990313168615879645">Tilføj Google-konto</translation>
 <translation id="2990583317361835189">Tillad ikke, at websites anvender bevægelsessensorer</translation>
 <translation id="2992931425024192067">Vis alt indhold i notifikationer</translation>
diff --git a/chrome/app/resources/generated_resources_de.xtb b/chrome/app/resources/generated_resources_de.xtb
index c7758bb..26f63d9 100644
--- a/chrome/app/resources/generated_resources_de.xtb
+++ b/chrome/app/resources/generated_resources_de.xtb
@@ -1587,6 +1587,7 @@
 <translation id="2691440343905273290">Eingabeeinstellungen ändern</translation>
 <translation id="2693176596243495071">Hoppla! Ein unbekannter Fehler ist aufgetreten. Bitte versuchen Sie es später noch einmal oder wenden Sie sich an Ihren Administrator, wenn das Problem weiterhin besteht.</translation>
 <translation id="2699911226086014512">Fehler beim Festlegen der PIN. Fehlercode: <ph name="RETRIES" />.</translation>
+<translation id="2701330563083355633">Geteilt von <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">Anmelden, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Leseliste</translation>
 <translation id="270358213449696159">Inhalt der Google Chrome OS-Nutzungsbedingungen</translation>
@@ -1868,6 +1869,7 @@
 <translation id="2989123969927553766">Scroll-Beschleunigung für Maus</translation>
 <translation id="2989474696604907455">Nicht angeschlossen</translation>
 <translation id="2989786307324390836">DER-verschlüsselte Binärdatei, Einzelzertifikat</translation>
+<translation id="2989805286512600854">In neuem Tab öffnen</translation>
 <translation id="2990313168615879645">Google-Konto hinzufügen</translation>
 <translation id="2990583317361835189">Websites dürfen keine Bewegungssensoren verwenden</translation>
 <translation id="2992931425024192067">Gesamten Benachrichtigungsinhalt anzeigen</translation>
diff --git a/chrome/app/resources/generated_resources_el.xtb b/chrome/app/resources/generated_resources_el.xtb
index 4e9cb971..7ad5a6ec 100644
--- a/chrome/app/resources/generated_resources_el.xtb
+++ b/chrome/app/resources/generated_resources_el.xtb
@@ -1608,6 +1608,7 @@
 <translation id="2691440343905273290">Αλλαγή ρυθμίσεων εισόδου</translation>
 <translation id="2693176596243495071">Ωχ! Παρουσιάστηκε ένα άγνωστο σφάλμα. Δοκιμάστε ξανά αργότερα ή επικοινωνήστε με τον διαχειριστή σας εάν το πρόβλημα δεν επιλυθεί.</translation>
 <translation id="2699911226086014512">Η λειτουργία του PIN απέτυχε με τον κωδικό <ph name="RETRIES" />.</translation>
+<translation id="2701330563083355633">Κοινοποιήθηκε από <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">Σύνδεση, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Λίστα ανάγνωσης</translation>
 <translation id="270358213449696159">Περιεχόμενα όρων Google Chrome OS</translation>
@@ -1890,6 +1891,7 @@
 <translation id="2989123969927553766">Επιτάχυνση κύλισης ποντικιού</translation>
 <translation id="2989474696604907455">αποσυνδεδεμένη</translation>
 <translation id="2989786307324390836">Κωδικοποιημένο δυαδικό DER, πιστοποιητικό</translation>
+<translation id="2989805286512600854">Άνοιγμα σε Νέα Καρτέλα</translation>
 <translation id="2990313168615879645">Προσθήκη Λογαριασμού Google</translation>
 <translation id="2990583317361835189">Να μην επιτρέπεται στους ιστοτόπους να χρησιμοποιούν τους αισθητήρες κίνησης</translation>
 <translation id="2992931425024192067">Εμφάνιση όλου του περιεχομένου ειδοποιήσεων</translation>
diff --git a/chrome/app/resources/generated_resources_en-GB.xtb b/chrome/app/resources/generated_resources_en-GB.xtb
index fc2c1dd..edb7eb5b 100644
--- a/chrome/app/resources/generated_resources_en-GB.xtb
+++ b/chrome/app/resources/generated_resources_en-GB.xtb
@@ -1605,6 +1605,7 @@
 <translation id="2691440343905273290">Change input settings</translation>
 <translation id="2693176596243495071">Oops!  An unknown error occurred. Please try again later or contact your administrator if the issue persists.</translation>
 <translation id="2699911226086014512">PIN operation failed with code <ph name="RETRIES" />.</translation>
+<translation id="2701330563083355633">Shared from <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">Sign in, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Reading List</translation>
 <translation id="270358213449696159">Google Chrome OS Terms contents</translation>
@@ -1886,6 +1887,7 @@
 <translation id="2989123969927553766">Mouse scroll acceleration</translation>
 <translation id="2989474696604907455">not attached</translation>
 <translation id="2989786307324390836">DER-encoded binary, single certificate</translation>
+<translation id="2989805286512600854">Open in New Tab</translation>
 <translation id="2990313168615879645">Add Google Account</translation>
 <translation id="2990583317361835189">Don't allow sites to use motion sensors</translation>
 <translation id="2992931425024192067">Show all notification content</translation>
diff --git a/chrome/app/resources/generated_resources_es-419.xtb b/chrome/app/resources/generated_resources_es-419.xtb
index 46af81b..031e205 100644
--- a/chrome/app/resources/generated_resources_es-419.xtb
+++ b/chrome/app/resources/generated_resources_es-419.xtb
@@ -1587,6 +1587,7 @@
 <translation id="2691440343905273290">Cambiar la configuración de entrada</translation>
 <translation id="2693176596243495071">Se produjo un error desconocido. Vuelve a intentarlo más tarde o comunícate con tu administrador si el problema persiste.</translation>
 <translation id="2699911226086014512">No se pudo realizar la operación del PIN con el código <ph name="RETRIES" />.</translation>
+<translation id="2701330563083355633">Se compartió de <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">Acceder, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Lista de lectura</translation>
 <translation id="270358213449696159">Contenido de las Condiciones del Sistema operativo Google Chrome</translation>
@@ -1868,6 +1869,7 @@
 <translation id="2989123969927553766">Aceleración de desplazamiento del mouse</translation>
 <translation id="2989474696604907455">no conectado</translation>
 <translation id="2989786307324390836">Certificado binario único con codificación DER</translation>
+<translation id="2989805286512600854">Abrir en una nueva pestaña</translation>
 <translation id="2990313168615879645">Agregar Cuenta de Google</translation>
 <translation id="2990583317361835189">No permitir que los sitios utilicen sensores de movimiento</translation>
 <translation id="2992931425024192067">Mostrar todo el contenido de notificaciones</translation>
diff --git a/chrome/app/resources/generated_resources_es.xtb b/chrome/app/resources/generated_resources_es.xtb
index b952994..4f9920ab 100644
--- a/chrome/app/resources/generated_resources_es.xtb
+++ b/chrome/app/resources/generated_resources_es.xtb
@@ -1591,6 +1591,7 @@
 <translation id="2691440343905273290">Cambiar configuración de introducción de texto</translation>
 <translation id="2693176596243495071">¡Vaya! Se ha producido un error desconocido. Vuelve a intentarlo más tarde o ponte en contacto con el administrador si el problema persiste.</translation>
 <translation id="2699911226086014512">Error al realizar la operación con PIN con el código <ph name="RETRIES" />.</translation>
+<translation id="2701330563083355633">Compartido desde <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">Iniciar sesión, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Lista de lectura</translation>
 <translation id="270358213449696159">Contenido de las condiciones de Google Chrome OS</translation>
@@ -1871,6 +1872,7 @@
 <translation id="2989123969927553766">Aceleración de desplazamiento del ratón</translation>
 <translation id="2989474696604907455">no conectado</translation>
 <translation id="2989786307324390836">DER binario codificado, certificado único</translation>
+<translation id="2989805286512600854">Abrir en una pestaña nueva</translation>
 <translation id="2990313168615879645">Añadir cuenta de Google</translation>
 <translation id="2990583317361835189">No permitir que los sitios usen sensores de movimiento</translation>
 <translation id="2992931425024192067">Mostrar todo el contenido de las notificaciones</translation>
diff --git a/chrome/app/resources/generated_resources_et.xtb b/chrome/app/resources/generated_resources_et.xtb
index eee2a9c..43eab16 100644
--- a/chrome/app/resources/generated_resources_et.xtb
+++ b/chrome/app/resources/generated_resources_et.xtb
@@ -1596,6 +1596,7 @@
 <translation id="2691440343905273290">Sisestusmeetodi seadete muutmine</translation>
 <translation id="2693176596243495071">Vabandust!  Ilmnes tundmatu viga. Proovige hiljem uuesti või võtke probleemi püsimisel ühendust administraatoriga.</translation>
 <translation id="2699911226086014512">PIN-koodi toiming ebaõnnestus koodiga <ph name="RETRIES" />.</translation>
+<translation id="2701330563083355633">Jagas <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">Kontole <ph name="EMAIL" /> sisselogimine</translation>
 <translation id="2702801445560668637">Lugemisloend</translation>
 <translation id="270358213449696159">Google Chrome OS-i tingimuste sisu</translation>
@@ -1877,6 +1878,7 @@
 <translation id="2989123969927553766">Hiirega kerimise kiirendus</translation>
 <translation id="2989474696604907455">pole ühendatud</translation>
 <translation id="2989786307324390836">DER-i kodeeritud kahendsüsteem, üks sertifikaat</translation>
+<translation id="2989805286512600854">Ava uuel vahelehel</translation>
 <translation id="2990313168615879645">Lisa Google'i konto</translation>
 <translation id="2990583317361835189">Ära luba saitidel kasutada liikumisandureid</translation>
 <translation id="2992931425024192067">Kuva kogu märguande sisu</translation>
diff --git a/chrome/app/resources/generated_resources_eu.xtb b/chrome/app/resources/generated_resources_eu.xtb
index 256ee12..01d2c727 100644
--- a/chrome/app/resources/generated_resources_eu.xtb
+++ b/chrome/app/resources/generated_resources_eu.xtb
@@ -1590,6 +1590,7 @@
 <translation id="2691440343905273290">Aldatu idazketa-metodoaren ezarpenak</translation>
 <translation id="2693176596243495071">Errore ezezagun bat gertatu da. Saiatu berriro geroago edo, arazoa konpontzen ez bada, jarri administratzailearekin harremanetan.</translation>
 <translation id="2699911226086014512">Huts egin du PINaren eragiketak. <ph name="RETRIES" /> kodea jaso da.</translation>
+<translation id="2701330563083355633"><ph name="DEVICE_NAME" /> gailutik partekatu da</translation>
 <translation id="2701737434167469065">Hasi saioa, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Zerrenda</translation>
 <translation id="270358213449696159">Google Chrome OS baldintzen edukia</translation>
@@ -1870,6 +1871,7 @@
 <translation id="2989123969927553766">Saguarekin gora eta behera bizkorrago egiteko aukera</translation>
 <translation id="2989474696604907455">konektatu gabe</translation>
 <translation id="2989786307324390836">DER kodetze bitarra, ziurtagiri bakarra</translation>
+<translation id="2989805286512600854">Ireki fitxa berri batean</translation>
 <translation id="2990313168615879645">Gehitu Google-ko kontu bat</translation>
 <translation id="2990583317361835189">Ez eman mugimendu-sentsoreak erabiltzeko baimena webguneei</translation>
 <translation id="2992931425024192067">Erakutsi jakinarazpenen eduki guztia</translation>
diff --git a/chrome/app/resources/generated_resources_fa.xtb b/chrome/app/resources/generated_resources_fa.xtb
index dbc182f..c08acb0d 100644
--- a/chrome/app/resources/generated_resources_fa.xtb
+++ b/chrome/app/resources/generated_resources_fa.xtb
@@ -709,6 +709,7 @@
 <translation id="173628468822554835">متوجه شدم. به‌طور پیش‌فرض، سایت‌های جدیدی را که بازدید کرده‌اید برایتان اعلان نمی‌فرستند.</translation>
 <translation id="1736419249208073774">کاوش</translation>
 <translation id="1737968601308870607">اشکال پرونده</translation>
+<translation id="1739684185846730053">دوره آزمایشی «جعبه ایمنی حریم‌خصوصی» هنوز در مرحله توسعه فعال است و در مناطق منتخب دردسترس است. درحال‌حاضر، ممکن است سایت‌ها همچنان که از فناوری‌های کوکی‌های شخص ثالث استفاده می‌کنند، «جعبه ایمنی حریم‌خصوصی» را نیز امتحان کنند.</translation>
 <translation id="174123615272205933">سفارشی</translation>
 <translation id="1741314857973421784">ادامه</translation>
 <translation id="1743570585616704562">شناسایی نشد</translation>
@@ -1132,6 +1133,7 @@
 <translation id="217576141146192373">چاپگر اضافه نشد. لطفاً پیکربندی چاپگرتان را بررسی کنید و دوباره امتحان کنید.</translation>
 <translation id="2177950615300672361">برگه ناشناس: <ph name="TAB_NAME" /></translation>
 <translation id="2178614541317717477">‏بی اعتبارشدن CA</translation>
+<translation id="2179416702468739594">درحال جستجوی نمایه‌های دردسترس. ممکن است درحین جستجو، اتصال شبکه تلفن همراه برای چند دقیقه قطع شود.</translation>
 <translation id="2182058453334755893">در بریده‌دان کپی شد</translation>
 <translation id="2184515124301515068">‏Chrome انتخاب کند سایت‌ها چه موقع صدا پخش کنند (توصیه می‌شود)</translation>
 <translation id="2187675480456493911">با دستگاه‌های دیگر در حسابتان همگام‌سازی شده است. تنظیماتی که دیگر کاربران تغییر داده‌اند همگام‌سازی نخواهد شد. <ph name="LINK_BEGIN" />بیشتر بدانید<ph name="LINK_END" /></translation>
@@ -1399,6 +1401,7 @@
 <translation id="2469375675106140201">سفارشی کردن غلطگیر املا</translation>
 <translation id="247051149076336810">نشانی وب دستگاه ذخیره‌سازی متصل به شبکه</translation>
 <translation id="2470702053775288986">افزونه‌های پشتیبانی نشده غیرفعال شدند.</translation>
+<translation id="2470939964922472929">‏پین نادرست دفعات زیادی وارد شده است. برای راه‌اندازی پین جدید، «کلید لغو انسداد شخصی» (PUK‏) ۸ رقمی را که شرکت مخابراتی‌تان ارائه کرده است وارد کنید.</translation>
 <translation id="2471469610750100598">سیاه (پیش‌فرض)</translation>
 <translation id="2471506181342525583">دسترسی به مکان مجاز شد</translation>
 <translation id="2473195200299095979">ترجمه این صفحه</translation>
@@ -1602,6 +1605,7 @@
 <translation id="2691440343905273290">تغییر تنظیمات ورودی</translation>
 <translation id="2693176596243495071">وای! خطای نامعلومی روی داد. لطفاً بعداً دوباره امتحان کنید یا اگر مشکل حل نشد، با سرپرستتان تماس بگیرید.</translation>
 <translation id="2699911226086014512">عملیات پین به‌دلیل کد خطای <ph name="RETRIES" /> انجام نشد.</translation>
+<translation id="2701330563083355633">هم‌رسانی‌شده از <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">ورودبه‌سیستم، <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">فهرست خواندن</translation>
 <translation id="270358213449696159">‏محتوای شرایط سیستم‌عامل Google Chrome</translation>
@@ -1694,6 +1698,7 @@
 <translation id="2785873697295365461">توصیف‌گرهای فایل</translation>
 <translation id="2787354132612937472">—</translation>
 <translation id="2788135150614412178">+</translation>
+<translation id="2788468313014644040">شماره گروه</translation>
 <translation id="2789486458103222910">تأیید</translation>
 <translation id="2791529110887957050">‏برداشتن Linux</translation>
 <translation id="2791952154587244007">خطایی رخ داده است. برنامه کیوسک نمی‌تواند در این دستگاه به صورت خودکار راه‌اندازی شود.</translation>
@@ -1883,6 +1888,7 @@
 <translation id="2989123969927553766">شتاب پیمایش موشواره</translation>
 <translation id="2989474696604907455">متصل نیست</translation>
 <translation id="2989786307324390836">‏DER- رمزگذاری دودویی، تک گواهی</translation>
+<translation id="2989805286512600854">باز کردن در برگهٔ جدید</translation>
 <translation id="2990313168615879645">‏افزودن «حساب Google»</translation>
 <translation id="2990583317361835189">به سایت‌ها اجازه داده نشود از حسگرهای حرکتی استفاده کنند</translation>
 <translation id="2992931425024192067">نمایش کل محتوای اعلان</translation>
@@ -1994,6 +2000,7 @@
 <translation id="310671807099593501">سایت درحال استفاده از بلوتوث شما است</translation>
 <translation id="3108931485517391283">دریافت نمی‌شود</translation>
 <translation id="3109724472072898302">جمع شده</translation>
+<translation id="3113592018909187986">۱ تلاش دیگر دارید. تا زمانی‌که پین جدیدی راه‌اندازی نکنید، نمی‌توانید از این شبکه استفاده کنید.</translation>
 <translation id="311394601889664316">به سایت‌ها اجازه داده نشود فایل‌ها یا پوشه‌های درون دستگاه را ویرایش کنند</translation>
 <translation id="3115147772012638511">منتظر حافظهٔ پنهان...</translation>
 <translation id="3115580024857770654">کوچک کردن همه موارد</translation>
@@ -2282,6 +2289,7 @@
 <translation id="3440663250074896476">کنش‌های بیشتر برای <ph name="BOOKMARK_NAME" /></translation>
 <translation id="3441653493275994384">صفحه</translation>
 <translation id="3441663102605358937">برای به‌تأیید رساندن این حساب، دوباره به سیستم <ph name="ACCOUNT" /> وارد شوید</translation>
+<translation id="3444641828375597683">‏تبلیغ‌کنندگان و ناشران می‌توانند از FLoC که در بخش‌های بعدی این صفحه شرح داده شده استفاده کنند.</translation>
 <translation id="3445047461171030979">‏پاسخ‌های سریع «دستیار Google»</translation>
 <translation id="3445288400492335833"><ph name="MINUTES" /> دقیقه</translation>
 <translation id="3445925074670675829">‏دستگاه USB-C</translation>
@@ -2865,6 +2873,7 @@
 <translation id="4036778507053569103">خط‌مشی بارگیری‌شده از سرور نامعتبر است.</translation>
 <translation id="4037084878352560732">اسب</translation>
 <translation id="4037889604535939429">ویرایش شخص</translation>
+<translation id="4040753847560036377">‏PUK نادرست است</translation>
 <translation id="4042863763121826131">{NUM_PAGES,plural, =1{خروج از صفحه}one{خروج از صفحه‌ها}other{خروج از صفحه‌ها}}</translation>
 <translation id="4044612648082411741">گذرواژه گواهی‌تان را وارد کنید</translation>
 <translation id="4044708573046946214">گذرواژه قفل صفحه</translation>
@@ -3073,6 +3082,7 @@
 <translation id="4297813521149011456">چرخش نمایشگر</translation>
 <translation id="4299022904780065004">پنجره ناشناس جدید</translation>
 <translation id="4301671483919369635">این صفحه مجاز به ویرایش فایل‌ها است</translation>
+<translation id="4302605047395093221">افرادی که از این دستگاه استفاده می‌کنند برای اتصال به این شبکه تلفن همراه باید پین را وارد کنند</translation>
 <translation id="4303079906735388947">پین جدیدی برای کلید امنیتی‌تان تنظیم کنید</translation>
 <translation id="4305402730127028764">کپی در <ph name="DEVICE_NAME" /></translation>
 <translation id="4305817255990598646">جابه‌جایی</translation>
@@ -3258,6 +3268,7 @@
 <translation id="4510479820467554003">فهرست حساب ولی</translation>
 <translation id="4510614391273086606">‏فایل‌ها و برنامه‌های Linux درحال بازیابی شدن به وضعیت پشتیبان‌گیری‌شده هستند.</translation>
 <translation id="451102079304155829">سبدهای خرید</translation>
+<translation id="4513275008300099962">غیرفعال کردن هم‌پوشانی برای کنترل‌های پنجره</translation>
 <translation id="4513946894732546136">بازخورد</translation>
 <translation id="451407183922382411">ارائه‌شده توسط <ph name="COMPANY_NAME" /></translation>
 <translation id="4514610446763173167">تغییر وضعیت بین پخش یا مکث ویدیو</translation>
@@ -4602,10 +4613,12 @@
 <translation id="6026819612896463875">‏<ph name="WINDOW_TITLE" /> - دستگاه USB متصل است</translation>
 <translation id="6028117231645531007">افزودن اثر انگشت</translation>
 <translation id="6031600495088157824">گزینه‌های ورودی در نوارابزار</translation>
+<translation id="6032091552407840792">این دوره آزمایشی فقط در <ph name="BEGIN_LINK" />برخی مناطق<ph name="END_LINK" /> فعال است.</translation>
 <translation id="6032715498678347852">برای اینکه افزونه‌ای بتواند به این سایت دسترسی داشته باشد، روی آن کلیک کنید.</translation>
 <translation id="6032912588568283682">سیستم فایل</translation>
 <translation id="603539183851330738">‏دکمه واگرد کردن تصحیح خودکار. برگرداندن به <ph name="TYPED_WORD" />.  برای فعال کردن، کلید Enter و برای رد کردن، کلید «گریز» را فشار دهید.</translation>
 <translation id="6038929619733116134">اگر سایتْ آگهی‌های مزاحم یا گمراه‌کننده نشان می‌دهد مسدود شود</translation>
+<translation id="603895874132768835">تا پین جدیدی راه‌اندازی نکنید، نمی‌توانید از این شبکه استفاده کنید</translation>
 <translation id="6039651071822577588">قالب واژه‌نامه مشخصات شبکه اشتباه است</translation>
 <translation id="6040143037577758943">بستن</translation>
 <translation id="6041046205544295907">‏<ph name="BEGIN_PARAGRAPH1" />خدمات مکان Google از منابعی مانند Wi-Fi، شبکه‌های تلفن همراه و حسگرها برای کمک به تخمین مکان دستگاهتان استفاده می‌کند.<ph name="END_PARAGRAPH1" />
@@ -4853,6 +4866,7 @@
 <translation id="6292699686837272722">برگه‌ها تا عرض متوسط کوچک می‌شوند</translation>
 <translation id="6295158916970320988">همه سایت‌ها</translation>
 <translation id="6295855836753816081">در حال ذخیره کردن...</translation>
+<translation id="6296410173147755564">‏PUK نامعتبر است</translation>
 <translation id="6298962879096096191">‏برای نصب برنامه‌های Android از Google Play‌ استفاده کنید</translation>
 <translation id="6300177430812514606">اجازه ندارد ارسال و دریافت داده را به‌پایان برساند</translation>
 <translation id="630065524203833229">&amp;خروج</translation>
@@ -4899,6 +4913,7 @@
 <translation id="6340526405444716530">شخصی‌سازی</translation>
 <translation id="6341850831632289108">شناسایی موقعیت مکانی فیزیکی شما</translation>
 <translation id="6342069812937806050">همین حالا</translation>
+<translation id="6343003829431264373">فقط صفحه‌های زوج</translation>
 <translation id="6344170822609224263">فهرست دسترسی از اتصالات شبکه</translation>
 <translation id="6344576354370880196">چاپگرهای ذخیره‌شده</translation>
 <translation id="6345418402353744910">وارد کردن نام کاربری و گذرواژه برای پراکسی <ph name="PROXY" /> الزامی است تا سرپرست بتواند شبکه‌تان را پیکربندی کند</translation>
@@ -5147,6 +5162,7 @@
 <translation id="6624535038674360844"><ph name="FILE_NAME" /> محتوای حساس یا خطرناک دارد. از مالک بخواهید مشکل را برطرف کند.</translation>
 <translation id="6624687053722465643">شیرین</translation>
 <translation id="6628328486509726751">زمان بارگذاری <ph name="WEBRTC_LOG_UPLOAD_TIME" /></translation>
+<translation id="6629518321609546825">حداقل ۴ عدد وارد کنید</translation>
 <translation id="6630752851777525409"><ph name="EXTENSION_NAME" /> خواستار دسترسی دائم به یک گواهی است تا خودش را از طرف شما اصالت‌سنجی کند.</translation>
 <translation id="6635362468090274700">تا زمانی که خودتان را نمایان نکنید، هیچ فردی نمی‌تواند با شما هم‌رسانی کند.<ph name="BR" /><ph name="BR" />برای اینکه موقتاً خودتان را نمایان کنید، ناحیه نشانگر وضعیت را باز کنید، سپس «نمایان برای اطراف» را روشن کنید.</translation>
 <translation id="6635944431854494329">‏مالک می‌تواند این ویژگی را در «تنظیمات &gt; پیشرفته &gt; ارسال خودکار داده‌های تشخیصی و میزان استفاده به Google» کنترل کند.</translation>
@@ -5185,6 +5201,7 @@
 <translation id="6664774537677393800">هنگام باز کردن نمایه‌تان مشکلی پیش آمد. لطفاً از سیستم خارج شوید و دوباره به آن وارد شوید.</translation>
 <translation id="6670142487971298264">‫<ph name="APP_NAME" /> اکنون دردسترس است</translation>
 <translation id="6671320560732140690">{COUNT,plural, =1{یک نشانی}one{# نشانی}other{# نشانی}}</translation>
+<translation id="6671497123040790595">درحال راه‌اندازی مدیریت توسط <ph name="MANAGER" /></translation>
 <translation id="6673391612973410118"><ph name="PRINTER_MAKE_OR_MODEL" /> (USB)</translation>
 <translation id="6674571176963658787">برای شروع همگام‌سازی، گذرعبارت را وارد کنید</translation>
 <translation id="6675665718701918026">دستگاه نشانگر متصل شد</translation>
@@ -5193,6 +5210,7 @@
 <translation id="6680442031740878064">در دسترس: <ph name="AVAILABLE_SPACE" /></translation>
 <translation id="6680650203439190394">رده‌بندی</translation>
 <translation id="6681668084120808868">عکسبرداری</translation>
+<translation id="6683087162435654533">بازیابی همه برگه‌ها</translation>
 <translation id="6683948477137300040">‏نمایش بالاپر با رمزینه پاسخ‌سریع و EID دستگاه</translation>
 <translation id="6684827949542560880">درحال بارگیری آخرین به‌روزرسانی</translation>
 <translation id="668599234725812620">‏باز کردن Google Play</translation>
@@ -5762,6 +5780,7 @@
 <translation id="7308643132139167865">زبان‌های وب‌سایت</translation>
 <translation id="7309257895202129721">نمایش &amp;کنترل‌ها</translation>
 <translation id="7310598146671372464">‏ورود به سیستم انجام نشد. این سرور از رمزگذاری‌های Kerberos مشخص‌شده پشتیبانی نمی‌کند. لطفاً با سرپرست سیستم تماس بگیرید.</translation>
+<translation id="7315168816273861089">فعال کردن هم‌پوشانی برای کنترل‌های پنجره</translation>
 <translation id="7320213904474460808">شبکه پیش‌فرض</translation>
 <translation id="7321545336522791733">سرور غیرقابل دسترسی است</translation>
 <translation id="7324297612904500502">تالار گفتمان بتا</translation>
@@ -5938,7 +5957,9 @@
 <translation id="7506541170099744506"><ph name="DEVICE_TYPE" /> شما باموفقیت برای مدیریت شرکت ثبت شد.</translation>
 <translation id="7507207699631365376">به <ph name="BEGIN_LINK" />خط‌مشی رازداری<ph name="END_LINK" /> این ارائه‌دهنده بروید</translation>
 <translation id="7507930499305566459">گواهی وضعیت پاسخگو</translation>
+<translation id="7509097596023256288">درحال راه‌اندازی مدیریت</translation>
 <translation id="7509246181739783082">هویتتان را به‌تأیید برسانید</translation>
+<translation id="7511415964832680006">وقتی روشن باشد، سایت‌ها می‌توانند برای ارائه محتوا و سرویس‌هایشان از تکنیک‌های حفظ حریم‌خصوصی نشان داده‌شده در اینجا استفاده کنند. این تکنیک‌ها شامل روش‌های جایگزین برای ردیابی بین‌سایتی می‌شود. ممکن است در گذر زمان، دوره‌های آزمایشی بیشتری اضافه شود.</translation>
 <translation id="7513029293694390567">با استفاده از اعتبارنامه‌های ذخیره‌شده، به‌طور خودکار به سیستم وب‌سایت‌ها وارد شوید. اگر این قابلیت غیرفعال باشد، هر بار قبل از وارد شدن به وب‌سایت از شما برای تأیید اطلاعات درخواست می‌شود.</translation>
 <translation id="7514239104543605883">کپی در دستگاه</translation>
 <translation id="7514365320538308">بارگیری</translation>
@@ -6299,6 +6320,8 @@
 <translation id="7876027585589532670">نمی‌توان میان‌بر را ویرایش کرد</translation>
 <translation id="7877451762676714207">خطای سرور ناشناس. لطفاً دوباره سعی کنید یا با سرپرست سرور تماس بگیرید.</translation>
 <translation id="7879631849810108578">میان‌بر تنظیم شد: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
+<translation id="7880685873361171388">‏وقتی روشن باشد و وضعیت آن فعال باشد، Chrome از سابقه مرور ۷ روز گذشته شما برای تشخیص گروه یا «هم‌گروهی» که به آن تعلق دارید استفاده می‌کند. تبلیغ‌کنندگان می‌توانند برای این گروه، آگهی انتخاب کنند. سابقه مرور شما به‌صورت خصوصی در دستگاهتان نگهداری می‌شود. این دوره آزمایشی فقط در
+    <ph name="BEGIN_LINK" />برخی مناطق<ph name="END_LINK" /> فعال است.</translation>
 <translation id="7880823633812189969">وقتی بازراه‌اندازی کنید، داده‌های محلی حذف می‌شود</translation>
 <translation id="7881066108824108340">DNS</translation>
 <translation id="7881483672146086348">مشاهده حساب</translation>
@@ -6458,6 +6481,7 @@
 <translation id="804786196054284061">قرارداد مجوز کاربر نهایی</translation>
 <translation id="8048977114738515028">ایجاد میانبر میزکار در دستگاهتان برای دسترسی مستقیم به این نمایه</translation>
 <translation id="8049029041626250638">صفحه‌کلید یا موشواره‌ای را متصل کنید. اگر از دستگاه‌های بلوتوث استفاده می‌کنید، مطمئن شوید دستگاه‌هایتان برای مرتبط‌سازی آماده باشند.</translation>
+<translation id="8049184478152619004">‏«کلید لغو انسداد شخصی» (PUK) را وارد کنید</translation>
 <translation id="8049705080247101012">‏‫Google‏ «<ph name="EXTENSION_NAME" />» را به عنوان برنامه مخرب پرچم‌‌گذاری کرده است و از نصب آن جلوگیری شده است</translation>
 <translation id="8049948037269924837">پیمایش معکوس صفحه لمسی</translation>
 <translation id="8050038245906040378">‏امضای کد تجاری Microsoft</translation>
@@ -6494,6 +6518,7 @@
 <translation id="8082106343289440791">با «<ph name="DEVICE_NAME" />» مرتبط شود؟</translation>
 <translation id="8082390128630131497">‏غیرفعال کردن اشکال‌زدایی ADB (پل اشکال‌زدایی Android)، <ph name="DEVICE_TYPE" /> را به تنظیمات کارخانه بازنشانی می‌کند. همه حساب‌های کاربر و داده‌های محلی حذف می‌شوند.</translation>
 <translation id="8084114998886531721">گذرواژه ذخیره‌شده</translation>
+<translation id="8084510406207562688">بازیابی همه برگه‌ها</translation>
 <translation id="8086015605808120405">درحال پیکربندی <ph name="PRINTER_NAME" />…</translation>
 <translation id="8086442853986205778">راه‌اندازی <ph name="PRINTER_NAME" /></translation>
 <translation id="80866457114322936">{NUM_FILES,plural, =1{این فایل رمزگذاری شده است. از مالک بخواهید آن را رمزگشایی کند.}one{بعضی از این فایل‌ها رمزگذاری شده‌اند. از مالک بخواهید آن را رمزگشایی کند.}other{بعضی از این فایل‌ها رمزگذاری شده‌اند. از مالک بخواهید آن‌ها را رمزگشایی کند.}}</translation>
@@ -6535,6 +6560,7 @@
 <translation id="8119438628456698432">درحال ایجاد فایل‌های گزارش…</translation>
 <translation id="811994229154425014">دوفاصله برای تایپ نقطه</translation>
 <translation id="8120505434908124087">نصب نمایه سیم‌کارت داخلی</translation>
+<translation id="812260729110117038">تبلیغ‌کنندگان و ناشران می‌توانند اثربخشی آگهی‌ها را به‌گونه‌ای بررسی کنند که شما را در سایت‌ها ردیابی نکند.</translation>
 <translation id="8123590694679414600">‏داده‌هایتان در <ph name="TIME" /> با گذرعبارت همگام‌سازی‌تان رمزگذاری شد.
           این کار شامل روش‌های پرداخت و نشانی‌های موجود در Google Pay‌ نمی‌شود.</translation>
 <translation id="81238879832906896">گل زرد و سفید</translation>
@@ -6572,6 +6598,7 @@
 <translation id="816055135686411707">خطا در تنظیم اعتماد مجوز</translation>
 <translation id="8160775796528709999">با فعال کردن «زیرنویس ناشنوایان زنده» در تنظیمات، برای صدا و ویدیو زیرنویس ناشنوایان دریافت کنید</translation>
 <translation id="816095449251911490"><ph name="SPEED" /> - <ph name="RECEIVED_AMOUNT" />، <ph name="TIME_REMAINING" /></translation>
+<translation id="81610453212785426">‏Chrome بااستفاده از <ph name="BEGIN_LINK" />جعبه ایمنی حریم‌خصوصی<ph name="END_LINK" /> درحال توسعه فناوری‌های جدیدی است که ضمن حفظ وبِ باز، از شما در برابر ردیابی بین‌سایتی محافظت می‌کند.</translation>
 <translation id="8161293209665121583">«حالت خواننده» برای صفحه‌های وب</translation>
 <translation id="8162984717805647492">{NUM_TABS,plural, =1{انتقال دادن برگه به پنجره جدید}one{انتقال دادن برگه‌ها به پنجره جدید}other{انتقال دادن برگه‌ها به پنجره جدید}}</translation>
 <translation id="8165997195302308593">‏بازارسال درگاه Crostini</translation>
@@ -7366,6 +7393,7 @@
 <translation id="9031549947500880805">‏در Google Drive پشتیبان‌گیری کنید. به‌آسانی داده‌های خود را بازیابی کنید یا هرزمان خواستید دستگاهتان را عوض کنید. نسخه پشتیبان شما حاوی داده‌های برنامه است.</translation>
 <translation id="9033765790910064284">ادامه درهرصورت</translation>
 <translation id="9033857511263905942">&amp;جای‌گذاری</translation>
+<translation id="9035689366572880647">پین کنونی را وارد کنید</translation>
 <translation id="9037640663275993951">دستگاه مجاز نیست</translation>
 <translation id="9037818663270399707">اتصال شما برای همه ترافیک شبکه خصوصی نیست</translation>
 <translation id="9037965129289936994">نمایش مورد اصلی</translation>
@@ -7441,6 +7469,7 @@
 <translation id="9112748030372401671">تغییر کاغذدیواری</translation>
 <translation id="9112786533191410418">‏<ph name="FILE_NAME" /> ممکن است خطرناک باشد. برای اسکن کردن به Google ارسال شود؟</translation>
 <translation id="9112987648460918699">یافتن...</translation>
+<translation id="9113240369465613386">فقط صفحه‌های فرد</translation>
 <translation id="9114663181201435112">ورود به سیستم آسان</translation>
 <translation id="9115675100829699941">&amp;نشانک ها</translation>
 <translation id="9116465289595958864">آخرین اصلاح</translation>
@@ -7595,6 +7624,7 @@
 <translation id="991413375315957741">حسگرهای نوری یا حرکتی</translation>
 <translation id="992032470292211616">افزودنی‌ها، برنامه‌ها و طرح‌های زمینه می‌توانند به دستگاه شما آسیب برسانند. آیا مطمئن هستید که می‌خواهید ادامه دهید؟</translation>
 <translation id="992256792861109788">صورتی</translation>
+<translation id="992401651319295351"><ph name="RETRIES" /> تلاش دیگر دارید. تا زمانی‌که پین جدیدی راه‌اندازی نکنید، نمی‌توانید از این شبکه استفاده کنید.</translation>
 <translation id="992592832486024913">‏غیرفعال کردن ChromeVox (بازخورد گفتاری)</translation>
 <translation id="992778845837390402">‏درحال‌حاضر پشتیبان‌گیری Linux درحال انجام است</translation>
 <translation id="993540765962421562">نصب درحال انجام است.</translation>
diff --git a/chrome/app/resources/generated_resources_fi.xtb b/chrome/app/resources/generated_resources_fi.xtb
index 54229a6..9b63a24 100644
--- a/chrome/app/resources/generated_resources_fi.xtb
+++ b/chrome/app/resources/generated_resources_fi.xtb
@@ -1604,6 +1604,7 @@
 <translation id="2691440343905273290">Muuta syöttöasetuksia</translation>
 <translation id="2693176596243495071">Hups, tapahtui tuntematon virhe. Yritä myöhemmin uudelleen tai ota yhteyttä järjestelmänvalvojaan, jos ongelma ei ratkea.</translation>
 <translation id="2699911226086014512">PIN-toiminto epäonnistui (koodi: <ph name="RETRIES" />).</translation>
+<translation id="2701330563083355633">Jaettu: <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">Kirjaudu sisään, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Lukulista</translation>
 <translation id="270358213449696159">Google Chrome ‑käyttöjärjestelmän käyttöehtojen sisältö</translation>
@@ -1885,6 +1886,7 @@
 <translation id="2989123969927553766">Hiiren vierityksen nopeuttaminen</translation>
 <translation id="2989474696604907455">ei yhdistetty</translation>
 <translation id="2989786307324390836">DER-koodattu binääri, yksittäinen varmenne</translation>
+<translation id="2989805286512600854">Avaa uudessa välilehdessä</translation>
 <translation id="2990313168615879645">Lisää Google-tili</translation>
 <translation id="2990583317361835189">Älä salli sivustojen käyttää liiketunnistimia</translation>
 <translation id="2992931425024192067">Näytä ilmoitusten koko sisältö</translation>
diff --git a/chrome/app/resources/generated_resources_fil.xtb b/chrome/app/resources/generated_resources_fil.xtb
index 37b6ee1..dfee7453 100644
--- a/chrome/app/resources/generated_resources_fil.xtb
+++ b/chrome/app/resources/generated_resources_fil.xtb
@@ -1138,6 +1138,7 @@
 <translation id="2178614541317717477">CA Compromise</translation>
 <translation id="2182058453334755893">Kinopya sa Iyong Clipboard</translation>
 <translation id="2184515124301515068">Hayaan ang Chrome na pumili kung kailan makakapag-play ng tunog ang mga site (inirerekomenda)</translation>
+<translation id="2186711480981247270">Ibinahaging page mula sa ibang device</translation>
 <translation id="2187675480456493911">Naka-sync sa iba pang device sa iyong account. Hindi masi-sync ang mga setting na binago ng iba pang user. <ph name="LINK_BEGIN" />Matuto pa<ph name="LINK_END" /></translation>
 <translation id="2187895286714876935">Error sa Pag-import ng Certificate ng Server</translation>
 <translation id="2187906491731510095">Na-update ang mga extension</translation>
@@ -1606,6 +1607,7 @@
 <translation id="2691440343905273290">Baguhin ang mga setting ng pag-input</translation>
 <translation id="2693176596243495071">Oops!  Nagkaroon ng hindi matukoy na error. Pakisubukang muli sa ibang pagkakataon o makipag-ugnayan sa iyong administrator kung magpapatuloy ang isyu.</translation>
 <translation id="2699911226086014512">Hindi nagamit ang PIN na may code <ph name="RETRIES" />.</translation>
+<translation id="2701330563083355633">Ibinahagi mula kay <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">Mag-sign in, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Listahan ng Babasahin</translation>
 <translation id="270358213449696159">Mga content ng Mga Tuntunin ng Google Chrome OS</translation>
@@ -1887,6 +1889,7 @@
 <translation id="2989123969927553766">Pag-accelerate ng pag-scroll gamit ang mouse</translation>
 <translation id="2989474696604907455">hindi naka-attach</translation>
 <translation id="2989786307324390836">DER-encoded binary, single certificate</translation>
+<translation id="2989805286512600854">Buksan sa Bagong Tab</translation>
 <translation id="2990313168615879645">Mag-add ng Google Account</translation>
 <translation id="2990583317361835189">Huwag payagan ang mga site na gumamit ng mga sensor ng paggalaw</translation>
 <translation id="2992931425024192067">Ipakita ang lahat ng content ng notification</translation>
diff --git a/chrome/app/resources/generated_resources_fr-CA.xtb b/chrome/app/resources/generated_resources_fr-CA.xtb
index f0df71c..59289e7 100644
--- a/chrome/app/resources/generated_resources_fr-CA.xtb
+++ b/chrome/app/resources/generated_resources_fr-CA.xtb
@@ -1591,6 +1591,7 @@
 <translation id="2691440343905273290">Modifier les paramètres d'entrée</translation>
 <translation id="2693176596243495071">Oups. Une erreur inconnue s'est produite. Veuillez réessayer plus tard ou communiquer avec votre administrateur si le problème persiste.</translation>
 <translation id="2699911226086014512">Échec du déverrouillage par NIP. Code <ph name="RETRIES" />.</translation>
+<translation id="2701330563083355633">Partagé à partir de l'appareil suivant : <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">Connexion : <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Liste de lecture</translation>
 <translation id="270358213449696159">Contenu des conditions d'utilisation de Google Chrome OS</translation>
@@ -1872,6 +1873,7 @@
 <translation id="2989123969927553766">Accélération du défilement de la souris</translation>
 <translation id="2989474696604907455">non connecté</translation>
 <translation id="2989786307324390836">Certificat unique binaire codé DER</translation>
+<translation id="2989805286512600854">Ouvrir dans un nouvel onglet</translation>
 <translation id="2990313168615879645">Ajouter un compte Google</translation>
 <translation id="2990583317361835189">Ne pas autoriser les sites à utiliser les capteurs de mouvement</translation>
 <translation id="2992931425024192067">Afficher l'intégralité du contenu des notifications</translation>
diff --git a/chrome/app/resources/generated_resources_fr.xtb b/chrome/app/resources/generated_resources_fr.xtb
index f794ba8..41c60ea 100644
--- a/chrome/app/resources/generated_resources_fr.xtb
+++ b/chrome/app/resources/generated_resources_fr.xtb
@@ -1591,6 +1591,7 @@
 <translation id="2691440343905273290">Modifier les paramètres de saisie</translation>
 <translation id="2693176596243495071">Petit problème… Une erreur inconnue s'est produite. Veuillez réessayer plus tard ou contacter votre administrateur si le problème persiste.</translation>
 <translation id="2699911226086014512">Échec de l'opération. Code <ph name="RETRIES" />.</translation>
+<translation id="2701330563083355633">Partagé par <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">Se connecter, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Liste de lecture</translation>
 <translation id="270358213449696159">Conditions d'utilisation de Google Chrome OS</translation>
@@ -1872,6 +1873,7 @@
 <translation id="2989123969927553766">Accélération du défilement avec la souris</translation>
 <translation id="2989474696604907455">non connecté</translation>
 <translation id="2989786307324390836">Certificat unique binaire codé DER</translation>
+<translation id="2989805286512600854">Ouvrir dans un nouvel onglet</translation>
 <translation id="2990313168615879645">Ajouter un compte Google</translation>
 <translation id="2990583317361835189">Ne pas autoriser les sites à utiliser les capteurs de mouvement</translation>
 <translation id="2992931425024192067">Afficher tout le contenu des notifications</translation>
diff --git a/chrome/app/resources/generated_resources_gl.xtb b/chrome/app/resources/generated_resources_gl.xtb
index 15c7215..1123470 100644
--- a/chrome/app/resources/generated_resources_gl.xtb
+++ b/chrome/app/resources/generated_resources_gl.xtb
@@ -1589,6 +1589,7 @@
 <translation id="2691440343905273290">Cambiar configuración da introdución de texto</translation>
 <translation id="2693176596243495071">Produciuse un erro descoñecido. Téntao de novo máis tarde ou contacta co teu administrador se o problema persiste.</translation>
 <translation id="2699911226086014512">Produciuse un erro ao definir o PIN. Código do erro: <ph name="RETRIES" />.</translation>
+<translation id="2701330563083355633">Contido compartido desde <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">Iniciar sesión, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Lista de lectura</translation>
 <translation id="270358213449696159">Contido das condicións de Google Chrome OS</translation>
@@ -1869,6 +1870,7 @@
 <translation id="2989123969927553766">Aceleración de desprazamento do rato</translation>
 <translation id="2989474696604907455">non anexado</translation>
 <translation id="2989786307324390836">Binario con codificación DER, un só certificado</translation>
+<translation id="2989805286512600854">Abrir nunha pestana nova</translation>
 <translation id="2990313168615879645">Engadir Conta de Google</translation>
 <translation id="2990583317361835189">Non permitir que os sitios utilicen sensores de movemento</translation>
 <translation id="2992931425024192067">Mostrar todo o contido das notificacións</translation>
diff --git a/chrome/app/resources/generated_resources_gu.xtb b/chrome/app/resources/generated_resources_gu.xtb
index 18b2608..d57404e6 100644
--- a/chrome/app/resources/generated_resources_gu.xtb
+++ b/chrome/app/resources/generated_resources_gu.xtb
@@ -1588,6 +1588,7 @@
 <translation id="2691440343905273290">ઇનપુટ સેટિંગ બદલો</translation>
 <translation id="2693176596243495071">અરેરે! અજાણી ભૂલ આવી. કૃપા કરીને થોડા સમય પછી ફરી પ્રયાસ કરો અથવા જો સમસ્યા ચાલુ રહે, તો તમારા વ્યવસ્થાપકનો સંપર્ક કરો.</translation>
 <translation id="2699911226086014512">કોડ <ph name="RETRIES" /> સાથે પિન ઑપરેશન નિષ્ફળ થયું.</translation>
+<translation id="2701330563083355633"><ph name="DEVICE_NAME" />માંથી શેર કર્યું</translation>
 <translation id="2701737434167469065">સાઇન ઇન કરો, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">વાંચન સૂચિ</translation>
 <translation id="270358213449696159">Google Chrome OS શરતો સામગ્રીઓ</translation>
@@ -1869,6 +1870,7 @@
 <translation id="2989123969927553766">માઉસ સ્ક્રોલ થવાની ઝડપ</translation>
 <translation id="2989474696604907455">જોડાયેલ નથી</translation>
 <translation id="2989786307324390836">DER-encoded binary, એકલ પ્રમાણપત્ર</translation>
+<translation id="2989805286512600854">નવા ટૅબમાં ખોલો</translation>
 <translation id="2990313168615879645">Google એકાઉન્ટ ઉમેરો</translation>
 <translation id="2990583317361835189">સાઇટને મોશન સેન્સરનો ઉપયોગ કરવાની મંજૂરી આપશો નહીં</translation>
 <translation id="2992931425024192067">નોટિફિકેશનનું બધું કન્ટેન્ટ બતાવો</translation>
diff --git a/chrome/app/resources/generated_resources_hi.xtb b/chrome/app/resources/generated_resources_hi.xtb
index ee714ae..aef9f52 100644
--- a/chrome/app/resources/generated_resources_hi.xtb
+++ b/chrome/app/resources/generated_resources_hi.xtb
@@ -1606,6 +1606,7 @@
 <translation id="2691440343905273290">इनपुट सेटिंग बदलें</translation>
 <translation id="2693176596243495071">ओह हो!  कोई अज्ञात गड़बड़ी हुई. कृपया बाद में फिर से कोशिश करें या अगर समस्या फिर भी बनी रहती है, तो अपने एडमिन से संपर्क करें.</translation>
 <translation id="2699911226086014512"><ph name="RETRIES" /> कोड के चलते पिन को सेट नहीं किया जा सका.</translation>
+<translation id="2701330563083355633"><ph name="DEVICE_NAME" /> से शेयर किया</translation>
 <translation id="2701737434167469065">साइन इन करें, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">पठन सूची</translation>
 <translation id="270358213449696159">Google Chrome OS की शर्तों संबंधी सामग्री</translation>
@@ -1886,6 +1887,7 @@
 <translation id="2989123969927553766">माउस से स्क्रोल करने की रफ़्तार</translation>
 <translation id="2989474696604907455">अटैचमेंट नहीं</translation>
 <translation id="2989786307324390836">DER-एन्कोड की गई बाइनरी, एकल प्रमाणपत्र</translation>
+<translation id="2989805286512600854">नए टैब में खोलें</translation>
 <translation id="2990313168615879645">Google खाता जोड़ें</translation>
 <translation id="2990583317361835189">साइटों को मोशन सेंसर इस्तेमाल करने की अनुमति न दें</translation>
 <translation id="2992931425024192067">सभी सूचना सामग्री दिखाएं</translation>
diff --git a/chrome/app/resources/generated_resources_hr.xtb b/chrome/app/resources/generated_resources_hr.xtb
index f699ade..8504c91 100644
--- a/chrome/app/resources/generated_resources_hr.xtb
+++ b/chrome/app/resources/generated_resources_hr.xtb
@@ -1592,6 +1592,7 @@
 <translation id="2691440343905273290">Promjena postavki unosa</translation>
 <translation id="2693176596243495071">Ups! Dogodila se nepoznata pogreška. Pokušajte ponovo kasnije ili se obratite administratoru ako se i dalje javlja problem.</translation>
 <translation id="2699911226086014512">Postavljanje PIN-a nije uspjelo, kôd pogreške je <ph name="RETRIES" />.</translation>
+<translation id="2701330563083355633">Podijeljeno s uređaja <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">Prijavite se, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Popis za čitanje</translation>
 <translation id="270358213449696159">Sadržaj uvjeta za OS Google Chrome</translation>
@@ -1873,6 +1874,7 @@
 <translation id="2989123969927553766">Ubrzanje pomicanja mišem</translation>
 <translation id="2989474696604907455">nije povezano</translation>
 <translation id="2989786307324390836">DER-binarno kodirano, jedan certifikat</translation>
+<translation id="2989805286512600854">Otvori u novoj kartici</translation>
 <translation id="2990313168615879645">Dodavanje Google računa</translation>
 <translation id="2990583317361835189">Ne dopuštaj web-lokacijama korištenje senzora kretanja</translation>
 <translation id="2992931425024192067">Prikazuje se cijeli sadržaj obavijesti </translation>
diff --git a/chrome/app/resources/generated_resources_hu.xtb b/chrome/app/resources/generated_resources_hu.xtb
index a5f98ec..6111738c 100644
--- a/chrome/app/resources/generated_resources_hu.xtb
+++ b/chrome/app/resources/generated_resources_hu.xtb
@@ -1604,6 +1604,7 @@
 <translation id="2691440343905273290">Beviteli beállítások módosítása</translation>
 <translation id="2693176596243495071">Hoppá! Ismeretlen hiba történt. Próbálja újra később, vagy forduljon a rendszergazdához, ha a probléma továbbra is fennáll.</translation>
 <translation id="2699911226086014512">A PIN-kóddal végzett művelet sikertelen – hibakód: <ph name="RETRIES" />.</translation>
+<translation id="2701330563083355633">Megosztva a következő eszközről: <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">Bejelentkezés, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Olvasási lista</translation>
 <translation id="270358213449696159">Google Chrome OS – A Szerződési Feltételek tartalma</translation>
@@ -1884,6 +1885,7 @@
 <translation id="2989123969927553766">Egérgörgetés gyorsítása</translation>
 <translation id="2989474696604907455">nincs csatlakoztatva</translation>
 <translation id="2989786307324390836">DER kódolású bináris, egyedüli tanúsítvány</translation>
+<translation id="2989805286512600854">Megnyitás új lapon</translation>
 <translation id="2990313168615879645">Google-fiók felvétele</translation>
 <translation id="2990583317361835189">A webhelyek nem használhatnak mozgásérzékelőket</translation>
 <translation id="2992931425024192067">Az értesítések teljes tartalma jelenjen meg</translation>
diff --git a/chrome/app/resources/generated_resources_hy.xtb b/chrome/app/resources/generated_resources_hy.xtb
index 77c3746a..051d5608 100644
--- a/chrome/app/resources/generated_resources_hy.xtb
+++ b/chrome/app/resources/generated_resources_hy.xtb
@@ -1592,6 +1592,7 @@
 <translation id="2691440343905273290">Փոխել ներածման կարգավորումները</translation>
 <translation id="2693176596243495071">Անհայտ սխալ առաջացավ։ Փորձեք ավելի ուշ: Եթե սխալը կրկնվի, կապվեք ձեր ադմինիստրատորի հետ։</translation>
 <translation id="2699911226086014512">Չհաջողվեց PIN կոդ սահմանել: Սխալի կոդը՝ <ph name="RETRIES" />:</translation>
+<translation id="2701330563083355633">Ուղարկվել է <ph name="DEVICE_NAME" />-ի միջոցով</translation>
 <translation id="2701737434167469065">Մուտք գործել, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Ընթերցանության ցանկ</translation>
 <translation id="270358213449696159">Google Chrome OS-ի օգտագործման պայմանների ամբողջական տեքստը</translation>
@@ -1872,6 +1873,7 @@
 <translation id="2989123969927553766">Մկնիկով ոլորման արագացում</translation>
 <translation id="2989474696604907455">կցված չէ</translation>
 <translation id="2989786307324390836">Բինարային մեկ վկայագիր՝ DER-գաղտնագրումով</translation>
+<translation id="2989805286512600854">Բացել նոր ներդիրում</translation>
 <translation id="2990313168615879645">Ավելացնել Google հաշիվ</translation>
 <translation id="2990583317361835189">Թույլ չտալ կայքերին օգտագործել շարժման տվիչները</translation>
 <translation id="2992931425024192067">Ծանուցումները ցույց տալ ամբողջությամբ</translation>
diff --git a/chrome/app/resources/generated_resources_id.xtb b/chrome/app/resources/generated_resources_id.xtb
index 0324a36..71bfb52 100644
--- a/chrome/app/resources/generated_resources_id.xtb
+++ b/chrome/app/resources/generated_resources_id.xtb
@@ -1605,6 +1605,7 @@
 <translation id="2691440343905273290">Ubah setelan input</translation>
 <translation id="2693176596243495071">Maaf, terjadi error yang tidak diketahui. Harap coba lagi nanti atau hubungi administrator jika masalah masih berlanjut.</translation>
 <translation id="2699911226086014512">Operasi PIN gagal dengan kode <ph name="RETRIES" />.</translation>
+<translation id="2701330563083355633">Dibagikan dari <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">Login, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Daftar Bacaan</translation>
 <translation id="270358213449696159">Konten Persyaratan Google Chrome OS</translation>
@@ -1886,6 +1887,7 @@
 <translation id="2989123969927553766">Akselerasi scroll mouse</translation>
 <translation id="2989474696604907455">tidak terlampir</translation>
 <translation id="2989786307324390836">Biner bersandiaksara DER, satu sertifikat</translation>
+<translation id="2989805286512600854">Buka di Tab Baru</translation>
 <translation id="2990313168615879645">Tambahkan Akun Google</translation>
 <translation id="2990583317361835189">Jangan izinkan situs menggunakan sensor gerakan</translation>
 <translation id="2992931425024192067">Tampilkan semua konten notifikasi</translation>
diff --git a/chrome/app/resources/generated_resources_is.xtb b/chrome/app/resources/generated_resources_is.xtb
index 1622abce..4dbd2df 100644
--- a/chrome/app/resources/generated_resources_is.xtb
+++ b/chrome/app/resources/generated_resources_is.xtb
@@ -1609,6 +1609,7 @@
 <translation id="2691440343905273290">Breyta innsláttarstillingum</translation>
 <translation id="2693176596243495071">Úbbs! Óþekkt villa kom upp. Reyndu aftur síðar eða hafðu samband við kerfisstjórann þinn ef vandamálið er viðvarandi.</translation>
 <translation id="2699911226086014512">PIN-aðgerð með kóðanum <ph name="RETRIES" /> mistókst.</translation>
+<translation id="2701330563083355633">Deilt úr <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">Skrá inn, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Leslisti</translation>
 <translation id="270358213449696159">Innihald skilmála Google Chrome OS</translation>
@@ -1890,6 +1891,7 @@
 <translation id="2989123969927553766">Flettihröðun músar</translation>
 <translation id="2989474696604907455">ekki tengt</translation>
 <translation id="2989786307324390836">DER-kóðuð tvíundakerfisskrá, stakt vottorð</translation>
+<translation id="2989805286512600854">Opna í nýjum flipa</translation>
 <translation id="2990313168615879645">Bæta við Google reikningi</translation>
 <translation id="2990583317361835189">Ekki leyfa vefsvæðum að nota hreyfiskynjara</translation>
 <translation id="2992931425024192067">Sýna allt innihald tilkynninga</translation>
@@ -3678,7 +3680,7 @@
 <translation id="4953808748584563296">Sjálfgefin appelsínugul notandamynd</translation>
 <translation id="4955710816792587366">Veldu þér PIN-númer</translation>
 <translation id="4959262764292427323">Aðgangsorð eru vistuð á Google reikningnum þínum til að þú getir notað þau í hvaða tæki sem er</translation>
-<translation id="496027654926814138"><ph name="FILE_NAME" /> gæti gert tölvuþrjótum kleift að stela persónuupplýsingum þínum.</translation>
+<translation id="496027654926814138"><ph name="FILE_NAME" /> gæti gert tölvuþrjótum kleift að stela persónuupplýsingunum þínum.</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> – <ph name="PROFILE_NAME" /></translation>
 <translation id="4961361269522589229">uppskriftahugmyndir</translation>
 <translation id="496185450405387901">Kerfisstjórinn þinn setti þetta forrit upp.</translation>
@@ -4632,7 +4634,7 @@
 <translation id="6044805581023976844"><ph name="APP_NAME" /> deilir flipa og hljóði í Chrome með <ph name="TAB_NAME" />.</translation>
 <translation id="6045114302329202345">Aðal TrackPoint-hnappur</translation>
 <translation id="6047632800149092791">Samstilling virkar ekki. Prófaðu að skrá þig út og inn aftur.</translation>
-<translation id="6049797270917061226">Þessi skrá gæti gert tölvuþrjótum kleift að stela persónuupplýsingum þínum.</translation>
+<translation id="6049797270917061226">Þessi skrá gæti gert tölvuþrjótum kleift að stela persónuupplýsingunum þínum.</translation>
 <translation id="6051354611314852653">Úbbs! Kerfinu tókst ekki að heimila forritaskilaaðgang fyrir þetta tæki.</translation>
 <translation id="6052976518993719690">SSL-vottunarstöð</translation>
 <translation id="6053401458108962351">Hreinsa vafragögn...</translation>
diff --git a/chrome/app/resources/generated_resources_it.xtb b/chrome/app/resources/generated_resources_it.xtb
index fa4e03cc..5ae25a2f 100644
--- a/chrome/app/resources/generated_resources_it.xtb
+++ b/chrome/app/resources/generated_resources_it.xtb
@@ -1590,6 +1590,7 @@
 <translation id="2691440343905273290">Modifica impostazioni di immissione</translation>
 <translation id="2693176596243495071">Spiacenti. Si è verificato un errore sconosciuto. Riprova più tardi o contatta il tuo amministratore se il problema persiste.</translation>
 <translation id="2699911226086014512">Operazione con PIN non riuscita. Codice <ph name="RETRIES" />.</translation>
+<translation id="2701330563083355633">Condivisione da <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">Accedi, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Elenco di lettura</translation>
 <translation id="270358213449696159">Contenuti dei Termini di Google Chrome OS</translation>
@@ -1871,6 +1872,7 @@
 <translation id="2989123969927553766">Accelerazione di scorrimento del mouse</translation>
 <translation id="2989474696604907455">non collegato</translation>
 <translation id="2989786307324390836">Binario codificato DER, singolo certificato</translation>
+<translation id="2989805286512600854">Apri in un'altra scheda</translation>
 <translation id="2990313168615879645">Aggiungi Account Google</translation>
 <translation id="2990583317361835189">Non consentire ai siti di usare i sensori di movimento</translation>
 <translation id="2992931425024192067">Mostra tutti i contenuti delle notifiche</translation>
diff --git a/chrome/app/resources/generated_resources_iw.xtb b/chrome/app/resources/generated_resources_iw.xtb
index fe498da..b65e51f 100644
--- a/chrome/app/resources/generated_resources_iw.xtb
+++ b/chrome/app/resources/generated_resources_iw.xtb
@@ -1604,6 +1604,7 @@
 <translation id="2691440343905273290">שינוי הגדרות הקלט</translation>
 <translation id="2693176596243495071">אופס. אירעה שגיאה לא ידועה. כדאי לנסות שוב מאוחר יותר, או לפנות אל מנהל המערכת אם הבעיה ממשיכה.</translation>
 <translation id="2699911226086014512">פעולת קוד האימות נכשלה עם הקוד <ph name="RETRIES" />.</translation>
+<translation id="2701330563083355633">שותפה מהמכשיר <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">כניסה, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">רשימת קריאה</translation>
 <translation id="270358213449696159">‏תוכן התנאים של Google Chrome OS</translation>
@@ -1886,6 +1887,7 @@
 <translation id="2989123969927553766">האצת גלילת עכבר</translation>
 <translation id="2989474696604907455">לא מחובר</translation>
 <translation id="2989786307324390836">‏בינארי בקידוד DER, אישור יחיד</translation>
+<translation id="2989805286512600854">פתיחה בכרטיסייה חדשה</translation>
 <translation id="2990313168615879645">‏הוספת חשבון Google</translation>
 <translation id="2990583317361835189">לא לאפשר לאתרים להשתמש בחיישני תנועה</translation>
 <translation id="2992931425024192067">הצגת כל תוכן ההודעות</translation>
diff --git a/chrome/app/resources/generated_resources_ja.xtb b/chrome/app/resources/generated_resources_ja.xtb
index c020d60..93afb6f 100644
--- a/chrome/app/resources/generated_resources_ja.xtb
+++ b/chrome/app/resources/generated_resources_ja.xtb
@@ -1590,6 +1590,7 @@
 <translation id="2691440343905273290">入力設定を変更する</translation>
 <translation id="2693176596243495071">不明なエラーが発生しました。後でもう一度お試しになるか、問題が解決しない場合は管理者にお問い合わせください。</translation>
 <translation id="2699911226086014512">PIN の操作に失敗しました。コード: <ph name="RETRIES" /></translation>
+<translation id="2701330563083355633"><ph name="DEVICE_NAME" /> から共有しました</translation>
 <translation id="2701737434167469065">ログイン(<ph name="EMAIL" />)</translation>
 <translation id="2702801445560668637">リーディング リスト</translation>
 <translation id="270358213449696159">Google Chrome OS 利用規約コンテンツ</translation>
@@ -1871,6 +1872,7 @@
 <translation id="2989123969927553766">マウスのスクロール アクセラレーション</translation>
 <translation id="2989474696604907455">接続されていません</translation>
 <translation id="2989786307324390836">DER エンコード バイナリ形式の単一の証明書</translation>
+<translation id="2989805286512600854">新しいタブで開く</translation>
 <translation id="2990313168615879645">Google アカウントを追加</translation>
 <translation id="2990583317361835189">サイトにモーション センサーの使用を許可しない</translation>
 <translation id="2992931425024192067">すべての通知内容を表示する</translation>
diff --git a/chrome/app/resources/generated_resources_ka.xtb b/chrome/app/resources/generated_resources_ka.xtb
index 652ba71..7803afd 100644
--- a/chrome/app/resources/generated_resources_ka.xtb
+++ b/chrome/app/resources/generated_resources_ka.xtb
@@ -1590,6 +1590,7 @@
 <translation id="2691440343905273290">შეყვანის პარამეტრების შეცვლა</translation>
 <translation id="2693176596243495071">სამწუხაროდ, მოხდა უცნობი შეცდომა. გთხოვთ, ცადოთ მოგვიანებით ან დაუკავშირდეთ თქვენს ადმინისტრატორს, თუ პრობლემა არ მოგვარდება.</translation>
 <translation id="2699911226086014512">PIN-კოდთან დაკავშირებული ოპერაცია ვერ შესრულდა. კოდი: <ph name="RETRIES" />.</translation>
+<translation id="2701330563083355633">გაზიარებულია <ph name="DEVICE_NAME" />-დან</translation>
 <translation id="2701737434167469065">შესვლა, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">საკითხავი სია</translation>
 <translation id="270358213449696159">Google Chrome OS-ის პირობების შიგთავსი</translation>
@@ -1871,6 +1872,7 @@
 <translation id="2989123969927553766">მაუსით გადაადგილების აჩქარება</translation>
 <translation id="2989474696604907455">არ არის მიმაგრებული</translation>
 <translation id="2989786307324390836">DER-დაშიფრული ბინარული, ერთი სერტიფიკატი</translation>
+<translation id="2989805286512600854">ახალ ჩანართზე გახსნა</translation>
 <translation id="2990313168615879645">Google ანგარიშის დამატება</translation>
 <translation id="2990583317361835189">საიტებისთვის მოძრაობის სენსორების გამოყენების აკრძალვა</translation>
 <translation id="2992931425024192067">შეტყობინებების მთელი კონტენტის ჩვენება</translation>
diff --git a/chrome/app/resources/generated_resources_kk.xtb b/chrome/app/resources/generated_resources_kk.xtb
index 7ed0868..eb6f12c 100644
--- a/chrome/app/resources/generated_resources_kk.xtb
+++ b/chrome/app/resources/generated_resources_kk.xtb
@@ -1587,6 +1587,7 @@
 <translation id="2691440343905273290">Енгізу параметрлерін өзгерту</translation>
 <translation id="2693176596243495071">Қап! Белгісіз қате шықты. Әрекетті кейінірек қайталаңыз немесе мәселе жойылмаса, әкімшіге хабарласыңыз.</translation>
 <translation id="2699911226086014512">PIN коды орнатылмады. Қате коды: <ph name="RETRIES" />.</translation>
+<translation id="2701330563083355633"><ph name="DEVICE_NAME" /> құрылғысынан бөлісілді.</translation>
 <translation id="2701737434167469065"><ph name="EMAIL" /> есептік жазбасына кіру</translation>
 <translation id="2702801445560668637">Оқу тізімі</translation>
 <translation id="270358213449696159">Google Chrome ОЖ шарттары мазмұндары</translation>
@@ -1867,6 +1868,7 @@
 <translation id="2989123969927553766">Тінтуірдің айналдыруын жылдамдату</translation>
 <translation id="2989474696604907455">тіркелмеген</translation>
 <translation id="2989786307324390836">DER кодталған бинарлы, бір сертификат</translation>
+<translation id="2989805286512600854">Жаңа қойындыда ашу</translation>
 <translation id="2990313168615879645">Есептік жазба қосу</translation>
 <translation id="2990583317361835189">Сайттардың қозғалыс датчиктерін пайдалануына рұқсат бермеу</translation>
 <translation id="2992931425024192067">Хабарландыруды толық көрсету</translation>
diff --git a/chrome/app/resources/generated_resources_km.xtb b/chrome/app/resources/generated_resources_km.xtb
index b541dd1..3811ce35 100644
--- a/chrome/app/resources/generated_resources_km.xtb
+++ b/chrome/app/resources/generated_resources_km.xtb
@@ -1605,6 +1605,7 @@
 <translation id="2691440343905273290">ផ្លាស់ប្ដូរ​ការកំណត់​ការបញ្ចូល</translation>
 <translation id="2693176596243495071">អូ៎! បញ្ហាមិន​ស្គាល់​បានកើតឡើង។ សូមព្យាយាម​ម្តងទៀតនៅពេលក្រោយ ឬទាក់ទងអ្នកគ្រប់គ្រង​របស់អ្នក ប្រសិនបើបញ្ហា​នៅតែបន្តកើតមាន។</translation>
 <translation id="2699911226086014512">មិនអាចធ្វើប្រតិបត្តិការកូដ PIN ដោយប្រើកូដ <ph name="RETRIES" /> បានទេ។</translation>
+<translation id="2701330563083355633">បាន​ចែករំលែក​ពី <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">ចូលគណនី <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">បញ្ជីអាន</translation>
 <translation id="270358213449696159">មាតិកា​លក្ខខណ្ឌ Google Chrome OS</translation>
@@ -1886,6 +1887,7 @@
 <translation id="2989123969927553766">ការបង្កើន​ល្បឿន​រំកិលកណ្ដុរ</translation>
 <translation id="2989474696604907455">មិនត្រូវបានភ្ជាប់ទេ</translation>
 <translation id="2989786307324390836">គោលពីរ Der-ដែលបានបម្លែង, វិញ្ញាបនប័ត្រទោល</translation>
+<translation id="2989805286512600854">បើកនៅក្នុងផ្ទាំងថ្មី</translation>
 <translation id="2990313168615879645">បញ្ចូល​គណនី Google</translation>
 <translation id="2990583317361835189">មិនអនុញ្ញាតឱ្យ​គេហទំព័រ​ប្រើឧបករណ៍​ចាប់ចលនាទេ</translation>
 <translation id="2992931425024192067">បង្ហាញខ្លឹមសារនៃការ​ជូនដំណឹង​ទាំងអស់</translation>
diff --git a/chrome/app/resources/generated_resources_kn.xtb b/chrome/app/resources/generated_resources_kn.xtb
index a9a1dc1..6f99df32 100644
--- a/chrome/app/resources/generated_resources_kn.xtb
+++ b/chrome/app/resources/generated_resources_kn.xtb
@@ -1598,6 +1598,7 @@
 <translation id="2691440343905273290">ಇನ್‌ಪುಟ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಬದಲಾಯಿಸಿ</translation>
 <translation id="2693176596243495071">ಓಹ್! ಅಪರಿಚಿತ ದೋಷ ಉಂಟಾಗಿದೆ. ನಂತರ ಪುನಃ ಪ್ರಯತ್ನಿಸಿ ಅಥವಾ ಸಮಸ್ಯೆ ಮುಂದುವರಿದಲ್ಲಿ ನಿಮ್ಮ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ.</translation>
 <translation id="2699911226086014512">ಪಿನ್ ಕಾರ್ಯಾಚರಣೆಯು ವಿಫಲವಾಗಿದೆ ಮತ್ತು <ph name="RETRIES" /> ಕೋಡ್ ಅನ್ನು ಮರಳಿಸಿದೆ.</translation>
+<translation id="2701330563083355633"><ph name="DEVICE_NAME" /> ನಿಂದ ಹಂಚಿಕೊಳ್ಳಲಾಗಿದೆ</translation>
 <translation id="2701737434167469065">ಸೈನ್ ಇನ್ ಮಾಡಿ, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">ಓದುವ ಪಟ್ಟಿ</translation>
 <translation id="270358213449696159">Google Chromium OS ನಿಯಮಗಳ ವಿಷಯಗಳು</translation>
@@ -1878,6 +1879,7 @@
 <translation id="2989123969927553766">ಮೌಸ್ ಸ್ಕ್ರಾಲ್ ವೇಗವರ್ಧನೆ</translation>
 <translation id="2989474696604907455">ಲಗತ್ತಿಸಿಲ್ಲ</translation>
 <translation id="2989786307324390836">DER-ಎನ್‌ಕೋಡೆಡ್ ಬೈನರಿ, ಏಕ ಪ್ರಮಾಣಪತ್ರ</translation>
+<translation id="2989805286512600854">ಹೊಸ ಟ್ಯಾಬ್‌ನಲ್ಲಿ ತೆರೆಯಿರಿ</translation>
 <translation id="2990313168615879645">Google ಖಾತೆ ಸೇರಿಸಿ</translation>
 <translation id="2990583317361835189">ಮೋಷನ್ ಸೆನ್ಸರ್‌ಗಳನ್ನು ಬಳಸಲು ಸೈಟ್‌ಗಳಿಗೆ ಅನುಮತಿಸಬೇಡಿ</translation>
 <translation id="2992931425024192067">ಎಲ್ಲಾ ಅಧಿಸೂಚನೆ ವಿಷಯಗಳನ್ನು ತೋರಿಸಿ</translation>
diff --git a/chrome/app/resources/generated_resources_ko.xtb b/chrome/app/resources/generated_resources_ko.xtb
index 7f27eb25..f9d6a05 100644
--- a/chrome/app/resources/generated_resources_ko.xtb
+++ b/chrome/app/resources/generated_resources_ko.xtb
@@ -1605,6 +1605,7 @@
 <translation id="2691440343905273290">입력 설정 변경</translation>
 <translation id="2693176596243495071">죄송합니다. 알 수 없는 오류가 발생했습니다. 나중에 다시 시도하거나 문제가 계속되는 경우 관리자에게 문의하세요.</translation>
 <translation id="2699911226086014512">PIN 작업에 실패했습니다. 오류 코드는 <ph name="RETRIES" />입니다.</translation>
+<translation id="2701330563083355633"><ph name="DEVICE_NAME" />에서 공유함</translation>
 <translation id="2701737434167469065">로그인, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">읽기 목록</translation>
 <translation id="270358213449696159">Google Chrome OS 이용약관 내용</translation>
@@ -1886,6 +1887,7 @@
 <translation id="2989123969927553766">마우스 스크롤 가속</translation>
 <translation id="2989474696604907455">첨부되지 않음</translation>
 <translation id="2989786307324390836">DER-인코딩 바이너리, 단일 인증서</translation>
+<translation id="2989805286512600854">새 탭에서 열기</translation>
 <translation id="2990313168615879645">Google 계정 추가</translation>
 <translation id="2990583317361835189">사이트에서 움직임 감지 센서를 사용하도록 허용하지 않음</translation>
 <translation id="2992931425024192067">모든 알림 내용 표시</translation>
diff --git a/chrome/app/resources/generated_resources_ky.xtb b/chrome/app/resources/generated_resources_ky.xtb
index c85263f..c04d4ed 100644
--- a/chrome/app/resources/generated_resources_ky.xtb
+++ b/chrome/app/resources/generated_resources_ky.xtb
@@ -1605,6 +1605,7 @@
 <translation id="2691440343905273290">Киргизүү жөндөөлөрүн өзгөртүү</translation>
 <translation id="2693176596243495071">Ой!  Белгисиз ката кетти. Кайталап көрүңүз же маселе чечилбесе, администраторуңузга кайрылыңыз.</translation>
 <translation id="2699911226086014512">PIN код <ph name="RETRIES" /> жолу ката киргизилди.</translation>
+<translation id="2701330563083355633"><ph name="DEVICE_NAME" /> аркылуу бөлүшүлдү</translation>
 <translation id="2701737434167469065">Кирүү, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Окуу тизмеси</translation>
 <translation id="270358213449696159">Google Chrome OS шарттарынын мазмуну</translation>
@@ -1886,6 +1887,7 @@
 <translation id="2989123969927553766">Чычканды ылдамдаткыч</translation>
 <translation id="2989474696604907455">тиркелген жок</translation>
 <translation id="2989786307324390836">DER-коддолгон бинардык жалгыз тастыктама</translation>
+<translation id="2989805286512600854">Жаңы өтмөктө ачуу</translation>
 <translation id="2990313168615879645">Google аккаунтун кошуу</translation>
 <translation id="2990583317361835189">Сайттар кыймыл сенсорлорун колдоно албасын</translation>
 <translation id="2992931425024192067">Билдирме толугу менен көрүнсүн</translation>
diff --git a/chrome/app/resources/generated_resources_lo.xtb b/chrome/app/resources/generated_resources_lo.xtb
index 258d7bb..170c159 100644
--- a/chrome/app/resources/generated_resources_lo.xtb
+++ b/chrome/app/resources/generated_resources_lo.xtb
@@ -1134,6 +1134,7 @@
 <translation id="2178614541317717477">ຜ່ອນຜັນ CA</translation>
 <translation id="2182058453334755893">ອັດສຳເນົາໃສ່ຄລິບບອດຂອງທ່ານແລ້ວ</translation>
 <translation id="2184515124301515068">ໃຫ້ Chrome ເລືອກວ່າເວັບໄຊສາມາດຫຼິ້ນສຽງໄດ້ເວລາໃດ (ແນະນຳ)</translation>
+<translation id="2186711480981247270">ໜ້າທີ່ແບ່ງປັນມາຈາກອຸປະກອນອື່ນ</translation>
 <translation id="2187675480456493911">ຊິ້ງຂໍ້ມູນກັບອຸປະກອນອື່ນໃນບັນຊີຂອງທ່ານແລ້ວ. ລະບົບຈະບໍ່ຊິ້ງຂໍ້ມູນການຕັ້ງຄ່າທີ່ຜູ້ໃຊ້ອື່ນແກ້ໄຂ. <ph name="LINK_BEGIN" />ສຶກສາເພີ່ມເຕີມ<ph name="LINK_END" /></translation>
 <translation id="2187895286714876935">ການນໍາໃບຢັ້ງຢືນເຊີບເວີເຂົ້າຜິດພາດ</translation>
 <translation id="2187906491731510095">ອັບເດດສ່ວນຂະຫຍາຍແລ້ວ</translation>
@@ -1602,6 +1603,7 @@
 <translation id="2691440343905273290">ປ່ຽນການຕັ້ງຄ່າການປ້ອນຂໍ້ມູນ</translation>
 <translation id="2693176596243495071">ອຸ້ຍ!  ເກີດຄວາມຜິດພາດທີ່ບໍ່ຮູ້ຈັກຂຶ້ນ. ກະລຸນາລອງໃໝ່ໃນພາຍຫຼັງ ຫຼື ຕິດຕໍ່ຫາຜູ້ເບິ່ງແຍງລະບົບຂອງທ່ານຖ້າບັນຫາຍັງຄົງຢູ່.</translation>
 <translation id="2699911226086014512">ການດຳເນີນ PIN ບໍ່ສຳເລັດໂດຍມີລະຫັດ <ph name="RETRIES" />.</translation>
+<translation id="2701330563083355633">ແບ່ງປັນຈາກ <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">ເຂົ້າສູ່ລະບົບ, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">ລາຍການທີ່ຈະອ່ານ</translation>
 <translation id="270358213449696159">ເນື້ອຫາຂໍ້ກຳນົດຂອງ Google Chrome OS</translation>
@@ -1883,6 +1885,7 @@
 <translation id="2989123969927553766">ການເລັ່ງຄວາມໄວການເລື່ອນເມົ້າ</translation>
 <translation id="2989474696604907455">ບໍ່ໄດ້ຄັດຕິດ</translation>
 <translation id="2989786307324390836">DER-ສອງດ້ານໃສ່ລະຫັດແລ້ວ, ໃບຢັ້ງຢືນດ່ຽວ</translation>
+<translation id="2989805286512600854">ເປີດຢູ່ໃນແຖບໃໝ່</translation>
 <translation id="2990313168615879645">ເພີ່ມບັນຊີ Google</translation>
 <translation id="2990583317361835189">ບໍ່ອະນຸຍາດໃຫ້ເວັບໄຊໃຊ້ເຊັນເຊີກວດຈັບການເຄື່ອນໄຫວ</translation>
 <translation id="2992931425024192067">ສະແດງເນື້ອຫາການແຈ້ງເຕືອນທັງໝົດ</translation>
diff --git a/chrome/app/resources/generated_resources_lt.xtb b/chrome/app/resources/generated_resources_lt.xtb
index 9a0ce1f..2c8b216 100644
--- a/chrome/app/resources/generated_resources_lt.xtb
+++ b/chrome/app/resources/generated_resources_lt.xtb
@@ -1608,6 +1608,7 @@
 <translation id="2691440343905273290">Keisti įvesties nustatymus</translation>
 <translation id="2693176596243495071">Oi! Įvyko nežinoma klaida. Bandykite dar kartą vėliau arba susisiekite su administratoriumi, jei problema išliks.</translation>
 <translation id="2699911226086014512">PIN kodo operacijos atlikti nepavyko, klaidos kodas: <ph name="RETRIES" />.</translation>
+<translation id="2701330563083355633">Bendrinta iš „<ph name="DEVICE_NAME" />“</translation>
 <translation id="2701737434167469065">Prisijungti, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Skait. sąraš.</translation>
 <translation id="270358213449696159">„Google Chrome“ OS sąlygų turinys</translation>
@@ -1889,6 +1890,7 @@
 <translation id="2989123969927553766">Slinkimo pele spartinimas</translation>
 <translation id="2989474696604907455">neprijungtas</translation>
 <translation id="2989786307324390836">DER užkoduotas dvejetainis, vienas sertifikatas</translation>
+<translation id="2989805286512600854">Atidaryti naujame skirtuke</translation>
 <translation id="2990313168615879645">Pridėti „Google“ paskyrą</translation>
 <translation id="2990583317361835189">Neleisti svetainėms naudoti judesio jutiklių</translation>
 <translation id="2992931425024192067">Rodyti visą pranešimo turinį</translation>
diff --git a/chrome/app/resources/generated_resources_lv.xtb b/chrome/app/resources/generated_resources_lv.xtb
index 3ffc581..6854ea4 100644
--- a/chrome/app/resources/generated_resources_lv.xtb
+++ b/chrome/app/resources/generated_resources_lv.xtb
@@ -1592,6 +1592,7 @@
 <translation id="2691440343905273290">Mainīt ievades iestatījumus</translation>
 <translation id="2693176596243495071">Diemžēl radās nezināma kļūda. Vēlāk mēģiniet vēlreiz, vai sazinieties ar administratoru, ja problēma joprojām pastāv.</translation>
 <translation id="2699911226086014512">PIN darbība neizdevās, kods: <ph name="RETRIES" />.</translation>
+<translation id="2701330563083355633">Kopīgota no: <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">Pierakstīties (<ph name="EMAIL" />)</translation>
 <translation id="2702801445560668637">Atvērt sarakstu</translation>
 <translation id="270358213449696159">Google Chrome OS noteikumu saturs</translation>
@@ -1873,6 +1874,7 @@
 <translation id="2989123969927553766">Peles ritināšanas paātrināšana</translation>
 <translation id="2989474696604907455">nav pievienota</translation>
 <translation id="2989786307324390836">DER kodēts binārais fails, viens sertifikāts</translation>
+<translation id="2989805286512600854">Atvērt jaunā cilnē</translation>
 <translation id="2990313168615879645">Pievienot Google kontu</translation>
 <translation id="2990583317361835189">Neļaut vietnēm izmantot kustību sensorus</translation>
 <translation id="2992931425024192067">Rādīt visu paziņojumu saturu</translation>
diff --git a/chrome/app/resources/generated_resources_mk.xtb b/chrome/app/resources/generated_resources_mk.xtb
index 89139470..f9ce1f79 100644
--- a/chrome/app/resources/generated_resources_mk.xtb
+++ b/chrome/app/resources/generated_resources_mk.xtb
@@ -1606,6 +1606,7 @@
 <translation id="2691440343905273290">Изменете ги поставките за внесување</translation>
 <translation id="2693176596243495071">Упс!  Настана непозната грешка. Обидете се повторно подоцна. Ако и понатаму се соочувате со истиот проблем, контактирајте со вашиот администратор.</translation>
 <translation id="2699911226086014512">Операцијата за PIN не успеа со код <ph name="RETRIES" />.</translation>
+<translation id="2701330563083355633">Споделено од <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">Најавете се, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Список за читање</translation>
 <translation id="270358213449696159">Содржина на Условите за користење на Google Chrome OS</translation>
@@ -1887,6 +1888,7 @@
 <translation id="2989123969927553766">Забрзување на лизгањето на глувчето</translation>
 <translation id="2989474696604907455">не е прикачен</translation>
 <translation id="2989786307324390836">Бинарни податоци шифрирани со ДЕР, еден сертификат</translation>
+<translation id="2989805286512600854">Отвори во нова картичка</translation>
 <translation id="2990313168615879645">Додајте сметка на Google</translation>
 <translation id="2990583317361835189">Не им дозволувај на сајтовите да користат сензори за движење</translation>
 <translation id="2992931425024192067">Прикажувај ја целата содржина на известувањата</translation>
diff --git a/chrome/app/resources/generated_resources_ml.xtb b/chrome/app/resources/generated_resources_ml.xtb
index 834e00a..2970f42a 100644
--- a/chrome/app/resources/generated_resources_ml.xtb
+++ b/chrome/app/resources/generated_resources_ml.xtb
@@ -1589,6 +1589,7 @@
 <translation id="2691440343905273290">ഇൻപുട്ട് ക്രമീകരണം മാറ്റുക</translation>
 <translation id="2693176596243495071">ക്ഷമിക്കണം! അജ്ഞാതമായൊരു പിശക് ‌സംഭവിച്ചു. പിന്നീട് ‌വീണ്ടും ശ്രമിക്കുക അല്ലെങ്കിൽ ‌പ്രശ്‌നം ‌നിലനിൽക്കുകയാണെങ്കിൽ അഡ്‌മിനിസ്‌ട്രേറ്ററുമായി ബന്ധപ്പെടുക.</translation>
 <translation id="2699911226086014512"><ph name="RETRIES" /> എന്ന കോഡ് ഉപയോഗിച്ച് പിൻ പ്രവർത്തിപ്പിക്കാനായില്ല.</translation>
+<translation id="2701330563083355633"><ph name="DEVICE_NAME" /> ഉപകരണത്തിൽ നിന്ന് പങ്കിട്ടു</translation>
 <translation id="2701737434167469065">സൈൻ ഇൻ ചെയ്യുക, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">വായനാ ലിസ്റ്റ്</translation>
 <translation id="270358213449696159">Google Chrome OS നിബന്ധനകളുടെ ഉള്ളടക്കം</translation>
@@ -1870,6 +1871,7 @@
 <translation id="2989123969927553766">മൗസ് സ്ക്രോൾ ആക്സിലറേഷൻ</translation>
 <translation id="2989474696604907455">അറ്റാച്ചുചെയ്‌തില്ല</translation>
 <translation id="2989786307324390836">DER-എന്‍‌കോഡ് ചെയ്‌ത ബൈനറി, ഒറ്റ സര്‍‌ട്ടിഫിക്കറ്റ്</translation>
+<translation id="2989805286512600854">പുതിയ ടാബില്‍ തുറക്കുക</translation>
 <translation id="2990313168615879645">Google അക്കൗണ്ട് ചേർക്കുക</translation>
 <translation id="2990583317361835189">മോഷൻ സെൻസറുകൾ ഉപയോഗിക്കാൻ സൈറ്റുകളെ അനുവദിക്കരുത്</translation>
 <translation id="2992931425024192067">എല്ലാ അറിയിപ്പിന്റെയും ഉള്ളടക്കം കാണിക്കുക</translation>
diff --git a/chrome/app/resources/generated_resources_mn.xtb b/chrome/app/resources/generated_resources_mn.xtb
index 4dda9dd..1baed20c 100644
--- a/chrome/app/resources/generated_resources_mn.xtb
+++ b/chrome/app/resources/generated_resources_mn.xtb
@@ -1601,6 +1601,7 @@
 <translation id="2691440343905273290">Оруулгын тохиргоог өөрчлөх</translation>
 <translation id="2693176596243495071">Уучлаарай! Тодорхойгүй алдаа гарлаа. Дараа дахин оролдох эсвэл асуудал үргэлжилсээр байвал админтайгаа холбогдоно уу.</translation>
 <translation id="2699911226086014512">ПИН-г тохируулж чадсангүй. Алдааны код <ph name="RETRIES" />.</translation>
+<translation id="2701330563083355633"><ph name="DEVICE_NAME" />-с хуваалцсан</translation>
 <translation id="2701737434167469065">Нэвтрэх, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Унших жагсаалт</translation>
 <translation id="270358213449696159">Google Chrome үйлдлийн системийн нөхцөлийн агуулга</translation>
@@ -1882,6 +1883,7 @@
 <translation id="2989123969927553766">Хулганын гүйлгэлтийн хурдасгуур</translation>
 <translation id="2989474696604907455">Хавсаргаагүй</translation>
 <translation id="2989786307324390836">DER шифрлэлттэй бинар дан гэрчилгээ</translation>
+<translation id="2989805286512600854">Шинэ цонхонд нээ</translation>
 <translation id="2990313168615879645">Google Бүртгэл нэмэх</translation>
 <translation id="2990583317361835189">Сайтуудад хөдөлгөөн мэдрэгчдийг ашиглахыг бүү зөвшөөр</translation>
 <translation id="2992931425024192067">Бүх мэдэгдлийн агуулгыг харуулах</translation>
@@ -2544,7 +2546,7 @@
 <translation id="371300529209814631">Буцах/Урагшлах</translation>
 <translation id="3713047097299026954">Энэ аюулгүй байдлын түлхүүрт ямар нэгэн нэвтрэх өгөгдөл алга байна</translation>
 <translation id="3714195043138862580">Энэ демо төхөөрөмжийн нэвтрэх эрхийг хүчингүй болгосон байна.</translation>
-<translation id="3714633008798122362">веб хуанли</translation>
+<translation id="3714633008798122362">веб календарь</translation>
 <translation id="3719826155360621982">Нүүр хуудас</translation>
 <translation id="372062398998492895">CUPS</translation>
 <translation id="3721119614952978349">Та болон Google</translation>
diff --git a/chrome/app/resources/generated_resources_mr.xtb b/chrome/app/resources/generated_resources_mr.xtb
index 1aac0635..f07adee9 100644
--- a/chrome/app/resources/generated_resources_mr.xtb
+++ b/chrome/app/resources/generated_resources_mr.xtb
@@ -1604,6 +1604,7 @@
 <translation id="2691440343905273290">इनपुट सेटिंग्ज बदला</translation>
 <translation id="2693176596243495071">अरेरे!  एक अज्ञात एरर आली. कृपया नंतर पुन्हा प्रयत्न करा किंवा समस्या कायम राहिल्यास तुमच्या अ‍ॅडमिनिस्ट्रेटरशी संपर्क साधा.</translation>
 <translation id="2699911226086014512"><ph name="RETRIES" /> कोडसह पिन ऑपरेशन पूर्ण झाले नाही.</translation>
+<translation id="2701330563083355633"><ph name="DEVICE_NAME" /> वरून शेअर केले</translation>
 <translation id="2701737434167469065"><ph name="EMAIL" /> सह साइन इन करा</translation>
 <translation id="2702801445560668637">वाचन सूची</translation>
 <translation id="270358213449696159">Google Chrome OS अटी आशय</translation>
@@ -1885,6 +1886,7 @@
 <translation id="2989123969927553766">माउस स्क्रोल अ‍ॅक्सिलरेशन</translation>
 <translation id="2989474696604907455">संलग्न केले नाही</translation>
 <translation id="2989786307324390836">DER-एन्कोडेड बायनरी, एकल सर्टिफिकेट</translation>
+<translation id="2989805286512600854">नवीन टॅबमध्ये उघडा</translation>
 <translation id="2990313168615879645">Google खाते जोडा</translation>
 <translation id="2990583317361835189">साइटना मोशन सेन्सर वापरण्याची अनुमती देऊ नका</translation>
 <translation id="2992931425024192067">सर्व सूचना आशय दाखवा</translation>
diff --git a/chrome/app/resources/generated_resources_ms.xtb b/chrome/app/resources/generated_resources_ms.xtb
index 2b8864e..7b0ceb8e 100644
--- a/chrome/app/resources/generated_resources_ms.xtb
+++ b/chrome/app/resources/generated_resources_ms.xtb
@@ -1605,6 +1605,7 @@
 <translation id="2691440343905273290">Tukar tetapan masukan</translation>
 <translation id="2693176596243495071">Op! Ralat yang tidak diketahui telah berlaku. Sila cuba lagi nanti atau hubungi pentadbir anda jika isu ini berterusan.</translation>
 <translation id="2699911226086014512">Operasi PIN gagal dengan kod <ph name="RETRIES" />.</translation>
+<translation id="2701330563083355633">Dikongsi daripada <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">Log masuk, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Senarai Bacaan</translation>
 <translation id="270358213449696159">Kandungan Syarat OS Google Chrome</translation>
@@ -1886,6 +1887,7 @@
 <translation id="2989123969927553766">Pemecutan penatalan tetikus</translation>
 <translation id="2989474696604907455">tidak dipasang</translation>
 <translation id="2989786307324390836">Binari terkod DER, sijil tunggal</translation>
+<translation id="2989805286512600854">Buka dalam Tab Baharu</translation>
 <translation id="2990313168615879645">Tambahkan Akaun Google</translation>
 <translation id="2990583317361835189">Jangan benarkan laman menggunakan penderia gerakan</translation>
 <translation id="2992931425024192067">Tunjukkan semua kandungan pemberitahuan</translation>
diff --git a/chrome/app/resources/generated_resources_my.xtb b/chrome/app/resources/generated_resources_my.xtb
index c57008c6..bc8da8c5 100644
--- a/chrome/app/resources/generated_resources_my.xtb
+++ b/chrome/app/resources/generated_resources_my.xtb
@@ -1604,6 +1604,7 @@
 <translation id="2691440343905273290">လက်ကွက်ဆက်တင်များ ပြောင်းရန်</translation>
 <translation id="2693176596243495071">သည်းခံပါ။ အမျိုးအမည်မသိသော အမှားအယွင်းတစ်ခု ရှိနေပါသည်။ နောက်မှထပ်လုပ်ကြည့်ပါ သို့မဟုတ် ပြဿနာဆက်ရှိနေသေးလျှင် သင့်စီမံခန့်ခွဲသူကို ဆက်သွယ်ပါ။</translation>
 <translation id="2699911226086014512">'ပင်နံပါတ်' လုပ်ဆောင်ချက်သည် <ph name="RETRIES" /> ကုဒ်ဖြင့် မအောင်မြင် ဖြစ်သွားပါသည်။</translation>
+<translation id="2701330563083355633"><ph name="DEVICE_NAME" /> ထံမှ မျှဝေထားပါသည်</translation>
 <translation id="2701737434167469065">လက်မှတ်ထိုးဝင်ရန်၊ <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">ဖတ်ရန် စာရင်း</translation>
 <translation id="270358213449696159">Google Chrome OS စည်းမျဉ်း မာတိကာများ</translation>
@@ -1885,6 +1886,7 @@
 <translation id="2989123969927553766">မောက်စ်လှိမ့်သည့် အရှိန်မြှင့်ရန်</translation>
 <translation id="2989474696604907455">ပူးတွဲ မထား</translation>
 <translation id="2989786307324390836">DER-encoded binary၊ အသိမှတ်ပြု လက်မှတ်တစ်ခု</translation>
+<translation id="2989805286512600854">တဲဘ်အသစ်တွင် ဖွင့်မည်</translation>
 <translation id="2990313168615879645">Google Account ထည့်ရန်</translation>
 <translation id="2990583317361835189">လှုပ်ရှားမှုအာရုံခံစနစ်များ သုံးရန် ဝဘ်ဆိုက်များကို ခွင့်မပြုပါနှင့်</translation>
 <translation id="2992931425024192067">အကြောင်းကြားချက်ပါ အကြောင်းအရာအားလုံးကို ပြရန်</translation>
diff --git a/chrome/app/resources/generated_resources_ne.xtb b/chrome/app/resources/generated_resources_ne.xtb
index 3d94ddc..daa3e63 100644
--- a/chrome/app/resources/generated_resources_ne.xtb
+++ b/chrome/app/resources/generated_resources_ne.xtb
@@ -1584,6 +1584,7 @@
 <translation id="2691440343905273290">इनपुटसम्बन्धी सेटिङ परिवर्तन गर्नुहोस्</translation>
 <translation id="2693176596243495071">हत्तेरिका! कुनै अज्ञात त्रुटि भयो। कृपया पछि फेरि प्रयास गर्नुहोस्‌ वा यो समस्या रहिरहेमा आफ्नो प्रशासकलाई सम्पर्क गर्नुहोस्।</translation>
 <translation id="2699911226086014512">कोडको त्रुटिका कारण PIN सेट गर्न सकिएन <ph name="RETRIES" />।</translation>
+<translation id="2701330563083355633"><ph name="DEVICE_NAME" /> ले आदान प्रदान गरेको</translation>
 <translation id="2701737434167469065">साइन इन गर्नुहोस्, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">पाठ्य सूची</translation>
 <translation id="270358213449696159">Google Chrome OS का सामग्रीहरूका सर्तहरू</translation>
@@ -1865,6 +1866,7 @@
 <translation id="2989123969927553766">माउस स्क्रोल हुने गति बढाउने कार्य</translation>
 <translation id="2989474696604907455">संलग्न छैन</translation>
 <translation id="2989786307324390836">DER-इनकोडेड बाइनरी, एउटा प्रमाणपत्र</translation>
+<translation id="2989805286512600854">नयाँ ट्याबमा खोल्नुहोस्</translation>
 <translation id="2990313168615879645">Google खाता थप्नुहोस्</translation>
 <translation id="2990583317361835189">साइटहरूलाई मोसन सेन्सर प्रयोग गर्ने अनुमति नदिइयोस्</translation>
 <translation id="2992931425024192067">सूचनाका सबै सामग्री देखाउनुहोस्</translation>
diff --git a/chrome/app/resources/generated_resources_nl.xtb b/chrome/app/resources/generated_resources_nl.xtb
index b5c48bb..251238f2 100644
--- a/chrome/app/resources/generated_resources_nl.xtb
+++ b/chrome/app/resources/generated_resources_nl.xtb
@@ -1590,6 +1590,7 @@
 <translation id="2691440343905273290">Invoerinstellingen wijzigen</translation>
 <translation id="2693176596243495071">Er is een onbekende fout opgetreden. Probeer het later opnieuw of neem contact op met je beheerder als het probleem blijft optreden.</translation>
 <translation id="2699911226086014512">Bewerking met pincode mislukt met code <ph name="RETRIES" />.</translation>
+<translation id="2701330563083355633">Gedeeld vanaf <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">Inloggen, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Leeslijst</translation>
 <translation id="270358213449696159">Content van Voorwaarden van Google Chrome OS</translation>
@@ -1870,6 +1871,7 @@
 <translation id="2989123969927553766">Scrollversnelling muis</translation>
 <translation id="2989474696604907455">niet aangesloten</translation>
 <translation id="2989786307324390836">DER Encoded Binary, één certificaat</translation>
+<translation id="2989805286512600854">Openen op nieuw tabblad</translation>
 <translation id="2990313168615879645">Google-account toevoegen</translation>
 <translation id="2990583317361835189">Niet toestaan dat sites bewegingssensoren gebruiken</translation>
 <translation id="2992931425024192067">Content van alle meldingen tonen</translation>
diff --git a/chrome/app/resources/generated_resources_no.xtb b/chrome/app/resources/generated_resources_no.xtb
index 8993508..1cdecd102 100644
--- a/chrome/app/resources/generated_resources_no.xtb
+++ b/chrome/app/resources/generated_resources_no.xtb
@@ -1599,6 +1599,7 @@
 <translation id="2691440343905273290">Endre inndatainnstillinger</translation>
 <translation id="2693176596243495071">Beklager. En ukjent feil oppsto. Prøv på nytt senere, eller kontakt administratoren hvis problemet fortsetter.</translation>
 <translation id="2699911226086014512">PIN-kodehandlingen mislyktes med koden <ph name="RETRIES" />.</translation>
+<translation id="2701330563083355633">Delt fra <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">Logg på, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Leseliste</translation>
 <translation id="270358213449696159">Innholdet i vilkårene for Google Chrome OS</translation>
@@ -1880,6 +1881,7 @@
 <translation id="2989123969927553766">Rulleakselerasjon for musen</translation>
 <translation id="2989474696604907455">ikke tilkoblet</translation>
 <translation id="2989786307324390836">DER-kodet binært, enkelt sertifikat</translation>
+<translation id="2989805286512600854">Åpne i ny fane</translation>
 <translation id="2990313168615879645">Legg til Google-konto</translation>
 <translation id="2990583317361835189">Ikke la nettsteder bruke bevegelsessensorer</translation>
 <translation id="2992931425024192067">Vis alt innhold i varsler</translation>
diff --git a/chrome/app/resources/generated_resources_or.xtb b/chrome/app/resources/generated_resources_or.xtb
index 1b484f7..bc8d134fd 100644
--- a/chrome/app/resources/generated_resources_or.xtb
+++ b/chrome/app/resources/generated_resources_or.xtb
@@ -1588,6 +1588,7 @@
 <translation id="2691440343905273290">ଇନପୁଟ୍ ସେଟିଂସ୍ ପରିବର୍ତ୍ତନ କରନ୍ତୁ</translation>
 <translation id="2693176596243495071">ଓହୋ!  ଏକ ଅଜଣା ତ୍ରୁଟି ଦେଖାଦେଲା। ଦୟାକରି ପୁଣିଥରେ ଚେଷ୍ଟା କରନ୍ତୁ ବା ଯଦି ସମସ୍ୟାଟି ଲାଗିରୁହେ ତେବେ ନିଜର ବ୍ୟବସ୍ଥାପକଙ୍କ ସହ ସମ୍ପର୍କ କରନ୍ତୁ।</translation>
 <translation id="2699911226086014512"><ph name="RETRIES" />କୋଡ୍ ସହିତ ପିନ୍‌ର କାର୍ଯ୍ୟକାରିତା ବିଫଳ ହେଲା।</translation>
+<translation id="2701330563083355633"><ph name="DEVICE_NAME" />ରୁ ସେୟାର୍ କରାଯାଇଛି</translation>
 <translation id="2701737434167469065">ସାଇନ୍ ଇନ୍, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">ପଢ଼ିବା ତାଲିକା</translation>
 <translation id="270358213449696159">Google Chrome OS ସର୍ତ୍ତାବଳୀର ବିଷୟବସ୍ତୁ</translation>
@@ -1869,6 +1870,7 @@
 <translation id="2989123969927553766">ମାଉସ୍ ସ୍କ୍ରୋଲ୍ ଆକ୍ସଲରେସନ୍</translation>
 <translation id="2989474696604907455">ସଂଯୁକ୍ତ ହୋଇନାହିଁ</translation>
 <translation id="2989786307324390836">DER-ଏନ୍‌କୋଡେଡ୍ ବାଇନାରୀ, ଏକକ ସାର୍ଟିଫିକେଟ୍</translation>
+<translation id="2989805286512600854">ନୂଆ ଟାବ୍‌ରେ ଖୋଲନ୍ତୁ</translation>
 <translation id="2990313168615879645">Google ଆକାଉଣ୍ଟ ଯୋଗ କରନ୍ତୁ</translation>
 <translation id="2990583317361835189">ମୋସନ୍ ସେନ୍ସରଗୁଡ଼ିକୁ ବ୍ୟବହାର କରିବା ପାଇଁ ସାଇଟଗୁଡ଼ିକୁ ଅନୁମତି ଦିଅନ୍ତୁ ନାହିଁ</translation>
 <translation id="2992931425024192067">ସମସ୍ତ ବିଜ୍ଞପ୍ତି ବିଷୟବସ୍ତୁ ଦେଖାନ୍ତୁ</translation>
diff --git a/chrome/app/resources/generated_resources_pa.xtb b/chrome/app/resources/generated_resources_pa.xtb
index cff9c4a..596297f 100644
--- a/chrome/app/resources/generated_resources_pa.xtb
+++ b/chrome/app/resources/generated_resources_pa.xtb
@@ -1606,6 +1606,7 @@
 <translation id="2691440343905273290">ਇਨਪੁੱਟ ਸੈਟਿੰਗਾਂ ਬਦਲੋ</translation>
 <translation id="2693176596243495071">ਓਹੋ! ਕੋਈ ਅਗਿਆਤ ਗੜਬੜ ਹੋ ਗਈ। ਕਿਰਪਾ ਕਰਕੇ ਬਾਅਦ ਵਿੱਚ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜਾਂ ਜੇਕਰ ਸਮੱਸਿਆ ਬਣੀ ਰਹਿੰਦੀ ਹੈ ਤਾਂ ਆਪਣੇ ਪ੍ਰਸ਼ਾਸਕ ਨਾਲ ਸੰਪਰਕ ਕਰੋ।</translation>
 <translation id="2699911226086014512"><ph name="RETRIES" /> ਕੋਡ ਵਾਲੀ ਪਿੰਨ ਕਾਰਵਾਈ ਅਸਫਲ ਰਹੀ।</translation>
+<translation id="2701330563083355633"><ph name="DEVICE_NAME" /> ਤੋਂ ਸਾਂਝਾ ਕੀਤਾ ਗਿਆ</translation>
 <translation id="2701737434167469065">ਸਾਈਨ-ਇਨ ਕਰੋ, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">ਵਾਚਣ ਸੂਚੀ</translation>
 <translation id="270358213449696159">Google Chrome OS ਦੇ ਨਿਯਮਾਂ ਵਾਲੀਆਂ ਸਮੱਗਰੀਆਂ</translation>
@@ -1886,6 +1887,7 @@
 <translation id="2989123969927553766">ਮਾਊਸ ਸਕ੍ਰੋਲ ਐਕਸੈੱਲਰੇਸ਼ਨ</translation>
 <translation id="2989474696604907455">ਅਟੈਚ ਨਹੀਂ ਕੀਤਾ</translation>
 <translation id="2989786307324390836">DER-ਐਨਕੋਡ ਕੀਤੀ ਬਾਈਨਰੀ, ਸਿੰਗਲ ਪ੍ਰਮਾਣ-ਪੱਤਰ</translation>
+<translation id="2989805286512600854">ਨਵੀਂ ਟੈਬ ਵਿੱਚ ਖੋਲ੍ਹੋ</translation>
 <translation id="2990313168615879645">Google ਖਾਤਾ ਸ਼ਾਮਲ ਕਰੋ</translation>
 <translation id="2990583317361835189">ਸਾਈਟਾਂ ਨੂੰ ਮੋਸ਼ਨ ਸੈਂਸਰ ਵਰਤਣ ਦੀ ਇਜਾਜ਼ਤ ਨਾ ਦਿਓ</translation>
 <translation id="2992931425024192067">ਸਾਰੀ ਸੂਚਨਾ ਸਮੱਗਰੀ ਦਿਖਾਓ</translation>
diff --git a/chrome/app/resources/generated_resources_pl.xtb b/chrome/app/resources/generated_resources_pl.xtb
index e727aa8a..41241d4 100644
--- a/chrome/app/resources/generated_resources_pl.xtb
+++ b/chrome/app/resources/generated_resources_pl.xtb
@@ -1588,6 +1588,7 @@
 <translation id="2691440343905273290">Zmień ustawienia wprowadzania</translation>
 <translation id="2693176596243495071">Ups, wystąpił nieznany błąd. Spróbuj ponownie później, a jeśli błąd nie ustąpi, skontaktuj się z administratorem.</translation>
 <translation id="2699911226086014512">Operacja z kodem PIN nie powiodła się, kod błędu: <ph name="RETRIES" />.</translation>
+<translation id="2701330563083355633">Tę kartę udostępnia <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">Zaloguj się, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Do przeczytania</translation>
 <translation id="270358213449696159">Treść Warunków korzystania z systemu operacyjnego Google Chrome</translation>
@@ -1868,6 +1869,7 @@
 <translation id="2989123969927553766">Przyspieszenie przewijania myszą</translation>
 <translation id="2989474696604907455">niepodłączone</translation>
 <translation id="2989786307324390836">Plik binarny z kodowaniem DER, jeden certyfikat</translation>
+<translation id="2989805286512600854">Otwórz w nowej karcie</translation>
 <translation id="2990313168615879645">Dodaj konto Google</translation>
 <translation id="2990583317361835189">Nie zezwalaj witrynom na używanie czujników ruchu</translation>
 <translation id="2992931425024192067">Pokazuj wszystkie powiadomienia</translation>
diff --git a/chrome/app/resources/generated_resources_pt-BR.xtb b/chrome/app/resources/generated_resources_pt-BR.xtb
index 8cc8ad3..1aba744 100644
--- a/chrome/app/resources/generated_resources_pt-BR.xtb
+++ b/chrome/app/resources/generated_resources_pt-BR.xtb
@@ -1606,6 +1606,7 @@
 <translation id="2691440343905273290">Mudar configurações de entrada</translation>
 <translation id="2693176596243495071">Ops! Ocorreu um erro desconhecido. Tente novamente mais tarde ou entre em contato com seu administrador se o problema persistir.</translation>
 <translation id="2699911226086014512">Falha na operação do PIN, código de erro: <ph name="RETRIES" />.</translation>
+<translation id="2701330563083355633">Compartilhada por <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">Faça login, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Lista de leitura</translation>
 <translation id="270358213449696159">Conteúdo dos Termos do Google Chrome OS</translation>
@@ -1887,6 +1888,7 @@
 <translation id="2989123969927553766">Aceleração de rolagem do mouse</translation>
 <translation id="2989474696604907455">não conectado</translation>
 <translation id="2989786307324390836">binário codificado por DER, certificado único</translation>
+<translation id="2989805286512600854">Abrir em uma nova guia</translation>
 <translation id="2990313168615879645">Adicionar Conta do Google</translation>
 <translation id="2990583317361835189">Não permitir que os sites usem os sensores de movimento</translation>
 <translation id="2992931425024192067">Mostrar todo o conteúdo de notificações</translation>
diff --git a/chrome/app/resources/generated_resources_pt-PT.xtb b/chrome/app/resources/generated_resources_pt-PT.xtb
index 4cfda87..ebcea97 100644
--- a/chrome/app/resources/generated_resources_pt-PT.xtb
+++ b/chrome/app/resources/generated_resources_pt-PT.xtb
@@ -1590,6 +1590,7 @@
 <translation id="2691440343905273290">Altere as definições de introdução</translation>
 <translation id="2693176596243495071">Ups! Ocorreu um erro desconhecido. Tente novamente mais tarde ou contacte o gestor se o problema persistir.</translation>
 <translation id="2699911226086014512">Falha na definição do PIN com o código <ph name="RETRIES" />.</translation>
+<translation id="2701330563083355633">Partilhado a partir do <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">Inicie sessão, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Lista de leitura</translation>
 <translation id="270358213449696159">Conteúdo dos Termos de Utilização do Google Chrome OS</translation>
@@ -1872,6 +1873,7 @@
 <translation id="2989123969927553766">Aceleração da deslocação do rato</translation>
 <translation id="2989474696604907455">não ligado</translation>
 <translation id="2989786307324390836">Certificado único de binário codificado DER</translation>
+<translation id="2989805286512600854">Abrir num Novo Separador</translation>
 <translation id="2990313168615879645">Adicionar Conta Google</translation>
 <translation id="2990583317361835189">Não permitir que os sites utilizem sensores de movimentos</translation>
 <translation id="2992931425024192067">Mostrar todo o conteúdo das notificações</translation>
diff --git a/chrome/app/resources/generated_resources_ro.xtb b/chrome/app/resources/generated_resources_ro.xtb
index 435c32b..d99a679 100644
--- a/chrome/app/resources/generated_resources_ro.xtb
+++ b/chrome/app/resources/generated_resources_ro.xtb
@@ -1591,6 +1591,7 @@
 <translation id="2691440343905273290">Modifică setările de introducere a textului</translation>
 <translation id="2693176596243495071">Hopa! A apărut o eroare necunoscută. Încearcă din nou mai târziu sau contactează administratorul dacă problema persistă.</translation>
 <translation id="2699911226086014512">Operațiunea cu PIN a eșuat cu codul <ph name="RETRIES" />.</translation>
+<translation id="2701330563083355633">Trimis de <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">Conectează-te, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Listă de lectură</translation>
 <translation id="270358213449696159">Conținutul Termenilor Google Chrome OS</translation>
@@ -1872,6 +1873,7 @@
 <translation id="2989123969927553766">Accelerarea derulării cu mouse-ul</translation>
 <translation id="2989474696604907455">neconectat</translation>
 <translation id="2989786307324390836">Certificat unic, sub formă de fișier binar cu codificarea DER</translation>
+<translation id="2989805286512600854">Deschideți într-o filă nouă</translation>
 <translation id="2990313168615879645">Adaugă Contul Google</translation>
 <translation id="2990583317361835189">Nu permite site-urilor să folosească senzori de mișcare</translation>
 <translation id="2992931425024192067">Afișează integral conținutul notificărilor</translation>
diff --git a/chrome/app/resources/generated_resources_ru.xtb b/chrome/app/resources/generated_resources_ru.xtb
index 4c8b708..ebf032d4 100644
--- a/chrome/app/resources/generated_resources_ru.xtb
+++ b/chrome/app/resources/generated_resources_ru.xtb
@@ -1592,6 +1592,7 @@
 <translation id="2691440343905273290">Изменить настройки ввода</translation>
 <translation id="2693176596243495071">Произошла неизвестная ошибка. Повторите попытку позже. Если ситуация не изменится, обратитесь к администратору.</translation>
 <translation id="2699911226086014512">Не удалось установить PIN-код (ошибка <ph name="RETRIES" />).</translation>
+<translation id="2701330563083355633">С устройства "<ph name="DEVICE_NAME" />"</translation>
 <translation id="2701737434167469065">Войти в аккаунт <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Список для чтения</translation>
 <translation id="270358213449696159">Полный текст Условий использования Google Chrome OS</translation>
@@ -1872,6 +1873,7 @@
 <translation id="2989123969927553766">Ускорение прокрутки мыши</translation>
 <translation id="2989474696604907455">не подключено</translation>
 <translation id="2989786307324390836">Двоичный единый сертификат с расшифровкой DER</translation>
+<translation id="2989805286512600854">Открыть в новой вкладке</translation>
 <translation id="2990313168615879645">Добавить аккаунт Google</translation>
 <translation id="2990583317361835189">Запретить сайтам использовать датчики движения</translation>
 <translation id="2992931425024192067">Показывать уведомления полностью</translation>
diff --git a/chrome/app/resources/generated_resources_si.xtb b/chrome/app/resources/generated_resources_si.xtb
index 25b95c74..f207482 100644
--- a/chrome/app/resources/generated_resources_si.xtb
+++ b/chrome/app/resources/generated_resources_si.xtb
@@ -1594,6 +1594,7 @@
 <translation id="2691440343905273290">ආදාන සැකසීම් වෙනස් කරන්න</translation>
 <translation id="2693176596243495071">අපොයි! නොදන්නා දෝෂයක් ඇති විය. පසුව නැවත උත්සාහ කරන්න හෝ ගැටලුව දිගටම පැවතියහොත් ඔබේ පරිපාලකයා සම්බන්ධ කර ගන්න.</translation>
 <translation id="2699911226086014512"><ph name="RETRIES" /> කේතය සමඟ රහස් අංක මෙහෙයුම අසාර්ථක විය.</translation>
+<translation id="2701330563083355633"><ph name="DEVICE_NAME" /> වෙතින් බෙදා ගන්නා ලදි</translation>
 <translation id="2701737434167469065">පුරන්න, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">කියවීම් ලැයිස්තුව</translation>
 <translation id="270358213449696159">Google Chrome OS නියම අන්තර්ගතය</translation>
@@ -1874,6 +1875,7 @@
 <translation id="2989123969927553766">මූසික අනුචලන ත්වරණය</translation>
 <translation id="2989474696604907455">අමුණා නැත</translation>
 <translation id="2989786307324390836">DER-සංකේතිත ද්වීමය, තනි සහතිකය</translation>
+<translation id="2989805286512600854">නව පටිත්තක විවෘත කරන්න</translation>
 <translation id="2990313168615879645">Google ගිණුම එක් කරන්න</translation>
 <translation id="2990583317361835189">චලන සංවේදක භාවිත කිරීමට අඩවිවලට ඉඩ නොදෙන්න</translation>
 <translation id="2992931425024192067">සියලුම දැනුම්දීමේ අන්තර්ගත පෙන්වන්න</translation>
diff --git a/chrome/app/resources/generated_resources_sk.xtb b/chrome/app/resources/generated_resources_sk.xtb
index 29ea4f5..39f8108 100644
--- a/chrome/app/resources/generated_resources_sk.xtb
+++ b/chrome/app/resources/generated_resources_sk.xtb
@@ -1595,6 +1595,7 @@
 <translation id="2691440343905273290">Zmeniť nastavenia vstupu</translation>
 <translation id="2693176596243495071">Ojoj, vyskytla sa neznáma chyba. Skúste to neskôr alebo, ak problém pretrváva, kontaktujte správcu.</translation>
 <translation id="2699911226086014512">Operácia kódu PIN zlyhala. Kód chyby: <ph name="RETRIES" />.</translation>
+<translation id="2701330563083355633">Zdieľané zo zariadenia <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">Prihlásiť sa, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Čitateľský zoznam</translation>
 <translation id="270358213449696159">Obsah zmluvných podmienok systému Google Chrome OS</translation>
@@ -1877,6 +1878,7 @@
 <translation id="2989123969927553766">Zrýchlenie posúvania myšou</translation>
 <translation id="2989474696604907455">nepripojené</translation>
 <translation id="2989786307324390836">Binárny súbor s kódovaním DER, jeden certifikát</translation>
+<translation id="2989805286512600854">Otvoriť na novej karte</translation>
 <translation id="2990313168615879645">Pridať účet Google</translation>
 <translation id="2990583317361835189">Nepovoliť webom používať senzory pohybu</translation>
 <translation id="2992931425024192067">Zobrazovať všetok obsah upozornení</translation>
diff --git a/chrome/app/resources/generated_resources_sl.xtb b/chrome/app/resources/generated_resources_sl.xtb
index 8633266..69ac10e 100644
--- a/chrome/app/resources/generated_resources_sl.xtb
+++ b/chrome/app/resources/generated_resources_sl.xtb
@@ -1608,6 +1608,7 @@
 <translation id="2691440343905273290">Spreminjanje nastavitev načina vnosa</translation>
 <translation id="2693176596243495071">Ojoj. Prišlo je do neznane napake. Poskusite znova pozneje ali se obrnite na skrbnika, če težave ne odpravite.</translation>
 <translation id="2699911226086014512">Nastavljanje kode PIN ni uspelo (koda napake <ph name="RETRIES" />).</translation>
+<translation id="2701330563083355633">V skupno rabo dala naprava: <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">Prijava, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Reading List</translation>
 <translation id="270358213449696159">Vsebina pogojev za Googlov OS Chrome</translation>
@@ -1889,6 +1890,7 @@
 <translation id="2989123969927553766">Pospeševanje pomikanja z miško</translation>
 <translation id="2989474696604907455">ni priključeno</translation>
 <translation id="2989786307324390836">DER kodirano dvojiško, enojno potrdilo</translation>
+<translation id="2989805286512600854">Odpri v novem zavihku</translation>
 <translation id="2990313168615879645">Dodaj račun Google</translation>
 <translation id="2990583317361835189">Spletnim mestom ni dovoljena uporaba tipal gibanja.</translation>
 <translation id="2992931425024192067">Pokaži vso vsebino obvestil</translation>
diff --git a/chrome/app/resources/generated_resources_sq.xtb b/chrome/app/resources/generated_resources_sq.xtb
index 0586b59..e15cac2a 100644
--- a/chrome/app/resources/generated_resources_sq.xtb
+++ b/chrome/app/resources/generated_resources_sq.xtb
@@ -1588,6 +1588,7 @@
 <translation id="2691440343905273290">Ndrysho cilësimet e hyrjes</translation>
 <translation id="2693176596243495071">Mos! Ndodhi një gabim i panjohur. Provo sërish më vonë ose kontakto me administratorin tënd nëse problemi vazhdon.</translation>
 <translation id="2699911226086014512">Veprimi i kodit PIN dështoi me kodin <ph name="RETRIES" />.</translation>
+<translation id="2701330563083355633">Ndarë nga <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">Identifikohu, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Lista e leximit</translation>
 <translation id="270358213449696159">Përmbajtja e kushteve të Google Chrome OS</translation>
@@ -1868,6 +1869,7 @@
 <translation id="2989123969927553766">Përshpejtimi i lëvizjes së miut</translation>
 <translation id="2989474696604907455">nuk është i lidhur</translation>
 <translation id="2989786307324390836">Binar i koduar DER, një çertifikatë</translation>
+<translation id="2989805286512600854">Hape në skedë të re</translation>
 <translation id="2990313168615879645">Shto "Llogari të Google"</translation>
 <translation id="2990583317361835189">Mos lejo që sajtet të përdorin sensorët e lëvizjes</translation>
 <translation id="2992931425024192067">Shfaq të gjithë përmbajtjen e njoftimit</translation>
diff --git a/chrome/app/resources/generated_resources_sr-Latn.xtb b/chrome/app/resources/generated_resources_sr-Latn.xtb
index b354620..284e36d 100644
--- a/chrome/app/resources/generated_resources_sr-Latn.xtb
+++ b/chrome/app/resources/generated_resources_sr-Latn.xtb
@@ -1589,6 +1589,7 @@
 <translation id="2691440343905273290">Promenite podešavanja unosa</translation>
 <translation id="2693176596243495071">Ups! Došlo je do nepoznate greške. Probajte ponovo kasnije ili kontaktirajte administratora ako se problem nastavi.</translation>
 <translation id="2699911226086014512">PIN operacija nije uspela, kôd greške <ph name="RETRIES" />.</translation>
+<translation id="2701330563083355633">Deljeno sa: <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">Prijavite se, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Lista za čitanje</translation>
 <translation id="270358213449696159">Sadržaj uslova za Google Chrome OS</translation>
@@ -1870,6 +1871,7 @@
 <translation id="2989123969927553766">Ubrzavanje pomeranja mišem</translation>
 <translation id="2989474696604907455">nije priključeno</translation>
 <translation id="2989786307324390836">Binarna datoteka šifrovana metodom „DER“, jedan sertifikat</translation>
+<translation id="2989805286512600854">Otvori na novoj kartici</translation>
 <translation id="2990313168615879645">Dodajte Google nalog</translation>
 <translation id="2990583317361835189">Ne dozvoljavaj sajtovima da koriste senzore pokreta</translation>
 <translation id="2992931425024192067">Prikaži sav sadržaj obaveštenja</translation>
diff --git a/chrome/app/resources/generated_resources_sr.xtb b/chrome/app/resources/generated_resources_sr.xtb
index 23b1c0d..25218a1 100644
--- a/chrome/app/resources/generated_resources_sr.xtb
+++ b/chrome/app/resources/generated_resources_sr.xtb
@@ -1589,6 +1589,7 @@
 <translation id="2691440343905273290">Промените подешавања уноса</translation>
 <translation id="2693176596243495071">Упс! Дошло је до непознате грешке. Пробајте поново касније или контактирајте администратора ако се проблем настави.</translation>
 <translation id="2699911226086014512">PIN операција није успела, кôд грешке <ph name="RETRIES" />.</translation>
+<translation id="2701330563083355633">Дељено са: <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">Пријавите се, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Листа за читање</translation>
 <translation id="270358213449696159">Садржај услова за Google Chrome ОС</translation>
@@ -1870,6 +1871,7 @@
 <translation id="2989123969927553766">Убрзавање померања мишем</translation>
 <translation id="2989474696604907455">није прикључено</translation>
 <translation id="2989786307324390836">Бинарна датотека шифрована методом „DER“, један сертификат</translation>
+<translation id="2989805286512600854">Отвори на новој картици</translation>
 <translation id="2990313168615879645">Додајте Google налог</translation>
 <translation id="2990583317361835189">Не дозвољавај сајтовима да користе сензоре покрета</translation>
 <translation id="2992931425024192067">Прикажи сав садржај обавештења</translation>
diff --git a/chrome/app/resources/generated_resources_sv.xtb b/chrome/app/resources/generated_resources_sv.xtb
index f8192cd8..278294dd 100644
--- a/chrome/app/resources/generated_resources_sv.xtb
+++ b/chrome/app/resources/generated_resources_sv.xtb
@@ -1605,6 +1605,7 @@
 <translation id="2691440343905273290">Ändra inmatningsinställningar</translation>
 <translation id="2693176596243495071">Hoppsan! Ett okänt fel har uppstått. Försök igen senare eller kontakta administratören om felet kvarstår.</translation>
 <translation id="2699911226086014512">Pinkodsåtgärden misslyckades med felkod <ph name="RETRIES" />.</translation>
+<translation id="2701330563083355633">Delades från <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">Logga in, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Läslista</translation>
 <translation id="270358213449696159">Innehåll i villkor för Google Chrome OS</translation>
@@ -1886,6 +1887,7 @@
 <translation id="2989123969927553766">Scrollningsacceleration för musen</translation>
 <translation id="2989474696604907455">inte ansluten</translation>
 <translation id="2989786307324390836">DER-kodat binärt enstaka certifikat</translation>
+<translation id="2989805286512600854">Öppna i ny flik</translation>
 <translation id="2990313168615879645">Lägg till Google-konto</translation>
 <translation id="2990583317361835189">Tillåt inte att webbplatser använder rörelsesensorer</translation>
 <translation id="2992931425024192067">Visa allt aviseringsinnehåll</translation>
diff --git a/chrome/app/resources/generated_resources_sw.xtb b/chrome/app/resources/generated_resources_sw.xtb
index 3383d4e..91063db 100644
--- a/chrome/app/resources/generated_resources_sw.xtb
+++ b/chrome/app/resources/generated_resources_sw.xtb
@@ -1601,6 +1601,7 @@
 <translation id="2691440343905273290">Badilisha mipangilio ya mbinu ya kuingiza data</translation>
 <translation id="2693176596243495071">Samahani! Hitilafu isiyojulikana imetokea. Tafadhali jaribu tena baadaye au uwasiliane na msimamizi wako ikiwa tatizo hili litaendelea.</translation>
 <translation id="2699911226086014512">Imeshindwa kuweka PIN kwa kutumia msimbo <ph name="RETRIES" />.</translation>
+<translation id="2701330563083355633">Umepokea kutoka <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">Ingia katika akaunti, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Orodha ya Kusoma</translation>
 <translation id="270358213449696159">Maudhui ya Sheria na Masharti ya Mfumo wa Uendeshaji wa Chrome</translation>
@@ -1882,6 +1883,7 @@
 <translation id="2989123969927553766">Kuongeza kasi ya kusogeza kipanya</translation>
 <translation id="2989474696604907455">haijaambatishwa</translation>
 <translation id="2989786307324390836">Data jozi iliyosimbwa kwa DER, cheti kimoja</translation>
+<translation id="2989805286512600854">Fungua katika Kichupo Kipya</translation>
 <translation id="2990313168615879645">Ongeza Akaunti ya Google</translation>
 <translation id="2990583317361835189">Usiruhusu tovuti zitumie vitambuzi vya mwendo</translation>
 <translation id="2992931425024192067">Onyesha arifa za maudhui yote</translation>
diff --git a/chrome/app/resources/generated_resources_ta.xtb b/chrome/app/resources/generated_resources_ta.xtb
index da7e1e75..1f9f95a 100644
--- a/chrome/app/resources/generated_resources_ta.xtb
+++ b/chrome/app/resources/generated_resources_ta.xtb
@@ -1592,6 +1592,7 @@
 <translation id="2691440343905273290">உள்ளீட்டு அமைப்புகளை மாற்றுக</translation>
 <translation id="2693176596243495071">அச்சச்சோ! எதிர்பாராத பிழை ஏற்பட்டது. பிறகு முயலவும் அல்லது சிக்கல் தொடர்ந்தால், உங்கள் நிர்வாகியைத் தொடர்புகொள்ளவும்.</translation>
 <translation id="2699911226086014512">பின்னை அமைக்க இயலவில்லை, பிழைக் குறியீடு: <ph name="RETRIES" />.</translation>
+<translation id="2701330563083355633"><ph name="DEVICE_NAME" /> சாதனத்தில் இருந்து பகிரப்பட்டுள்ளது</translation>
 <translation id="2701737434167469065">உள்நுழை, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">வாசிப்புப் பட்டியல்</translation>
 <translation id="270358213449696159">Google Chrome OS விதிமுறைகளின் உள்ளடக்கம்</translation>
@@ -1870,6 +1871,7 @@
 <translation id="2989123969927553766">மவுஸ் ஸ்க்ரோல் ஆக்ஸிலரேஷன்</translation>
 <translation id="2989474696604907455">இணைக்கப்படவில்லை</translation>
 <translation id="2989786307324390836">DER-குறியேற்றப்பட்ட பைனரி, ஒற்றைச் சான்றிதழ்</translation>
+<translation id="2989805286512600854">புதிய தாவலில் திற</translation>
 <translation id="2990313168615879645">Google கணக்கைச் சேர்</translation>
 <translation id="2990583317361835189">மோஷன் சென்சார்களைப் பயன்படுத்த தளங்களை அனுமதிக்காதே</translation>
 <translation id="2992931425024192067">எல்லா அறிவிப்பு விவரத்தையும் காட்டு</translation>
diff --git a/chrome/app/resources/generated_resources_te.xtb b/chrome/app/resources/generated_resources_te.xtb
index 6701c80e..76320219 100644
--- a/chrome/app/resources/generated_resources_te.xtb
+++ b/chrome/app/resources/generated_resources_te.xtb
@@ -1604,6 +1604,7 @@
 <translation id="2691440343905273290">ఇన్‌పుట్ సెట్టింగ్‌లను మార్చండి</translation>
 <translation id="2693176596243495071">అయ్యో! తెలియని ఎర్రర్ ఏర్పడింది. దయచేసి తర్వాత మళ్లీ ప్రయత్నించండి లేదా సమస్య కొనసాగినట్లయితే మీ నిర్వాహకులను సంప్రదించండి.</translation>
 <translation id="2699911226086014512"><ph name="RETRIES" /> కోడ్‌తో పిన్ ఆపరేషన్ విఫలమైంది.</translation>
+<translation id="2701330563083355633"><ph name="DEVICE_NAME" /> నుండి షేర్ చేయబడింది</translation>
 <translation id="2701737434167469065"><ph name="EMAIL" />కు సైన్ ఇన్ చేయండి</translation>
 <translation id="2702801445560668637">పఠనా జాబితా</translation>
 <translation id="270358213449696159">Google Chrome OS నిబంధనల కంటెంట్‌లు</translation>
@@ -1885,6 +1886,7 @@
 <translation id="2989123969927553766">మౌస్ స్క్రోల్ యాక్సిలరేషన్</translation>
 <translation id="2989474696604907455">జోడించబడలేదు</translation>
 <translation id="2989786307324390836">DER-ఎన్‌కోడ్ చేసిన బైనరీ, ఒక సర్టిఫికెట్</translation>
+<translation id="2989805286512600854">కొత్త టాబ్‌లో తెరువు</translation>
 <translation id="2990313168615879645">Google ఖాతాను జోడించు</translation>
 <translation id="2990583317361835189">మోషన్ సెన్సార్‌లను ఉపయోగించడానికి సైట్‌లను అనుమతించకండి</translation>
 <translation id="2992931425024192067">మొత్తం నోటిఫికేషన్ కంటెంట్‌ను చూపు</translation>
diff --git a/chrome/app/resources/generated_resources_th.xtb b/chrome/app/resources/generated_resources_th.xtb
index 57828b4..5eabbebf 100644
--- a/chrome/app/resources/generated_resources_th.xtb
+++ b/chrome/app/resources/generated_resources_th.xtb
@@ -1590,6 +1590,7 @@
 <translation id="2691440343905273290">เปลี่ยนการตั้งค่าการป้อนข้อมูล</translation>
 <translation id="2693176596243495071">อ๊ะ! เกิดข้อผิดพลาดที่ไม่รู้จัก โปรดลองอีกครั้งภายหลังหรือติดต่อผู้ดูแลระบบหากยังมีปัญหานี้อยู่</translation>
 <translation id="2699911226086014512">กำหนด PIN ไม่สำเร็จและรหัสข้อผิดพลาดคือ <ph name="RETRIES" /></translation>
+<translation id="2701330563083355633">แชร์จาก <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">ลงชื่อเข้าใช้ <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">รายการที่จะอ่าน</translation>
 <translation id="270358213449696159">เนื้อหาข้อกำหนดของ Google Chrome OS</translation>
@@ -1871,6 +1872,7 @@
 <translation id="2989123969927553766">การเร่งความเร็วในการเลื่อนเมาส์</translation>
 <translation id="2989474696604907455">ไม่ได้แนบ</translation>
 <translation id="2989786307324390836">DER-encoded binary, ใบรับรองแบบเดี่ยว</translation>
+<translation id="2989805286512600854">เปิดในแท็บใหม่</translation>
 <translation id="2990313168615879645">เพิ่มบัญชี Google</translation>
 <translation id="2990583317361835189">ไม่อนุญาตให้เว็บไซต์ใช้เซ็นเซอร์ตรวจจับการเคลื่อนไหว</translation>
 <translation id="2992931425024192067">แสดงเนื้อหาการแจ้งเตือนทั้งหมด</translation>
diff --git a/chrome/app/resources/generated_resources_tr.xtb b/chrome/app/resources/generated_resources_tr.xtb
index 562e7be..25dfca0c 100644
--- a/chrome/app/resources/generated_resources_tr.xtb
+++ b/chrome/app/resources/generated_resources_tr.xtb
@@ -1590,6 +1590,7 @@
 <translation id="2691440343905273290">Giriş ayarlarını değiştir</translation>
 <translation id="2693176596243495071">Hay aksi!  Bilinmeyen bir hata oluştu. Lütfen daha sonra tekrar deneyin veya sorunun devam etmesi halinde yöneticinizle iletişime geçin.</translation>
 <translation id="2699911226086014512">PIN işlemi <ph name="RETRIES" /> koduyla başarısız oldu.</translation>
+<translation id="2701330563083355633">Paylaşan: <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065"><ph name="EMAIL" /> hesabında oturum açın</translation>
 <translation id="2702801445560668637">Okuma Listesi</translation>
 <translation id="270358213449696159">Google Chrome OS Şartları içeriği</translation>
@@ -1870,6 +1871,7 @@
 <translation id="2989123969927553766">Fare kaydırma hızlandırması</translation>
 <translation id="2989474696604907455">ekli değil</translation>
 <translation id="2989786307324390836">DER kodlu ikili, tek sertifika</translation>
+<translation id="2989805286512600854">Yeni Sekmede Aç</translation>
 <translation id="2990313168615879645">Google Hesabı ekle</translation>
 <translation id="2990583317361835189">Sitelerin hareket sensörlerini kullanmasına izin verme</translation>
 <translation id="2992931425024192067">Tüm bildirim içeriğini göster</translation>
diff --git a/chrome/app/resources/generated_resources_uk.xtb b/chrome/app/resources/generated_resources_uk.xtb
index d778448..361f57e 100644
--- a/chrome/app/resources/generated_resources_uk.xtb
+++ b/chrome/app/resources/generated_resources_uk.xtb
@@ -1608,6 +1608,7 @@
 <translation id="2691440343905273290">Змінити налаштування методів введення</translation>
 <translation id="2693176596243495071">На жаль, сталася невідома помилка. Спробуйте пізніше або зв’яжіться з адміністратором, якщо проблема не зникне.</translation>
 <translation id="2699911226086014512">Не вдалося провести операцію з PIN-кодом: <ph name="RETRIES" />.</translation>
+<translation id="2701330563083355633">Надіслано з пристрою "<ph name="DEVICE_NAME" />"</translation>
 <translation id="2701737434167469065">Увійти в обліковий запис <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Список читання</translation>
 <translation id="270358213449696159">Умови ОС Google Chrome</translation>
@@ -1889,6 +1890,7 @@
 <translation id="2989123969927553766">Прискорення прокрутки мишею</translation>
 <translation id="2989474696604907455">не підключено</translation>
 <translation id="2989786307324390836">DER-кодування у двійковій формі, єдиний сертифікат</translation>
+<translation id="2989805286512600854">Відкрити в новій вкладці</translation>
 <translation id="2990313168615879645">Додати обліковий запис Google</translation>
 <translation id="2990583317361835189">Заборонити сайтам використовувати датчики руху</translation>
 <translation id="2992931425024192067">Показувати весь вміст сповіщень</translation>
diff --git a/chrome/app/resources/generated_resources_ur.xtb b/chrome/app/resources/generated_resources_ur.xtb
index 3a5b3bb..9f6d8b7 100644
--- a/chrome/app/resources/generated_resources_ur.xtb
+++ b/chrome/app/resources/generated_resources_ur.xtb
@@ -1591,6 +1591,7 @@
 <translation id="2691440343905273290">ان پٹ ترتیبات تبدیل کریں</translation>
 <translation id="2693176596243495071">افوہ!  ایک نامعلوم خرابی پیش آ گئی۔ مسئلہ برقرار رہنے پر براہ کرم بعد میں دوبارہ کوشش کریں یا اپنے منتظم سے رابطہ کریں۔</translation>
 <translation id="2699911226086014512">‏کوڈ <ph name="RETRIES" /> کے ساتھ PIN کی کارروائی ناکام ہو گئی۔</translation>
+<translation id="2701330563083355633"><ph name="DEVICE_NAME" /> سے اشتراک کردہ</translation>
 <translation id="2701737434167469065">سائن ان کریں، <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">پڑھنے کی فہرست</translation>
 <translation id="270358213449696159">‏Google Chrome OS کی شرائط کے مواد</translation>
@@ -1871,6 +1872,7 @@
 <translation id="2989123969927553766">ماؤس کے اسکرول کا ایکسیلریشن</translation>
 <translation id="2989474696604907455">منسلک نہیں ہے</translation>
 <translation id="2989786307324390836">‏DER ان کوڈ کردہ بائنری، واحد سرٹیفیکیٹ</translation>
+<translation id="2989805286512600854">نئے ٹیب میں کھولیں</translation>
 <translation id="2990313168615879645">‏Google اکاؤنٹ شامل کریں</translation>
 <translation id="2990583317361835189">سائٹس کو موشن سینسرز کا استعمال کرنے کی اجازت نہ دیں</translation>
 <translation id="2992931425024192067">سبھی اطلاعی مواد دکھائیں</translation>
diff --git a/chrome/app/resources/generated_resources_uz.xtb b/chrome/app/resources/generated_resources_uz.xtb
index dbf044f6b..2e19fa60 100644
--- a/chrome/app/resources/generated_resources_uz.xtb
+++ b/chrome/app/resources/generated_resources_uz.xtb
@@ -1596,6 +1596,7 @@
 <translation id="2691440343905273290">Kiritish sozlamalarini oʻzgartirish</translation>
 <translation id="2693176596243495071">Ana xolos! Kutilmagan xatolik yuz berdi. Qayta urinib ko‘ring, agar muammo qaytarilsa administrator bilan bog‘laning.</translation>
 <translation id="2699911226086014512">PIN kod oʻrnatilmadi: <ph name="RETRIES" />.</translation>
+<translation id="2701330563083355633"><ph name="DEVICE_NAME" /> orqali ulashilgan</translation>
 <translation id="2701737434167469065">Kirish, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Mutolaa ro‘yxati</translation>
 <translation id="270358213449696159">Google Chrome OS shartlari</translation>
@@ -1878,6 +1879,7 @@
 <translation id="2989123969927553766">Sichqonchada varaqlashni tezlashtirish</translation>
 <translation id="2989474696604907455">biriktirilmagan</translation>
 <translation id="2989786307324390836">DER shifrida kodlangan ikkilik sanoq tizimi yagona sertifikati</translation>
+<translation id="2989805286512600854">Yangi varaqda ochish</translation>
 <translation id="2990313168615879645">Google hisobini kiritish</translation>
 <translation id="2990583317361835189">Saytlarga harakat sensorlaridan foydalanishni taqiqlash</translation>
 <translation id="2992931425024192067">Bildirishnoma to‘liq ko‘rsatilsin</translation>
diff --git a/chrome/app/resources/generated_resources_vi.xtb b/chrome/app/resources/generated_resources_vi.xtb
index ef58299..8eb8d6a 100644
--- a/chrome/app/resources/generated_resources_vi.xtb
+++ b/chrome/app/resources/generated_resources_vi.xtb
@@ -1605,6 +1605,7 @@
 <translation id="2691440343905273290">Thay đổi tùy chọn cài đặt phương thức nhập</translation>
 <translation id="2693176596243495071">Rất tiếc! Đã xảy ra lỗi không xác định. Vui lòng thử lại sau hoặc liên hệ với quản trị viên của bạn nếu sự cố vẫn tiếp diễn.</translation>
 <translation id="2699911226086014512">Thao tác mã PIN không thành công với mã <ph name="RETRIES" />.</translation>
+<translation id="2701330563083355633">Chia sẻ từ <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">Đăng nhập, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Danh sách đọc</translation>
 <translation id="270358213449696159">Nội dung Điều khoản của Google Chrome OS</translation>
@@ -1886,6 +1887,7 @@
 <translation id="2989123969927553766">Tăng tốc độ cuộn chuột</translation>
 <translation id="2989474696604907455">chưa được đính kèm</translation>
 <translation id="2989786307324390836">DER-mã hóa nhị phân, chứng chỉ đơn</translation>
+<translation id="2989805286512600854">Mở bằng Thẻ Mới</translation>
 <translation id="2990313168615879645">Thêm Tài khoản Google</translation>
 <translation id="2990583317361835189">Không cho phép trang web sử dụng cảm biến chuyển động</translation>
 <translation id="2992931425024192067">Hiện mọi nội dung thông báo</translation>
diff --git a/chrome/app/resources/generated_resources_zh-CN.xtb b/chrome/app/resources/generated_resources_zh-CN.xtb
index 2c3f9ed..aa48db6b 100644
--- a/chrome/app/resources/generated_resources_zh-CN.xtb
+++ b/chrome/app/resources/generated_resources_zh-CN.xtb
@@ -1587,6 +1587,7 @@
 <translation id="2691440343905273290">更改输入设置</translation>
 <translation id="2693176596243495071">糟糕!发生了未知错误。请稍后重试;如果问题依然存在,请与您的管理员联系。</translation>
 <translation id="2699911226086014512">PIN 码操作失败,错误代码为 <ph name="RETRIES" />。</translation>
+<translation id="2701330563083355633">共享自 <ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">登录,<ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">阅读清单</translation>
 <translation id="270358213449696159">Google Chrome 操作系统条款内容</translation>
@@ -1867,6 +1868,7 @@
 <translation id="2989123969927553766">鼠标滚屏加速</translation>
 <translation id="2989474696604907455">未连接</translation>
 <translation id="2989786307324390836">DER 编码二进制,单一证书</translation>
+<translation id="2989805286512600854">在新标签页中打开</translation>
 <translation id="2990313168615879645">添加 Google 帐号</translation>
 <translation id="2990583317361835189">不允许网站使用移动传感器</translation>
 <translation id="2992931425024192067">显示所有通知内容</translation>
diff --git a/chrome/app/resources/generated_resources_zh-HK.xtb b/chrome/app/resources/generated_resources_zh-HK.xtb
index 8d0e72e1..72dc673 100644
--- a/chrome/app/resources/generated_resources_zh-HK.xtb
+++ b/chrome/app/resources/generated_resources_zh-HK.xtb
@@ -1604,6 +1604,7 @@
 <translation id="2691440343905273290">變更輸入法設定</translation>
 <translation id="2693176596243495071">抱歉!出現不明的錯誤。請稍後再試一次,如果問題持續,請與您的管理員聯絡。</translation>
 <translation id="2699911226086014512">PIN 操作失敗,錯誤代碼為 <ph name="RETRIES" />。</translation>
+<translation id="2701330563083355633">透過 <ph name="DEVICE_NAME" /> 分享</translation>
 <translation id="2701737434167469065">登入,<ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">閱讀清單</translation>
 <translation id="270358213449696159">Google Chrome 作業系統條款內容</translation>
@@ -1885,6 +1886,7 @@
 <translation id="2989123969927553766">滑鼠捲動加速</translation>
 <translation id="2989474696604907455">不附加</translation>
 <translation id="2989786307324390836">DER 編碼 Binary,單一憑證</translation>
+<translation id="2989805286512600854">在新分頁中開啟</translation>
 <translation id="2990313168615879645">新增 Google 帳戶</translation>
 <translation id="2990583317361835189">不允許網站使用動作感應器</translation>
 <translation id="2992931425024192067">顯示所有通知內容</translation>
diff --git a/chrome/app/resources/generated_resources_zh-TW.xtb b/chrome/app/resources/generated_resources_zh-TW.xtb
index bc3d93bf..ce33bdc 100644
--- a/chrome/app/resources/generated_resources_zh-TW.xtb
+++ b/chrome/app/resources/generated_resources_zh-TW.xtb
@@ -1590,6 +1590,7 @@
 <translation id="2691440343905273290">變更輸入法設定</translation>
 <translation id="2693176596243495071">糟糕!發生不明錯誤,請稍後再試。如果這樣無法解決問題,請與你的管理員聯絡。</translation>
 <translation id="2699911226086014512">PIN 碼作業失敗,錯誤代碼為 <ph name="RETRIES" />。</translation>
+<translation id="2701330563083355633">透過 <ph name="DEVICE_NAME" /> 分享</translation>
 <translation id="2701737434167469065">登入,<ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">閱讀清單</translation>
 <translation id="270358213449696159">Google Chrome 作業系統條款內容</translation>
@@ -1871,6 +1872,7 @@
 <translation id="2989123969927553766">滑鼠捲動加速</translation>
 <translation id="2989474696604907455">不附加</translation>
 <translation id="2989786307324390836">DER 編碼 Binary,單一憑證</translation>
+<translation id="2989805286512600854">在新分頁中開啟</translation>
 <translation id="2990313168615879645">新增 Google 帳戶</translation>
 <translation id="2990583317361835189">禁止網站使用動作感應器</translation>
 <translation id="2992931425024192067">顯示所有通知內容</translation>
diff --git a/chrome/app/resources/generated_resources_zu.xtb b/chrome/app/resources/generated_resources_zu.xtb
index 83c402b9..2baccad 100644
--- a/chrome/app/resources/generated_resources_zu.xtb
+++ b/chrome/app/resources/generated_resources_zu.xtb
@@ -1607,6 +1607,7 @@
 <translation id="2691440343905273290">Shintsha amasethingi okufaka</translation>
 <translation id="2693176596243495071">Eshu!  Iphutha elingaziwa livelile. Sicela uzame emuva kwesikhathi noma uxhumane nomlawuli wakho uma inkinga iqhubeka.</translation>
 <translation id="2699911226086014512">Ukusetshenziswa kwephinikhodi kuhluleke ngekhodi engu-<ph name="RETRIES" />.</translation>
+<translation id="2701330563083355633">Kwabelwe kusuka ku-<ph name="DEVICE_NAME" /></translation>
 <translation id="2701737434167469065">Ngena ngemvume, <ph name="EMAIL" /></translation>
 <translation id="2702801445560668637">Uhlu lokufunda</translation>
 <translation id="270358213449696159">Okuqukethwe kwemigomo ye-Google Chrome OS</translation>
@@ -1889,6 +1890,7 @@
 <translation id="2989123969927553766">Ukusheshisa ukuskrola ngegundane</translation>
 <translation id="2989474696604907455">akunamathelisiwe</translation>
 <translation id="2989786307324390836">Unambambili obhalwe ngekhodi we-DER, isitifiketi esisodwa</translation>
+<translation id="2989805286512600854">Vula kuthebhu entsha</translation>
 <translation id="2990313168615879645">Engeza i-akhawunti ye-Google</translation>
 <translation id="2990583317361835189">Ungavumeli amasayithi asebenzise izinzwa zokunyakaza</translation>
 <translation id="2992931425024192067">Bonisa konke okuqukethwe kwesaziso</translation>
diff --git a/chrome/app/resources/google_chrome_strings_is.xtb b/chrome/app/resources/google_chrome_strings_is.xtb
index 0476d87..d65a307 100644
--- a/chrome/app/resources/google_chrome_strings_is.xtb
+++ b/chrome/app/resources/google_chrome_strings_is.xtb
@@ -257,7 +257,7 @@
 <translation id="7890208801193284374">Ef nokkrir eru um sömu tölvu geta vinir og fjölskyldumeðlimir vafrað hver á sínum prófíl og sett Chrome upp eins og hverjum og einum líkar best.</translation>
 <translation id="7896673875602241923">Einhver hefur skráð sig inn á Chrome í þessari tölvu sem <ph name="ACCOUNT_EMAIL_LAST" />. Búðu til nýjan notanda í Chrome til að halda upplýsingum ykkar aðskildum.</translation>
 <translation id="7930071585467473040">Google Chrome er að reyna að afrita aðgangsorð.</translation>
-<translation id="7951988079884443914">Chrome mælir með að þú hvorki sækir né opnir þessa skrá.</translation>
+<translation id="7951988079884443914">Chrome mælir með að þú sækir hvorki né opnir þessa skrá.</translation>
 <translation id="7962410387636238736">Þessi tölva tekur ekki lengur við uppfærslum á Google Chrome vegna þess að stýrikerfin Windows XP og Windows Vista eru ekki lengur studd</translation>
 <translation id="79947657522496226">Chrome OS á tilvist sína að þakka öðrum <ph name="BEGIN_LINK_CROS_OSS" />opnum hugbúnaði<ph name="END_LINK_CROS_OSS" /> og það sama á við um <ph name="BEGIN_LINK_LINUX_OSS" />Linux-forritunarumhverfið <ph name="END_LINK_LINUX_OSS" />.</translation>
 <translation id="8008534537613507642">Setja Chrome aftur upp</translation>
diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp
index f8e857d..04329eee 100644
--- a/chrome/app/settings_strings.grdp
+++ b/chrome/app/settings_strings.grdp
@@ -1292,7 +1292,7 @@
     Group number
   </message>
   <message name="IDS_SETTINGS_PRIVACY_SANDBOX_PAGE_FLOC_COHORT_NEXT_UPDATE" desc="The text used to label when the user's current Federated Learning of Cohorts (FLoC) cohort will next be updated">
-    Next Update
+    Next update
   </message>
   <message name="IDS_SETTINGS_PRIVACY_SANDBOX_PAGE_FLOC_RESET_COHORT" desc="The text used to label the button which allows a user to reset their Federated Learning of Cohorts (FLoC) cohort identifier">
     Reset group
diff --git a/chrome/app/settings_strings_grdp/IDS_SETTINGS_PRIVACY_SANDBOX_PAGE_FLOC_COHORT_NEXT_UPDATE.png.sha1 b/chrome/app/settings_strings_grdp/IDS_SETTINGS_PRIVACY_SANDBOX_PAGE_FLOC_COHORT_NEXT_UPDATE.png.sha1
index 2861af2..49ed3420 100644
--- a/chrome/app/settings_strings_grdp/IDS_SETTINGS_PRIVACY_SANDBOX_PAGE_FLOC_COHORT_NEXT_UPDATE.png.sha1
+++ b/chrome/app/settings_strings_grdp/IDS_SETTINGS_PRIVACY_SANDBOX_PAGE_FLOC_COHORT_NEXT_UPDATE.png.sha1
@@ -1 +1 @@
-6cbefe28cc2ed13c14d009fd4ce3433d063b1b41
\ No newline at end of file
+d5aea720242118495392d878363a7da36921412d
\ No newline at end of file
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index 814877c..3c4fccb1 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -3974,8 +3974,6 @@
       "search/promos/promo_service_factory.cc",
       "search/promos/promo_service_factory.h",
       "search/promos/promo_service_observer.h",
-      "search/repeatable_queries/repeatable_queries_service_factory.cc",
-      "search/repeatable_queries/repeatable_queries_service_factory.h",
       "search/search_engine_base_url_tracker.cc",
       "search/search_engine_base_url_tracker.h",
       "search/search_suggest/search_suggest_data.cc",
@@ -4617,6 +4615,7 @@
       "//ash/public/cpp",
       "//ash/public/cpp/external_arc",
       "//build:chromeos_buildflags",
+      "//chrome/browser/ash/crosapi",
       "//chrome/browser/chromeos",
       "//chrome/browser/chromeos/power/ml/smart_dim",
       "//chrome/browser/nearby_sharing:share_target",
@@ -4687,7 +4686,10 @@
       "//ui/ozone",
       "//ui/wm/public",
     ]
-    allow_circular_includes_from += [ "//chrome/browser/chromeos" ]
+    allow_circular_includes_from += [
+      "//chrome/browser/ash/crosapi",
+      "//chrome/browser/chromeos",
+    ]
 
     if (use_allocator == "tcmalloc") {
       deps += [ "//chrome/common/performance_manager/mojom" ]
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index a18c916d..e518a1b 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -1512,19 +1512,6 @@
     {"- Managed Users Only", kNtpDriveModuleManagedUsersOnly,
      base::size(kNtpDriveModuleManagedUsersOnly), nullptr},
 };
-
-const FeatureEntry::FeatureParam kNtpRepeatableQueriesInsertPositionStart[] = {
-    {ntp_features::kNtpRepeatableQueriesInsertPositionParam, "start"}};
-const FeatureEntry::FeatureParam kNtpRepeatableQueriesInsertPositionEnd[] = {
-    {ntp_features::kNtpRepeatableQueriesInsertPositionParam, "end"}};
-const FeatureEntry::FeatureVariation kNtpRepeatableQueriesVariations[] = {
-    {"- Start", kNtpRepeatableQueriesInsertPositionStart,
-     base::size(kNtpRepeatableQueriesInsertPositionStart),
-     "t3317864" /* variation_id */},
-    {"- End", kNtpRepeatableQueriesInsertPositionEnd,
-     base::size(kNtpRepeatableQueriesInsertPositionEnd),
-     "t3317864" /* variation_id */},
-};
 #endif  // !defined(OS_ANDROID)
 
 #if !defined(OS_ANDROID)
@@ -3818,12 +3805,6 @@
     {"offline-pages-ct-v2", flag_descriptions::kOfflinePagesCtV2Name,
      flag_descriptions::kOfflinePagesCtV2Description, kOsAndroid,
      FEATURE_VALUE_TYPE(offline_pages::kOfflinePagesCTV2Feature)},
-    {"offline-pages-ct-suppress-completed-notification",
-     flag_descriptions::kOfflinePagesCTSuppressNotificationsName,
-     flag_descriptions::kOfflinePagesCTSuppressNotificationsDescription,
-     kOsAndroid,
-     FEATURE_VALUE_TYPE(
-         offline_pages::kOfflinePagesCTSuppressNotificationsFeature)},
 #endif  // OS_ANDROID
     {"PasswordImport", flag_descriptions::kPasswordImportName,
      flag_descriptions::kPasswordImportDescription, kOsAll,
@@ -4618,9 +4599,7 @@
 
     {"ntp-repeatable-queries", flag_descriptions::kNtpRepeatableQueriesName,
      flag_descriptions::kNtpRepeatableQueriesDescription, kOsDesktop,
-     FEATURE_WITH_PARAMS_VALUE_TYPE(ntp_features::kNtpRepeatableQueries,
-                                    kNtpRepeatableQueriesVariations,
-                                    "NtpRepeatableQueries")},
+     FEATURE_VALUE_TYPE(ntp_features::kNtpRepeatableQueries)},
 
     {"ntp-modules", flag_descriptions::kNtpModulesName,
      flag_descriptions::kNtpModulesDescription, kOsDesktop,
@@ -6192,8 +6171,8 @@
          "PhotoPickerVideoSupportFeatureVariations")},
 #endif  // defined(OS_ANDROID)
 
-    {"freeze-user-agent", flag_descriptions::kFreezeUserAgentName,
-     flag_descriptions::kFreezeUserAgentDescription, kOsDesktop | kOsAndroid,
+    {"reduce-user-agent", flag_descriptions::kReduceUserAgentName,
+     flag_descriptions::kReduceUserAgentDescription, kOsDesktop | kOsAndroid,
      FEATURE_VALUE_TYPE(blink::features::kFreezeUserAgent)},
 
 #if !defined(OS_ANDROID) && !BUILDFLAG(IS_CHROMEOS_ASH)
diff --git a/chrome/browser/ash/apps/apk_web_app_installer_browsertest.cc b/chrome/browser/ash/apps/apk_web_app_installer_browsertest.cc
index ccf9465..c49bbcd 100644
--- a/chrome/browser/ash/apps/apk_web_app_installer_browsertest.cc
+++ b/chrome/browser/ash/apps/apk_web_app_installer_browsertest.cc
@@ -20,6 +20,7 @@
 #include "chrome/browser/ash/arc/arc_util.h"
 #include "chrome/browser/ash/arc/session/arc_session_manager.h"
 #include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/ui/app_list/arc/arc_app_test.h"
 #include "chrome/browser/ui/ash/shelf/chrome_shelf_controller.h"
 #include "chrome/browser/ui/browser.h"
 #include "chrome/browser/web_applications/components/app_registrar.h"
diff --git a/chrome/browser/ash/borealis/borealis_context_unittest.cc b/chrome/browser/ash/borealis/borealis_context_unittest.cc
index 9342e04..1f5bd1c 100644
--- a/chrome/browser/ash/borealis/borealis_context_unittest.cc
+++ b/chrome/browser/ash/borealis/borealis_context_unittest.cc
@@ -10,6 +10,7 @@
 #include "base/run_loop.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "chrome/browser/ash/borealis/borealis_context.h"
+#include "chrome/browser/ash/borealis/borealis_disk_manager_dispatcher.h"
 #include "chrome/browser/ash/borealis/borealis_metrics.h"
 #include "chrome/browser/ash/borealis/borealis_service_fake.h"
 #include "chrome/browser/ash/borealis/borealis_shutdown_monitor.h"
@@ -37,15 +38,19 @@
     chromeos::SeneschalClient::InitializeFake();
 
     profile_ = std::make_unique<TestingProfile>();
+    borealis_disk_manager_dispatcher_ =
+        std::make_unique<BorealisDiskManagerDispatcher>();
     borealis_shutdown_monitor_ =
         std::make_unique<BorealisShutdownMonitor>(profile_.get());
-    borealis_window_manager =
+    borealis_window_manager_ =
         std::make_unique<BorealisWindowManager>(profile_.get());
 
     service_fake_ = BorealisServiceFake::UseFakeForTesting(profile_.get());
+    service_fake_->SetDiskManagerDispatcherForTesting(
+        borealis_disk_manager_dispatcher_.get());
     service_fake_->SetShutdownMonitorForTesting(
         borealis_shutdown_monitor_.get());
-    service_fake_->SetWindowManagerForTesting(borealis_window_manager.get());
+    service_fake_->SetWindowManagerForTesting(borealis_window_manager_.get());
 
     borealis_context_ =
         BorealisContext::CreateBorealisContextForTesting(profile_.get());
@@ -83,8 +88,10 @@
   std::unique_ptr<borealis::BorealisContext> borealis_context_;
   std::unique_ptr<TestingProfile> profile_;
   BorealisServiceFake* service_fake_;
+  std::unique_ptr<BorealisDiskManagerDispatcher>
+      borealis_disk_manager_dispatcher_;
   std::unique_ptr<BorealisShutdownMonitor> borealis_shutdown_monitor_;
-  std::unique_ptr<BorealisWindowManager> borealis_window_manager;
+  std::unique_ptr<BorealisWindowManager> borealis_window_manager_;
   base::HistogramTester histogram_tester_;
 };
 
diff --git a/chrome/browser/ash/borealis/borealis_disk_manager_dispatcher.cc b/chrome/browser/ash/borealis/borealis_disk_manager_dispatcher.cc
new file mode 100644
index 0000000..9a0edcaf
--- /dev/null
+++ b/chrome/browser/ash/borealis/borealis_disk_manager_dispatcher.cc
@@ -0,0 +1,87 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/ash/borealis/borealis_disk_manager_dispatcher.h"
+
+#include "chrome/browser/ash/borealis/borealis_disk_manager.h"
+#include "chrome/browser/ash/borealis/borealis_util.h"
+
+namespace borealis {
+
+// TODO(b/188863477): stop hardcoding these values once they're more
+// accessible.
+constexpr char kBorealisVmName[] = "borealis";
+constexpr char kBorealisContainerName[] = "penguin";
+
+BorealisDiskManagerDispatcher::BorealisDiskManagerDispatcher()
+    : disk_manager_delegate_(nullptr) {}
+
+void BorealisDiskManagerDispatcher::GetDiskInfo(
+    const std::string& origin_vm_name,
+    const std::string& origin_container_name,
+    base::OnceCallback<void(Expected<BorealisDiskManager::GetDiskInfoResponse,
+                                     std::string>)> callback) {
+  std::string error = ValidateRequest(origin_vm_name, origin_container_name);
+  if (!error.empty()) {
+    std::move(callback).Run(
+        Expected<BorealisDiskManager::GetDiskInfoResponse,
+                 std::string>::Unexpected(std::move(error)));
+    return;
+  }
+  disk_manager_delegate_->GetDiskInfo(std::move(callback));
+}
+
+void BorealisDiskManagerDispatcher::RequestSpace(
+    const std::string& origin_vm_name,
+    const std::string& origin_container_name,
+    uint64_t bytes_requested,
+    base::OnceCallback<void(Expected<uint64_t, std::string>)> callback) {
+  std::string error = ValidateRequest(origin_vm_name, origin_container_name);
+  if (!error.empty()) {
+    std::move(callback).Run(
+        Expected<uint64_t, std::string>::Unexpected(std::move(error)));
+    return;
+  }
+  disk_manager_delegate_->RequestSpace(bytes_requested, std::move(callback));
+}
+
+void BorealisDiskManagerDispatcher::ReleaseSpace(
+    const std::string& origin_vm_name,
+    const std::string& origin_container_name,
+    uint64_t bytes_to_release,
+    base::OnceCallback<void(Expected<uint64_t, std::string>)> callback) {
+  std::string error = ValidateRequest(origin_vm_name, origin_container_name);
+  if (!error.empty()) {
+    std::move(callback).Run(
+        Expected<uint64_t, std::string>::Unexpected(std::move(error)));
+    return;
+  }
+  disk_manager_delegate_->ReleaseSpace(bytes_to_release, std::move(callback));
+}
+
+std::string BorealisDiskManagerDispatcher::ValidateRequest(
+    const std::string& origin_vm_name,
+    const std::string& origin_container_name) {
+  if (origin_vm_name != kBorealisVmName ||
+      origin_container_name != kBorealisContainerName) {
+    return "request does not originate from Borealis";
+  }
+  if (!disk_manager_delegate_) {
+    return "disk manager delegate not set, Borealis probably isn't running";
+  }
+  return "";
+}
+void BorealisDiskManagerDispatcher::SetDiskManagerDelegate(
+    BorealisDiskManager* disk_manager) {
+  DCHECK(!disk_manager_delegate_);
+  disk_manager_delegate_ = disk_manager;
+}
+
+void BorealisDiskManagerDispatcher::RemoveDiskManagerDelegate(
+    BorealisDiskManager* disk_manager) {
+  DCHECK(disk_manager == disk_manager_delegate_);
+  disk_manager_delegate_ = nullptr;
+}
+
+}  // namespace borealis
diff --git a/chrome/browser/ash/borealis/borealis_disk_manager_dispatcher.h b/chrome/browser/ash/borealis/borealis_disk_manager_dispatcher.h
new file mode 100644
index 0000000..0472cf6
--- /dev/null
+++ b/chrome/browser/ash/borealis/borealis_disk_manager_dispatcher.h
@@ -0,0 +1,55 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_ASH_BOREALIS_BOREALIS_DISK_MANAGER_DISPATCHER_H_
+#define CHROME_BROWSER_ASH_BOREALIS_BOREALIS_DISK_MANAGER_DISPATCHER_H_
+
+#include "base/callback.h"
+#include "chrome/browser/ash/borealis/borealis_disk_manager.h"
+
+namespace borealis {
+
+// This service dispatches work to the disk manager owned by the running
+// Borealis context (if any). Other services are able to access this service
+// (BorealisDiskManagerDispatcher) in order to dispatch commands directly to the
+// disk manager (which is created at run-time and doesn't live forever). If no
+// disk manager/context exists, the dispatcher will return an error.
+class BorealisDiskManagerDispatcher {
+ public:
+  BorealisDiskManagerDispatcher();
+  virtual ~BorealisDiskManagerDispatcher() = default;
+
+  virtual void GetDiskInfo(
+      const std::string& origin_vm_name,
+      const std::string& origin_container_name,
+      base::OnceCallback<void(Expected<BorealisDiskManager::GetDiskInfoResponse,
+                                       std::string>)> callback);
+
+  virtual void RequestSpace(
+      const std::string& origin_vm_name,
+      const std::string& origin_container_name,
+      uint64_t bytes_requested,
+      base::OnceCallback<void(Expected<uint64_t, std::string>)> callback);
+
+  virtual void ReleaseSpace(
+      const std::string& origin_vm_name,
+      const std::string& origin_container_name,
+      uint64_t bytes_to_release,
+      base::OnceCallback<void(Expected<uint64_t, std::string>)> callback);
+
+  virtual void SetDiskManagerDelegate(BorealisDiskManager* disk_manager);
+  virtual void RemoveDiskManagerDelegate(BorealisDiskManager* disk_manager);
+
+ private:
+  // Verifies the origin of the request and checks that a delegate exists.
+  std::string ValidateRequest(const std::string& origin_vm_name,
+                              const std::string& origin_container_name);
+
+  // Not owned by us.
+  BorealisDiskManager* disk_manager_delegate_;
+};
+
+}  // namespace borealis
+
+#endif  // CHROME_BROWSER_ASH_BOREALIS_BOREALIS_DISK_MANAGER_DISPATCHER_H_
diff --git a/chrome/browser/ash/borealis/borealis_disk_manager_impl.cc b/chrome/browser/ash/borealis/borealis_disk_manager_impl.cc
index 0555bd8..7fdb7e7 100644
--- a/chrome/browser/ash/borealis/borealis_disk_manager_impl.cc
+++ b/chrome/browser/ash/borealis/borealis_disk_manager_impl.cc
@@ -15,6 +15,8 @@
 #include "base/task/thread_pool.h"
 #include "chrome/browser/ash/borealis/borealis_context.h"
 #include "chrome/browser/ash/borealis/borealis_context_manager.h"
+#include "chrome/browser/ash/borealis/borealis_disk_manager_dispatcher.h"
+#include "chrome/browser/ash/borealis/borealis_service.h"
 #include "chrome/browser/ash/borealis/infra/transition.h"
 #include "chrome/browser/ash/crostini/crostini_util.h"
 #include "chrome/browser/ash/profiles/profile_helper.h"
@@ -55,9 +57,17 @@
 BorealisDiskManagerImpl::BorealisDiskManagerImpl(const BorealisContext* context)
     : context_(context),
       free_space_provider_(std::make_unique<FreeSpaceProvider>()),
-      weak_factory_(this) {}
+      weak_factory_(this) {
+  borealis::BorealisService::GetForProfile(context_->profile())
+      ->DiskManagerDispatcher()
+      .SetDiskManagerDelegate(this);
+}
 
-BorealisDiskManagerImpl::~BorealisDiskManagerImpl() {}
+BorealisDiskManagerImpl::~BorealisDiskManagerImpl() {
+  borealis::BorealisService::GetForProfile(context_->profile())
+      ->DiskManagerDispatcher()
+      .RemoveDiskManagerDelegate(this);
+}
 
 class BorealisDiskManagerImpl::BuildDiskInfo
     : public Transition<BorealisDiskInfo, BorealisDiskInfo, std::string> {
diff --git a/chrome/browser/ash/borealis/borealis_disk_manager_unittest.cc b/chrome/browser/ash/borealis/borealis_disk_manager_unittest.cc
index dcae8d1..5db3309 100644
--- a/chrome/browser/ash/borealis/borealis_disk_manager_unittest.cc
+++ b/chrome/browser/ash/borealis/borealis_disk_manager_unittest.cc
@@ -11,6 +11,10 @@
 #include "base/callback_helpers.h"
 #include "base/test/bind.h"
 #include "chrome/browser/ash/borealis/borealis_context.h"
+#include "chrome/browser/ash/borealis/borealis_disk_manager_dispatcher.h"
+#include "chrome/browser/ash/borealis/borealis_features.h"
+#include "chrome/browser/ash/borealis/borealis_service_fake.h"
+#include "chrome/browser/ash/borealis/borealis_window_manager.h"
 #include "chrome/browser/ash/borealis/testing/callback_factory.h"
 #include "chrome/browser/ash/profiles/profile_helper.h"
 #include "chrome/test/base/testing_profile.h"
@@ -41,6 +45,43 @@
 using RequestDeltaCallbackFactory =
     StrictCallbackFactory<void(Expected<uint64_t, std::string>)>;
 
+class BorealisDiskDispatcherMock : public BorealisDiskManagerDispatcher {
+ public:
+  BorealisDiskDispatcherMock() = default;
+  ~BorealisDiskDispatcherMock() = default;
+
+  MOCK_METHOD(
+      void,
+      GetDiskInfo,
+      (const std::string&,
+       const std::string&,
+       base::OnceCallback<void(
+           Expected<BorealisDiskManager::GetDiskInfoResponse, std::string>)>),
+      ());
+  MOCK_METHOD(void,
+              RequestSpace,
+              (const std::string&,
+               const std::string&,
+               uint64_t,
+               base::OnceCallback<void(Expected<uint64_t, std::string>)>),
+              ());
+  MOCK_METHOD(void,
+              ReleaseSpace,
+              (const std::string&,
+               const std::string&,
+               uint64_t,
+               base::OnceCallback<void(Expected<uint64_t, std::string>)>),
+              ());
+  MOCK_METHOD(void,
+              SetDiskManagerDelegate,
+              (BorealisDiskManager * disk_manager),
+              ());
+  MOCK_METHOD(void,
+              RemoveDiskManagerDelegate,
+              (BorealisDiskManager * disk_manager),
+              ());
+};
+
 class BorealisDiskManagerTest : public testing::Test {
  public:
   BorealisDiskManagerTest() = default;
@@ -56,6 +97,17 @@
     chromeos::SeneschalClient::InitializeFake();
     fake_concierge_client_ = chromeos::FakeConciergeClient::Get();
     CreateProfile();
+    mock_dispatcher_ =
+        std::make_unique<testing::NiceMock<BorealisDiskDispatcherMock>>();
+    borealis_window_manager_ =
+        std::make_unique<BorealisWindowManager>(profile_.get());
+    borealis_features_ = std::make_unique<BorealisFeatures>(profile_.get());
+
+    service_fake_ = BorealisServiceFake::UseFakeForTesting(profile_.get());
+    service_fake_->SetDiskManagerDispatcherForTesting(mock_dispatcher_.get());
+    service_fake_->SetWindowManagerForTesting(borealis_window_manager_.get());
+    service_fake_->SetFeaturesForTesting(borealis_features_.get());
+
     context_ = BorealisContext::CreateBorealisContextForTesting(profile_.get());
     context_->set_vm_name("vm_name1");
     disk_manager_ = std::make_unique<BorealisDiskManagerImpl>(context_.get());
@@ -107,6 +159,11 @@
   std::unique_ptr<BorealisContext> context_;
   std::unique_ptr<BorealisDiskManagerImpl> disk_manager_;
   FreeSpaceProviderMock* free_space_provider_;
+  BorealisServiceFake* service_fake_;
+  std::unique_ptr<testing::NiceMock<BorealisDiskDispatcherMock>>
+      mock_dispatcher_;
+  std::unique_ptr<BorealisFeatures> borealis_features_;
+  std::unique_ptr<BorealisWindowManager> borealis_window_manager_;
   std::unique_ptr<base::RunLoop> run_loop_;
   content::BrowserTaskEnvironment task_environment_;
   // Owned by chromeos::DBusThreadManager
diff --git a/chrome/browser/ash/borealis/borealis_service.h b/chrome/browser/ash/borealis/borealis_service.h
index 07697c8..9a9bcf1 100644
--- a/chrome/browser/ash/borealis/borealis_service.h
+++ b/chrome/browser/ash/borealis/borealis_service.h
@@ -14,6 +14,7 @@
 class BorealisAppLauncher;
 class BorealisAppUninstaller;
 class BorealisContextManager;
+class BorealisDiskManagerDispatcher;
 class BorealisFeatures;
 class BorealisInstaller;
 class BorealisShutdownMonitor;
@@ -30,6 +31,7 @@
   virtual BorealisAppLauncher& AppLauncher() = 0;
   virtual BorealisAppUninstaller& AppUninstaller() = 0;
   virtual BorealisContextManager& ContextManager() = 0;
+  virtual BorealisDiskManagerDispatcher& DiskManagerDispatcher() = 0;
   virtual BorealisFeatures& Features() = 0;
   virtual BorealisInstaller& Installer() = 0;
   virtual BorealisShutdownMonitor& ShutdownMonitor() = 0;
diff --git a/chrome/browser/ash/borealis/borealis_service_fake.cc b/chrome/browser/ash/borealis/borealis_service_fake.cc
index 5172d0c..ade8277 100644
--- a/chrome/browser/ash/borealis/borealis_service_fake.cc
+++ b/chrome/browser/ash/borealis/borealis_service_fake.cc
@@ -37,6 +37,11 @@
   return *context_manager_;
 }
 
+BorealisDiskManagerDispatcher& BorealisServiceFake::DiskManagerDispatcher() {
+  CHECK(borealis_disk_manager_dispatcher_);
+  return *borealis_disk_manager_dispatcher_;
+}
+
 BorealisFeatures& BorealisServiceFake::Features() {
   CHECK(features_);
   return *features_;
@@ -72,6 +77,11 @@
   context_manager_ = context_manager;
 }
 
+void BorealisServiceFake::SetDiskManagerDispatcherForTesting(
+    BorealisDiskManagerDispatcher* borealis_disk_manager_dispatcher) {
+  borealis_disk_manager_dispatcher_ = borealis_disk_manager_dispatcher;
+}
+
 void BorealisServiceFake::SetFeaturesForTesting(BorealisFeatures* features) {
   features_ = features;
 }
diff --git a/chrome/browser/ash/borealis/borealis_service_fake.h b/chrome/browser/ash/borealis/borealis_service_fake.h
index 6327dbda..437411d6 100644
--- a/chrome/browser/ash/borealis/borealis_service_fake.h
+++ b/chrome/browser/ash/borealis/borealis_service_fake.h
@@ -25,6 +25,7 @@
   BorealisAppLauncher& AppLauncher() override;
   BorealisAppUninstaller& AppUninstaller() override;
   BorealisContextManager& ContextManager() override;
+  BorealisDiskManagerDispatcher& DiskManagerDispatcher() override;
   BorealisFeatures& Features() override;
   BorealisInstaller& Installer() override;
   BorealisShutdownMonitor& ShutdownMonitor() override;
@@ -33,6 +34,8 @@
   void SetAppLauncherForTesting(BorealisAppLauncher* app_launcher);
   void SetAppUninstallerForTesting(BorealisAppUninstaller* app_uninstaller);
   void SetContextManagerForTesting(BorealisContextManager* context_manager);
+  void SetDiskManagerDispatcherForTesting(
+      BorealisDiskManagerDispatcher* borealis_disk_manager_dispatcher);
   void SetFeaturesForTesting(BorealisFeatures* features);
   void SetInstallerForTesting(BorealisInstaller* installer);
   void SetShutdownMonitorForTesting(BorealisShutdownMonitor* shutdown_monitor);
@@ -42,6 +45,7 @@
   BorealisAppLauncher* app_launcher_ = nullptr;
   BorealisAppUninstaller* app_uninstaller_ = nullptr;
   BorealisContextManager* context_manager_ = nullptr;
+  BorealisDiskManagerDispatcher* borealis_disk_manager_dispatcher_ = nullptr;
   BorealisFeatures* features_ = nullptr;
   BorealisInstaller* installer_ = nullptr;
   BorealisShutdownMonitor* shutdown_monitor_ = nullptr;
diff --git a/chrome/browser/ash/borealis/borealis_service_impl.cc b/chrome/browser/ash/borealis/borealis_service_impl.cc
index 15c4b1b..e98c0ad9 100644
--- a/chrome/browser/ash/borealis/borealis_service_impl.cc
+++ b/chrome/browser/ash/borealis/borealis_service_impl.cc
@@ -11,6 +11,7 @@
       app_launcher_(profile_),
       app_uninstaller_(profile_),
       context_manager_(profile),
+      disk_manager_dispatcher_(),
       features_(profile_),
       installer_(profile_),
       shutdown_monitor_(profile_),
@@ -30,6 +31,10 @@
   return context_manager_;
 }
 
+BorealisDiskManagerDispatcher& BorealisServiceImpl::DiskManagerDispatcher() {
+  return disk_manager_dispatcher_;
+}
+
 BorealisFeatures& BorealisServiceImpl::Features() {
   return features_;
 }
diff --git a/chrome/browser/ash/borealis/borealis_service_impl.h b/chrome/browser/ash/borealis/borealis_service_impl.h
index 893ad1e..4443fc5 100644
--- a/chrome/browser/ash/borealis/borealis_service_impl.h
+++ b/chrome/browser/ash/borealis/borealis_service_impl.h
@@ -8,6 +8,7 @@
 #include "chrome/browser/ash/borealis/borealis_app_launcher.h"
 #include "chrome/browser/ash/borealis/borealis_app_uninstaller.h"
 #include "chrome/browser/ash/borealis/borealis_context_manager_impl.h"
+#include "chrome/browser/ash/borealis/borealis_disk_manager_dispatcher.h"
 #include "chrome/browser/ash/borealis/borealis_features.h"
 #include "chrome/browser/ash/borealis/borealis_installer_impl.h"
 #include "chrome/browser/ash/borealis/borealis_service.h"
@@ -27,6 +28,7 @@
   BorealisAppLauncher& AppLauncher() override;
   BorealisAppUninstaller& AppUninstaller() override;
   BorealisContextManager& ContextManager() override;
+  BorealisDiskManagerDispatcher& DiskManagerDispatcher() override;
   BorealisFeatures& Features() override;
   BorealisInstaller& Installer() override;
   BorealisShutdownMonitor& ShutdownMonitor() override;
@@ -37,6 +39,7 @@
   BorealisAppLauncher app_launcher_;
   BorealisAppUninstaller app_uninstaller_;
   BorealisContextManagerImpl context_manager_;
+  BorealisDiskManagerDispatcher disk_manager_dispatcher_;
   BorealisFeatures features_;
   BorealisInstallerImpl installer_;
   BorealisShutdownMonitor shutdown_monitor_;
diff --git a/chrome/browser/ash/crosapi/BUILD.gn b/chrome/browser/ash/crosapi/BUILD.gn
new file mode 100644
index 0000000..b6b6349
--- /dev/null
+++ b/chrome/browser/ash/crosapi/BUILD.gn
@@ -0,0 +1,174 @@
+# Copyright 2021 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//build/config/chromeos/ui_mode.gni")
+import("//build/config/ui.gni")
+
+assert(is_chromeos_ash)
+assert(use_ozone)
+
+source_set("crosapi") {
+  sources = [
+    "automation_ash.cc",
+    "automation_ash.h",
+    "browser_data_migrator.cc",
+    "browser_data_migrator.h",
+    "browser_loader.cc",
+    "browser_loader.h",
+    "browser_manager.cc",
+    "browser_manager.h",
+    "browser_manager_observer.h",
+    "browser_service_host_ash.cc",
+    "browser_service_host_ash.h",
+    "browser_service_host_observer.h",
+    "browser_util.cc",
+    "browser_util.h",
+    "cert_database_ash.cc",
+    "cert_database_ash.h",
+    "clipboard_ash.cc",
+    "clipboard_ash.h",
+    "clipboard_history_ash.cc",
+    "clipboard_history_ash.h",
+    "content_protection_ash.cc",
+    "content_protection_ash.h",
+    "crosapi_ash.cc",
+    "crosapi_ash.h",
+    "crosapi_id.h",
+    "crosapi_manager.cc",
+    "crosapi_manager.h",
+    "device_attributes_ash.cc",
+    "device_attributes_ash.h",
+    "download_controller_ash.cc",
+    "download_controller_ash.h",
+    "drive_integration_service_ash.cc",
+    "drive_integration_service_ash.h",
+    "environment_provider.cc",
+    "environment_provider.h",
+    "fake_browser_manager.cc",
+    "fake_browser_manager.h",
+    "feedback_ash.cc",
+    "feedback_ash.h",
+    "file_manager_ash.cc",
+    "file_manager_ash.h",
+    "idle_service_ash.cc",
+    "idle_service_ash.h",
+    "keystore_service_ash.cc",
+    "keystore_service_ash.h",
+    "keystore_service_factory_ash.cc",
+    "keystore_service_factory_ash.h",
+    "local_printer_ash.cc",
+    "local_printer_ash.h",
+    "message_center_ash.cc",
+    "message_center_ash.h",
+    "metrics_reporting_ash.cc",
+    "metrics_reporting_ash.h",
+    "prefs_ash.cc",
+    "prefs_ash.h",
+    "screen_manager_ash.cc",
+    "screen_manager_ash.h",
+    "select_file_ash.cc",
+    "select_file_ash.h",
+    "system_display_ash.cc",
+    "system_display_ash.h",
+    "task_manager_ash.cc",
+    "task_manager_ash.h",
+    "test_controller_ash.cc",
+    "test_controller_ash.h",
+    "test_mojo_connection_manager.cc",
+    "test_mojo_connection_manager.h",
+    "url_handler_ash.cc",
+    "url_handler_ash.h",
+    "video_capture_device_ash.cc",
+    "video_capture_device_ash.h",
+    "video_capture_device_factory_ash.cc",
+    "video_capture_device_factory_ash.h",
+    "video_frame_handler_ash.cc",
+    "video_frame_handler_ash.h",
+    "window_util.cc",
+    "window_util.h",
+  ]
+
+  deps = [
+    "//ash",
+    "//ash/components/account_manager",
+    "//ash/constants",
+    "//base",
+    "//chrome/browser:browser_process",
+    "//chrome/browser/chromeos:print_job_info_proto",
+    "//chrome/browser/profiles:profile",
+    "//chrome/browser/ui/webui/settings/chromeos/constants:mojom",
+    "//chrome/common",
+    "//chrome/common:channel_info",
+    "//chrome/common:constants",
+    "//chromeos",
+    "//chromeos/components/sensors",
+    "//chromeos/crosapi/cpp",
+    "//chromeos/crosapi/mojom",
+    "//chromeos/cryptohome",
+    "//chromeos/dbus/power",
+    "//chromeos/dbus/session_manager",
+    "//chromeos/dbus/upstart",
+    "//chromeos/dbus/userdataauth:userdataauth_proto",
+    "//chromeos/login/auth",
+    "//chromeos/login/login_state",
+    "//chromeos/services/machine_learning/public/cpp",
+    "//chromeos/startup:constants",
+    "//chromeos/system",
+    "//chromeos/tpm",
+    "//components/exo",
+    "//components/keyed_service/content",
+    "//components/metrics",
+    "//components/policy/core/common:common_constants",
+    "//components/prefs",
+    "//components/printing/browser",
+    "//components/session_manager/core",
+    "//components/version_info:channel",
+    "//extensions/browser/api",
+    "//extensions/browser/api/automation_internal",
+    "//extensions/common",
+    "//printing:printing",
+    "//printing:printing_base",
+    "//ui/message_center",
+    "//ui/message_center/public/cpp",
+    "//ui/shell_dialogs",
+    "//ui/snapshot",
+    "//ui/views",
+  ]
+}
+
+source_set("unit_tests") {
+  testonly = true
+
+  sources = [
+    "browser_data_migrator_unittest.cc",
+    "browser_loader_unittest.cc",
+    "browser_manager_unittest.cc",
+    "browser_util_unittest.cc",
+    "local_printer_ash_unittest.cc",
+    "message_center_ash_unittest.cc",
+    "metrics_reporting_ash_unittest.cc",
+    "prefs_ash_unittest.cc",
+    "test_local_printer_ash.cc",
+    "test_local_printer_ash.h",
+    "test_mojo_connection_manager_unittest.cc",
+  ]
+
+  deps = [
+    ":crosapi",
+    "//ash",
+    "//base",
+    "//base/test:test_config",
+    "//base/test:test_support",
+    "//chrome/common/printing",
+    "//chrome/test:browser_tests",
+    "//chrome/test:test_support",
+    "//chromeos",
+    "//chromeos/dbus/upstart",
+    "//chromeos/login/login_state",
+    "//chromeos/startup:constants",
+    "//components/component_updater:test_support",
+    "//printing/backend:test_support",
+    "//testing/gtest:gtest",
+  ]
+}
diff --git a/chrome/browser/ash/crosapi/task_manager_ash.cc b/chrome/browser/ash/crosapi/task_manager_ash.cc
index dd3a799..c33d37f 100644
--- a/chrome/browser/ash/crosapi/task_manager_ash.cc
+++ b/chrome/browser/ash/crosapi/task_manager_ash.cc
@@ -50,7 +50,7 @@
     const base::UnguessableToken& token,
     std::unique_ptr<mojo::Remote<mojom::TaskManagerProvider>> provider,
     uint32_t interface_version) {
-  if (interface_version < 1) {
+  if (interface_version < 1U) {
     LOG(ERROR) << "Unsupported lacros version";
     return;
   }
@@ -73,7 +73,7 @@
   // running. The task manager logic supports only one provider. We will add
   // support to handle multiple providers in the future when multiple lacros
   // instances case becomes true.
-  DCHECK_EQ(task_manager_providers_.size(), 1);
+  DCHECK_EQ(task_manager_providers_.size(), 1U);
   if (refresh_flags_ != task_manager::REFRESH_TYPE_NONE) {
     task_manager_providers_.begin()->second->GetTaskManagerTasks(
         std::move(callback));
@@ -86,7 +86,7 @@
 }
 
 void TaskManagerAsh::ActivateTask(const std::string& task_uuid) {
-  if (provider_version_ < 2) {
+  if (provider_version_ < 2U) {
     LOG(WARNING) << "Unsupported lacros task manager provider version: "
                  << provider_version_;
     return;
diff --git a/chrome/browser/ash/crosapi/task_manager_ash.h b/chrome/browser/ash/crosapi/task_manager_ash.h
index afe17c13..69beb0d 100644
--- a/chrome/browser/ash/crosapi/task_manager_ash.h
+++ b/chrome/browser/ash/crosapi/task_manager_ash.h
@@ -89,7 +89,7 @@
   // Version of the registered remote task manager providers.
   // Note: We assume all registered remote task manager providers are in
   // the same version.
-  uint32_t provider_version_ = -1;
+  uint32_t provider_version_ = 0U;
 
   base::WeakPtrFactory<TaskManagerAsh> weak_factory_{this};
 };
diff --git a/chrome/browser/ash/login/screens/hid_detection_screen_browsertest.cc b/chrome/browser/ash/login/screens/hid_detection_screen_browsertest.cc
index fd8dbfce..ecc61cd 100644
--- a/chrome/browser/ash/login/screens/hid_detection_screen_browsertest.cc
+++ b/chrome/browser/ash/login/screens/hid_detection_screen_browsertest.cc
@@ -264,27 +264,6 @@
   }
 };
 
-IN_PROC_BROWSER_TEST_F(HIDDetectionScreenDisabledAfterRestartTest,
-                       PRE_SkipToUpdate) {
-  // Pref should be false by default.
-  EXPECT_FALSE(StartupUtils::IsHIDDetectionScreenDisabledForTests());
-
-  WizardController::default_controller()->SkipToUpdateForTesting();
-  // SkipToUpdateForTesting should set the pref when
-  // switches::kDisableHIDDetectionOnOOBEForTesting is passed.
-  EXPECT_TRUE(StartupUtils::IsHIDDetectionScreenDisabledForTests());
-
-  EXPECT_EQ(GetExitResult(), HIDDetectionScreen::Result::SKIPPED_FOR_TESTS);
-}
-
-IN_PROC_BROWSER_TEST_F(HIDDetectionScreenDisabledAfterRestartTest,
-                       SkipToUpdate) {
-  // The pref should persist restart.
-  EXPECT_TRUE(StartupUtils::IsHIDDetectionScreenDisabledForTests());
-
-  EXPECT_EQ(GetExitResult(), HIDDetectionScreen::Result::SKIPPED_FOR_TESTS);
-}
-
 class HIDDetectionScreenChromebookTest : public OobeBaseTest {
  public:
   HIDDetectionScreenChromebookTest() {
diff --git a/chrome/browser/ash/login/wizard_controller.cc b/chrome/browser/ash/login/wizard_controller.cc
index 6ece4f5..564cfc1 100644
--- a/chrome/browser/ash/login/wizard_controller.cc
+++ b/chrome/browser/ash/login/wizard_controller.cc
@@ -1051,21 +1051,6 @@
   OnDeviceDisabledChecked(false /* device_disabled */);
 }
 
-void WizardController::SkipToUpdateForTesting() {
-  VLOG(1) << "SkipToUpdateForTesting.";
-  wizard_context_->skip_to_update_for_tests = true;
-  StartupUtils::MarkEulaAccepted();
-  if (base::CommandLine::ForCurrentProcess()->HasSwitch(
-          chromeos::switches::kDisableHIDDetectionOnOOBEForTesting)) {
-    // We store the flag into local state so it persists restart after the
-    // update. Command line switch does not persist the restart during the
-    // test.
-    StartupUtils::DisableHIDDetectionScreenForTests();
-  }
-  PerformPostEulaActions();
-  InitiateOOBEUpdate();
-}
-
 void WizardController::OnScreenExit(OobeScreenId screen,
                                     const std::string& exit_reason) {
   VLOG(1) << "Wizard screen " << screen
diff --git a/chrome/browser/ash/login/wizard_controller.h b/chrome/browser/ash/login/wizard_controller.h
index 411b4036..5fc0ce44 100644
--- a/chrome/browser/ash/login/wizard_controller.h
+++ b/chrome/browser/ash/login/wizard_controller.h
@@ -174,7 +174,6 @@
 
   // Advances to login/update screen. Should be used in for testing only.
   void SkipToLoginForTesting();
-  void SkipToUpdateForTesting();
 
   // Skip update, go straight to enrollment after EULA is accepted.
   void SkipUpdateEnrollAfterEula();
diff --git a/chrome/browser/ash/scanning/scan_service.cc b/chrome/browser/ash/scanning/scan_service.cc
index 1d6d81f..35a8ee0 100644
--- a/chrome/browser/ash/scanning/scan_service.cc
+++ b/chrome/browser/ash/scanning/scan_service.cc
@@ -27,14 +27,9 @@
 #include "base/time/time.h"
 #include "chrome/browser/ash/scanning/lorgnette_scanner_manager.h"
 #include "chrome/browser/ash/scanning/scanning_type_converters.h"
+#include "chromeos/utils/pdf_conversion.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
 #include "third_party/re2/src/re2/re2.h"
-#include "third_party/skia/include/core/SkCanvas.h"
-#include "third_party/skia/include/core/SkData.h"
-#include "third_party/skia/include/core/SkImage.h"
-#include "third_party/skia/include/core/SkStream.h"
-#include "third_party/skia/include/core/SkTypes.h"
-#include "third_party/skia/include/docs/SkPDFDocument.h"
 #include "ui/gfx/image/image.h"
 #include "ui/gfx/image/image_util.h"
 
@@ -47,9 +42,6 @@
 // The conversion quality when converting from PNG to JPG.
 constexpr int kJpgQuality = 100;
 
-// The number of degrees to rotate a PDF image.
-constexpr int kRotationDegrees = 180;
-
 // The max progress percent that can be reported for a scanned page.
 constexpr uint32_t kMaxProgressPercent = 100;
 
@@ -111,85 +103,14 @@
   return std::string(jpg_img.begin(), jpg_img.end());
 }
 
-// Creates a new page for the PDF document and adds |image_data| to the page.
-// |rotate| indicates whether the page should be rotated 180 degrees.
-// Returns whether the page was successfully created.
-bool AddPdfPage(sk_sp<SkDocument> pdf_doc,
-                const sk_sp<SkData>& image_data,
-                bool rotate) {
-  const sk_sp<SkImage> image = SkImage::MakeFromEncoded(image_data);
-  if (!image) {
-    LOG(ERROR) << "Unable to generate image from encoded image data.";
-    return false;
-  }
-
-  SkCanvas* page_canvas = pdf_doc->beginPage(image->width(), image->height());
-  if (!page_canvas) {
-    LOG(ERROR) << "Unable to access PDF page canvas.";
-    return false;
-  }
-
-  // Rotate pages that were flipped by an ADF scanner.
-  if (rotate) {
-    page_canvas->rotate(kRotationDegrees);
-    page_canvas->translate(-image->width(), -image->height());
-  }
-
-  page_canvas->drawImage(image, /*left=*/0, /*top=*/0);
-  pdf_doc->endPage();
-  return true;
-}
-
-// Converts |png_images| into JPGs, adds them to a single PDF, and writes the
-// PDF to |file_path|. If |rotate_alternate_pages| is true, every other page
-// is rotated 180 degrees. Returns whether the PDF was successfully saved.
+// Adds given |png_images| to a single PDF, and writes the PDF to |file_path|.
+// If |rotate_alternate_pages| is true, every other page is rotated 180 degrees.
+// Returns whether the PDF was successfully saved.
 bool SaveAsPdf(const std::vector<std::string>& png_images,
                const base::FilePath& file_path,
                bool rotate_alternate_pages) {
-  DCHECK(!file_path.empty());
-
-  SkFILEWStream pdf_outfile(file_path.value().c_str());
-  if (!pdf_outfile.isValid()) {
-    LOG(ERROR) << "Unable to open output file.";
-    return false;
-  }
-
-  sk_sp<SkDocument> pdf_doc = SkPDF::MakeDocument(&pdf_outfile);
-  SkASSERT(pdf_doc);
-
-  // Never rotate first page of PDF.
-  bool rotate_current_page = false;
-  for (const auto& png_img : png_images) {
-    const std::string jpg_img = PngToJpg(png_img);
-    if (jpg_img.empty()) {
-      LOG(ERROR) << "Unable to convert PNG image to JPG.";
-      return false;
-    }
-
-    SkDynamicMemoryWStream img_stream;
-    if (!img_stream.write(jpg_img.c_str(), jpg_img.size())) {
-      LOG(ERROR) << "Unable to write image to dynamic memory stream.";
-      return false;
-    }
-
-    const sk_sp<SkData> img_data = img_stream.detachAsData();
-    if (img_data->isEmpty()) {
-      LOG(ERROR) << "Stream data is empty.";
-      return false;
-    }
-
-    if (!AddPdfPage(pdf_doc, img_data, rotate_current_page)) {
-      LOG(ERROR) << "Unable to add new PDF page.";
-      return false;
-    }
-
-    if (rotate_alternate_pages) {
-      rotate_current_page = !rotate_current_page;
-    }
-  }
-
-  pdf_doc->close();
-  return true;
+  return chromeos::ConvertPngImagesToPdf(png_images, file_path,
+                                         rotate_alternate_pages, kJpgQuality);
 }
 
 // Saves |scanned_image| to a file after converting it if necessary. Returns the
diff --git a/chrome/browser/autocomplete/autocomplete_browsertest.cc b/chrome/browser/autocomplete/autocomplete_browsertest.cc
index 0f6bfd8..e718a4ba 100644
--- a/chrome/browser/autocomplete/autocomplete_browsertest.cc
+++ b/chrome/browser/autocomplete/autocomplete_browsertest.cc
@@ -29,6 +29,7 @@
 #include "chrome/common/chrome_paths.h"
 #include "chrome/common/url_constants.h"
 #include "chrome/test/base/in_process_browser_test.h"
+#include "chrome/test/base/interactive_test_utils.h"
 #include "chrome/test/base/search_test_utils.h"
 #include "chrome/test/base/ui_test_utils.h"
 #include "components/history/core/browser/history_service.h"
diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_unittest.cc b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_unittest.cc
index 8105abe..dd3f3f9e 100644
--- a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_unittest.cc
+++ b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_unittest.cc
@@ -214,21 +214,6 @@
 const uint64_t kUnprotected =
     content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB;
 
-// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
-// function.
-GURL Origin1() {
-  return GURL("http://host1.com:1");
-}
-GURL Origin2() {
-  return GURL("http://host2.com:1");
-}
-GURL Origin3() {
-  return GURL("http://host3.com:1");
-}
-GURL Origin4() {
-  return GURL("https://host3.com:1");
-}
-
 // Testers --------------------------------------------------------------------
 
 #if defined(OS_ANDROID)
@@ -277,7 +262,7 @@
     bool result = false;
     base::RunLoop run_loop;
     cookie_manager_->GetCookieList(
-        Origin1(), net::CookieOptions::MakeAllInclusive(),
+        cookie_url_, net::CookieOptions::MakeAllInclusive(),
         base::BindLambdaForTesting(
             [&](const net::CookieAccessResultList& cookie_list,
                 const net::CookieAccessResultList& excluded_cookies) {
@@ -298,9 +283,9 @@
   void AddCookie() {
     base::RunLoop run_loop;
     auto cookie = net::CanonicalCookie::Create(
-        Origin1(), "A=1", base::Time::Now(), absl::nullopt /* server_time */);
+        cookie_url_, "A=1", base::Time::Now(), absl::nullopt /* server_time */);
     cookie_manager_->SetCanonicalCookie(
-        *cookie, Origin1(), net::CookieOptions::MakeAllInclusive(),
+        *cookie, cookie_url_, net::CookieOptions::MakeAllInclusive(),
         base::BindLambdaForTesting([&](net::CookieAccessResult result) {
           EXPECT_TRUE(result.status.IsInclude());
           run_loop.Quit();
@@ -315,6 +300,8 @@
   }
 
  private:
+  const GURL cookie_url_{"http://host1.com:1"};
+
   mojo::Remote<network::mojom::CookieManager> cookie_manager_;
 
   DISALLOW_COPY_AND_ASSIGN(RemoveCookieTester);
@@ -655,8 +642,9 @@
     if (filter.is_null() != to_match_.is_null())
       return false;
 
-    const GURL urls_to_test_[] = {Origin1(), Origin2(), Origin3(),
-                                  GURL("invalid spec")};
+    const GURL urls_to_test_[] = {
+        GURL("http://host1.com:1"), GURL("http://host2.com:1"),
+        GURL("http://host3.com:1"), GURL("invalid spec")};
     for (GURL url : urls_to_test_) {
       if (filter.Run(url) != to_match_.Run(url)) {
         if (listener)
@@ -1287,8 +1275,9 @@
   RemoveHistoryTester tester;
   ASSERT_TRUE(tester.Init(GetProfile()));
 
-  tester.AddHistory(Origin1(), base::Time::Now());
-  ASSERT_TRUE(tester.HistoryContainsURL(Origin1()));
+  const GURL kOrigin1("http://host1.com:1");
+  tester.AddHistory(kOrigin1, base::Time::Now());
+  ASSERT_TRUE(tester.HistoryContainsURL(kOrigin1));
 
   BlockUntilBrowsingDataRemoved(base::Time(), base::Time::Max(),
                                 constants::DATA_TYPE_HISTORY, false);
@@ -1296,7 +1285,7 @@
   EXPECT_EQ(constants::DATA_TYPE_HISTORY, GetRemovalMask());
   EXPECT_EQ(content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
             GetOriginTypeMask());
-  EXPECT_FALSE(tester.HistoryContainsURL(Origin1()));
+  EXPECT_FALSE(tester.HistoryContainsURL(kOrigin1));
 }
 
 TEST_F(ChromeBrowsingDataRemoverDelegateTest, RemoveHistoryForLastHour) {
@@ -1305,10 +1294,12 @@
 
   base::Time two_hours_ago = base::Time::Now() - base::TimeDelta::FromHours(2);
 
-  tester.AddHistory(Origin1(), base::Time::Now());
-  tester.AddHistory(Origin2(), two_hours_ago);
-  ASSERT_TRUE(tester.HistoryContainsURL(Origin1()));
-  ASSERT_TRUE(tester.HistoryContainsURL(Origin2()));
+  const GURL kOrigin1("http://host1.com:1");
+  const GURL kOrigin2("http://host2.com:1");
+  tester.AddHistory(kOrigin1, base::Time::Now());
+  tester.AddHistory(kOrigin2, two_hours_ago);
+  ASSERT_TRUE(tester.HistoryContainsURL(kOrigin1));
+  ASSERT_TRUE(tester.HistoryContainsURL(kOrigin2));
 
   BlockUntilBrowsingDataRemoved(AnHourAgo(), base::Time::Max(),
                                 constants::DATA_TYPE_HISTORY, false);
@@ -1316,8 +1307,8 @@
   EXPECT_EQ(constants::DATA_TYPE_HISTORY, GetRemovalMask());
   EXPECT_EQ(content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
             GetOriginTypeMask());
-  EXPECT_FALSE(tester.HistoryContainsURL(Origin1()));
-  EXPECT_TRUE(tester.HistoryContainsURL(Origin2()));
+  EXPECT_FALSE(tester.HistoryContainsURL(kOrigin1));
+  EXPECT_TRUE(tester.HistoryContainsURL(kOrigin2));
 }
 
 TEST_F(ChromeBrowsingDataRemoverDelegateTest, RemoveHistoryForOlderThan30Days) {
@@ -1331,13 +1322,16 @@
   base::Time older_than_31days =
       base::Time::Now() - base::TimeDelta::FromDays(31);
 
-  tester.AddHistory(Origin1(), base::Time::Now());
-  tester.AddHistory(Origin2(), older_than_29days);
-  tester.AddHistory(Origin3(), older_than_31days);
+  const GURL kOrigin1("http://host1.com:1");
+  const GURL kOrigin2("http://host2.com:1");
+  const GURL kOrigin3("http://host3.com:1");
+  tester.AddHistory(kOrigin1, base::Time::Now());
+  tester.AddHistory(kOrigin2, older_than_29days);
+  tester.AddHistory(kOrigin3, older_than_31days);
 
-  ASSERT_TRUE(tester.HistoryContainsURL(Origin1()));
-  ASSERT_TRUE(tester.HistoryContainsURL(Origin2()));
-  ASSERT_TRUE(tester.HistoryContainsURL(Origin3()));
+  ASSERT_TRUE(tester.HistoryContainsURL(kOrigin1));
+  ASSERT_TRUE(tester.HistoryContainsURL(kOrigin2));
+  ASSERT_TRUE(tester.HistoryContainsURL(kOrigin3));
 
   BlockUntilBrowsingDataRemoved(base::Time(), older_than_30days,
                                 constants::DATA_TYPE_HISTORY, false);
@@ -1346,9 +1340,9 @@
   EXPECT_EQ(content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
             GetOriginTypeMask());
 
-  EXPECT_TRUE(tester.HistoryContainsURL(Origin1()));
-  EXPECT_TRUE(tester.HistoryContainsURL(Origin2()));
-  EXPECT_FALSE(tester.HistoryContainsURL(Origin3()));
+  EXPECT_TRUE(tester.HistoryContainsURL(kOrigin1));
+  EXPECT_TRUE(tester.HistoryContainsURL(kOrigin2));
+  EXPECT_FALSE(tester.HistoryContainsURL(kOrigin3));
 }
 
 // This should crash (DCHECK) in Debug, but death tests don't work properly
@@ -1364,10 +1358,12 @@
 
   base::Time two_hours_ago = base::Time::Now() - base::TimeDelta::FromHours(2);
 
-  tester.AddHistory(Origin1(), base::Time::Now());
-  tester.AddHistory(Origin2(), two_hours_ago);
-  ASSERT_TRUE(tester.HistoryContainsURL(Origin1()));
-  ASSERT_TRUE(tester.HistoryContainsURL(Origin2()));
+  const GURL kOrigin1("http://host1.com:1");
+  const GURL kOrigin2("http://host2.com:1");
+  tester.AddHistory(kOrigin1, base::Time::Now());
+  tester.AddHistory(kOrigin2, two_hours_ago);
+  ASSERT_TRUE(tester.HistoryContainsURL(kOrigin1));
+  ASSERT_TRUE(tester.HistoryContainsURL(kOrigin2));
 
   BlockUntilBrowsingDataRemoved(AnHourAgo(), base::Time::Max(),
                                 constants::DATA_TYPE_HISTORY, false);
@@ -1376,8 +1372,8 @@
             GetOriginTypeMask());
 
   // Nothing should have been deleted.
-  EXPECT_TRUE(tester.HistoryContainsURL(Origin1()));
-  EXPECT_TRUE(tester.HistoryContainsURL(Origin2()));
+  EXPECT_TRUE(tester.HistoryContainsURL(kOrigin1));
+  EXPECT_TRUE(tester.HistoryContainsURL(kOrigin2));
 }
 
 TEST_F(ChromeBrowsingDataRemoverDelegateTest,
@@ -1386,10 +1382,11 @@
   prefs->SetBoolean(prefs::kAllowDeletingBrowserHistory, false);
 
   // Add some history.
+  const GURL kOrigin1("http://host1.com:1");
   RemoveHistoryTester history_tester;
   ASSERT_TRUE(history_tester.Init(GetProfile()));
-  history_tester.AddHistory(Origin1(), base::Time::Now());
-  ASSERT_TRUE(history_tester.HistoryContainsURL(Origin1()));
+  history_tester.AddHistory(kOrigin1, base::Time::Now());
+  ASSERT_TRUE(history_tester.HistoryContainsURL(kOrigin1));
 
   // Expect that passwords will be deleted, as they do not depend
   // on |prefs::kAllowDeletingBrowserHistory|.
@@ -1406,7 +1403,7 @@
             GetOriginTypeMask());
 
   // Verify that history was not deleted.
-  EXPECT_TRUE(history_tester.HistoryContainsURL(Origin1()));
+  EXPECT_TRUE(history_tester.HistoryContainsURL(kOrigin1));
 }
 #endif
 
@@ -1621,10 +1618,12 @@
 
   base::Time two_hours_ago = base::Time::Now() - base::TimeDelta::FromHours(2);
 
-  tester.AddHistory(Origin1(), base::Time::Now());
-  tester.AddHistory(Origin2(), two_hours_ago);
-  ASSERT_TRUE(tester.HistoryContainsURL(Origin1()));
-  ASSERT_TRUE(tester.HistoryContainsURL(Origin2()));
+  const GURL kOrigin1("http://host1.com:1");
+  const GURL kOrigin2("http://host2.com:1");
+  tester.AddHistory(kOrigin1, base::Time::Now());
+  tester.AddHistory(kOrigin2, two_hours_ago);
+  ASSERT_TRUE(tester.HistoryContainsURL(kOrigin1));
+  ASSERT_TRUE(tester.HistoryContainsURL(kOrigin2));
 
   std::unique_ptr<BrowsingDataFilterBuilder> builder(
       BrowsingDataFilterBuilder::Create(
@@ -1635,8 +1634,8 @@
   EXPECT_EQ(constants::DATA_TYPE_HISTORY, GetRemovalMask());
   EXPECT_EQ(content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
             GetOriginTypeMask());
-  EXPECT_FALSE(tester.HistoryContainsURL(Origin1()));
-  EXPECT_TRUE(tester.HistoryContainsURL(Origin2()));
+  EXPECT_FALSE(tester.HistoryContainsURL(kOrigin1));
+  EXPECT_TRUE(tester.HistoryContainsURL(kOrigin2));
 }
 
 // Verify that clearing autofill form data works.
@@ -2051,19 +2050,23 @@
   task_environment()->RunUntilIdle();
 
   // Add our settings.
+  const GURL kOrigin1("http://host1.com:1");
+  const GURL kOrigin2("http://host2.com:1");
+  const GURL kOrigin3("http://host3.com:1");
+  const GURL kOrigin4("https://host3.com:1");
   HostContentSettingsMap* host_content_settings_map =
       HostContentSettingsMapFactory::GetForProfile(GetProfile());
   host_content_settings_map->SetWebsiteSettingDefaultScope(
-      Origin1(), GURL(), ContentSettingsType::SITE_ENGAGEMENT,
+      kOrigin1, GURL(), ContentSettingsType::SITE_ENGAGEMENT,
       std::make_unique<base::DictionaryValue>());
   host_content_settings_map->SetWebsiteSettingDefaultScope(
-      Origin2(), GURL(), ContentSettingsType::SITE_ENGAGEMENT,
+      kOrigin2, GURL(), ContentSettingsType::SITE_ENGAGEMENT,
       std::make_unique<base::DictionaryValue>());
   host_content_settings_map->SetWebsiteSettingDefaultScope(
-      Origin3(), GURL(), ContentSettingsType::SITE_ENGAGEMENT,
+      kOrigin3, GURL(), ContentSettingsType::SITE_ENGAGEMENT,
       std::make_unique<base::DictionaryValue>());
   host_content_settings_map->SetWebsiteSettingDefaultScope(
-      Origin4(), GURL(), ContentSettingsType::SITE_ENGAGEMENT,
+      kOrigin4, GURL(), ContentSettingsType::SITE_ENGAGEMENT,
       std::make_unique<base::DictionaryValue>());
 
   // Clear all except for origin1 and origin3.
@@ -2085,13 +2088,13 @@
   host_content_settings_map->GetSettingsForOneType(
       ContentSettingsType::SITE_ENGAGEMENT, &host_settings);
   EXPECT_EQ(3u, host_settings.size());
-  EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(Origin1()),
+  EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(kOrigin1),
             host_settings[0].primary_pattern)
       << host_settings[0].primary_pattern.ToString();
-  EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(Origin4()),
+  EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(kOrigin4),
             host_settings[1].primary_pattern)
       << host_settings[1].primary_pattern.ToString();
-  EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(Origin3()),
+  EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(kOrigin3),
             host_settings[2].primary_pattern)
       << host_settings[2].primary_pattern.ToString();
 }
@@ -2101,9 +2104,12 @@
   // removed and an explicit wait should be added.
   task_environment()->RunUntilIdle();
 
+  const GURL kOrigin1("http://host1.com:1");
+  const GURL kOrigin2("http://host2.com:1");
+  const GURL kOrigin3("http://host3.com:1");
   const bool has_dse_origin = !dse_origin().is_empty();
   auto* map = HostContentSettingsMapFactory::GetForProfile(GetProfile());
-  map->SetContentSettingDefaultScope(Origin1(), Origin1(),
+  map->SetContentSettingDefaultScope(kOrigin1, kOrigin1,
                                      ContentSettingsType::GEOLOCATION,
                                      CONTENT_SETTING_ALLOW);
   if (has_dse_origin) {
@@ -2111,11 +2117,11 @@
                                        ContentSettingsType::GEOLOCATION,
                                        CONTENT_SETTING_BLOCK);
   }
-  map->SetContentSettingDefaultScope(Origin2(), Origin2(),
+  map->SetContentSettingDefaultScope(kOrigin2, kOrigin2,
                                      ContentSettingsType::NOTIFICATIONS,
                                      CONTENT_SETTING_ALLOW);
   map->SetContentSettingDefaultScope(
-      Origin3(), GURL(), ContentSettingsType::COOKIES, CONTENT_SETTING_BLOCK);
+      kOrigin3, GURL(), ContentSettingsType::COOKIES, CONTENT_SETTING_BLOCK);
   ContentSettingsPattern pattern =
       ContentSettingsPattern::FromString("[*.]example.com");
   map->SetContentSettingCustomScope(pattern, ContentSettingsPattern::Wildcard(),
@@ -2186,12 +2192,13 @@
 
   auto* registry =
       ProtocolHandlerRegistryFactory::GetForBrowserContext(GetProfile());
+  const GURL kOrigin("https://host3.com:1");
   base::Time one_hour_ago = base::Time::Now() - base::TimeDelta::FromHours(1);
   base::Time yesterday = base::Time::Now() - base::TimeDelta::FromDays(1);
   registry->OnAcceptRegisterProtocolHandler(
-      ProtocolHandler::CreateProtocolHandler("news", Origin4()));
+      ProtocolHandler::CreateProtocolHandler("news", kOrigin));
   registry->OnAcceptRegisterProtocolHandler(
-      ProtocolHandler("mailto", Origin4(), yesterday,
+      ProtocolHandler("mailto", kOrigin, yesterday,
                       blink::ProtocolHandlerSecurityLevel::kStrict));
   EXPECT_TRUE(registry->IsHandledProtocol("news"));
   EXPECT_TRUE(registry->IsHandledProtocol("mailto"));
@@ -2238,15 +2245,18 @@
                                        std::move(expiration_times_list));
   expiration_times_dictionary->SetDouble("expiration_time", expiration_time);
 
+  const GURL kOrigin1("http://host1.com:1");
+  const GURL kOrigin2("http://host2.com:1");
+  const GURL kOrigin3("http://host3.com:1");
   host_content_settings_map->SetWebsiteSettingDefaultScope(
-      Origin1(), GURL(), ContentSettingsType::CLIENT_HINTS,
+      kOrigin1, GURL(), ContentSettingsType::CLIENT_HINTS,
       expiration_times_dictionary->CreateDeepCopy());
   host_content_settings_map->SetWebsiteSettingDefaultScope(
-      Origin2(), GURL(), ContentSettingsType::CLIENT_HINTS,
+      kOrigin2, GURL(), ContentSettingsType::CLIENT_HINTS,
       expiration_times_dictionary->CreateDeepCopy());
 
   host_content_settings_map->SetWebsiteSettingDefaultScope(
-      Origin3(), GURL(), ContentSettingsType::CLIENT_HINTS,
+      kOrigin3, GURL(), ContentSettingsType::CLIENT_HINTS,
       expiration_times_dictionary->CreateDeepCopy());
 
   // Clear all except for origin1 and origin3.
@@ -2265,11 +2275,11 @@
 
   ASSERT_EQ(2u, host_settings.size());
 
-  EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(Origin1()),
+  EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(kOrigin1),
             host_settings[0].primary_pattern)
       << host_settings[0].primary_pattern.ToString();
 
-  EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(Origin3()),
+  EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(kOrigin3),
             host_settings[1].primary_pattern)
       << host_settings[1].primary_pattern.ToString();
 
@@ -2299,14 +2309,14 @@
   expiration_times_dictionary->SetDouble("expiration_time", expiration_time);
 
   host_content_settings_map->SetWebsiteSettingDefaultScope(
-      Origin1(), GURL(), ContentSettingsType::CLIENT_HINTS,
+      GURL("http://host1.com:1"), GURL(), ContentSettingsType::CLIENT_HINTS,
       expiration_times_dictionary->CreateDeepCopy());
   host_content_settings_map->SetWebsiteSettingDefaultScope(
-      Origin2(), GURL(), ContentSettingsType::CLIENT_HINTS,
+      GURL("http://host2.com:1"), GURL(), ContentSettingsType::CLIENT_HINTS,
       expiration_times_dictionary->CreateDeepCopy());
 
   host_content_settings_map->SetWebsiteSettingDefaultScope(
-      Origin3(), GURL(), ContentSettingsType::CLIENT_HINTS,
+      GURL("http://host3.com:1"), GURL(), ContentSettingsType::CLIENT_HINTS,
       expiration_times_dictionary->CreateDeepCopy());
 
   // Clear all.
@@ -2395,14 +2405,16 @@
 
 TEST_F(ChromeBrowsingDataRemoverDelegateTest, RemoveDurablePermission) {
   // Add our settings.
+  const GURL kOrigin1("http://host1.com:1");
+  const GURL kOrigin2("http://host2.com:1");
   HostContentSettingsMap* host_content_settings_map =
       HostContentSettingsMapFactory::GetForProfile(GetProfile());
 
   DurableStoragePermissionContext durable_permission(GetProfile());
   durable_permission.UpdateContentSetting(
-      Origin1(), GURL(), CONTENT_SETTING_ALLOW, /*is_one_time=*/false);
+      kOrigin1, GURL(), CONTENT_SETTING_ALLOW, /*is_one_time=*/false);
   durable_permission.UpdateContentSetting(
-      Origin2(), GURL(), CONTENT_SETTING_ALLOW, /*is_one_time=*/false);
+      kOrigin2, GURL(), CONTENT_SETTING_ALLOW, /*is_one_time=*/false);
 
   // Clear all except for origin1 and origin3.
   std::unique_ptr<BrowsingDataFilterBuilder> filter(
@@ -2425,7 +2437,7 @@
 
   ASSERT_EQ(2u, host_settings.size());
   // Only the first should should have a setting.
-  EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(Origin1()),
+  EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(kOrigin1),
             host_settings[0].primary_pattern)
       << host_settings[0].primary_pattern.ToString();
   EXPECT_EQ(CONTENT_SETTING_ALLOW, host_settings[0].GetContentSetting());
@@ -2442,8 +2454,9 @@
   HostContentSettingsMap* host_content_settings_map =
       HostContentSettingsMapFactory::GetForProfile(GetProfile());
   DurableStoragePermissionContext durable_permission(GetProfile());
-  durable_permission.UpdateContentSetting(
-      Origin1(), GURL(), CONTENT_SETTING_ALLOW, /*is_one_time=*/false);
+  durable_permission.UpdateContentSetting(GURL("http://host1.com:1"), GURL(),
+                                          CONTENT_SETTING_ALLOW,
+                                          /*is_one_time=*/false);
   ContentSettingsForOneType host_settings;
   host_content_settings_map->GetSettingsForOneType(
       ContentSettingsType::DURABLE_STORAGE, &host_settings);
@@ -2472,11 +2485,12 @@
   DCHECK(http_session);
 
   net::HttpAuthCache* http_auth_cache = http_session->http_auth_cache();
-  http_auth_cache->Add(Origin1(), net::HttpAuth::AUTH_SERVER, kTestRealm,
+  const GURL kOrigin1("http://host1.com:1");
+  http_auth_cache->Add(kOrigin1, net::HttpAuth::AUTH_SERVER, kTestRealm,
                        net::HttpAuth::AUTH_SCHEME_BASIC,
                        net::NetworkIsolationKey(), "test challenge",
                        net::AuthCredentials(u"foo", u"bar"), "/");
-  CHECK(http_auth_cache->Lookup(Origin1(), net::HttpAuth::AUTH_SERVER,
+  CHECK(http_auth_cache->Lookup(kOrigin1, net::HttpAuth::AUTH_SERVER,
                                 kTestRealm, net::HttpAuth::AUTH_SCHEME_BASIC,
                                 net::NetworkIsolationKey()));
 
@@ -2485,7 +2499,7 @@
 
   EXPECT_EQ(nullptr,
             http_auth_cache->Lookup(
-                Origin1(), net::HttpAuth::AUTH_SERVER, kTestRealm,
+                kOrigin1, net::HttpAuth::AUTH_SERVER, kTestRealm,
                 net::HttpAuth::AUTH_SCHEME_BASIC, net::NetworkIsolationKey()));
 }
 
@@ -2514,45 +2528,47 @@
           BrowsingDataFilterBuilder::Mode::kPreserve));
   filter_builder_2->AddRegisterableDomain(kTestRegisterableDomain1);
 
+  const GURL kOrigin1("http://host1.com:1");
+  const GURL kOrigin2("http://host2.com:1");
   {
     // Test REMOVE_HISTORY.
     EXPECT_FALSE(tester.RecordIgnoreAndEmbargo(
-        Origin1(), ContentSettingsType::GEOLOCATION));
+        kOrigin1, ContentSettingsType::GEOLOCATION));
     EXPECT_FALSE(tester.RecordIgnoreAndEmbargo(
-        Origin1(), ContentSettingsType::GEOLOCATION));
+        kOrigin1, ContentSettingsType::GEOLOCATION));
     EXPECT_FALSE(tester.RecordIgnoreAndEmbargo(
-        Origin1(), ContentSettingsType::NOTIFICATIONS));
+        kOrigin1, ContentSettingsType::NOTIFICATIONS));
     EXPECT_FALSE(tester.RecordDismissAndEmbargo(
-        Origin1(), ContentSettingsType::MIDI_SYSEX));
+        kOrigin1, ContentSettingsType::MIDI_SYSEX));
     EXPECT_FALSE(tester.RecordIgnoreAndEmbargo(
-        Origin2(), ContentSettingsType::DURABLE_STORAGE));
-    tester.CheckEmbargo(Origin2(), ContentSettingsType::NOTIFICATIONS,
+        kOrigin2, ContentSettingsType::DURABLE_STORAGE));
+    tester.CheckEmbargo(kOrigin2, ContentSettingsType::NOTIFICATIONS,
                         CONTENT_SETTING_ASK);
     EXPECT_FALSE(tester.RecordDismissAndEmbargo(
-        Origin2(), ContentSettingsType::NOTIFICATIONS));
+        kOrigin2, ContentSettingsType::NOTIFICATIONS));
     EXPECT_FALSE(tester.RecordDismissAndEmbargo(
-        Origin2(), ContentSettingsType::NOTIFICATIONS));
+        kOrigin2, ContentSettingsType::NOTIFICATIONS));
     EXPECT_TRUE(tester.RecordDismissAndEmbargo(
-        Origin2(), ContentSettingsType::NOTIFICATIONS));
-    tester.CheckEmbargo(Origin2(), ContentSettingsType::NOTIFICATIONS,
+        kOrigin2, ContentSettingsType::NOTIFICATIONS));
+    tester.CheckEmbargo(kOrigin2, ContentSettingsType::NOTIFICATIONS,
                         CONTENT_SETTING_BLOCK);
 
     BlockUntilOriginDataRemoved(AnHourAgo(), base::Time::Max(),
                                 constants::DATA_TYPE_SITE_USAGE_DATA,
                                 std::move(filter_builder_1));
 
-    // Origin1() should be gone, but Origin2() remains.
+    // kOrigin1 should be gone, but kOrigin2 remains.
     EXPECT_EQ(
-        0, tester.GetIgnoreCount(Origin1(), ContentSettingsType::GEOLOCATION));
-    EXPECT_EQ(0, tester.GetIgnoreCount(Origin1(),
-                                       ContentSettingsType::NOTIFICATIONS));
+        0, tester.GetIgnoreCount(kOrigin1, ContentSettingsType::GEOLOCATION));
     EXPECT_EQ(
-        0, tester.GetDismissCount(Origin1(), ContentSettingsType::MIDI_SYSEX));
-    EXPECT_EQ(1, tester.GetIgnoreCount(Origin2(),
+        0, tester.GetIgnoreCount(kOrigin1, ContentSettingsType::NOTIFICATIONS));
+    EXPECT_EQ(
+        0, tester.GetDismissCount(kOrigin1, ContentSettingsType::MIDI_SYSEX));
+    EXPECT_EQ(1, tester.GetIgnoreCount(kOrigin2,
                                        ContentSettingsType::DURABLE_STORAGE));
-    EXPECT_EQ(3, tester.GetDismissCount(Origin2(),
+    EXPECT_EQ(3, tester.GetDismissCount(kOrigin2,
                                         ContentSettingsType::NOTIFICATIONS));
-    tester.CheckEmbargo(Origin2(), ContentSettingsType::NOTIFICATIONS,
+    tester.CheckEmbargo(kOrigin2, ContentSettingsType::NOTIFICATIONS,
                         CONTENT_SETTING_BLOCK);
 
     BlockUntilBrowsingDataRemoved(AnHourAgo(), base::Time::Max(),
@@ -2560,58 +2576,58 @@
 
     // Everything should be gone.
     EXPECT_EQ(
-        0, tester.GetIgnoreCount(Origin1(), ContentSettingsType::GEOLOCATION));
-    EXPECT_EQ(0, tester.GetIgnoreCount(Origin1(),
-                                       ContentSettingsType::NOTIFICATIONS));
+        0, tester.GetIgnoreCount(kOrigin1, ContentSettingsType::GEOLOCATION));
     EXPECT_EQ(
-        0, tester.GetDismissCount(Origin1(), ContentSettingsType::MIDI_SYSEX));
-    EXPECT_EQ(0, tester.GetIgnoreCount(Origin2(),
+        0, tester.GetIgnoreCount(kOrigin1, ContentSettingsType::NOTIFICATIONS));
+    EXPECT_EQ(
+        0, tester.GetDismissCount(kOrigin1, ContentSettingsType::MIDI_SYSEX));
+    EXPECT_EQ(0, tester.GetIgnoreCount(kOrigin2,
                                        ContentSettingsType::DURABLE_STORAGE));
-    EXPECT_EQ(0, tester.GetDismissCount(Origin2(),
+    EXPECT_EQ(0, tester.GetDismissCount(kOrigin2,
                                         ContentSettingsType::NOTIFICATIONS));
-    tester.CheckEmbargo(Origin2(), ContentSettingsType::NOTIFICATIONS,
+    tester.CheckEmbargo(kOrigin2, ContentSettingsType::NOTIFICATIONS,
                         CONTENT_SETTING_ASK);
   }
   {
     // Test REMOVE_SITE_DATA.
     EXPECT_FALSE(tester.RecordIgnoreAndEmbargo(
-        Origin1(), ContentSettingsType::GEOLOCATION));
+        kOrigin1, ContentSettingsType::GEOLOCATION));
     EXPECT_FALSE(tester.RecordIgnoreAndEmbargo(
-        Origin1(), ContentSettingsType::GEOLOCATION));
+        kOrigin1, ContentSettingsType::GEOLOCATION));
     EXPECT_FALSE(tester.RecordIgnoreAndEmbargo(
-        Origin1(), ContentSettingsType::NOTIFICATIONS));
+        kOrigin1, ContentSettingsType::NOTIFICATIONS));
     EXPECT_FALSE(tester.RecordDismissAndEmbargo(
-        Origin1(), ContentSettingsType::MIDI_SYSEX));
-    tester.CheckEmbargo(Origin1(), ContentSettingsType::MIDI_SYSEX,
+        kOrigin1, ContentSettingsType::MIDI_SYSEX));
+    tester.CheckEmbargo(kOrigin1, ContentSettingsType::MIDI_SYSEX,
                         CONTENT_SETTING_ASK);
     EXPECT_FALSE(tester.RecordIgnoreAndEmbargo(
-        Origin2(), ContentSettingsType::DURABLE_STORAGE));
+        kOrigin2, ContentSettingsType::DURABLE_STORAGE));
     EXPECT_FALSE(tester.RecordDismissAndEmbargo(
-        Origin2(), ContentSettingsType::NOTIFICATIONS));
+        kOrigin2, ContentSettingsType::NOTIFICATIONS));
 
     BlockUntilOriginDataRemoved(AnHourAgo(), base::Time::Max(),
                                 constants::DATA_TYPE_SITE_USAGE_DATA,
                                 std::move(filter_builder_2));
 
-    // Origin2() should be gone, but Origin1() remains.
+    // kOrigin2 should be gone, but kOrigin1 remains.
     EXPECT_EQ(
-        2, tester.GetIgnoreCount(Origin1(), ContentSettingsType::GEOLOCATION));
-    EXPECT_EQ(1, tester.GetIgnoreCount(Origin1(),
-                                       ContentSettingsType::NOTIFICATIONS));
+        2, tester.GetIgnoreCount(kOrigin1, ContentSettingsType::GEOLOCATION));
     EXPECT_EQ(
-        1, tester.GetDismissCount(Origin1(), ContentSettingsType::MIDI_SYSEX));
-    EXPECT_EQ(0, tester.GetIgnoreCount(Origin2(),
+        1, tester.GetIgnoreCount(kOrigin1, ContentSettingsType::NOTIFICATIONS));
+    EXPECT_EQ(
+        1, tester.GetDismissCount(kOrigin1, ContentSettingsType::MIDI_SYSEX));
+    EXPECT_EQ(0, tester.GetIgnoreCount(kOrigin2,
                                        ContentSettingsType::DURABLE_STORAGE));
-    EXPECT_EQ(0, tester.GetDismissCount(Origin2(),
+    EXPECT_EQ(0, tester.GetDismissCount(kOrigin2,
                                         ContentSettingsType::NOTIFICATIONS));
 
     EXPECT_FALSE(tester.RecordDismissAndEmbargo(
-        Origin1(), ContentSettingsType::MIDI_SYSEX));
+        kOrigin1, ContentSettingsType::MIDI_SYSEX));
     EXPECT_TRUE(tester.RecordDismissAndEmbargo(
-        Origin1(), ContentSettingsType::MIDI_SYSEX));
+        kOrigin1, ContentSettingsType::MIDI_SYSEX));
     EXPECT_EQ(
-        3, tester.GetDismissCount(Origin1(), ContentSettingsType::MIDI_SYSEX));
-    tester.CheckEmbargo(Origin1(), ContentSettingsType::MIDI_SYSEX,
+        3, tester.GetDismissCount(kOrigin1, ContentSettingsType::MIDI_SYSEX));
+    tester.CheckEmbargo(kOrigin1, ContentSettingsType::MIDI_SYSEX,
                         CONTENT_SETTING_BLOCK);
 
     BlockUntilBrowsingDataRemoved(AnHourAgo(), base::Time::Max(),
@@ -2619,16 +2635,16 @@
 
     // Everything should be gone.
     EXPECT_EQ(
-        0, tester.GetIgnoreCount(Origin1(), ContentSettingsType::GEOLOCATION));
-    EXPECT_EQ(0, tester.GetIgnoreCount(Origin1(),
-                                       ContentSettingsType::NOTIFICATIONS));
+        0, tester.GetIgnoreCount(kOrigin1, ContentSettingsType::GEOLOCATION));
     EXPECT_EQ(
-        0, tester.GetDismissCount(Origin1(), ContentSettingsType::MIDI_SYSEX));
-    EXPECT_EQ(0, tester.GetIgnoreCount(Origin2(),
+        0, tester.GetIgnoreCount(kOrigin1, ContentSettingsType::NOTIFICATIONS));
+    EXPECT_EQ(
+        0, tester.GetDismissCount(kOrigin1, ContentSettingsType::MIDI_SYSEX));
+    EXPECT_EQ(0, tester.GetIgnoreCount(kOrigin2,
                                        ContentSettingsType::DURABLE_STORAGE));
-    EXPECT_EQ(0, tester.GetDismissCount(Origin2(),
+    EXPECT_EQ(0, tester.GetDismissCount(kOrigin2,
                                         ContentSettingsType::NOTIFICATIONS));
-    tester.CheckEmbargo(Origin1(), ContentSettingsType::MIDI_SYSEX,
+    tester.CheckEmbargo(kOrigin1, ContentSettingsType::MIDI_SYSEX,
                         CONTENT_SETTING_ASK);
   }
 }
diff --git a/chrome/browser/chromeos/BUILD.gn b/chrome/browser/chromeos/BUILD.gn
index e6b5d274..4f1b9df9 100644
--- a/chrome/browser/chromeos/BUILD.gn
+++ b/chrome/browser/chromeos/BUILD.gn
@@ -101,6 +101,7 @@
     "//chrome/browser/apps/platform_apps",
     "//chrome/browser/apps/platform_apps/api",
     "//chrome/browser/ash/child_accounts/time_limits/web_time_limit_error_page",
+    "//chrome/browser/ash/crosapi",
     "//chrome/browser/ash/crostini:crostini_installer_types_mojom",
     "//chrome/browser/ash/wilco_dtc_supportd:mojo_utils",
     "//chrome/browser/browsing_data:constants",
@@ -277,6 +278,7 @@
     "//chromeos/tpm:buildflags",
     "//chromeos/ui/base",
     "//chromeos/ui/frame",
+    "//chromeos/utils",
     "//components/arc",
     "//components/arc/enterprise",
     "//components/arc/media_session",
@@ -470,8 +472,9 @@
   data_deps = [ ":dbus_service_files" ]
 
   allow_circular_includes_from = [
-    "//chrome/browser/extensions",
     "//chrome/browser/apps/platform_apps/api",
+    "//chrome/browser/ash/crosapi",
+    "//chrome/browser/extensions",
     "//chrome/browser/web_applications",
     "//chrome/browser/web_applications/components",
   ]
@@ -921,6 +924,8 @@
     "../ash/borealis/borealis_context_manager_impl.cc",
     "../ash/borealis/borealis_context_manager_impl.h",
     "../ash/borealis/borealis_disk_manager.h",
+    "../ash/borealis/borealis_disk_manager_dispatcher.cc",
+    "../ash/borealis/borealis_disk_manager_dispatcher.h",
     "../ash/borealis/borealis_disk_manager_impl.cc",
     "../ash/borealis/borealis_disk_manager_impl.h",
     "../ash/borealis/borealis_engagement_metrics.cc",
@@ -1074,83 +1079,6 @@
     "../ash/child_accounts/usage_time_limit_processor.h",
     "../ash/child_accounts/usage_time_state_notifier.cc",
     "../ash/child_accounts/usage_time_state_notifier.h",
-    "../ash/crosapi/automation_ash.cc",
-    "../ash/crosapi/automation_ash.h",
-    "../ash/crosapi/browser_data_migrator.cc",
-    "../ash/crosapi/browser_data_migrator.h",
-    "../ash/crosapi/browser_loader.cc",
-    "../ash/crosapi/browser_loader.h",
-    "../ash/crosapi/browser_manager.cc",
-    "../ash/crosapi/browser_manager.h",
-    "../ash/crosapi/browser_manager_observer.h",
-    "../ash/crosapi/browser_service_host_ash.cc",
-    "../ash/crosapi/browser_service_host_ash.h",
-    "../ash/crosapi/browser_service_host_observer.h",
-    "../ash/crosapi/browser_util.cc",
-    "../ash/crosapi/browser_util.h",
-    "../ash/crosapi/cert_database_ash.cc",
-    "../ash/crosapi/cert_database_ash.h",
-    "../ash/crosapi/clipboard_ash.cc",
-    "../ash/crosapi/clipboard_ash.h",
-    "../ash/crosapi/clipboard_history_ash.cc",
-    "../ash/crosapi/clipboard_history_ash.h",
-    "../ash/crosapi/content_protection_ash.cc",
-    "../ash/crosapi/content_protection_ash.h",
-    "../ash/crosapi/crosapi_ash.cc",
-    "../ash/crosapi/crosapi_ash.h",
-    "../ash/crosapi/crosapi_id.h",
-    "../ash/crosapi/crosapi_manager.cc",
-    "../ash/crosapi/crosapi_manager.h",
-    "../ash/crosapi/device_attributes_ash.cc",
-    "../ash/crosapi/device_attributes_ash.h",
-    "../ash/crosapi/download_controller_ash.cc",
-    "../ash/crosapi/download_controller_ash.h",
-    "../ash/crosapi/drive_integration_service_ash.cc",
-    "../ash/crosapi/drive_integration_service_ash.h",
-    "../ash/crosapi/environment_provider.cc",
-    "../ash/crosapi/environment_provider.h",
-    "../ash/crosapi/fake_browser_manager.cc",
-    "../ash/crosapi/fake_browser_manager.h",
-    "../ash/crosapi/feedback_ash.cc",
-    "../ash/crosapi/feedback_ash.h",
-    "../ash/crosapi/file_manager_ash.cc",
-    "../ash/crosapi/file_manager_ash.h",
-    "../ash/crosapi/idle_service_ash.cc",
-    "../ash/crosapi/idle_service_ash.h",
-    "../ash/crosapi/keystore_service_ash.cc",
-    "../ash/crosapi/keystore_service_ash.h",
-    "../ash/crosapi/keystore_service_factory_ash.cc",
-    "../ash/crosapi/keystore_service_factory_ash.h",
-    "../ash/crosapi/local_printer_ash.cc",
-    "../ash/crosapi/local_printer_ash.h",
-    "../ash/crosapi/message_center_ash.cc",
-    "../ash/crosapi/message_center_ash.h",
-    "../ash/crosapi/metrics_reporting_ash.cc",
-    "../ash/crosapi/metrics_reporting_ash.h",
-    "../ash/crosapi/prefs_ash.cc",
-    "../ash/crosapi/prefs_ash.h",
-    "../ash/crosapi/screen_manager_ash.cc",
-    "../ash/crosapi/screen_manager_ash.h",
-    "../ash/crosapi/select_file_ash.cc",
-    "../ash/crosapi/select_file_ash.h",
-    "../ash/crosapi/system_display_ash.cc",
-    "../ash/crosapi/system_display_ash.h",
-    "../ash/crosapi/task_manager_ash.cc",
-    "../ash/crosapi/task_manager_ash.h",
-    "../ash/crosapi/test_controller_ash.cc",
-    "../ash/crosapi/test_controller_ash.h",
-    "../ash/crosapi/test_mojo_connection_manager.cc",
-    "../ash/crosapi/test_mojo_connection_manager.h",
-    "../ash/crosapi/url_handler_ash.cc",
-    "../ash/crosapi/url_handler_ash.h",
-    "../ash/crosapi/video_capture_device_ash.cc",
-    "../ash/crosapi/video_capture_device_ash.h",
-    "../ash/crosapi/video_capture_device_factory_ash.cc",
-    "../ash/crosapi/video_capture_device_factory_ash.h",
-    "../ash/crosapi/video_frame_handler_ash.cc",
-    "../ash/crosapi/video_frame_handler_ash.h",
-    "../ash/crosapi/window_util.cc",
-    "../ash/crosapi/window_util.h",
     "../ash/crostini/ansible/ansible_management_service.cc",
     "../ash/crostini/ansible/ansible_management_service.h",
     "../ash/crostini/ansible/ansible_management_service_factory.cc",
@@ -1488,7 +1416,6 @@
     "../ash/login/login_auth_recorder.h",
     "../ash/login/login_client_cert_usage_observer.cc",
     "../ash/login/login_client_cert_usage_observer.h",
-    "../ash/login/login_constants.h",
     "../ash/login/login_pref_names.cc",
     "../ash/login/login_pref_names.h",
     "../ash/login/login_screen_extensions_lifetime_manager.cc",
@@ -2133,6 +2060,8 @@
     "dbus/cryptohome_key_delegate_service_provider.h",
     "dbus/dbus_helper.cc",
     "dbus/dbus_helper.h",
+    "dbus/dlp_files_policy_service_provider.cc",
+    "dbus/dlp_files_policy_service_provider.h",
     "dbus/drive_file_stream_service_provider.cc",
     "dbus/drive_file_stream_service_provider.h",
     "dbus/encrypted_reporting_service_provider.cc",
@@ -3372,6 +3301,7 @@
     "dbus/org.chromium.ChromeFeaturesService.conf",
     "dbus/org.chromium.ComponentUpdaterService.conf",
     "dbus/org.chromium.CryptohomeKeyDelegate.conf",
+    "dbus/org.chromium.DlpFilesPolicyService.conf",
     "dbus/org.chromium.DriveFileStreamService.conf",
     "dbus/org.chromium.EncryptedReportingUploadService.conf",
     "dbus/org.chromium.KioskAppService.conf",
@@ -3763,17 +3693,6 @@
     "../ash/child_accounts/time_limits/persisted_app_info_unittest.cc",
     "../ash/child_accounts/usage_time_limit_processor_unittest.cc",
     "../ash/child_accounts/usage_time_state_notifier_unittest.cc",
-    "../ash/crosapi/browser_data_migrator_unittest.cc",
-    "../ash/crosapi/browser_loader_unittest.cc",
-    "../ash/crosapi/browser_manager_unittest.cc",
-    "../ash/crosapi/browser_util_unittest.cc",
-    "../ash/crosapi/local_printer_ash_unittest.cc",
-    "../ash/crosapi/message_center_ash_unittest.cc",
-    "../ash/crosapi/metrics_reporting_ash_unittest.cc",
-    "../ash/crosapi/prefs_ash_unittest.cc",
-    "../ash/crosapi/test_local_printer_ash.cc",
-    "../ash/crosapi/test_local_printer_ash.h",
-    "../ash/crosapi/test_mojo_connection_manager_unittest.cc",
     "../ash/crostini/ansible/ansible_management_service_unittest.cc",
     "../ash/crostini/crostini_disk_unittest.cc",
     "../ash/crostini/crostini_export_import_unittest.cc",
@@ -4365,6 +4284,7 @@
     "//base",
     "//build:chromeos_buildflags",
     "//chrome/app:command_ids",
+    "//chrome/browser/ash/crosapi:unit_tests",
     "//chrome/browser/resources/chromeos/zip_archiver:char_coding",
     "//chrome/browser/ui",
     "//chrome/browser/ui:ash_test_support",
diff --git a/chrome/browser/chromeos/chrome_browser_main_chromeos.cc b/chrome/browser/chromeos/chrome_browser_main_chromeos.cc
index 69a57825..1bbeeb66 100644
--- a/chrome/browser/chromeos/chrome_browser_main_chromeos.cc
+++ b/chrome/browser/chromeos/chrome_browser_main_chromeos.cc
@@ -88,6 +88,7 @@
 #include "chrome/browser/chromeos/dbus/component_updater_service_provider.h"
 #include "chrome/browser/chromeos/dbus/cryptohome_key_delegate_service_provider.h"
 #include "chrome/browser/chromeos/dbus/dbus_helper.h"
+#include "chrome/browser/chromeos/dbus/dlp_files_policy_service_provider.h"
 #include "chrome/browser/chromeos/dbus/drive_file_stream_service_provider.h"
 #include "chrome/browser/chromeos/dbus/encrypted_reporting_service_provider.h"
 #include "chrome/browser/chromeos/dbus/kiosk_info_service_provider.h"
@@ -402,6 +403,12 @@
         CrosDBusService::CreateServiceProviderList(
             std::make_unique<MojoConnectionServiceProvider>()));
 
+    dlp_files_policy_service_ = CrosDBusService::Create(
+        system_bus, dlp::kDlpFilesPolicyServiceName,
+        dbus::ObjectPath(dlp::kDlpFilesPolicyServicePath),
+        CrosDBusService::CreateServiceProviderList(
+            std::make_unique<DlpFilesPolicyServiceProvider>()));
+
     if (arc::IsArcVmEnabled()) {
       libvda_service_ = CrosDBusService::Create(
           system_bus, libvda::kLibvdaServiceName,
@@ -497,6 +504,7 @@
   std::unique_ptr<CrosDBusService> smb_fs_service_;
   std::unique_ptr<CrosDBusService> lock_to_single_user_service_;
   std::unique_ptr<CrosDBusService> mojo_connection_service_;
+  std::unique_ptr<CrosDBusService> dlp_files_policy_service_;
 
   DISALLOW_COPY_AND_ASSIGN(DBusServices);
 };
diff --git a/chrome/browser/chromeos/dbus/OWNERS b/chrome/browser/chromeos/dbus/OWNERS
index cd2e8b6..b84afd87 100644
--- a/chrome/browser/chromeos/dbus/OWNERS
+++ b/chrome/browser/chromeos/dbus/OWNERS
@@ -4,5 +4,4 @@
 per-file org.chromium.*.conf=file://chromeos/SECURITY_OWNERS
 
 per-file *cryptohome_key_delegate*=emaxx@chromium.org
-per-file *encrypted_reporting*=lbaraz@chromium.org
-per-file *encrypted_reporting*=zatrudo@google.com
+per-file *encrypted_reporting*=file://components/reporting/OWNERS
diff --git a/chrome/browser/chromeos/dbus/dlp_files_policy_service_provider.cc b/chrome/browser/chromeos/dbus/dlp_files_policy_service_provider.cc
new file mode 100644
index 0000000..d0fdf9e
--- /dev/null
+++ b/chrome/browser/chromeos/dbus/dlp_files_policy_service_provider.cc
@@ -0,0 +1,139 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/chromeos/dbus/dlp_files_policy_service_provider.h"
+
+#include "base/bind.h"
+#include "base/logging.h"
+#include "chrome/browser/chromeos/policy/dlp/dlp_rules_manager.h"
+#include "chrome/browser/chromeos/policy/dlp/dlp_rules_manager_factory.h"
+#include "chromeos/dbus/dlp/dlp_service.pb.h"
+#include "dbus/message.h"
+#include "third_party/cros_system_api/dbus/dlp/dbus-constants.h"
+#include "url/gurl.h"
+
+namespace chromeos {
+
+DlpFilesPolicyServiceProvider::DlpFilesPolicyServiceProvider() = default;
+DlpFilesPolicyServiceProvider::~DlpFilesPolicyServiceProvider() = default;
+
+void DlpFilesPolicyServiceProvider::Start(
+    scoped_refptr<dbus::ExportedObject> exported_object) {
+  exported_object->ExportMethod(
+      dlp::kDlpFilesPolicyServiceInterface,
+      dlp::kDlpFilesPolicyServiceIsRestrictedMethod,
+      base::BindRepeating(&DlpFilesPolicyServiceProvider::IsRestricted,
+                          weak_ptr_factory_.GetWeakPtr()),
+      base::BindOnce(&DlpFilesPolicyServiceProvider::OnExported,
+                     weak_ptr_factory_.GetWeakPtr()));
+
+  exported_object->ExportMethod(
+      dlp::kDlpFilesPolicyServiceInterface,
+      dlp::kDlpFilesPolicyServiceIsDlpPolicyMatchedMethod,
+      base::BindRepeating(&DlpFilesPolicyServiceProvider::IsDlpPolicyMatched,
+                          weak_ptr_factory_.GetWeakPtr()),
+      base::BindOnce(&DlpFilesPolicyServiceProvider::OnExported,
+                     weak_ptr_factory_.GetWeakPtr()));
+}
+
+void DlpFilesPolicyServiceProvider::OnExported(
+    const std::string& interface_name,
+    const std::string& method_name,
+    bool success) {
+  if (!success) {
+    LOG(ERROR) << "Failed to export " << interface_name << "." << method_name;
+  }
+}
+
+void DlpFilesPolicyServiceProvider::IsRestricted(
+    dbus::MethodCall* method_call,
+    dbus::ExportedObject::ResponseSender response_sender) {
+  dbus::MessageReader reader(method_call);
+  dlp::IsRestrictedRequest request;
+  if (!reader.PopArrayOfBytesAsProto(&request)) {
+    std::move(response_sender)
+        .Run(dbus::ErrorResponse::FromMethodCall(
+            method_call, DBUS_ERROR_INVALID_ARGS,
+            "Unable to parse IsRestrictedRequest"));
+    return;
+  }
+  if (!request.has_source_url()) {
+    std::move(response_sender)
+        .Run(dbus::ErrorResponse::FromMethodCall(
+            method_call, DBUS_ERROR_INVALID_ARGS,
+            "Missing source url in request"));
+    return;
+  }
+  if (!request.has_destination_url()) {
+    std::move(response_sender)
+        .Run(dbus::ErrorResponse::FromMethodCall(
+            method_call, DBUS_ERROR_INVALID_ARGS,
+            "Missing destination url in request"));
+    return;
+  }
+
+  bool restricted = false;
+  policy::DlpRulesManager* dlp_rules_manager =
+      policy::DlpRulesManagerFactory::GetForPrimaryProfile();
+  if (dlp_rules_manager) {
+    policy::DlpRulesManager::Level level =
+        dlp_rules_manager->IsRestrictedDestination(
+            GURL(request.source_url()), GURL(request.destination_url()),
+            policy::DlpRulesManager::Restriction::kFiles,
+            /*out_source_pattern=*/nullptr,
+            /*out_destination_pattern=*/nullptr);
+    if (level == policy::DlpRulesManager::Level::kBlock)
+      restricted = true;
+  }
+
+  dlp::IsRestrictedResponse response_proto;
+  response_proto.set_restricted(restricted);
+  std::unique_ptr<dbus::Response> response =
+      dbus::Response::FromMethodCall(method_call);
+  dbus::MessageWriter writer(response.get());
+  writer.AppendProtoAsArrayOfBytes(response_proto);
+  std::move(response_sender).Run(std::move(response));
+}
+
+void DlpFilesPolicyServiceProvider::IsDlpPolicyMatched(
+    dbus::MethodCall* method_call,
+    dbus::ExportedObject::ResponseSender response_sender) {
+  dbus::MessageReader reader(method_call);
+  dlp::IsDlpPolicyMatchedRequest request;
+  if (!reader.PopArrayOfBytesAsProto(&request)) {
+    std::move(response_sender)
+        .Run(dbus::ErrorResponse::FromMethodCall(
+            method_call, DBUS_ERROR_INVALID_ARGS,
+            "Unable to parse IsDlpPolicyMatchedRequest"));
+    return;
+  }
+  if (!request.has_source_url()) {
+    std::move(response_sender)
+        .Run(dbus::ErrorResponse::FromMethodCall(
+            method_call, DBUS_ERROR_INVALID_ARGS,
+            "Missing source url in request"));
+    return;
+  }
+
+  bool restricted = false;
+  policy::DlpRulesManager* dlp_rules_manager =
+      policy::DlpRulesManagerFactory::GetForPrimaryProfile();
+  if (dlp_rules_manager) {
+    policy::DlpRulesManager::Level level = dlp_rules_manager->IsRestricted(
+        GURL(request.source_url()),
+        policy::DlpRulesManager::Restriction::kFiles);
+    if (level == policy::DlpRulesManager::Level::kBlock)
+      restricted = true;
+  }
+
+  dlp::IsDlpPolicyMatchedResponse response_proto;
+  response_proto.set_restricted(restricted);
+  std::unique_ptr<dbus::Response> response =
+      dbus::Response::FromMethodCall(method_call);
+  dbus::MessageWriter writer(response.get());
+  writer.AppendProtoAsArrayOfBytes(response_proto);
+  std::move(response_sender).Run(std::move(response));
+}
+
+}  // namespace chromeos
diff --git a/chrome/browser/chromeos/dbus/dlp_files_policy_service_provider.h b/chrome/browser/chromeos/dbus/dlp_files_policy_service_provider.h
new file mode 100644
index 0000000..e13d5e3d
--- /dev/null
+++ b/chrome/browser/chromeos/dbus/dlp_files_policy_service_provider.h
@@ -0,0 +1,52 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_CHROMEOS_DBUS_DLP_FILES_POLICY_SERVICE_PROVIDER_H_
+#define CHROME_BROWSER_CHROMEOS_DBUS_DLP_FILES_POLICY_SERVICE_PROVIDER_H_
+
+#include <string>
+
+#include "base/memory/scoped_refptr.h"
+#include "base/memory/weak_ptr.h"
+#include "chromeos/dbus/services/cros_dbus_service.h"
+#include "dbus/exported_object.h"
+
+namespace dbus {
+class MethodCall;
+}  // namespace dbus
+
+namespace chromeos {
+
+class DlpFilesPolicyServiceProvider
+    : public CrosDBusService::ServiceProviderInterface {
+ public:
+  DlpFilesPolicyServiceProvider();
+  ~DlpFilesPolicyServiceProvider() override;
+  DlpFilesPolicyServiceProvider(const DlpFilesPolicyServiceProvider&) = delete;
+  DlpFilesPolicyServiceProvider& operator=(
+      const DlpFilesPolicyServiceProvider&) = delete;
+
+  // CrosDBusService::ServiceProviderInterface override:
+  void Start(scoped_refptr<dbus::ExportedObject> exported_object) override;
+
+ private:
+  // Callback called when method is exported or failed to be exported.
+  void OnExported(const std::string& interface_name,
+                  const std::string& method_name,
+                  bool success);
+
+  // org.chromium.DlpFilesPolicyService.IsRestricted implementation.
+  void IsRestricted(dbus::MethodCall* method_call,
+                    dbus::ExportedObject::ResponseSender response_sender);
+
+  // org.chromium.DlpFilesPolicyService.IsDlpPolicyMatched implementation.
+  void IsDlpPolicyMatched(dbus::MethodCall* method_call,
+                          dbus::ExportedObject::ResponseSender response_sender);
+
+  base::WeakPtrFactory<DlpFilesPolicyServiceProvider> weak_ptr_factory_{this};
+};
+
+}  // namespace chromeos
+
+#endif  // CHROME_BROWSER_CHROMEOS_DBUS_DLP_FILES_POLICY_SERVICE_PROVIDER_H_
diff --git a/chrome/browser/chromeos/dbus/org.chromium.DlpFilesPolicyService.conf b/chrome/browser/chromeos/dbus/org.chromium.DlpFilesPolicyService.conf
new file mode 100644
index 0000000..62b48da
--- /dev/null
+++ b/chrome/browser/chromeos/dbus/org.chromium.DlpFilesPolicyService.conf
@@ -0,0 +1,17 @@
+<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
+  "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
+<!--
+  Copyright 2021 The Chromium Authors. All rights reserved.
+  Use of this source code is governed by a BSD-style license that can be
+  found in the LICENSE file.
+-->
+<busconfig>
+  <policy user="chronos">
+    <allow own="org.chromium.DlpFilesPolicyService"/>
+  </policy>
+
+  <policy user="dlp">
+    <allow send_destination="org.chromium.DlpFilesPolicyService"
+           send_interface="org.chromium.DlpFilesPolicyService"/>
+  </policy>
+</busconfig>
diff --git a/chrome/browser/content_settings/content_settings_browsertest.cc b/chrome/browser/content_settings/content_settings_browsertest.cc
index a5973e7..b85606b1 100644
--- a/chrome/browser/content_settings/content_settings_browsertest.cc
+++ b/chrome/browser/content_settings/content_settings_browsertest.cc
@@ -24,6 +24,7 @@
 #include "chrome/common/chrome_paths.h"
 #include "chrome/common/chrome_switches.h"
 #include "chrome/test/base/in_process_browser_test.h"
+#include "chrome/test/base/interactive_test_utils.h"
 #include "chrome/test/base/test_launcher_utils.h"
 #include "chrome/test/base/ui_test_utils.h"
 #include "components/browsing_data/content/cookie_helper.h"
diff --git a/chrome/browser/extensions/BUILD.gn b/chrome/browser/extensions/BUILD.gn
index 370ea00..f0ff303 100644
--- a/chrome/browser/extensions/BUILD.gn
+++ b/chrome/browser/extensions/BUILD.gn
@@ -1007,7 +1007,11 @@
       deps += [ "//chromeos/lacros" ]
     } else {
       sources += [ "api/messaging/native_message_host_chromeos.cc" ]
-      deps += [ "//remoting/host" ]
+      deps += [
+        "//chrome/browser/ash/crosapi",
+        "//remoting/host",
+      ]
+      allow_circular_includes_from += [ "//chrome/browser/ash/crosapi" ]
     }
   } else {
     sources += [
diff --git a/chrome/browser/extensions/api/socket/udp_socket_unittest.cc b/chrome/browser/extensions/api/socket/udp_socket_unittest.cc
index 4fd93c7..1485e77 100644
--- a/chrome/browser/extensions/api/socket/udp_socket_unittest.cc
+++ b/chrome/browser/extensions/api/socket/udp_socket_unittest.cc
@@ -15,6 +15,7 @@
 #include "base/stl_util.h"
 #include "base/test/test_timeouts.h"
 #include "base/threading/thread_task_runner_handle.h"
+#include "build/build_config.h"
 #include "chrome/browser/extensions/extension_service_test_base.h"
 #include "chrome/test/base/browser_with_test_window_test.h"
 #include "content/public/browser/storage_partition.h"
@@ -170,7 +171,13 @@
   std::move(quit_run_loop).Run();
 }
 
-TEST_F(UDPSocketUnitTest, TestUDPMulticastRecv) {
+// TODO(https://crbug.com/1210643): Test is flaky on Mac.
+#if defined(OS_MAC)
+#define MAYBE_TestUDPMulticastRecv DISABLED_TestUDPMulticastRecv
+#else
+#define MAYBE_TestUDPMulticastRecv TestUDPMulticastRecv
+#endif
+TEST_F(UDPSocketUnitTest, MAYBE_TestUDPMulticastRecv) {
   const int kPort = 9999;
   const char kGroup[] = "237.132.100.17";
   bool packet_received = false;
diff --git a/chrome/browser/extensions/app_process_apitest.cc b/chrome/browser/extensions/app_process_apitest.cc
index 9faf2a7..296f5b99 100644
--- a/chrome/browser/extensions/app_process_apitest.cc
+++ b/chrome/browser/extensions/app_process_apitest.cc
@@ -16,6 +16,7 @@
 #include "chrome/browser/ui/browser_window.h"
 #include "chrome/browser/ui/tabs/tab_strip_model.h"
 #include "chrome/browser/ui/view_ids.h"
+#include "chrome/test/base/interactive_test_utils.h"
 #include "chrome/test/base/ui_test_utils.h"
 #include "components/blocked_content/popup_blocker_tab_helper.h"
 #include "components/embedder_support/switches.h"
diff --git a/chrome/browser/feed/android/java/res/layout/web_feed_main_menu_item.xml b/chrome/browser/feed/android/java/res/layout/web_feed_main_menu_item.xml
index c13d280..ba19faeb 100644
--- a/chrome/browser/feed/android/java/res/layout/web_feed_main_menu_item.xml
+++ b/chrome/browser/feed/android/java/res/layout/web_feed_main_menu_item.xml
@@ -6,7 +6,6 @@
 <org.chromium.chrome.browser.feed.webfeed.WebFeedMainMenuItem
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
     android:id="@+id/web_feed_menu_item"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
index 4446a6e4..f918b3c 100644
--- a/chrome/browser/flag-metadata.json
+++ b/chrome/browser/flag-metadata.json
@@ -3009,11 +3009,6 @@
     "expiry_milestone": 95
   },
   {
-    "name": "freeze-user-agent",
-    "owners": [ "yoavweiss", "aarontag" ],
-    "expiry_milestone": 99
-  },
-  {
     "name": "full-restore",
     "owners": [ "dominickn", "nancylingwang", "sammiequon", "xdai" ],
     "expiry_milestone": 95
@@ -3086,11 +3081,6 @@
     "expiry_milestone": 95
   },
   {
-    "name": "happiness-tracking-surveys-for-desktop",
-    "owners": [ "//chrome/browser/ui/hats/OWNERS" ],
-    "expiry_milestone": 84
-  },
-  {
     "name": "happiness-tracking-surveys-for-desktop-demo",
     "owners": [ "//chrome/browser/ui/hats/OWNERS" ],
     // A debugging and demo flag to allow UI/dev/testing team to always show the UI
@@ -3785,11 +3775,6 @@
     "expiry_milestone": 76
   },
   {
-    "name": "offline-pages-ct-suppress-completed-notification",
-    "owners": [ "sclittle", "srsudar", "offline-dev" ],
-    "expiry_milestone": 76
-  },
-  {
     "name": "offline-pages-ct-v2",
     "owners": [ "sclittle", "srsudar", "offline-dev" ],
     "expiry_milestone": 76
@@ -4457,6 +4442,11 @@
     "expiry_milestone": 95
   },
   {
+    "name": "reduce-user-agent",
+    "owners": [ "aarontag", "miketaylr"],
+    "expiry_milestone": 100
+  },
+  {
     "name": "reengagement-notification",
     "owners": [ "dtrainor", "xingliu" ],
     "expiry_milestone": 90
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
index 87ff542..ffb4432 100644
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -1196,12 +1196,6 @@
     "Enables fractional scroll offsets inside Blink, exposing non-integer "
     "offsets to web APIs.";
 
-const char kFreezeUserAgentName[] = "Freeze User-Agent request header";
-const char kFreezeUserAgentDescription[] =
-    "Set the User-Agent request header to a static string that conforms to the "
-    "current User-Agent string format but only reveals desktop vs Android and "
-    "if the 'mobile' flag is set";
-
 const char kForceEffectiveConnectionTypeName[] =
     "Override effective connection type";
 const char kForceEffectiveConnectionTypeDescription[] =
@@ -2086,6 +2080,12 @@
     "Enables recording additional web app related debugging data to be "
     "displayed in: chrome://internals/web-app";
 
+const char kReduceUserAgentName[] = "Reduce User-Agent request header";
+const char kReduceUserAgentDescription[] =
+    "Reduce (formerly, \"freeze\") the amount of information available in "
+    "the User-Agent request header. "
+    "See https://www.chromium.org/updates/ua-reduction for more info.";
+
 const char kRestrictGamepadAccessName[] = "Restrict gamepad access";
 const char kRestrictGamepadAccessDescription[] =
     "Enables Permissions Policy and Secure Context restrictions on the Gamepad "
@@ -3102,13 +3102,6 @@
     "V2 features include attributing pages to the app that initiated the "
     "custom tabs, and being able to query for pages by page attribution.";
 
-const char kOfflinePagesCTSuppressNotificationsName[] =
-    "Disable download complete notification for whitelisted CCT apps.";
-const char kOfflinePagesCTSuppressNotificationsDescription[] =
-    "Disable download complete notification for page downloads originating "
-    "from a CCT app whitelisted to show their own download complete "
-    "notification.";
-
 const char kOfflinePagesDescriptiveFailStatusName[] =
     "Enables descriptive failed download status text.";
 const char kOfflinePagesDescriptiveFailStatusDescription[] =
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
index 2a376cb0..5391ced2 100644
--- a/chrome/browser/flag_descriptions.h
+++ b/chrome/browser/flag_descriptions.h
@@ -695,9 +695,6 @@
 extern const char kFractionalScrollOffsetsName[];
 extern const char kFractionalScrollOffsetsDescription[];
 
-extern const char kFreezeUserAgentName[];
-extern const char kFreezeUserAgentDescription[];
-
 extern const char kForceEffectiveConnectionTypeName[];
 extern const char kForceEffectiveConnectionTypeDescription[];
 extern const char kEffectiveConnectionTypeUnknownDescription[];
@@ -1204,6 +1201,9 @@
 extern const char kRecordWebAppDebugInfoName[];
 extern const char kRecordWebAppDebugInfoDescription[];
 
+extern const char kReduceUserAgentName[];
+extern const char kReduceUserAgentDescription[];
+
 extern const char kRestrictGamepadAccessName[];
 extern const char kRestrictGamepadAccessDescription[];
 
@@ -1801,9 +1801,6 @@
 extern const char kOfflinePagesCtV2Name[];
 extern const char kOfflinePagesCtV2Description[];
 
-extern const char kOfflinePagesCTSuppressNotificationsName[];
-extern const char kOfflinePagesCTSuppressNotificationsDescription[];
-
 extern const char kOfflinePagesDescriptiveFailStatusName[];
 extern const char kOfflinePagesDescriptiveFailStatusDescription[];
 
diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc
index d4e9ff0..b18918e 100644
--- a/chrome/browser/flags/android/chrome_feature_list.cc
+++ b/chrome/browser/flags/android/chrome_feature_list.cc
@@ -54,7 +54,6 @@
 #include "content/public/common/content_features.h"
 #include "device/fido/features.h"
 #include "media/base/media_switches.h"
-#include "net/base/features.h"
 #include "services/device/public/cpp/device_features.h"
 #include "ui/base/ui_base_features.h"
 
@@ -269,8 +268,6 @@
     &kPrefetchNotificationSchedulingIntegration,
     &kWebNotesStylize,
     &features::kDnsOverHttps,
-    &net::features::kSameSiteByDefaultCookies,
-    &net::features::kCookiesWithoutSameSiteMustBeSecure,
     &notifications::features::kUseChimeAndroidSdk,
     &paint_preview::kPaintPreviewDemo,
     &paint_preview::kPaintPreviewShowOnStartup,
@@ -297,6 +294,7 @@
     &password_manager::features::kEditPasswordsInSettings,
     &password_manager::features::kPasswordScriptsFetching,
     &password_manager::features::kRecoverFromNeverSaveAndroid,
+    &password_manager::features::kUseNewHeaderForLegacySavePasswordBubble,
     &performance_hints::features::kContextMenuPerformanceInfo,
     &query_tiles::features::kQueryTilesGeoFilter,
     &query_tiles::features::kQueryTiles,
diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
index 4e3836e..d82b81ce 100644
--- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
+++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
@@ -314,8 +314,6 @@
     public static final String CONTEXTUAL_SEARCH_TRANSLATIONS = "ContextualSearchTranslations";
     public static final String CONTINUOUS_FEEDS = "ContinuousFeeds";
     public static final String CONTINUOUS_SEARCH = "ContinuousSearch";
-    public static final String COOKIES_WITHOUT_SAME_SITE_MUST_BE_SECURE =
-            "CookiesWithoutSameSiteMustBeSecure";
     public static final String CRITICAL_PERSISTED_TAB_DATA = "CriticalPersistedTabData";
     public static final String DARKEN_WEBSITES_CHECKBOX_IN_THEMES_SETTING =
             "DarkenWebsitesCheckboxInThemesSetting";
@@ -440,7 +438,6 @@
     public static final String RELATED_SEARCHES_UI = "RelatedSearchesUi";
     public static final String REQUEST_DESKTOP_SITE_FOR_TABLETS = "RequestDesktopSiteForTablets";
     public static final String SAFE_BROWSING_DELAYED_WARNINGS = "SafeBrowsingDelayedWarnings";
-    public static final String SAME_SITE_BY_DEFAULT_COOKIES = "SameSiteByDefaultCookies";
     public static final String SEARCH_ENGINE_PROMO_EXISTING_DEVICE =
             "SearchEnginePromo.ExistingDevice";
     public static final String SEARCH_ENGINE_PROMO_NEW_DEVICE = "SearchEnginePromo.NewDevice";
@@ -501,6 +498,8 @@
             "UpdateHistoryEntryPointsInIncognito";
     public static final String USE_CHIME_ANDROID_SDK = "UseChimeAndroidSdk";
     public static final String USE_NOTIFICATION_COMPAT_BUILDER = "UseNotificationCompatBuilder";
+    public static final String USE_NEW_HEADER_FOR_LEGACY_SAVE_PASSWORD_BUBBLE =
+            "UseNewHeaderForLegacySavePasswordBubble";
     public static final String VOICE_SEARCH_AUDIO_CAPTURE_POLICY = "VoiceSearchAudioCapturePolicy";
     public static final String VOICE_BUTTON_IN_TOP_TOOLBAR = "VoiceButtonInTopToolbar";
     public static final String VR_BROWSING_FEEDBACK = "VrBrowsingFeedback";
diff --git a/chrome/browser/notifications/arc_application_notifier_controller.cc b/chrome/browser/notifications/arc_application_notifier_controller.cc
index 8519bdc..6273868 100644
--- a/chrome/browser/notifications/arc_application_notifier_controller.cc
+++ b/chrome/browser/notifications/arc_application_notifier_controller.cc
@@ -9,9 +9,14 @@
 #include "ash/public/cpp/notifier_metadata.h"
 #include "base/bind.h"
 #include "base/strings/utf_string_conversions.h"
+#include "chrome/browser/apps/app_service/app_service_proxy_chromeos.h"
+#include "chrome/browser/apps/app_service/app_service_proxy_factory.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/app_list/arc/arc_app_list_prefs_factory.h"
+#include "chrome/browser/ui/webui/app_management/app_management.mojom.h"
+#include "chrome/common/chrome_features.h"
 #include "components/keyed_service/content/browser_context_keyed_service_shutdown_notifier_factory.h"
+#include "components/services/app_service/public/cpp/app_update.h"
 #include "ui/base/layout.h"
 #include "ui/display/display.h"
 #include "ui/display/screen.h"
@@ -20,91 +25,78 @@
 namespace arc {
 
 namespace {
+
 constexpr int kArcAppIconSizeInDp = 48;
 
-class ArcAppNotifierShutdownNotifierFactory
-    : public BrowserContextKeyedServiceShutdownNotifierFactory {
- public:
-  ArcAppNotifierShutdownNotifierFactory(
-      const ArcAppNotifierShutdownNotifierFactory&) = delete;
-  ArcAppNotifierShutdownNotifierFactory& operator=(
-      const ArcAppNotifierShutdownNotifierFactory&) = delete;
-  static ArcAppNotifierShutdownNotifierFactory* GetInstance() {
-    return base::Singleton<ArcAppNotifierShutdownNotifierFactory>::get();
-  }
-
- private:
-  friend struct base::DefaultSingletonTraits<
-      ArcAppNotifierShutdownNotifierFactory>;
-
-  ArcAppNotifierShutdownNotifierFactory()
-      : BrowserContextKeyedServiceShutdownNotifierFactory("ArcAppNotifier") {
-    DependsOn(ArcAppListPrefsFactory::GetInstance());
-  }
-
-  ~ArcAppNotifierShutdownNotifierFactory() override {}
+struct NotifierDataset {
+  std::string app_id;
+  std::string app_name;
+  std::string package_name;
+  bool enabled;
+  bool is_system_app;
 };
 
 }  // namespace
 
 ArcApplicationNotifierController::ArcApplicationNotifierController(
     NotifierController::Observer* observer)
-    : observer_(observer), last_profile_(nullptr) {}
+    : observer_(observer) {}
 
-ArcApplicationNotifierController::~ArcApplicationNotifierController() {
-  StopObserving();
-}
+ArcApplicationNotifierController::~ArcApplicationNotifierController() = default;
 
 std::vector<ash::NotifierMetadata>
 ArcApplicationNotifierController::GetNotifierList(Profile* profile) {
+  DCHECK(
+      apps::AppServiceProxyFactory::IsAppServiceAvailableForProfile(profile));
+
   // In Guest mode, it can be called but there's no ARC apps to return.
   if (profile->IsOffTheRecord())
     return std::vector<ash::NotifierMetadata>();
 
+  last_used_profile_ = profile;
+  apps::AppServiceProxy* service =
+      apps::AppServiceProxyFactory::GetForProfile(profile);
+  Observe(&(service->AppRegistryCache()));
+
   package_to_app_ids_.clear();
-  icons_.clear();
-  StopObserving();
+  std::vector<NotifierDataset> notifier_dataset;
 
-  ArcAppListPrefs* const app_list = ArcAppListPrefs::Get(profile);
+  service->AppRegistryCache().ForEachApp([&notifier_dataset](
+                                             const apps::AppUpdate& update) {
+    if (update.AppType() != apps::mojom::AppType::kArc)
+      return;
+    for (const auto& permission : update.Permissions()) {
+      if (static_cast<app_management::mojom::ArcPermissionType>(
+              permission->permission_id) !=
+          app_management::mojom::ArcPermissionType::NOTIFICATIONS) {
+        continue;
+      }
+      DCHECK(permission->value_type == apps::mojom::PermissionValueType::kBool);
+      notifier_dataset.push_back(
+          {update.AppId() /*app_id*/, update.Name() /*app_name*/,
+           update.PublisherId() /*package name*/, permission->value /*enabled*/,
+           update.InstallSource() ==
+               apps::mojom::InstallSource::kSystem /*is_system_app*/});
+    }
+  });
+
   std::vector<ash::NotifierMetadata> notifiers;
-  // The app list can be null in unit tests.
-  if (!app_list)
-    return notifiers;
-  const std::vector<std::string>& app_ids = app_list->GetAppIds();
-
-  last_profile_ = profile;
-  StartObserving();
-
-  for (const std::string& app_id : app_ids) {
-    const auto app = app_list->GetApp(app_id);
-    // Handle packages having multiple launcher activities.
-    if (!app || package_to_app_ids_.count(app->package_name))
+  for (auto& app_data : notifier_dataset) {
+    // Handle packages having multiple launcher activities. Do not include
+    // notifier metadata for system apps.
+    if (package_to_app_ids_.count(app_data.package_name) ||
+        app_data.is_system_app)
       continue;
 
-    const auto package = app_list->GetPackage(app->package_name);
-    if (!package || package->system)
-      continue;
-
-    // Load icons for notifier.
-    std::unique_ptr<ArcAppIcon> icon =
-        std::make_unique<ArcAppIcon>(profile, app_id,
-                       // ARC icon is available only for 48x48 dips.
-                       kArcAppIconSizeInDp,
-                       // The life time of icon must shorter than |this|.
-                       this);
-    // Apply icon now to set the default image.
-    OnIconUpdated(icon.get());
-
-    // Add notifiers.
-    package_to_app_ids_.insert(std::make_pair(app->package_name, app_id));
     message_center::NotifierId notifier_id(
-        message_center::NotifierType::ARC_APPLICATION, app_id);
-    notifiers.emplace_back(notifier_id, base::UTF8ToUTF16(app->name),
-                           app->notifications_enabled, false /* enforced */,
-                           icon->image_skia());
-    icons_.push_back(std::move(icon));
+        message_center::NotifierType::ARC_APPLICATION, app_data.app_id);
+    notifiers.emplace_back(notifier_id, base::UTF8ToUTF16(app_data.app_name),
+                           app_data.enabled, false /* enforced */,
+                           gfx::ImageSkia());
+    package_to_app_ids_.insert(
+        std::make_pair(app_data.package_name, app_data.app_id));
+    CallLoadIcon(/*allow_placeholder_icon*/ true, app_data.app_id);
   }
-
   return notifiers;
 }
 
@@ -112,46 +104,86 @@
     Profile* profile,
     const message_center::NotifierId& notifier_id,
     bool enabled) {
-  ArcAppListPrefs::Get(profile)->SetNotificationsEnabled(notifier_id.id,
-                                                         enabled);
-  // OnNotifierEnabledChanged will be invoked via ArcAppListPrefs::Observer.
+  DCHECK(
+      apps::AppServiceProxyFactory::IsAppServiceAvailableForProfile(profile));
+
+  last_used_profile_ = profile;
+  auto permission = apps::mojom::Permission::New();
+  permission->permission_id =
+      static_cast<int>(app_management::mojom::ArcPermissionType::NOTIFICATIONS);
+  permission->value_type = apps::mojom::PermissionValueType::kBool;
+  permission->value = enabled;
+  permission->is_managed = false;
+  apps::AppServiceProxy* service =
+      apps::AppServiceProxyFactory::GetForProfile(profile);
+  service->SetPermission(notifier_id.id, std::move(permission));
 }
 
-void ArcApplicationNotifierController::OnIconUpdated(ArcAppIcon* icon) {
+void ArcApplicationNotifierController::CallLoadIcon(bool allow_placeholder_icon,
+                                                    std::string app_id) {
+  DCHECK(apps::AppServiceProxyFactory::IsAppServiceAvailableForProfile(
+      last_used_profile_));
+
+  auto icon_type =
+      (base::FeatureList::IsEnabled(features::kAppServiceAdaptiveIcon))
+          ? apps::mojom::IconType::kStandard
+          : apps::mojom::IconType::kUncompressed;
+
+  apps::AppServiceProxyFactory::GetForProfile(last_used_profile_)
+      ->LoadIcon(apps::mojom::AppType::kArc, app_id, icon_type,
+                 kArcAppIconSizeInDp, allow_placeholder_icon,
+                 base::BindOnce(&ArcApplicationNotifierController::OnLoadIcon,
+                                weak_ptr_factory_.GetWeakPtr(), app_id));
+}
+
+void ArcApplicationNotifierController::OnLoadIcon(
+    std::string app_id,
+    apps::mojom::IconValuePtr icon_value) {
+  auto icon_type =
+      (base::FeatureList::IsEnabled(features::kAppServiceAdaptiveIcon))
+          ? apps::mojom::IconType::kStandard
+          : apps::mojom::IconType::kUncompressed;
+  if (icon_value->icon_type != icon_type)
+    return;
+
+  SetIcon(app_id, icon_value->uncompressed);
+  if (icon_value->is_placeholder_icon)
+    CallLoadIcon(/*allow_placeholder_icon*/ false, app_id);
+}
+
+void ArcApplicationNotifierController::SetIcon(std::string app_id,
+                                               gfx::ImageSkia image) {
   observer_->OnIconImageUpdated(
       message_center::NotifierId(message_center::NotifierType::ARC_APPLICATION,
-                                 icon->app_id()),
-      icon->image_skia());
+                                 app_id),
+      image);
 }
 
-void ArcApplicationNotifierController::OnNotificationsEnabledChanged(
-    const std::string& package_name,
-    bool enabled) {
-  auto it = package_to_app_ids_.find(package_name);
-  if (it == package_to_app_ids_.end())
+void ArcApplicationNotifierController::OnAppUpdate(
+    const apps::AppUpdate& update) {
+  if (!base::Contains(package_to_app_ids_, update.PublisherId()))
     return;
-  observer_->OnNotifierEnabledChanged(
-      message_center::NotifierId(message_center::NotifierType::ARC_APPLICATION,
-                                 it->second),
-      enabled);
+
+  if (update.PermissionsChanged()) {
+    for (const auto& permission : update.Permissions()) {
+      if (static_cast<app_management::mojom::ArcPermissionType>(
+              permission->permission_id) ==
+          app_management::mojom::ArcPermissionType::NOTIFICATIONS) {
+        message_center::NotifierId notifier_id(
+            message_center::NotifierType::ARC_APPLICATION, update.AppId());
+        observer_->OnNotifierEnabledChanged(notifier_id, permission->value);
+      }
+    }
+  }
+
+  if (update.IconKeyChanged()) {
+    CallLoadIcon(/*allow_placeholder_icon*/ true, update.AppId());
+  }
 }
 
-void ArcApplicationNotifierController::StartObserving() {
-  ArcAppListPrefs::Get(last_profile_)->AddObserver(this);
-  shutdown_subscription_ =
-      ArcAppNotifierShutdownNotifierFactory::GetInstance()
-          ->Get(last_profile_)
-          ->Subscribe(base::BindRepeating(
-              &ArcApplicationNotifierController::StopObserving,
-              base::Unretained(this)));
-}
-
-void ArcApplicationNotifierController::StopObserving() {
-  if (!last_profile_)
-    return;
-  shutdown_subscription_ = {};
-  ArcAppListPrefs::Get(last_profile_)->RemoveObserver(this);
-  last_profile_ = nullptr;
+void ArcApplicationNotifierController::OnAppRegistryCacheWillBeDestroyed(
+    apps::AppRegistryCache* cache) {
+  Observe(nullptr);
 }
 
 }  // namespace arc
diff --git a/chrome/browser/notifications/arc_application_notifier_controller.h b/chrome/browser/notifications/arc_application_notifier_controller.h
index 94e7220..e6cb284 100644
--- a/chrome/browser/notifications/arc_application_notifier_controller.h
+++ b/chrome/browser/notifications/arc_application_notifier_controller.h
@@ -8,21 +8,21 @@
 #include <map>
 #include <memory>
 #include <string>
-#include <vector>
 
+#include "base/memory/weak_ptr.h"
 #include "chrome/browser/notifications/notifier_controller.h"
 #include "chrome/browser/ui/app_list/arc/arc_app_icon.h"
-#include "chrome/browser/ui/app_list/arc/arc_app_list_prefs.h"
-#include "components/keyed_service/core/keyed_service_shutdown_notifier.h"
+#include "components/services/app_service/public/cpp/app_registry_cache.h"
 
+class AppUpdate;
 class Profile;
 
 namespace arc {
 
 // TODO(hirono): Observe enabled flag change and notify it to message center.
-class ArcApplicationNotifierController : public NotifierController,
-                                         public ArcAppIcon::Observer,
-                                         public ArcAppListPrefs::Observer {
+class ArcApplicationNotifierController
+    : public NotifierController,
+      public apps::AppRegistryCache::Observer {
  public:
   explicit ArcApplicationNotifierController(
       NotifierController::Observer* observer);
@@ -33,28 +33,26 @@
       const ArcApplicationNotifierController&) = delete;
   ~ArcApplicationNotifierController() override;
 
-  // TODO(hirono): Rewrite the function with new API to fetch package list.
   std::vector<ash::NotifierMetadata> GetNotifierList(Profile* profile) override;
   void SetNotifierEnabled(Profile* profile,
                           const message_center::NotifierId& notifier_id,
                           bool enabled) override;
 
  private:
-  // Overridden from ArcAppIcon::Observer.
-  void OnIconUpdated(ArcAppIcon* icon) override;
+  void SetIcon(std::string app_id, gfx::ImageSkia image);
+  void CallLoadIcon(bool allow_placeholder_icon, std::string app_id);
+  void OnLoadIcon(std::string app_id, apps::mojom::IconValuePtr icon_value);
 
-  // Overriden from ArcAppListPrefs::Observer.
-  void OnNotificationsEnabledChanged(const std::string& package_name,
-                                     bool enabled) override;
+  // apps::AppRegistryCache::Observer:
+  void OnAppUpdate(const apps::AppUpdate& update) override;
+  void OnAppRegistryCacheWillBeDestroyed(
+      apps::AppRegistryCache* cache) override;
 
-  void StartObserving();
-  void StopObserving();
-
+  Profile* last_used_profile_ = nullptr;
   NotifierController::Observer* observer_;
-  std::vector<std::unique_ptr<ArcAppIcon>> icons_;
   std::map<std::string, std::string> package_to_app_ids_;
-  Profile* last_profile_;
-  base::CallbackListSubscription shutdown_subscription_;
+  base::WeakPtrFactory<ArcApplicationNotifierController> weak_ptr_factory_{
+      this};
 };
 
 }  // namespace arc
diff --git a/chrome/browser/ntp_tiles/chrome_most_visited_sites_factory.cc b/chrome/browser/ntp_tiles/chrome_most_visited_sites_factory.cc
index 7cd7d027..5198b699 100644
--- a/chrome/browser/ntp_tiles/chrome_most_visited_sites_factory.cc
+++ b/chrome/browser/ntp_tiles/chrome_most_visited_sites_factory.cc
@@ -18,7 +18,6 @@
 #include "chrome/browser/ntp_tiles/chrome_custom_links_manager_factory.h"
 #include "chrome/browser/ntp_tiles/chrome_popular_sites_factory.h"
 #include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/search/repeatable_queries/repeatable_queries_service_factory.h"
 #include "chrome/browser/search/suggestions/suggestions_service_factory.h"
 #include "chrome/common/buildflags.h"
 #include "components/history/core/browser/top_sites.h"
@@ -120,11 +119,6 @@
 
   auto most_visited_sites = std::make_unique<ntp_tiles::MostVisitedSites>(
       profile->GetPrefs(), TopSitesFactory::GetForProfile(profile),
-#if defined(OS_ANDROID)
-      nullptr,
-#else
-      RepeatableQueriesServiceFactory::GetForProfile(profile),
-#endif
       SuggestionsServiceFactory::GetForProfile(profile),
 #if defined(OS_ANDROID)
       ChromePopularSitesFactory::NewForProfile(profile),
diff --git a/chrome/browser/offline_pages/android/downloads/offline_page_download_bridge.cc b/chrome/browser/offline_pages/android/downloads/offline_page_download_bridge.cc
index e6ce0b8..3810b2a 100644
--- a/chrome/browser/offline_pages/android/downloads/offline_page_download_bridge.cc
+++ b/chrome/browser/offline_pages/android/downloads/offline_page_download_bridge.cc
@@ -98,8 +98,6 @@
       const OfflineItem& item,
       int64_t offline_id,
       const offline_items_collection::OpenParams& open_params) override;
-  bool MaybeSuppressNotification(const std::string& origin,
-                                 const ClientId& id) override;
   void GetShareInfoForItem(const ContentId& id,
                            ShareCallback share_callback) override;
 
@@ -131,18 +129,6 @@
       offline_pages::ShouldOfflinePagesInDownloadHomeOpenInCct());
 }
 
-bool DownloadUIAdapterDelegate::MaybeSuppressNotification(
-    const std::string& origin,
-    const ClientId& id) {
-  // Do not suppress notification if chrome.
-  if (origin == "" || !IsOfflinePagesSuppressNotificationsEnabled())
-    return false;
-  JNIEnv* env = AttachCurrentThread();
-  return Java_OfflinePageDownloadBridge_maybeSuppressNotification(
-      env, ConvertUTF8ToJavaString(env, origin),
-      ConvertUTF8ToJavaString(env, id.id));
-}
-
 void DownloadUIAdapterDelegate::GetShareInfoForItem(
     const ContentId& id,
     ShareCallback share_callback) {
diff --git a/chrome/browser/page_load_metrics/observers/prefetch_proxy_page_load_metrics_observer_unittest.cc b/chrome/browser/page_load_metrics/observers/prefetch_proxy_page_load_metrics_observer_unittest.cc
index ce993607..1b7689c 100644
--- a/chrome/browser/page_load_metrics/observers/prefetch_proxy_page_load_metrics_observer_unittest.cc
+++ b/chrome/browser/page_load_metrics/observers/prefetch_proxy_page_load_metrics_observer_unittest.cc
@@ -19,12 +19,6 @@
 
 namespace {
 
-// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
-// function.
-GURL TestUrl() {
-  return GURL("https://chromium.org");
-}
-
 page_load_metrics::mojom::ResourceDataUpdatePtr CreateBaseResource(
     bool was_cached,
     bool is_complete) {
@@ -151,7 +145,7 @@
   TestPrefetchProxyPageLoadMetricsObserver* plm_observer_ = nullptr;
   page_load_metrics::mojom::PageLoadTiming timing_;
 
-  GURL navigation_url_ = TestUrl();
+  GURL navigation_url_{"https://chromium.org"};
   bool in_main_frame_ = true;
 
   DISALLOW_COPY_AND_ASSIGN(PrefetchProxyPageLoadMetricsObserverTest);
diff --git a/chrome/browser/picture_in_picture/picture_in_picture_window_controller_browsertest.cc b/chrome/browser/picture_in_picture/picture_in_picture_window_controller_browsertest.cc
index 5ea707362..ee4c8bdb 100644
--- a/chrome/browser/picture_in_picture/picture_in_picture_window_controller_browsertest.cc
+++ b/chrome/browser/picture_in_picture/picture_in_picture_window_controller_browsertest.cc
@@ -2178,12 +2178,6 @@
   ASSERT_TRUE(content::ExecuteScript(active_web_contents, "video.play();"));
   ASSERT_TRUE(content::ExecuteScript(active_web_contents,
                                      "video.autoPictureInPicture = true;"));
-  ASSERT_TRUE(content::ExecuteScript(active_web_contents,
-                                     "addVisibilityChangeEventListener();"));
-
-  // Hide page.
-  active_web_contents->WasHidden();
-  WaitForTitle(active_web_contents, u"hidden");
 
   // Enter Picture-in-Picture manually.
   bool result = false;
@@ -2191,9 +2185,12 @@
       active_web_contents, "enterPictureInPicture();", &result));
   EXPECT_TRUE(result);
 
+  active_web_contents->WasHidden();
+
   // Show page and check that video left Picture-in-Picture automatically.
   active_web_contents->WasShown();
-  WaitForTitle(active_web_contents, u"visible");
+  WaitForTitle(active_web_contents, u"leavepictureinpicture");
+
   bool in_picture_in_picture = false;
   ASSERT_TRUE(ExecuteScriptAndExtractBool(
       active_web_contents, "isInPictureInPicture();", &in_picture_in_picture));
@@ -2264,9 +2261,9 @@
   DISALLOW_COPY_AND_ASSIGN(WebAppPictureInPictureWindowControllerBrowserTest);
 };
 
-// Show/hide pwa page and check that Auto Picture-in-Picture is triggered.
+// Hide pwa page and check that Picture-in-Picture is entered automatically.
 IN_PROC_BROWSER_TEST_F(WebAppPictureInPictureWindowControllerBrowserTest,
-                       AutoPictureInPicture) {
+                       AutoEnterPictureInPicture) {
   InstallAndLaunchPWA(main_url());
   bool result = false;
   ASSERT_TRUE(content::ExecuteScriptAndExtractBool(web_contents(),
@@ -2278,6 +2275,24 @@
   // Hide page and check that video entered Picture-in-Picture automatically.
   web_contents()->WasHidden();
   WaitForTitle(web_contents(), u"video.enterpictureinpicture");
+}
+
+// Show pwa page and check that Auto Picture-in-Picture is exited automatically.
+IN_PROC_BROWSER_TEST_F(WebAppPictureInPictureWindowControllerBrowserTest,
+                       AutoExitPictureInPicture) {
+  InstallAndLaunchPWA(main_url());
+  bool result = false;
+  ASSERT_TRUE(content::ExecuteScriptAndExtractBool(web_contents(),
+                                                   "playVideo();", &result));
+  ASSERT_TRUE(result);
+  ASSERT_TRUE(content::ExecuteScript(web_contents(),
+                                     "video.autoPictureInPicture = true;"));
+  result = false;
+  ASSERT_TRUE(content::ExecuteScriptAndExtractBool(
+      web_contents(), "enterPictureInPicture();", &result));
+  ASSERT_TRUE(result);
+
+  web_contents()->WasHidden();
 
   // Show page and check that video left Picture-in-Picture automatically.
   web_contents()->WasShown();
@@ -2404,88 +2419,139 @@
 }
 
 // Check that Auto Picture-in-Picture applies only to the video element whose
-// autoPictureInPicture attribute was set most recently
+// autoPictureInPicture attribute was set most recently.
 IN_PROC_BROWSER_TEST_F(WebAppPictureInPictureWindowControllerBrowserTest,
-                       AutoPictureInPictureAttributeApplies) {
+                       AutoPictureInPictureAttributeAppliesToLastElement) {
   InstallAndLaunchPWA(main_url());
+  ASSERT_TRUE(
+      content::ExecuteScript(web_contents(),
+                             "video.autoPictureInPicture = true;"
+                             "secondVideo.autoPictureInPicture = true;"));
   bool result = false;
   ASSERT_TRUE(content::ExecuteScriptAndExtractBool(web_contents(),
                                                    "playVideo();", &result));
   ASSERT_TRUE(result);
-  ASSERT_TRUE(content::ExecuteScript(web_contents(),
-                                     "video.autoPictureInPicture = true;"));
+  result = false;
   ASSERT_TRUE(content::ExecuteScriptAndExtractBool(
       web_contents(), "playSecondVideo();", &result));
   ASSERT_TRUE(result);
-  ASSERT_TRUE(content::ExecuteScript(
-      web_contents(), "secondVideo.autoPictureInPicture = true;"));
 
   // Hide page and check that second video is the video that enters
   // Picture-in-Picture automatically.
   web_contents()->WasHidden();
   WaitForTitle(web_contents(), u"secondVideo.enterpictureinpicture");
+}
 
-  // Show page and unset Auto Picture-in-Picture attribute on second video.
-  web_contents()->WasShown();
-  WaitForTitle(web_contents(), u"visible");
-  ASSERT_TRUE(content::ExecuteScript(
-      web_contents(), "secondVideo.autoPictureInPicture = false;"));
-
-  // Hide page and check that first video is the video that enters
-  // Picture-in-Picture automatically.
-  web_contents()->WasHidden();
-  WaitForTitle(web_contents(), u"video.enterpictureinpicture");
-
-  // Show page and unset Auto Picture-in-Picture attribute on first video.
-  web_contents()->WasShown();
-  WaitForTitle(web_contents(), u"visible");
+IN_PROC_BROWSER_TEST_F(WebAppPictureInPictureWindowControllerBrowserTest,
+                       AutoPictureInPictureAttributeAppliesToInsertedElement) {
+  InstallAndLaunchPWA(main_url());
   ASSERT_TRUE(content::ExecuteScript(web_contents(),
-                                     "video.autoPictureInPicture = false;"));
-
-  // Hide page and check that there is no video that enters Picture-in-Picture
-  // automatically.
-  web_contents()->WasHidden();
-  WaitForTitle(web_contents(), u"hidden");
-
-  // Show page and append a video with Auto Picture-in-Picture attribute.
-  web_contents()->WasShown();
-  WaitForTitle(web_contents(), u"visible");
+                                     "video.autoPictureInPicture = true;"));
+  bool result = false;
+  ASSERT_TRUE(content::ExecuteScriptAndExtractBool(web_contents(),
+                                                   "playVideo();", &result));
+  ASSERT_TRUE(result);
+  result = false;
   ASSERT_TRUE(content::ExecuteScriptAndExtractBool(
       web_contents(), "addHtmlVideoWithAutoPictureInPicture();", &result));
   ASSERT_TRUE(result);
 
-  // Hide page and check that the html video is the video that enters
+  // Hide the page and check that the inserted video is the video that enters
   // Picture-in-Picture automatically.
   web_contents()->WasHidden();
   WaitForTitle(web_contents(), u"htmlVideo.enterpictureinpicture");
 }
 
-// Check that video does not leave Picture-in-Picture automatically when it
+IN_PROC_BROWSER_TEST_F(WebAppPictureInPictureWindowControllerBrowserTest,
+                       AutoPictureInPictureCanBeUnset) {
+  InstallAndLaunchPWA(main_url());
+  ASSERT_TRUE(content::ExecuteScript(web_contents(),
+                                     "video.autoPictureInPicture = true;"));
+  bool result = false;
+  ASSERT_TRUE(content::ExecuteScriptAndExtractBool(web_contents(),
+                                                   "playVideo();", &result));
+  ASSERT_TRUE(result);
+
+  // Unset autoPictureInPicture and check that the video doesn't enter
+  // Picture-in-Picture automatically.
+  ASSERT_TRUE(content::ExecuteScript(web_contents(),
+                                     "video.autoPictureInPicture = false;"));
+
+  bool in_picture_in_picture;
+  ASSERT_TRUE(ExecuteScriptAndExtractBool(
+      web_contents(), "isInPictureInPicture();", &in_picture_in_picture));
+  EXPECT_FALSE(in_picture_in_picture);
+
+  web_contents()->WasHidden();
+  WaitForTitle(web_contents(), u"hidden");
+
+  ASSERT_TRUE(ExecuteScriptAndExtractBool(
+      web_contents(), "isInPictureInPicture();", &in_picture_in_picture));
+  EXPECT_FALSE(in_picture_in_picture);
+}
+
+IN_PROC_BROWSER_TEST_F(WebAppPictureInPictureWindowControllerBrowserTest,
+                       AutoPictureInPictureAppliesAfterUnsetOnAnotherVideo) {
+  InstallAndLaunchPWA(main_url());
+  ASSERT_TRUE(
+      content::ExecuteScript(web_contents(),
+                             "video.autoPictureInPicture = true;"
+                             "secondVideo.autoPictureInPicture = true;"));
+  bool result = false;
+  ASSERT_TRUE(content::ExecuteScriptAndExtractBool(web_contents(),
+                                                   "playVideo();", &result));
+  ASSERT_TRUE(result);
+  result = false;
+  ASSERT_TRUE(content::ExecuteScriptAndExtractBool(
+      web_contents(), "playSecondVideo();", &result));
+  ASSERT_TRUE(result);
+
+  // Unset autoPictureInPicture on the element where it was set last, and check
+  // that the first video enters Picture-in-Picture automatically.
+  ASSERT_TRUE(content::ExecuteScript(
+      web_contents(), "secondVideo.autoPictureInPicture = false;"));
+
+  bool in_picture_in_picture;
+  ASSERT_TRUE(ExecuteScriptAndExtractBool(
+      web_contents(), "isInPictureInPicture();", &in_picture_in_picture));
+  EXPECT_FALSE(in_picture_in_picture);
+
+  web_contents()->WasHidden();
+  WaitForTitle(web_contents(), u"video.enterpictureinpicture");
+
+  ASSERT_TRUE(ExecuteScriptAndExtractBool(
+      web_contents(), "isInPictureInPicture();", &in_picture_in_picture));
+  EXPECT_TRUE(in_picture_in_picture);
+}
+
+// Check that video does not leave Picture-in-Picture automatically when it is
 // not the most recent element with the Auto Picture-in-Picture attribute set.
 IN_PROC_BROWSER_TEST_F(
     WebAppPictureInPictureWindowControllerBrowserTest,
     AutoPictureInPictureNotTriggeredOnPageShownIfNotEnteredAutoPictureInPicture) {
   InstallAndLaunchPWA(main_url());
+  ASSERT_TRUE(
+      content::ExecuteScript(web_contents(),
+                             "video.autoPictureInPicture = true;"
+                             "secondVideo.autoPictureInPicture = true;"));
   bool result = false;
   ASSERT_TRUE(content::ExecuteScriptAndExtractBool(web_contents(),
                                                    "playVideo();", &result));
   ASSERT_TRUE(result);
-  ASSERT_TRUE(content::ExecuteScript(web_contents(),
-                                     "video.autoPictureInPicture = true;"));
-
-  // Hide page and check that video entered Picture-in-Picture automatically.
-  web_contents()->WasHidden();
-  WaitForTitle(web_contents(), u"video.enterpictureinpicture");
-
+  result = false;
   ASSERT_TRUE(content::ExecuteScriptAndExtractBool(
       web_contents(), "playSecondVideo();", &result));
   ASSERT_TRUE(result);
-  ASSERT_TRUE(content::ExecuteScript(
-      web_contents(), "secondVideo.autoPictureInPicture = true;"));
+  result = false;
+  ASSERT_TRUE(content::ExecuteScriptAndExtractBool(
+      web_contents(), "enterPictureInPicture();", &result));
+  ASSERT_TRUE(result);
+
+  web_contents()->WasHidden();
 
   // Show page and check that video did not leave Picture-in-Picture
   // automatically as it's not the most recent element with the Auto
-  // Picture-in-Picture attribute set anymore.
+  // Picture-in-Picture attribute set.
   web_contents()->WasShown();
   WaitForTitle(web_contents(), u"visible");
 
diff --git a/chrome/browser/policy/messaging_layer/OWNERS b/chrome/browser/policy/messaging_layer/OWNERS
index 27204888..d3dffb3 100644
--- a/chrome/browser/policy/messaging_layer/OWNERS
+++ b/chrome/browser/policy/messaging_layer/OWNERS
@@ -1,2 +1 @@
-zatrudo@google.com
-lbaraz@google.com
+file://components/reporting/OWNERS
\ No newline at end of file
diff --git a/chrome/browser/policy/test/unified_desktop_enabled_browsertest.cc b/chrome/browser/policy/test/unified_desktop_enabled_browsertest.cc
index acfd254..f208001 100644
--- a/chrome/browser/policy/test/unified_desktop_enabled_browsertest.cc
+++ b/chrome/browser/policy/test/unified_desktop_enabled_browsertest.cc
@@ -5,6 +5,7 @@
 #include "ash/public/cpp/test/shell_test_api.h"
 #include "base/values.h"
 #include "chrome/browser/policy/policy_test_utils.h"
+#include "chrome/test/base/chrome_ash_test_base.h"
 #include "components/policy/core/common/policy_map.h"
 #include "components/policy/core/common/policy_types.h"
 #include "components/policy/policy_constants.h"
diff --git a/chrome/browser/prefetch/prefetch_proxy/prefetch_proxy_browsertest.cc b/chrome/browser/prefetch/prefetch_proxy/prefetch_proxy_browsertest.cc
index 60dab6f1..66fb47a 100644
--- a/chrome/browser/prefetch/prefetch_proxy/prefetch_proxy_browsertest.cc
+++ b/chrome/browser/prefetch/prefetch_proxy/prefetch_proxy_browsertest.cc
@@ -754,7 +754,7 @@
 
       SCOPED_TRACE(request.GetURL().spec());
       EXPECT_EQ(request.headers.find("user-agent")->second,
-                content::GetFrozenUserAgent(
+                content::GetReducedUserAgent(
                     base::CommandLine::ForCurrentProcess()->HasSwitch(
                         switches::kUseMobileUserAgent),
                     version_info::GetMajorVersionNumber()));
diff --git a/chrome/browser/prefetch/prefetch_proxy/prefetch_proxy_tab_helper.cc b/chrome/browser/prefetch/prefetch_proxy/prefetch_proxy_tab_helper.cc
index 2710f19..4a7eded 100644
--- a/chrome/browser/prefetch/prefetch_proxy/prefetch_proxy_tab_helper.cc
+++ b/chrome/browser/prefetch/prefetch_proxy/prefetch_proxy_tab_helper.cc
@@ -1581,7 +1581,7 @@
 
   auto context_params = network::mojom::NetworkContextParams::New();
   context_params->context_name = "PrefetchProxy";
-  context_params->user_agent = content::GetFrozenUserAgent(
+  context_params->user_agent = content::GetReducedUserAgent(
       base::CommandLine::ForCurrentProcess()->HasSwitch(
           switches::kUseMobileUserAgent),
       version_info::GetMajorVersionNumber());
diff --git a/chrome/browser/prefetch/prefetch_proxy/prefetch_proxy_url_loader_interceptor_unittest.cc b/chrome/browser/prefetch/prefetch_proxy/prefetch_proxy_url_loader_interceptor_unittest.cc
index efbeba29..881842f 100644
--- a/chrome/browser/prefetch/prefetch_proxy/prefetch_proxy_url_loader_interceptor_unittest.cc
+++ b/chrome/browser/prefetch/prefetch_proxy/prefetch_proxy_url_loader_interceptor_unittest.cc
@@ -23,12 +23,6 @@
 
 const gfx::Size kSize(640, 480);
 
-// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
-// function.
-GURL TestURL() {
-  return GURL("https://test.com/path");
-}
-
 }  // namespace
 
 // These tests leak mojo objects (like the PrefetchProxyURLLoader) because
@@ -126,10 +120,11 @@
       std::make_unique<TestPrefetchProxyURLLoaderInterceptor>(
           web_contents()->GetMainFrame()->GetFrameTreeNodeId());
 
-  interceptor->SetHasPrefetchedResponse(TestURL(), true);
+  const GURL kTestUrl("https://test.com/path");
+  interceptor->SetHasPrefetchedResponse(kTestUrl, true);
 
   network::ResourceRequest request;
-  request.url = TestURL();
+  request.url = kTestUrl;
   request.resource_type =
       static_cast<int>(blink::mojom::ResourceType::kMainFrame);
   request.method = "GET";
@@ -150,10 +145,11 @@
       std::make_unique<TestPrefetchProxyURLLoaderInterceptor>(
           web_contents()->GetMainFrame()->GetFrameTreeNodeId());
 
-  interceptor->SetHasPrefetchedResponse(TestURL(), false);
+  const GURL kTestUrl("https://test.com/path");
+  interceptor->SetHasPrefetchedResponse(kTestUrl, false);
 
   network::ResourceRequest request;
-  request.url = TestURL();
+  request.url = kTestUrl;
   request.resource_type =
       static_cast<int>(blink::mojom::ResourceType::kMainFrame);
   request.method = "GET";
diff --git a/chrome/browser/privacy_sandbox/privacy_sandbox_settings.cc b/chrome/browser/privacy_sandbox/privacy_sandbox_settings.cc
index 353d5f44..228f003 100644
--- a/chrome/browser/privacy_sandbox/privacy_sandbox_settings.cc
+++ b/chrome/browser/privacy_sandbox/privacy_sandbox_settings.cc
@@ -315,6 +315,8 @@
 
 void PrivacySandboxSettings::ResetFlocId() const {
   SetFlocDataAccessibleFromNow(/*reset_calculate_timer=*/true);
+  base::RecordAction(
+      base::UserMetricsAction("Settings.PrivacySandbox.ResetFloc"));
 }
 
 bool PrivacySandboxSettings::IsFlocPrefEnabled() const {
@@ -323,6 +325,9 @@
 
 void PrivacySandboxSettings::SetFlocPrefEnabled(bool enabled) const {
   pref_service_->SetBoolean(prefs::kPrivacySandboxFlocEnabled, enabled);
+  base::RecordAction(base::UserMetricsAction(
+      enabled ? "Settings.PrivacySandbox.FlocEnabled"
+              : "Settings.PrivacySandbox.FlocDisabled"));
 }
 
 bool PrivacySandboxSettings::IsConversionMeasurementAllowed(
diff --git a/chrome/browser/privacy_sandbox/privacy_sandbox_settings_browsertest.cc b/chrome/browser/privacy_sandbox/privacy_sandbox_settings_browsertest.cc
index 23b55779..8b99606 100644
--- a/chrome/browser/privacy_sandbox/privacy_sandbox_settings_browsertest.cc
+++ b/chrome/browser/privacy_sandbox/privacy_sandbox_settings_browsertest.cc
@@ -4,6 +4,7 @@
 
 #include "base/strings/strcat.h"
 #include "base/test/bind.h"
+#include "base/test/metrics/user_action_tester.h"
 #include "base/test/scoped_feature_list.h"
 #include "chrome/browser/browsing_data/chrome_browsing_data_remover_constants.h"
 #include "chrome/browser/privacy_sandbox/privacy_sandbox_settings.h"
@@ -152,10 +153,16 @@
   privacy_sandbox_settings()->AddObserver(&observer);
   EXPECT_CALL(observer, OnFlocDataAccessibleSinceUpdated(true));
 
+  base::UserActionTester user_action_tester;
+  ASSERT_EQ(0, user_action_tester.GetActionCount(
+                   "Settings.PrivacySandbox.ResetFloc"));
+
   privacy_sandbox_settings()->ResetFlocId();
 
   EXPECT_NE(base::Time(),
             privacy_sandbox_settings()->FlocDataAccessibleSince());
+  ASSERT_EQ(1, user_action_tester.GetActionCount(
+                   "Settings.PrivacySandbox.ResetFloc"));
 }
 
 class PrivacySandboxSettingsBrowserPolicyTest
diff --git a/chrome/browser/privacy_sandbox/privacy_sandbox_settings_unittest.cc b/chrome/browser/privacy_sandbox/privacy_sandbox_settings_unittest.cc
index c272441..b854027 100644
--- a/chrome/browser/privacy_sandbox/privacy_sandbox_settings_unittest.cc
+++ b/chrome/browser/privacy_sandbox/privacy_sandbox_settings_unittest.cc
@@ -7,6 +7,7 @@
 #include "base/test/gtest_util.h"
 #include "base/test/icu_test_util.h"
 #include "base/test/metrics/histogram_tester.h"
+#include "base/test/metrics/user_action_tester.h"
 #include "base/test/scoped_feature_list.h"
 #include "base/util/values/values_util.h"
 #include "chrome/browser/content_settings/cookie_settings_factory.h"
@@ -1153,9 +1154,19 @@
 TEST_F(PrivacySandboxSettingsTest, SetFlocPrefEnabled) {
   // The FLoc pref should always be updated by this function, regardless of
   // other Sandbox State.
+  base::UserActionTester user_action_tester;
+  ASSERT_EQ(0, user_action_tester.GetActionCount(
+                   "Settings.PrivacySandbox.FlocEnabled"));
+  ASSERT_EQ(0, user_action_tester.GetActionCount(
+                   "Settings.PrivacySandbox.FlocDisabled"));
+
   privacy_sandbox_settings()->SetFlocPrefEnabled(false);
   EXPECT_FALSE(profile()->GetTestingPrefService()->GetBoolean(
       prefs::kPrivacySandboxFlocEnabled));
+  ASSERT_EQ(0, user_action_tester.GetActionCount(
+                   "Settings.PrivacySandbox.FlocEnabled"));
+  ASSERT_EQ(1, user_action_tester.GetActionCount(
+                   "Settings.PrivacySandbox.FlocDisabled"));
 
   // Disabling the sandbox shouldn't prevent the pref from being updated. This
   // state is not directly allowable by the UI, but the state itself is valid
@@ -1165,6 +1176,10 @@
   privacy_sandbox_settings()->SetFlocPrefEnabled(true);
   EXPECT_TRUE(profile()->GetTestingPrefService()->GetBoolean(
       prefs::kPrivacySandboxFlocEnabled));
+  ASSERT_EQ(1, user_action_tester.GetActionCount(
+                   "Settings.PrivacySandbox.FlocEnabled"));
+  ASSERT_EQ(1, user_action_tester.GetActionCount(
+                   "Settings.PrivacySandbox.FlocDisabled"));
 }
 
 TEST_F(PrivacySandboxSettingsTest, OnPrivacySandboxPrefChanged) {
diff --git a/chrome/browser/renderer_context_menu/quick_answers_menu_observer_browsertest.cc b/chrome/browser/renderer_context_menu/quick_answers_menu_observer_browsertest.cc
index 23317de..ddbcaa52 100644
--- a/chrome/browser/renderer_context_menu/quick_answers_menu_observer_browsertest.cc
+++ b/chrome/browser/renderer_context_menu/quick_answers_menu_observer_browsertest.cc
@@ -12,6 +12,7 @@
 #include "chrome/browser/renderer_context_menu/mock_render_view_context_menu.h"
 #include "chrome/test/base/chrome_test_utils.h"
 #include "chrome/test/base/in_process_browser_test.h"
+#include "chromeos/components/quick_answers/test/test_helpers.h"
 #include "content/public/browser/context_menu_params.h"
 #include "content/public/test/browser_test.h"
 #include "content/public/test/browser_test_utils.h"
diff --git a/chrome/browser/resource_coordinator/tab_manager_browsertest.cc b/chrome/browser/resource_coordinator/tab_manager_browsertest.cc
index 45fa2790..5a0eee21 100644
--- a/chrome/browser/resource_coordinator/tab_manager_browsertest.cc
+++ b/chrome/browser/resource_coordinator/tab_manager_browsertest.cc
@@ -37,6 +37,7 @@
 #include "chrome/common/chrome_features.h"
 #include "chrome/common/url_constants.h"
 #include "chrome/test/base/in_process_browser_test.h"
+#include "chrome/test/base/interactive_test_utils.h"
 #include "chrome/test/base/ui_test_utils.h"
 #include "components/performance_manager/public/features.h"
 #include "content/public/browser/navigation_details.h"
diff --git a/chrome/browser/resources/chromeos/login/cr_ui.js b/chrome/browser/resources/chromeos/login/cr_ui.js
index 5ca7a9de..900f5be 100644
--- a/chrome/browser/resources/chromeos/login/cr_ui.js
+++ b/chrome/browser/resources/chromeos/login/cr_ui.js
@@ -194,13 +194,6 @@
     }
 
     /**
-     * Skip to update screen for telemetry.
-     */
-    static skipToUpdateForTesting() {
-      chrome.send('skipToUpdateForTesting');
-    }
-
-    /**
      * Login for telemetry.
      * @param {string} username Login username.
      * @param {string} password Login password.
diff --git a/chrome/browser/resources/chromeos/login/structure/components_common.js b/chrome/browser/resources/chromeos/login/structure/components_common.js
index 53a848b1..f30ad8d 100644
--- a/chrome/browser/resources/chromeos/login/structure/components_common.js
+++ b/chrome/browser/resources/chromeos/login/structure/components_common.js
@@ -2,6 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+// clang-format off
 
 function loadCommonComponents() {
 // TODO(crbug.com/1111387) - Remove excessive logging.
diff --git a/chrome/browser/resources/chromeos/login/structure/components_login.js b/chrome/browser/resources/chromeos/login/structure/components_login.js
index 0aa0cee..140edc2 100644
--- a/chrome/browser/resources/chromeos/login/structure/components_login.js
+++ b/chrome/browser/resources/chromeos/login/structure/components_login.js
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+// clang-format off
+
 // <include src="../screens/login/gaia_password_changed.js">
 // <include src="../screens/login/management_transition.js">
 // <include src="../screens/login/active_directory_password_change.js">
diff --git a/chrome/browser/resources/chromeos/login/structure/components_oobe.js b/chrome/browser/resources/chromeos/login/structure/components_oobe.js
index 551c573..4930ca9 100644
--- a/chrome/browser/resources/chromeos/login/structure/components_oobe.js
+++ b/chrome/browser/resources/chromeos/login/structure/components_oobe.js
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+// clang-format off
+
 // <include src="../components/oobe_i18n_dropdown.js">
 
 // <include src="../screens/oobe/hid_detection.js">
diff --git a/chrome/browser/resources/download_shelf/download_item.js b/chrome/browser/resources/download_shelf/download_item.js
index 1b20d98a..c9f8a46 100644
--- a/chrome/browser/resources/download_shelf/download_item.js
+++ b/chrome/browser/resources/download_shelf/download_item.js
@@ -38,9 +38,17 @@
     /** @private {DownloadItem} */
     this.item_;
 
+    /** @private {boolean} */
+    this.opening_ = false;
+
+    /** @property {boolean} */
+    this.opened = false;
+
     /** @private {!DownloadShelfApiProxy} */
     this.apiProxy_ = DownloadShelfApiProxyImpl.getInstance();
 
+    this.$('#shadow-mask')
+        .addEventListener('click', e => this.onOpenButtonClick_(e));
     this.$('#dropdown-button')
         .addEventListener('click', e => this.onDropdownButtonClick_(e));
     this.$('#discard-button')
@@ -84,6 +92,14 @@
         filename, this.elideFilename_(filename, maxFilenameLength));
   }
 
+  /** @param {boolean} value */
+  set opening(value) {
+    if (this.opening_ !== value) {
+      this.opening_ = value;
+      this.update_();
+    }
+  }
+
   /** @private */
   update_() {
     const item = this.item_;
@@ -92,8 +108,11 @@
     }
     const downloadElement = this.$('.download-item');
     const filePath = item.fileNameDisplayString;
-    this.$('#filename').innerText =
-        filePath.substring(filePath.lastIndexOf('/') + 1);
+    let fileName = filePath.substring(filePath.lastIndexOf('/') + 1);
+    if (this.opening_) {
+      fileName = loadTimeData.getStringF('downloadStatusOpeningText', fileName);
+    }
+    this.$('#filename').innerText = fileName;
 
     const statusTextElement = this.$('#status-text');
     const statusText = (!item.shouldPromoteOrigin || !item.originalUrl.url) ?
@@ -190,6 +209,18 @@
       return s.substr(0, maxlen - subfix.length) + subfix;
     }
   }
+
+  /** @param {!Event} e */
+  onOpenButtonClick_(e) {
+    if (this.opening_) {
+      return;
+    }
+    if (this.item_.mode === DownloadMode.kNormal) {
+      this.apiProxy_.openDownload(this.item.id);
+    } else {
+      // TODO(crbug.com/1182529): Handle the scanning case.
+    }
+  }
 }
 
 customElements.define('download-item', DownloadItemElement);
diff --git a/chrome/browser/resources/download_shelf/download_list.js b/chrome/browser/resources/download_shelf/download_list.js
index de44564..ef98ee85 100644
--- a/chrome/browser/resources/download_shelf/download_list.js
+++ b/chrome/browser/resources/download_shelf/download_list.js
@@ -10,6 +10,7 @@
 
 import {assert} from 'chrome://resources/js/assert.m.js';
 import {CustomElement} from 'chrome://resources/js/custom_element.js';
+import {listenOnce} from 'chrome://resources/js/util.m.js';
 
 import {DownloadItem} from './download_shelf.mojom-webui.js';
 import {DownloadShelfApiProxy, DownloadShelfApiProxyImpl} from './download_shelf_api_proxy.js';
@@ -69,9 +70,7 @@
           this.updateElements_();
           this.recordDownloadPaintTime_(
               downloadItem.showDownloadStartTime, false);
-        }));
-
-    this.listenerIds_.push(
+        }),
         callbackRouter.onDownloadUpdated.addListener((downloadItem) => {
           const index =
               this.items_.findIndex(item => item.id === downloadItem.id);
@@ -79,15 +78,25 @@
             this.items_[index] = downloadItem;
             this.updateElements_();
           }
-        }));
-
-    this.listenerIds_.push(
+        }),
         callbackRouter.onDownloadErased.addListener((downloadId) => {
           const index = this.items_.findIndex(item => item.id === downloadId);
           if (index >= 0) {
             this.items_.splice(index, 1);
             this.updateElements_();
           }
+        }),
+        callbackRouter.onDownloadOpened.addListener((downloadId) => {
+          const element =
+              this.elements_.find(element => element.item.id === downloadId);
+          if (element) {
+            element.opening = true;
+            element.opened = true;
+            setTimeout(() => {
+              element.opening = false;
+            }, 3000);
+            this.autoClose_();
+          }
         }));
   }
 
@@ -189,6 +198,23 @@
       this.elements_.splice(itemCount, elementCount - itemCount);
     }
   }
+
+  /**
+   * If all items are opened, automatically close the download shelf
+   * when the mouse leaves the download shelf after some delay.
+   * @private
+   */
+  autoClose_() {
+    if (this.elements_.every(element => element.opened)) {
+      listenOnce(this, 'mouseleave', () => {
+        setTimeout(() => {
+          if (this.elements_.every(element => element.opened)) {
+            this.apiProxy_.doClose();
+          }
+        }, 5000);
+      });
+    }
+  }
 }
 
 customElements.define('download-list', DownloadListElement);
diff --git a/chrome/browser/resources/download_shelf/download_shelf_api_proxy.js b/chrome/browser/resources/download_shelf/download_shelf_api_proxy.js
index 20949b5..674cd75 100644
--- a/chrome/browser/resources/download_shelf/download_shelf_api_proxy.js
+++ b/chrome/browser/resources/download_shelf/download_shelf_api_proxy.js
@@ -33,6 +33,11 @@
    * @param {number} timestamp
    */
   showContextMenu(downloadId, clientX, clientY, timestamp) {}
+
+  /**
+   * @param {number} downloadId
+   */
+  openDownload(downloadId) {}
 }
 
 /** @implements {DownloadShelfApiProxy} */
@@ -76,6 +81,11 @@
   showContextMenu(downloadId, clientX, clientY, timestamp) {
     this.handler.showContextMenu(downloadId, clientX, clientY, timestamp);
   }
+
+  /** @override */
+  openDownload(downloadId) {
+    this.handler.openDownload(downloadId);
+  }
 }
 
 addSingletonGetter(DownloadShelfApiProxyImpl);
diff --git a/chrome/browser/resources/settings/privacy_sandbox/app.js b/chrome/browser/resources/settings/privacy_sandbox/app.js
index dcc1737..a66cc1fa 100644
--- a/chrome/browser/resources/settings/privacy_sandbox/app.js
+++ b/chrome/browser/resources/settings/privacy_sandbox/app.js
@@ -102,7 +102,6 @@
   /** @private */
   onResetFlocClick_: function() {
     this.privacySandboxBrowserProxy_.resetFlocId();
-    this.metricsBrowserProxy_.recordAction('Settings.PrivacySandbox.ResetFloc');
   },
 
   /**
diff --git a/chrome/browser/safe_browsing/ad_redirect_trigger_browsertest.cc b/chrome/browser/safe_browsing/ad_redirect_trigger_browsertest.cc
index c1e99c0..d13bdbb 100644
--- a/chrome/browser/safe_browsing/ad_redirect_trigger_browsertest.cc
+++ b/chrome/browser/safe_browsing/ad_redirect_trigger_browsertest.cc
@@ -18,6 +18,7 @@
 #include "chrome/test/base/ui_test_utils.h"
 #include "components/prefs/testing_pref_service.h"
 #include "components/safe_browsing/content/triggers/ad_redirect_trigger.h"
+#include "components/safe_browsing/content/triggers/mock_trigger_manager.h"
 #include "components/safe_browsing/core/common/safe_browsing_prefs.h"
 #include "components/safe_browsing/core/features.h"
 #include "content/public/browser/render_frame_host.h"
diff --git a/chrome/browser/search/ntp_features_unittest.cc b/chrome/browser/search/ntp_features_unittest.cc
index 1f99abe..17280b3 100644
--- a/chrome/browser/search/ntp_features_unittest.cc
+++ b/chrome/browser/search/ntp_features_unittest.cc
@@ -10,74 +10,6 @@
 
 namespace ntp_features {
 
-TEST(NTPFeaturesTest, LocalHistoryRepeatableQueriesAgeThresholdDays) {
-  base::test::ScopedFeatureList scoped_feature_list_;
-
-  // The default value can be overridden.
-  scoped_feature_list_.InitWithFeaturesAndParameters(
-      {{kNtpRepeatableQueries,
-        {{kNtpRepeatableQueriesAgeThresholdDaysParam, "7"}}}},
-      {});
-  base::Time age_threshold = GetLocalHistoryRepeatableQueriesAgeThreshold();
-  EXPECT_EQ(7, base::TimeDelta(base::Time::Now() - age_threshold).InDays());
-
-  // If the age threshold is not parsable to an unsigned integer, the default
-  // value is used.
-  scoped_feature_list_.Reset();
-  scoped_feature_list_.InitWithFeaturesAndParameters(
-      {{kNtpRepeatableQueries,
-        {{kNtpRepeatableQueriesAgeThresholdDaysParam, "j"}}}},
-      {});
-  age_threshold = GetLocalHistoryRepeatableQueriesAgeThreshold();
-  EXPECT_EQ(180, base::TimeDelta(base::Time::Now() - age_threshold).InDays());
-}
-
-TEST(NTPFeaturesTest, LocalHistoryRepeatableQueriesRecencyDecayUnit) {
-  base::test::ScopedFeatureList scoped_feature_list_;
-
-  // The default value can be overridden.
-  scoped_feature_list_.InitWithFeaturesAndParameters(
-      {{kNtpRepeatableQueries,
-        {{kNtpRepeatableQueriesRecencyHalfLifeSecondsParam,
-          "86400" /* One day */}}}},
-      {});
-  int recency_decay = GetLocalHistoryRepeatableQueriesRecencyHalfLifeSeconds();
-  EXPECT_EQ(86400, recency_decay);
-
-  // If the recency decay unit is not parsable to an unsigned integer, the
-  // default value is used.
-  scoped_feature_list_.Reset();
-  scoped_feature_list_.InitWithFeaturesAndParameters(
-      {{kNtpRepeatableQueries,
-        {{kNtpRepeatableQueriesRecencyHalfLifeSecondsParam, "j"}}}},
-      {});
-  recency_decay = GetLocalHistoryRepeatableQueriesRecencyHalfLifeSeconds();
-  EXPECT_EQ(604800 /* One week */, recency_decay);
-}
-
-TEST(NTPFeaturesTest, LocalHistoryRepeatableQueriesFrequencyExponent) {
-  base::test::ScopedFeatureList scoped_feature_list_;
-
-  // The default value can be overridden.
-  scoped_feature_list_.InitWithFeaturesAndParameters(
-      {{kNtpRepeatableQueries,
-        {{kNtpRepeatableQueriesFrequencyExponentParam, "1.5"}}}},
-      {});
-  double frequency_exponent =
-      GetLocalHistoryRepeatableQueriesFrequencyExponent();
-  EXPECT_EQ(1.5, frequency_exponent);
-
-  // If the recency decay unit is not parsable to an unsigned integer, the
-  // default value is used.
-  scoped_feature_list_.Reset();
-  scoped_feature_list_.InitWithFeaturesAndParameters(
-      {{kNtpRepeatableQueries,
-        {{kNtpRepeatableQueriesFrequencyExponentParam, "j"}}}},
-      {});
-  frequency_exponent = GetLocalHistoryRepeatableQueriesFrequencyExponent();
-  EXPECT_EQ(2, frequency_exponent);
-}
-
 TEST(NTPFeaturesTest, ModulesLoadTimeout) {
   base::test::ScopedFeatureList scoped_feature_list_;
 
diff --git a/chrome/browser/search/repeatable_queries/repeatable_queries_service_factory.cc b/chrome/browser/search/repeatable_queries/repeatable_queries_service_factory.cc
deleted file mode 100644
index c3df7ae3..0000000
--- a/chrome/browser/search/repeatable_queries/repeatable_queries_service_factory.cc
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/search/repeatable_queries/repeatable_queries_service_factory.h"
-
-#include "base/feature_list.h"
-#include "chrome/browser/content_settings/cookie_settings_factory.h"
-#include "chrome/browser/history/history_service_factory.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/search_engines/template_url_service_factory.h"
-#include "chrome/browser/signin/identity_manager_factory.h"
-#include "chrome/common/webui_url_constants.h"
-#include "components/keyed_service/content/browser_context_dependency_manager.h"
-#include "components/omnibox/common/omnibox_features.h"
-#include "components/search/ntp_features.h"
-#include "components/search/repeatable_queries/repeatable_queries_service.h"
-#include "content/public/browser/browser_context.h"
-#include "content/public/browser/storage_partition.h"
-
-// static
-RepeatableQueriesService* RepeatableQueriesServiceFactory::GetForProfile(
-    Profile* profile) {
-  return static_cast<RepeatableQueriesService*>(
-      GetInstance()->GetServiceForBrowserContext(profile, true));
-}
-
-// static
-RepeatableQueriesServiceFactory*
-RepeatableQueriesServiceFactory::GetInstance() {
-  return base::Singleton<RepeatableQueriesServiceFactory>::get();
-}
-
-RepeatableQueriesServiceFactory::RepeatableQueriesServiceFactory()
-    : BrowserContextKeyedServiceFactory(
-          "RepeatableQueriesService",
-          BrowserContextDependencyManager::GetInstance()) {
-  DependsOn(CookieSettingsFactory::GetInstance());
-  DependsOn(IdentityManagerFactory::GetInstance());
-}
-
-RepeatableQueriesServiceFactory::~RepeatableQueriesServiceFactory() = default;
-
-KeyedService* RepeatableQueriesServiceFactory::BuildServiceInstanceFor(
-    content::BrowserContext* context) const {
-  if (!base::FeatureList::IsEnabled(ntp_features::kNtpRepeatableQueries))
-    return nullptr;
-
-  Profile* profile = Profile::FromBrowserContext(context);
-  signin::IdentityManager* identity_manager =
-      IdentityManagerFactory::GetForProfile(profile);
-  history::HistoryService* history_service =
-      HistoryServiceFactory::GetForProfile(profile,
-                                           ServiceAccessType::EXPLICIT_ACCESS);
-  TemplateURLService* template_url_service =
-      TemplateURLServiceFactory::GetForProfile(profile);
-  auto url_loader_factory = context->GetDefaultStoragePartition()
-                                ->GetURLLoaderFactoryForBrowserProcess();
-  return new RepeatableQueriesService(identity_manager, history_service,
-                                      template_url_service, url_loader_factory,
-                                      GURL(chrome::kChromeUINewTabURL));
-}
diff --git a/chrome/browser/search/repeatable_queries/repeatable_queries_service_factory.h b/chrome/browser/search/repeatable_queries/repeatable_queries_service_factory.h
deleted file mode 100644
index b8570d3..0000000
--- a/chrome/browser/search/repeatable_queries/repeatable_queries_service_factory.h
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_SEARCH_REPEATABLE_QUERIES_REPEATABLE_QUERIES_SERVICE_FACTORY_H_
-#define CHROME_BROWSER_SEARCH_REPEATABLE_QUERIES_REPEATABLE_QUERIES_SERVICE_FACTORY_H_
-
-#include "base/macros.h"
-#include "base/memory/singleton.h"
-#include "components/keyed_service/content/browser_context_keyed_service_factory.h"
-
-class RepeatableQueriesService;
-class Profile;
-
-class RepeatableQueriesServiceFactory
-    : public BrowserContextKeyedServiceFactory {
- public:
-  // Returns the RepeatableQueriesService for |profile|.
-  static RepeatableQueriesService* GetForProfile(Profile* profile);
-
-  static RepeatableQueriesServiceFactory* GetInstance();
-
- private:
-  friend struct base::DefaultSingletonTraits<RepeatableQueriesServiceFactory>;
-
-  RepeatableQueriesServiceFactory();
-  ~RepeatableQueriesServiceFactory() override;
-
-  // Overridden from BrowserContextKeyedServiceFactory:
-  KeyedService* BuildServiceInstanceFor(
-      content::BrowserContext* profile) const override;
-
-  DISALLOW_COPY_AND_ASSIGN(RepeatableQueriesServiceFactory);
-};
-
-#endif  // CHROME_BROWSER_SEARCH_REPEATABLE_QUERIES_REPEATABLE_QUERIES_SERVICE_FACTORY_H_
diff --git a/chrome/browser/sessions/chrome_serialized_navigation_driver_unittest.cc b/chrome/browser/sessions/chrome_serialized_navigation_driver_unittest.cc
index 66344ed9..233876d 100644
--- a/chrome/browser/sessions/chrome_serialized_navigation_driver_unittest.cc
+++ b/chrome/browser/sessions/chrome_serialized_navigation_driver_unittest.cc
@@ -37,32 +37,33 @@
       sessions::SerializedNavigationEntryTestHelper::CreateNavigationForTest();
   sessions::SerializedNavigationEntryTestHelper::SetReferrerPolicy(
       static_cast<int>(network::mojom::ReferrerPolicy::kAlways), &navigation);
-
   blink::PageState page_state =
-      blink::PageState::CreateFromURL(sessions::test_data::VirtualUrl());
+      blink::PageState::CreateFromURL(GURL("http://www.virtual-url.com"));
   sessions::SerializedNavigationEntryTestHelper::SetEncodedPageState(
       page_state.ToEncodedData(), &navigation);
-
   driver->Sanitize(&navigation);
-  EXPECT_EQ(sessions::test_data::kIndex, navigation.index());
-  EXPECT_EQ(sessions::test_data::kUniqueID, navigation.unique_id());
-  EXPECT_EQ(sessions::test_data::ReferrerUrl(), navigation.referrer_url());
+
+  sessions::SerializedNavigationEntry reference_navigation =
+      sessions::SerializedNavigationEntryTestHelper::CreateNavigationForTest();
+  EXPECT_EQ(reference_navigation.index(), navigation.index());
+  EXPECT_EQ(reference_navigation.unique_id(), navigation.unique_id());
+  EXPECT_EQ(reference_navigation.referrer_url(), navigation.referrer_url());
   EXPECT_EQ(static_cast<int>(network::mojom::ReferrerPolicy::kAlways),
             navigation.referrer_policy());
-  EXPECT_EQ(sessions::test_data::VirtualUrl(), navigation.virtual_url());
-  EXPECT_EQ(sessions::test_data::kTitle, navigation.title());
+  EXPECT_EQ(reference_navigation.virtual_url(), navigation.virtual_url());
+  EXPECT_EQ(reference_navigation.title(), navigation.title());
   EXPECT_EQ(page_state.ToEncodedData(), navigation.encoded_page_state());
   EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs(
-      navigation.transition_type(), sessions::test_data::kTransitionType));
-  EXPECT_EQ(sessions::test_data::kHasPostData, navigation.has_post_data());
-  EXPECT_EQ(sessions::test_data::kPostID, navigation.post_id());
-  EXPECT_EQ(sessions::test_data::OriginalRequestUrl(),
+      navigation.transition_type(), reference_navigation.transition_type()));
+  EXPECT_EQ(reference_navigation.has_post_data(), navigation.has_post_data());
+  EXPECT_EQ(reference_navigation.post_id(), navigation.post_id());
+  EXPECT_EQ(reference_navigation.original_request_url(),
             navigation.original_request_url());
-  EXPECT_EQ(sessions::test_data::kIsOverridingUserAgent,
+  EXPECT_EQ(reference_navigation.is_overriding_user_agent(),
             navigation.is_overriding_user_agent());
-  EXPECT_EQ(sessions::test_data::kTimestamp, navigation.timestamp());
-  EXPECT_EQ(sessions::test_data::FaviconUrl(), navigation.favicon_url());
-  EXPECT_EQ(sessions::test_data::kHttpStatusCode,
+  EXPECT_EQ(reference_navigation.timestamp(), navigation.timestamp());
+  EXPECT_EQ(reference_navigation.favicon_url(), navigation.favicon_url());
+  EXPECT_EQ(reference_navigation.http_status_code(),
             navigation.http_status_code());
 }
 
@@ -77,28 +78,30 @@
       static_cast<int>(network::mojom::ReferrerPolicy::kNever), &navigation);
 
   blink::PageState page_state =
-      blink::PageState::CreateFromURL(sessions::test_data::VirtualUrl());
+      blink::PageState::CreateFromURL(GURL("http://www.virtual-url.com"));
   sessions::SerializedNavigationEntryTestHelper::SetEncodedPageState(
       page_state.ToEncodedData(), &navigation);
 
   driver->Sanitize(&navigation);
 
   // Fields that should remain untouched.
-  EXPECT_EQ(sessions::test_data::kIndex, navigation.index());
-  EXPECT_EQ(sessions::test_data::kUniqueID, navigation.unique_id());
-  EXPECT_EQ(sessions::test_data::VirtualUrl(), navigation.virtual_url());
-  EXPECT_EQ(sessions::test_data::kTitle, navigation.title());
+  sessions::SerializedNavigationEntry reference_navigation =
+      sessions::SerializedNavigationEntryTestHelper::CreateNavigationForTest();
+  EXPECT_EQ(reference_navigation.index(), navigation.index());
+  EXPECT_EQ(reference_navigation.unique_id(), navigation.unique_id());
+  EXPECT_EQ(reference_navigation.virtual_url(), navigation.virtual_url());
+  EXPECT_EQ(reference_navigation.title(), navigation.title());
   EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs(
-      navigation.transition_type(), sessions::test_data::kTransitionType));
-  EXPECT_EQ(sessions::test_data::kHasPostData, navigation.has_post_data());
-  EXPECT_EQ(sessions::test_data::kPostID, navigation.post_id());
-  EXPECT_EQ(sessions::test_data::OriginalRequestUrl(),
+      navigation.transition_type(), reference_navigation.transition_type()));
+  EXPECT_EQ(reference_navigation.has_post_data(), navigation.has_post_data());
+  EXPECT_EQ(reference_navigation.post_id(), navigation.post_id());
+  EXPECT_EQ(reference_navigation.original_request_url(),
             navigation.original_request_url());
-  EXPECT_EQ(sessions::test_data::kIsOverridingUserAgent,
+  EXPECT_EQ(reference_navigation.is_overriding_user_agent(),
             navigation.is_overriding_user_agent());
-  EXPECT_EQ(sessions::test_data::kTimestamp, navigation.timestamp());
-  EXPECT_EQ(sessions::test_data::FaviconUrl(), navigation.favicon_url());
-  EXPECT_EQ(sessions::test_data::kHttpStatusCode,
+  EXPECT_EQ(reference_navigation.timestamp(), navigation.timestamp());
+  EXPECT_EQ(reference_navigation.favicon_url(), navigation.favicon_url());
+  EXPECT_EQ(reference_navigation.http_status_code(),
             navigation.http_status_code());
 
   // Fields that were sanitized.
diff --git a/chrome/browser/sessions/session_restore_browsertest_chromeos.cc b/chrome/browser/sessions/session_restore_browsertest_chromeos.cc
index 9dfd46b..ab64d23 100644
--- a/chrome/browser/sessions/session_restore_browsertest_chromeos.cc
+++ b/chrome/browser/sessions/session_restore_browsertest_chromeos.cc
@@ -181,7 +181,7 @@
 
 // Assigns a browser window to all desks.
 IN_PROC_BROWSER_TEST_F(SessionRestoreTestChromeOS,
-                       PRE_RestoreAllDesksBrowserWindow) {
+                       DISABLED_PRE_RestoreAllDesksBrowserWindow) {
   // Create two desks so we have three in total.
   ash::AutotestDesksApi().CreateNewDesk();
   ash::AutotestDesksApi().CreateNewDesk();
@@ -212,7 +212,7 @@
 
 // Verifies that the visible on all desks browser window is restore properly.
 IN_PROC_BROWSER_TEST_F(SessionRestoreTestChromeOS,
-                       RestoreAllDesksBrowserWindow) {
+                       DISABLED_RestoreAllDesksBrowserWindow) {
   // There should be two browsers restored, the default browser and the all
   // desks browser.
   auto* browser_list = BrowserList::GetInstance();
diff --git a/chrome/browser/signin/ui/android/java/src/org/chromium/chrome/browser/signin/ui/SigninPromoController.java b/chrome/browser/signin/ui/android/java/src/org/chromium/chrome/browser/signin/ui/SigninPromoController.java
index 9107d83..4676145 100644
--- a/chrome/browser/signin/ui/android/java/src/org/chromium/chrome/browser/signin/ui/SigninPromoController.java
+++ b/chrome/browser/signin/ui/android/java/src/org/chromium/chrome/browser/signin/ui/SigninPromoController.java
@@ -203,6 +203,11 @@
         }
     }
 
+    @AccessPoint
+    int getAccessPoint() {
+        return mAccessPoint;
+    }
+
     /**
      * Called when the signin promo is destroyed.
      */
diff --git a/chrome/browser/signin/ui/android/java/src/org/chromium/chrome/browser/signin/ui/SigninPromoUtil.java b/chrome/browser/signin/ui/android/java/src/org/chromium/chrome/browser/signin/ui/SigninPromoUtil.java
index 2168d063..00e0499 100644
--- a/chrome/browser/signin/ui/android/java/src/org/chromium/chrome/browser/signin/ui/SigninPromoUtil.java
+++ b/chrome/browser/signin/ui/android/java/src/org/chromium/chrome/browser/signin/ui/SigninPromoUtil.java
@@ -8,14 +8,11 @@
 import android.content.Context;
 import android.text.TextUtils;
 
-import androidx.annotation.Nullable;
-
 import com.google.common.base.Optional;
 
 import org.chromium.chrome.browser.flags.ChromeFeatureList;
 import org.chromium.chrome.browser.preferences.Pref;
 import org.chromium.chrome.browser.profiles.Profile;
-import org.chromium.chrome.browser.signin.services.DisplayableProfileData;
 import org.chromium.chrome.browser.signin.services.IdentityServicesProvider;
 import org.chromium.chrome.browser.signin.services.ProfileDataCache;
 import org.chromium.chrome.browser.signin.services.SigninPreferencesManager;
@@ -87,10 +84,10 @@
             return false;
         }
 
-        Optional<Boolean> isDefaultAccountSubjectToMinorModeRestrictions =
-                accountManagerFacade.isAccountSubjectToMinorModeRestrictions(accounts.get(0));
+        Optional<Boolean> canDefaultAccountOfferExtendedSyncPromos =
+                accountManagerFacade.canOfferExtendedSyncPromos(accounts.get(0));
         if (ChromeFeatureList.isEnabled(ChromeFeatureList.MINOR_MODE_SUPPORT)
-                && isDefaultAccountSubjectToMinorModeRestrictions.or(/* defaultValue= */ false)) {
+                && canDefaultAccountOfferExtendedSyncPromos.or(/* defaultValue= */ false)) {
             return false;
         }
 
@@ -117,8 +114,26 @@
     public static void setupSigninPromoViewFromCache(SigninPromoController signinPromoController,
             ProfileDataCache profileDataCache, PersonalizedSigninPromoView view,
             SigninPromoController.OnDismissListener listener) {
+        final AccountManagerFacade accountManagerFacade =
+                AccountManagerFacadeProvider.getInstance();
+        if (!accountManagerFacade.isCachePopulated()) {
+            signinPromoController.setupPromoView(view, /* profileData= */ null, listener);
+            return;
+        }
+        final List<Account> accounts = accountManagerFacade.tryGetGoogleAccounts();
+        if (accounts.isEmpty()) {
+            signinPromoController.setupPromoView(view, /* profileData= */ null, listener);
+            return;
+        }
+        final Account defaultAccount = accounts.get(0);
+        if (ChromeFeatureList.isEnabled(ChromeFeatureList.MINOR_MODE_SUPPORT)
+                && accountManagerFacade.canOfferExtendedSyncPromos(defaultAccount).or(false)
+                && signinPromoController.getAccessPoint()
+                        == SigninAccessPoint.NTP_CONTENT_SUGGESTIONS) {
+            return;
+        }
         signinPromoController.setupPromoView(
-                view, getDefaultProfileData(profileDataCache), listener);
+                view, profileDataCache.getProfileDataOrDefault(defaultAccount.name), listener);
     }
 
     /**
@@ -130,28 +145,23 @@
     public static void setupSyncPromoViewFromCache(SigninPromoController signinPromoController,
             ProfileDataCache profileDataCache, PersonalizedSigninPromoView view,
             SigninPromoController.OnDismissListener listener) {
-        String signedInAccount = CoreAccountInfo.getEmailFrom(
+        final Account primaryAccount = CoreAccountInfo.getAndroidAccountFrom(
                 IdentityServicesProvider.get()
                         .getIdentityManager(Profile.getLastUsedRegularProfile())
                         .getPrimaryAccountInfo(ConsentLevel.SIGNIN));
-        assert signedInAccount != null : "Sync promo should only be shown for a signed in account";
-        signinPromoController.setupPromoView(
-                view, profileDataCache.getProfileDataOrDefault(signedInAccount), listener);
-    }
+        assert primaryAccount != null : "Sync promo should only be shown for a signed in account";
 
-    /**
-     * @return The default profile data if the account list is available, otherwise returns null.
-     */
-    private static @Nullable DisplayableProfileData getDefaultProfileData(
-            ProfileDataCache profileDataCache) {
-        final AccountManagerFacade accountManagerFacade =
-                AccountManagerFacadeProvider.getInstance();
-        if (accountManagerFacade.isCachePopulated()) {
-            final List<Account> accounts = accountManagerFacade.tryGetGoogleAccounts();
-            if (accounts.size() > 0) {
-                return profileDataCache.getProfileDataOrDefault(accounts.get(0).name);
-            }
+        final boolean canPrimaryAccountOfferExtendedSyncPromos =
+                AccountManagerFacadeProvider.getInstance()
+                        .canOfferExtendedSyncPromos(primaryAccount)
+                        .or(false);
+        if (ChromeFeatureList.isEnabled(ChromeFeatureList.MINOR_MODE_SUPPORT)
+                && canPrimaryAccountOfferExtendedSyncPromos
+                && signinPromoController.getAccessPoint()
+                        == SigninAccessPoint.NTP_CONTENT_SUGGESTIONS) {
+            return;
         }
-        return null;
+        signinPromoController.setupPromoView(
+                view, profileDataCache.getProfileDataOrDefault(primaryAccount.name), listener);
     }
 }
diff --git a/chrome/browser/signin/ui/android/junit/src/org/chromium/chrome/browser/signin/ui/SigninPromoUtilLaunchSigninPromoTest.java b/chrome/browser/signin/ui/android/junit/src/org/chromium/chrome/browser/signin/ui/SigninPromoUtilLaunchSigninPromoTest.java
index 015e256e..7bd7cf70 100644
--- a/chrome/browser/signin/ui/android/junit/src/org/chromium/chrome/browser/signin/ui/SigninPromoUtilLaunchSigninPromoTest.java
+++ b/chrome/browser/signin/ui/android/junit/src/org/chromium/chrome/browser/signin/ui/SigninPromoUtilLaunchSigninPromoTest.java
@@ -223,7 +223,7 @@
     }
 
     @Test
-    public void promoHiddenWhenDefaultAccountIsMinor() {
+    public void promoHiddenWhenCanOfferExtendedSyncPromosForDefaultAccount() {
         mPrefManager.setSigninPromoLastShownVersion(38);
         mAccountManagerTestRule.addAccount("test2@gmail.com");
         doAnswer(invocation -> {
@@ -231,7 +231,7 @@
             return Optional.of(AccountManagerTestRule.TEST_ACCOUNT_EMAIL.equals(account.name));
         })
                 .when(mFakeAccountManagerFacade)
-                .isAccountSubjectToMinorModeRestrictions(any());
+                .canOfferExtendedSyncPromos(any());
 
         Assert.assertFalse(SigninPromoUtil.launchSigninPromoIfNeeded(
                 mContext, mLauncherMock, CURRENT_MAJOR_VERSION));
@@ -240,7 +240,7 @@
     }
 
     @Test
-    public void promoVisibleWhenTheSecondaryAccountIsMinor() {
+    public void promoVisibleWhenCanOfferExtendedSyncPromosForTheSecondaryAccount() {
         final CoreAccountInfo secondAccount = mAccountManagerTestRule.addAccount("test2@gmail.com");
         mPrefManager.setSigninPromoLastShownVersion(38);
         doAnswer(invocation -> {
@@ -248,7 +248,7 @@
             return Optional.of(secondAccount.getEmail().equals(account.name));
         })
                 .when(mFakeAccountManagerFacade)
-                .isAccountSubjectToMinorModeRestrictions(any());
+                .canOfferExtendedSyncPromos(any());
 
         Assert.assertTrue(SigninPromoUtil.launchSigninPromoIfNeeded(
                 mContext, mLauncherMock, CURRENT_MAJOR_VERSION));
diff --git a/chrome/browser/tab_contents/navigation_metrics_recorder_browsertest.cc b/chrome/browser/tab_contents/navigation_metrics_recorder_browsertest.cc
index edf08fe3..5f1e747 100644
--- a/chrome/browser/tab_contents/navigation_metrics_recorder_browsertest.cc
+++ b/chrome/browser/tab_contents/navigation_metrics_recorder_browsertest.cc
@@ -8,6 +8,7 @@
 #include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/tabs/tab_strip_model.h"
 #include "chrome/test/base/in_process_browser_test.h"
+#include "chrome/test/base/interactive_test_utils.h"
 #include "chrome/test/base/ui_test_utils.h"
 #include "components/navigation_metrics/navigation_metrics.h"
 #include "components/site_engagement/content/site_engagement_score.h"
diff --git a/chrome/browser/touch_to_fill/android/internal/BUILD.gn b/chrome/browser/touch_to_fill/android/internal/BUILD.gn
index d931bdd..41cb2768 100644
--- a/chrome/browser/touch_to_fill/android/internal/BUILD.gn
+++ b/chrome/browser/touch_to_fill/android/internal/BUILD.gn
@@ -49,8 +49,10 @@
   ]
   sources = [
     "java/res/drawable-night/touch_to_fill_header_image.xml",
+    "java/res/drawable-night/touch_to_fill_new_header_image.xml",
     "java/res/drawable/touch_to_fill_credential_background.xml",
     "java/res/drawable/touch_to_fill_header_image.xml",
+    "java/res/drawable/touch_to_fill_new_header_image.xml",
     "java/res/layout/touch_to_fill_credential_item.xml",
     "java/res/layout/touch_to_fill_fill_button.xml",
     "java/res/layout/touch_to_fill_header_item.xml",
diff --git a/chrome/browser/touch_to_fill/android/internal/java/res/drawable-night/touch_to_fill_header_image.xml b/chrome/browser/touch_to_fill/android/internal/java/res/drawable-night/touch_to_fill_header_image.xml
index 806d86d5..5a1aa56f 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/res/drawable-night/touch_to_fill_header_image.xml
+++ b/chrome/browser/touch_to_fill/android/internal/java/res/drawable-night/touch_to_fill_header_image.xml
@@ -1,312 +1,45 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright 2019 The Chromium Authors. All rights reserved.
-     Use of this source code is governed by a BSD-style license that can be
-     found in the LICENSE file. -->
-
-<!-- VectorRaster is ignored because:
-     1. The image should be shown rarely enough to prioritize binary size over inflation time.
-     2. Area-wise it's less than 63% of the recommended 200dp x 200dp limit. -->
-<vector
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:width="224dp"
-    android:height="112dp"
-    android:viewportWidth="312"
-    android:viewportHeight="156"
-    tools:targetApi="21"
-    tools:ignore="VectorRaster">
-
-    <path
-        android:pathData="M146.385,114.133a24.772,2.241 0,1 0,49.544 0a24.772,2.241 0,1 0,-49.544 0z"
-        android:strokeAlpha="0.16272135"
-        android:strokeWidth="1"
-        android:fillColor="#EDEDED"
-        android:strokeColor="#00000000"
-        android:fillAlpha="0.16272135"/>
-    <path
-        android:pathData="M17.659,117.572a24.772,2.241 0,1 0,49.544 0a24.772,2.241 0,1 0,-49.544 0z"
-        android:strokeAlpha="0.16272135"
-        android:strokeWidth="1"
-        android:fillColor="#EDEDED"
-        android:strokeColor="#00000000"
-        android:fillAlpha="0.16272135"/>
-    <path
-        android:pathData="M178.655,132.136l0,4.446l43.19,0l0,-8.884z"
-        android:strokeAlpha="0.16272135"
-        android:strokeWidth="1"
-        android:fillColor="#EDEDED"
-        android:strokeColor="#00000000"
-        android:fillAlpha="0.16272135"/>
-    <path
-        android:pathData="M168.243,109.143L168.243,50.86C168.243,48.354 170.275,46.323 172.782,46.323L179.363,46.323L179.363,109.143L168.243,109.143Z"
-        android:strokeWidth="1"
-        android:fillColor="#414447"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M178.455,47.23L178.455,108.235L169.151,108.235L169.151,50.86C169.151,48.855 170.777,47.23 172.782,47.23L178.455,47.23L178.455,47.23ZM180.271,45.415L172.782,45.415C169.774,45.415 167.336,47.853 167.336,50.86L167.336,110.05L180.271,110.05L180.271,45.415Z"
-        android:strokeWidth="1"
-        android:fillColor="#5F6368"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M172.555,109.143L172.555,50.86C172.555,48.354 174.587,46.323 177.094,46.323L248.097,46.323C250.604,46.323 252.636,48.354 252.636,50.86L252.636,109.143L172.555,109.143Z"
-        android:strokeWidth="1"
-        android:fillColor="#414447"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M248.097,47.23C250.102,47.23 251.728,48.855 251.728,50.86L251.728,108.235L173.463,108.235L173.463,50.86C173.463,48.855 175.088,47.23 177.094,47.23L248.097,47.23L248.097,47.23ZM248.097,45.415L177.094,45.415C174.086,45.415 171.647,47.853 171.647,50.86L171.647,110.05L253.543,110.05L253.543,50.86C253.543,47.853 251.105,45.415 248.097,45.415Z"
-        android:strokeWidth="1"
-        android:fillColor="#5F6368"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M172.782,115.603C170.275,115.603 168.243,113.572 168.243,111.066L168.243,108.807L224.623,108.807L224.623,115.603L172.782,115.603Z"
-        android:strokeWidth="1"
-        android:fillColor="#414447"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M223.715,109.714L223.715,114.696L172.782,114.696C170.777,114.696 169.151,113.071 169.151,111.066L169.151,109.714L223.715,109.714L223.715,109.714ZM225.531,107.899L167.336,107.899L167.336,111.066C167.336,114.073 169.774,116.511 172.782,116.511L225.531,116.511L225.531,107.899L225.531,107.899Z"
-        android:strokeWidth="1"
-        android:fillColor="#5F6368"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M222.354,115.603C219.847,115.603 217.815,113.572 217.815,111.066L217.815,108.807L300.092,108.807L300.092,111.066C300.092,113.572 298.06,115.603 295.554,115.603L222.354,115.603Z"
-        android:strokeWidth="1"
-        android:fillColor="#414447"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M299.185,109.714L299.185,111.066C299.185,113.071 297.559,114.696 295.554,114.696L222.39,114.696C220.385,114.696 218.759,113.071 218.759,111.066L218.759,109.714L299.185,109.714L299.185,109.714ZM301,107.899L216.943,107.899L216.943,111.066C216.943,114.073 219.382,116.511 222.39,116.511L295.554,116.511C298.562,116.511 301,114.073 301,111.066L301,107.899Z"
-        android:strokeWidth="1"
-        android:fillColor="#5F6368"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M266.397,112.21L251.474,112.21C250.594,112.21 249.749,111.859 249.128,111.236C248.506,110.613 248.158,109.768 248.161,108.889L248.161,107.899L269.71,107.899L269.71,108.87C269.718,109.753 269.372,110.603 268.75,111.23C268.127,111.857 267.28,112.21 266.397,112.21L266.397,112.21Z"
-        android:strokeWidth="1"
-        android:fillColor="#5F6368"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M179.018,52.793h67.154v49.889h-67.154z"
-        android:strokeWidth="1"
-        android:fillColor="#303030"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M245.265,53.7L245.265,101.793L179.908,101.793L179.908,53.7L245.265,53.7L245.265,53.7ZM247.08,51.885L178.092,51.885L178.092,103.607L247.08,103.607L247.08,51.885Z"
-        android:strokeWidth="1"
-        android:fillColor="#5F6368"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M213.738,75.995L229.952,75.995A0.58,0.58 0,0 1,230.532 76.575L230.532,76.586A0.58,0.58 0,0 1,229.952 77.166L213.738,77.166A0.58,0.58 0,0 1,213.158 76.586L213.158,76.575A0.58,0.58 0,0 1,213.738 75.995z"
-        android:strokeWidth="1"
-        android:fillColor="#5F6368"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M213.684,78.182L226.72,78.182A0.526,0.526 0,0 1,227.246 78.708L227.246,78.708A0.526,0.526 0,0 1,226.72 79.234L213.684,79.234A0.526,0.526 0,0 1,213.158 78.708L213.158,78.708A0.526,0.526 0,0 1,213.684 78.182z"
-        android:strokeWidth="1"
-        android:fillColor="#5F6368"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M202.61,82.256C201.246,82.259 199.971,81.577 199.215,80.441C199.215,79.316 201.476,78.699 202.61,78.699C203.745,78.699 205.987,79.316 206.005,80.441C205.25,81.577 203.975,82.259 202.61,82.256L202.61,82.256ZM202.61,74.216C203.301,74.213 203.926,74.626 204.193,75.263C204.46,75.9 204.317,76.636 203.829,77.125C203.342,77.615 202.607,77.763 201.968,77.499C201.33,77.236 200.913,76.613 200.913,75.922C200.91,75.471 201.088,75.037 201.407,74.717C201.725,74.396 202.158,74.216 202.61,74.216L202.61,74.216ZM202.61,72.52C199.482,72.52 196.946,75.055 196.946,78.182C196.946,81.309 199.482,83.844 202.61,83.844C205.739,83.844 208.275,81.309 208.275,78.182C208.27,75.057 205.736,72.525 202.61,72.52Z"
-        android:strokeWidth="1"
-        android:fillColor="#5F6368"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M61.047,44.98L103.696,44.98A5,5 0,0 1,108.696 49.98L108.696,114.387A5,5 0,0 1,103.696 119.387L61.047,119.387A5,5 0,0 1,56.047 114.387L56.047,49.98A5,5 0,0 1,61.047 44.98z"
-        android:strokeWidth="1"
-        android:fillColor="#414447"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M104.157,45.887C106.162,45.887 107.788,47.512 107.788,49.517L107.788,114.85C107.788,116.855 106.162,118.48 104.157,118.48L60.586,118.48C58.58,118.48 56.955,116.855 56.955,114.85L56.955,49.517C56.955,47.512 58.58,45.887 60.586,45.887L104.157,45.887L104.157,45.887ZM104.157,44.072L60.586,44.072C57.578,44.072 55.139,46.51 55.139,49.517L55.139,114.85C55.139,117.857 57.578,120.295 60.586,120.295L104.157,120.295C107.165,120.295 109.603,117.857 109.603,114.85L109.603,49.517C109.603,46.51 107.165,44.072 104.157,44.072Z"
-        android:strokeWidth="1"
-        android:fillColor="#5F6368"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M61.493,50.424h41.756v63.519h-41.756z"
-        android:strokeWidth="1"
-        android:fillColor="#303030"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M102.342,51.332L102.342,113.035L62.401,113.035L62.401,51.332L102.342,51.332L102.342,51.332ZM104.157,49.517L60.586,49.517L60.586,114.85L104.157,114.85L104.157,49.517Z"
-        android:strokeWidth="1"
-        android:fillColor="#5F6368"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M39.261,63.128L60.124,63.128A5,5 0,0 1,65.124 68.128L65.124,114.387A5,5 0,0 1,60.124 119.387L39.261,119.387A5,5 0,0 1,34.261 114.387L34.261,68.128A5,5 0,0 1,39.261 63.128z"
-        android:strokeWidth="1"
-        android:fillColor="#414447"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M60.586,64.035C62.591,64.035 64.217,65.66 64.217,67.665L64.217,114.85C64.217,116.855 62.591,118.48 60.586,118.48L38.8,118.48C36.795,118.48 35.169,116.855 35.169,114.85L35.169,67.665C35.169,65.66 36.795,64.035 38.8,64.035L60.586,64.035L60.586,64.035ZM60.586,62.221L38.8,62.221C35.792,62.221 33.353,64.658 33.353,67.665L33.353,114.85C33.353,117.857 35.792,120.295 38.8,120.295L60.586,120.295C63.594,120.295 66.032,117.857 66.032,114.85L66.032,67.665C66.032,64.658 63.594,62.221 60.586,62.221Z"
-        android:strokeWidth="1"
-        android:fillColor="#5F6368"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M33.353,71.295h32.679v1.815h-32.679z"
-        android:strokeWidth="1"
-        android:fillColor="#5F6368"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M33.353,111.221h32.679v1.815h-32.679z"
-        android:strokeWidth="1"
-        android:fillColor="#5F6368"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M35.169,73.109h29.048v38.111h-29.048z"
-        android:strokeWidth="1"
-        android:fillColor="#303030"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M43.338,66.758L56.047,66.758A0.907,0.907 0,0 1,56.955 67.665L56.955,67.665A0.907,0.907 0,0 1,56.047 68.572L43.338,68.572A0.907,0.907 0,0 1,42.431 67.665L42.431,67.665A0.907,0.907 0,0 1,43.338 66.758z"
-        android:strokeWidth="1"
-        android:fillColor="#5F6368"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M44.372,94.361L55.013,94.361A0.58,0.58 0,0 1,55.593 94.941L55.593,94.951A0.58,0.58 0,0 1,55.013 95.531L44.372,95.531A0.58,0.58 0,0 1,43.792 94.951L43.792,94.941A0.58,0.58 0,0 1,44.372 94.361z"
-        android:strokeWidth="1"
-        android:fillColor="#5F6368"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M45.435,96.539L53.95,96.539A0.526,0.526 0,0 1,54.476 97.065L54.476,97.065A0.526,0.526 0,0 1,53.95 97.591L45.435,97.591A0.526,0.526 0,0 1,44.909 97.065L44.909,97.065A0.526,0.526 0,0 1,45.435 96.539z"
-        android:strokeWidth="1"
-        android:fillColor="#5F6368"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M77.051,78.327L87.692,78.327A0.58,0.58 0,0 1,88.272 78.907L88.272,78.918A0.58,0.58 0,0 1,87.692 79.498L77.051,79.498A0.58,0.58 0,0 1,76.471 78.918L76.471,78.907A0.58,0.58 0,0 1,77.051 78.327z"
-        android:strokeWidth="1"
-        android:fillColor="#5F6368"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M78.114,80.514L86.629,80.514A0.526,0.526 0,0 1,87.155 81.04L87.155,81.04A0.526,0.526 0,0 1,86.629 81.566L78.114,81.566A0.526,0.526 0,0 1,77.588 81.04L77.588,81.04A0.526,0.526 0,0 1,78.114 80.514z"
-        android:strokeWidth="1"
-        android:fillColor="#5F6368"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M49.693,88.671C48.422,88.672 47.235,88.035 46.534,86.975C46.534,85.931 48.64,85.359 49.693,85.359C50.746,85.359 52.843,85.931 52.852,86.975C52.15,88.035 50.964,88.672 49.693,88.671L49.693,88.671ZM49.693,81.194C50.332,81.194 50.907,81.579 51.152,82.169C51.396,82.759 51.261,83.438 50.81,83.89C50.358,84.341 49.678,84.476 49.088,84.232C48.498,83.988 48.113,83.412 48.113,82.773C48.113,81.901 48.82,81.194 49.693,81.194ZM49.693,79.616C47.558,79.612 45.632,80.895 44.813,82.866C43.994,84.837 44.445,87.107 45.954,88.615C47.464,90.124 49.735,90.575 51.706,89.757C53.678,88.938 54.961,87.013 54.958,84.879C54.958,81.972 52.6,79.616 49.693,79.616Z"
-        android:strokeWidth="1"
-        android:fillColor="#5F6368"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M82.371,69.534C81.081,69.536 79.876,68.888 79.167,67.81C79.167,66.749 81.3,66.168 82.371,66.168C83.442,66.168 85.567,66.749 85.576,67.81C84.867,68.889 83.662,69.537 82.371,69.534L82.371,69.534ZM82.371,61.948C83.022,61.948 83.608,62.341 83.857,62.942C84.105,63.543 83.966,64.235 83.504,64.693C83.043,65.152 82.35,65.287 81.75,65.036C81.15,64.784 80.761,64.196 80.765,63.545C80.765,63.12 80.934,62.713 81.236,62.413C81.537,62.113 81.946,61.946 82.371,61.948ZM82.371,60.342C80.206,60.328 78.245,61.62 77.406,63.616C76.567,65.612 77.015,67.917 78.542,69.453C80.068,70.989 82.37,71.453 84.373,70.628C86.375,69.803 87.682,67.852 87.682,65.687C87.682,62.749 85.31,60.362 82.371,60.342L82.371,60.342Z"
-        android:strokeWidth="1"
-        android:fillColor="#5F6368"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M143.79,50.334L143.79,39.445C143.79,38.892 143.343,38.445 142.79,38.445C142.238,38.445 141.79,38.892 141.79,39.445L141.79,50.334C141.79,50.886 142.238,51.334 142.79,51.334C143.343,51.334 143.79,50.886 143.79,50.334Z"
-        android:strokeWidth="1"
-        android:fillColor="#FED563"
-        android:strokeColor="#FED563"/>
-    <path
-        android:pathData="M95.977,62.92L87.218,54.163C86.827,53.773 86.194,53.773 85.803,54.164C85.413,54.554 85.413,55.187 85.804,55.578L94.563,64.334C94.954,64.725 95.587,64.725 95.977,64.334C96.368,63.943 96.368,63.31 95.977,62.92Z"
-        android:strokeWidth="1"
-        android:fillColor="#FED563"
-        android:strokeColor="#FED563"/>
-    <path
-        android:pathData="M191.008,64.335L199.777,55.578C200.167,55.188 200.168,54.555 199.778,54.164C199.387,53.773 198.754,53.773 198.363,54.163L189.595,62.919C189.204,63.31 189.203,63.943 189.594,64.334C189.984,64.724 190.617,64.725 191.008,64.335Z"
-        android:strokeWidth="1"
-        android:fillColor="#FED563"
-        android:strokeColor="#FED563"/>
-    <path
-        android:pathData="M26.684,36.882C22.714,38.091 20.001,41.752 20,45.9C20,46.452 20.447,46.9 21,46.9C21.552,46.9 22,46.453 22,45.9C22.001,42.632 24.138,39.748 27.266,38.795C30.394,37.843 33.778,39.045 35.602,41.758L36.015,42.373L36.724,42.156C37.096,42.042 37.482,41.984 37.87,41.982C38.905,41.982 39.903,42.395 40.638,43.13C41.373,43.865 41.786,44.861 41.786,45.9C41.786,46.452 42.233,46.9 42.786,46.9C43.338,46.9 43.786,46.452 43.786,45.9C43.786,44.331 43.162,42.825 42.052,41.715C40.941,40.605 39.436,39.982 37.866,39.982C37.523,39.984 37.182,40.014 36.848,40.073C34.459,37.034 30.427,35.742 26.684,36.882Z"
-        android:strokeWidth="1"
-        android:fillColor="#5F6368"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M37.893,39.982C36.323,39.982 34.817,40.607 33.708,41.719C33.318,42.11 33.319,42.743 33.71,43.133C34.101,43.523 34.734,43.522 35.124,43.131C35.858,42.396 36.854,41.982 37.893,41.982C38.445,41.982 38.893,41.534 38.893,40.982C38.893,40.43 38.445,39.982 37.893,39.982Z"
-        android:strokeWidth="1"
-        android:fillColor="#5F6368"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M80.182,23.374C78.614,23.371 77.106,23.993 75.995,25.104C74.884,26.215 74.261,27.722 74.264,29.294C74.265,29.846 74.713,30.293 75.266,30.292C75.818,30.291 76.265,29.842 76.264,29.29C76.262,28.251 76.674,27.253 77.409,26.519C78.144,25.784 79.142,25.372 80.182,25.374C80.573,25.373 80.96,25.429 81.332,25.54L82.037,25.751L82.448,25.14C84.273,22.426 87.658,21.224 90.787,22.179C93.916,23.134 96.052,26.021 96.05,29.291C96.049,29.843 96.496,30.291 97.049,30.292C97.601,30.292 98.049,29.845 98.05,29.292C98.053,25.142 95.341,21.478 91.371,20.266C87.625,19.123 83.589,20.416 81.199,23.459C80.864,23.402 80.524,23.373 80.182,23.374Z"
-        android:strokeWidth="1"
-        android:fillColor="#5F6368"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M80.19,25.373C81.233,25.367 82.235,25.78 82.968,26.52C83.357,26.913 83.99,26.915 84.383,26.526C84.775,26.138 84.778,25.505 84.389,25.112C83.276,23.99 81.758,23.363 80.177,23.374C79.625,23.377 79.18,23.828 79.184,24.38C79.187,24.932 79.638,25.377 80.19,25.373Z"
-        android:strokeWidth="1"
-        android:fillColor="#5F6368"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M273.957,67.244C270.689,67.244 268.039,69.893 268.039,73.162C268.039,73.714 268.486,74.162 269.039,74.162C269.591,74.162 270.039,73.714 270.039,73.162C270.039,70.998 271.793,69.244 273.958,69.244C274.348,69.243 274.734,69.3 275.106,69.411L275.812,69.622L276.223,69.011C278.047,66.297 281.433,65.095 284.562,66.049C287.69,67.004 289.827,69.891 289.824,73.161C289.824,73.714 290.271,74.162 290.823,74.162C291.376,74.162 291.824,73.715 291.824,73.163C291.828,69.013 289.116,65.348 285.146,64.136C281.399,62.993 277.363,64.287 274.974,67.329C274.638,67.272 274.298,67.243 273.957,67.244Z"
-        android:strokeWidth="1"
-        android:fillColor="#5F6368"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M273.956,69.244C274.982,69.247 275.966,69.659 276.688,70.39C277.076,70.782 277.709,70.786 278.102,70.398C278.495,70.01 278.498,69.377 278.11,68.984C277.014,67.875 275.521,67.249 273.961,67.244C273.409,67.242 272.96,67.689 272.958,68.241C272.957,68.793 273.403,69.242 273.956,69.244Z"
-        android:strokeWidth="1"
-        android:fillColor="#5F6368"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M97.59,67.919L184.886,67.919A5.37,5.37 0,0 1,190.256 73.289L190.256,91.586A5.37,5.37 0,0 1,184.886 96.956L97.59,96.956A5.37,5.37 0,0 1,92.22 91.586L92.22,73.289A5.37,5.37 0,0 1,97.59 67.919z"
-        android:strokeWidth="1"
-        android:fillColor="#8AB4F8"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M174.824,73.364L174.824,73.364A0.908,0.908 0,0 1,175.732 74.271L175.732,90.604A0.908,0.908 0,0 1,174.824 91.512L174.824,91.512A0.908,0.908 0,0 1,173.917 90.604L173.917,74.271A0.908,0.908 0,0 1,174.824 73.364z"
-        android:strokeWidth="1"
-        android:fillColor="#F28B82"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M103.113,81.303h14.524v2.269h-14.524z"
-        android:strokeWidth="1"
-        android:fillColor="#5F6368"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M107.725,75.583l7.262,12.573l-1.965,1.134l-7.262,-12.573z"
-        android:strokeWidth="1"
-        android:fillColor="#5F6368"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M114.987,76.717l-7.262,12.573l-1.965,-1.134l7.262,-12.573z"
-        android:strokeWidth="1"
-        android:fillColor="#5F6368"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M126.714,81.303h14.524v2.269h-14.524z"
-        android:strokeWidth="1"
-        android:fillColor="#5F6368"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M131.327,75.58l7.262,12.573l-1.965,1.134l-7.262,-12.573z"
-        android:strokeWidth="1"
-        android:fillColor="#5F6368"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M138.589,76.714l-7.262,12.573l-1.965,-1.134l7.262,-12.573z"
-        android:strokeWidth="1"
-        android:fillColor="#5F6368"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M150.315,81.303h14.524v2.269h-14.524z"
-        android:strokeWidth="1"
-        android:fillColor="#5F6368"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M154.928,75.586l7.262,12.573l-1.965,1.134l-7.262,-12.573z"
-        android:strokeWidth="1"
-        android:fillColor="#5F6368"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M162.19,76.72l-7.262,12.573l-1.965,-1.134l7.262,-12.573z"
-        android:strokeWidth="1"
-        android:fillColor="#5F6368"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M186.308,120.417C184.774,120.647 182.788,122.647 179.9,126.527C177.035,130.381 176.077,132.137 176.361,133.732C176.677,135.615 178.436,136.273 181.425,135.998C182.325,135.916 183.274,135.754 184.359,135.518C184.799,135.422 186.275,135.072 186.529,135.021L208.909,130.636L208.909,117.526C208.904,117.524 208.898,117.523 208.893,117.521C208.6,117.438 208.272,117.354 207.918,117.276C206.849,117.041 205.778,116.906 204.789,116.922C203.675,116.941 202.745,117.153 202.057,117.58C201.224,118.097 200.56,118.868 199.628,120.263C199.566,120.355 199.052,121.135 198.901,121.358C197.785,123.005 196.966,123.777 195.794,123.93C194.65,124.079 194.132,123.822 191.339,122.087C189.135,120.718 187.787,120.201 186.308,120.417Z"
-        android:strokeWidth="1"
-        android:fillColor="#FED563"
-        android:strokeColor="#FED563"/>
-    <path
-        android:pathData="M175.85,133.815L209.391,127.699L209.391,123.552L176.885,130.04C176.885,130.04 175.442,132.672 175.85,133.815Z"
-        android:strokeAlpha="0.1"
-        android:strokeWidth="1"
-        android:fillColor="#231F20"
-        android:strokeColor="#00000000"
-        android:fillAlpha="0.1"/>
-    <path
-        android:pathData="M220.266,106.539C212.135,106.539 205.543,113.128 205.543,121.256C205.543,129.385 212.135,135.974 220.266,135.974C228.397,135.974 234.989,129.385 234.989,121.256C234.989,113.128 228.397,106.539 220.266,106.539ZM225.076,124.052C223.467,124.052 222.017,123.082 221.402,121.596C220.787,120.109 221.129,118.398 222.269,117.262C223.408,116.126 225.12,115.789 226.606,116.407C228.091,117.026 229.058,118.478 229.053,120.086C229.053,121.14 228.634,122.15 227.888,122.894C227.141,123.638 226.13,124.055 225.076,124.052Z"
-        android:strokeWidth="1"
-        android:fillColor="#FED563"
-        android:strokeColor="#FED563"/>
-    <path
-        android:pathData="M220.266,136.474C228.673,136.474 235.489,129.661 235.489,121.256C235.489,112.852 228.673,106.039 220.266,106.039L220.266,136.474ZM225.077,123.552C223.67,123.552 222.402,122.704 221.864,121.405C221.326,120.105 221.625,118.609 222.622,117.616C223.618,116.623 225.115,116.328 226.414,116.869C227.712,117.409 228.557,118.679 228.553,120.086C228.553,121.007 228.187,121.89 227.535,122.54C226.882,123.19 225.998,123.555 225.077,123.552Z"
-        android:strokeWidth="1"
-        android:fillColor="#FDE293"
-        android:strokeColor="#00000000"/>
+<!--Copyright 2019 The Chromium Authors. All rights reserved. Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.-->
+<!--VectorRaster is ignored because: 1. The image should be shown rarely enough to prioritize binary size over inflation time. 2. Area-wise it's less than 63% of the recommended 200dp x 200dp limit.-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:width="224dp" android:height="112dp" android:viewportWidth="312" android:viewportHeight="156" tools:targetApi="21" tools:ignore="VectorRaster">
+    <path android:pathData="M146.385 114.133a24.772 2.241 0 1 0 49.544 0 24.772 2.241 0 1 0-49.544 0zm-128.726 3.439a24.772 2.241 0 1 0 49.544 0 24.772 2.241 0 1 0-49.544 0zm160.996 14.564v4.446h43.19v-8.884z" android:strokeAlpha="0.16272135" android:strokeWidth="1" android:fillColor="#EDEDED" android:fillAlpha="0.16272135"/>
+    <path android:pathData="M168.243 109.143V50.86c0-2.506 2.032-4.537 4.539-4.537h6.581v62.82h-11.12z" android:strokeWidth="1" android:fillColor="#414447"/>
+    <path android:pathData="M178.455 47.23v61.005h-9.304V50.86c0-2.005 1.626-3.63 3.631-3.63h5.673zm1.816-1.815h-7.489c-3.008 0-5.446 2.438-5.446 5.445v59.19h12.935V45.415z" android:strokeWidth="1" android:fillColor="#5F6368"/>
+    <path android:pathData="M172.555 109.143V50.86c0-2.506 2.032-4.537 4.539-4.537h71.003c2.507 0 4.539 2.031 4.539 4.537v58.283h-80.081z" android:strokeWidth="1" android:fillColor="#414447"/>
+    <path android:pathData="M248.097 47.23c2.005 0 3.631 1.625 3.631 3.63v57.375h-78.265V50.86c0-2.005 1.625-3.63 3.631-3.63h71.003zm0-1.815h-71.003c-3.008 0-5.447 2.438-5.447 5.445v59.19h81.896V50.86c0-3.007-2.438-5.445-5.446-5.445z" android:strokeWidth="1" android:fillColor="#5F6368"/>
+    <path android:pathData="M172.782 115.603c-2.507 0-4.539-2.031-4.539-4.537v-2.259h56.38v6.796h-51.841z" android:strokeWidth="1" android:fillColor="#414447"/>
+    <path android:pathData="M223.715 109.714v4.982h-50.933c-2.005 0-3.631-1.625-3.631-3.63v-1.352h54.564zm1.816-1.815h-58.195v3.167c0 3.007 2.438 5.445 5.446 5.445h52.749v-8.612z" android:strokeWidth="1" android:fillColor="#5F6368"/>
+    <path android:pathData="M222.354 115.603c-2.507 0-4.539-2.031-4.539-4.537v-2.259h82.277v2.259c0 2.506-2.032 4.537-4.538 4.537h-73.2z" android:strokeWidth="1" android:fillColor="#414447"/>
+    <path android:pathData="M299.185 109.714v1.352c0 2.005-1.626 3.63-3.631 3.63H222.39c-2.005 0-3.631-1.625-3.631-3.63v-1.352h80.426zm1.815-1.815h-84.057v3.167c0 3.007 2.439 5.445 5.447 5.445h73.164c3.008 0 5.446-2.438 5.446-5.445v-3.167z" android:strokeWidth="1" android:fillColor="#5F6368"/>
+    <path android:pathData="M266.397 112.21h-14.923c-0.88 0-1.725-0.351-2.346-0.974-0.622-0.623-0.97-1.468-0.967-2.347v-0.99h21.549v0.971c0.008 0.883-0.338 1.733-0.96 2.36-0.623 0.627-1.47 0.98-2.353 0.98z" android:strokeWidth="1" android:fillColor="#5F6368"/>
+    <path android:pathData="M179.018 52.793h67.154v49.889h-67.154z" android:strokeWidth="1" android:fillColor="#303030"/>
+    <path android:pathData="M245.265 53.7v48.093h-65.357V53.7h65.357zm1.815-1.815h-68.988v51.722h68.988V51.885z" android:strokeWidth="1" android:fillColor="#5F6368"/>
+    <path android:pathData="M213.738 75.995h16.214a0.58 0.58 0 0 1 0.58 0.58v0.011a0.58 0.58 0 0 1-0.58 0.58h-16.214a0.58 0.58 0 0 1-0.58-0.58v-0.011a0.58 0.58 0 0 1 0.58-0.58zm-0.054 2.187h13.036a0.526 0.526 0 0 1 0.526 0.526 0.526 0.526 0 0 1-0.526 0.526h-13.036a0.526 0.526 0 0 1-0.526-0.526 0.526 0.526 0 0 1 0.526-0.526zm-11.074 4.074c-1.364 0.003-2.639-0.679-3.395-1.815 0-1.125 2.261-1.742 3.395-1.742 1.135 0 3.377 0.617 3.395 1.742-0.755 1.136-2.03 1.818-3.395 1.815zm0-8.04c0.691-0.003 1.316 0.41 1.583 1.047 0.267 0.637 0.124 1.373-0.364 1.862-0.487 0.49-1.222 0.638-1.861 0.374-0.638-0.263-1.055-0.886-1.055-1.577-0.003-0.451 0.175-0.885 0.494-1.205 0.318-0.321 0.751-0.501 1.203-0.501zm0-1.696c-3.128 0-5.664 2.535-5.664 5.662s2.536 5.662 5.664 5.662c3.129 0 5.665-2.535 5.665-5.662-0.005-3.125-2.539-5.657-5.665-5.662z" android:strokeWidth="1" android:fillColor="#5F6368"/>
+    <path android:pathData="M61.047 44.98h42.649a5 5 0 0 1 5 5v64.407a5 5 0 0 1-5 5H61.047a5 5 0 0 1-5-5V49.98a5 5 0 0 1 5-5z" android:strokeWidth="1" android:fillColor="#414447"/>
+    <path android:pathData="M104.157 45.887c2.005 0 3.631 1.625 3.631 3.63v65.333c0 2.005-1.626 3.63-3.631 3.63H60.586c-2.006 0-3.631-1.625-3.631-3.63V49.517c0-2.005 1.625-3.63 3.631-3.63h43.571zm0-1.815H60.586c-3.008 0-5.447 2.438-5.447 5.445v65.333c0 3.007 2.439 5.445 5.447 5.445h43.571c3.008 0 5.446-2.438 5.446-5.445V49.517c0-3.007-2.438-5.445-5.446-5.445z" android:strokeWidth="1" android:fillColor="#5F6368"/>
+    <path android:pathData="M61.493 50.424h41.756v63.519H61.493z" android:strokeWidth="1" android:fillColor="#303030"/>
+    <path android:pathData="M102.342 51.332v61.703H62.401V51.332h39.941zm1.815-1.815H60.586v65.333h43.571V49.517z" android:strokeWidth="1" android:fillColor="#5F6368"/>
+    <path android:pathData="M39.261 63.128h20.863a5 5 0 0 1 5 5v46.259a5 5 0 0 1-5 5H39.261a5 5 0 0 1-5-5V68.128a5 5 0 0 1 5-5z" android:strokeWidth="1" android:fillColor="#414447"/>
+    <path android:pathData="M60.586 64.035c2.005 0 3.631 1.625 3.631 3.63v47.185c0 2.005-1.626 3.63-3.631 3.63H38.8c-2.005 0-3.631-1.625-3.631-3.63V67.665c0-2.005 1.626-3.63 3.631-3.63h21.786zm0-1.814H38.8c-3.008 0-5.447 2.437-5.447 5.444v47.185c0 3.007 2.439 5.445 5.447 5.445h21.786c3.008 0 5.446-2.438 5.446-5.445V67.665c0-3.007-2.438-5.444-5.446-5.444z" android:strokeWidth="1" android:fillColor="#5F6368"/>
+    <path android:pathData="M33.353 71.295h32.679v1.815H33.353zm0 39.926h32.679v1.815H33.353z" android:strokeWidth="1" android:fillColor="#5F6368"/>
+    <path android:pathData="M35.169 73.109h29.048v38.111H35.169z" android:strokeWidth="1" android:fillColor="#303030"/>
+    <path android:pathData="M43.338 66.758h12.709a0.907 0.907 0 0 1 0.908 0.907 0.907 0.907 0 0 1-0.908 0.907H43.338a0.907 0.907 0 0 1-0.907-0.907 0.907 0.907 0 0 1 0.907-0.907zm1.034 27.603h10.641a0.58 0.58 0 0 1 0.58 0.58v0.01a0.58 0.58 0 0 1-0.58 0.58H44.372a0.58 0.58 0 0 1-0.58-0.58v-0.01a0.58 0.58 0 0 1 0.58-0.58zm1.063 2.178h8.515a0.526 0.526 0 0 1 0.526 0.526 0.526 0.526 0 0 1-0.526 0.526h-8.515a0.526 0.526 0 0 1-0.526-0.526 0.526 0.526 0 0 1 0.526-0.526zm31.616-18.212h10.641a0.58 0.58 0 0 1 0.58 0.58v0.011a0.58 0.58 0 0 1-0.58 0.58H77.051a0.58 0.58 0 0 1-0.58-0.58v-0.011a0.58 0.58 0 0 1 0.58-0.58zm1.063 2.187h8.515a0.526 0.526 0 0 1 0.526 0.526 0.526 0.526 0 0 1-0.526 0.526h-8.515a0.526 0.526 0 0 1-0.526-0.526 0.526 0.526 0 0 1 0.526-0.526zm-28.421 8.157c-1.271 0.001-2.458-0.636-3.159-1.696 0-1.044 2.106-1.616 3.159-1.616s3.15 0.572 3.159 1.616c-0.702 1.06-1.888 1.697-3.159 1.696zm0-7.477c0.639 0 1.214 0.385 1.459 0.975 0.244 0.59 0.109 1.269-0.342 1.721-0.452 0.451-1.132 0.586-1.722 0.342-0.59-0.244-0.975-0.82-0.975-1.459 0-0.872 0.707-1.579 1.58-1.579zm0-1.578c-2.135-0.004-4.061 1.279-4.88 3.25s-0.368 4.241 1.141 5.749c1.51 1.509 3.781 1.96 5.752 1.142 1.972-0.819 3.255-2.744 3.252-4.878 0-2.907-2.358-5.263-5.265-5.263zm32.678-10.082c-1.29 0.002-2.495-0.646-3.204-1.724 0-1.061 2.133-1.642 3.204-1.642 1.071 0 3.196 0.581 3.205 1.642-0.709 1.079-1.914 1.727-3.205 1.724zm0-7.586c0.651 0 1.237 0.393 1.486 0.994 0.248 0.601 0.109 1.293-0.353 1.751-0.461 0.459-1.154 0.594-1.754 0.343-0.6-0.252-0.989-0.84-0.985-1.491 0-0.425 0.169-0.832 0.471-1.132 0.301-0.3 0.71-0.467 1.135-0.465zm0-1.606c-2.165-0.014-4.126 1.278-4.965 3.274-0.839 1.996-0.391 4.301 1.136 5.837 1.526 1.536 3.828 2 5.831 1.175 2.002-0.825 3.309-2.776 3.309-4.941 0-2.938-2.372-5.325-5.311-5.345z" android:strokeWidth="1" android:fillColor="#5F6368"/>
+    <path android:pathData="M143.79 50.334V39.445c0-0.553-0.447-1-1-1-0.552 0-1 0.447-1 1v10.889c0 0.552 0.448 1 1 1 0.553 0 1-0.448 1-1zM95.977 62.92l-8.759-8.757c-0.391-0.39-1.024-0.39-1.415 0.001-0.39 0.39-0.39 1.023 0.001 1.414l8.759 8.756c0.391 0.391 1.024 0.391 1.414 0 0.391-0.391 0.391-1.024 0-1.414zm95.031 1.415l8.769-8.757c0.39-0.39 0.391-1.023 0.001-1.414-0.391-0.391-1.024-0.391-1.415-0.001l-8.768 8.756c-0.391 0.391-0.392 1.024-0.001 1.415 0.39 0.39 1.023 0.391 1.414 0.001z" android:strokeWidth="1" android:fillColor="#FED563" android:strokeColor="#FED563"/>
+    <path android:pathData="M26.684 36.882c-3.97 1.209-6.683 4.87-6.684 9.018 0 0.552 0.447 1 1 1 0.552 0 1-0.447 1-1 0.001-3.268 2.138-6.152 5.266-7.105 3.128-0.952 6.512 0.25 8.336 2.963l0.413 0.615 0.709-0.217c0.372-0.114 0.758-0.172 1.146-0.174 1.035 0 2.033 0.413 2.768 1.148 0.735 0.735 1.148 1.731 1.148 2.77 0 0.552 0.447 1 1 1 0.552 0 1-0.448 1-1 0-1.569-0.624-3.075-1.734-4.185-1.111-1.11-2.616-1.733-4.186-1.733-0.343 0.002-0.684 0.032-1.018 0.091-2.389-3.039-6.421-4.331-10.164-3.191z" android:strokeWidth="1" android:fillColor="#5F6368"/>
+    <path android:pathData="M37.893 39.982c-1.57 0-3.076 0.625-4.185 1.737-0.39 0.391-0.389 1.024 0.002 1.414 0.391 0.39 1.024 0.389 1.414-0.002 0.734-0.735 1.73-1.149 2.769-1.149 0.552 0 1-0.448 1-1s-0.448-1-1-1zm42.289-16.608c-1.568-0.003-3.076 0.619-4.187 1.73-1.111 1.111-1.734 2.618-1.731 4.19 0.001 0.552 0.449 0.999 1.002 0.998 0.552-0.001 0.999-0.45 0.998-1.002-0.002-1.039 0.41-2.037 1.145-2.771 0.735-0.735 1.733-1.147 2.773-1.145 0.391-0.001 0.778 0.055 1.15 0.166l0.705 0.211 0.411-0.611c1.825-2.714 5.21-3.916 8.339-2.961 3.129 0.955 5.265 3.842 5.263 7.112-0.001 0.552 0.446 1 0.999 1.001 0.552 0 1-0.447 1.001-1 0.003-4.15-2.709-7.814-6.679-9.026-3.746-1.143-7.782 0.15-10.172 3.193-0.335-0.057-0.675-0.086-1.017-0.085z" android:strokeWidth="1" android:fillColor="#5F6368"/>
+    <path android:pathData="M80.19 25.373c1.043-0.006 2.045 0.407 2.778 1.147 0.389 0.393 1.022 0.395 1.415 0.006 0.392-0.388 0.395-1.021 0.006-1.414-1.113-1.122-2.631-1.749-4.212-1.738-0.552 0.003-0.997 0.454-0.993 1.006 0.003 0.552 0.454 0.997 1.006 0.993zm193.767 41.871c-3.268 0-5.918 2.649-5.918 5.918 0 0.552 0.447 1 1 1 0.552 0 1-0.448 1-1 0-2.164 1.754-3.918 3.919-3.918 0.39-0.001 0.776 0.056 1.148 0.167l0.706 0.211 0.411-0.611c1.824-2.714 5.21-3.916 8.339-2.962 3.128 0.955 5.265 3.842 5.262 7.112 0 0.553 0.447 1.001 0.999 1.001 0.553 0 1.001-0.447 1.001-0.999 0.004-4.15-2.708-7.815-6.678-9.027-3.747-1.143-7.783 0.151-10.172 3.193-0.336-0.057-0.676-0.086-1.017-0.085z" android:strokeWidth="1" android:fillColor="#5F6368"/>
+    <path android:pathData="M273.956 69.244c1.026 0.003 2.01 0.415 2.732 1.146 0.388 0.392 1.021 0.396 1.414 0.008s0.396-1.021 0.008-1.414c-1.096-1.109-2.589-1.735-4.149-1.74-0.552-0.002-1.001 0.445-1.003 0.997-0.001 0.552 0.445 1.001 0.998 1.003z" android:strokeWidth="1" android:fillColor="#5F6368"/>
+    <path android:pathData="M97.59 67.919h87.296a5.37 5.37 0 0 1 5.37 5.37v18.297a5.37 5.37 0 0 1-5.37 5.37H97.59a5.37 5.37 0 0 1-5.37-5.37V73.289a5.37 5.37 0 0 1 5.37-5.37z" android:strokeWidth="1" android:fillColor="#8AB4F8"/>
+    <path android:pathData="M174.824 73.364a0.908 0.908 0 0 1 0.908 0.907v16.333a0.908 0.908 0 0 1-0.908 0.908 0.908 0.908 0 0 1-0.907-0.908V74.271a0.908 0.908 0 0 1 0.907-0.907z" android:strokeWidth="1" android:fillColor="#F28B82"/>
+    <path android:pathData="M103.113 81.303h14.524v2.269h-14.524z" android:strokeWidth="1" android:fillColor="#5F6368"/>
+    <path android:pathData="M107.725 75.583l7.262 12.573-1.965 1.134-7.262-12.573z" android:strokeWidth="1" android:fillColor="#5F6368"/>
+    <path android:pathData="M114.987 76.717l-7.262 12.573-1.965-1.134 7.262-12.573zm11.727 4.586h14.524v2.269h-14.524z" android:strokeWidth="1" android:fillColor="#5F6368"/>
+    <path android:pathData="M131.327 75.58l7.262 12.573-1.965 1.134-7.262-12.573z" android:strokeWidth="1" android:fillColor="#5F6368"/>
+    <path android:pathData="M138.589 76.714l-7.262 12.573-1.965-1.134 7.262-12.573zm11.726 4.589h14.524v2.269h-14.524z" android:strokeWidth="1" android:fillColor="#5F6368"/>
+    <path android:pathData="M154.928 75.586l7.262 12.573-1.965 1.134-7.262-12.573z" android:strokeWidth="1" android:fillColor="#5F6368"/>
+    <path android:pathData="M162.19 76.72l-7.262 12.573-1.965-1.134 7.262-12.573z" android:strokeWidth="1" android:fillColor="#5F6368"/>
+    <path android:pathData="M186.308 120.417c-1.534 0.23-3.52 2.23-6.408 6.11-2.865 3.854-3.823 5.61-3.539 7.205 0.316 1.883 2.075 2.541 5.064 2.266 0.9-0.082 1.849-0.244 2.934-0.48 0.44-0.096 1.916-0.446 2.17-0.497l22.38-4.385v-13.11l-0.016-0.005c-0.293-0.083-0.621-0.167-0.975-0.245-1.069-0.235-2.14-0.37-3.129-0.354-1.114 0.019-2.044 0.231-2.732 0.658-0.833 0.517-1.497 1.288-2.429 2.683-0.062 0.092-0.576 0.872-0.727 1.095-1.116 1.647-1.935 2.419-3.107 2.572-1.144 0.149-1.662-0.108-4.455-1.843-2.204-1.369-3.552-1.886-5.031-1.67z" android:strokeWidth="1" android:fillColor="#FED563" android:strokeColor="#FED563"/>
+    <path android:pathData="M175.85 133.815l33.541-6.116v-4.147l-32.506 6.488s-1.443 2.632-1.035 3.775z" android:strokeAlpha="0.1" android:strokeWidth="1" android:fillColor="#231F20" android:fillAlpha="0.1"/>
+    <path android:pathData="M220.266 106.539c-8.131 0-14.723 6.589-14.723 14.717 0 8.129 6.592 14.718 14.723 14.718s14.723-6.589 14.723-14.718c0-8.128-6.592-14.717-14.723-14.717zm4.81 17.513c-1.609 0-3.059-0.97-3.674-2.456-0.615-1.487-0.273-3.198 0.867-4.334 1.139-1.136 2.851-1.473 4.337-0.855 1.485 0.619 2.452 2.071 2.447 3.679 0 1.054-0.419 2.064-1.165 2.808-0.747 0.744-1.758 1.161-2.812 1.158z" android:strokeWidth="1" android:fillColor="#FED563" android:strokeColor="#FED563"/>
+    <path android:pathData="M220.266 136.474c8.407 0 15.223-6.813 15.223-15.218 0-8.404-6.816-15.217-15.223-15.217v30.435zm4.811-12.922c-1.407 0-2.675-0.848-3.213-2.147-0.538-1.3-0.239-2.796 0.758-3.789 0.996-0.993 2.493-1.288 3.792-0.747 1.298 0.54 2.143 1.81 2.139 3.217 0 0.921-0.366 1.804-1.018 2.454-0.653 0.65-1.537 1.015-2.458 1.012z" android:strokeWidth="1" android:fillColor="#FDE293"/>
 </vector>
diff --git a/chrome/browser/touch_to_fill/android/internal/java/res/drawable-night/touch_to_fill_new_header_image.xml b/chrome/browser/touch_to_fill/android/internal/java/res/drawable-night/touch_to_fill_new_header_image.xml
new file mode 100644
index 0000000..b8499ca
--- /dev/null
+++ b/chrome/browser/touch_to_fill/android/internal/java/res/drawable-night/touch_to_fill_new_header_image.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Copyright 2021 The Chromium Authors. All rights reserved. Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.-->
+<!--VectorRaster is ignored because: The image should be shown rarely enough to prioritize binary size over inflation time.-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:width="320dp" android:height="114dp" android:viewportWidth="320" android:viewportHeight="114" tools:targetApi="21" tools:ignore="VectorRaster">
+    <path android:pathData="M238.097 60.783a6.041 6.041 0 1 0 0 8.544 6.041 6.041 0 0 0 0-8.544z" android:fillColor="#123868"/>
+    <path android:pathData="M242.89 84.786l-5.223-4.66 6.204-6.952-8.101-4.275 3.267-6.191 12.058 6.362a3.5 3.5 0 0 1 0.978 5.426z" android:fillColor="#154279"/>
+    <path android:pathData="M267.941 107.294a13.593 13.593 0 1 1 13.593-13.593 13.609 13.609 0 0 1-13.593 13.593zm0-25.686a12.093 12.093 0 1 0 12.093 12.093 12.107 12.107 0 0 0-12.093-12.093z" android:fillColor="#dadce0"/>
+    <path android:pathData="M268.705 70.641a3.058 3.058 0 0 0-0.834-1.57c-1.158-1.024-2.094-0.52-2.775-0.753a4.418 4.418 0 0 1-1.418-1.07l-4.816-5.949-3.024 2.477 6.286 6.474 0.044-0.039c1.186 0.894 2.262 0.224 3.437 0.635 1.291 0.451 1.131 2.162 1.131 2.162l0.481-0.091a1.875 1.875 0 0 0 1.488-2.276z" android:fillColor="#be6d42"/>
+    <path android:pathData="M227.936 107.294a13.593 13.593 0 1 1 13.593-13.593 13.608 13.608 0 0 1-13.593 13.593zm0-25.686a12.093 12.093 0 1 0 12.093 12.093 12.106 12.106 0 0 0-12.093-12.093z" android:fillColor="#dadce0"/>
+    <path android:pathData="M268.636 93.797l-9.085-22.368h5.392a1.663 1.663 0 0 1 1.53 2.314l-1.042 2.447a0.75 0.75 0 0 0 1.38 0.588l1.042-2.447a3.163 3.163 0 0 0-2.91-4.402h-6.506a0.75 0.75 0 0 0-0.695 1.032l1.292 3.181-18.948 3.069a0.751 0.751 0 0 0-0.471 0.28l-12.27 15.75a0.75 0.75 0 0 0 0.591 1.21h16.481a0.751 0.751 0 0 0 0.286-0.058 0.74 0.74 0 0 0 0.17-0.112 0.703 0.703 0 0 0 0.072-0.047l15.86-15.73 6.442 15.858a0.75 0.75 0 0 0 1.39-0.565zm-8.513-16.729l-16.015 15.883H229.47l11.146-14.306 18.996-3.077 0.588 1.449a0.704 0.704 0 0 0-0.078 0.051z" android:fillColor="#8ab4f8"/>
+    <path android:pathData="M259.503 60.774l-8.685-10.606-0.002 0.002-1.062-1.297a4.7 4.7 0 0 0-6.07-1.043l-15.28 9.245 9 10.733 9.795-11.01 6.888 8.412z" android:fillColor="#1db287"/>
+    <path android:pathData="M249.543 45.343a3.985 3.985 0 1 1 7.97 0 3.985 3.985 0 1 1-7.97 0" android:fillColor="#be6d42"/>
+    <path android:pathData="M254.303 41.435a3.967 3.967 0 0 0-3.832 1.38l-11.384 0.276a4.09 4.09 0 0 0 6.217 3.392l4.624-2.821a3.766 3.766 0 0 0-0.223 2.745 4.497 4.497 0 0 0 6.341-4.129 3.94 3.94 0 0 0-1.743-0.843z" android:fillColor="#5f6368"/>
+    <path android:pathData="M254.53 38.661a6.33 6.33 0 0 0-6.425 2.596l3.099 2.714 0.555 5.028 0.879 0.268 3.673-4.35 3.084 1.64 0.008-0.003a6.33 6.33 0 0 0-4.873-7.893zm-1.905 9.07l-0.444-4.028 1.126-0.384 2.101 1.118z" android:fillColor="#dadce0"/>
+    <path android:pathData="M256.882 43.342a3.926 3.926 0 0 0-2.778-2.17l0.292-1.472a5.434 5.434 0 0 1 3.843 3.003z" android:fillColor="#bdc1c6"/>
+    <path android:pathData="M245.398 94.449h-7v-14.52l-9.305-11.097 5.363-4.498 10.124 12.072a3.5 3.5 0 0 1 0.818 2.25z" android:fillColor="#123868"/>
+    <path android:pathData="M214.374 106.923a0.75 0.75 0 0 1-0.75 0.75c-39.75 0-69.675-12.702-93.721-22.908-11.988-5.089-22.342-9.483-31.783-11.44-34.086-7.063-61.762 8.126-62.038 8.28a0.75 0.75 0 1 1-0.732-1.309c0.28-0.156 28.443-15.616 63.074-8.44 9.586 1.987 20.003 6.409 32.065 11.528 23.92 10.153 53.69 22.789 93.135 22.789a0.75 0.75 0 0 1 0.75 0.75z" android:fillColor="#80868b"/>
+    <path android:pathData="M170.015 80.95h-91.48a20.284 20.284 0 0 1-20.284-20.283 20.284 20.284 0 0 1 20.284-20.284h105.946a20.284 20.284 0 0 1 20.284 20.284 20.284 20.284 0 0 1-20.284 20.284z" android:fillColor="#80868b"/>
+    <path android:pathData="M121.998 59.415l-11.557-6.669a1.445 1.445 0 0 0-2.167 1.251v13.34a1.445 1.445 0 0 0 2.167 1.25l11.557-6.668a1.447 1.447 0 0 0 0-2.504z" android:fillColor="#fff"/>
+    <path android:pathData="M184.564 54.051a6.616 6.616 0 1 1-6.615 6.616 6.623 6.623 0 0 1 6.615-6.616m0-1.5a8.116 8.116 0 1 0 8.116 8.116 8.116 8.116 0 0 0-8.116-8.116zm-55.487 8.116a8.116 8.116 0 1 1 16.232 0 8.116 8.116 0 1 1-16.232 0" android:fillColor="#424242"/>
+    <path android:pathData="M152.122 59.565l7.654-7.655a1.558 1.558 0 0 1 2.204 0l7.654 7.655a1.558 1.558 0 0 1 0 2.203l-7.654 7.654a1.558 1.558 0 0 1-2.204 0l-7.654-7.654a1.558 1.558 0 0 1 0-2.203z" android:fillColor="#fff"/>
+    <path android:pathData="M82.862 58.82a5.543 5.543 0 1 0 0 3.695h4.018v3.695h3.695v-3.695h1.848v-3.696zm-5.22 3.695a1.848 1.848 0 1 1 1.848-1.848 1.853 1.853 0 0 1-1.848 1.848z" android:fillColor="#424242"/>
+    <path android:pathData="M112.963 81.022a0.75 0.75 0 0 1-0.98 0.406c-7.893-3.276-16.248-6.524-23.863-8.103a92.8 92.8 0 0 0-26.941-1.52 0.75 0.75 0 0 1-0.131-1.493 94.233 94.233 0 0 1 27.376 1.544c7.738 1.604 16.172 4.882 24.134 8.186a0.75 0.75 0 0 1 0.405 0.98z" android:fillColor="#303134"/>
+    <path android:pathData="M210.02 36.283a5.073 5.073 0 1 1 10.146 0 5.073 5.073 0 1 1-10.146 0" android:fillColor="#8ab4f8"/>
+    <path android:pathData="M102.097 24.905l8.836 3.013a1.01 1.01 0 0 0 1.317-1.152l-1.808-9.159a1.01 1.01 0 0 0-1.657-0.565l-7.027 6.146a1.01 1.01 0 0 0 0.339 1.717z" android:fillColor="#81c995"/>
+    <path android:pathData="M250.262 97.56l-4.885-2.37v-0.741h-3.955v1.033a1.767 1.767 0 0 0-0.801 1.479v1.658h9.398a0.558 0.558 0 0 0 0.243-1.06z" android:fillColor="#dadce0"/>
+    <path android:pathData="M247.261 56.842l-1.105 1.014c-4.826-5.264-2.44-8.57-2.336-8.709l0.6 0.452 0.605 0.442c-0.07 0.1-1.693 2.516 2.236 6.801z" android:fillColor="#03946a"/>
+    <path android:pathData="M163.049 86.244l4.773-2.755a1.792 1.792 105 0 1 2.448 0.656l2.755 4.772a1.792 1.792 105 0 1-0.656 2.448l-4.772 2.756a1.792 1.792 105 0 1-2.448-0.656l-2.756-4.773a1.792 1.792 105 0 1 0.656-2.448z" android:fillColor="#fdd663"/>
+    <path android:pathData="M254.088 65.21l5.416-4.436 2.355 2.876-5.416 4.436z" android:fillColor="#68cbaf"/>
+</vector>
diff --git a/chrome/browser/touch_to_fill/android/internal/java/res/drawable/touch_to_fill_header_image.xml b/chrome/browser/touch_to_fill/android/internal/java/res/drawable/touch_to_fill_header_image.xml
index 9a3f03f..bbb4cdca 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/res/drawable/touch_to_fill_header_image.xml
+++ b/chrome/browser/touch_to_fill/android/internal/java/res/drawable/touch_to_fill_header_image.xml
@@ -1,314 +1,46 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright 2019 The Chromium Authors. All rights reserved.
-     Use of this source code is governed by a BSD-style license that can be
-     found in the LICENSE file. -->
-
-<!-- VectorRaster is ignored because:
-     1. The image should be shown rarely enough to prioritize binary size over inflation time.
-     2. Area-wise it's less than 63% of the recommended 200dp x 200dp limit. -->
-<vector
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:width="224dp"
-    android:height="112dp"
-    android:viewportWidth="312"
-    android:viewportHeight="156"
-    tools:targetApi="21"
-    tools:ignore="VectorRaster">
-
-    <path
-        android:pathData="M146.385,114.133a24.772,2.241 0,1 0,49.544 0a24.772,2.241 0,1 0,-49.544 0z"
-        android:strokeAlpha="0.04"
-        android:strokeWidth="1"
-        android:fillColor="#202124"
-        android:strokeColor="#00000000"
-        android:fillAlpha="0.04"/>
-    <path
-        android:pathData="M17.659,117.572a24.772,2.241 0,1 0,49.544 0a24.772,2.241 0,1 0,-49.544 0z"
-        android:strokeAlpha="0.04"
-        android:strokeWidth="1"
-        android:fillColor="#202124"
-        android:strokeColor="#00000000"
-        android:fillAlpha="0.04"/>
-    <path
-        android:pathData="M178.655,132.136l0,4.446l43.19,0l0,-8.884z"
-        android:strokeAlpha="0.04"
-        android:strokeWidth="1"
-        android:fillColor="#202124"
-        android:strokeColor="#00000000"
-        android:fillAlpha="0.04"/>
-    <path
-        android:pathData="M168.243,109.143L168.243,50.86C168.243,48.354 170.275,46.323 172.782,46.323L179.363,46.323L179.363,109.143L168.243,109.143Z"
-        android:strokeWidth="1"
-        android:fillColor="#F8F9FA"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M178.455,47.23L178.455,108.235L169.151,108.235L169.151,50.86C169.151,48.855 170.777,47.23 172.782,47.23L178.455,47.23L178.455,47.23ZM180.271,45.415L172.782,45.415C169.774,45.415 167.336,47.853 167.336,50.86L167.336,110.05L180.271,110.05L180.271,45.415Z"
-        android:strokeWidth="1"
-        android:fillColor="#E8EAED"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M172.555,109.143L172.555,50.86C172.555,48.354 174.587,46.323 177.094,46.323L248.097,46.323C250.604,46.323 252.636,48.354 252.636,50.86L252.636,109.143L172.555,109.143Z"
-        android:strokeWidth="1"
-        android:fillColor="#FFFFFF"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M248.097,47.23C250.102,47.23 251.728,48.855 251.728,50.86L251.728,108.235L173.463,108.235L173.463,50.86C173.463,48.855 175.088,47.23 177.094,47.23L248.097,47.23L248.097,47.23ZM248.097,45.415L177.094,45.415C174.086,45.415 171.647,47.853 171.647,50.86L171.647,110.05L253.543,110.05L253.543,50.86C253.543,47.853 251.105,45.415 248.097,45.415Z"
-        android:strokeWidth="1"
-        android:fillColor="#E8EAED"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M172.782,115.603C170.275,115.603 168.243,113.572 168.243,111.066L168.243,108.807L224.623,108.807L224.623,115.603L172.782,115.603Z"
-        android:strokeWidth="1"
-        android:fillColor="#F8F9FA"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M223.715,109.714L223.715,114.696L172.782,114.696C170.777,114.696 169.151,113.071 169.151,111.066L169.151,109.714L223.715,109.714L223.715,109.714ZM225.531,107.899L167.336,107.899L167.336,111.066C167.336,114.073 169.774,116.511 172.782,116.511L225.531,116.511L225.531,107.899L225.531,107.899Z"
-        android:strokeWidth="1"
-        android:fillColor="#E8EAED"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M222.354,115.603C219.847,115.603 217.815,113.572 217.815,111.066L217.815,108.807L300.092,108.807L300.092,111.066C300.092,113.572 298.06,115.603 295.554,115.603L222.354,115.603Z"
-        android:strokeWidth="1"
-        android:fillColor="#FFFFFF"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M299.185,109.714L299.185,111.066C299.185,113.071 297.559,114.696 295.554,114.696L222.39,114.696C220.385,114.696 218.759,113.071 218.759,111.066L218.759,109.714L299.185,109.714L299.185,109.714ZM301,107.899L216.943,107.899L216.943,111.066C216.943,114.073 219.382,116.511 222.39,116.511L295.554,116.511C298.562,116.511 301,114.073 301,111.066L301,107.899Z"
-        android:strokeWidth="1"
-        android:fillColor="#E8EAED"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M266.397,112.21L251.474,112.21C250.594,112.21 249.749,111.859 249.128,111.236C248.506,110.613 248.158,109.768 248.161,108.889L248.161,107.899L269.71,107.899L269.71,108.87C269.718,109.753 269.372,110.603 268.75,111.23C268.127,111.857 267.28,112.21 266.397,112.21L266.397,112.21Z"
-        android:strokeWidth="1"
-        android:fillColor="#E8EAED"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M179.018,52.793h67.154v49.889h-67.154z"
-        android:strokeWidth="1"
-        android:fillColor="#F8F9FA"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M245.265,53.7L245.265,101.793L179.908,101.793L179.908,53.7L245.265,53.7L245.265,53.7ZM247.08,51.885L178.092,51.885L178.092,103.607L247.08,103.607L247.08,51.885Z"
-        android:strokeWidth="1"
-        android:fillColor="#E8EAED"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M213.738,75.995L229.952,75.995A0.58,0.58 0,0 1,230.532 76.575L230.532,76.586A0.58,0.58 0,0 1,229.952 77.166L213.738,77.166A0.58,0.58 0,0 1,213.158 76.586L213.158,76.575A0.58,0.58 0,0 1,213.738 75.995z"
-        android:strokeWidth="1"
-        android:fillColor="#DADCE0"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M213.684,78.182L226.72,78.182A0.526,0.526 0,0 1,227.246 78.708L227.246,78.708A0.526,0.526 0,0 1,226.72 79.234L213.684,79.234A0.526,0.526 0,0 1,213.158 78.708L213.158,78.708A0.526,0.526 0,0 1,213.684 78.182z"
-        android:strokeWidth="1"
-        android:fillColor="#DADCE0"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M202.61,82.256C201.246,82.259 199.971,81.577 199.215,80.441C199.215,79.316 201.476,78.699 202.61,78.699C203.745,78.699 205.987,79.316 206.005,80.441C205.25,81.577 203.975,82.259 202.61,82.256L202.61,82.256ZM202.61,74.216C203.301,74.213 203.926,74.626 204.193,75.263C204.46,75.9 204.317,76.636 203.829,77.125C203.342,77.615 202.607,77.763 201.968,77.499C201.33,77.236 200.913,76.613 200.913,75.922C200.91,75.471 201.088,75.037 201.407,74.717C201.725,74.396 202.158,74.216 202.61,74.216L202.61,74.216ZM202.61,72.52C199.482,72.52 196.946,75.055 196.946,78.182C196.946,81.309 199.482,83.844 202.61,83.844C205.739,83.844 208.275,81.309 208.275,78.182C208.27,75.057 205.736,72.525 202.61,72.52Z"
-        android:strokeWidth="1"
-        android:fillColor="#DADCE0"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M61.047,44.98L103.696,44.98A5,5 0,0 1,108.696 49.98L108.696,114.387A5,5 0,0 1,103.696 119.387L61.047,119.387A5,5 0,0 1,56.047 114.387L56.047,49.98A5,5 0,0 1,61.047 44.98z"
-        android:strokeWidth="1"
-        android:fillColor="#FFFFFF"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M104.157,45.887C106.162,45.887 107.788,47.512 107.788,49.517L107.788,114.85C107.788,116.855 106.162,118.48 104.157,118.48L60.586,118.48C58.58,118.48 56.955,116.855 56.955,114.85L56.955,49.517C56.955,47.512 58.58,45.887 60.586,45.887L104.157,45.887L104.157,45.887ZM104.157,44.072L60.586,44.072C57.578,44.072 55.139,46.51 55.139,49.517L55.139,114.85C55.139,117.857 57.578,120.295 60.586,120.295L104.157,120.295C107.165,120.295 109.603,117.857 109.603,114.85L109.603,49.517C109.603,46.51 107.165,44.072 104.157,44.072Z"
-        android:strokeWidth="1"
-        android:fillColor="#E8EAED"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M61.493,50.424h41.756v63.519h-41.756z"
-        android:strokeWidth="1"
-        android:fillColor="#F8F9FA"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M102.342,51.332L102.342,113.035L62.401,113.035L62.401,51.332L102.342,51.332L102.342,51.332ZM104.157,49.517L60.586,49.517L60.586,114.85L104.157,114.85L104.157,49.517Z"
-        android:strokeWidth="1"
-        android:fillColor="#E8EAED"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M39.261,63.128L60.124,63.128A5,5 0,0 1,65.124 68.128L65.124,114.387A5,5 0,0 1,60.124 119.387L39.261,119.387A5,5 0,0 1,34.261 114.387L34.261,68.128A5,5 0,0 1,39.261 63.128z"
-        android:strokeWidth="1"
-        android:fillColor="#FFFFFF"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M60.586,64.035C62.591,64.035 64.217,65.66 64.217,67.665L64.217,114.85C64.217,116.855 62.591,118.48 60.586,118.48L38.8,118.48C36.795,118.48 35.169,116.855 35.169,114.85L35.169,67.665C35.169,65.66 36.795,64.035 38.8,64.035L60.586,64.035L60.586,64.035ZM60.586,62.221L38.8,62.221C35.792,62.221 33.353,64.658 33.353,67.665L33.353,114.85C33.353,117.857 35.792,120.295 38.8,120.295L60.586,120.295C63.594,120.295 66.032,117.857 66.032,114.85L66.032,67.665C66.032,64.658 63.594,62.221 60.586,62.221Z"
-        android:strokeWidth="1"
-        android:fillColor="#E8EAED"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M33.353,71.295h32.679v1.815h-32.679z"
-        android:strokeWidth="1"
-        android:fillColor="#E8EAED"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M33.353,111.221h32.679v1.815h-32.679z"
-        android:strokeWidth="1"
-        android:fillColor="#E8EAED"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M35.169,73.109h29.048v38.111h-29.048z"
-        android:strokeWidth="1"
-        android:fillColor="#F8F9FA"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M43.338,66.758L56.047,66.758A0.907,0.907 0,0 1,56.955 67.665L56.955,67.665A0.907,0.907 0,0 1,56.047 68.572L43.338,68.572A0.907,0.907 0,0 1,42.431 67.665L42.431,67.665A0.907,0.907 0,0 1,43.338 66.758z"
-        android:strokeWidth="1"
-        android:fillColor="#E8EAED"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M44.372,94.361L55.013,94.361A0.58,0.58 0,0 1,55.593 94.941L55.593,94.951A0.58,0.58 0,0 1,55.013 95.531L44.372,95.531A0.58,0.58 0,0 1,43.792 94.951L43.792,94.941A0.58,0.58 0,0 1,44.372 94.361z"
-        android:strokeWidth="1"
-        android:fillColor="#DADCE0"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M45.435,96.539L53.95,96.539A0.526,0.526 0,0 1,54.476 97.065L54.476,97.065A0.526,0.526 0,0 1,53.95 97.591L45.435,97.591A0.526,0.526 0,0 1,44.909 97.065L44.909,97.065A0.526,0.526 0,0 1,45.435 96.539z"
-        android:strokeWidth="1"
-        android:fillColor="#DADCE0"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M77.051,78.327L87.692,78.327A0.58,0.58 0,0 1,88.272 78.907L88.272,78.918A0.58,0.58 0,0 1,87.692 79.498L77.051,79.498A0.58,0.58 0,0 1,76.471 78.918L76.471,78.907A0.58,0.58 0,0 1,77.051 78.327z"
-        android:strokeWidth="1"
-        android:fillColor="#DADCE0"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M78.114,80.514L86.629,80.514A0.526,0.526 0,0 1,87.155 81.04L87.155,81.04A0.526,0.526 0,0 1,86.629 81.566L78.114,81.566A0.526,0.526 0,0 1,77.588 81.04L77.588,81.04A0.526,0.526 0,0 1,78.114 80.514z"
-        android:strokeWidth="1"
-        android:fillColor="#DADCE0"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M49.693,88.671C48.422,88.672 47.235,88.035 46.534,86.975C46.534,85.931 48.64,85.359 49.693,85.359C50.746,85.359 52.843,85.931 52.852,86.975C52.15,88.035 50.964,88.672 49.693,88.671L49.693,88.671ZM49.693,81.194C50.332,81.194 50.907,81.579 51.152,82.169C51.396,82.759 51.261,83.438 50.81,83.89C50.358,84.341 49.678,84.476 49.088,84.232C48.498,83.988 48.113,83.412 48.113,82.773C48.113,81.901 48.82,81.194 49.693,81.194ZM49.693,79.616C47.558,79.612 45.632,80.895 44.813,82.866C43.994,84.837 44.445,87.107 45.954,88.615C47.464,90.124 49.735,90.575 51.706,89.757C53.678,88.938 54.961,87.013 54.958,84.879C54.958,81.972 52.6,79.616 49.693,79.616Z"
-        android:strokeWidth="1"
-        android:fillColor="#DADCE0"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M82.371,69.534C81.081,69.536 79.876,68.888 79.167,67.81C79.167,66.749 81.3,66.168 82.371,66.168C83.442,66.168 85.567,66.749 85.576,67.81C84.867,68.889 83.662,69.537 82.371,69.534L82.371,69.534ZM82.371,61.948C83.022,61.948 83.608,62.341 83.857,62.942C84.105,63.543 83.966,64.235 83.504,64.693C83.043,65.152 82.35,65.287 81.75,65.036C81.15,64.784 80.761,64.196 80.765,63.545C80.765,63.12 80.934,62.713 81.236,62.413C81.537,62.113 81.946,61.946 82.371,61.948ZM82.371,60.342C80.206,60.328 78.245,61.62 77.406,63.616C76.567,65.612 77.015,67.917 78.542,69.453C80.068,70.989 82.37,71.453 84.373,70.628C86.375,69.803 87.682,67.852 87.682,65.687C87.682,62.749 85.31,60.362 82.371,60.342L82.371,60.342Z"
-        android:strokeWidth="1"
-        android:fillColor="#DADCE0"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M144.29,50.334L144.29,39.445C144.29,38.616 143.619,37.945 142.79,37.945C141.962,37.945 141.29,38.616 141.29,39.445L141.29,50.334C141.29,51.162 141.962,51.834 142.79,51.834C143.619,51.834 144.29,51.162 144.29,50.334Z"
-        android:strokeWidth="1"
-        android:fillColor="#FBBC04"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M96.331,62.566L87.571,53.81C86.985,53.224 86.035,53.224 85.45,53.81C84.864,54.396 84.864,55.346 85.45,55.931L94.21,64.688C94.796,65.274 95.745,65.273 96.331,64.688C96.917,64.102 96.917,63.152 96.331,62.566Z"
-        android:strokeWidth="1"
-        android:fillColor="#FBBC04"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M191.361,64.688L200.13,55.932C200.716,55.347 200.717,54.397 200.131,53.811C199.546,53.224 198.596,53.224 198.01,53.809L189.241,62.566C188.655,63.151 188.655,64.101 189.24,64.687C189.825,65.273 190.775,65.274 191.361,64.688Z"
-        android:strokeWidth="1"
-        android:fillColor="#FBBC04"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M26.684,36.882C22.714,38.091 20.001,41.752 20,45.9C20,46.452 20.447,46.9 21,46.9C21.552,46.9 22,46.453 22,45.9C22.001,42.632 24.138,39.748 27.266,38.795C30.394,37.843 33.778,39.045 35.602,41.758L36.015,42.373L36.724,42.156C37.096,42.042 37.482,41.984 37.87,41.982C38.905,41.982 39.903,42.395 40.638,43.13C41.373,43.865 41.786,44.861 41.786,45.9C41.786,46.452 42.233,46.9 42.786,46.9C43.338,46.9 43.786,46.452 43.786,45.9C43.786,44.331 43.162,42.825 42.052,41.715C40.941,40.605 39.436,39.982 37.866,39.982C37.523,39.984 37.182,40.014 36.848,40.073C34.459,37.034 30.427,35.742 26.684,36.882Z"
-        android:strokeWidth="1"
-        android:fillColor="#E8EAED"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M37.893,39.982C36.323,39.982 34.817,40.607 33.708,41.719C33.318,42.11 33.319,42.743 33.71,43.133C34.101,43.523 34.734,43.522 35.124,43.131C35.858,42.396 36.854,41.982 37.893,41.982C38.445,41.982 38.893,41.534 38.893,40.982C38.893,40.43 38.445,39.982 37.893,39.982Z"
-        android:strokeWidth="1"
-        android:fillColor="#E8EAED"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M80.182,23.374C78.614,23.371 77.106,23.993 75.995,25.104C74.884,26.215 74.261,27.722 74.264,29.294C74.265,29.846 74.713,30.293 75.266,30.292C75.818,30.291 76.265,29.842 76.264,29.29C76.262,28.251 76.674,27.253 77.409,26.519C78.144,25.784 79.142,25.372 80.182,25.374C80.573,25.373 80.96,25.429 81.332,25.54L82.037,25.751L82.448,25.14C84.273,22.426 87.658,21.224 90.787,22.179C93.916,23.134 96.052,26.021 96.05,29.291C96.049,29.843 96.496,30.291 97.049,30.292C97.601,30.292 98.049,29.845 98.05,29.292C98.053,25.142 95.341,21.478 91.371,20.266C87.625,19.123 83.589,20.416 81.199,23.459C80.864,23.402 80.524,23.373 80.182,23.374Z"
-        android:strokeWidth="1"
-        android:fillColor="#E8EAED"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M80.19,25.373C81.233,25.367 82.235,25.78 82.968,26.52C83.357,26.913 83.99,26.915 84.383,26.526C84.775,26.138 84.778,25.505 84.389,25.112C83.276,23.99 81.758,23.363 80.177,23.374C79.625,23.377 79.18,23.828 79.184,24.38C79.187,24.932 79.638,25.377 80.19,25.373Z"
-        android:strokeWidth="1"
-        android:fillColor="#E8EAED"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M273.957,67.244C270.689,67.244 268.039,69.893 268.039,73.162C268.039,73.714 268.486,74.162 269.039,74.162C269.591,74.162 270.039,73.714 270.039,73.162C270.039,70.998 271.793,69.244 273.958,69.244C274.348,69.243 274.734,69.3 275.106,69.411L275.812,69.622L276.223,69.011C278.047,66.297 281.433,65.095 284.562,66.049C287.69,67.004 289.827,69.891 289.824,73.161C289.824,73.714 290.271,74.162 290.823,74.162C291.376,74.162 291.824,73.715 291.824,73.163C291.828,69.013 289.116,65.348 285.146,64.136C281.399,62.993 277.363,64.287 274.974,67.329C274.638,67.272 274.298,67.243 273.957,67.244Z"
-        android:strokeWidth="1"
-        android:fillColor="#E8EAED"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M273.956,69.244C274.982,69.247 275.966,69.659 276.688,70.39C277.076,70.782 277.709,70.786 278.102,70.398C278.495,70.01 278.498,69.377 278.11,68.984C277.014,67.875 275.521,67.249 273.961,67.244C273.409,67.242 272.96,67.689 272.958,68.241C272.957,68.793 273.403,69.242 273.956,69.244Z"
-        android:strokeWidth="1"
-        android:fillColor="#E8EAED"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M97.59,67.919L184.886,67.919A5.37,5.37 0,0 1,190.256 73.289L190.256,91.586A5.37,5.37 0,0 1,184.886 96.956L97.59,96.956A5.37,5.37 0,0 1,92.22 91.586L92.22,73.289A5.37,5.37 0,0 1,97.59 67.919z"
-        android:strokeWidth="1"
-        android:fillColor="#1A73E8"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M174.824,73.364L174.824,73.364A0.908,0.908 0,0 1,175.732 74.271L175.732,90.604A0.908,0.908 0,0 1,174.824 91.512L174.824,91.512A0.908,0.908 0,0 1,173.917 90.604L173.917,74.271A0.908,0.908 0,0 1,174.824 73.364z"
-        android:strokeWidth="1"
-        android:fillColor="#EA4335"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M103.113,81.303h14.524v2.269h-14.524z"
-        android:strokeWidth="1"
-        android:fillColor="#FFFFFF"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M107.725,75.583l7.262,12.573l-1.965,1.134l-7.262,-12.573z"
-        android:strokeWidth="1"
-        android:fillColor="#FFFFFF"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M114.987,76.717l-7.262,12.573l-1.965,-1.134l7.262,-12.573z"
-        android:strokeWidth="1"
-        android:fillColor="#FFFFFF"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M126.714,81.303h14.524v2.269h-14.524z"
-        android:strokeWidth="1"
-        android:fillColor="#FFFFFF"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M131.327,75.58l7.262,12.573l-1.965,1.134l-7.262,-12.573z"
-        android:strokeWidth="1"
-        android:fillColor="#FFFFFF"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M138.589,76.714l-7.262,12.573l-1.965,-1.134l7.262,-12.573z"
-        android:strokeWidth="1"
-        android:fillColor="#FFFFFF"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M150.315,81.303h14.524v2.269h-14.524z"
-        android:strokeWidth="1"
-        android:fillColor="#FFFFFF"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M154.928,75.586l7.262,12.573l-1.965,1.134l-7.262,-12.573z"
-        android:strokeWidth="1"
-        android:fillColor="#FFFFFF"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M162.19,76.72l-7.262,12.573l-1.965,-1.134l7.262,-12.573z"
-        android:strokeWidth="1"
-        android:fillColor="#FFFFFF"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M186.235,119.923C184.229,120.222 181.769,123.18 179.499,126.229C177.475,128.951 175.487,131.674 175.868,133.815C176.64,138.416 184.528,135.929 186.625,135.512L209.409,131.047L209.409,117.155C209.409,117.155 204.453,115.504 201.793,117.155C199.134,118.806 198.162,123.117 195.73,123.434C193.297,123.752 190.011,119.369 186.235,119.923Z"
-        android:strokeWidth="1"
-        android:fillColor="#F6A81B"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M175.85,133.815L209.391,127.699L209.391,123.552L176.885,130.04C176.885,130.04 175.442,132.672 175.85,133.815Z"
-        android:strokeAlpha="0.1"
-        android:strokeWidth="1"
-        android:fillColor="#231F20"
-        android:strokeColor="#00000000"
-        android:fillAlpha="0.1"/>
-    <path
-        android:pathData="M220.266,106.039C211.858,106.039 205.043,112.852 205.043,121.256C205.043,129.661 211.858,136.474 220.266,136.474C228.673,136.474 235.489,129.661 235.489,121.256C235.489,112.852 228.673,106.039 220.266,106.039ZM225.077,123.552C223.67,123.552 222.402,122.704 221.864,121.405C221.326,120.105 221.625,118.609 222.622,117.616C223.618,116.623 225.115,116.328 226.414,116.869C227.712,117.409 228.557,118.679 228.553,120.086C228.553,121.007 228.187,121.89 227.535,122.54C226.882,123.19 225.998,123.555 225.077,123.552Z"
-        android:strokeWidth="1"
-        android:fillColor="#FAB505"
-        android:strokeColor="#00000000"/>
-    <path
-        android:pathData="M220.266,136.474C228.673,136.474 235.489,129.661 235.489,121.256C235.489,112.852 228.673,106.039 220.266,106.039L220.266,136.474ZM225.077,123.552C223.67,123.552 222.402,122.704 221.864,121.405C221.326,120.105 221.625,118.609 222.622,117.616C223.618,116.623 225.115,116.328 226.414,116.869C227.712,117.409 228.557,118.679 228.553,120.086C228.553,121.007 228.187,121.89 227.535,122.54C226.882,123.19 225.998,123.555 225.077,123.552Z"
-        android:strokeAlpha="0.2"
-        android:strokeWidth="1"
-        android:fillColor="#FFFFFF"
-        android:strokeColor="#00000000"
-        android:fillAlpha="0.2"/>
+<!--Copyright 2019 The Chromium Authors. All rights reserved. Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.-->
+<!--VectorRaster is ignored because: 1. The image should be shown rarely enough to prioritize binary size over inflation time. 2. Area-wise it's less than 63% of the recommended 200dp x 200dp limit.-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:width="224dp" android:height="112dp" android:viewportWidth="312" android:viewportHeight="156" tools:targetApi="21" tools:ignore="VectorRaster">
+    <path android:pathData="M146.385 114.133a24.772 2.241 0 1 0 49.544 0 24.772 2.241 0 1 0-49.544 0zm-128.726 3.439a24.772 2.241 0 1 0 49.544 0 24.772 2.241 0 1 0-49.544 0zm160.996 14.564v4.446h43.19v-8.884z" android:strokeAlpha="0.04" android:strokeWidth="1" android:fillColor="#202124" android:fillAlpha="0.04"/>
+    <path android:pathData="M168.243 109.143V50.86c0-2.506 2.032-4.537 4.539-4.537h6.581v62.82h-11.12z" android:strokeWidth="1" android:fillColor="#F8F9FA"/>
+    <path android:pathData="M178.455 47.23v61.005h-9.304V50.86c0-2.005 1.626-3.63 3.631-3.63h5.673zm1.816-1.815h-7.489c-3.008 0-5.446 2.438-5.446 5.445v59.19h12.935V45.415z" android:strokeWidth="1" android:fillColor="#E8EAED"/>
+    <path android:pathData="M172.555 109.143V50.86c0-2.506 2.032-4.537 4.539-4.537h71.003c2.507 0 4.539 2.031 4.539 4.537v58.283h-80.081z" android:strokeWidth="1" android:fillColor="#FFFFFF"/>
+    <path android:pathData="M248.097 47.23c2.005 0 3.631 1.625 3.631 3.63v57.375h-78.265V50.86c0-2.005 1.625-3.63 3.631-3.63h71.003zm0-1.815h-71.003c-3.008 0-5.447 2.438-5.447 5.445v59.19h81.896V50.86c0-3.007-2.438-5.445-5.446-5.445z" android:strokeWidth="1" android:fillColor="#E8EAED"/>
+    <path android:pathData="M172.782 115.603c-2.507 0-4.539-2.031-4.539-4.537v-2.259h56.38v6.796h-51.841z" android:strokeWidth="1" android:fillColor="#F8F9FA"/>
+    <path android:pathData="M223.715 109.714v4.982h-50.933c-2.005 0-3.631-1.625-3.631-3.63v-1.352h54.564zm1.816-1.815h-58.195v3.167c0 3.007 2.438 5.445 5.446 5.445h52.749v-8.612z" android:strokeWidth="1" android:fillColor="#E8EAED"/>
+    <path android:pathData="M222.354 115.603c-2.507 0-4.539-2.031-4.539-4.537v-2.259h82.277v2.259c0 2.506-2.032 4.537-4.538 4.537h-73.2z" android:strokeWidth="1" android:fillColor="#FFFFFF"/>
+    <path android:pathData="M299.185 109.714v1.352c0 2.005-1.626 3.63-3.631 3.63H222.39c-2.005 0-3.631-1.625-3.631-3.63v-1.352h80.426zm1.815-1.815h-84.057v3.167c0 3.007 2.439 5.445 5.447 5.445h73.164c3.008 0 5.446-2.438 5.446-5.445v-3.167z" android:strokeWidth="1" android:fillColor="#E8EAED"/>
+    <path android:pathData="M266.397 112.21h-14.923c-0.88 0-1.725-0.351-2.346-0.974-0.622-0.623-0.97-1.468-0.967-2.347v-0.99h21.549v0.971c0.008 0.883-0.338 1.733-0.96 2.36-0.623 0.627-1.47 0.98-2.353 0.98z" android:strokeWidth="1" android:fillColor="#E8EAED"/>
+    <path android:pathData="M179.018 52.793h67.154v49.889h-67.154z" android:strokeWidth="1" android:fillColor="#F8F9FA"/>
+    <path android:pathData="M245.265 53.7v48.093h-65.357V53.7h65.357zm1.815-1.815h-68.988v51.722h68.988V51.885z" android:strokeWidth="1" android:fillColor="#E8EAED"/>
+    <path android:pathData="M213.738 75.995h16.214a0.58 0.58 0 0 1 0.58 0.58v0.011a0.58 0.58 0 0 1-0.58 0.58h-16.214a0.58 0.58 0 0 1-0.58-0.58v-0.011a0.58 0.58 0 0 1 0.58-0.58zm-0.054 2.187h13.036a0.526 0.526 0 0 1 0.526 0.526 0.526 0.526 0 0 1-0.526 0.526h-13.036a0.526 0.526 0 0 1-0.526-0.526 0.526 0.526 0 0 1 0.526-0.526zm-11.074 4.074c-1.364 0.003-2.639-0.679-3.395-1.815 0-1.125 2.261-1.742 3.395-1.742 1.135 0 3.377 0.617 3.395 1.742-0.755 1.136-2.03 1.818-3.395 1.815zm0-8.04c0.691-0.003 1.316 0.41 1.583 1.047 0.267 0.637 0.124 1.373-0.364 1.862-0.487 0.49-1.222 0.638-1.861 0.374-0.638-0.263-1.055-0.886-1.055-1.577-0.003-0.451 0.175-0.885 0.494-1.205 0.318-0.321 0.751-0.501 1.203-0.501zm0-1.696c-3.128 0-5.664 2.535-5.664 5.662s2.536 5.662 5.664 5.662c3.129 0 5.665-2.535 5.665-5.662-0.005-3.125-2.539-5.657-5.665-5.662z" android:strokeWidth="1" android:fillColor="#DADCE0"/>
+    <path android:pathData="M61.047 44.98h42.649a5 5 0 0 1 5 5v64.407a5 5 0 0 1-5 5H61.047a5 5 0 0 1-5-5V49.98a5 5 0 0 1 5-5z" android:strokeWidth="1" android:fillColor="#FFFFFF"/>
+    <path android:pathData="M104.157 45.887c2.005 0 3.631 1.625 3.631 3.63v65.333c0 2.005-1.626 3.63-3.631 3.63H60.586c-2.006 0-3.631-1.625-3.631-3.63V49.517c0-2.005 1.625-3.63 3.631-3.63h43.571zm0-1.815H60.586c-3.008 0-5.447 2.438-5.447 5.445v65.333c0 3.007 2.439 5.445 5.447 5.445h43.571c3.008 0 5.446-2.438 5.446-5.445V49.517c0-3.007-2.438-5.445-5.446-5.445z" android:strokeWidth="1" android:fillColor="#E8EAED"/>
+    <path android:pathData="M61.493 50.424h41.756v63.519H61.493z" android:strokeWidth="1" android:fillColor="#F8F9FA"/>
+    <path android:pathData="M102.342 51.332v61.703H62.401V51.332h39.941zm1.815-1.815H60.586v65.333h43.571V49.517z" android:strokeWidth="1" android:fillColor="#E8EAED"/>
+    <path android:pathData="M39.261 63.128h20.863a5 5 0 0 1 5 5v46.259a5 5 0 0 1-5 5H39.261a5 5 0 0 1-5-5V68.128a5 5 0 0 1 5-5z" android:strokeWidth="1" android:fillColor="#FFFFFF"/>
+    <path android:pathData="M60.586 64.035c2.005 0 3.631 1.625 3.631 3.63v47.185c0 2.005-1.626 3.63-3.631 3.63H38.8c-2.005 0-3.631-1.625-3.631-3.63V67.665c0-2.005 1.626-3.63 3.631-3.63h21.786zm0-1.814H38.8c-3.008 0-5.447 2.437-5.447 5.444v47.185c0 3.007 2.439 5.445 5.447 5.445h21.786c3.008 0 5.446-2.438 5.446-5.445V67.665c0-3.007-2.438-5.444-5.446-5.444z" android:strokeWidth="1" android:fillColor="#E8EAED"/>
+    <path android:pathData="M33.353 71.295h32.679v1.815H33.353zm0 39.926h32.679v1.815H33.353z" android:strokeWidth="1" android:fillColor="#E8EAED"/>
+    <path android:pathData="M35.169 73.109h29.048v38.111H35.169z" android:strokeWidth="1" android:fillColor="#F8F9FA"/>
+    <path android:pathData="M43.338 66.758h12.709a0.907 0.907 0 0 1 0.908 0.907 0.907 0.907 0 0 1-0.908 0.907H43.338a0.907 0.907 0 0 1-0.907-0.907 0.907 0.907 0 0 1 0.907-0.907z" android:strokeWidth="1" android:fillColor="#E8EAED"/>
+    <path android:pathData="M44.372 94.361h10.641a0.58 0.58 0 0 1 0.58 0.58v0.01a0.58 0.58 0 0 1-0.58 0.58H44.372a0.58 0.58 0 0 1-0.58-0.58v-0.01a0.58 0.58 0 0 1 0.58-0.58zm1.063 2.178h8.515a0.526 0.526 0 0 1 0.526 0.526 0.526 0.526 0 0 1-0.526 0.526h-8.515a0.526 0.526 0 0 1-0.526-0.526 0.526 0.526 0 0 1 0.526-0.526zm31.616-18.212h10.641a0.58 0.58 0 0 1 0.58 0.58v0.011a0.58 0.58 0 0 1-0.58 0.58H77.051a0.58 0.58 0 0 1-0.58-0.58v-0.011a0.58 0.58 0 0 1 0.58-0.58zm1.063 2.187h8.515a0.526 0.526 0 0 1 0.526 0.526 0.526 0.526 0 0 1-0.526 0.526h-8.515a0.526 0.526 0 0 1-0.526-0.526 0.526 0.526 0 0 1 0.526-0.526zm-28.421 8.157c-1.271 0.001-2.458-0.636-3.159-1.696 0-1.044 2.106-1.616 3.159-1.616s3.15 0.572 3.159 1.616c-0.702 1.06-1.888 1.697-3.159 1.696zm0-7.477c0.639 0 1.214 0.385 1.459 0.975 0.244 0.59 0.109 1.269-0.342 1.721-0.452 0.451-1.132 0.586-1.722 0.342-0.59-0.244-0.975-0.82-0.975-1.459 0-0.872 0.707-1.579 1.58-1.579zm0-1.578c-2.135-0.004-4.061 1.279-4.88 3.25s-0.368 4.241 1.141 5.749c1.51 1.509 3.781 1.96 5.752 1.142 1.972-0.819 3.255-2.744 3.252-4.878 0-2.907-2.358-5.263-5.265-5.263zm32.678-10.082c-1.29 0.002-2.495-0.646-3.204-1.724 0-1.061 2.133-1.642 3.204-1.642 1.071 0 3.196 0.581 3.205 1.642-0.709 1.079-1.914 1.727-3.205 1.724zm0-7.586c0.651 0 1.237 0.393 1.486 0.994 0.248 0.601 0.109 1.293-0.353 1.751-0.461 0.459-1.154 0.594-1.754 0.343-0.6-0.252-0.989-0.84-0.985-1.491 0-0.425 0.169-0.832 0.471-1.132 0.301-0.3 0.71-0.467 1.135-0.465zm0-1.606c-2.165-0.014-4.126 1.278-4.965 3.274-0.839 1.996-0.391 4.301 1.136 5.837 1.526 1.536 3.828 2 5.831 1.175 2.002-0.825 3.309-2.776 3.309-4.941 0-2.938-2.372-5.325-5.311-5.345z" android:strokeWidth="1" android:fillColor="#DADCE0"/>
+    <path android:pathData="M144.29 50.334V39.445c0-0.829-0.671-1.5-1.5-1.5-0.828 0-1.5 0.671-1.5 1.5v10.889c0 0.828 0.672 1.5 1.5 1.5 0.829 0 1.5-0.672 1.5-1.5zM96.331 62.566l-8.76-8.756c-0.586-0.586-1.536-0.586-2.121 0-0.586 0.586-0.586 1.536 0 2.121l8.76 8.757c0.586 0.586 1.535 0.585 2.121 0 0.586-0.586 0.586-1.536 0-2.122zm95.03 2.122l8.769-8.756c0.586-0.585 0.587-1.535 0.001-2.121-0.585-0.587-1.535-0.587-2.121-0.002l-8.769 8.757c-0.586 0.585-0.586 1.535-0.001 2.121 0.585 0.586 1.535 0.587 2.121 0.001z" android:strokeWidth="1" android:fillColor="#FBBC04"/>
+    <path android:pathData="M26.684 36.882c-3.97 1.209-6.683 4.87-6.684 9.018 0 0.552 0.447 1 1 1 0.552 0 1-0.447 1-1 0.001-3.268 2.138-6.152 5.266-7.105 3.128-0.952 6.512 0.25 8.336 2.963l0.413 0.615 0.709-0.217c0.372-0.114 0.758-0.172 1.146-0.174 1.035 0 2.033 0.413 2.768 1.148 0.735 0.735 1.148 1.731 1.148 2.77 0 0.552 0.447 1 1 1 0.552 0 1-0.448 1-1 0-1.569-0.624-3.075-1.734-4.185-1.111-1.11-2.616-1.733-4.186-1.733-0.343 0.002-0.684 0.032-1.018 0.091-2.389-3.039-6.421-4.331-10.164-3.191z" android:strokeWidth="1" android:fillColor="#E8EAED"/>
+    <path android:pathData="M37.893 39.982c-1.57 0-3.076 0.625-4.185 1.737-0.39 0.391-0.389 1.024 0.002 1.414 0.391 0.39 1.024 0.389 1.414-0.002 0.734-0.735 1.73-1.149 2.769-1.149 0.552 0 1-0.448 1-1s-0.448-1-1-1zm42.289-16.608c-1.568-0.003-3.076 0.619-4.187 1.73-1.111 1.111-1.734 2.618-1.731 4.19 0.001 0.552 0.449 0.999 1.002 0.998 0.552-0.001 0.999-0.45 0.998-1.002-0.002-1.039 0.41-2.037 1.145-2.771 0.735-0.735 1.733-1.147 2.773-1.145 0.391-0.001 0.778 0.055 1.15 0.166l0.705 0.211 0.411-0.611c1.825-2.714 5.21-3.916 8.339-2.961 3.129 0.955 5.265 3.842 5.263 7.112-0.001 0.552 0.446 1 0.999 1.001 0.552 0 1-0.447 1.001-1 0.003-4.15-2.709-7.814-6.679-9.026-3.746-1.143-7.782 0.15-10.172 3.193-0.335-0.057-0.675-0.086-1.017-0.085z" android:strokeWidth="1" android:fillColor="#E8EAED"/>
+    <path android:pathData="M80.19 25.373c1.043-0.006 2.045 0.407 2.778 1.147 0.389 0.393 1.022 0.395 1.415 0.006 0.392-0.388 0.395-1.021 0.006-1.414-1.113-1.122-2.631-1.749-4.212-1.738-0.552 0.003-0.997 0.454-0.993 1.006 0.003 0.552 0.454 0.997 1.006 0.993zm193.767 41.871c-3.268 0-5.918 2.649-5.918 5.918 0 0.552 0.447 1 1 1 0.552 0 1-0.448 1-1 0-2.164 1.754-3.918 3.919-3.918 0.39-0.001 0.776 0.056 1.148 0.167l0.706 0.211 0.411-0.611c1.824-2.714 5.21-3.916 8.339-2.962 3.128 0.955 5.265 3.842 5.262 7.112 0 0.553 0.447 1.001 0.999 1.001 0.553 0 1.001-0.447 1.001-0.999 0.004-4.15-2.708-7.815-6.678-9.027-3.747-1.143-7.783 0.151-10.172 3.193-0.336-0.057-0.676-0.086-1.017-0.085z" android:strokeWidth="1" android:fillColor="#E8EAED"/>
+    <path android:pathData="M273.956 69.244c1.026 0.003 2.01 0.415 2.732 1.146 0.388 0.392 1.021 0.396 1.414 0.008s0.396-1.021 0.008-1.414c-1.096-1.109-2.589-1.735-4.149-1.74-0.552-0.002-1.001 0.445-1.003 0.997-0.001 0.552 0.445 1.001 0.998 1.003z" android:strokeWidth="1" android:fillColor="#E8EAED"/>
+    <path android:pathData="M97.59 67.919h87.296a5.37 5.37 0 0 1 5.37 5.37v18.297a5.37 5.37 0 0 1-5.37 5.37H97.59a5.37 5.37 0 0 1-5.37-5.37V73.289a5.37 5.37 0 0 1 5.37-5.37z" android:strokeWidth="1" android:fillColor="#1A73E8"/>
+    <path android:pathData="M174.824 73.364a0.908 0.908 0 0 1 0.908 0.907v16.333a0.908 0.908 0 0 1-0.908 0.908 0.908 0.908 0 0 1-0.907-0.908V74.271a0.908 0.908 0 0 1 0.907-0.907z" android:strokeWidth="1" android:fillColor="#EA4335"/>
+    <path android:pathData="M103.113 81.303h14.524v2.269h-14.524z" android:strokeWidth="1" android:fillColor="#FFFFFF"/>
+    <path android:pathData="M107.725 75.583l7.262 12.573-1.965 1.134-7.262-12.573z" android:strokeWidth="1" android:fillColor="#FFFFFF"/>
+    <path android:pathData="M114.987 76.717l-7.262 12.573-1.965-1.134 7.262-12.573zm11.727 4.586h14.524v2.269h-14.524z" android:strokeWidth="1" android:fillColor="#FFFFFF"/>
+    <path android:pathData="M131.327 75.58l7.262 12.573-1.965 1.134-7.262-12.573z" android:strokeWidth="1" android:fillColor="#FFFFFF"/>
+    <path android:pathData="M138.589 76.714l-7.262 12.573-1.965-1.134 7.262-12.573zm11.726 4.589h14.524v2.269h-14.524z" android:strokeWidth="1" android:fillColor="#FFFFFF"/>
+    <path android:pathData="M154.928 75.586l7.262 12.573-1.965 1.134-7.262-12.573z" android:strokeWidth="1" android:fillColor="#FFFFFF"/>
+    <path android:pathData="M162.19 76.72l-7.262 12.573-1.965-1.134 7.262-12.573z" android:strokeWidth="1" android:fillColor="#FFFFFF"/>
+    <path android:pathData="M186.235 119.923c-2.006 0.299-4.466 3.257-6.736 6.306-2.024 2.722-4.012 5.445-3.631 7.586 0.772 4.601 8.66 2.114 10.757 1.697l22.784-4.465v-13.892s-4.956-1.651-7.616 0c-2.659 1.651-3.631 5.962-6.063 6.279-2.433 0.318-5.719-4.065-9.495-3.511z" android:strokeWidth="1" android:fillColor="#F6A81B"/>
+    <path android:pathData="M175.85 133.815l33.541-6.116v-4.147l-32.506 6.488s-1.443 2.632-1.035 3.775z" android:strokeAlpha="0.1" android:strokeWidth="1" android:fillColor="#231F20" android:fillAlpha="0.1"/>
+    <path android:pathData="M220.266 106.039c-8.408 0-15.223 6.813-15.223 15.217 0 8.405 6.815 15.218 15.223 15.218 8.407 0 15.223-6.813 15.223-15.218 0-8.404-6.816-15.217-15.223-15.217zm4.811 17.513c-1.407 0-2.675-0.848-3.213-2.147-0.538-1.3-0.239-2.796 0.758-3.789 0.996-0.993 2.493-1.288 3.792-0.747 1.298 0.54 2.143 1.81 2.139 3.217 0 0.921-0.366 1.804-1.018 2.454-0.653 0.65-1.537 1.015-2.458 1.012z" android:strokeWidth="1" android:fillColor="#FAB505"/>
+    <path android:pathData="M220.266 136.474c8.407 0 15.223-6.813 15.223-15.218 0-8.404-6.816-15.217-15.223-15.217v30.435zm4.811-12.922c-1.407 0-2.675-0.848-3.213-2.147-0.538-1.3-0.239-2.796 0.758-3.789 0.996-0.993 2.493-1.288 3.792-0.747 1.298 0.54 2.143 1.81 2.139 3.217 0 0.921-0.366 1.804-1.018 2.454-0.653 0.65-1.537 1.015-2.458 1.012z" android:strokeAlpha="0.2" android:strokeWidth="1" android:fillColor="#FFFFFF" android:fillAlpha="0.2"/>
 </vector>
diff --git a/chrome/browser/touch_to_fill/android/internal/java/res/drawable/touch_to_fill_new_header_image.xml b/chrome/browser/touch_to_fill/android/internal/java/res/drawable/touch_to_fill_new_header_image.xml
new file mode 100644
index 0000000..8ae659d8
--- /dev/null
+++ b/chrome/browser/touch_to_fill/android/internal/java/res/drawable/touch_to_fill_new_header_image.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Copyright 2021 The Chromium Authors. All rights reserved. Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.-->
+<!--VectorRaster is ignored because: The image should be shown rarely enough to prioritize binary size over inflation time.-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:width="320dp" android:height="114dp" android:viewportWidth="320" android:viewportHeight="114" tools:targetApi="21" tools:ignore="VectorRaster">
+    <path android:pathData="M238.097 60.783a6.041 6.041 0 1 0 0 8.544 6.041 6.041 0 0 0 0-8.544z" android:fillColor="#123868"/>
+    <path android:pathData="M242.89 84.787l-5.223-4.662 6.204-6.95-8.101-4.275 3.267-6.192 12.058 6.363a3.5 3.5 0 0 1 0.978 5.426zm25.051 22.507a13.593 13.593 0 1 1 13.593-13.593 13.609 13.609 0 0 1-13.593 13.593zm0-25.686a12.093 12.093 0 1 0 12.093 12.093 12.107 12.107 0 0 0-12.093-12.093z" android:fillColor="#0c2748"/>
+    <path android:pathData="M238.722 85.462l0.01-4.397-0.412-0.352-1.986 2.321a13.674 13.674 0 1 0 2.388 2.428zm-10.786 20.332a12.093 12.093 0 1 1 12.093-12.093 12.106 12.106 0 0 1-12.093 12.093z" android:fillColor="#0c2748"/>
+    <path android:pathData="M268.705 70.641a3.058 3.058 0 0 0-0.834-1.57c-1.158-1.024-2.094-0.52-2.775-0.753a4.418 4.418 0 0 1-1.418-1.07l-4.816-5.949-3.024 2.477 6.286 6.474 0.044-0.039c1.186 0.894 2.262 0.224 3.437 0.635 1.291 0.451 1.131 2.162 1.131 2.162l0.481-0.091a1.875 1.875 0 0 0 1.488-2.276z" android:fillColor="#be6d42"/>
+    <path android:pathData="M268.636 93.797l-9.085-22.368h5.392a1.663 1.663 0 0 1 1.53 2.314l-1.042 2.447a0.75 0.75 0 0 0 1.38 0.588l1.042-2.447a3.163 3.163 0 0 0-2.91-4.402h-6.506a0.75 0.75 0 0 0-0.695 1.032l1.292 3.181-18.948 3.069a0.751 0.751 0 0 0-0.471 0.28l-12.27 15.75a0.75 0.75 0 0 0 0.591 1.21h16.481a0.751 0.751 0 0 0 0.286-0.058 0.74 0.74 0 0 0 0.17-0.112 0.703 0.703 0 0 0 0.072-0.047l15.86-15.73 6.442 15.858a0.75 0.75 0 0 0 1.39-0.565zm-8.513-16.729l-16.015 15.883H229.47l11.146-14.306 18.996-3.077 0.588 1.449a0.704 0.704 0 0 0-0.078 0.051z" android:fillColor="#4285f4"/>
+    <path android:pathData="M254.088 65.21l5.416-4.436 2.355 2.876-5.416 4.436z" android:fillColor="#1db287"/>
+    <path android:pathData="M259.503 60.774l-8.685-10.606-0.002 0.002-1.062-1.297a4.7 4.7 0 0 0-6.07-1.043l-15.28 9.245 9 10.733 9.795-11.01 6.888 8.412z" android:fillColor="#03946a"/>
+    <path android:pathData="M249.543 45.343a3.985 3.985 0 1 1 7.97 0 3.985 3.985 0 1 1-7.97 0" android:fillColor="#be6d42"/>
+    <path android:pathData="M254.303 41.435a3.967 3.967 0 0 0-3.832 1.38l-11.384 0.276a4.09 4.09 0 0 0 6.217 3.392l4.624-2.821a3.766 3.766 0 0 0-0.223 2.745 4.497 4.497 0 0 0 6.341-4.129 3.94 3.94 0 0 0-1.743-0.843z" android:fillColor="#424242"/>
+    <path android:pathData="M254.53 38.661a6.33 6.33 0 0 0-6.425 2.596l3.099 2.714 0.555 5.028 0.879 0.268 3.673-4.35 3.084 1.64 0.008-0.003a6.33 6.33 0 0 0-4.873-7.893zm-1.905 9.07l-0.444-4.028 1.126-0.384 2.101 1.118z" android:fillColor="#dadce0"/>
+    <path android:pathData="M256.882 43.342a3.926 3.926 0 0 0-2.778-2.17l0.292-1.472a5.434 5.434 0 0 1 3.843 3.003z" android:fillColor="#bdc1c6"/>
+    <path android:pathData="M245.398 94.449h-7v-14.52l-9.305-11.097 5.363-4.498 10.124 12.072a3.5 3.5 0 0 1 0.818 2.25z" android:fillColor="#123868"/>
+    <path android:pathData="M213.624 107.673c-39.75 0-69.675-12.702-93.721-22.908-11.988-5.089-22.342-9.483-31.783-11.44-34.086-7.063-61.762 8.126-62.038 8.28a0.75 0.75 0 1 1-0.732-1.309c0.28-0.156 28.443-15.616 63.074-8.44 9.586 1.987 20.003 6.409 32.065 11.528 23.92 10.153 53.69 22.789 93.135 22.789a0.75 0.75 0 0 1 0 1.5z" android:fillColor="#dadce0"/>
+    <path android:pathData="M170.015 80.95h-91.48a20.284 20.284 0 0 1-20.284-20.283 20.284 20.284 0 0 1 20.284-20.284h105.946a20.284 20.284 0 0 1 20.284 20.284 20.284 20.284 0 0 1-20.284 20.284z" android:fillColor="#e8eaed"/>
+    <path android:pathData="M121.998 59.415l-11.557-6.669a1.445 1.445 0 0 0-2.167 1.251v13.34a1.445 1.445 0 0 0 2.167 1.25l11.557-6.668a1.447 1.447 0 0 0 0-2.504z" android:fillColor="#fff"/>
+    <path android:pathData="M184.564 54.051a6.616 6.616 0 1 1-6.615 6.616 6.623 6.623 0 0 1 6.615-6.616m0-1.5a8.116 8.116 0 1 0 8.116 8.116 8.116 8.116 0 0 0-8.116-8.116zm-55.487 8.116a8.116 8.116 0 1 1 16.232 0 8.116 8.116 0 1 1-16.232 0" android:fillColor="#9aa0a6"/>
+    <path android:pathData="M152.122 59.565l7.654-7.655a1.558 1.558 0 0 1 2.204 0l7.654 7.655a1.558 1.558 0 0 1 0 2.203l-7.654 7.654a1.558 1.558 0 0 1-2.204 0l-7.654-7.654a1.558 1.558 0 0 1 0-2.203z" android:fillColor="#fff"/>
+    <path android:pathData="M82.862 58.82a5.543 5.543 0 1 0 0 3.695h4.018v3.695h3.695v-3.695h1.848v-3.696zm-5.22 3.695a1.848 1.848 0 1 1 1.848-1.848 1.853 1.853 0 0 1-1.848 1.848z" android:fillColor="#80868b"/>
+    <path android:pathData="M112.27 81.485a0.747 0.747 0 0 1-0.287-0.057c-7.893-3.276-16.248-6.524-23.863-8.103a92.8 92.8 0 0 0-26.941-1.52 0.75 0.75 0 0 1-0.131-1.493 94.233 94.233 0 0 1 27.376 1.544c7.738 1.604 16.172 4.882 24.134 8.186a0.75 0.75 0 0 1-0.288 1.443z" android:fillColor="#fff"/>
+    <path android:pathData="M210.02 36.283a5.073 5.073 0 1 1 10.146 0 5.073 5.073 0 1 1-10.146 0" android:fillColor="#4285f4"/>
+    <path android:pathData="M102.097 24.905l8.836 3.013a1.01 1.01 0 0 0 1.317-1.152l-1.808-9.159a1.01 1.01 0 0 0-1.657-0.565l-7.027 6.146a1.01 1.01 0 0 0 0.339 1.717z" android:fillColor="#34a853"/>
+    <path android:pathData="M250.262 97.56l-4.885-2.37v-0.741h-3.955v1.033a1.767 1.767 0 0 0-0.801 1.479v1.658h9.398a0.558 0.558 0 0 0 0.243-1.06z" android:fillColor="#dadce0"/>
+    <path android:pathData="M246.156 57.856c-4.826-5.264-2.44-8.57-2.336-8.709l1.199 0.903-0.6-0.451 0.606 0.442c-0.07 0.1-1.693 2.516 2.236 6.801z" android:fillColor="#027f5b"/>
+    <path android:pathData="M163.049 86.244l4.773-2.755a1.792 1.792 105 0 1 2.448 0.656l2.755 4.772a1.792 1.792 105 0 1-0.656 2.448l-4.772 2.756a1.792 1.792 105 0 1-2.448-0.656l-2.756-4.773a1.792 1.792 105 0 1 0.656-2.448z" android:fillColor="#fbbc04"/>
+</vector>
diff --git a/chrome/browser/touch_to_fill/android/internal/java/res/layout/touch_to_fill_header_item.xml b/chrome/browser/touch_to_fill/android/internal/java/res/layout/touch_to_fill_header_item.xml
index c717b4f..da3d908f 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/res/layout/touch_to_fill_header_item.xml
+++ b/chrome/browser/touch_to_fill/android/internal/java/res/layout/touch_to_fill_header_item.xml
@@ -14,11 +14,12 @@
     android:orientation="vertical">
 
     <ImageView
+        android:id="@+id/touch_to_fill_sheet_header_image"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_gravity="center_horizontal"
         android:importantForAccessibility="no"
-        app:srcCompat="@drawable/touch_to_fill_header_image" />
+        app:srcCompat="@drawable/touch_to_fill_new_header_image" />
 
     <org.chromium.ui.widget.TextViewWithLeading
         android:id="@+id/touch_to_fill_sheet_title"
diff --git a/chrome/browser/touch_to_fill/android/internal/java/src/org/chromium/chrome/browser/touch_to_fill/TouchToFillViewBinder.java b/chrome/browser/touch_to_fill/android/internal/java/src/org/chromium/chrome/browser/touch_to_fill/TouchToFillViewBinder.java
index 9cf1950f..e698b30 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/src/org/chromium/chrome/browser/touch_to_fill/TouchToFillViewBinder.java
+++ b/chrome/browser/touch_to_fill/android/internal/java/src/org/chromium/chrome/browser/touch_to_fill/TouchToFillViewBinder.java
@@ -25,6 +25,7 @@
 
 import androidx.annotation.StringRes;
 
+import org.chromium.chrome.browser.flags.ChromeFeatureList;
 import org.chromium.chrome.browser.touch_to_fill.TouchToFillProperties.CredentialProperties;
 import org.chromium.chrome.browser.touch_to_fill.TouchToFillProperties.ItemType;
 import org.chromium.chrome.browser.touch_to_fill.data.Credential;
@@ -176,6 +177,12 @@
      */
     private static void bindHeaderView(PropertyModel model, View view, PropertyKey key) {
         if (key == SINGLE_CREDENTIAL || key == FORMATTED_URL || key == ORIGIN_SECURE) {
+            if (!ChromeFeatureList.isEnabled(
+                        ChromeFeatureList.USE_NEW_HEADER_FOR_LEGACY_SAVE_PASSWORD_BUBBLE)) {
+                final ImageView headerImage =
+                        view.findViewById(R.id.touch_to_fill_sheet_header_image);
+                headerImage.setImageResource(R.drawable.touch_to_fill_header_image);
+            } // Needs no else branch since features only change with a restart.
             TextView sheetTitleText = view.findViewById(R.id.touch_to_fill_sheet_title);
             @StringRes
             int titleStringId;
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
index 0f5f064..98b3719 100644
--- a/chrome/browser/ui/BUILD.gn
+++ b/chrome/browser/ui/BUILD.gn
@@ -2688,6 +2688,7 @@
       "//ash/shortcut_viewer",
       "//build:chromeos_buildflags",
       "//chrome/app:generated_resources",
+      "//chrome/browser/ash/crosapi",
       "//chrome/browser/ash/crostini:crostini_installer_types_mojom",
       "//chrome/browser/chromeos",
       "//chrome/browser/chromeos:backdrop_wallpaper_proto",
@@ -2829,7 +2830,10 @@
       "//chrome/browser/ui/webui/chromeos/emoji:mojo_bindings",
       "//chromeos/services/multidevice_setup/public/mojom",
     ]
-    allow_circular_includes_from += [ "//chrome/browser/chromeos" ]
+    allow_circular_includes_from += [
+      "//chrome/browser/ash/crosapi",
+      "//chrome/browser/chromeos",
+    ]
 
     if (!is_official_build) {
       if (!use_real_dbus_clients) {
diff --git a/chrome/browser/ui/android/appmenu/internal/java/res/values/dimens.xml b/chrome/browser/ui/android/appmenu/internal/java/res/values/dimens.xml
index c8a9773..562fce6 100644
--- a/chrome/browser/ui/android/appmenu/internal/java/res/values/dimens.xml
+++ b/chrome/browser/ui/android/appmenu/internal/java/res/values/dimens.xml
@@ -11,4 +11,7 @@
 
     <!-- Menu button dragging related dimensions -->
     <dimen name="auto_scroll_full_velocity">500dp</dimen>
+
+    <!-- Menu chip dimensions -->
+    <dimen name="menu_chip_highlight_extension">4dp</dimen>
 </resources>
diff --git a/chrome/browser/ui/android/appmenu/internal/java/src/org/chromium/chrome/browser/ui/appmenu/AppMenu.java b/chrome/browser/ui/android/appmenu/internal/java/src/org/chromium/chrome/browser/ui/appmenu/AppMenu.java
index 9982a7b..376435f 100644
--- a/chrome/browser/ui/android/appmenu/internal/java/src/org/chromium/chrome/browser/ui/appmenu/AppMenu.java
+++ b/chrome/browser/ui/android/appmenu/internal/java/src/org/chromium/chrome/browser/ui/appmenu/AppMenu.java
@@ -25,6 +25,7 @@
 import android.view.View.MeasureSpec;
 import android.view.View.OnKeyListener;
 import android.view.ViewGroup;
+import android.view.ViewParent;
 import android.view.ViewStub;
 import android.view.WindowManager;
 import android.widget.AdapterView;
@@ -64,6 +65,7 @@
     private final int mVerticalFadeDistance;
     private final int mNegativeSoftwareVerticalOffset;
     private final int mNegativeVerticalOffsetNotTopAnchored;
+    private final int mChipHighlightExtension;
     private final int[] mTempLocation;
     private final boolean mIconBeforeItem;
 
@@ -101,6 +103,8 @@
         mVerticalFadeDistance = res.getDimensionPixelSize(R.dimen.menu_vertical_fade_distance);
         mNegativeVerticalOffsetNotTopAnchored =
                 res.getDimensionPixelSize(R.dimen.menu_negative_vertical_offset_not_top_anchored);
+        mChipHighlightExtension =
+                res.getDimensionPixelOffset(R.dimen.menu_chip_highlight_extension);
 
         mTempLocation = new int[2];
 
@@ -269,11 +273,18 @@
         if (highlightedItemId != null) {
             View viewToHighlight = contentView.findViewById(highlightedItemId);
             HighlightParams highlightParams = new HighlightParams(HighlightShape.RECTANGLE);
-            // TODO(crbug.com/1152592): ChipView highlighting should be larger than the actual chip.
-            // Currently, the highlighting is constrained to within the chip.
             if (viewToHighlight instanceof ChipView) {
                 ChipView chipViewToHighlight = (ChipView) viewToHighlight;
                 highlightParams.setCornerRadius(chipViewToHighlight.getCornerRadius());
+                highlightParams.setHighlightExtension(mChipHighlightExtension);
+                // Set clip children and padding should be false to prevent the highlight from
+                // getting clipped.
+                ViewParent chipViewParent = chipViewToHighlight.getParent();
+                if (chipViewParent instanceof ViewGroup) {
+                    ViewGroup parentViewGroup = (ViewGroup) chipViewParent;
+                    parentViewGroup.setClipToPadding(false);
+                    parentViewGroup.setClipChildren(false);
+                }
             }
             ViewHighlighter.turnOnHighlight(viewToHighlight, highlightParams);
         }
diff --git a/chrome/browser/ui/android/appmenu/internal/java/src/org/chromium/chrome/browser/ui/appmenu/AppMenuTest.java b/chrome/browser/ui/android/appmenu/internal/java/src/org/chromium/chrome/browser/ui/appmenu/AppMenuTest.java
index 79cd08b..44bc47d 100644
--- a/chrome/browser/ui/android/appmenu/internal/java/src/org/chromium/chrome/browser/ui/appmenu/AppMenuTest.java
+++ b/chrome/browser/ui/android/appmenu/internal/java/src/org/chromium/chrome/browser/ui/appmenu/AppMenuTest.java
@@ -4,6 +4,9 @@
 
 package org.chromium.chrome.browser.ui.appmenu;
 
+import static org.mockito.ArgumentMatchers.eq;
+
+import android.graphics.Canvas;
 import android.graphics.Rect;
 import android.view.KeyEvent;
 import android.view.Menu;
@@ -23,7 +26,9 @@
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.mockito.Mock;
 import org.mockito.Mockito;
+import org.mockito.MockitoAnnotations;
 
 import org.chromium.base.test.util.Batch;
 import org.chromium.base.test.util.CallbackHelper;
@@ -41,6 +46,7 @@
 import org.chromium.ui.test.util.DummyUiActivity;
 import org.chromium.ui.test.util.DummyUiActivityTestCase;
 import org.chromium.ui.test.util.UiDisableIf;
+import org.chromium.ui.widget.ChipView;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -63,6 +69,9 @@
     private TestActivityLifecycleDispatcher mLifecycleDispatcher;
     private TestMenuButtonDelegate mTestMenuButtonDelegate;
 
+    @Mock
+    private Canvas mCanvas;
+
     @BeforeClass
     public static void setUpBeforeActivityLaunched() {
         DummyUiActivity.setTestLayout(R.layout.test_app_menu_activity_layout);
@@ -71,6 +80,7 @@
     @Override
     public void setUpTest() throws Exception {
         super.setUpTest();
+        MockitoAnnotations.initMocks(this);
         TestThreadUtils.runOnUiThreadBlocking(this::setUpTestOnUiThread);
         mLifecycleDispatcher.observerRegisteredCallbackHelper.waitForCallback(0);
     }
@@ -305,12 +315,39 @@
         showMenuAndAssert();
 
         View itemView = getViewAtPosition(0);
-        ViewHighlighterTestUtils.checkHighlightOn(itemView);
+        checkHighlightOn(itemView);
 
         TestThreadUtils.runOnUiThreadBlocking(() -> mAppMenuHandler.clearMenuHighlight());
         mMenuObserver.menuHighlightChangedCallback.waitForCallback(1);
         Assert.assertFalse(mMenuObserver.menuHighlighting);
-        ViewHighlighterTestUtils.checkHighlightOff(itemView);
+    }
+
+    @Test
+    @MediumTest
+    public void testSetMenuHighlight_ChipItem() throws TimeoutException {
+        mPropertiesDelegate.footerResourceId = R.layout.test_menu_footer;
+        Assert.assertFalse(mMenuObserver.menuHighlighting);
+
+        TestThreadUtils.runOnUiThreadBlocking(
+                () -> mAppMenuHandler.setMenuHighlight(R.id.menu_footer_chip_view));
+        mMenuObserver.menuHighlightChangedCallback.waitForCallback(0);
+        Assert.assertTrue(mMenuObserver.menuHighlighting);
+
+        showMenuAndAssert();
+        mPropertiesDelegate.footerInflatedCallback.waitForCallback(0);
+
+        ChipView chipView =
+                (ChipView) mAppMenuHandler.getAppMenu().getListView().getRootView().findViewById(
+                        R.id.menu_footer_chip_view);
+        checkHighlightOn(chipView);
+
+        ViewHighlighterTestUtils.drawPulseDrawable(chipView, mCanvas);
+        Mockito.verify(mCanvas).drawRoundRect(Mockito.any(), eq((float) chipView.getCornerRadius()),
+                eq((float) chipView.getCornerRadius()), Mockito.any());
+
+        TestThreadUtils.runOnUiThreadBlocking(() -> mAppMenuHandler.clearMenuHighlight());
+        mMenuObserver.menuHighlightChangedCallback.waitForCallback(1);
+        Assert.assertFalse(mMenuObserver.menuHighlighting);
     }
 
     @Test
@@ -328,12 +365,11 @@
         showMenuAndAssert();
 
         View itemView = ((LinearLayout) getViewAtPosition(3)).getChildAt(0);
-        ViewHighlighterTestUtils.checkHighlightOn(itemView);
+        checkHighlightOn(itemView);
 
         TestThreadUtils.runOnUiThreadBlocking(() -> mAppMenuHandler.clearMenuHighlight());
         mMenuObserver.menuHighlightChangedCallback.waitForCallback(1);
         Assert.assertFalse(mMenuObserver.menuHighlighting);
-        ViewHighlighterTestUtils.checkHighlightOff(itemView);
     }
 
     @Test
@@ -868,4 +904,8 @@
             MotionEvent event) throws ExecutionException {
         TestThreadUtils.runOnUiThreadBlocking(() -> helper.onTouch(view, event));
     }
+
+    private void checkHighlightOn(View view) {
+        Assert.assertTrue(ViewHighlighterTestUtils.checkHighlightOn(view));
+    }
 }
diff --git a/chrome/browser/ui/android/appmenu/internal/test/java/res/layout/test_menu_footer.xml b/chrome/browser/ui/android/appmenu/internal/test/java/res/layout/test_menu_footer.xml
index 2cfd92ed2..5be8817e 100644
--- a/chrome/browser/ui/android/appmenu/internal/test/java/res/layout/test_menu_footer.xml
+++ b/chrome/browser/ui/android/appmenu/internal/test/java/res/layout/test_menu_footer.xml
@@ -1,12 +1,18 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright 2019 The Chromium Authors. All rights reserved.
+<?xml version="1.0" encoding="utf-8"?><!-- Copyright 2019 The Chromium Authors. All rights reserved.
      Use of this source code is governed by a BSD-style license that can be
      found in the LICENSE file. -->
 
-<TextView
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools"
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    tools:ignore="HardcodedText"
-    android:text="Menu Footer"/>
\ No newline at end of file
+    android:orientation="horizontal">
+    <TextView xmlns:tools="http://schemas.android.com/tools"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:text="Menu Footer"
+        tools:ignore="HardcodedText" />
+    <org.chromium.ui.widget.ChipView
+        android:id="@+id/menu_footer_chip_view"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content" />
+</LinearLayout>
\ No newline at end of file
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
index a59da284..0fd5961 100644
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -835,7 +835,7 @@
         Status
       </message>
       <message name="IDS_PRIVACY_SANDBOX_FLOC_GROUP_TITLE" desc="Title for FLoC group.">
-        Group ID
+        Group number
       </message>
       <message name="IDS_PRIVACY_SANDBOX_FLOC_UPDATE_TITLE" desc="Title for FLoC update.">
         Next update
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_PRIVACY_SANDBOX_FLOC_GROUP_TITLE.png.sha1 b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_PRIVACY_SANDBOX_FLOC_GROUP_TITLE.png.sha1
index 4a6ec44..250992f 100644
--- a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_PRIVACY_SANDBOX_FLOC_GROUP_TITLE.png.sha1
+++ b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_PRIVACY_SANDBOX_FLOC_GROUP_TITLE.png.sha1
@@ -1 +1 @@
-c5bb0dcbea93ce730deed86f56d47b5a1c0846d5
\ No newline at end of file
+a140cc7065a200b77d0ee19a7fd039288b67b6e2
\ No newline at end of file
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_af.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_af.xtb
index a1eb261e..9e9ed92 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_af.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_af.xtb
@@ -1,6 +1,7 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="af">
+<translation id="1016498331642356377">Soek vinnig met jou stem. Raak en hou om hierdie kortpad te wysig.</translation>
 <translation id="1028699632127661925">Stuur tans na <ph name="DEVICE_NAME" /> toe …</translation>
 <translation id="103269572468856066">Vee ook dié data uit?</translation>
 <translation id="1036348656032585052">Skakel af</translation>
@@ -157,6 +158,7 @@
 <translation id="2067805253194386918">teks</translation>
 <translation id="2068748236079642969">Kyk volgende video</translation>
 <translation id="2074143993849053708">Assistent-stemsoektog se instemming-UI is toegemaak</translation>
+<translation id="2075835334924942448">Jy sal berigte hier kry</translation>
 <translation id="2082238445998314030">Resultaat <ph name="RESULT_NUMBER" /> van <ph name="TOTAL_RESULTS" /></translation>
 <translation id="2096012225669085171">Sinkroniseer en personaliseer oor toestelle heen</translation>
 <translation id="2100273922101894616">Outomatiese aanmelding</translation>
@@ -170,6 +172,7 @@
 <translation id="2131665479022868825"><ph name="DATA" /> gestoor</translation>
 <translation id="213279576345780926">Het <ph name="TAB_TITLE" /> toegemaak</translation>
 <translation id="2139186145475833000">Voeg by tuisskerm</translation>
+<translation id="2141396931810938595">Gegrond op jou gebruik</translation>
 <translation id="214888715418183969">Kies wat jy gemaklik voel om met Chrome te deel. Die maatstawwe wat jy deel, sal gebruik word om te help om Chrome se kenmerke, werkverrigting en stabiliteit te verbeter.</translation>
 <translation id="2154484045852737596">Wysig kaart</translation>
 <translation id="2154710561487035718">Kopieer URL</translation>
@@ -257,6 +260,7 @@
 <translation id="2651091186440431324">{FILE_COUNT,plural, =1{# oudiolêer}other{# oudiolêers}}</translation>
 <translation id="2656405586795711023">Webprogramme</translation>
 <translation id="2689830683995595741">As jy Chrome gebruik, stem jy in tot <ph name="BEGIN_LINK1" />Google se diensbepalings<ph name="END_LINK1" /> en <ph name="BEGIN_LINK2" />Google Chrome en Chrome-bedryfstelsel se bykomende diensbepalings<ph name="END_LINK2" />. Die <ph name="BEGIN_LINK3" />Privaatheidskennisgewing vir Google-rekeninge wat met Family Link bestuur word<ph name="END_LINK3" /> is ook van toepassing.</translation>
+<translation id="2702516483241149200">Nuut: Deel 'n skakel wat na hierdie teks toe rollees</translation>
 <translation id="2704606927547763573">Gekopieer</translation>
 <translation id="2707726405694321444">Herlaai bladsy</translation>
 <translation id="271033894570825754">Nuut</translation>
@@ -304,6 +308,7 @@
 <translation id="2956410042958133412">Hierdie rekening word bestuur deur <ph name="PARENT_NAME_1" /> en <ph name="PARENT_NAME_2" />.</translation>
 <translation id="2961208450284224863">{READING_LIST_UNREAD_PAGE_COUNT,plural, =1{<ph name="READING_LIST_UNREAD_PAGE_COUNT_ONE" /> ongeleesde bladsy}other{<ph name="READING_LIST_UNREAD_PAGE_COUNT_MANY" /> ongeleesde bladsye}}</translation>
 <translation id="2979025552038692506">Gekose incognito-oortjie</translation>
+<translation id="2979448359891869301">Kan nie skermkiekie verleng nie. Probeer weer wanneer jou foon nie besig is nie.</translation>
 <translation id="2987620471460279764">Teks van ander toestel af gedeel</translation>
 <translation id="2989523299700148168">Onlangs besoek</translation>
 <translation id="2992473221983447149">Prentbeskrywings</translation>
@@ -345,6 +350,7 @@
 <translation id="3265534588625245297">Bestuur die werwe wat jy volg</translation>
 <translation id="3269093882174072735">Laai prent</translation>
 <translation id="3269956123044984603">Skakel “Sinkroniseer data outomaties” in Android-rekeninginstellings aan om jou oortjies van jou ander toestelle af te kry.</translation>
+<translation id="3280562213547448728">Stemsoektog</translation>
 <translation id="3282568296779691940">Meld by Chrome aan</translation>
 <translation id="3284510035090979597">Proaktiewe hulp</translation>
 <translation id="3285080554353377245">Video's oor hoe om Chrome te gebruik</translation>
@@ -395,6 +401,7 @@
 <translation id="3563767357928833671">Knipbordinhoud word gewys</translation>
 <translation id="3566923219790363270">Chrome maak nog gereed vir VR. Herbegin Chrome later.</translation>
 <translation id="3568688522516854065">Meld aan en skakel sinkronisering aan om jou oortjies van jou ander toestelle af te kry</translation>
+<translation id="3577473026931028326">Iets was fout. Probeer weer.</translation>
 <translation id="3587482841069643663">Alles</translation>
 <translation id="3587596251841506391">Help websekuriteit verbeter</translation>
 <translation id="3602290021589620013">Voorskou</translation>
@@ -480,6 +487,7 @@
 <translation id="4195643157523330669">Maak in nuwe oortjie oop</translation>
 <translation id="4198423547019359126">Geen beskikbare aflaailiggings nie</translation>
 <translation id="4209895695669353772">Skakel sinkronisering aan om gepersonaliseerde inhoud wat deur Google voorgestel is, te kry</translation>
+<translation id="4225895483398857530">Nutsbalkkortpad</translation>
 <translation id="4242533952199664413">Maak instellings oop</translation>
 <translation id="4248098802131000011">Beskerm jou wagwoorde teen dataskendings en ander sekuriteitsprobleme</translation>
 <translation id="4250229828105606438">Skermkiekie</translation>
@@ -746,12 +754,14 @@
 <translation id="5864419784173784555">Wag tans vir nog 'n aflaai …</translation>
 <translation id="5865733239029070421">Stuur gebruikstatistieke en omvalverslae outomaties na Google</translation>
 <translation id="5869522115854928033">Gestoorde wagwoorde</translation>
+<translation id="587735546353481577">Om 'n werf te volg, moet jy na die werf gaan, die Chrome-kieslys oopmaak, en op Volg tik.</translation>
 <translation id="5880748256563468367">Gaan na stroom</translation>
 <translation id="5884076754568147479">Om jou te help om take te voltooi, sal Google die URL'e en inhoud ontvang van werwe waarop jy Assistent gebruik, asook inligting wat jy deur Assistent indien</translation>
 <translation id="5919204609460789179">Dateer <ph name="PRODUCT_NAME" /> op om sinkronisering te begin</translation>
 <translation id="5937580074298050696"><ph name="AMOUNT" /> gestoor</translation>
 <translation id="5939518447894949180">Stel terug</translation>
 <translation id="5942872142862698679">Gebruik Google om te soek</translation>
+<translation id="5945035219773565305">Huidige aanbeveling:  <ph name="RECOMMENDATION" /></translation>
 <translation id="5951119116059277034">Bekyk tans regstreekse bladsy</translation>
 <translation id="5952764234151283551">Stuur die URL van 'n bladsy wat jy probeer bereik na Google toe</translation>
 <translation id="5956665950594638604">Maak die Chrome-hulpsentrum in 'n nuwe oortjie oop</translation>
@@ -765,6 +775,10 @@
 <translation id="6000203700195075278">Volg weer</translation>
 <translation id="6002623704405939939">Besoek <ph name="BEGIN_LINK2" />My Google-aktiwiteit<ph name="END_LINK2" /> om <ph name="BEGIN_LINK1" />soektog<ph name="END_LINK1" /> of ander vorme van geskiedenis uit te vee</translation>
 <translation id="6005538289190791541">Voorgestelde wagwoord</translation>
+<translation id="6032091552407840792">Hierdie proeflopie is net in <ph name="BEGIN_LINK" />sommige streke<ph name="END_LINK" /> aktief.</translation>
+<translation id="6033245666633565791">Met <ph name="BEGIN_LINK" />Privacy Sandbox<ph name="END_LINK" /> ontwikkel Chrome nuwe tegnologieë om jou teen kruiswerfnasporing te beveilig terwyl dit die oop web in stand hou.
+
+Privacy Sandbox-proeflopies word nog aktief ontwikkel en is in uitgesoekte streke beskikbaar. Vir nou kan werwe Privacy Sandbox probeer terwyl hulle steeds huidige webtegnologieë soos derdepartywebkoekies gebruik.</translation>
 <translation id="6036057147555329831">Ekstra ICU</translation>
 <translation id="6039379616847168523">Spring na die volgende oortjie</translation>
 <translation id="6040143037577758943">Maak toe</translation>
@@ -830,6 +844,7 @@
 <translation id="6407224748847589805">Kan nie jou rekenaar koppel nie. Probeer 'n ander verifikasie-opsie.</translation>
 <translation id="6410404864818553978">Basiese gebruiksdata</translation>
 <translation id="6410883413783534063">Maak oortjies oop om verskillende bladsye op dieselfde tyd te besoek</translation>
+<translation id="6411219469806822692">Kan nie hoër gaan nie. Probeer om hoër op die bladsy te begin.</translation>
 <translation id="6412673304250309937">Vergelyk URL'e met 'n lys onveilige werwe wat in Chrome geberg word. As 'n werf probeer om jou wagwoord te steel, of wanneer jy 'n skadelike lêer aflaai, sal Chrome dalk ook URL'e, insluitend stukkies bladsyinhoud, na Veiligblaai toe stuur.</translation>
 <translation id="641643625718530986">Druk tans uit …</translation>
 <translation id="6427112570124116297">Vertaal die Web</translation>
@@ -892,10 +907,12 @@
 <translation id="671481426037969117">Jou <ph name="FQDN" />-tydteller het uitgetel. Dit sal môre weer begin.</translation>
 <translation id="6738516213925468394">Jou data is om <ph name="TIME" /> met jou <ph name="BEGIN_LINK" />sinkroniseringwagfrase<ph name="END_LINK" /> geënkripeer. Voer dit in om sinkronisering te begin.</translation>
 <translation id="6738867403308150051">Laai tans af …</translation>
+<translation id="6751521182688001123">Maak vinnig 'n nuwe oortjie oop. Raak en hou om hierdie kortpad te wysig.</translation>
 <translation id="6767294960381293877">Lys toestelle om 'n oortjie mee te deel, is teen halwe hoogte oopgemaak.</translation>
 <translation id="6783942555455976443">Stoor hierdie bladsy vir later en kry 'n onthounota</translation>
 <translation id="6811034713472274749">Bladsy is gereed om bekyk te word</translation>
 <translation id="6813446258015311409">Meld by Chrome aan; oopgemaak.</translation>
+<translation id="6817747507826986771">Deel hierdie bladsy vinnig. Raak en hou om hierdie kortpad te wysig.</translation>
 <translation id="6820686453637990663">CVC</translation>
 <translation id="6824899148643461612"><ph name="TAB_TITLE" />, oortjie, gekies</translation>
 <translation id="6846298663435243399">Laai tans …</translation>
@@ -966,6 +983,7 @@
 <translation id="7333031090786104871">Voeg steeds vorige werf by</translation>
 <translation id="7339898014177206373">Nuwe venster</translation>
 <translation id="7340958967809483333">Opsies vir Ontdek</translation>
+<translation id="7352339641508007922">Sleep om 'n lang skermkiekie te neem</translation>
 <translation id="7352651011704765696">Iets het verkeerd geloop</translation>
 <translation id="7352939065658542140">VIDEO</translation>
 <translation id="7353894246028566792">{NUM_SELECTED,plural, =1{Deel 1 gekose item}other{Deel # gekose items}}</translation>
@@ -1058,6 +1076,7 @@
 <translation id="7876243839304621966">Verwyder alles</translation>
 <translation id="7879130110979560610">{READING_LIST_REMINDER_NOTIFICATION_SUBTITLE,plural, =1{Jy het <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_ONE" /> ongelese bladsy}other{Jy het <ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_MANY" /> ongelese bladsye}}</translation>
 <translation id="7882131421121961860">Geen geskiedenis gevind nie</translation>
+<translation id="7884346424584885269">Chrome het toestemming nodig om toestelle in die omtrek te soek. <ph name="BEGIN_LINK" />Dateer toestemmings op<ph name="END_LINK" /></translation>
 <translation id="7886917304091689118">Werk in Chrome</translation>
 <translation id="789763218334337857">Hoe om Chrome te gebruik</translation>
 <translation id="7903184275147100332">Dit kan 'n rukkie neem</translation>
@@ -1151,6 +1170,11 @@
 <translation id="8461694314515752532">Enkripteer gesinkroniseerde data met jou eie sinkroniseringwagfrase</translation>
 <translation id="8466613982764129868">Maak seker dat <ph name="TARGET_DEVICE_NAME" /> aan die internet gekoppel is.</translation>
 <translation id="8473863474539038330">Adresse en meer</translation>
+<translation id="8481921391193215807">Wanneer dit aan is, kan werwe die privaatheidinstandhoudingtegnieke wat hier gewys word, gebruik om hul inhoud en dienste te verskaf. Dit sluit alternatiewe vir kruiswerfnasporing in. Nog proeflopies kan oor tyd bygevoeg word.
+
+<ph name="BEGIN_LIST_ITEM1" />Adverteerders en uitgewers kan FLoC gebruik.<ph name="END_LIST_ITEM1" />
+
+<ph name="BEGIN_LIST_ITEM2" />Adverteerders en uitgewers kan die doeltreffendheid van advertensies op 'n manier bestudeer wat jou nie oor werwe heen naspoor nie.<ph name="END_LIST_ITEM2" /></translation>
 <translation id="8481980314595922412">Proeflopiekenmerke is aan</translation>
 <translation id="8485434340281759656"><ph name="FILE_SIZE" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation>
 <translation id="8489271220582375723">Maak die geskiedenisbladsy oop</translation>
@@ -1262,6 +1286,7 @@
 <translation id="9204836675896933765">1 lêer oor</translation>
 <translation id="9206873250291191720">A</translation>
 <translation id="9209888181064652401">Kan nie oproepe maak nie</translation>
+<translation id="9212845824145208577">Kan nie laer gaan nie. Probeer om laer op die bladsy te begin.</translation>
 <translation id="9219103736887031265">Prente</translation>
 <translation id="926205370408745186">Verwyder jou Chrome-aktiwiteit van Digitale Welstand</translation>
 <translation id="927968626442779827">Gebruik Ligte Modus op Google Chrome</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb
index f959643..453ceaf 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb
@@ -1,6 +1,7 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="fa">
+<translation id="1016498331642356377">به‌سرعت با صدایتان جستجو کنید. برای ویرایش این میان‌بر، لمس کنید و نگه دارید.</translation>
 <translation id="1028699632127661925">درحال ارسال به <ph name="DEVICE_NAME" />…</translation>
 <translation id="103269572468856066">داده‌های این سایت‌ها و برنامه‌ها نیز پاک شود؟</translation>
 <translation id="1036348656032585052">خاموش کردن</translation>
@@ -157,6 +158,7 @@
 <translation id="2067805253194386918">نوشتار</translation>
 <translation id="2068748236079642969">تماشای ویدیوی بعدی</translation>
 <translation id="2074143993849053708">میانای کاربر رضایت برای جستجوی گفتاری «دستیار» بسته شد</translation>
+<translation id="2075835334924942448">داستان‌ها را اینجا خواهید دید</translation>
 <translation id="2082238445998314030"><ph name="RESULT_NUMBER" /> نتیجه از <ph name="TOTAL_RESULTS" /></translation>
 <translation id="2096012225669085171">همگام‌سازی و شخصی‌سازی در همه دستگاه‌ها</translation>
 <translation id="2100273922101894616">ورود به سیستم خودکار</translation>
@@ -170,6 +172,7 @@
 <translation id="2131665479022868825"><ph name="DATA" /> صرفه‌جویی شد</translation>
 <translation id="213279576345780926"><ph name="TAB_TITLE" /> بسته شد</translation>
 <translation id="2139186145475833000">افزودن به صفحه اصلی</translation>
+<translation id="2141396931810938595">براساس میزان استفاده شما</translation>
 <translation id="214888715418183969">‏انتخاب کنید می‌خواهید چه چیزهایی با Chrome هم‌رسانی شود. از سنجه‌هایی که هم‌رسانی می‌کنید برای کمک به بهبود ویژگی‌ها، عملکرد، و پایداری Chrome استفاده خواهد شد.</translation>
 <translation id="2154484045852737596">ویرایش کارت</translation>
 <translation id="2154710561487035718">کپی نشانی وب</translation>
@@ -257,6 +260,7 @@
 <translation id="2651091186440431324">{FILE_COUNT,plural, =1{# فایل صوتی}one{# فایل صوتی}other{# فایل صوتی}}</translation>
 <translation id="2656405586795711023">برنامه‌های وب</translation>
 <translation id="2689830683995595741">‏با استفاده کردن از Chrome، با <ph name="BEGIN_LINK1" />شرایط خدمات Google<ph name="END_LINK1" /> و <ph name="BEGIN_LINK2" />شرایط خدمات تکمیلی Google Chrome و سیستم‌عامل Chrome<ph name="END_LINK2" /> موافقت می‌کنید. <ph name="BEGIN_LINK3" />اعلان حریم‌خصوصی برای «حساب‌های Google» مدیریت‌شده با Family Link<ph name="END_LINK3" /> نیز اعمال می‌شود.</translation>
+<translation id="2702516483241149200">جدید: هم‌رسانی پیوندی که به این نوشتار پیمایش می‌کند</translation>
 <translation id="2704606927547763573">کپی شد</translation>
 <translation id="2707726405694321444">بازخوانی صفحه</translation>
 <translation id="271033894570825754">جدید</translation>
@@ -304,6 +308,7 @@
 <translation id="2956410042958133412"><ph name="PARENT_NAME_1" /> و <ph name="PARENT_NAME_2" /> این حساب را مدیریت می‌کنند.</translation>
 <translation id="2961208450284224863">{READING_LIST_UNREAD_PAGE_COUNT,plural, =1{<ph name="READING_LIST_UNREAD_PAGE_COUNT_ONE" /> صفحه خوانده‌نشده}one{<ph name="READING_LIST_UNREAD_PAGE_COUNT_MANY" /> صفحه خوانده‌نشده}other{<ph name="READING_LIST_UNREAD_PAGE_COUNT_MANY" /> صفحه خوانده‌نشده}}</translation>
 <translation id="2979025552038692506">برگه ناشناس انتخاب‌شده</translation>
+<translation id="2979448359891869301">نمی‌توان نماگرفت را گسترش داد. وقتی تلفنتان مشغول نیست، دوباره امتحان کنید.</translation>
 <translation id="2987620471460279764">نوشتار هم‌رسانی‌شده از دستگاه دیگر</translation>
 <translation id="2989523299700148168">اخیراً دیده‌شده</translation>
 <translation id="2992473221983447149">شرح تصویر</translation>
@@ -345,6 +350,7 @@
 <translation id="3265534588625245297">مدیریت سایت‌هایی که دنبال می‌کنید</translation>
 <translation id="3269093882174072735">بارگیری تصویر</translation>
 <translation id="3269956123044984603">‏برای دسترسی به برگه‌ها از دستگاه‌های دیگرتان، «همگام‌سازی خودکار داده‌ها» را در تنظیمات حساب Android روشن کنید.</translation>
+<translation id="3280562213547448728">جستجوی گفتاری</translation>
 <translation id="3282568296779691940">‏ورود به Chrome</translation>
 <translation id="3284510035090979597">کمک کنش‌گرایانه</translation>
 <translation id="3285080554353377245">‏ویدیوهایی درباره نحوه استفاده از Chrome</translation>
@@ -395,6 +401,7 @@
 <translation id="3563767357928833671">محتوای بریده‌دان نشان داده شد</translation>
 <translation id="3566923219790363270">‏Chrome هنوز درحال آماده‌سازی برای VR است. Chrome بعداً بازراه‌اندازی شود.</translation>
 <translation id="3568688522516854065">برای اینکه به برگه‌های بازشده در سایر دستگاه‌ها دسترسی داشته باشید، به سیستم وارد شوید و همگام‌سازی را روشن کنید</translation>
+<translation id="3577473026931028326">مشکلی پیش آمد. دوباره امتحان کنید.</translation>
 <translation id="3587482841069643663">همه</translation>
 <translation id="3587596251841506391">به بهبود امنیت وب کمک کنید</translation>
 <translation id="3602290021589620013">پیش‌نمایش</translation>
@@ -480,6 +487,7 @@
 <translation id="4195643157523330669">باز کردن در برگهٔ جدید</translation>
 <translation id="4198423547019359126">مکانی برای بارگیری دردسترس نیست</translation>
 <translation id="4209895695669353772">‏برای اینکه Google محتوای شخصی‌شده به شما پیشنهاد دهد، همگام‌سازی را روشن کنید</translation>
+<translation id="4225895483398857530">میان‌بر نوار ابزار</translation>
 <translation id="4242533952199664413">باز کردن تنظیمات</translation>
 <translation id="4248098802131000011">گذرواژه خود را از نقض داده و سایر مسائل امنیتی ایمن نگه دارید</translation>
 <translation id="4250229828105606438">نماگرفت</translation>
@@ -746,12 +754,14 @@
 <translation id="5864419784173784555">در انتظار بارگیری موردی دیگر…</translation>
 <translation id="5865733239029070421">‏به‌طور خودکار آمار کاربرد و گزارش‌های خرابی را به Google ارسال می‌کند</translation>
 <translation id="5869522115854928033">گذرواژه‌های ذخیره‌شده</translation>
+<translation id="587735546353481577">‏برای دنبال کردن سایت، به سایت موردنظر بروید، منوی Chrome را باز کنید و روی «دنبال کردن» ضربه بزنید.</translation>
 <translation id="5880748256563468367">رفتن به جارزن</translation>
 <translation id="5884076754568147479">‏برای کمک به انجام کارها، Google نشانی‌های وب و محتوای سایت‌هایی را که در آن‌ها از «دستیار» استفاده می‌کنید، و همچنین اطلاعاتی را که ازطریق «دستیار» ارسال می‌کنید دریافت خواهد کرد</translation>
 <translation id="5919204609460789179">برای شروع همگام‌سازی، <ph name="PRODUCT_NAME" /> را به‌روزرسانی کنید</translation>
 <translation id="5937580074298050696"><ph name="AMOUNT" /> صرفه‌جویی‌شده</translation>
 <translation id="5939518447894949180">بازنشانی</translation>
 <translation id="5942872142862698679">‏استفاده از Google برای جستجو</translation>
+<translation id="5945035219773565305">توصیه کنونی:  <ph name="RECOMMENDATION" /></translation>
 <translation id="5951119116059277034">درحال مشاهده صفحه فعال</translation>
 <translation id="5952764234151283551">‏نشانی وب صفحه‌ای را که باز می‌کنید به Google ارسال می‌کند</translation>
 <translation id="5956665950594638604">‏باز کردن مرکز راهنمایی Chrome در برگه جدید</translation>
@@ -765,6 +775,10 @@
 <translation id="6000203700195075278">دنبال کردن مجدد</translation>
 <translation id="6002623704405939939">‏برای پاک کردن سابقه <ph name="BEGIN_LINK1" />جستجو<ph name="END_LINK1" /> یا دیگر انواع سابقه، به <ph name="BEGIN_LINK2" />فعالیت من در Google<ph name="END_LINK2" /> بروید</translation>
 <translation id="6005538289190791541">گذرواژه پیشنهادی</translation>
+<translation id="6032091552407840792">این دوره آزمایشی فقط در <ph name="BEGIN_LINK" />برخی مناطق<ph name="END_LINK" /> فعال است.</translation>
+<translation id="6033245666633565791">‏Chrome بااستفاده از <ph name="BEGIN_LINK" />جعبه ایمنی حریم‌خصوصی<ph name="END_LINK" /> درحال توسعه فناوری‌های جدیدی است که ضمن حفظ وبِ باز، از شما در برابر ردیابی بین‌سایتی محافظت می‌کند.
+
+دوره آزمایشی «جعبه ایمنی حریم‌خصوصی» هنوز در مرحله توسعه فعال است و در مناطق منتخب دردسترس است. درحال‌حاضر، ممکن است سایت‌ها همچنان که از فناوری‌های کوکی‌های شخص ثالث استفاده می‌کنند، «جعبه ایمنی حریم‌خصوصی» را نیز امتحان کنند.</translation>
 <translation id="6036057147555329831">‏ICU اضافی</translation>
 <translation id="6039379616847168523">رفتن به برگه بعدی</translation>
 <translation id="6040143037577758943">بستن</translation>
@@ -830,6 +844,7 @@
 <translation id="6407224748847589805">اتصال به رایانه ممکن نیست. گزینه تأیید دیگری را امتحان کنید.</translation>
 <translation id="6410404864818553978">داده‌های استفاده اصلی</translation>
 <translation id="6410883413783534063">برای بازدید هم‌زمان از صفحه‌های مختلف، چند برگه باز کنید</translation>
+<translation id="6411219469806822692">نمی‌توان بالاتر رفت. از بخش بالاتری در صفحه شروع کنید.</translation>
 <translation id="6412673304250309937">‏نشانی‌های وب را با فهرست سایت‌های ناامنی که در Chrome ذخیره شده است مقایسه می‌کند. اگر سایتی تلاش کند گذرواژه شما را به‌سرقت ببرد، یا وقتی فایل مخربی بارگیری می‌کنید، Chrome ممکن است نشانی‌های وب را نیز به همراه بخش‌های کوچکی از محتوای صفحه، به «مرور ایمن» ارسال کند.</translation>
 <translation id="641643625718530986">چاپ...</translation>
 <translation id="6427112570124116297">وب را ترجمه کنید</translation>
@@ -892,10 +907,12 @@
 <translation id="671481426037969117">تایمر <ph name="FQDN" /> شما متوقف شد. دوباره فردا شروع به کار می‌کند.</translation>
 <translation id="6738516213925468394">داده‌ها با  <ph name="BEGIN_LINK" />گذرعبارت همگام‌سازی<ph name="END_LINK" /> شما در <ph name="TIME" /> رمز می‌شود. برای شروع همگام‌سازی، آن را وارد کنید.</translation>
 <translation id="6738867403308150051">در حال بارگیری…</translation>
+<translation id="6751521182688001123">به‌سرعت برگه جدیدی باز کنید. برای ویرایش این میان‌بر، لمس کنید و نگه دارید.</translation>
 <translation id="6767294960381293877">فهرست نیمه‌باز دستگاه‌هایی که می‌توان با آن‌ها برگه هم‌رسانی کرد.</translation>
 <translation id="6783942555455976443">این صفحه را برای خواندن در فرصتی دیگر ذخیره کنید و یادآوری دریافت کنید</translation>
 <translation id="6811034713472274749">صفحه آماده مشاهده است</translation>
 <translation id="6813446258015311409">‏ورود به سیستم Chrome، باز شد.</translation>
+<translation id="6817747507826986771">به‌سرعت این صفحه را هم‌رسانی کنید. برای ویرایش این میان‌بر، لمس کنید و نگه دارید.</translation>
 <translation id="6820686453637990663">CVC</translation>
 <translation id="6824899148643461612"><ph name="TAB_TITLE" />، برگه، انتخاب‌شده</translation>
 <translation id="6846298663435243399">درحال بارگیری…</translation>
@@ -966,6 +983,7 @@
 <translation id="7333031090786104871">همچنان درحال افزودن سایت قبلی</translation>
 <translation id="7339898014177206373">پنجرهٔ جدید</translation>
 <translation id="7340958967809483333">گزینه‌های «یافته‌ها»</translation>
+<translation id="7352339641508007922">برای ثبت نماگرفت طولانی، بکشید</translation>
 <translation id="7352651011704765696">مشکلی پیش آمد</translation>
 <translation id="7352939065658542140">ویدیو</translation>
 <translation id="7353894246028566792">{NUM_SELECTED,plural, =1{اشتراک‌گذاری ۱ مورد انتخاب‌شده}one{اشتراک‌گذاری # مورد انتخاب‌شده}other{اشتراک‌گذاری # مورد انتخاب‌شده}}</translation>
@@ -1058,6 +1076,7 @@
 <translation id="7876243839304621966">حذف همه</translation>
 <translation id="7879130110979560610">{READING_LIST_REMINDER_NOTIFICATION_SUBTITLE,plural, =1{<ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_ONE" /> صفحه خوانده‌نشده دارید}one{<ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_MANY" /> صفحه خوانده‌نشده دارید}other{<ph name="READING_LIST_REMINDER_NOTIFICATION_SUBTITLE_MANY" /> صفحه خوانده‌نشده دارید}}</translation>
 <translation id="7882131421121961860">هیچ سابقه‌ای پیدا نشد</translation>
+<translation id="7884346424584885269">‏Chrome برای اسکن دستگاه‌های اطراف به اجازه نیاز دارد. <ph name="BEGIN_LINK" />اجازه‌ها را به‌روزرسانی کنید<ph name="END_LINK" />.</translation>
 <translation id="7886917304091689118">‏درحال اجرا در Chrome</translation>
 <translation id="789763218334337857">‏نحوه استفاده از Chrome</translation>
 <translation id="7903184275147100332">ممکن است یک دقیقه طول بکشد</translation>
@@ -1151,6 +1170,11 @@
 <translation id="8461694314515752532">رمزگذاری داده‌های همگام‌سازی‌شده با گذرعبارت همگام‌سازی خودتان</translation>
 <translation id="8466613982764129868">مطمئن شوید <ph name="TARGET_DEVICE_NAME" /> به اینترنت متصل باشد</translation>
 <translation id="8473863474539038330">نشانی‌ها و سایر موارد</translation>
+<translation id="8481921391193215807">‏وقتی روشن باشد، سایت‌ها می‌توانند برای ارائه محتوا و سرویس‌هایشان از تکنیک‌های حفظ حریم‌خصوصی نشان داده‌شده در اینجا استفاده کنند. این تکنیک‌ها شامل روش‌های جایگزین برای ردیابی بین‌سایتی می‌شود. ممکن است در گذر زمان، دوره‌های آزمایشی بیشتری اضافه شود.
+
+<ph name="BEGIN_LIST_ITEM1" />تبلیغ‌کنندگان و ناشران می‌توانند از FLoC استفاده کنند.<ph name="END_LIST_ITEM1" />
+
+<ph name="BEGIN_LIST_ITEM2" />تبلیغ‌کنندگان و ناشران می‌توانند اثربخشی آگهی‌ها را به‌گونه‌ای بررسی کنند که شما را در سایت‌ها ردیابی نکند.<ph name="END_LIST_ITEM2" /></translation>
 <translation id="8481980314595922412">ویژگی‌های آزمایشی روشن است</translation>
 <translation id="8485434340281759656"><ph name="FILE_SIZE" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation>
 <translation id="8489271220582375723">باز کردن صفحه سابقه</translation>
@@ -1262,6 +1286,7 @@
 <translation id="9204836675896933765">۱ فایل باقی مانده است</translation>
 <translation id="9206873250291191720">A</translation>
 <translation id="9209888181064652401">برقراری تماس ممکن نیست</translation>
+<translation id="9212845824145208577">نمی‌توان پایین‌تر رفت. از بخش پایین‌تری در صفحه شروع کنید.</translation>
 <translation id="9219103736887031265">تصاویر</translation>
 <translation id="926205370408745186">‏فعالیت Chrome شما از «آسایش دیجیتالی» برداشته شود</translation>
 <translation id="927968626442779827">‏استفاده از «حالت ساده» در Google Chrome</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 f3c0d02..149d007f 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
@@ -227,6 +227,7 @@
 <translation id="247737702124049222">Naka-on ang mga paglalarawan ng larawan</translation>
 <translation id="2482878487686419369">Mga Abiso</translation>
 <translation id="2485422356828889247">I-uninstall</translation>
+<translation id="2489545061398461256">Io-off namin ulit ito kapag tapos na kami</translation>
 <translation id="2494974097748878569">Google Assistant sa Chrome</translation>
 <translation id="2496180316473517155">History ng Pag-browse</translation>
 <translation id="2497852260688568942">Na-disable ng iyong administrator ang pag-sync</translation>
@@ -535,6 +536,7 @@
 <translation id="4583164079174244168">{MINUTES,plural, =1{# minuto ang nakalipas}one{# minuto ang nakalipas}other{# na minuto ang nakalipas}}</translation>
 <translation id="4587589328781138893">Mga Site</translation>
 <translation id="4594952190837476234">Naka-offline ang page na ito mula noong <ph name="CREATION_TIME" /> at maaaring iba ito sa online na bersyon.</translation>
+<translation id="4608360466722749036">Ino-on ang Bluetooth…</translation>
 <translation id="4616150815774728855">Buksan ang <ph name="WEBAPK_NAME" /></translation>
 <translation id="4619564267100705184">I-verify na ikaw ito</translation>
 <translation id="4634124774493850572">Gamitin ang password</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lo.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lo.xtb
index f402661dd..0d6a3ff6 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lo.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lo.xtb
@@ -227,6 +227,7 @@
 <translation id="247737702124049222">ຄຳອະທິບາຍຮູບພາບເປີດຢູ່</translation>
 <translation id="2482878487686419369">ການແຈ້ງເຕືອນ</translation>
 <translation id="2485422356828889247">ຖອນ​ຕິດ​ຕັ້ງ</translation>
+<translation id="2489545061398461256">ພວກເຮົາຈະປິດມັນໄວ້ຫຼັງຈາກພວກເຮົາໃຊ້ແລ້ວໆ</translation>
 <translation id="2494974097748878569">ຜູ້ຊ່ວຍ Google ໃນ Chrome</translation>
 <translation id="2496180316473517155">ປະຫວັດການທ່ອງເວັບ</translation>
 <translation id="2497852260688568942">ການຊິ້ງຂໍ້ມູນຖືກປິດນຳໃຊ້ໂດຍຜູ້ເບິ່ງແຍງລະບົບຂອງທ່ານ</translation>
@@ -535,6 +536,7 @@
 <translation id="4583164079174244168">{MINUTES,plural, =1{# ນາທີກ່ອນນີ້}other{# ນາທີກ່ອນນີ້}}</translation>
 <translation id="4587589328781138893">ເວັບໄຊ</translation>
 <translation id="4594952190837476234">ໜ້າອອບລາຍນີ້ມາຈາກ <ph name="CREATION_TIME" /> ແລະ ອາດຈະແຕກຕ່າງຈາກເວີຊັນອອນລາຍ.</translation>
+<translation id="4608360466722749036">ກຳລັງເປີດໃຊ້ Bluetooth…</translation>
 <translation id="4616150815774728855">ເປີດ <ph name="WEBAPK_NAME" /></translation>
 <translation id="4619564267100705184">ຢັ້ງຢືນວ່າແມ່ນທ່ານແທ້</translation>
 <translation id="4634124774493850572">ໃຊ້ລະຫັດຜ່ານ</translation>
diff --git a/chrome/browser/ui/ash/holding_space/BUILD.gn b/chrome/browser/ui/ash/holding_space/BUILD.gn
index b2e1342..3948a1e 100644
--- a/chrome/browser/ui/ash/holding_space/BUILD.gn
+++ b/chrome/browser/ui/ash/holding_space/BUILD.gn
@@ -19,6 +19,7 @@
     "//ash/public/cpp",
     "//base/test:test_support",
     "//chrome/browser",
+    "//chrome/browser/ash/crosapi",
     "//chrome/browser/chromeos",
     "//chrome/browser/chromeos:test_support",
     "//chrome/browser/extensions",
diff --git a/chrome/browser/ui/ash/shelf/app_service/app_service_app_window_shelf_controller.cc b/chrome/browser/ui/ash/shelf/app_service/app_service_app_window_shelf_controller.cc
index 05b977dd..096cd43b 100644
--- a/chrome/browser/ui/ash/shelf/app_service/app_service_app_window_shelf_controller.cc
+++ b/chrome/browser/ui/ash/shelf/app_service/app_service_app_window_shelf_controller.cc
@@ -420,7 +420,6 @@
   if (arc::GetWindowTaskId(window) != arc::kNoTaskId) {
     std::unique_ptr<ArcAppWindow> app_window_ptr =
         std::make_unique<ArcAppWindow>(
-            arc::GetWindowTaskId(window),
             arc::ArcAppShelfId::FromString(shelf_id.app_id),
             views::Widget::GetWidgetForNativeWindow(window), this,
             owner()->profile());
diff --git a/chrome/browser/ui/ash/shelf/arc_app_window.cc b/chrome/browser/ui/ash/shelf/arc_app_window.cc
index 22f19cf1..5051666 100644
--- a/chrome/browser/ui/ash/shelf/arc_app_window.cc
+++ b/chrome/browser/ui/ash/shelf/arc_app_window.cc
@@ -29,13 +29,11 @@
 constexpr int kArcAppWindowIconSize = extension_misc::EXTENSION_ICON_MEDIUM;
 }  // namespace
 
-ArcAppWindow::ArcAppWindow(int task_id,
-                           const arc::ArcAppShelfId& app_shelf_id,
+ArcAppWindow::ArcAppWindow(const arc::ArcAppShelfId& app_shelf_id,
                            views::Widget* widget,
                            ArcAppWindowDelegate* owner,
                            Profile* profile)
     : AppWindowBase(ash::ShelfID(app_shelf_id.app_id()), widget),
-      task_id_(task_id),
       app_shelf_id_(app_shelf_id),
       owner_(owner),
       profile_(profile) {
@@ -76,11 +74,12 @@
 }
 
 bool ArcAppWindow::IsActive() const {
-  return widget()->IsActive() && owner_->GetActiveTaskId() == task_id_;
+  return widget()->IsActive() &&
+         owner_->GetActiveTaskId() == arc::GetWindowTaskId(GetNativeWindow());
 }
 
 void ArcAppWindow::Close() {
-  arc::CloseTask(task_id_);
+  arc::CloseTask(arc::GetWindowTaskId(GetNativeWindow()));
 }
 
 void ArcAppWindow::OnAppImageUpdated(const std::string& app_id,
diff --git a/chrome/browser/ui/ash/shelf/arc_app_window.h b/chrome/browser/ui/ash/shelf/arc_app_window.h
index fde4f10..3c5017f 100644
--- a/chrome/browser/ui/ash/shelf/arc_app_window.h
+++ b/chrome/browser/ui/ash/shelf/arc_app_window.h
@@ -33,8 +33,7 @@
 class ArcAppWindow : public AppWindowBase,
                      public AppIconLoaderDelegate {
  public:
-  ArcAppWindow(int task_id,
-               const arc::ArcAppShelfId& app_shelf_id,
+  ArcAppWindow(const arc::ArcAppShelfId& app_shelf_id,
                views::Widget* widget,
                ArcAppWindowDelegate* owner,
                Profile* profile);
@@ -49,8 +48,6 @@
 
   FullScreenMode fullscreen_mode() const { return fullscreen_mode_; }
 
-  int task_id() const { return task_id_; }
-
   const arc::ArcAppShelfId& app_shelf_id() const { return app_shelf_id_; }
 
   // ui::BaseWindow:
@@ -68,8 +65,6 @@
   // Sets the icon for the window.
   void SetIcon(const gfx::ImageSkia& icon);
 
-  // Keeps associated ARC task id.
-  const int task_id_;
   // Keeps ARC shelf grouping id.
   const arc::ArcAppShelfId app_shelf_id_;
   // Keeps current full-screen mode.
diff --git a/chrome/browser/ui/browser_tabrestore_browsertest.cc b/chrome/browser/ui/browser_tabrestore_browsertest.cc
index ff843b7..a9e5f7c 100644
--- a/chrome/browser/ui/browser_tabrestore_browsertest.cc
+++ b/chrome/browser/ui/browser_tabrestore_browsertest.cc
@@ -13,6 +13,7 @@
 #include "chrome/browser/ui/tabs/tab_strip_model.h"
 #include "chrome/browser/ui/toolbar/recent_tabs_sub_menu_model.h"
 #include "chrome/test/base/in_process_browser_test.h"
+#include "chrome/test/base/interactive_test_utils.h"
 #include "chrome/test/base/ui_test_utils.h"
 #include "components/sessions/core/tab_restore_service.h"
 #include "content/public/browser/navigation_controller.h"
diff --git a/chrome/browser/ui/passwords/manage_passwords_test.cc b/chrome/browser/ui/passwords/manage_passwords_test.cc
index 9a9b3fb2..a4dc0881 100644
--- a/chrome/browser/ui/passwords/manage_passwords_test.cc
+++ b/chrome/browser/ui/passwords/manage_passwords_test.cc
@@ -21,6 +21,7 @@
 #include "chrome/browser/ui/passwords/manage_passwords_ui_controller.h"
 #include "chrome/browser/ui/tabs/tab_strip_model.h"
 #include "chrome/test/base/in_process_browser_test.h"
+#include "chrome/test/base/interactive_test_utils.h"
 #include "components/password_manager/core/browser/mock_password_form_manager_for_ui.h"
 #include "components/password_manager/core/browser/password_form.h"
 #include "components/password_manager/core/browser/password_form_manager.h"
diff --git a/chrome/browser/ui/startup/credential_provider_signin_dialog_win_browsertest.cc b/chrome/browser/ui/startup/credential_provider_signin_dialog_win_browsertest.cc
index cdf8262..c531a64c 100644
--- a/chrome/browser/ui/startup/credential_provider_signin_dialog_win_browsertest.cc
+++ b/chrome/browser/ui/startup/credential_provider_signin_dialog_win_browsertest.cc
@@ -13,6 +13,7 @@
 #include "chrome/browser/ui/startup/credential_provider_signin_dialog_win_test_data.h"
 #include "chrome/browser/ui/test/test_browser_dialog.h"
 #include "chrome/credential_provider/common/gcp_strings.h"
+#include "chrome/test/base/interactive_test_utils.h"
 #include "content/public/browser/web_contents.h"
 #include "content/public/test/browser_test.h"
 #include "content/public/test/browser_test_utils.h"
diff --git a/chrome/browser/ui/views/bookmarks/bookmark_bar_view_browsertest.cc b/chrome/browser/ui/views/bookmarks/bookmark_bar_view_browsertest.cc
index 0a36e47..fc3cf17 100644
--- a/chrome/browser/ui/views/bookmarks/bookmark_bar_view_browsertest.cc
+++ b/chrome/browser/ui/views/bookmarks/bookmark_bar_view_browsertest.cc
@@ -19,6 +19,7 @@
 #include "chrome/browser/ui/views/frame/browser_view.h"
 #include "chrome/common/url_constants.h"
 #include "chrome/test/base/in_process_browser_test.h"
+#include "chrome/test/base/interactive_test_utils.h"
 #include "chrome/test/base/ui_test_utils.h"
 #include "components/bookmarks/browser/bookmark_model.h"
 #include "components/bookmarks/common/bookmark_pref_names.h"
diff --git a/chrome/browser/ui/views/location_bar/permission_request_chip.cc b/chrome/browser/ui/views/location_bar/permission_request_chip.cc
index 8da0740..40c7e09 100644
--- a/chrome/browser/ui/views/location_bar/permission_request_chip.cc
+++ b/chrome/browser/ui/views/location_bar/permission_request_chip.cc
@@ -122,8 +122,11 @@
 }
 
 PermissionRequestChip::~PermissionRequestChip() {
-  if (prompt_bubble_)
-    prompt_bubble_->GetWidget()->Close();
+  if (prompt_bubble_) {
+    views::Widget* widget = prompt_bubble_->GetWidget();
+    widget->RemoveObserver(this);
+    widget->Close();
+  }
 }
 
 void PermissionRequestChip::OpenBubble() {
diff --git a/chrome/browser/ui/views/tooltip/tooltip_browsertest.cc b/chrome/browser/ui/views/tooltip/tooltip_browsertest.cc
index 21fd2ab..2f44d2c 100644
--- a/chrome/browser/ui/views/tooltip/tooltip_browsertest.cc
+++ b/chrome/browser/ui/views/tooltip/tooltip_browsertest.cc
@@ -194,8 +194,9 @@
   helper()->HideAndReset();
 }
 
+// Disabled http://crbug.com/1212403
 IN_PROC_BROWSER_TEST_F(TooltipBrowserTest,
-                       ShowTooltipFromWebContentWithKeyboard) {
+                       DISABLED_ShowTooltipFromWebContentWithKeyboard) {
   if (SkipTestForOldWinVersion())
     return;
 
@@ -212,7 +213,9 @@
   helper()->HideAndReset();
 }
 
-IN_PROC_BROWSER_TEST_F(TooltipBrowserTest, ShowTooltipFromIFrameWithKeyboard) {
+// Disabled http://crbug.com/1212403
+IN_PROC_BROWSER_TEST_F(TooltipBrowserTest,
+                       DISABLED_ShowTooltipFromIFrameWithKeyboard) {
   if (SkipTestForOldWinVersion())
     return;
 
@@ -254,7 +257,8 @@
   helper()->HideAndReset();
 }
 
-IN_PROC_BROWSER_TEST_F(TooltipBrowserTest, HideTooltipOnKeyPress) {
+// Disabled http://crbug.com/1212403
+IN_PROC_BROWSER_TEST_F(TooltipBrowserTest, DISABLED_HideTooltipOnKeyPress) {
   if (SkipTestForOldWinVersion())
     return;
 
diff --git a/chrome/browser/ui/views/webauthn/webauthn_icon_interactive_uitest.cc b/chrome/browser/ui/views/webauthn/webauthn_icon_interactive_uitest.cc
index b9ff61e5..a2932b4 100644
--- a/chrome/browser/ui/views/webauthn/webauthn_icon_interactive_uitest.cc
+++ b/chrome/browser/ui/views/webauthn/webauthn_icon_interactive_uitest.cc
@@ -14,6 +14,7 @@
 #include "chrome/browser/ui/views/toolbar/toolbar_view.h"
 #include "chrome/browser/ui/views/webauthn/webauthn_icon_view.h"
 #include "chrome/test/base/in_process_browser_test.h"
+#include "chrome/test/base/interactive_test_utils.h"
 #include "chrome/test/base/ui_test_utils.h"
 #include "components/network_session_configurator/common/network_switches.h"
 #include "content/public/browser/authenticator_environment.h"
diff --git a/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.cc b/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.cc
index d98bba9..39d2dd3b 100644
--- a/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.cc
+++ b/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.cc
@@ -120,8 +120,6 @@
               &CoreOobeHandler::HandleUpdateCurrentScreen);
   AddCallback("skipToLoginForTesting",
               &CoreOobeHandler::HandleSkipToLoginForTesting);
-  AddCallback("skipToUpdateForTesting",
-              &CoreOobeHandler::HandleSkipToUpdateForTesting);
   AddCallback("launchHelpApp", &CoreOobeHandler::HandleLaunchHelpApp);
   AddCallback("toggleResetScreen", &CoreOobeHandler::HandleToggleResetScreen);
   AddCallback("raiseTabKeyEvent", &CoreOobeHandler::HandleRaiseTabKeyEvent);
@@ -220,12 +218,6 @@
     WizardController::default_controller()->SkipToLoginForTesting();
 }
 
-void CoreOobeHandler::HandleSkipToUpdateForTesting() {
-  WizardController* controller = WizardController::default_controller();
-  if (controller && controller->is_initialized())
-    controller->SkipToUpdateForTesting();
-}
-
 void CoreOobeHandler::HandleToggleResetScreen() {
   base::OnceCallback<void(bool, absl::optional<tpm_firmware_update::Mode>)>
       callback =
diff --git a/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.h b/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.h
index 0c610f97..85587704 100644
--- a/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.h
+++ b/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.h
@@ -143,7 +143,6 @@
   void HandleInitialized();
   void HandleUpdateCurrentScreen(const std::string& screen);
   void HandleSkipToLoginForTesting();
-  void HandleSkipToUpdateForTesting();
   void HandleLaunchHelpApp(double help_topic_id);
   void HandleToggleResetScreen();
   void HandleGetPrimaryDisplayNameForTesting(const base::ListValue* args);
diff --git a/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc
index 824cb1f..8d0ea3b 100644
--- a/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc
+++ b/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc
@@ -11,7 +11,6 @@
 #include <utility>
 #include <vector>
 
-#include "ash/public/cpp/login_constants.h"
 #include "ash/public/mojom/tray_action.mojom.h"
 #include "base/bind.h"
 #include "base/i18n/number_formatting.h"
diff --git a/chrome/browser/ui/webui/download_shelf/download_shelf.mojom b/chrome/browser/ui/webui/download_shelf/download_shelf.mojom
index c43f1d6..e8b16062 100644
--- a/chrome/browser/ui/webui/download_shelf/download_shelf.mojom
+++ b/chrome/browser/ui/webui/download_shelf/download_shelf.mojom
@@ -207,6 +207,9 @@
   // supported in WebUI yet.
   ShowContextMenu(uint32 download_id, int32 client_x, int32 client_y,
       double timestamp);
+
+  // Open a download item by clicking on it.
+  OpenDownload(uint32 download_id);
 };
 
 // WebUI-side handler for requests from the browser.
@@ -215,6 +218,9 @@
   // created.
   OnNewDownload(DownloadItem download_item);
 
+  // Called when a download item is opened.
+  OnDownloadOpened(uint32 download_id);
+
   // Called when a download has been updated.
   OnDownloadUpdated(DownloadItem download_item);
 
diff --git a/chrome/browser/ui/webui/download_shelf/download_shelf_handler.h b/chrome/browser/ui/webui/download_shelf/download_shelf_handler.h
index a34d3e7..b6f2e7e9 100644
--- a/chrome/browser/ui/webui/download_shelf/download_shelf_handler.h
+++ b/chrome/browser/ui/webui/download_shelf/download_shelf_handler.h
@@ -27,6 +27,8 @@
   // Notify the WebUI to show a new download.
   virtual void DoShowDownload(DownloadUIModel* download_model) = 0;
 
+  virtual void OnDownloadOpened(uint32_t download_id) = 0;
+
   virtual void OnDownloadUpdated(DownloadUIModel* download_model) = 0;
 
   virtual void OnDownloadErased(uint32_t download_id) = 0;
diff --git a/chrome/browser/ui/webui/download_shelf/download_shelf_page_handler.cc b/chrome/browser/ui/webui/download_shelf/download_shelf_page_handler.cc
index c182d63..bd22567 100644
--- a/chrome/browser/ui/webui/download_shelf/download_shelf_page_handler.cc
+++ b/chrome/browser/ui/webui/download_shelf/download_shelf_page_handler.cc
@@ -64,10 +64,18 @@
           start_time));
 }
 
+void DownloadShelfPageHandler::OpenDownload(uint32_t download_id) {
+  download_shelf_ui_->OpenDownload(download_id);
+}
+
 void DownloadShelfPageHandler::DoShowDownload(DownloadUIModel* download_model) {
   page_->OnNewDownload(GetDownloadItemFromUIModel(download_model));
 }
 
+void DownloadShelfPageHandler::OnDownloadOpened(uint32_t download_id) {
+  page_->OnDownloadOpened(download_id);
+}
+
 void DownloadShelfPageHandler::OnDownloadUpdated(
     DownloadUIModel* download_model) {
   page_->OnDownloadUpdated(GetDownloadItemFromUIModel(download_model));
diff --git a/chrome/browser/ui/webui/download_shelf/download_shelf_page_handler.h b/chrome/browser/ui/webui/download_shelf/download_shelf_page_handler.h
index ebb17e1..8f0cf05d 100644
--- a/chrome/browser/ui/webui/download_shelf/download_shelf_page_handler.h
+++ b/chrome/browser/ui/webui/download_shelf/download_shelf_page_handler.h
@@ -35,9 +35,11 @@
                        int32_t client_x,
                        int32_t client_y,
                        double timestamp) override;
+  void OpenDownload(uint32_t download_id) override;
 
   // DownloadShelfHandler:
   void DoShowDownload(DownloadUIModel* download_model) override;
+  void OnDownloadOpened(uint32_t download_id) override;
   void OnDownloadUpdated(DownloadUIModel* download_model) override;
   void OnDownloadErased(uint32_t download_id) override;
 
diff --git a/chrome/browser/ui/webui/download_shelf/download_shelf_ui.cc b/chrome/browser/ui/webui/download_shelf/download_shelf_ui.cc
index c71efc30..5c0dae0 100644
--- a/chrome/browser/ui/webui/download_shelf/download_shelf_ui.cc
+++ b/chrome/browser/ui/webui/download_shelf/download_shelf_ui.cc
@@ -43,7 +43,9 @@
       content::WebUIDataSource::Create(chrome::kChromeUIDownloadShelfHost);
   static constexpr webui::LocalizedString kStrings[] = {
       {"close", IDS_ACCNAME_CLOSE},
-      {"discardButtonText", IDS_DISCARD_DOWNLOAD}};
+      {"discardButtonText", IDS_DISCARD_DOWNLOAD},
+      {"downloadStatusOpeningText", IDS_DOWNLOAD_STATUS_OPENING},
+  };
   source->AddLocalizedStrings(kStrings);
 
   webui::SetupWebUIDataSource(
@@ -87,8 +89,8 @@
     int32_t client_y,
     base::OnceClosure on_menu_will_show_callback) {
   DownloadUIModel* download_ui_model = FindDownloadById(download_id);
-  DCHECK(download_ui_model);
-
+  if (!download_ui_model)
+    return;
   if (embedder()) {
     embedder()->ShowDownloadContextMenu(download_ui_model,
                                         gfx::Point(client_x, client_y),
@@ -96,6 +98,17 @@
   }
 }
 
+void DownloadShelfUI::OpenDownload(uint32_t download_id) {
+  DownloadUIModel* download_ui_model = FindDownloadById(download_id);
+  // DownloadUIModel can be updated/removed from somewhere else, e.g extension
+  // API or chrome://downloads, checking if download_ui_model exists makes it
+  // safer for edges cases such as a download item is removed during a mojo
+  // IPC call.
+  if (!download_ui_model)
+    return;
+  download_ui_model->OpenDownload();
+}
+
 void DownloadShelfUI::DoShowDownload(
     DownloadUIModel::DownloadUIModelPtr download_model,
     base::TimeTicks show_download_start_time_ticks) {
@@ -133,9 +146,15 @@
   }
 }
 
+void DownloadShelfUI::OnDownloadOpened(DownloadItem* download) {
+  if (page_handler_)
+    page_handler_->OnDownloadOpened(download->GetId());
+}
+
 void DownloadShelfUI::OnDownloadUpdated(DownloadItem* download) {
   if (page_handler_) {
     DownloadUIModel* download_model = FindDownloadById(download->GetId());
+    DCHECK(download_model);
     page_handler_->OnDownloadUpdated(download_model);
   }
 
diff --git a/chrome/browser/ui/webui/download_shelf/download_shelf_ui.h b/chrome/browser/ui/webui/download_shelf/download_shelf_ui.h
index 9d27f81b..efb7017 100644
--- a/chrome/browser/ui/webui/download_shelf/download_shelf_ui.h
+++ b/chrome/browser/ui/webui/download_shelf/download_shelf_ui.h
@@ -49,6 +49,8 @@
   void DoShowDownload(DownloadUIModel::DownloadUIModelPtr download_model,
                       base::TimeTicks show_download_start_time_ticks);
 
+  void OpenDownload(uint32_t download_id);
+
   std::vector<DownloadUIModel*> GetDownloads();
   base::TimeTicks GetShowDownloadTime(uint32_t download_id);
 
@@ -68,6 +70,10 @@
       override;
 
   // DownloadItem::Observer
+  // The observer calls notify JS side when an download item is updated
+  // triggered download shelf or other places e.g. extension API or
+  // chrome://downloads.
+  void OnDownloadOpened(DownloadItem* download) override;
   void OnDownloadUpdated(DownloadItem* download) override;
   void OnDownloadRemoved(DownloadItem* download) override;
   void OnDownloadDestroyed(DownloadItem* download) override;
diff --git a/chrome/browser/ui/webui/download_shelf/download_shelf_ui_unittest.cc b/chrome/browser/ui/webui/download_shelf/download_shelf_ui_unittest.cc
index 658197a..3c8fbd2 100644
--- a/chrome/browser/ui/webui/download_shelf/download_shelf_ui_unittest.cc
+++ b/chrome/browser/ui/webui/download_shelf/download_shelf_ui_unittest.cc
@@ -31,6 +31,7 @@
                     int32_t client_y,
                     double timestamp));
   MOCK_METHOD1(DoShowDownload, void(DownloadUIModel*));
+  MOCK_METHOD1(OnDownloadOpened, void(uint32_t download_id));
   MOCK_METHOD1(OnDownloadUpdated, void(DownloadUIModel*));
   MOCK_METHOD1(OnDownloadErased, void(uint32_t download_id));
 };
diff --git a/chrome/browser/ui/webui/ntp_tiles_internals_ui.cc b/chrome/browser/ui/webui/ntp_tiles_internals_ui.cc
index 0df9dce9..d23b3545 100644
--- a/chrome/browser/ui/webui/ntp_tiles_internals_ui.cc
+++ b/chrome/browser/ui/webui/ntp_tiles_internals_ui.cc
@@ -92,7 +92,6 @@
       return false;
 #endif
     case ntp_tiles::TileSource::CUSTOM_LINKS:
-    case ntp_tiles::TileSource::REPEATABLE_QUERIES_SERVICE:
 #if defined(OS_ANDROID)
       return false;
 #else
diff --git a/chrome/browser/updater/browser_updater_client_mac.h b/chrome/browser/updater/browser_updater_client_mac.h
index 95e4b24f5..ffec5fc 100644
--- a/chrome/browser/updater/browser_updater_client_mac.h
+++ b/chrome/browser/updater/browser_updater_client_mac.h
@@ -13,7 +13,7 @@
 #import "chrome/updater/app/server/mac/service_protocol.h"
 #include "chrome/updater/update_service.h"
 
-@interface CRUUpdateClientOnDemandImpl : NSObject <CRUUpdateChecking>
+@interface CRUUpdateClientOnDemandImpl : NSObject <CRUUpdateServicing>
 @end
 
 class BrowserUpdaterClientMac : public BrowserUpdaterClient {
diff --git a/chrome/browser/updater/browser_updater_client_mac.mm b/chrome/browser/updater/browser_updater_client_mac.mm
index d2e50fb..a000bc86 100644
--- a/chrome/browser/updater/browser_updater_client_mac.mm
+++ b/chrome/browser/updater/browser_updater_client_mac.mm
@@ -19,6 +19,7 @@
 #include "base/strings/sys_string_conversions.h"
 #include "base/task/post_task.h"
 #import "chrome/updater/app/server/mac/update_service_wrappers.h"
+#import "chrome/updater/mac/xpc_service_names.h"
 #include "chrome/updater/update_service.h"
 
 @interface CRUUpdateClientOnDemandImpl () {
@@ -28,13 +29,6 @@
 
 namespace {
 
-NSString* const kLaunchdServiceName = @"org.chromium.ChromiumUpdater.service";
-
-NSString* GetMachServiceName() {
-  return [kLaunchdServiceName
-      stringByAppendingFormat:@".%lu", [kLaunchdServiceName hash]];
-}
-
 NSString* GetAppIdForUpdaterAsNSString() {
   return base::SysUTF8ToNSString(base::mac::BaseBundleID());
 }
@@ -46,11 +40,12 @@
 - (instancetype)init {
   if (self = [super init]) {
     _xpcConnection.reset([[NSXPCConnection alloc]
-        initWithMachServiceName:GetMachServiceName()
+        initWithMachServiceName:base::SysUTF8ToNSString(
+                                    updater::GetUpdateServiceLaunchdName())
                         options:0]);
 
     _xpcConnection.get().remoteObjectInterface =
-        updater::GetXPCUpdateCheckingInterface();
+        updater::GetXPCUpdateServicingInterface();
 
     _xpcConnection.get().interruptionHandler = ^{
       LOG(WARNING)
@@ -133,6 +128,14 @@
                         reply:reply];
 }
 
+// Runs periodic updater tasks like checking for uninstalls and background
+// update checks.
+- (void)runPeriodicTasksWithReply:(void (^_Nullable)(void))reply {
+  // This method does not need to be implemented in the RPC on-demand update
+  // call from the browser to the updater.
+  NOTIMPLEMENTED();
+}
+
 @end
 
 BrowserUpdaterClientMac::BrowserUpdaterClientMac()
diff --git a/chrome/browser/web_applications/externally_managed_app_manager_impl_unittest.cc b/chrome/browser/web_applications/externally_managed_app_manager_impl_unittest.cc
index 426f62e8..c0d16f2 100644
--- a/chrome/browser/web_applications/externally_managed_app_manager_impl_unittest.cc
+++ b/chrome/browser/web_applications/externally_managed_app_manager_impl_unittest.cc
@@ -44,22 +44,11 @@
 using InstallAppsResults = std::vector<std::pair<GURL, InstallResultCode>>;
 using UninstallAppsResults = std::vector<std::pair<GURL, bool>>;
 
-// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
-// function.
-GURL FooWebAppUrl() {
-  return GURL("https://foo.example");
-}
-GURL BarWebAppUrl() {
-  return GURL("https://bar.example");
-}
-GURL QuxWebAppUrl() {
-  return GURL("https://qux.example");
-}
-
-ExternalInstallOptions GetFooInstallOptions(
+ExternalInstallOptions GetInstallOptions(
+    GURL url,
     absl::optional<bool> override_previous_user_uninstall =
         absl::optional<bool>()) {
-  ExternalInstallOptions options(FooWebAppUrl(), DisplayMode::kBrowser,
+  ExternalInstallOptions options(std::move(url), DisplayMode::kBrowser,
                                  ExternalInstallSource::kExternalPolicy);
 
   if (override_previous_user_uninstall.has_value())
@@ -69,37 +58,26 @@
   return options;
 }
 
-ExternalInstallOptions GetBarInstallOptions() {
-  ExternalInstallOptions options(BarWebAppUrl(), DisplayMode::kStandalone,
-                                 ExternalInstallSource::kExternalPolicy);
-  return options;
-}
-
-ExternalInstallOptions GetQuxInstallOptions() {
-  ExternalInstallOptions options(QuxWebAppUrl(), DisplayMode::kStandalone,
-                                 ExternalInstallSource::kExternalPolicy);
-  return options;
-}
-
-std::unique_ptr<WebApplicationInfo> GetFooWebApplicationInfo() {
+std::unique_ptr<WebApplicationInfo> GetWebApplicationInfo(const GURL& url) {
   std::unique_ptr<WebApplicationInfo> info =
       std::make_unique<WebApplicationInfo>();
-  info->start_url = FooWebAppUrl();
-  info->scope = FooWebAppUrl().GetWithoutFilename();
+  info->start_url = url;
+  info->scope = url.GetWithoutFilename();
   info->title = u"Foo Web App";
   return info;
 }
 
-ExternalInstallOptions GetFooInstallOptionsWithWebAppInfo(
+ExternalInstallOptions GetInstallOptionsWithWebAppInfo(
+    const GURL& url,
     absl::optional<bool> override_previous_user_uninstall =
         absl::optional<bool>()) {
-  ExternalInstallOptions options(FooWebAppUrl(), DisplayMode::kBrowser,
+  ExternalInstallOptions options(url, DisplayMode::kBrowser,
                                  ExternalInstallSource::kExternalPolicy);
   options.only_use_app_info_factory = true;
   // Static to ensure re-use across multiple function calls for
   // ExternalInstallOptions equality checking.
   static WebApplicationInfoFactory app_info_factory =
-      base::BindRepeating(&GetFooWebApplicationInfo);
+      base::BindRepeating(&GetWebApplicationInfo, url);
   options.app_info_factory = app_info_factory;
 
   if (override_previous_user_uninstall.has_value())
@@ -570,137 +548,144 @@
 };
 
 TEST_F(ExternallyManagedAppManagerImplTest, Install_Succeeds) {
+  const GURL kFooWebAppUrl("https://foo.example");
   externally_managed_app_manager_impl()->SetNextInstallationTaskResult(
-      FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+      kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
   externally_managed_app_manager_impl()->SetNextInstallationLaunchURL(
-      FooWebAppUrl());
+      kFooWebAppUrl);
 
   absl::optional<GURL> url;
   absl::optional<InstallResultCode> code;
   std::tie(url, code) = InstallAndWait(externally_managed_app_manager_impl(),
-                                       GetFooInstallOptions());
+                                       GetInstallOptions(kFooWebAppUrl));
 
   EXPECT_EQ(InstallResultCode::kSuccessNewInstall, code.value());
-  EXPECT_EQ(FooWebAppUrl(), url.value());
+  EXPECT_EQ(kFooWebAppUrl, url.value());
 
   EXPECT_EQ(1u, install_run_count());
-  EXPECT_EQ(GetFooInstallOptions(), last_install_options());
+  EXPECT_EQ(GetInstallOptions(kFooWebAppUrl), last_install_options());
 
   WebAppRegistrationWaiter(externally_managed_app_manager_impl())
-      .AwaitNextRegistration(FooWebAppUrl(), RegistrationResultCode::kSuccess);
+      .AwaitNextRegistration(kFooWebAppUrl, RegistrationResultCode::kSuccess);
   EXPECT_EQ(1U, registration_run_count());
-  EXPECT_EQ(FooWebAppUrl(), last_registered_install_url());
+  EXPECT_EQ(kFooWebAppUrl, last_registered_install_url());
 }
 
 TEST_F(ExternallyManagedAppManagerImplTest, Install_SerialCallsDifferentApps) {
   // Load about:blanks twice in total, once for each install.
+  const GURL kFooWebAppUrl("https://foo.example");
+  const GURL kBarWebAppUrl("https://bar.example");
   externally_managed_app_manager_impl()->SetNextInstallationTaskResult(
-      FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+      kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
   externally_managed_app_manager_impl()->SetNextInstallationLaunchURL(
-      FooWebAppUrl());
+      kFooWebAppUrl);
   {
     absl::optional<GURL> url;
     absl::optional<InstallResultCode> code;
     std::tie(url, code) = InstallAndWait(externally_managed_app_manager_impl(),
-                                         GetFooInstallOptions());
+                                         GetInstallOptions(kFooWebAppUrl));
 
     EXPECT_EQ(InstallResultCode::kSuccessNewInstall, code.value());
-    EXPECT_EQ(FooWebAppUrl(), url.value());
+    EXPECT_EQ(kFooWebAppUrl, url.value());
 
     EXPECT_EQ(1u, install_run_count());
-    EXPECT_EQ(GetFooInstallOptions(), last_install_options());
+    EXPECT_EQ(GetInstallOptions(kFooWebAppUrl), last_install_options());
   }
 
   externally_managed_app_manager_impl()->WaitForRegistrationAndCancel();
   // Foo launch URL registration will be attempted again after
-  // BarWebAppUrl() installs.
+  // kBarWebAppUrl installs.
 
   externally_managed_app_manager_impl()->SetNextInstallationTaskResult(
-      BarWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+      kBarWebAppUrl, InstallResultCode::kSuccessNewInstall);
   externally_managed_app_manager_impl()->SetNextInstallationLaunchURL(
-      BarWebAppUrl());
+      kBarWebAppUrl);
   {
     absl::optional<GURL> url;
     absl::optional<InstallResultCode> code;
 
     std::tie(url, code) = InstallAndWait(externally_managed_app_manager_impl(),
-                                         GetBarInstallOptions());
+                                         GetInstallOptions(kBarWebAppUrl));
 
     EXPECT_EQ(InstallResultCode::kSuccessNewInstall, code.value());
-    EXPECT_EQ(BarWebAppUrl(), url.value());
+    EXPECT_EQ(kBarWebAppUrl, url.value());
 
     EXPECT_EQ(2u, install_run_count());
-    EXPECT_EQ(GetBarInstallOptions(), last_install_options());
+    EXPECT_EQ(GetInstallOptions(kBarWebAppUrl), last_install_options());
   }
 
   WebAppRegistrationWaiter(externally_managed_app_manager_impl())
-      .AwaitNextRegistration(FooWebAppUrl(), RegistrationResultCode::kSuccess);
+      .AwaitNextRegistration(kFooWebAppUrl, RegistrationResultCode::kSuccess);
   WebAppRegistrationWaiter(externally_managed_app_manager_impl())
-      .AwaitNextRegistration(BarWebAppUrl(), RegistrationResultCode::kSuccess);
+      .AwaitNextRegistration(kBarWebAppUrl, RegistrationResultCode::kSuccess);
   EXPECT_EQ(3U, registration_run_count());
-  EXPECT_EQ(BarWebAppUrl(), last_registered_install_url());
+  EXPECT_EQ(kBarWebAppUrl, last_registered_install_url());
 }
 
 TEST_F(ExternallyManagedAppManagerImplTest,
        Install_ConcurrentCallsDifferentApps) {
+  const GURL kFooWebAppUrl("https://foo.example");
+  const GURL kBarWebAppUrl("https://bar.example");
   externally_managed_app_manager_impl()->SetNextInstallationTaskResult(
-      BarWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+      kBarWebAppUrl, InstallResultCode::kSuccessNewInstall);
   externally_managed_app_manager_impl()->SetNextInstallationTaskResult(
-      FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+      kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
 
   base::RunLoop run_loop;
   externally_managed_app_manager_impl()->InstallNow(
-      GetFooInstallOptions(),
+      GetInstallOptions(kFooWebAppUrl),
       base::BindLambdaForTesting(
           [&](const GURL& url,
               ExternallyManagedAppManager::InstallResult result) {
             EXPECT_EQ(InstallResultCode::kSuccessNewInstall, result.code);
-            EXPECT_EQ(FooWebAppUrl(), url);
+            EXPECT_EQ(kFooWebAppUrl, url);
 
             // Two installations tasks should have run at this point,
             // one from the last call to install (which gets higher priority),
             // and another one for this call to install.
             EXPECT_EQ(2u, install_run_count());
-            EXPECT_EQ(GetFooInstallOptions(), last_install_options());
+            EXPECT_EQ(GetInstallOptions(kFooWebAppUrl), last_install_options());
 
             run_loop.Quit();
           }));
   externally_managed_app_manager_impl()->InstallNow(
-      GetBarInstallOptions(),
+      GetInstallOptions(kBarWebAppUrl),
       base::BindLambdaForTesting(
           [&](const GURL& url,
               ExternallyManagedAppManager::InstallResult result) {
             EXPECT_EQ(InstallResultCode::kSuccessNewInstall, result.code);
-            EXPECT_EQ(BarWebAppUrl(), url);
+            EXPECT_EQ(kBarWebAppUrl, url);
 
             // The last call gets higher priority so only one
             // installation task should have run at this point.
             EXPECT_EQ(1u, install_run_count());
-            EXPECT_EQ(GetBarInstallOptions(), last_install_options());
+            EXPECT_EQ(GetInstallOptions(kBarWebAppUrl), last_install_options());
           }));
   run_loop.Run();
 }
 
 TEST_F(ExternallyManagedAppManagerImplTest, Install_PendingSuccessfulTask) {
+  const GURL kFooWebAppUrl("https://foo.example");
+  const GURL kBarWebAppUrl("https://bar.example");
   externally_managed_app_manager_impl()->SetNextInstallationTaskResult(
-      FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+      kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
   externally_managed_app_manager_impl()->SetNextInstallationTaskResult(
-      BarWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+      kBarWebAppUrl, InstallResultCode::kSuccessNewInstall);
   install_task_manager().SaveInstallRequests();
 
   base::RunLoop foo_run_loop;
   base::RunLoop bar_run_loop;
 
   externally_managed_app_manager_impl()->InstallNow(
-      GetFooInstallOptions(),
+      GetInstallOptions(kFooWebAppUrl),
       base::BindLambdaForTesting(
           [&](const GURL& url,
               ExternallyManagedAppManager::InstallResult result) {
             EXPECT_EQ(InstallResultCode::kSuccessNewInstall, result.code);
-            EXPECT_EQ(FooWebAppUrl(), url);
+            EXPECT_EQ(kFooWebAppUrl, url);
 
             EXPECT_EQ(1u, install_run_count());
-            EXPECT_EQ(GetFooInstallOptions(), last_install_options());
+            EXPECT_EQ(GetInstallOptions(kFooWebAppUrl), last_install_options());
 
             foo_run_loop.Quit();
           }));
@@ -710,15 +695,15 @@
   ASSERT_EQ(install_task_manager().num_pending_tasks(), 1u);
 
   externally_managed_app_manager_impl()->InstallNow(
-      GetBarInstallOptions(),
+      GetInstallOptions(kBarWebAppUrl),
       base::BindLambdaForTesting(
           [&](const GURL& url,
               ExternallyManagedAppManager::InstallResult result) {
             EXPECT_EQ(InstallResultCode::kSuccessNewInstall, result.code);
-            EXPECT_EQ(BarWebAppUrl(), url);
+            EXPECT_EQ(kBarWebAppUrl, url);
 
             EXPECT_EQ(2u, install_run_count());
-            EXPECT_EQ(GetBarInstallOptions(), last_install_options());
+            EXPECT_EQ(GetInstallOptions(kBarWebAppUrl), last_install_options());
 
             bar_run_loop.Quit();
           }));
@@ -734,21 +719,22 @@
 }
 
 TEST_F(ExternallyManagedAppManagerImplTest, InstallWithWebAppInfo_Succeeds) {
+  const GURL kFooWebAppUrl("https://foo.example");
   externally_managed_app_manager_impl()->SetNextInstallationTaskResult(
-      FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+      kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
 
   base::RunLoop foo_run_loop;
 
   externally_managed_app_manager_impl()->InstallNow(
-      GetFooInstallOptionsWithWebAppInfo(),
+      GetInstallOptionsWithWebAppInfo(kFooWebAppUrl),
       base::BindLambdaForTesting(
           [&](const GURL& url,
               ExternallyManagedAppManager::InstallResult result) {
             EXPECT_EQ(InstallResultCode::kSuccessNewInstall, result.code);
-            EXPECT_EQ(FooWebAppUrl(), url);
+            EXPECT_EQ(kFooWebAppUrl, url);
 
             EXPECT_EQ(1u, install_run_count());
-            EXPECT_EQ(GetFooInstallOptionsWithWebAppInfo(),
+            EXPECT_EQ(GetInstallOptionsWithWebAppInfo(kFooWebAppUrl),
                       last_install_options());
 
             foo_run_loop.Quit();
@@ -759,45 +745,48 @@
 
 TEST_F(ExternallyManagedAppManagerImplTest,
        InstallAppsWithWebAppInfoAndUrl_Multiple) {
+  const GURL kFooWebAppUrl("https://foo.example");
+  const GURL kBarWebAppUrl("https://bar.example");
   externally_managed_app_manager_impl()->SetNextInstallationTaskResult(
-      FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+      kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
   externally_managed_app_manager_impl()->SetNextInstallationTaskResult(
-      BarWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+      kBarWebAppUrl, InstallResultCode::kSuccessNewInstall);
 
   std::vector<ExternalInstallOptions> apps_to_install;
-  apps_to_install.push_back(GetFooInstallOptionsWithWebAppInfo());
-  apps_to_install.push_back(GetBarInstallOptions());
+  apps_to_install.push_back(GetInstallOptionsWithWebAppInfo(kFooWebAppUrl));
+  apps_to_install.push_back(GetInstallOptions(kBarWebAppUrl));
 
   InstallAppsResults results = InstallAppsAndWait(
       externally_managed_app_manager_impl(), std::move(apps_to_install));
 
   EXPECT_EQ(results,
             InstallAppsResults(
-                {{FooWebAppUrl(), InstallResultCode::kSuccessNewInstall},
-                 {BarWebAppUrl(), InstallResultCode::kSuccessNewInstall}}));
+                {{kFooWebAppUrl, InstallResultCode::kSuccessNewInstall},
+                 {kBarWebAppUrl, InstallResultCode::kSuccessNewInstall}}));
 
   EXPECT_EQ(2u, install_run_count());
-  EXPECT_EQ(GetBarInstallOptions(), last_install_options());
+  EXPECT_EQ(GetInstallOptions(kBarWebAppUrl), last_install_options());
 }
 
 TEST_F(ExternallyManagedAppManagerImplTest,
        InstallWithWebAppInfo_Succeeds_Twice) {
+  const GURL kFooWebAppUrl("https://foo.example");
   externally_managed_app_manager_impl()->SetNextInstallationTaskResult(
-      FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+      kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
 
   base::RunLoop foo_run_loop;
   base::RunLoop bar_run_loop;
 
   externally_managed_app_manager_impl()->Install(
-      GetFooInstallOptionsWithWebAppInfo(),
+      GetInstallOptionsWithWebAppInfo(kFooWebAppUrl),
       base::BindLambdaForTesting(
           [&](const GURL& url,
               ExternallyManagedAppManager::InstallResult result) {
             EXPECT_EQ(InstallResultCode::kSuccessNewInstall, result.code);
-            EXPECT_EQ(FooWebAppUrl(), url);
+            EXPECT_EQ(kFooWebAppUrl, url);
 
             EXPECT_EQ(1u, install_run_count());
-            EXPECT_EQ(GetFooInstallOptionsWithWebAppInfo(),
+            EXPECT_EQ(GetInstallOptionsWithWebAppInfo(kFooWebAppUrl),
                       last_install_options());
             foo_run_loop.Quit();
           }));
@@ -805,15 +794,15 @@
   base::RunLoop().RunUntilIdle();
 
   externally_managed_app_manager_impl()->Install(
-      GetFooInstallOptionsWithWebAppInfo(),
+      GetInstallOptionsWithWebAppInfo(kFooWebAppUrl),
       base::BindLambdaForTesting(
           [&](const GURL& url,
               ExternallyManagedAppManager::InstallResult result) {
             EXPECT_EQ(InstallResultCode::kSuccessAlreadyInstalled, result.code);
-            EXPECT_EQ(FooWebAppUrl(), url);
+            EXPECT_EQ(kFooWebAppUrl, url);
 
             EXPECT_EQ(1u, install_run_count());
-            EXPECT_EQ(GetFooInstallOptionsWithWebAppInfo(),
+            EXPECT_EQ(GetInstallOptionsWithWebAppInfo(kFooWebAppUrl),
                       last_install_options());
 
             bar_run_loop.Quit();
@@ -824,22 +813,24 @@
 }
 
 TEST_F(ExternallyManagedAppManagerImplTest, Install_PendingFailingTask) {
+  const GURL kFooWebAppUrl("https://foo.example");
+  const GURL kBarWebAppUrl("https://bar.example");
   externally_managed_app_manager_impl()->SetNextInstallationTaskResult(
-      FooWebAppUrl(), InstallResultCode::kWebAppDisabled);
+      kFooWebAppUrl, InstallResultCode::kWebAppDisabled);
   externally_managed_app_manager_impl()->SetNextInstallationTaskResult(
-      BarWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+      kBarWebAppUrl, InstallResultCode::kSuccessNewInstall);
   install_task_manager().SaveInstallRequests();
 
   base::RunLoop foo_run_loop;
   base::RunLoop bar_run_loop;
 
   externally_managed_app_manager_impl()->InstallNow(
-      GetFooInstallOptions(),
+      GetInstallOptions(kFooWebAppUrl),
       base::BindLambdaForTesting(
           [&](const GURL& url,
               ExternallyManagedAppManager::InstallResult result) {
             EXPECT_EQ(InstallResultCode::kWebAppDisabled, result.code);
-            EXPECT_EQ(FooWebAppUrl(), url);
+            EXPECT_EQ(kFooWebAppUrl, url);
 
             EXPECT_EQ(1u, install_run_count());
 
@@ -850,15 +841,15 @@
   ASSERT_EQ(install_task_manager().num_pending_tasks(), 1u);
 
   externally_managed_app_manager_impl()->InstallNow(
-      GetBarInstallOptions(),
+      GetInstallOptions(kBarWebAppUrl),
       base::BindLambdaForTesting(
           [&](const GURL& url,
               ExternallyManagedAppManager::InstallResult result) {
             EXPECT_EQ(InstallResultCode::kSuccessNewInstall, result.code);
-            EXPECT_EQ(BarWebAppUrl(), url);
+            EXPECT_EQ(kBarWebAppUrl, url);
 
             EXPECT_EQ(2u, install_run_count());
-            EXPECT_EQ(GetBarInstallOptions(), last_install_options());
+            EXPECT_EQ(GetInstallOptions(kBarWebAppUrl), last_install_options());
 
             bar_run_loop.Quit();
           }));
@@ -874,63 +865,66 @@
 }
 
 TEST_F(ExternallyManagedAppManagerImplTest, Install_ReentrantCallback) {
+  const GURL kFooWebAppUrl("https://foo.example");
+  const GURL kBarWebAppUrl("https://bar.example");
   externally_managed_app_manager_impl()->SetNextInstallationTaskResult(
-      FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+      kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
   externally_managed_app_manager_impl()->SetNextInstallationTaskResult(
-      BarWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+      kBarWebAppUrl, InstallResultCode::kSuccessNewInstall);
 
   base::RunLoop run_loop;
   auto final_callback = base::BindLambdaForTesting(
       [&](const GURL& url, ExternallyManagedAppManager::InstallResult result) {
         EXPECT_EQ(InstallResultCode::kSuccessNewInstall, result.code);
-        EXPECT_EQ(BarWebAppUrl(), url);
+        EXPECT_EQ(kBarWebAppUrl, url);
 
         EXPECT_EQ(2u, install_run_count());
-        EXPECT_EQ(GetBarInstallOptions(), last_install_options());
+        EXPECT_EQ(GetInstallOptions(kBarWebAppUrl), last_install_options());
         run_loop.Quit();
       });
   auto reentrant_callback = base::BindLambdaForTesting(
       [&](const GURL& url, ExternallyManagedAppManager::InstallResult result) {
         EXPECT_EQ(InstallResultCode::kSuccessNewInstall, result.code);
-        EXPECT_EQ(FooWebAppUrl(), url);
+        EXPECT_EQ(kFooWebAppUrl, url);
 
         EXPECT_EQ(1u, install_run_count());
-        EXPECT_EQ(GetFooInstallOptions(), last_install_options());
+        EXPECT_EQ(GetInstallOptions(kFooWebAppUrl), last_install_options());
 
         externally_managed_app_manager_impl()->InstallNow(
-            GetBarInstallOptions(), final_callback);
+            GetInstallOptions(kBarWebAppUrl), final_callback);
       });
 
   // Call Install() with a callback that tries to install another app.
-  externally_managed_app_manager_impl()->InstallNow(GetFooInstallOptions(),
-                                                    reentrant_callback);
+  externally_managed_app_manager_impl()->InstallNow(
+      GetInstallOptions(kFooWebAppUrl), reentrant_callback);
   run_loop.Run();
 }
 
 TEST_F(ExternallyManagedAppManagerImplTest, Install_SerialCallsSameApp) {
+  const GURL kFooWebAppUrl("https://foo.example");
   externally_managed_app_manager_impl()->SetNextInstallationTaskResult(
-      FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+      kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
   {
     absl::optional<GURL> url;
     absl::optional<InstallResultCode> code;
     std::tie(url, code) = InstallAndWait(externally_managed_app_manager_impl(),
-                                         GetFooInstallOptions());
+                                         GetInstallOptions(kFooWebAppUrl));
 
     EXPECT_EQ(InstallResultCode::kSuccessNewInstall, code);
-    EXPECT_EQ(FooWebAppUrl(), url);
+    EXPECT_EQ(kFooWebAppUrl, url);
 
     EXPECT_EQ(1u, install_run_count());
-    EXPECT_EQ(GetFooInstallOptions(), last_install_options());
+    EXPECT_EQ(GetInstallOptions(kFooWebAppUrl), last_install_options());
   }
 
   {
     absl::optional<GURL> url;
     absl::optional<InstallResultCode> code;
     std::tie(url, code) = InstallAndWait(externally_managed_app_manager_impl(),
-                                         GetFooInstallOptions());
+                                         GetInstallOptions(kFooWebAppUrl));
 
     EXPECT_EQ(InstallResultCode::kSuccessAlreadyInstalled, code);
-    EXPECT_EQ(FooWebAppUrl(), url);
+    EXPECT_EQ(kFooWebAppUrl, url);
 
     // The app is already installed so we shouldn't try to install it again.
     EXPECT_EQ(1u, install_run_count());
@@ -938,21 +932,22 @@
 }
 
 TEST_F(ExternallyManagedAppManagerImplTest, Install_ConcurrentCallsSameApp) {
+  const GURL kFooWebAppUrl("https://foo.example");
   externally_managed_app_manager_impl()->SetNextInstallationTaskResult(
-      FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+      kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
 
   base::RunLoop run_loop;
   bool first_callback_ran = false;
 
   externally_managed_app_manager_impl()->InstallNow(
-      GetFooInstallOptions(),
+      GetInstallOptions(kFooWebAppUrl),
       base::BindLambdaForTesting(
           [&](const GURL& url,
               ExternallyManagedAppManager::InstallResult result) {
             // kSuccessAlreadyInstalled because the last call to Install gets
             // higher priority.
             EXPECT_EQ(InstallResultCode::kSuccessAlreadyInstalled, result.code);
-            EXPECT_EQ(FooWebAppUrl(), url);
+            EXPECT_EQ(kFooWebAppUrl, url);
 
             // Only one installation task should run because the app was already
             // installed.
@@ -964,29 +959,30 @@
           }));
 
   externally_managed_app_manager_impl()->InstallNow(
-      GetFooInstallOptions(),
+      GetInstallOptions(kFooWebAppUrl),
       base::BindLambdaForTesting(
           [&](const GURL& url,
               ExternallyManagedAppManager::InstallResult result) {
             EXPECT_EQ(InstallResultCode::kSuccessNewInstall, result.code);
-            EXPECT_EQ(FooWebAppUrl(), url);
+            EXPECT_EQ(kFooWebAppUrl, url);
 
             EXPECT_EQ(1u, install_run_count());
-            EXPECT_EQ(GetFooInstallOptions(), last_install_options());
+            EXPECT_EQ(GetInstallOptions(kFooWebAppUrl), last_install_options());
             first_callback_ran = true;
           }));
   run_loop.Run();
 
   EXPECT_EQ(1u, install_run_count());
-  EXPECT_EQ(GetFooInstallOptions(), last_install_options());
+  EXPECT_EQ(GetInstallOptions(kFooWebAppUrl), last_install_options());
 }
 
 TEST_F(ExternallyManagedAppManagerImplTest, Install_AlwaysUpdate) {
+  const GURL kFooWebAppUrl("https://foo.example");
   externally_managed_app_manager_impl()->SetNextInstallationTaskResult(
-      FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+      kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
 
-  auto get_force_reinstall_info = []() {
-    ExternalInstallOptions options(FooWebAppUrl(), DisplayMode::kStandalone,
+  auto get_force_reinstall_info = [kFooWebAppUrl]() {
+    ExternalInstallOptions options(kFooWebAppUrl, DisplayMode::kStandalone,
                                    ExternalInstallSource::kExternalPolicy);
     options.force_reinstall = true;
     return options;
@@ -999,14 +995,14 @@
                                          get_force_reinstall_info());
 
     EXPECT_EQ(InstallResultCode::kSuccessNewInstall, code);
-    EXPECT_EQ(FooWebAppUrl(), url);
+    EXPECT_EQ(kFooWebAppUrl, url);
 
     EXPECT_EQ(1u, install_run_count());
     EXPECT_EQ(get_force_reinstall_info(), last_install_options());
   }
 
   externally_managed_app_manager_impl()->SetNextInstallationTaskResult(
-      FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+      kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
   {
     absl::optional<GURL> url;
     absl::optional<InstallResultCode> code;
@@ -1014,7 +1010,7 @@
                                          get_force_reinstall_info());
 
     EXPECT_EQ(InstallResultCode::kSuccessNewInstall, code);
-    EXPECT_EQ(FooWebAppUrl(), url);
+    EXPECT_EQ(kFooWebAppUrl, url);
 
     // The app should be installed again because of the |force_reinstall| flag.
     EXPECT_EQ(2u, install_run_count());
@@ -1023,26 +1019,28 @@
 }
 
 TEST_F(ExternallyManagedAppManagerImplTest, Install_InstallationFails) {
+  const GURL kFooWebAppUrl("https://foo.example");
   externally_managed_app_manager_impl()->SetNextInstallationTaskResult(
-      FooWebAppUrl(), InstallResultCode::kWebAppDisabled);
+      kFooWebAppUrl, InstallResultCode::kWebAppDisabled);
 
   absl::optional<GURL> url;
   absl::optional<InstallResultCode> code;
   std::tie(url, code) = InstallAndWait(externally_managed_app_manager_impl(),
-                                       GetFooInstallOptions());
+                                       GetInstallOptions(kFooWebAppUrl));
 
   EXPECT_EQ(InstallResultCode::kWebAppDisabled, code);
-  EXPECT_EQ(FooWebAppUrl(), url);
+  EXPECT_EQ(kFooWebAppUrl, url);
 
   EXPECT_EQ(1u, install_run_count());
 }
 
 TEST_F(ExternallyManagedAppManagerImplTest, Install_PlaceholderApp) {
+  const GURL kFooWebAppUrl("https://foo.example");
   externally_managed_app_manager_impl()->SetNextInstallationTaskResult(
-      FooWebAppUrl(), InstallResultCode::kSuccessNewInstall,
+      kFooWebAppUrl, InstallResultCode::kSuccessNewInstall,
       /*did_install_placeholder=*/true);
 
-  auto install_options = GetFooInstallOptions();
+  auto install_options = GetInstallOptions(kFooWebAppUrl);
   install_options.install_placeholder = true;
 
   absl::optional<GURL> url;
@@ -1051,54 +1049,57 @@
       InstallAndWait(externally_managed_app_manager_impl(), install_options);
 
   EXPECT_EQ(InstallResultCode::kSuccessNewInstall, code);
-  EXPECT_EQ(FooWebAppUrl(), url);
+  EXPECT_EQ(kFooWebAppUrl, url);
 
   EXPECT_EQ(1u, install_run_count());
   EXPECT_EQ(install_options, last_install_options());
 }
 
 TEST_F(ExternallyManagedAppManagerImplTest, InstallApps_Succeeds) {
+  const GURL kFooWebAppUrl("https://foo.example");
   externally_managed_app_manager_impl()->SetNextInstallationTaskResult(
-      FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+      kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
 
   std::vector<ExternalInstallOptions> apps_to_install;
-  apps_to_install.push_back(GetFooInstallOptions());
+  apps_to_install.push_back(GetInstallOptions(kFooWebAppUrl));
 
   InstallAppsResults results = InstallAppsAndWait(
       externally_managed_app_manager_impl(), std::move(apps_to_install));
 
   EXPECT_EQ(results,
             InstallAppsResults(
-                {{FooWebAppUrl(), InstallResultCode::kSuccessNewInstall}}));
+                {{kFooWebAppUrl, InstallResultCode::kSuccessNewInstall}}));
 
   EXPECT_EQ(1u, install_run_count());
-  EXPECT_EQ(GetFooInstallOptions(), last_install_options());
+  EXPECT_EQ(GetInstallOptions(kFooWebAppUrl), last_install_options());
 }
 
 TEST_F(ExternallyManagedAppManagerImplTest,
        InstallApps_FailsInstallationFails) {
+  const GURL kFooWebAppUrl("https://foo.example");
   externally_managed_app_manager_impl()->SetNextInstallationTaskResult(
-      FooWebAppUrl(), InstallResultCode::kWebAppDisabled);
+      kFooWebAppUrl, InstallResultCode::kWebAppDisabled);
 
   std::vector<ExternalInstallOptions> apps_to_install;
-  apps_to_install.push_back(GetFooInstallOptions());
+  apps_to_install.push_back(GetInstallOptions(kFooWebAppUrl));
 
   InstallAppsResults results = InstallAppsAndWait(
       externally_managed_app_manager_impl(), std::move(apps_to_install));
 
   EXPECT_EQ(results,
             InstallAppsResults(
-                {{FooWebAppUrl(), InstallResultCode::kWebAppDisabled}}));
+                {{kFooWebAppUrl, InstallResultCode::kWebAppDisabled}}));
 
   EXPECT_EQ(1u, install_run_count());
 }
 
 TEST_F(ExternallyManagedAppManagerImplTest, InstallApps_PlaceholderApp) {
+  const GURL kFooWebAppUrl("https://foo.example");
   externally_managed_app_manager_impl()->SetNextInstallationTaskResult(
-      FooWebAppUrl(), InstallResultCode::kSuccessNewInstall,
+      kFooWebAppUrl, InstallResultCode::kSuccessNewInstall,
       /*did_install_placeholder=*/true);
 
-  auto install_options = GetFooInstallOptions();
+  auto install_options = GetInstallOptions(kFooWebAppUrl);
   install_options.install_placeholder = true;
   std::vector<ExternalInstallOptions> apps_to_install;
   apps_to_install.push_back(install_options);
@@ -1108,44 +1109,48 @@
 
   EXPECT_EQ(results,
             InstallAppsResults(
-                {{FooWebAppUrl(), InstallResultCode::kSuccessNewInstall}}));
+                {{kFooWebAppUrl, InstallResultCode::kSuccessNewInstall}}));
 
   EXPECT_EQ(1u, install_run_count());
   EXPECT_EQ(install_options, last_install_options());
 }
 
 TEST_F(ExternallyManagedAppManagerImplTest, InstallApps_Multiple) {
+  const GURL kFooWebAppUrl("https://foo.example");
+  const GURL kBarWebAppUrl("https://bar.example");
   externally_managed_app_manager_impl()->SetNextInstallationTaskResult(
-      FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+      kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
   externally_managed_app_manager_impl()->SetNextInstallationTaskResult(
-      BarWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+      kBarWebAppUrl, InstallResultCode::kSuccessNewInstall);
 
   std::vector<ExternalInstallOptions> apps_to_install;
-  apps_to_install.push_back(GetFooInstallOptions());
-  apps_to_install.push_back(GetBarInstallOptions());
+  apps_to_install.push_back(GetInstallOptions(kFooWebAppUrl));
+  apps_to_install.push_back(GetInstallOptions(kBarWebAppUrl));
 
   InstallAppsResults results = InstallAppsAndWait(
       externally_managed_app_manager_impl(), std::move(apps_to_install));
 
   EXPECT_EQ(results,
             InstallAppsResults(
-                {{FooWebAppUrl(), InstallResultCode::kSuccessNewInstall},
-                 {BarWebAppUrl(), InstallResultCode::kSuccessNewInstall}}));
+                {{kFooWebAppUrl, InstallResultCode::kSuccessNewInstall},
+                 {kBarWebAppUrl, InstallResultCode::kSuccessNewInstall}}));
 
   EXPECT_EQ(2u, install_run_count());
-  EXPECT_EQ(GetBarInstallOptions(), last_install_options());
+  EXPECT_EQ(GetInstallOptions(kBarWebAppUrl), last_install_options());
 }
 
 TEST_F(ExternallyManagedAppManagerImplTest, InstallApps_PendingInstallApps) {
+  const GURL kFooWebAppUrl("https://foo.example");
+  const GURL kBarWebAppUrl("https://bar.example");
   externally_managed_app_manager_impl()->SetNextInstallationTaskResult(
-      FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+      kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
   externally_managed_app_manager_impl()->SetNextInstallationTaskResult(
-      BarWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+      kBarWebAppUrl, InstallResultCode::kSuccessNewInstall);
 
   base::RunLoop run_loop;
   {
     std::vector<ExternalInstallOptions> apps_to_install;
-    apps_to_install.push_back(GetFooInstallOptions());
+    apps_to_install.push_back(GetInstallOptions(kFooWebAppUrl));
 
     externally_managed_app_manager_impl()->InstallApps(
         std::move(apps_to_install),
@@ -1153,16 +1158,17 @@
             [&](const GURL& url,
                 ExternallyManagedAppManager::InstallResult result) {
               EXPECT_EQ(InstallResultCode::kSuccessNewInstall, result.code);
-              EXPECT_EQ(FooWebAppUrl(), url);
+              EXPECT_EQ(kFooWebAppUrl, url);
 
               EXPECT_EQ(1u, install_run_count());
-              EXPECT_EQ(GetFooInstallOptions(), last_install_options());
+              EXPECT_EQ(GetInstallOptions(kFooWebAppUrl),
+                        last_install_options());
             }));
   }
 
   {
     std::vector<ExternalInstallOptions> apps_to_install;
-    apps_to_install.push_back(GetBarInstallOptions());
+    apps_to_install.push_back(GetInstallOptions(kBarWebAppUrl));
 
     externally_managed_app_manager_impl()->InstallApps(
         std::move(apps_to_install),
@@ -1170,10 +1176,11 @@
             [&](const GURL& url,
                 ExternallyManagedAppManager::InstallResult result) {
               EXPECT_EQ(InstallResultCode::kSuccessNewInstall, result.code);
-              EXPECT_EQ(BarWebAppUrl(), url);
+              EXPECT_EQ(kBarWebAppUrl, url);
 
               EXPECT_EQ(2u, install_run_count());
-              EXPECT_EQ(GetBarInstallOptions(), last_install_options());
+              EXPECT_EQ(GetInstallOptions(kBarWebAppUrl),
+                        last_install_options());
 
               run_loop.Quit();
             }));
@@ -1183,22 +1190,25 @@
 
 TEST_F(ExternallyManagedAppManagerImplTest,
        Install_PendingMultipleInstallApps) {
+  const GURL kFooWebAppUrl("https://foo.example");
+  const GURL kBarWebAppUrl("https://bar.example");
+  const GURL kQuxWebAppUrl("https://qux.example");
   externally_managed_app_manager_impl()->SetNextInstallationTaskResult(
-      FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+      kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
   externally_managed_app_manager_impl()->SetNextInstallationLaunchURL(
-      FooWebAppUrl());
+      kFooWebAppUrl);
   externally_managed_app_manager_impl()->SetNextInstallationTaskResult(
-      BarWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+      kBarWebAppUrl, InstallResultCode::kSuccessNewInstall);
   externally_managed_app_manager_impl()->SetNextInstallationLaunchURL(
-      BarWebAppUrl());
+      kBarWebAppUrl);
   externally_managed_app_manager_impl()->SetNextInstallationTaskResult(
-      QuxWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+      kQuxWebAppUrl, InstallResultCode::kSuccessNewInstall);
   externally_managed_app_manager_impl()->SetNextInstallationLaunchURL(
-      QuxWebAppUrl());
+      kQuxWebAppUrl);
 
   std::vector<ExternalInstallOptions> apps_to_install;
-  apps_to_install.push_back(GetFooInstallOptions());
-  apps_to_install.push_back(GetBarInstallOptions());
+  apps_to_install.push_back(GetInstallOptions(kFooWebAppUrl));
+  apps_to_install.push_back(GetInstallOptions(kBarWebAppUrl));
 
   // Queue through InstallApps.
   int callback_calls = 0;
@@ -1210,16 +1220,18 @@
             ++callback_calls;
             if (callback_calls == 1) {
               EXPECT_EQ(InstallResultCode::kSuccessNewInstall, result.code);
-              EXPECT_EQ(FooWebAppUrl(), url);
+              EXPECT_EQ(kFooWebAppUrl, url);
 
               EXPECT_EQ(2u, install_run_count());
-              EXPECT_EQ(GetFooInstallOptions(), last_install_options());
+              EXPECT_EQ(GetInstallOptions(kFooWebAppUrl),
+                        last_install_options());
             } else if (callback_calls == 2) {
               EXPECT_EQ(InstallResultCode::kSuccessNewInstall, result.code);
-              EXPECT_EQ(BarWebAppUrl(), url);
+              EXPECT_EQ(kBarWebAppUrl, url);
 
               EXPECT_EQ(3u, install_run_count());
-              EXPECT_EQ(GetBarInstallOptions(), last_install_options());
+              EXPECT_EQ(GetInstallOptions(kBarWebAppUrl),
+                        last_install_options());
             } else {
               NOTREACHED();
             }
@@ -1227,56 +1239,59 @@
 
   // Queue through Install.
   externally_managed_app_manager_impl()->InstallNow(
-      GetQuxInstallOptions(),
+      GetInstallOptions(kQuxWebAppUrl),
       base::BindLambdaForTesting(
           [&](const GURL& url,
               ExternallyManagedAppManager::InstallResult result) {
             EXPECT_EQ(InstallResultCode::kSuccessNewInstall, result.code);
-            EXPECT_EQ(QuxWebAppUrl(), url);
+            EXPECT_EQ(kQuxWebAppUrl, url);
 
             // The install request from Install should be processed first.
             EXPECT_EQ(1u, install_run_count());
-            EXPECT_EQ(GetQuxInstallOptions(), last_install_options());
+            EXPECT_EQ(GetInstallOptions(kQuxWebAppUrl), last_install_options());
           }));
 
   WebAppRegistrationWaiter(externally_managed_app_manager_impl())
-      .AwaitNextRegistration(QuxWebAppUrl(), RegistrationResultCode::kSuccess);
+      .AwaitNextRegistration(kQuxWebAppUrl, RegistrationResultCode::kSuccess);
   WebAppRegistrationWaiter(externally_managed_app_manager_impl())
-      .AwaitNextRegistration(FooWebAppUrl(), RegistrationResultCode::kSuccess);
+      .AwaitNextRegistration(kFooWebAppUrl, RegistrationResultCode::kSuccess);
   WebAppRegistrationWaiter(externally_managed_app_manager_impl())
-      .AwaitNextRegistration(BarWebAppUrl(), RegistrationResultCode::kSuccess);
+      .AwaitNextRegistration(kBarWebAppUrl, RegistrationResultCode::kSuccess);
   EXPECT_EQ(3U, registration_run_count());
-  EXPECT_EQ(BarWebAppUrl(), last_registered_install_url());
+  EXPECT_EQ(kBarWebAppUrl, last_registered_install_url());
 }
 
 TEST_F(ExternallyManagedAppManagerImplTest, InstallApps_PendingInstall) {
+  const GURL kFooWebAppUrl("https://foo.example");
+  const GURL kBarWebAppUrl("https://bar.example");
+  const GURL kQuxWebAppUrl("https://qux.example");
   externally_managed_app_manager_impl()->SetNextInstallationTaskResult(
-      FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+      kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
   externally_managed_app_manager_impl()->SetNextInstallationTaskResult(
-      BarWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+      kBarWebAppUrl, InstallResultCode::kSuccessNewInstall);
   externally_managed_app_manager_impl()->SetNextInstallationTaskResult(
-      QuxWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+      kQuxWebAppUrl, InstallResultCode::kSuccessNewInstall);
 
   base::RunLoop run_loop;
 
   // Queue through Install.
   externally_managed_app_manager_impl()->InstallNow(
-      GetQuxInstallOptions(),
+      GetInstallOptions(kQuxWebAppUrl),
       base::BindLambdaForTesting(
           [&](const GURL& url,
               ExternallyManagedAppManager::InstallResult result) {
             EXPECT_EQ(InstallResultCode::kSuccessNewInstall, result.code);
-            EXPECT_EQ(QuxWebAppUrl(), url);
+            EXPECT_EQ(kQuxWebAppUrl, url);
 
             // The install request from Install should be processed first.
             EXPECT_EQ(1u, install_run_count());
-            EXPECT_EQ(GetQuxInstallOptions(), last_install_options());
+            EXPECT_EQ(GetInstallOptions(kQuxWebAppUrl), last_install_options());
           }));
 
   // Queue through InstallApps.
   std::vector<ExternalInstallOptions> apps_to_install;
-  apps_to_install.push_back(GetFooInstallOptions());
-  apps_to_install.push_back(GetBarInstallOptions());
+  apps_to_install.push_back(GetInstallOptions(kFooWebAppUrl));
+  apps_to_install.push_back(GetInstallOptions(kBarWebAppUrl));
 
   int callback_calls = 0;
   externally_managed_app_manager_impl()->InstallApps(
@@ -1287,20 +1302,22 @@
             ++callback_calls;
             if (callback_calls == 1) {
               EXPECT_EQ(InstallResultCode::kSuccessNewInstall, result.code);
-              EXPECT_EQ(FooWebAppUrl(), url);
+              EXPECT_EQ(kFooWebAppUrl, url);
 
               // The install requests from InstallApps should be processed next.
               EXPECT_EQ(2u, install_run_count());
-              EXPECT_EQ(GetFooInstallOptions(), last_install_options());
+              EXPECT_EQ(GetInstallOptions(kFooWebAppUrl),
+                        last_install_options());
 
               return;
             }
             if (callback_calls == 2) {
               EXPECT_EQ(InstallResultCode::kSuccessNewInstall, result.code);
-              EXPECT_EQ(BarWebAppUrl(), url);
+              EXPECT_EQ(kBarWebAppUrl, url);
 
               EXPECT_EQ(3u, install_run_count());
-              EXPECT_EQ(GetBarInstallOptions(), last_install_options());
+              EXPECT_EQ(GetInstallOptions(kBarWebAppUrl),
+                        last_install_options());
 
               run_loop.Quit();
               return;
@@ -1311,30 +1328,31 @@
 }
 
 TEST_F(ExternallyManagedAppManagerImplTest, AppUninstalled) {
+  const GURL kFooWebAppUrl("https://foo.example");
   externally_managed_app_manager_impl()->SetNextInstallationTaskResult(
-      FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+      kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
   {
     absl::optional<GURL> url;
     absl::optional<InstallResultCode> code;
     std::tie(url, code) = InstallAndWait(externally_managed_app_manager_impl(),
-                                         GetFooInstallOptions());
+                                         GetInstallOptions(kFooWebAppUrl));
 
     EXPECT_EQ(1u, install_run_count());
     EXPECT_EQ(InstallResultCode::kSuccessNewInstall, code.value());
   }
 
   // Simulate the app getting uninstalled.
-  registrar()->RemoveExternalAppByInstallUrl(FooWebAppUrl());
+  registrar()->RemoveExternalAppByInstallUrl(kFooWebAppUrl);
 
   // Try to install the app again.
   {
     externally_managed_app_manager_impl()->SetNextInstallationTaskResult(
-        FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+        kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
 
     absl::optional<GURL> url;
     absl::optional<InstallResultCode> code;
     std::tie(url, code) = InstallAndWait(externally_managed_app_manager_impl(),
-                                         GetFooInstallOptions());
+                                         GetInstallOptions(kFooWebAppUrl));
 
     // The app was uninstalled so a new installation task should run.
     EXPECT_EQ(2u, install_run_count());
@@ -1343,20 +1361,21 @@
 }
 
 TEST_F(ExternallyManagedAppManagerImplTest, ExternalAppUninstalled) {
+  const GURL kFooWebAppUrl("https://foo.example");
   externally_managed_app_manager_impl()->SetNextInstallationTaskResult(
-      FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+      kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
   {
     absl::optional<GURL> url;
     absl::optional<InstallResultCode> code;
     std::tie(url, code) = InstallAndWait(externally_managed_app_manager_impl(),
-                                         GetFooInstallOptions());
+                                         GetInstallOptions(kFooWebAppUrl));
 
     EXPECT_EQ(1u, install_run_count());
     EXPECT_EQ(InstallResultCode::kSuccessNewInstall, code.value());
   }
 
   // Simulate external app for the app getting uninstalled by the user.
-  const std::string app_id = GenerateFakeAppId(FooWebAppUrl());
+  const std::string app_id = GenerateFakeAppId(kFooWebAppUrl);
   install_finalizer()->SimulateExternalAppUninstalledByUser(app_id);
   if (registrar()->IsInstalled(app_id))
     registrar()->RemoveExternalApp(app_id);
@@ -1369,7 +1388,8 @@
     absl::optional<InstallResultCode> code;
     std::tie(url, code) = InstallAndWait(
         externally_managed_app_manager_impl(),
-        GetFooInstallOptions(false /* override_previous_user_uninstall */));
+        GetInstallOptions(kFooWebAppUrl,
+                          false /* override_previous_user_uninstall */));
 
     // The app shouldn't be installed because the user previously uninstalled
     // it, so there shouldn't be any new installation task runs.
@@ -1379,13 +1399,14 @@
 
   {
     externally_managed_app_manager_impl()->SetNextInstallationTaskResult(
-        FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+        kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
 
     absl::optional<GURL> url;
     absl::optional<InstallResultCode> code;
     std::tie(url, code) = InstallAndWait(
         externally_managed_app_manager_impl(),
-        GetFooInstallOptions(true /* override_previous_user_uninstall */));
+        GetInstallOptions(kFooWebAppUrl,
+                          true /* override_previous_user_uninstall */));
 
     EXPECT_EQ(2u, install_run_count());
     EXPECT_EQ(InstallResultCode::kSuccessNewInstall, code.value());
@@ -1393,82 +1414,84 @@
 }
 
 TEST_F(ExternallyManagedAppManagerImplTest, UninstallApps_Succeeds) {
+  const GURL kFooWebAppUrl("https://foo.example");
   registrar()->AddExternalApp(
-      GenerateFakeAppId(FooWebAppUrl()),
-      {FooWebAppUrl(), ExternalInstallSource::kExternalPolicy});
+      GenerateFakeAppId(kFooWebAppUrl),
+      {kFooWebAppUrl, ExternalInstallSource::kExternalPolicy});
 
-  install_finalizer()->SetNextUninstallExternalWebAppResult(FooWebAppUrl(),
+  install_finalizer()->SetNextUninstallExternalWebAppResult(kFooWebAppUrl,
                                                             true);
-  UninstallAppsResults results =
-      UninstallAppsAndWait(externally_managed_app_manager_impl(),
-                           ExternalInstallSource::kExternalPolicy,
-                           std::vector<GURL>{FooWebAppUrl()});
+  UninstallAppsResults results = UninstallAppsAndWait(
+      externally_managed_app_manager_impl(),
+      ExternalInstallSource::kExternalPolicy, std::vector<GURL>{kFooWebAppUrl});
 
-  EXPECT_EQ(results, UninstallAppsResults({{FooWebAppUrl(), true}}));
+  EXPECT_EQ(results, UninstallAppsResults({{kFooWebAppUrl, true}}));
 
   EXPECT_EQ(1u, uninstall_call_count());
-  EXPECT_EQ(FooWebAppUrl(), last_uninstalled_app_url());
+  EXPECT_EQ(kFooWebAppUrl, last_uninstalled_app_url());
 }
 
 TEST_F(ExternallyManagedAppManagerImplTest, UninstallApps_Fails) {
-  install_finalizer()->SetNextUninstallExternalWebAppResult(FooWebAppUrl(),
+  const GURL kFooWebAppUrl("https://foo.example");
+  install_finalizer()->SetNextUninstallExternalWebAppResult(kFooWebAppUrl,
                                                             false);
-  UninstallAppsResults results =
-      UninstallAppsAndWait(externally_managed_app_manager_impl(),
-                           ExternalInstallSource::kExternalPolicy,
-                           std::vector<GURL>{FooWebAppUrl()});
-  EXPECT_EQ(results, UninstallAppsResults({{FooWebAppUrl(), false}}));
+  UninstallAppsResults results = UninstallAppsAndWait(
+      externally_managed_app_manager_impl(),
+      ExternalInstallSource::kExternalPolicy, std::vector<GURL>{kFooWebAppUrl});
+  EXPECT_EQ(results, UninstallAppsResults({{kFooWebAppUrl, false}}));
 
   EXPECT_EQ(1u, uninstall_call_count());
-  EXPECT_EQ(FooWebAppUrl(), last_uninstalled_app_url());
+  EXPECT_EQ(kFooWebAppUrl, last_uninstalled_app_url());
 }
 
 TEST_F(ExternallyManagedAppManagerImplTest, UninstallApps_Multiple) {
+  const GURL kFooWebAppUrl("https://foo.example");
+  const GURL kBarWebAppUrl("https://bar.example");
   registrar()->AddExternalApp(
-      GenerateFakeAppId(FooWebAppUrl()),
-      {FooWebAppUrl(), ExternalInstallSource::kExternalPolicy});
+      GenerateFakeAppId(kFooWebAppUrl),
+      {kFooWebAppUrl, ExternalInstallSource::kExternalPolicy});
   registrar()->AddExternalApp(
-      GenerateFakeAppId(BarWebAppUrl()),
-      {FooWebAppUrl(), ExternalInstallSource::kExternalPolicy});
+      GenerateFakeAppId(kBarWebAppUrl),
+      {kFooWebAppUrl, ExternalInstallSource::kExternalPolicy});
 
-  install_finalizer()->SetNextUninstallExternalWebAppResult(FooWebAppUrl(),
+  install_finalizer()->SetNextUninstallExternalWebAppResult(kFooWebAppUrl,
                                                             true);
-  install_finalizer()->SetNextUninstallExternalWebAppResult(BarWebAppUrl(),
+  install_finalizer()->SetNextUninstallExternalWebAppResult(kBarWebAppUrl,
                                                             true);
   UninstallAppsResults results =
       UninstallAppsAndWait(externally_managed_app_manager_impl(),
                            ExternalInstallSource::kExternalPolicy,
-                           std::vector<GURL>{FooWebAppUrl(), BarWebAppUrl()});
+                           std::vector<GURL>{kFooWebAppUrl, kBarWebAppUrl});
   EXPECT_EQ(results, UninstallAppsResults(
-                         {{FooWebAppUrl(), true}, {BarWebAppUrl(), true}}));
+                         {{kFooWebAppUrl, true}, {kBarWebAppUrl, true}}));
 
   EXPECT_EQ(2u, uninstall_call_count());
-  EXPECT_EQ(std::vector<GURL>({FooWebAppUrl(), BarWebAppUrl()}),
+  EXPECT_EQ(std::vector<GURL>({kFooWebAppUrl, kBarWebAppUrl}),
             uninstalled_app_urls());
 }
 
 TEST_F(ExternallyManagedAppManagerImplTest, UninstallApps_PendingInstall) {
+  const GURL kFooWebAppUrl("https://foo.example");
   externally_managed_app_manager_impl()->SetNextInstallationTaskResult(
-      FooWebAppUrl(), InstallResultCode::kSuccessNewInstall);
+      kFooWebAppUrl, InstallResultCode::kSuccessNewInstall);
 
   base::RunLoop run_loop;
   externally_managed_app_manager_impl()->InstallNow(
-      GetFooInstallOptions(),
+      GetInstallOptions(kFooWebAppUrl),
       base::BindLambdaForTesting(
           [&](const GURL& url,
               ExternallyManagedAppManager::InstallResult result) {
             EXPECT_EQ(InstallResultCode::kSuccessNewInstall, result.code);
-            EXPECT_EQ(FooWebAppUrl(), url);
+            EXPECT_EQ(kFooWebAppUrl, url);
             run_loop.Quit();
           }));
 
-  install_finalizer()->SetNextUninstallExternalWebAppResult(FooWebAppUrl(),
+  install_finalizer()->SetNextUninstallExternalWebAppResult(kFooWebAppUrl,
                                                             false);
-  UninstallAppsResults uninstall_results =
-      UninstallAppsAndWait(externally_managed_app_manager_impl(),
-                           ExternalInstallSource::kExternalPolicy,
-                           std::vector<GURL>{FooWebAppUrl()});
-  EXPECT_EQ(uninstall_results, UninstallAppsResults({{FooWebAppUrl(), false}}));
+  UninstallAppsResults uninstall_results = UninstallAppsAndWait(
+      externally_managed_app_manager_impl(),
+      ExternalInstallSource::kExternalPolicy, std::vector<GURL>{kFooWebAppUrl});
+  EXPECT_EQ(uninstall_results, UninstallAppsResults({{kFooWebAppUrl, false}}));
   EXPECT_EQ(1u, uninstall_call_count());
 
   run_loop.Run();
@@ -1476,12 +1499,13 @@
 
 TEST_F(ExternallyManagedAppManagerImplTest, ReinstallPlaceholderApp_Success) {
   // Install a placeholder app
-  auto install_options = GetFooInstallOptions();
+  const GURL kFooWebAppUrl("https://foo.example");
+  auto install_options = GetInstallOptions(kFooWebAppUrl);
   install_options.install_placeholder = true;
 
   {
     externally_managed_app_manager_impl()->SetNextInstallationTaskResult(
-        FooWebAppUrl(), InstallResultCode::kSuccessNewInstall,
+        kFooWebAppUrl, InstallResultCode::kSuccessNewInstall,
         /*did_install_placeholder=*/true);
     absl::optional<GURL> url;
     absl::optional<InstallResultCode> code;
@@ -1495,9 +1519,9 @@
   {
     install_options.reinstall_placeholder = true;
     externally_managed_app_manager_impl()->SetNextInstallationTaskResult(
-        FooWebAppUrl(), InstallResultCode::kSuccessNewInstall,
+        kFooWebAppUrl, InstallResultCode::kSuccessNewInstall,
         /*did_install_placeholder=*/false);
-    install_finalizer()->SetNextUninstallExternalWebAppResult(FooWebAppUrl(),
+    install_finalizer()->SetNextUninstallExternalWebAppResult(kFooWebAppUrl,
                                                               true);
 
     absl::optional<GURL> url;
@@ -1506,7 +1530,7 @@
         InstallAndWait(externally_managed_app_manager_impl(), install_options);
 
     EXPECT_EQ(InstallResultCode::kSuccessNewInstall, code.value());
-    EXPECT_EQ(FooWebAppUrl(), url.value());
+    EXPECT_EQ(kFooWebAppUrl, url.value());
 
     EXPECT_EQ(2u, install_run_count());
   }
@@ -1515,12 +1539,13 @@
 TEST_F(ExternallyManagedAppManagerImplTest,
        ReinstallPlaceholderApp_ReinstallNotPossible) {
   // Install a placeholder app
-  auto install_options = GetFooInstallOptions();
+  const GURL kFooWebAppUrl("https://foo.example");
+  auto install_options = GetInstallOptions(kFooWebAppUrl);
   install_options.install_placeholder = true;
 
   {
     externally_managed_app_manager_impl()->SetNextInstallationTaskResult(
-        FooWebAppUrl(), InstallResultCode::kSuccessNewInstall,
+        kFooWebAppUrl, InstallResultCode::kSuccessNewInstall,
         /*did_install_placeholder=*/true);
     absl::optional<GURL> url;
     absl::optional<InstallResultCode> code;
@@ -1534,7 +1559,7 @@
   {
     install_options.reinstall_placeholder = true;
     externally_managed_app_manager_impl()->SetNextInstallationTaskResult(
-        FooWebAppUrl(), InstallResultCode::kSuccessNewInstall,
+        kFooWebAppUrl, InstallResultCode::kSuccessNewInstall,
         /*did_install_placeholder=*/true);
 
     absl::optional<GURL> url;
@@ -1543,7 +1568,7 @@
         InstallAndWait(externally_managed_app_manager_impl(), install_options);
 
     EXPECT_EQ(InstallResultCode::kSuccessNewInstall, code.value());
-    EXPECT_EQ(FooWebAppUrl(), url.value());
+    EXPECT_EQ(kFooWebAppUrl, url.value());
 
     // Even though the placeholder app is already install, we make a call to
     // InstallFinalizer. InstallFinalizer ensures we don't unnecessarily
@@ -1555,12 +1580,13 @@
 TEST_F(ExternallyManagedAppManagerImplTest,
        ReinstallPlaceholderAppWhenUnused_NoOpenedWindows) {
   // Install a placeholder app
-  auto install_options = GetFooInstallOptions();
+  const GURL kFooWebAppUrl("https://foo.example");
+  auto install_options = GetInstallOptions(kFooWebAppUrl);
   install_options.install_placeholder = true;
 
   {
     externally_managed_app_manager_impl()->SetNextInstallationTaskResult(
-        FooWebAppUrl(), InstallResultCode::kSuccessNewInstall,
+        kFooWebAppUrl, InstallResultCode::kSuccessNewInstall,
         /*did_install_placeholder=*/true);
     absl::optional<GURL> url;
     absl::optional<InstallResultCode> code;
@@ -1575,9 +1601,9 @@
     install_options.reinstall_placeholder = true;
     install_options.wait_for_windows_closed = true;
     externally_managed_app_manager_impl()->SetNextInstallationTaskResult(
-        FooWebAppUrl(), InstallResultCode::kSuccessNewInstall,
+        kFooWebAppUrl, InstallResultCode::kSuccessNewInstall,
         /*did_install_placeholder=*/false);
-    ui_manager()->SetNumWindowsForApp(GenerateFakeAppId(FooWebAppUrl()), 0);
+    ui_manager()->SetNumWindowsForApp(GenerateFakeAppId(kFooWebAppUrl), 0);
 
     absl::optional<GURL> url;
     absl::optional<InstallResultCode> code;
@@ -1585,7 +1611,7 @@
         InstallAndWait(externally_managed_app_manager_impl(), install_options);
 
     EXPECT_EQ(InstallResultCode::kSuccessNewInstall, code.value());
-    EXPECT_EQ(FooWebAppUrl(), url.value());
+    EXPECT_EQ(kFooWebAppUrl, url.value());
 
     EXPECT_EQ(2u, install_run_count());
   }
@@ -1594,12 +1620,13 @@
 TEST_F(ExternallyManagedAppManagerImplTest,
        ReinstallPlaceholderAppWhenUnused_OneWindowOpened) {
   // Install a placeholder app
-  auto install_options = GetFooInstallOptions();
+  const GURL kFooWebAppUrl("https://foo.example");
+  auto install_options = GetInstallOptions(kFooWebAppUrl);
   install_options.install_placeholder = true;
 
   {
     externally_managed_app_manager_impl()->SetNextInstallationTaskResult(
-        FooWebAppUrl(), InstallResultCode::kSuccessNewInstall,
+        kFooWebAppUrl, InstallResultCode::kSuccessNewInstall,
         /*did_install_placeholder=*/true);
     absl::optional<GURL> url;
     absl::optional<InstallResultCode> code;
@@ -1614,10 +1641,10 @@
     install_options.reinstall_placeholder = true;
     install_options.wait_for_windows_closed = true;
     externally_managed_app_manager_impl()->SetNextInstallationTaskResult(
-        FooWebAppUrl(), InstallResultCode::kSuccessNewInstall,
+        kFooWebAppUrl, InstallResultCode::kSuccessNewInstall,
         /*did_install_placeholder=*/false);
-    ui_manager()->SetNumWindowsForApp(GenerateFakeAppId(FooWebAppUrl()), 1);
-    install_finalizer()->SetNextUninstallExternalWebAppResult(FooWebAppUrl(),
+    ui_manager()->SetNumWindowsForApp(GenerateFakeAppId(kFooWebAppUrl), 1);
+    install_finalizer()->SetNextUninstallExternalWebAppResult(kFooWebAppUrl,
                                                               true);
 
     absl::optional<GURL> url;
@@ -1626,7 +1653,7 @@
         InstallAndWait(externally_managed_app_manager_impl(), install_options);
 
     EXPECT_EQ(InstallResultCode::kSuccessNewInstall, code.value());
-    EXPECT_EQ(FooWebAppUrl(), url.value());
+    EXPECT_EQ(kFooWebAppUrl, url.value());
 
     EXPECT_EQ(2u, install_run_count());
   }
diff --git a/chrome/build/win32.pgo.txt b/chrome/build/win32.pgo.txt
index 77a8202..d9e5dafbb 100644
--- a/chrome/build/win32.pgo.txt
+++ b/chrome/build/win32.pgo.txt
@@ -1 +1 @@
-chrome-win32-master-1621922385-dd32e8188c3b529d437f2f7bd20820e5226d2395.profdata
+chrome-win32-master-1621932938-5594fc6d2c5390bfebb184c495cb8ecce1fcb43f.profdata
diff --git a/chrome/build/win64.pgo.txt b/chrome/build/win64.pgo.txt
index ff6f178..fd5e6e4 100644
--- a/chrome/build/win64.pgo.txt
+++ b/chrome/build/win64.pgo.txt
@@ -1 +1 @@
-chrome-win64-master-1621922385-39dc89fff95dacece333a5d20b7034ba88c7b853.profdata
+chrome-win64-master-1621943827-d00289ef5df5b49eaadb075bd66d072d47bc3039.profdata
diff --git a/chrome/services/file_util/public/cpp/zip_file_creator.cc b/chrome/services/file_util/public/cpp/zip_file_creator.cc
index 3db864bb..6bde361 100644
--- a/chrome/services/file_util/public/cpp/zip_file_creator.cc
+++ b/chrome/services/file_util/public/cpp/zip_file_creator.cc
@@ -31,18 +31,19 @@
 
 }  // namespace
 
-ZipFileCreator::ZipFileCreator(
-    ResultCallback callback,
-    const base::FilePath& src_dir,
-    const std::vector<base::FilePath>& src_relative_paths,
-    const base::FilePath& dest_file)
+ZipFileCreator::ZipFileCreator(ResultCallback callback,
+                               base::FilePath src_dir,
+                               std::vector<base::FilePath> src_relative_paths,
+                               base::FilePath dest_file)
     : callback_(std::move(callback)),
-      src_dir_(src_dir),
-      src_relative_paths_(src_relative_paths),
-      dest_file_(dest_file) {
+      src_dir_(std::move(src_dir)),
+      src_relative_paths_(std::move(src_relative_paths)),
+      dest_file_(std::move(dest_file)) {
   DCHECK(callback_);
 }
 
+ZipFileCreator::~ZipFileCreator() = default;
+
 void ZipFileCreator::Start(
     mojo::PendingRemote<chrome::mojom::FileUtilService> service) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
@@ -56,8 +57,6 @@
                      std::move(service)));
 }
 
-ZipFileCreator::~ZipFileCreator() = default;
-
 void ZipFileCreator::CreateZipFile(
     mojo::PendingRemote<chrome::mojom::FileUtilService> service,
     base::File file) {
@@ -89,7 +88,7 @@
   remote_zip_file_creator_.set_disconnect_handler(base::BindOnce(
       &ZipFileCreator::ReportDone, base::Unretained(this), false));
   remote_zip_file_creator_->CreateZipFile(
-      std::move(directory), src_dir_, src_relative_paths_, std::move(file),
+      std::move(directory), src_relative_paths_, std::move(file),
       base::BindOnce(&ZipFileCreator::ReportDone, base::Unretained(this)));
 }
 
diff --git a/chrome/services/file_util/public/cpp/zip_file_creator.h b/chrome/services/file_util/public/cpp/zip_file_creator.h
index f650275..48c7460 100644
--- a/chrome/services/file_util/public/cpp/zip_file_creator.h
+++ b/chrome/services/file_util/public/cpp/zip_file_creator.h
@@ -28,9 +28,9 @@
 
   // Creates a zip file from the specified list of files and directories.
   ZipFileCreator(ResultCallback callback,
-                 const base::FilePath& src_dir,
-                 const std::vector<base::FilePath>& src_relative_paths,
-                 const base::FilePath& dest_file);
+                 base::FilePath src_dir,
+                 std::vector<base::FilePath> src_relative_paths,
+                 base::FilePath dest_file);
 
   // Starts creating the zip file.
   //
diff --git a/chrome/services/file_util/public/cpp/zip_file_creator_browsertest.cc b/chrome/services/file_util/public/cpp/zip_file_creator_browsertest.cc
index b5397dba..754dbde 100644
--- a/chrome/services/file_util/public/cpp/zip_file_creator_browsertest.cc
+++ b/chrome/services/file_util/public/cpp/zip_file_creator_browsertest.cc
@@ -94,13 +94,9 @@
   bool success = false;
   base::RunLoop run_loop;
 
-  std::vector<base::FilePath> paths;
-  paths.push_back(kDir1);
-  paths.push_back(kFile1);
-  paths.push_back(kFile2);
   (new ZipFileCreator(
        base::BindOnce(&TestCallback, &success, run_loop.QuitClosure()),
-       zip_base_dir(), paths, zip_archive_path()))
+       zip_base_dir(), {kDir1, kFile2}, zip_archive_path()))
       ->Start(LaunchService());
 
   run_loop.Run();
@@ -147,14 +143,14 @@
   // root_dir/1
   // root_dir/1/1.txt -> Hello1/1
   // ...
-  // root_dir/1/7.txt -> Hello1/7
+  // root_dir/1/70.txt -> Hello1/70
   // root_dir/2
   // root_dir/2/1.txt -> Hello2/1
   // ...
-  // root_dir/2/7.txt -> Hello2/7
+  // root_dir/2/70.txt -> Hello2/70
   //...
   //...
-  // root_dir/10/7.txt -> Hello10/7
+  // root_dir/10/70.txt -> Hello10/70
 
   base::FilePath root_dir = zip_base_dir().Append("root_dir");
 
@@ -174,7 +170,7 @@
       base::FilePath dir(std::to_string(i));
       ASSERT_TRUE(base::CreateDirectory(root_dir.Append(dir)));
       file_tree_content[dir] = std::string();
-      for (int j = 1; j <= 7; j++) {
+      for (int j = 1; j <= 70; j++) {
         base::FilePath file = dir.Append(std::to_string(j) + ".txt");
         std::string content =
             "Hello" + std::to_string(i) + "/" + std::to_string(j);
@@ -187,15 +183,14 @@
   // Sanity check on the files created.
   constexpr size_t kEntryCount = 89 /* files under root dir */ +
                                  10 /* 1 to 10 dirs */ +
-                                 10 * 7 /* files under 1 to 10 dirs */;
+                                 10 * 70 /* files under 1 to 10 dirs */;
   DCHECK_EQ(kEntryCount, file_tree_content.size());
 
   bool success = false;
   base::RunLoop run_loop;
   (new ZipFileCreator(
        base::BindOnce(&TestCallback, &success, run_loop.QuitClosure()),
-       root_dir,
-       std::vector<base::FilePath>(),  // Empty means zip everything in dir.
+       root_dir, {},  // Empty means zip everything in root_dir.
        zip_archive_path()))
       ->Start(LaunchService());
 
diff --git a/chrome/services/file_util/public/mojom/zip_file_creator.mojom b/chrome/services/file_util/public/mojom/zip_file_creator.mojom
index 5b4511e..2d4baeb85 100644
--- a/chrome/services/file_util/public/mojom/zip_file_creator.mojom
+++ b/chrome/services/file_util/public/mojom/zip_file_creator.mojom
@@ -3,7 +3,7 @@
 // found in the LICENSE file.
 
 // Zip file creator provided by the utility process and exposed by mojo
-// policy control to the chrome browser process on OS_CHROMEOS.
+// policy control to the Chrome browser process on OS_CHROMEOS.
 
 module chrome.mojom;
 
@@ -11,10 +11,14 @@
 import "mojo/public/mojom/base/file.mojom";
 import "mojo/public/mojom/base/file_path.mojom";
 
+// Service that zips files and folders.
 interface ZipFileCreator {
-  // OS_CHROMEOS: Create a |zip_file| from a list of source files.
+  // Creates a ZIP file and adds all the files and directories specified in
+  // |source_relative_paths|.
+  // Folders are recursively explored.
+  // If |source_relative_paths| is empty, then the whole source directory is
+  // zipped.
   CreateZipFile(pending_remote<filesystem.mojom.Directory> source_dir_mojo,
-                mojo_base.mojom.FilePath source_dir,
                 array<mojo_base.mojom.FilePath> source_relative_paths,
                 mojo_base.mojom.File zip_file)
       => (bool success);
diff --git a/chrome/services/file_util/zip_file_creator.cc b/chrome/services/file_util/zip_file_creator.cc
index 489aa99..d841941b 100644
--- a/chrome/services/file_util/zip_file_creator.cc
+++ b/chrome/services/file_util/zip_file_creator.cc
@@ -135,7 +135,6 @@
 
 void ZipFileCreator::CreateZipFile(
     mojo::PendingRemote<filesystem::mojom::Directory> source_dir_remote,
-    const base::FilePath& source_dir,
     const std::vector<base::FilePath>& source_relative_paths,
     base::File zip_file,
     CreateZipFileCallback callback) {
@@ -152,7 +151,7 @@
 
   MojoFileAccessor file_accessor(std::move(source_dir_remote));
   const bool success = zip::Zip({
-      .src_dir = source_dir,
+      .file_accessor = &file_accessor,
       .dest_fd = zip_file.GetPlatformFile(),
       .src_files = source_relative_paths,
       .progress_callback =
@@ -161,7 +160,7 @@
             return true;
           }),
       .progress_period = base::TimeDelta::FromMilliseconds(500),
-      .file_accessor = &file_accessor,
+      .recursive = true,
   });
   std::move(callback).Run(success);
 }
diff --git a/chrome/services/file_util/zip_file_creator.h b/chrome/services/file_util/zip_file_creator.h
index 7d54dfc..380faa05 100644
--- a/chrome/services/file_util/zip_file_creator.h
+++ b/chrome/services/file_util/zip_file_creator.h
@@ -25,7 +25,6 @@
   // chrome::mojom::ZipFileCreator:
   void CreateZipFile(
       mojo::PendingRemote<filesystem::mojom::Directory> source_dir_remote,
-      const base::FilePath& source_dir,
       const std::vector<base::FilePath>& source_relative_paths,
       base::File zip_file,
       CreateZipFileCallback callback) override;
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index 4da7f89..2b450f4 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -29,13 +29,11 @@
 import("//components/offline_pages/buildflags/features.gni")
 import("//components/optimization_guide/features.gni")
 import("//components/os_crypt/features.gni")
-import("//components/safe_browsing/buildflags.gni")
 import("//components/signin/features.gni")
 import("//components/spellcheck/spellcheck_build_features.gni")
 import("//extensions/buildflags/buildflags.gni")
 import("//mojo/public/tools/bindings/mojom.gni")
 import("//net/features.gni")
-import("//pdf/features.gni")
 import("//ppapi/buildflags/buildflags.gni")
 import("//printing/buildflags/buildflags.gni")
 import("//rlz/buildflags/buildflags.gni")
@@ -903,7 +901,6 @@
       ":test_support_ui",
       "//base",
       "//base:i18n",
-      "//base/allocator:buildflags",
       "//base/test:test_support",
       "//base/util/memory_pressure:test_support",
       "//build:branding_buildflags",
@@ -911,253 +908,88 @@
       "//chrome:packed_resources",
       "//chrome:resources",
       "//chrome:strings",
-      "//chrome/app:command_ids",
-      "//chrome/app/vector_icons",
       "//chrome/browser",
-      "//chrome/browser:buildflags",
-      "//chrome/browser:cart_db_content_proto",
-      "//chrome/browser:theme_properties",
-      "//chrome/browser/apps/app_service:test_support",
-      "//chrome/browser/browsing_data:constants",
-      "//chrome/browser/devtools",
       "//chrome/browser/devtools:test_support",
-      "//chrome/browser/extensions:test_support",
       "//chrome/browser/image_decoder:browser_tests",
-      "//chrome/browser/media/router:media_router_feature",
-      "//chrome/browser/media/router:test_support",
       "//chrome/browser/metrics:test_support",
-      "//chrome/browser/notifications/scheduler:factory",
-      "//chrome/browser/notifications/scheduler/public",
       "//chrome/browser/notifications/scheduler/test:test_support",
       "//chrome/browser/payments:browser_tests",
-      "//chrome/browser/persisted_state_db",
       "//chrome/browser/privacy_budget:browser_tests",
       "//chrome/browser/profiling_host:profiling_browsertests",
-      "//chrome/browser/resource_coordinator:tab_manager_features",
-      "//chrome/browser/resource_coordinator:tab_metrics_event_proto",
-      "//chrome/browser/resources/pdf/ink:buildflags",
-      "//chrome/browser/safe_browsing:verdict_cache_manager_factory",
-      "//chrome/browser/sharing/proto",
       "//chrome/browser/web_applications:browser_tests",
-      "//chrome/browser/web_applications:web_applications_test_support",
-      "//chrome/browser/web_applications/extensions",
       "//chrome/browser/webaudio:browser_tests",
-      "//chrome/common/privacy_budget:test_support",
       "//chrome/renderer",
       "//chrome/services/removable_storage_writer:lib",
-      "//chrome/test/data:web_ui_test_bindings",
       "//chrome/test/data:webui_test_resources",
-      "//chrome/test/payments:test_support",
       "//components/android_autofill/browser",
-      "//components/android_autofill/browser:test_support",
       "//components/autofill/content/browser:risk_proto",
       "//components/autofill/content/common/mojom",
       "//components/autofill/content/renderer:test_support",
-      "//components/back_forward_cache",
-      "//components/background_fetch",
-      "//components/background_sync",
-      "//components/base32",
-      "//components/blocked_content",
-      "//components/bookmarks/browser",
-      "//components/bookmarks/common",
-      "//components/bookmarks/managed",
-      "//components/browser_sync",
-      "//components/browsing_data/content",
-      "//components/browsing_data/core",
-      "//components/captive_portal/content",
-      "//components/captive_portal/core",
-      "//components/captive_portal/core:buildflags",
       "//components/captive_portal/core:test_support",
-      "//components/cast_channel",
       "//components/cbor",
-      "//components/certificate_transparency",
-      "//components/constrained_window",
-      "//components/content_settings/browser",
-      "//components/content_settings/common:mojom",
-      "//components/cookie_config",
-      "//components/country_codes",
-      "//components/crash/content/browser/error_reporting:mock_crash_endpoint",
       "//components/data_reduction_proxy/core/browser:test_support",
-      "//components/data_use_measurement/core",
-      "//components/data_use_measurement/core:ascriber",
       "//components/dom_distiller/content/browser",
       "//components/dom_distiller/content/browser:test_support",
       "//components/dom_distiller/content/renderer",
       "//components/dom_distiller/core:test_support",
-      "//components/drive:test_support",
       "//components/embedder_support",
-      "//components/embedder_support:browser_util",
       "//components/enterprise",
       "//components/enterprise:test_support",
-      "//components/enterprise/common/proto:connectors_proto",
       "//components/error_page/content/browser",
-      "//components/favicon/content",
-      "//components/favicon/core",
-      "//components/feature_engagement/public",
       "//components/feature_engagement/test:test_support",
-      "//components/flags_ui",
-      "//components/heavy_ad_intervention",
-      "//components/history/content/browser",
-      "//components/history/core/common",
-      "//components/image_fetcher/core",
       "//components/infobars/content",
-      "//components/invalidation/impl",
-      "//components/invalidation/impl:test_support",
-      "//components/javascript_dialogs",
-      "//components/language/core/browser",
-      "//components/language/core/common",
-      "//components/live_caption:constants",
-      "//components/lookalikes/core",
-      "//components/lookalikes/core:features",
-      "//components/metrics:content",
-      "//components/metrics/demographics",
       "//components/metrics/demographics:test_support",
-      "//components/metrics_services_manager",
       "//components/nacl/common:buildflags",
-      "//components/navigation_metrics",
-      "//components/no_state_prefetch/browser",
-      "//components/no_state_prefetch/common",
-      "//components/no_state_prefetch/renderer",
       "//components/offline_items_collection/core/test_support",
-      "//components/optimization_guide/content/browser",
-      "//components/optimization_guide/content/mojom:mojo_interfaces",
-      "//components/optimization_guide/content/renderer",
-      "//components/optimization_guide/core",
       "//components/optimization_guide/core:test_support",
-      "//components/optimization_guide/proto:optimization_guide_proto",
-      "//components/page_load_metrics/browser",
       "//components/page_load_metrics/browser:test_support",
-      "//components/page_load_metrics/browser/observers/ad_metrics",
       "//components/page_load_metrics/browser/observers/ad_metrics:test_support",
-      "//components/page_load_metrics/common",
       "//components/page_load_metrics/common:test_support",
-      "//components/password_manager/content/browser",
-      "//components/password_manager/core/browser:proto",
-      "//components/password_manager/core/browser/form_parsing",
-      "//components/payments/content",
-      "//components/payments/content:utils",
-      "//components/pdf/browser",
-      "//components/performance_manager",
       "//components/policy:chrome_settings_proto_generated_compile",
-      "//components/policy/core/browser:test_support",
-      "//components/policy/test_support",
-      "//components/privacy_sandbox:privacy_sandbox_prefs",
-      "//components/proxy_config",
-      "//components/reading_list/core",
-      "//components/reading_list/features:flags",
-      "//components/renderer_context_menu",
-      "//components/reputation/core",
-      "//components/reputation/core:proto",
       "//components/resources",
       "//components/safe_browsing:buildflags",
-      "//components/safe_browsing/content/browser",
-      "//components/safe_browsing/content/browser:client_side_detection",
-      "//components/safe_browsing/content/common:interfaces",
-      "//components/safe_browsing/content/common:interfaces_shared_cpp_sources",
-      "//components/safe_browsing/content/password_protection",
       "//components/safe_browsing/content/password_protection:test_support",
-      "//components/safe_browsing/content/renderer",
-      "//components/safe_browsing/content/renderer/phishing_classifier",
-      "//components/safe_browsing/content/renderer/phishing_classifier:unit_tests_support",
-      "//components/safe_browsing/content/triggers:ad_redirect_trigger",
-      "//components/safe_browsing/content/web_ui",
-      "//components/safe_browsing/core:client_model_proto",
-      "//components/safe_browsing/core:features",
-      "//components/safe_browsing/core:public",
-      "//components/safe_browsing/core:verdict_cache_manager",
-      "//components/safe_browsing/core/db:metadata_proto",
       "//components/safe_browsing/core/db:test_database_manager",
-      "//components/safe_browsing/core/db:v4_database",
-      "//components/safe_browsing/core/db:v4_get_hash_protocol_manager",
-      "//components/safe_browsing/core/password_protection:password_protection_metrics_util",
-      "//components/search",
-      "//components/security_interstitials/content:proto",
-      "//components/security_interstitials/content:security_interstitial_page",
-      "//components/security_interstitials/core:unsafe_resource",
-      "//components/security_state/content",
       "//components/services/app_service/public/cpp:app_url_handling",
       "//components/services/app_service/public/cpp:protocol_handling",
       "//components/services/language_detection/public/cpp",
-      "//components/services/patch/content",
-      "//components/services/patch/public/cpp",
       "//components/services/patch/public/mojom",
       "//components/services/quarantine:test_support",
       "//components/signin/core/browser",
       "//components/signin/public/base:signin_buildflags",
       "//components/signin/public/identity_manager",
-      "//components/site_engagement/content",
-      "//components/site_isolation",
-      "//components/soda",
-      "//components/soda:constants",
       "//components/spellcheck:buildflags",
-      "//components/spellcheck/browser",
-      "//components/spellcheck/common",
-      "//components/spellcheck/common:interfaces",
-      "//components/spellcheck/common:spellcheck_result",
-      "//components/spellcheck/renderer",
-      "//components/ssl_errors",
       "//components/strings",
-      "//components/subresource_filter/core/browser",
-      "//components/subresource_filter/core/browser:test_support",
-      "//components/subresource_filter/core/common:test_support",
-      "//components/subresource_redirect/common",
-      "//components/subresource_redirect/proto",
       "//components/sync",
       "//components/sync:test_support_model",
-      "//components/sync/test/fake_server",
       "//components/sync_device_info:test_support",
-      "//components/tab_count_metrics",
-      "//components/tab_groups",
       "//components/translate/content/browser:test_support",
-      "//components/translate/content/renderer",
       "//components/translate/core/common",
-      "//components/translate/core/language_detection",
-      "//components/ukm/content",
-      "//components/unified_consent",
-      "//components/user_manager",
-      "//components/variations/service",
-      "//components/webapps/browser",
       "//components/webrtc",
-      "//components/webrtc_logging/browser",
       "//content/test:browsertest_support",
       "//content/test:test_support",
-      "//courgette:bsdiff",
-      "//courgette:courgette_lib",
       "//crypto:platform",
       "//crypto:test_support",
-      "//device/bluetooth:mocks",
       "//device/fido:cablev2_test_util",
       "//device/fido:test_support",
-      "//extensions/browser/updater",
       "//extensions/buildflags",
-      "//extensions/renderer",
       "//google_apis:test_support",
       "//media:media_buildflags",
       "//media:test_support",
       "//media/cast:test_support",
-      "//media/cdm:cdm_paths",
-      "//media/mojo/services",
-      "//mojo/core/embedder",
       "//mojo/public/cpp/system",
       "//net",
-      "//net:extras",
       "//net:test_support",
       "//pdf:features",
       "//ppapi/buildflags",
-      "//ppapi/shared_impl:test_support",
       "//printing/buildflags",
       "//rlz/buildflags",
       "//services/device/public/cpp:test_support",
       "//services/device/public/mojom",
-      "//services/image_annotation/public/cpp",
       "//services/network/public/cpp",
-      "//services/network/public/proto:sct_audit_report_proto",
-      "//services/preferences/public/cpp",
-      "//services/preferences/public/cpp/tracked",
       "//services/service_manager/public/cpp",
       "//services/strings",
       "//skia",
-      "//storage/browser:test_support",
       "//testing/gmock",
       "//testing/gtest",
       "//testing/perf",
@@ -1171,20 +1003,15 @@
       "//third_party/webrtc_overrides:webrtc_component",
       "//third_party/widevine/cdm:buildflags",
       "//third_party/widevine/cdm:headers",
-      "//third_party/zlib/google:zip",
       "//ui/accessibility:test_support",
       "//ui/base:test_support",
       "//ui/base/clipboard:clipboard_test_support",
       "//ui/base/dragdrop/mojom",
       "//ui/compositor:test_support",
-      "//ui/display:display_manager_test_api",
-      "//ui/display:test_support",
-      "//ui/display/manager",
       "//ui/native_theme:test_support",
       "//ui/resources",
       "//ui/shell_dialogs:test_support",
       "//ui/web_dialogs:test_support",
-      "//ui/webui",
       "//ui/webui:test_support",
       "//v8",
     ]
@@ -1769,7 +1596,6 @@
       "../browser/ui/native_window_tracker_browsertest.cc",
       "../browser/ui/omnibox/alternate_nav_infobar_delegate_browsertest.cc",
       "../browser/ui/passwords/manage_passwords_test.cc",
-      "../browser/ui/passwords/manage_passwords_test.h",
       "../browser/ui/passwords/password_generation_popup_view_browsertest.cc",
       "../browser/ui/passwords/password_generation_popup_view_tester.h",
       "../browser/ui/passwords/well_known_change_password_navigation_throttle_browsertest.cc",
@@ -1805,7 +1631,6 @@
       "../browser/ui/update_chrome_dialog_browsertest.cc",
       "../browser/ui/views/apps/app_info_dialog/app_info_dialog_views_browsertest.cc",
       "../browser/ui/views/bookmarks/bookmark_bar_view_browsertest.cc",
-      "../browser/ui/views/bookmarks/bookmark_bar_view_test_helper.h",
       "../browser/ui/views/content_setting_bubble_contents_browsertest.cc",
       "../browser/ui/views/content_test_utils.cc",
       "../browser/ui/views/content_test_utils.h",
@@ -1953,14 +1778,6 @@
     ]
     deps += [ "//services/audio/public/cpp:test_support" ]
 
-    if (enable_pdf) {
-      deps += [ "//pdf:internal" ]
-    }
-
-    if (safe_browsing_mode != 0) {
-      deps += [ "//components/safe_browsing/core:download_file_types_proto" ]
-    }
-
     if (is_mac) {
       sources += [
         "../browser/app_controller_mac_browsertest.mm",
@@ -1975,14 +1792,6 @@
         "../common/mac/mock_launchd.h",
         "../common/mac/mock_launchd.mm",
       ]
-
-      deps += [
-        "//chrome/app_shim",
-        "//chrome/browser/apps/app_shim",
-        "//components/onc",
-        "//components/remote_cocoa/app_shim",
-        "//ui/accelerated_widget_mac",
-      ]
     }
 
     if (is_linux || is_chromeos) {
@@ -2015,16 +1824,7 @@
       ]
       data_deps += [ "//chrome/browser/web_applications/chrome_pwa_launcher" ]
       data += [ "$root_out_dir/chrome_200_percent.pak" ]
-      deps += [
-        "//chrome/app:chrome_dll_resources",
-        "//chrome/browser/safe_browsing/chrome_cleaner",
-        "//chrome/browser/safe_browsing/chrome_cleaner:public",
-        "//chrome/browser/ui/startup:buildflags",
-        "//chrome/credential_provider/common:common_constants",
-        "//components/chrome_cleaner/public/constants",
-        "//components/onc",
-        "//sandbox/win:sandbox",
-      ]
+      deps += [ "//chrome/app:chrome_dll_resources" ]
     }
 
     if (enable_soda) {
@@ -2098,121 +1898,33 @@
 
       deps += [
         "//ash:test_support",
-        "//ash/app_list",
-        "//ash/app_list:test_support",
-        "//ash/app_list/model:app_list_model",
-        "//ash/components/audio",
-        "//ash/components/os_feedback_ui:os_feedback_ui",
-        "//ash/content/scanning",
-        "//ash/content/shimless_rma",
-        "//ash/content/shortcut_customization_ui",
         "//ash/keyboard/ui:test_support",
-        "//ash/public/cpp/external_arc",
         "//chrome/browser/ash/system_extensions:browser_tests",
-        "//chrome/browser/ash/wilco_dtc_supportd:mojo_utils",
         "//chrome/browser/chromeos:arc_test_support",
-        "//chrome/browser/chromeos:dlp_policy_event_proto",
-        "//chrome/browser/chromeos:key_permissions_proto",
         "//chrome/browser/chromeos:test_support",
-        "//chrome/browser/image_decoder",
         "//chrome/browser/media/router:test_support",
-        "//chrome/browser/nearby_sharing/common",
         "//chrome/browser/resources/chromeos/accessibility:browser_tests",
-        "//chrome/browser/ui:ash_test_support",
         "//chrome/browser/ui/ash/holding_space:browser_tests",
-        "//chrome/browser/ui/webui/chromeos/add_supervision:mojo_bindings",
-        "//chrome/browser/ui/webui/chromeos/crostini_upgrader:mojo_bindings",
-        "//chrome/browser/ui/webui/settings/chromeos/constants:mojom",
         "//chrome/services/file_util/public/cpp:browser_tests",
-        "//chrome/services/keymaster/public/mojom",
-        "//chrome/services/wilco_dtc_supportd/public/mojom",
         "//chromeos:test_support",
-        "//chromeos/assistant:buildflags",
-        "//chromeos/attestation",
-        "//chromeos/attestation:test_support",
-        "//chromeos/components/demo_mode_app_ui",
-        "//chromeos/components/diagnostics_ui",
-        "//chromeos/components/drivefs",
         "//chromeos/components/drivefs:test_support",
-        "//chromeos/components/drivefs/mojom",
-        "//chromeos/components/eche_app_ui",
-        "//chromeos/components/help_app_ui",
-        "//chromeos/components/media_app_ui",
         "//chromeos/components/media_app_ui:browser_test_support",
-        "//chromeos/components/print_management",
-        "//chromeos/components/sample_system_web_app_ui",
-        "//chromeos/components/smbfs",
-        "//chromeos/components/telemetry_extension_ui",
-        "//chromeos/components/web_applications/test:test_support",
-        "//chromeos/cryptohome",
         "//chromeos/dbus:test_support",
-        "//chromeos/dbus/attestation",
-        "//chromeos/dbus/attestation:attestation_proto",
-        "//chromeos/dbus/authpolicy",
-        "//chromeos/dbus/biod",
-        "//chromeos/dbus/cros_healthd",
-        "//chromeos/dbus/cryptohome",
-        "//chromeos/dbus/cryptohome:cryptohome_proto",
-        "//chromeos/dbus/power",
         "//chromeos/dbus/services:test_support",
         "//chromeos/dbus/session_manager",
-        "//chromeos/dbus/system_clock",
-        "//chromeos/dbus/system_proxy",
-        "//chromeos/dbus/system_proxy:system_proxy_proto",
-        "//chromeos/dbus/upstart",
-        "//chromeos/disks",
-        "//chromeos/disks:test_support",
-        "//chromeos/geolocation",
-        "//chromeos/login/auth",
-        "//chromeos/login/auth:challenge_response_key",
-        "//chromeos/login/auth:test_support",
-        "//chromeos/login/login_state:test_support",
-        "//chromeos/process_proxy",
-        "//chromeos/services/assistant:lib",
-        "//chromeos/services/assistant/public/cpp",
-        "//chromeos/services/assistant/public/proto",
         "//chromeos/services/machine_learning/public/cpp:stub",
-        "//chromeos/services/multidevice_setup/public/cpp:test_support",
-        "//chromeos/services/tts",
-        "//chromeos/system",
-        "//chromeos/timezone",
-        "//chromeos/ui/base",
-        "//chromeos/ui/frame",
         "//components/arc:arc_test_support",
-        "//components/arc/enterprise",
-        "//components/device_event_log",
-        "//components/drive",
         "//components/exo:test_support",
-        "//components/full_restore",
-        "//components/onc",
         "//components/prefs",
-        "//components/quirks",
-        "//components/reporting/client:test_support",
-        "//components/rlz",
-        "//components/services/app_service/public/cpp:icon_loader",
-        "//components/services/app_service/public/cpp:instance_update",
-        "//components/services/app_service/public/cpp:intents",
-        "//components/services/app_service/public/cpp:test_support",
-        "//components/session_manager/core",
-        "//components/upload_list",
         "//components/user_manager:test_support",
-        "//components/web_resource",
-        "//extensions/components/native_app_window",
         "//mojo/core/embedder",
-        "//services/audio/public/cpp",
         "//services/audio/public/cpp:test_support",
-        "//services/device/public/cpp/hid",
         "//services/network/public/mojom",
         "//services/preferences/public/cpp",
         "//services/preferences/public/mojom",
         "//services/service_manager/public/cpp",
         "//third_party/blink/public/common",
-        "//ui/base/idle",
-        "//ui/base/idle:test_support",
-        "//ui/base/ime/chromeos",
-        "//ui/chromeos",
         "//ui/events/devices:test_support",
-        "//ui/wm/public",
         "//url",
       ]
 
@@ -2252,12 +1964,6 @@
       sources += [
         "../browser/apps/app_service/web_apps_publisher_host_browsertest.cc",
       ]
-      deps += [
-        "//chromeos/crosapi/mojom",
-        "//chromeos/lacros",
-        "//chromeos/ui/base",
-        "//chromeos/ui/frame:test_support",
-      ]
     }
 
     if (!is_chromeos) {
@@ -2360,11 +2066,7 @@
         "nacl/pnacl_header_test.cc",
         "nacl/pnacl_header_test.h",
       ]
-      deps += [
-        "//components/nacl/browser",
-        "//components/nacl/renderer",
-        "//components/nacl/renderer/plugin:nacl_trusted_plugin",
-      ]
+      deps += [ "//components/nacl/renderer/plugin:nacl_trusted_plugin" ]
 
       data_deps += [
         "//chrome/test/data/nacl",
@@ -2961,7 +2663,6 @@
         "../browser/ash/child_accounts/parent_access_code/parent_access_test_utils.h",
         "../browser/ash/child_accounts/screen_time_controller_browsertest.cc",
         "../browser/ash/child_accounts/time_limit_test_utils.cc",
-        "../browser/ash/child_accounts/time_limit_test_utils.h",
         "../browser/ash/child_accounts/time_limits/app_time_browsertest.cc",
         "../browser/ash/child_accounts/time_limits/app_time_limits_allowlist_policy_test_utils.cc",
         "../browser/ash/child_accounts/time_limits/app_time_limits_allowlist_policy_test_utils.h",
@@ -3129,7 +2830,6 @@
         "../browser/ash/login/webview_login_browsertest.cc",
         "../browser/ash/login/wizard_controller_browsertest.cc",
         "../browser/ash/plugin_vm/plugin_vm_test_helper.cc",
-        "../browser/ash/plugin_vm/plugin_vm_test_helper.h",
         "../browser/ash/profiles/profile_helper_browsertest.cc",
         "../browser/ash/remote_apps/remote_apps_impl_browsertest.cc",
         "../browser/ash/remote_apps/remote_apps_manager_browsertest.cc",
@@ -3639,8 +3339,6 @@
       sources += [ "../browser/printing/print_backend_browsertest.cc" ]
       deps += [
         "//chrome/services/printing:lib",
-        "//components/printing/browser",
-        "//components/printing/common:mojo_interfaces",
         "//printing:test_support",
       ]
     }
diff --git a/chrome/test/data/webui/download_shelf/test_download_shelf_api_proxy.js b/chrome/test/data/webui/download_shelf/test_download_shelf_api_proxy.js
index e6d2140..2d77d73 100644
--- a/chrome/test/data/webui/download_shelf/test_download_shelf_api_proxy.js
+++ b/chrome/test/data/webui/download_shelf/test_download_shelf_api_proxy.js
@@ -12,6 +12,7 @@
       'doClose',
       'getDownloads',
       'getFileIcon',
+      'openDownload',
       'showContextMenu',
     ]);
 
@@ -49,6 +50,11 @@
   }
 
   /** @override */
+  openDownload(downloadId) {
+    this.methodCalled('openDownload', [downloadId]);
+  }
+
+  /** @override */
   getCallbackRouter() {
     return this.callbackRouter;
   }
diff --git a/chrome/test/data/webui/settings/privacy_sandbox_test.js b/chrome/test/data/webui/settings/privacy_sandbox_test.js
index b491239..d0046de5 100644
--- a/chrome/test/data/webui/settings/privacy_sandbox_test.js
+++ b/chrome/test/data/webui/settings/privacy_sandbox_test.js
@@ -240,12 +240,6 @@
         await testMetricsBrowserProxy.whenCalled('recordAction'));
     testMetricsBrowserProxy.resetResolver('recordAction');
 
-    page.$$('#resetFlocIdButton').click();
-    assertEquals(
-        'Settings.PrivacySandbox.ResetFloc',
-        await testMetricsBrowserProxy.whenCalled('recordAction'));
-    testMetricsBrowserProxy.resetResolver('recordAction');
-
     // Ensure that an action is only recorded in response to interaction with
     // the toggle, and not for the generated preference changing.
     page.set('prefs.generated.floc_enabled.value', false);
diff --git a/chrome/updater/BUILD.gn b/chrome/updater/BUILD.gn
index dc8ad07..6e093697 100644
--- a/chrome/updater/BUILD.gn
+++ b/chrome/updater/BUILD.gn
@@ -332,6 +332,13 @@
         "//chrome/updater/app/server/mac/service_protocol.mm",
         "//chrome/updater/app/server/mac/update_service_wrappers.h",
         "//chrome/updater/app/server/mac/update_service_wrappers.mm",
+        "//chrome/updater/mac/xpc_service_names.h",
+        "//chrome/updater/mac/xpc_service_names.mm",
+      ]
+
+      deps += [
+        ":updater_version_cc",
+        ":version_header",
       ]
     }
 
diff --git a/chromecast/base/metrics/grouped_histogram.cc b/chromecast/base/metrics/grouped_histogram.cc
index be28ebf..51cbbc7 100644
--- a/chromecast/base/metrics/grouped_histogram.cc
+++ b/chromecast/base/metrics/grouped_histogram.cc
@@ -8,10 +8,10 @@
 #include <stdint.h>
 
 #include "base/check_op.h"
+#include "base/cxx17_backports.h"
 #include "base/metrics/histogram.h"
 #include "base/metrics/statistics_recorder.h"
 #include "base/no_destructor.h"
-#include "base/stl_util.h"
 #include "base/strings/string_piece.h"
 #include "base/strings/stringprintf.h"
 #include "base/synchronization/lock.h"
diff --git a/chromecast/browser/cast_browser_main_parts.cc b/chromecast/browser/cast_browser_main_parts.cc
index 2efe7943..744b0366 100644
--- a/chromecast/browser/cast_browser_main_parts.cc
+++ b/chromecast/browser/cast_browser_main_parts.cc
@@ -13,13 +13,13 @@
 
 #include "base/bind.h"
 #include "base/command_line.h"
+#include "base/cxx17_backports.h"
 #include "base/files/file_util.h"
 #include "base/logging.h"
 #include "base/memory/ptr_util.h"
 #include "base/path_service.h"
 #include "base/run_loop.h"
 #include "base/single_thread_task_runner.h"
-#include "base/stl_util.h"
 #include "base/strings/string_split.h"
 #include "base/task/current_thread.h"
 #include "base/task/thread_pool.h"
diff --git a/chromecast/browser/cast_content_browser_client.cc b/chromecast/browser/cast_content_browser_client.cc
index ee0f827..90c4ef3 100644
--- a/chromecast/browser/cast_content_browser_client.cc
+++ b/chromecast/browser/cast_content_browser_client.cc
@@ -11,13 +11,13 @@
 #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/scoped_file.h"
 #include "base/i18n/rtl.h"
 #include "base/logging.h"
 #include "base/message_loop/message_pump_type.h"
 #include "base/path_service.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/threading/thread_task_runner_handle.h"
diff --git a/chromecast/browser/cast_extension_message_filter.cc b/chromecast/browser/cast_extension_message_filter.cc
index 1465716..52002b94 100644
--- a/chromecast/browser/cast_extension_message_filter.cc
+++ b/chromecast/browser/cast_extension_message_filter.cc
@@ -9,10 +9,10 @@
 #include "base/bind.h"
 #include "base/callback_helpers.h"
 #include "base/check_op.h"
+#include "base/cxx17_backports.h"
 #include "base/files/file_path.h"
 #include "base/memory/ptr_util.h"
 #include "base/notreached.h"
-#include "base/stl_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/task/thread_pool.h"
 #include "content/public/browser/browser_context.h"
diff --git a/chromecast/browser/cast_web_contents.h b/chromecast/browser/cast_web_contents.h
index d5304379..96d1774 100644
--- a/chromecast/browser/cast_web_contents.h
+++ b/chromecast/browser/cast_web_contents.h
@@ -27,6 +27,7 @@
 }  // namespace blink
 
 namespace content {
+class NavigationHandle;
 class WebContents;
 }  // namespace content
 
@@ -155,6 +156,11 @@
         service_manager::InterfaceProvider* frame_interfaces,
         blink::AssociatedInterfaceProvider* frame_associated_interfaces) {}
 
+    // Called when the navigation is ready to be committed in the WebContents'
+    // main frame.
+    virtual void MainFrameReadyToCommitNavigation(
+        content::NavigationHandle* navigation_handle) {}
+
     // A navigation has finished in the WebContents' main frame.
     virtual void MainFrameFinishedNavigation() {}
 
diff --git a/chromecast/browser/cast_web_contents_impl.cc b/chromecast/browser/cast_web_contents_impl.cc
index cde421f..795651e 100644
--- a/chromecast/browser/cast_web_contents_impl.cc
+++ b/chromecast/browser/cast_web_contents_impl.cc
@@ -643,14 +643,17 @@
   // Skip injecting bindings scripts if |navigation_handle| is not
   // 'current' main frame navigation, e.g. another DidStartNavigation is
   // emitted. Also skip injecting for same document navigation and error page.
-  if (navigation_handle != active_navigation_ ||
-      navigation_handle->IsErrorPage()) {
-    return;
+  if (navigation_handle == active_navigation_ &&
+      !navigation_handle->IsErrorPage()) {
+    // Injects registered bindings script into the main frame.
+    script_injector_.InjectScriptsForURL(
+        navigation_handle->GetURL(), navigation_handle->GetRenderFrameHost());
   }
 
-  // Injects registered bindings script into the main frame.
-  script_injector_.InjectScriptsForURL(navigation_handle->GetURL(),
-                                       navigation_handle->GetRenderFrameHost());
+  // Notifies observers that the navigation of the main frame is ready.
+  for (Observer& observer : observer_list_) {
+    observer.MainFrameReadyToCommitNavigation(navigation_handle);
+  }
 }
 
 void CastWebContentsImpl::DidFinishNavigation(
diff --git a/chromecast/media/audio/cast_audio_manager_alsa.cc b/chromecast/media/audio/cast_audio_manager_alsa.cc
index af696429..c513f31 100644
--- a/chromecast/media/audio/cast_audio_manager_alsa.cc
+++ b/chromecast/media/audio/cast_audio_manager_alsa.cc
@@ -6,9 +6,9 @@
 
 #include <utility>
 
+#include "base/cxx17_backports.h"
 #include "base/logging.h"
 #include "base/memory/free_deleter.h"
-#include "base/stl_util.h"
 #include "base/strings/string_piece.h"
 #include "chromecast/media/api/cma_backend_factory.h"
 #include "chromecast/media/audio/audio_buildflags.h"
diff --git a/chromecast/media/audio/cast_audio_output_stream_unittest.cc b/chromecast/media/audio/cast_audio_output_stream_unittest.cc
index c9b0f099..43095a2 100644
--- a/chromecast/media/audio/cast_audio_output_stream_unittest.cc
+++ b/chromecast/media/audio/cast_audio_output_stream_unittest.cc
@@ -10,10 +10,10 @@
 #include <utility>
 
 #include "base/bind.h"
+#include "base/cxx17_backports.h"
 #include "base/memory/ptr_util.h"
 #include "base/memory/ref_counted.h"
 #include "base/run_loop.h"
-#include "base/stl_util.h"
 #include "base/test/task_environment.h"
 #include "base/time/time.h"
 #include "chromecast/common/mojom/constants.mojom.h"
diff --git a/chromecast/media/cdm/playready_drm_delegate_android.cc b/chromecast/media/cdm/playready_drm_delegate_android.cc
index 88fb704f..260fdc1 100644
--- a/chromecast/media/cdm/playready_drm_delegate_android.cc
+++ b/chromecast/media/cdm/playready_drm_delegate_android.cc
@@ -4,8 +4,8 @@
 
 #include "chromecast/media/cdm/playready_drm_delegate_android.h"
 
+#include "base/cxx17_backports.h"
 #include "base/logging.h"
-#include "base/stl_util.h"
 #include "chromecast/media/cdm/chromecast_init_data.h"
 
 namespace chromecast {
diff --git a/chromecast/media/cma/backend/alsa/mixer_output_stream_alsa.cc b/chromecast/media/cma/backend/alsa/mixer_output_stream_alsa.cc
index 173aac2..dd2aceb 100644
--- a/chromecast/media/cma/backend/alsa/mixer_output_stream_alsa.cc
+++ b/chromecast/media/cma/backend/alsa/mixer_output_stream_alsa.cc
@@ -9,9 +9,9 @@
 #include <string>
 
 #include "base/command_line.h"
+#include "base/cxx17_backports.h"
 #include "base/logging.h"
 #include "base/notreached.h"
-#include "base/stl_util.h"
 #include "base/threading/platform_thread.h"
 #include "base/time/time.h"
 #include "chromecast/base/chromecast_switches.h"
diff --git a/chromecast/media/cma/backend/multizone_backend_unittest.cc b/chromecast/media/cma/backend/multizone_backend_unittest.cc
index 87b1ccf..f37ab3c 100644
--- a/chromecast/media/cma/backend/multizone_backend_unittest.cc
+++ b/chromecast/media/cma/backend/multizone_backend_unittest.cc
@@ -14,10 +14,10 @@
 #include "base/callback_helpers.h"
 #include "base/check.h"
 #include "base/command_line.h"
+#include "base/cxx17_backports.h"
 #include "base/logging.h"
 #include "base/memory/ref_counted.h"
 #include "base/run_loop.h"
-#include "base/stl_util.h"
 #include "base/test/task_environment.h"
 #include "base/threading/thread_checker.h"
 #include "base/threading/thread_task_runner_handle.h"
diff --git a/chromecast/media/cma/base/balanced_media_task_runner_unittest.cc b/chromecast/media/cma/base/balanced_media_task_runner_unittest.cc
index b212bd8..b320a59 100644
--- a/chromecast/media/cma/base/balanced_media_task_runner_unittest.cc
+++ b/chromecast/media/cma/base/balanced_media_task_runner_unittest.cc
@@ -9,11 +9,11 @@
 #include <vector>
 
 #include "base/bind.h"
+#include "base/cxx17_backports.h"
 #include "base/location.h"
 #include "base/memory/ref_counted.h"
 #include "base/run_loop.h"
 #include "base/single_thread_task_runner.h"
-#include "base/stl_util.h"
 #include "base/task/current_thread.h"
 #include "base/test/task_environment.h"
 #include "base/threading/thread.h"
diff --git a/chromecast/media/cma/base/buffering_frame_provider_unittest.cc b/chromecast/media/cma/base/buffering_frame_provider_unittest.cc
index 2f19792..26522a5 100644
--- a/chromecast/media/cma/base/buffering_frame_provider_unittest.cc
+++ b/chromecast/media/cma/base/buffering_frame_provider_unittest.cc
@@ -12,10 +12,10 @@
 #include <vector>
 
 #include "base/bind.h"
+#include "base/cxx17_backports.h"
 #include "base/memory/ref_counted.h"
 #include "base/run_loop.h"
 #include "base/single_thread_task_runner.h"
-#include "base/stl_util.h"
 #include "base/task/current_thread.h"
 #include "base/test/task_environment.h"
 #include "base/threading/thread.h"
diff --git a/chromecast/media/cma/base/decoder_buffer_adapter_unittest.cc b/chromecast/media/cma/base/decoder_buffer_adapter_unittest.cc
index 0d0e838..aa122aad 100644
--- a/chromecast/media/cma/base/decoder_buffer_adapter_unittest.cc
+++ b/chromecast/media/cma/base/decoder_buffer_adapter_unittest.cc
@@ -4,7 +4,7 @@
 
 #include "chromecast/media/cma/base/decoder_buffer_adapter.h"
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "chromecast/public/media/cast_decrypt_config.h"
 #include "media/base/decoder_buffer.h"
 #include "media/base/decrypt_config.h"
diff --git a/chromecast/media/cma/pipeline/audio_video_pipeline_impl_unittest.cc b/chromecast/media/cma/pipeline/audio_video_pipeline_impl_unittest.cc
index b6f2387b..413974b 100644
--- a/chromecast/media/cma/pipeline/audio_video_pipeline_impl_unittest.cc
+++ b/chromecast/media/cma/pipeline/audio_video_pipeline_impl_unittest.cc
@@ -7,8 +7,8 @@
 #include <vector>
 
 #include "base/bind.h"
+#include "base/cxx17_backports.h"
 #include "base/run_loop.h"
-#include "base/stl_util.h"
 #include "base/test/task_environment.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "chromecast/media/api/test/mock_cma_backend.h"
diff --git a/chromecast/media/cma/test/frame_generator_for_test.cc b/chromecast/media/cma/test/frame_generator_for_test.cc
index 59888c9..ee54674 100644
--- a/chromecast/media/cma/test/frame_generator_for_test.cc
+++ b/chromecast/media/cma/test/frame_generator_for_test.cc
@@ -7,7 +7,7 @@
 #include <stdint.h>
 #include <utility>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "chromecast/media/api/decoder_buffer_base.h"
 #include "chromecast/media/cma/base/decoder_buffer_adapter.h"
 #include "media/base/decoder_buffer.h"
diff --git a/chromecast/tracing/ftrace.cc b/chromecast/tracing/ftrace.cc
index 8b6a645..14c2a5e 100644
--- a/chromecast/tracing/ftrace.cc
+++ b/chromecast/tracing/ftrace.cc
@@ -8,9 +8,9 @@
 #include <sys/stat.h>
 #include <sys/types.h>
 
+#include "base/cxx17_backports.h"
 #include "base/files/file_util.h"
 #include "base/logging.h"
-#include "base/stl_util.h"
 #include "base/strings/string_piece.h"
 #include "base/strings/string_util.h"
 #include "base/trace_event/common/trace_event_common.h"
diff --git a/chromecast/tracing/system_tracing_common.cc b/chromecast/tracing/system_tracing_common.cc
index d2ba80f..b4d94b3f 100644
--- a/chromecast/tracing/system_tracing_common.cc
+++ b/chromecast/tracing/system_tracing_common.cc
@@ -6,7 +6,7 @@
 
 #include <string.h>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "base/trace_event/common/trace_event_common.h"
 
 namespace chromecast {
diff --git a/chromeos/BUILD.gn b/chromeos/BUILD.gn
index 3726d0a..0fc3aea 100644
--- a/chromeos/BUILD.gn
+++ b/chromeos/BUILD.gn
@@ -199,6 +199,7 @@
       "//chromeos/startup:unit_tests",
       "//chromeos/timezone:unit_tests",
       "//chromeos/tpm:unit_tests",
+      "//chromeos/utils:unit_tests",
       "//components/onc",
       "//components/policy:generated",
       "//components/policy/proto",
diff --git a/chromeos/components/camera_app_ui/resources/css/main.css b/chromeos/components/camera_app_ui/resources/css/main.css
index 51851e1..6dae9a0 100644
--- a/chromeos/components/camera_app_ui/resources/css/main.css
+++ b/chromeos/components/camera_app_ui/resources/css/main.css
@@ -10,7 +10,8 @@
   --blue-600-dark: rgb(var(--blue-600-rgb));
   --grey-100: rgb(241, 243, 244);
   --grey-200: rgb(232, 234, 237);
-  --grey-900: rgb(32, 33, 36);
+  --grey-900-rgb: 32, 33, 36;
+  --grey-900: rgb(var(--grey-900-rgb));
 
   --fast1-duration: 100ms;
   --fast2-duration: 200ms;
@@ -1047,19 +1048,20 @@
 
 #record-time {
   align-items: center;
-  background-color: rgba(0, 0, 0, 0.2);
-  border-radius: 4px;
+  backdrop-filter: blur(10px);
+  background-color: rgba(var(--grey-900-rgb), 0.6);
+  border-radius: 18px;
   display: flex;
+  font-size: 13px;  /* TODO(b/189087290): Follow the carbon spec. */
+  font-variant-numeric: tabular-nums;
   height: 32px;
   justify-content: flex-start;
-  padding: 0 12px;
+  line-height: 20px;
+  padding-inline-end: 10px;
+  padding-inline-start: 8px;
   pointer-events: none;
 }
 
-body.recording-ui-paused #record-time {
-  background-color: black;
-}
-
 #record-time[hidden],
 .menu-item[hidden] {
   display: none;  /* Required for flexbox hidden. */
@@ -1082,8 +1084,6 @@
 #record-time [i18n-text=record_video_paused_msg] {
   color: white;
   flex-shrink: 0;
-  font-family: var(--fixed-width-font-family);
-  font-size: 13px;
 }
 
 #record-time #record-time-msg {
diff --git a/chromeos/services/libassistant/public/mojom/conversation_controller.mojom b/chromeos/services/libassistant/public/mojom/conversation_controller.mojom
index 7e2b648..15365098 100644
--- a/chromeos/services/libassistant/public/mojom/conversation_controller.mojom
+++ b/chromeos/services/libassistant/public/mojom/conversation_controller.mojom
@@ -26,7 +26,7 @@
   // Starts a screen context interaction.
   // |screenshot| contains JPEG data.
   StartScreenContextInteraction(
-      ax.mojom.AssistantStructure assistant_structure,
+      ax.mojom.AssistantStructure? assistant_structure,
       array<uint8> screenshot);
 
   // Stops the ongoing interaction with a delay to give buffer time to
diff --git a/chromeos/utils/BUILD.gn b/chromeos/utils/BUILD.gn
new file mode 100644
index 0000000..3690c6c
--- /dev/null
+++ b/chromeos/utils/BUILD.gn
@@ -0,0 +1,32 @@
+# Copyright 2021 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+assert(is_chromeos, "Non-Chrome-OS builds must not depend on //chromeos")
+
+source_set("utils") {
+  deps = [
+    "//base",
+    "//skia",
+    "//ui/gfx",
+  ]
+
+  sources = [
+    "pdf_conversion.cc",
+    "pdf_conversion.h",
+  ]
+}
+
+source_set("unit_tests") {
+  testonly = true
+  deps = [
+    ":utils",
+    "//base",
+    "//skia",
+    "//testing/gtest",
+    "//ui/gfx",
+    "//ui/gfx:test_support",
+    "//ui/gfx/codec",
+  ]
+  sources = [ "pdf_conversion_unittest.cc" ]
+}
diff --git a/chromeos/utils/DEPS b/chromeos/utils/DEPS
new file mode 100644
index 0000000..87fc083b
--- /dev/null
+++ b/chromeos/utils/DEPS
@@ -0,0 +1,11 @@
+include_rules = [
+  "+base",
+  "+third_party/skia/include",
+  "+ui/gfx",
+]
+
+specific_include_rules = {
+  ".*test\.cc|mock.*\.*": [
+    "+testing",
+  ],
+}
diff --git a/chromeos/utils/OWNERS b/chromeos/utils/OWNERS
new file mode 100644
index 0000000..47db0fe
--- /dev/null
+++ b/chromeos/utils/OWNERS
@@ -0,0 +1 @@
+per-file pdf*=file://pdf/OWNERS
\ No newline at end of file
diff --git a/chromeos/utils/pdf_conversion.cc b/chromeos/utils/pdf_conversion.cc
new file mode 100644
index 0000000..46a5b734
--- /dev/null
+++ b/chromeos/utils/pdf_conversion.cc
@@ -0,0 +1,146 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chromeos/utils/pdf_conversion.h"
+
+#include "base/files/file_path.h"
+#include "base/logging.h"
+#include "third_party/skia/include/core/SkCanvas.h"
+#include "third_party/skia/include/core/SkData.h"
+#include "third_party/skia/include/core/SkImage.h"
+#include "third_party/skia/include/core/SkStream.h"
+#include "third_party/skia/include/core/SkTypes.h"
+#include "third_party/skia/include/docs/SkPDFDocument.h"
+#include "ui/gfx/image/buffer_w_stream.h"
+#include "ui/gfx/image/image.h"
+#include "ui/gfx/image/image_util.h"
+
+namespace chromeos {
+
+namespace {
+
+// The number of degrees to rotate a PDF image.
+constexpr int kRotationDegrees = 180;
+
+// Converts `png_img` to JPG.
+std::vector<uint8_t> PngToJpg(const uint8_t* data,
+                              size_t size,
+                              int jpg_quality) {
+  std::vector<uint8_t> jpg_img;
+  const gfx::Image img = gfx::Image::CreateFrom1xPNGBytes(
+      reinterpret_cast<const uint8_t*>(data), size);
+  if (!gfx::JPEG1xEncodedDataFromImage(img, jpg_quality, &jpg_img)) {
+    LOG(ERROR) << "Failed to convert image from PNG to JPG.";
+    return {};
+  }
+  return jpg_img;
+}
+
+// Creates a new page for the PDF document and adds `image_data` to the page.
+// `rotate` indicates whether the page should be rotated 180 degrees.
+// Returns whether the page was successfully created.
+bool AddPdfPage(sk_sp<SkDocument> pdf_doc,
+                const sk_sp<SkData>& image_data,
+                bool rotate) {
+  const sk_sp<SkImage> image = SkImage::MakeFromEncoded(image_data);
+  if (!image) {
+    LOG(ERROR) << "Unable to generate image from encoded image data.";
+    return false;
+  }
+
+  SkCanvas* page_canvas = pdf_doc->beginPage(image->width(), image->height());
+  if (!page_canvas) {
+    LOG(ERROR) << "Unable to access PDF page canvas.";
+    return false;
+  }
+
+  // Rotate pages that were flipped by an ADF scanner.
+  if (rotate) {
+    page_canvas->rotate(kRotationDegrees);
+    page_canvas->translate(-image->width(), -image->height());
+  }
+
+  page_canvas->drawImage(image, /*left=*/0, /*top=*/0);
+  pdf_doc->endPage();
+  return true;
+}
+
+}  // namespace
+
+bool ConvertPngImagesToPdf(const std::vector<std::string>& png_images,
+                           const base::FilePath& file_path,
+                           bool rotate_alternate_pages,
+                           int jpg_quality) {
+  DCHECK(!file_path.empty());
+
+  SkFILEWStream pdf_outfile(file_path.value().c_str());
+  if (!pdf_outfile.isValid()) {
+    LOG(ERROR) << "Unable to open output file.";
+    return false;
+  }
+
+  sk_sp<SkDocument> pdf_doc = SkPDF::MakeDocument(&pdf_outfile);
+  DCHECK(pdf_doc);
+
+  // Never rotate first page of PDF.
+  bool rotate_current_page = false;
+  for (const auto& png_image : png_images) {
+    SkDynamicMemoryWStream img_stream;
+    auto jpg_buffer =
+        PngToJpg(reinterpret_cast<const uint8_t*>(png_image.c_str()),
+                 png_image.size(), jpg_quality);
+    if (!img_stream.write(jpg_buffer.data(), jpg_buffer.size())) {
+      LOG(ERROR) << "Unable to write image to dynamic memory stream.";
+      return false;
+    }
+
+    const sk_sp<SkData> img_data = img_stream.detachAsData();
+    if (img_data->isEmpty()) {
+      LOG(ERROR) << "Stream data is empty.";
+      return false;
+    }
+
+    if (!AddPdfPage(pdf_doc, img_data, rotate_current_page)) {
+      LOG(ERROR) << "Unable to add new PDF page.";
+      return false;
+    }
+
+    if (rotate_alternate_pages) {
+      rotate_current_page = !rotate_current_page;
+    }
+  }
+
+  pdf_doc->close();
+  return true;
+}
+
+bool ConvertJpgImageToPdf(const std::vector<uint8_t>& jpg_image,
+                          std::vector<uint8_t>* output) {
+  gfx::BufferWStream output_stream;
+  sk_sp<SkDocument> pdf_doc = SkPDF::MakeDocument(&output_stream);
+  DCHECK(pdf_doc);
+
+  SkDynamicMemoryWStream img_stream;
+  if (!img_stream.write(jpg_image.data(), jpg_image.size())) {
+    LOG(ERROR) << "Unable to write image to dynamic memory stream.";
+    return false;
+  }
+
+  const sk_sp<SkData> img_data = img_stream.detachAsData();
+  if (img_data->isEmpty()) {
+    LOG(ERROR) << "Stream data is empty.";
+    return false;
+  }
+
+  if (!AddPdfPage(pdf_doc, img_data, false)) {
+    LOG(ERROR) << "Unable to add new PDF page.";
+    return false;
+  }
+
+  pdf_doc->close();
+  *output = output_stream.TakeBuffer();
+  return true;
+}
+
+}  // namespace chromeos
diff --git a/chromeos/utils/pdf_conversion.h b/chromeos/utils/pdf_conversion.h
new file mode 100644
index 0000000..5356b8a
--- /dev/null
+++ b/chromeos/utils/pdf_conversion.h
@@ -0,0 +1,32 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROMEOS_UTILS_PDF_CONVERSION_H_
+#define CHROMEOS_UTILS_PDF_CONVERSION_H_
+
+#include <string>
+#include <vector>
+
+namespace base {
+class FilePath;
+}  // namespace base
+
+namespace chromeos {
+
+// Converts `png_images` to a single PDF, and writes the PDF to `file_path`. If
+// `rotate_alternate_pages` is true, every other page is rotated 180 degrees.
+// The input image will be converted according to given |jpg_quality|.
+// Returns whether the PDF was successfully saved.
+bool ConvertPngImagesToPdf(const std::vector<std::string>& png_images,
+                           const base::FilePath& file_path,
+                           bool rotate_alternate_pages,
+                           int jpg_quality);
+
+// Converts `jpg_image` to a single PDF, and saved the result into `output`.
+bool ConvertJpgImageToPdf(const std::vector<uint8_t>& jpg_image,
+                          std::vector<uint8_t>* output);
+
+}  // namespace chromeos
+
+#endif  // CHROMEOS_UTILS_PDF_CONVERSION_H_
diff --git a/chromeos/utils/pdf_conversion_unittest.cc b/chromeos/utils/pdf_conversion_unittest.cc
new file mode 100644
index 0000000..df30dad8
--- /dev/null
+++ b/chromeos/utils/pdf_conversion_unittest.cc
@@ -0,0 +1,80 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chromeos/utils/pdf_conversion.h"
+
+#include <string>
+#include <vector>
+
+#include "base/files/file_util.h"
+#include "base/files/scoped_temp_dir.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "third_party/skia/include/core/SkBitmap.h"
+#include "ui/gfx/codec/png_codec.h"
+#include "ui/gfx/image/image.h"
+#include "ui/gfx/image/image_unittest_util.h"
+#include "ui/gfx/image/image_util.h"
+
+namespace chromeos {
+
+namespace {
+
+// Returns a manually generated PNG image.
+std::string CreatePng() {
+  SkBitmap bitmap;
+  bitmap.allocN32Pixels(100, 100);
+  bitmap.eraseARGB(255, 0, 255, 0);
+  std::vector<uint8_t> bytes;
+  gfx::PNGCodec::EncodeBGRASkBitmap(bitmap, false, &bytes);
+  return std::string(bytes.begin(), bytes.end());
+}
+
+// Returns a manually generated JPG image.
+std::vector<uint8_t> CreateJpg() {
+  gfx::Image original = gfx::test::CreateImage(100, 100);
+  std::vector<uint8_t> jpg_buffer;
+  if (!gfx::JPEG1xEncodedDataFromImage(original, 80, &jpg_buffer)) {
+    return {};
+  }
+  return jpg_buffer;
+}
+
+}  // namespace
+
+using ConvertToPdfTest = testing::Test;
+
+// Test that PNG image can be converted to pdf file successfully.
+TEST_F(ConvertToPdfTest, ToFile) {
+  std::vector<std::string> images;
+  images.push_back(CreatePng());
+
+  base::ScopedTempDir temp_dir;
+  ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
+  auto output_path = temp_dir.GetPath().Append("temp.pdf");
+
+  EXPECT_TRUE(ConvertPngImagesToPdf(images, output_path,
+                                    /*rotate_alternate_pages=*/false,
+                                    /*jpeg_quality=*/100));
+  EXPECT_TRUE(base::PathExists(output_path));
+
+  int64_t file_size;
+  EXPECT_TRUE(base::GetFileSize(output_path, &file_size));
+
+  // Smallest PDF should be at least 20 bytes.
+  EXPECT_GT(file_size, 20u);
+}
+
+// Test that JPG image can be converted to pdf and saved to vector successfully.
+TEST_F(ConvertToPdfTest, ToVector) {
+  std::vector<uint8_t> jpg_buffer = CreateJpg();
+  ASSERT_FALSE(jpg_buffer.empty());
+
+  std::vector<uint8_t> pdf_buffer;
+  EXPECT_TRUE(ConvertJpgImageToPdf(jpg_buffer, &pdf_buffer));
+
+  // Smallest PDF should be at least 20 bytes.
+  EXPECT_GT(pdf_buffer.size(), 20u);
+}
+
+}  // namespace chromeos
diff --git a/codelabs/cpp101/services/math/public/mojom/OWNERS b/codelabs/cpp101/services/math/public/mojom/OWNERS
index 61b5e28..08850f4 100644
--- a/codelabs/cpp101/services/math/public/mojom/OWNERS
+++ b/codelabs/cpp101/services/math/public/mojom/OWNERS
@@ -1,2 +1,2 @@
 per-file *.mojom=set noparent
-per-file *.mojom=file://ipc/SECURITY_OWNERS
\ No newline at end of file
+per-file *.mojom=file://ipc/SECURITY_OWNERS
diff --git a/components/arc/bluetooth/bluetooth_mojom_traits_unittest.cc b/components/arc/bluetooth/bluetooth_mojom_traits_unittest.cc
index fa371a2c..7c517224 100644
--- a/components/arc/bluetooth/bluetooth_mojom_traits_unittest.cc
+++ b/components/arc/bluetooth/bluetooth_mojom_traits_unittest.cc
@@ -7,7 +7,7 @@
 #include <string>
 #include <utility>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "device/bluetooth/public/cpp/bluetooth_uuid.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
diff --git a/components/arc/session/arc_session_impl.cc b/components/arc/session/arc_session_impl.cc
index ae47b52d..21e2086 100644
--- a/components/arc/session/arc_session_impl.cc
+++ b/components/arc/session/arc_session_impl.cc
@@ -17,12 +17,12 @@
 #include "base/bind.h"
 #include "base/command_line.h"
 #include "base/compiler_specific.h"
+#include "base/cxx17_backports.h"
 #include "base/files/file_util.h"
 #include "base/location.h"
 #include "base/posix/eintr_wrapper.h"
 #include "base/process/process_metrics.h"
 #include "base/rand_util.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/system/sys_info.h"
 #include "base/task/post_task.h"
diff --git a/components/autofill/content/renderer/form_autofill_util_browsertest.cc b/components/autofill/content/renderer/form_autofill_util_browsertest.cc
index 8e1ae78..2c2ec45 100644
--- a/components/autofill/content/renderer/form_autofill_util_browsertest.cc
+++ b/components/autofill/content/renderer/form_autofill_util_browsertest.cc
@@ -5,8 +5,8 @@
 #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/stl_util.h"
 #include "base/strings/strcat.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/utf_string_conversions.h"
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 58b653d..ecbcbf7 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/stl_util.h"
+#include "base/cxx17_backports.h"
 
 namespace autofill {
 
diff --git a/components/autofill/core/browser/autofill_data_util.cc b/components/autofill/core/browser/autofill_data_util.cc
index 572db92a..cfb055fe 100644
--- a/components/autofill/core/browser/autofill_data_util.cc
+++ b/components/autofill/core/browser/autofill_data_util.cc
@@ -8,8 +8,8 @@
 #include <iterator>
 #include <vector>
 
+#include "base/cxx17_backports.h"
 #include "base/i18n/char_iterator.h"
-#include "base/stl_util.h"
 #include "base/strings/string_piece.h"
 #include "base/strings/string_split.h"
 #include "base/strings/string_util.h"
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 4810bc62..5f373bc 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
@@ -8,7 +8,7 @@
 
 #include <string>
 
-#include "base/stl_util.h"
+#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"
diff --git a/components/autofill/core/browser/browser_autofill_manager_unittest.cc b/components/autofill/core/browser/browser_autofill_manager_unittest.cc
index 2a1adf94c..d8cfb880 100644
--- a/components/autofill/core/browser/browser_autofill_manager_unittest.cc
+++ b/components/autofill/core/browser/browser_autofill_manager_unittest.cc
@@ -15,11 +15,11 @@
 
 #include "base/base64.h"
 #include "base/command_line.h"
+#include "base/cxx17_backports.h"
 #include "base/feature_list.h"
 #include "base/memory/ref_counted.h"
 #include "base/metrics/field_trial.h"
 #include "base/metrics/metrics_hashes.h"
-#include "base/stl_util.h"
 #include "base/strings/strcat.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_util.h"
diff --git a/components/autofill/core/browser/data_model/autofill_profile.cc b/components/autofill/core/browser/data_model/autofill_profile.cc
index d387796e..b15114e 100644
--- a/components/autofill/core/browser/data_model/autofill_profile.cc
+++ b/components/autofill/core/browser/data_model/autofill_profile.cc
@@ -11,6 +11,7 @@
 #include <ostream>
 #include <set>
 
+#include "base/cxx17_backports.h"
 #include "base/guid.h"
 #include "base/hash/sha1.h"
 #include "base/i18n/case_conversion.h"
@@ -18,7 +19,6 @@
 #include "base/logging.h"
 #include "base/metrics/histogram_macros.h"
 #include "base/ranges/algorithm.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversion_utils.h"
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 52d8748f..eb81e8e 100644
--- a/components/autofill/core/browser/data_model/autofill_profile_unittest.cc
+++ b/components/autofill/core/browser/data_model/autofill_profile_unittest.cc
@@ -10,9 +10,9 @@
 #include <string>
 #include <vector>
 
+#include "base/cxx17_backports.h"
 #include "base/format_macros.h"
 #include "base/guid.h"
-#include "base/stl_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/scoped_feature_list.h"
 #include "components/autofill/core/browser/autofill_test_utils.h"
diff --git a/components/autofill/core/browser/form_parsing/phone_field.cc b/components/autofill/core/browser/form_parsing/phone_field.cc
index ce8f5b10..7f7d6079 100644
--- a/components/autofill/core/browser/form_parsing/phone_field.cc
+++ b/components/autofill/core/browser/form_parsing/phone_field.cc
@@ -11,8 +11,8 @@
 #include <utility>
 
 #include "base/check.h"
+#include "base/cxx17_backports.h"
 #include "base/notreached.h"
-#include "base/stl_util.h"
 #include "base/strings/strcat.h"
 #include "base/strings/string_util.h"
 #include "components/autofill/core/browser/autofill_field.h"
diff --git a/components/autofill/core/browser/geo/country_data.cc b/components/autofill/core/browser/geo/country_data.cc
index 545179c0..7f52b42 100644
--- a/components/autofill/core/browser/geo/country_data.cc
+++ b/components/autofill/core/browser/geo/country_data.cc
@@ -6,8 +6,8 @@
 
 #include <utility>
 
+#include "base/cxx17_backports.h"
 #include "base/memory/singleton.h"
-#include "base/stl_util.h"
 #include "components/strings/grit/components_strings.h"
 #include "third_party/icu/source/common/unicode/locid.h"
 
diff --git a/components/autofill/core/browser/webdata/autofill_table_unittest.cc b/components/autofill/core/browser/webdata/autofill_table_unittest.cc
index 1afd694..6f128471 100644
--- a/components/autofill/core/browser/webdata/autofill_table_unittest.cc
+++ b/components/autofill/core/browser/webdata/autofill_table_unittest.cc
@@ -11,10 +11,10 @@
 #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"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
diff --git a/components/autofill_assistant/browser/string_conversions_util.cc b/components/autofill_assistant/browser/string_conversions_util.cc
index 8c27bea..a3b5d34 100644
--- a/components/autofill_assistant/browser/string_conversions_util.cc
+++ b/components/autofill_assistant/browser/string_conversions_util.cc
@@ -4,9 +4,9 @@
 
 #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/stl_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "third_party/icu/source/common/unicode/utf8.h"
 
diff --git a/components/autofill_strings_grdp/OWNERS b/components/autofill_strings_grdp/OWNERS
index c4d2e224..50a21bb 100644
--- a/components/autofill_strings_grdp/OWNERS
+++ b/components/autofill_strings_grdp/OWNERS
@@ -1 +1 @@
-file://components/autofill/OWNERS
\ No newline at end of file
+file://components/autofill/OWNERS
diff --git a/components/base32/base32_unittest.cc b/components/base32/base32_unittest.cc
index 474e8e3..89357823 100644
--- a/components/base32/base32_unittest.cc
+++ b/components/base32/base32_unittest.cc
@@ -4,7 +4,7 @@
 
 #include <string>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "components/base32/base32.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
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 6b8dca07..94f0aa5 100644
--- a/components/blocklist/opt_out_blocklist/opt_out_blocklist_unittest.cc
+++ b/components/blocklist/opt_out_blocklist/opt_out_blocklist_unittest.cc
@@ -14,9 +14,9 @@
 
 #include "base/bind.h"
 #include "base/callback_helpers.h"
+#include "base/cxx17_backports.h"
 #include "base/memory/ptr_util.h"
 #include "base/run_loop.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/simple_test_clock.h"
diff --git a/components/bookmarks/browser/bookmark_utils_unittest.cc b/components/bookmarks/browser/bookmark_utils_unittest.cc
index 56ac5aa..73391f2 100644
--- a/components/bookmarks/browser/bookmark_utils_unittest.cc
+++ b/components/bookmarks/browser/bookmark_utils_unittest.cc
@@ -10,7 +10,7 @@
 #include <utility>
 #include <vector>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/task_environment.h"
 #include "build/build_config.h"
diff --git a/components/browser_ui/settings/OWNERS b/components/browser_ui/settings/OWNERS
index cf49cb9..0eb77c3 100644
--- a/components/browser_ui/settings/OWNERS
+++ b/components/browser_ui/settings/OWNERS
@@ -1 +1 @@
-file://chrome/android/java/src/org/chromium/chrome/browser/settings/OWNERS
\ No newline at end of file
+file://chrome/android/java/src/org/chromium/chrome/browser/settings/OWNERS
diff --git a/components/browser_ui/styles/android/OWNERS b/components/browser_ui/styles/android/OWNERS
index b18fa1e..8a970d4 100644
--- a/components/browser_ui/styles/android/OWNERS
+++ b/components/browser_ui/styles/android/OWNERS
@@ -1 +1 @@
-file://ui/android/java/res/OWNERS
\ No newline at end of file
+file://ui/android/java/res/OWNERS
diff --git a/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/highlight/PulseDrawable.java b/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/highlight/PulseDrawable.java
index 5f6abb0..f85f72713 100644
--- a/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/highlight/PulseDrawable.java
+++ b/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/highlight/PulseDrawable.java
@@ -136,11 +136,13 @@
      * @param context The {@link Context} under which the drawable is created.
      * @param cornerRadius The corner radius in pixels of the highlight rectangle, 0 may be passed
      *         if the rectangle should not be rounded.
+     * @param highlightExtension How far in pixels the highlight should be extended past the bounds
+     *         of the view. 0 should be passed if there should be no extension.
      * @param pulseEndAuthority The {@link PulseEndAuthority} associated with this drawable.
      * @return A new {@link PulseDrawable} instance.
      */
-    public static PulseDrawable createRoundedRectangle(
-            Context context, @Px int cornerRadius, PulseEndAuthority pulseEndAuthority) {
+    public static PulseDrawable createRoundedRectangle(Context context, @Px int cornerRadius,
+            @Px int highlightExtension, PulseEndAuthority pulseEndAuthority) {
         Painter painter = new Painter() {
             @Override
             public void modifyDrawable(PulseDrawable drawable, float interpolation) {
@@ -150,8 +152,13 @@
             @Override
             public void draw(
                     PulseDrawable drawable, Paint paint, Canvas canvas, float interpolation) {
-                canvas.drawRoundRect(
-                        new RectF(drawable.getBounds()), cornerRadius, cornerRadius, paint);
+                Rect bounds = drawable.getBounds();
+                if (highlightExtension != 0) {
+                    bounds = new Rect(bounds.left - highlightExtension,
+                            bounds.top - highlightExtension, bounds.right + highlightExtension,
+                            bounds.bottom + highlightExtension);
+                }
+                canvas.drawRoundRect(new RectF(bounds), cornerRadius, cornerRadius, paint);
             }
         };
 
@@ -165,10 +172,14 @@
      * {@link PulseEndAuthority}).
      * @param context The {@link Context} under which the drawable is created.
      * @param cornerRadius The corner radius in pixels of the highlight rectangle.
+     * @param highlightExtension How far in pixels the highlight should be extended past the bounds
+     *         of the view. 0 should be passed if there should be no extension.
      * @return A new {@link PulseDrawable} instance.
      */
-    public static PulseDrawable createRoundedRectangle(Context context, @Px int cornerRadius) {
-        return createRoundedRectangle(context, cornerRadius, new EndlessPulser());
+    public static PulseDrawable createRoundedRectangle(
+            Context context, @Px int cornerRadius, @Px int highlightExtension) {
+        return createRoundedRectangle(
+                context, cornerRadius, highlightExtension, new EndlessPulser());
     }
 
     /**
@@ -179,7 +190,7 @@
      * @return A new {@link PulseDrawable} instance.
      */
     public static PulseDrawable createRectangle(Context context) {
-        return createRoundedRectangle(context, 0);
+        return createRoundedRectangle(context, 0, /*highlightExtension=*/0);
     }
 
     /**
diff --git a/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/highlight/ViewHighlighter.java b/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/highlight/ViewHighlighter.java
index b537c876..c62de1d1 100644
--- a/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/highlight/ViewHighlighter.java
+++ b/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/highlight/ViewHighlighter.java
@@ -4,8 +4,6 @@
 
 package org.chromium.components.browser_ui.widget.highlight;
 
-import static org.chromium.components.browser_ui.widget.highlight.PulseDrawable.createCircle;
-
 import android.content.Context;
 import android.content.res.Resources;
 import android.graphics.drawable.Drawable;
@@ -76,6 +74,9 @@
         // The corner radius od rectangle in pixels. Used to created a rounded rectangle.
         @Px
         private int mCornerRadius;
+        // How far the highlight should extend past the bounds of the view.
+        @Px
+        private int mHighlightExtension;
 
         public HighlightParams(HighlightShape shape) {
             mShape = shape;
@@ -87,7 +88,7 @@
         }
 
         /**
-         * @@param respectPadding whether the highlight should respect the view's padding or be
+         * @param respectPadding whether the highlight should respect the view's padding or be
          * centered in its bounding box
          */
         public void setBoundsRespectPadding(boolean respectPadding) {
@@ -131,6 +132,22 @@
             return mCornerRadius;
         }
 
+        /**
+         * @param highlightExtension How far the highlight should be extended past the bounds of the
+         *        view.
+         */
+        public void setHighlightExtension(@Px int highlightExtension) {
+            mHighlightExtension = highlightExtension;
+        }
+
+        /**
+         * @return Value in pixels of how far the highlight should extend past the bounds of the
+         *         view.
+         */
+        public @Px int getHighlightExtension() {
+            return mHighlightExtension;
+        }
+
         /** @param num set if drawable should pulse only a certain number of times */
         public void setNumPulses(int num) {
             assert num > 0;
@@ -187,8 +204,9 @@
             drawable = createCircle(view, params.getNumPulses(), params.getBoundsRespectPadding(),
                     params.getCircleRadius());
         } else {
-            drawable = createRectangle(view, params.getNumPulses(),
-                    params.getBoundsRespectPadding(), params.getCornerRadius());
+            drawable =
+                    createRectangle(view, params.getNumPulses(), params.getBoundsRespectPadding(),
+                            params.getCornerRadius(), params.getHighlightExtension());
         }
         attachViewAsHighlight(view, drawable);
     }
@@ -241,16 +259,17 @@
     /**
      * Helper method to create a rectangular drawable from the values of {@code HighlightParams}.
      */
-    private static PulseDrawable createRectangle(
-            View view, int numPulses, boolean boundsRespectPadding, @Px int cornerRadius) {
+    private static PulseDrawable createRectangle(View view, int numPulses,
+            boolean boundsRespectPadding, @Px int cornerRadius, @Px int highlightExtension) {
         PulseDrawable drawable = null;
         Context context = view.getContext();
 
         if (numPulses != 0) {
             drawable = PulseDrawable.createRoundedRectangle(
-                    context, cornerRadius, new NumberPulser(view, numPulses));
+                    context, cornerRadius, highlightExtension, new NumberPulser(view, numPulses));
         } else {
-            drawable = PulseDrawable.createRoundedRectangle(context, cornerRadius);
+            drawable =
+                    PulseDrawable.createRoundedRectangle(context, cornerRadius, highlightExtension);
         }
 
         if (boundsRespectPadding) {
diff --git a/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/highlight/ViewHighlighterTest.java b/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/highlight/ViewHighlighterTest.java
index 8feca059..1b64776 100644
--- a/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/highlight/ViewHighlighterTest.java
+++ b/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/highlight/ViewHighlighterTest.java
@@ -5,7 +5,10 @@
 package org.chromium.components.browser_ui.widget.highlight;
 
 import android.content.Context;
+import android.graphics.Canvas;
 import android.graphics.Color;
+import android.graphics.Rect;
+import android.graphics.RectF;
 import android.graphics.drawable.ColorDrawable;
 import android.support.test.InstrumentationRegistry;
 import android.view.View;
@@ -17,6 +20,9 @@
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.MockitoAnnotations;
 
 import org.chromium.base.test.BaseJUnit4ClassRunner;
 import org.chromium.base.test.util.Batch;
@@ -27,6 +33,9 @@
 @RunWith(BaseJUnit4ClassRunner.class)
 @Batch(Batch.UNIT_TESTS)
 public class ViewHighlighterTest {
+    @Mock
+    Canvas mCanvas;
+
     private Context mContext;
     private final ViewHighlighter.HighlightParams mCircleParams =
             new ViewHighlighter.HighlightParams(ViewHighlighter.HighlightShape.CIRCLE);
@@ -36,6 +45,7 @@
     @Before
     public void setUp() {
         mContext = InstrumentationRegistry.getTargetContext();
+        MockitoAnnotations.initMocks(this);
     }
 
     @Test
@@ -79,6 +89,29 @@
         checkHighlightOn(tintedImageButton);
     }
 
+    @Test
+    @MediumTest
+    public void testHighlightExtension() {
+        int highlightExtension = 10;
+        View tintedImageButton = new ImageView(mContext);
+        ViewHighlighter.HighlightParams highlightParams =
+                new ViewHighlighter.HighlightParams(ViewHighlighter.HighlightShape.RECTANGLE);
+        highlightParams.setHighlightExtension(highlightExtension);
+
+        ViewHighlighter.turnOnHighlight(tintedImageButton, highlightParams);
+        checkHighlightOn(tintedImageButton);
+
+        Rect viewBounds = tintedImageButton.getBackground().getBounds();
+        RectF expectedBounds = new RectF(viewBounds.left - highlightExtension,
+                viewBounds.top - highlightExtension, viewBounds.right + highlightExtension,
+                viewBounds.bottom + highlightExtension);
+
+        ViewHighlighterTestUtils.drawPulseDrawable(tintedImageButton, mCanvas);
+
+        Mockito.verify(mCanvas).drawRoundRect(
+                Mockito.eq(expectedBounds), Mockito.anyFloat(), Mockito.anyFloat(), Mockito.any());
+    }
+
     /**
      * Assert that the provided view is highlighted.
      *
diff --git a/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/tile/OWNERS b/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/tile/OWNERS
index 125bc14..de7517a 100644
--- a/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/tile/OWNERS
+++ b/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/tile/OWNERS
@@ -1 +1 @@
-file://chrome/browser/android/explore_sites/OWNERS
\ No newline at end of file
+file://chrome/browser/android/explore_sites/OWNERS
diff --git a/components/browser_ui/widget/android/test/java/src/org/chromium/components/browser_ui/widget/highlight/ViewHighlighterTestUtils.java b/components/browser_ui/widget/android/test/java/src/org/chromium/components/browser_ui/widget/highlight/ViewHighlighterTestUtils.java
index bd7204f7..487e0a60 100644
--- a/components/browser_ui/widget/android/test/java/src/org/chromium/components/browser_ui/widget/highlight/ViewHighlighterTestUtils.java
+++ b/components/browser_ui/widget/android/test/java/src/org/chromium/components/browser_ui/widget/highlight/ViewHighlighterTestUtils.java
@@ -4,6 +4,7 @@
 
 package org.chromium.components.browser_ui.widget.highlight;
 
+import android.graphics.Canvas;
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.LayerDrawable;
 import android.view.View;
@@ -75,4 +76,16 @@
     public static boolean checkHighlightPulse(View view) {
         return checkHighlightPulse(view, CriteriaHelper.DEFAULT_MAX_TIME_TO_POLL);
     }
+
+    /**
+     * Draws the {@link PulseDrawable} attached to the {@link View} with the {@link Canvas}.
+     */
+    public static void drawPulseDrawable(View view, Canvas canvas) {
+        if (!checkHighlightOn(view)) return;
+        LayerDrawable layerDrawable = (LayerDrawable) view.getBackground();
+        PulseDrawable pulseDrawable =
+                (PulseDrawable) layerDrawable.getDrawable(layerDrawable.getNumberOfLayers() - 1);
+
+        pulseDrawable.draw(canvas);
+    }
 }
diff --git a/components/captive_portal/core/captive_portal_types.cc b/components/captive_portal/core/captive_portal_types.cc
index 55d9162d..a1b9f10 100644
--- a/components/captive_portal/core/captive_portal_types.cc
+++ b/components/captive_portal/core/captive_portal_types.cc
@@ -5,7 +5,7 @@
 #include "components/captive_portal/core/captive_portal_types.h"
 
 #include "base/check_op.h"
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 
 namespace captive_portal {
 
diff --git a/components/cbor/reader_unittest.cc b/components/cbor/reader_unittest.cc
index 9e81a07f..5b8f836 100644
--- a/components/cbor/reader_unittest.cc
+++ b/components/cbor/reader_unittest.cc
@@ -8,7 +8,7 @@
 #include "components/cbor/reader.h"
 
 #include "base/containers/span.h"
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
diff --git a/components/cbor/writer_unittest.cc b/components/cbor/writer_unittest.cc
index 792c8d70..ca6db6f3 100644
--- a/components/cbor/writer_unittest.cc
+++ b/components/cbor/writer_unittest.cc
@@ -7,7 +7,7 @@
 #include <limits>
 #include <string>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
diff --git a/components/cdm/common/widevine_drm_delegate_android.cc b/components/cdm/common/widevine_drm_delegate_android.cc
index 7fe46b8..71c7df6 100644
--- a/components/cdm/common/widevine_drm_delegate_android.cc
+++ b/components/cdm/common/widevine_drm_delegate_android.cc
@@ -4,7 +4,7 @@
 
 #include "components/cdm/common/widevine_drm_delegate_android.h"
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "media/cdm/cenc_utils.h"
 
 namespace cdm {
diff --git a/components/certificate_transparency/chrome_ct_policy_enforcer_unittest.cc b/components/certificate_transparency/chrome_ct_policy_enforcer_unittest.cc
index fcd3ab1..8112f48 100644
--- a/components/certificate_transparency/chrome_ct_policy_enforcer_unittest.cc
+++ b/components/certificate_transparency/chrome_ct_policy_enforcer_unittest.cc
@@ -9,7 +9,7 @@
 #include <utility>
 
 #include "base/build_time.h"
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "base/test/simple_test_clock.h"
 #include "base/time/time.h"
 #include "base/version.h"
diff --git a/components/client_update_protocol/ecdsa.cc b/components/client_update_protocol/ecdsa.cc
index eb97a7c..ff8ef9f 100644
--- a/components/client_update_protocol/ecdsa.cc
+++ b/components/client_update_protocol/ecdsa.cc
@@ -4,9 +4,9 @@
 
 #include "components/client_update_protocol/ecdsa.h"
 
+#include "base/cxx17_backports.h"
 #include "base/logging.h"
 #include "base/memory/ptr_util.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_piece.h"
 #include "base/strings/string_util.h"
diff --git a/components/cloud_devices/common/printer_description.cc b/components/cloud_devices/common/printer_description.cc
index a589d8d..62dbd9a 100644
--- a/components/cloud_devices/common/printer_description.cc
+++ b/components/cloud_devices/common/printer_description.cc
@@ -12,10 +12,10 @@
 #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"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_piece.h"
 #include "base/strings/string_util.h"
diff --git a/components/component_updater/component_updater_service_unittest.cc b/components/component_updater/component_updater_service_unittest.cc
index 96c3961..e1f24a5 100644
--- a/components/component_updater/component_updater_service_unittest.cc
+++ b/components/component_updater/component_updater_service_unittest.cc
@@ -11,12 +11,12 @@
 
 #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/macros.h"
 #include "base/memory/ref_counted.h"
 #include "base/run_loop.h"
-#include "base/stl_util.h"
 #include "base/task/post_task.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/task_environment.h"
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 ddc2cb5..90412e7 100644
--- a/components/component_updater/installer_policies/safety_tips_component_installer.cc
+++ b/components/component_updater/installer_policies/safety_tips_component_installer.cc
@@ -8,10 +8,10 @@
 #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"
-#include "base/stl_util.h"
 #include "base/task/post_task.h"
 #include "base/task/thread_pool.h"
 #include "components/reputation/core/safety_tips.pb.h"
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 b2127f52..f988714e 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,13 +11,13 @@
 
 #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"
 #include "base/logging.h"
 #include "base/memory/ref_counted.h"
 #include "base/path_service.h"
-#include "base/stl_util.h"
 #include "base/task/post_task.h"
 #include "base/task/thread_pool.h"
 #include "base/version.h"
diff --git a/components/content_creation/OWNERS b/components/content_creation/OWNERS
index ab3ce6f1..12c130a 100644
--- a/components/content_creation/OWNERS
+++ b/components/content_creation/OWNERS
@@ -1,2 +1,2 @@
 seblalancette@chromium.org
-sebsg@chromium.org
\ No newline at end of file
+sebsg@chromium.org
diff --git a/components/content_settings/core/browser/content_settings_utils.cc b/components/content_settings/core/browser/content_settings_utils.cc
index b462833..ccaf3a1 100644
--- a/components/content_settings/core/browser/content_settings_utils.cc
+++ b/components/content_settings/core/browser/content_settings_utils.cc
@@ -8,8 +8,8 @@
 
 #include <vector>
 
+#include "base/cxx17_backports.h"
 #include "base/notreached.h"
-#include "base/stl_util.h"
 #include "base/strings/string_split.h"
 #include "base/values.h"
 #include "components/content_settings/core/browser/host_content_settings_map.h"
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 8de20d0..d2d22f7 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,7 @@
 
 #include <string>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "components/content_settings/core/test/content_settings_test_utils.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
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 c1c3f72f..ea4fdee 100644
--- a/components/content_settings/core/browser/host_content_settings_map.cc
+++ b/components/content_settings/core/browser/host_content_settings_map.cc
@@ -12,9 +12,9 @@
 
 #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/stl_util.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/threading/thread_task_runner_handle.h"
diff --git a/components/content_settings/core/common/content_settings.cc b/components/content_settings/core/common/content_settings.cc
index edf31ba7..807a39d 100644
--- a/components/content_settings/core/common/content_settings.cc
+++ b/components/content_settings/core/common/content_settings.cc
@@ -9,8 +9,8 @@
 #include <utility>
 
 #include "base/check_op.h"
+#include "base/cxx17_backports.h"
 #include "base/notreached.h"
-#include "base/stl_util.h"
 #include "build/build_config.h"
 #include "components/content_settings/core/common/content_settings_utils.h"
 
diff --git a/components/content_settings/core/common/content_settings_pattern.cc b/components/content_settings/core/common/content_settings_pattern.cc
index c592cc4..1e5f1014 100644
--- a/components/content_settings/core/common/content_settings_pattern.cc
+++ b/components/content_settings/core/common/content_settings_pattern.cc
@@ -12,8 +12,8 @@
 #include <vector>
 
 #include "base/check_op.h"
+#include "base/cxx17_backports.h"
 #include "base/notreached.h"
-#include "base/stl_util.h"
 #include "base/strings/strcat.h"
 #include "base/strings/string_piece.h"
 #include "base/strings/string_split.h"
diff --git a/components/crash/android/crash_keys_android.cc b/components/crash/android/crash_keys_android.cc
index d321343..53acc37 100644
--- a/components/crash/android/crash_keys_android.cc
+++ b/components/crash/android/crash_keys_android.cc
@@ -6,7 +6,7 @@
 
 #include "base/android/jni_android.h"
 #include "base/android/jni_string.h"
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "components/crash/android/jni_headers/CrashKeys_jni.h"
 #include "components/crash/core/common/crash_key.h"
 
diff --git a/components/crash/content/app/breakpad_win.cc b/components/crash/content/app/breakpad_win.cc
index a1e1854..4c79b7e 100644
--- a/components/crash/content/app/breakpad_win.cc
+++ b/components/crash/content/app/breakpad_win.cc
@@ -21,13 +21,13 @@
 
 #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"
 #include "base/files/file_path.h"
 #include "base/no_destructor.h"
 #include "base/numerics/safe_conversions.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_split.h"
 #include "base/strings/string_util.h"
diff --git a/components/crash/content/browser/crash_handler_host_linux.cc b/components/crash/content/browser/crash_handler_host_linux.cc
index 5297dd2..d433582 100644
--- a/components/crash/content/browser/crash_handler_host_linux.cc
+++ b/components/crash/content/browser/crash_handler_host_linux.cc
@@ -17,6 +17,7 @@
 
 #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"
@@ -27,7 +28,6 @@
 #include "base/path_service.h"
 #include "base/posix/eintr_wrapper.h"
 #include "base/rand_util.h"
-#include "base/stl_util.h"
 #include "base/strings/string_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/task/current_thread.h"
diff --git a/components/crash/core/app/crashpad_android.cc b/components/crash/core/app/crashpad_android.cc
index 27e34434..64e94687 100644
--- a/components/crash/core/app/crashpad_android.cc
+++ b/components/crash/core/app/crashpad_android.cc
@@ -18,6 +18,7 @@
 #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"
@@ -28,7 +29,6 @@
 #include "base/posix/eintr_wrapper.h"
 #include "base/posix/global_descriptors.h"
 #include "base/rand_util.h"
-#include "base/stl_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/synchronization/lock.h"
 #include "build/branding_buildflags.h"
diff --git a/components/crash/core/app/crashpad_win.cc b/components/crash/core/app/crashpad_win.cc
index 686be796..7dd251b 100644
--- a/components/crash/core/app/crashpad_win.cc
+++ b/components/crash/core/app/crashpad_win.cc
@@ -7,11 +7,11 @@
 #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"
 #include "base/numerics/safe_conversions.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_split.h"
 #include "base/strings/string_util.h"
diff --git a/components/crash/core/browser/crashes_ui_util.cc b/components/crash/core/browser/crashes_ui_util.cc
index 0795c2a..e78e470 100644
--- a/components/crash/core/browser/crashes_ui_util.cc
+++ b/components/crash/core/browser/crashes_ui_util.cc
@@ -8,9 +8,9 @@
 #include <utility>
 #include <vector>
 
+#include "base/cxx17_backports.h"
 #include "base/i18n/time_formatting.h"
 #include "base/notreached.h"
-#include "base/stl_util.h"
 #include "base/values.h"
 #include "components/strings/grit/components_chromium_strings.h"
 #include "components/strings/grit/components_strings.h"
diff --git a/components/crash/core/common/crash_key_unittest.cc b/components/crash/core/common/crash_key_unittest.cc
index 3e7f1023..92052c1 100644
--- a/components/crash/core/common/crash_key_unittest.cc
+++ b/components/crash/core/common/crash_key_unittest.cc
@@ -4,9 +4,9 @@
 
 #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 "base/stl_util.h"
 #include "build/build_config.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
diff --git a/components/crash/core/common/crash_keys.cc b/components/crash/core/common/crash_keys.cc
index 8c4121c..08455f5e 100644
--- a/components/crash/core/common/crash_keys.cc
+++ b/components/crash/core/common/crash_keys.cc
@@ -8,9 +8,9 @@
 #include <vector>
 
 #include "base/command_line.h"
+#include "base/cxx17_backports.h"
 #include "base/format_macros.h"
 #include "base/no_destructor.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_piece.h"
 #include "base/strings/string_split.h"
diff --git a/components/cronet/android/BUILD.gn b/components/cronet/android/BUILD.gn
index 96c6974..d584946 100644
--- a/components/cronet/android/BUILD.gn
+++ b/components/cronet/android/BUILD.gn
@@ -959,7 +959,9 @@
     "//net/android:net_java",
     "//net/android:net_java_test_support",
     "//url:url_java",
+    "//third_party/google-truth:google_truth_java",
     "//third_party/junit",
+    "//third_party/mockito:mockito_java",
   ]
 
   android_library("cronet_javatests") {
@@ -1013,9 +1015,7 @@
       "//third_party/android_sdk:android_test_base_java",
       "//third_party/android_support_test_runner:runner_java",
       "//third_party/androidx:androidx_test_runner_java",
-      "//third_party/google-truth:google_truth_java",
       "//third_party/hamcrest:hamcrest_core_java",
-      "//third_party/mockito:mockito_java",
     ]
     deps += cronet_javatests_deps_to_package
     data = [ "//components/cronet/testing/test_server/data/" ]
diff --git a/components/cronet/stale_host_resolver_unittest.cc b/components/cronet/stale_host_resolver_unittest.cc
index 059895bc..8343d02 100644
--- a/components/cronet/stale_host_resolver_unittest.cc
+++ b/components/cronet/stale_host_resolver_unittest.cc
@@ -10,9 +10,9 @@
 
 #include "base/bind.h"
 #include "base/check.h"
+#include "base/cxx17_backports.h"
 #include "base/memory/ref_counted.h"
 #include "base/run_loop.h"
-#include "base/stl_util.h"
 #include "base/test/simple_test_tick_clock.h"
 #include "base/test/task_environment.h"
 #include "base/test/test_timeouts.h"
diff --git a/components/crx_file/crx_creator.cc b/components/crx_file/crx_creator.cc
index be342042..77594f4 100644
--- a/components/crx_file/crx_creator.cc
+++ b/components/crx_file/crx_creator.cc
@@ -4,9 +4,9 @@
 
 #include "components/crx_file/crx_creator.h"
 
+#include "base/cxx17_backports.h"
 #include "base/files/file.h"
 #include "base/files/file_path.h"
-#include "base/stl_util.h"
 #include "components/crx_file/crx3.pb.h"
 #include "components/crx_file/crx_file.h"
 #include "crypto/rsa_private_key.h"
diff --git a/components/crx_file/crx_verifier.cc b/components/crx_file/crx_verifier.cc
index 0d7f97a6d8..fce30c4 100644
--- a/components/crx_file/crx_verifier.cc
+++ b/components/crx_file/crx_verifier.cc
@@ -14,10 +14,10 @@
 #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"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "components/crx_file/crx3.pb.h"
 #include "components/crx_file/crx_file.h"
diff --git a/components/crx_file/id_util_unittest.cc b/components/crx_file/id_util_unittest.cc
index ee31110..03c7a2de 100644
--- a/components/crx_file/id_util_unittest.cc
+++ b/components/crx_file/id_util_unittest.cc
@@ -6,7 +6,7 @@
 
 #include <stdint.h>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace crx_file {
diff --git a/components/data_reduction_proxy/core/browser/data_reduction_proxy_data_unittest.cc b/components/data_reduction_proxy/core/browser/data_reduction_proxy_data_unittest.cc
index f782e63..e9ed7ee 100644
--- a/components/data_reduction_proxy/core/browser/data_reduction_proxy_data_unittest.cc
+++ b/components/data_reduction_proxy/core/browser/data_reduction_proxy_data_unittest.cc
@@ -9,7 +9,7 @@
 #include <memory>
 #include <string>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "base/test/task_environment.h"
 #include "net/base/request_priority.h"
 #include "net/nqe/effective_connection_type.h"
diff --git a/components/data_reduction_proxy/core/browser/data_reduction_proxy_util.cc b/components/data_reduction_proxy/core/browser/data_reduction_proxy_util.cc
index 5fda9882..705187e 100644
--- a/components/data_reduction_proxy/core/browser/data_reduction_proxy_util.cc
+++ b/components/data_reduction_proxy/core/browser/data_reduction_proxy_util.cc
@@ -6,7 +6,7 @@
 
 #include <stdint.h>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/time/time.h"
 #include "base/version.h"
diff --git a/components/desks_storage/OWNERS b/components/desks_storage/OWNERS
index 7d6a9c2..679c491 100644
--- a/components/desks_storage/OWNERS
+++ b/components/desks_storage/OWNERS
@@ -2,4 +2,4 @@
 avynn@google.com
 richui@google.com
 xdai@chromium.org
-yzd@google.com
\ No newline at end of file
+yzd@google.com
diff --git a/components/discardable_memory/common/discardable_shared_memory_heap.cc b/components/discardable_memory/common/discardable_shared_memory_heap.cc
index c6deffd..7e2f233 100644
--- a/components/discardable_memory/common/discardable_shared_memory_heap.cc
+++ b/components/discardable_memory/common/discardable_shared_memory_heap.cc
@@ -10,6 +10,7 @@
 #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"
@@ -17,7 +18,6 @@
 #include "base/memory/page_size.h"
 #include "base/memory/ptr_util.h"
 #include "base/metrics/histogram_macros.h"
-#include "base/stl_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/trace_event/memory_dump_manager.h"
 
diff --git a/components/domain_reliability/quic_error_mapping.cc b/components/domain_reliability/quic_error_mapping.cc
index 1dbd1eb..1f49f9c 100644
--- a/components/domain_reliability/quic_error_mapping.cc
+++ b/components/domain_reliability/quic_error_mapping.cc
@@ -4,7 +4,7 @@
 
 #include "components/domain_reliability/quic_error_mapping.h"
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 
 namespace domain_reliability {
 
diff --git a/components/domain_reliability/util.cc b/components/domain_reliability/util.cc
index d0973ea..5cfbfc4c 100644
--- a/components/domain_reliability/util.cc
+++ b/components/domain_reliability/util.cc
@@ -7,9 +7,9 @@
 #include <stddef.h>
 
 #include "base/callback.h"
+#include "base/cxx17_backports.h"
 #include "base/memory/weak_ptr.h"
 #include "base/notreached.h"
-#include "base/stl_util.h"
 #include "base/time/default_tick_clock.h"
 #include "base/time/time.h"
 #include "base/timer/timer.h"
diff --git a/components/download/internal/common/base_file_unittest.cc b/components/download/internal/common/base_file_unittest.cc
index e0955f4..9e384e1 100644
--- a/components/download/internal/common/base_file_unittest.cc
+++ b/components/download/internal/common/base_file_unittest.cc
@@ -10,10 +10,10 @@
 #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"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/test/test_file_util.h"
 #include "build/build_config.h"
diff --git a/components/download/public/common/OWNERS b/components/download/public/common/OWNERS
index 61b5e28..08850f4 100644
--- a/components/download/public/common/OWNERS
+++ b/components/download/public/common/OWNERS
@@ -1,2 +1,2 @@
 per-file *.mojom=set noparent
-per-file *.mojom=file://ipc/SECURITY_OWNERS
\ No newline at end of file
+per-file *.mojom=file://ipc/SECURITY_OWNERS
diff --git a/components/drive/drive_api_util.cc b/components/drive/drive_api_util.cc
index 9ee2dbe..ef2ca22 100644
--- a/components/drive/drive_api_util.cc
+++ b/components/drive/drive_api_util.cc
@@ -6,9 +6,9 @@
 
 #include <string>
 
+#include "base/cxx17_backports.h"
 #include "base/files/file.h"
 #include "base/hash/md5.h"
-#include "base/stl_util.h"
 #include "base/strings/strcat.h"
 #include "base/strings/string_util.h"
 #include "base/strings/stringprintf.h"
diff --git a/components/drive/resource_metadata_storage.cc b/components/drive/resource_metadata_storage.cc
index 9fb63464..d3344232 100644
--- a/components/drive/resource_metadata_storage.cc
+++ b/components/drive/resource_metadata_storage.cc
@@ -12,6 +12,7 @@
 #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"
@@ -19,7 +20,6 @@
 #include "base/metrics/histogram_functions.h"
 #include "base/metrics/histogram_macros.h"
 #include "base/sequenced_task_runner.h"
-#include "base/stl_util.h"
 #include "base/threading/scoped_blocking_call.h"
 #include "components/drive/drive.pb.h"
 #include "components/drive/drive_api_util.h"
diff --git a/components/embedder_support/android/delegate/OWNERS b/components/embedder_support/android/delegate/OWNERS
index 9fd8a62..4048140c 100644
--- a/components/embedder_support/android/delegate/OWNERS
+++ b/components/embedder_support/android/delegate/OWNERS
@@ -1,2 +1,2 @@
 boliu@chromium.org
-tedchoc@chromium.org
\ No newline at end of file
+tedchoc@chromium.org
diff --git a/components/embedder_support/origin_trials/OWNERS b/components/embedder_support/origin_trials/OWNERS
index 8a5122f..73686a7 100644
--- a/components/embedder_support/origin_trials/OWNERS
+++ b/components/embedder_support/origin_trials/OWNERS
@@ -1 +1 @@
-file://third_party/blink/common/origin_trials/OWNERS
\ No newline at end of file
+file://third_party/blink/common/origin_trials/OWNERS
diff --git a/components/embedder_support/origin_trials/origin_trial_policy_impl.cc b/components/embedder_support/origin_trials/origin_trial_policy_impl.cc
index b31d092..235dae4 100644
--- a/components/embedder_support/origin_trials/origin_trial_policy_impl.cc
+++ b/components/embedder_support/origin_trials/origin_trial_policy_impl.cc
@@ -9,8 +9,8 @@
 
 #include "base/base64.h"
 #include "base/command_line.h"
+#include "base/cxx17_backports.h"
 #include "base/feature_list.h"
-#include "base/stl_util.h"
 #include "base/strings/string_piece.h"
 #include "base/strings/string_split.h"
 #include "components/embedder_support/origin_trials/features.h"
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 38139fe..67557c8 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,8 +7,8 @@
 #include <memory>
 
 #include "base/command_line.h"
+#include "base/cxx17_backports.h"
 #include "base/memory/ptr_util.h"
-#include "base/stl_util.h"
 #include "base/strings/string_piece.h"
 #include "base/strings/string_util.h"
 #include "base/test/scoped_feature_list.h"
diff --git a/components/embedder_support/user_agent_utils.cc b/components/embedder_support/user_agent_utils.cc
index 1f8de24..fcae34ae 100644
--- a/components/embedder_support/user_agent_utils.cc
+++ b/components/embedder_support/user_agent_utils.cc
@@ -34,7 +34,7 @@
   }
 
   if (base::FeatureList::IsEnabled(blink::features::kFreezeUserAgent)) {
-    return content::GetFrozenUserAgent(
+    return content::GetReducedUserAgent(
         command_line->HasSwitch(switches::kUseMobileUserAgent),
         version_info::GetMajorVersionNumber());
   }
diff --git a/components/embedder_support/user_agent_utils_unittest.cc b/components/embedder_support/user_agent_utils_unittest.cc
index 281f9f7..1debab3 100644
--- a/components/embedder_support/user_agent_utils_unittest.cc
+++ b/components/embedder_support/user_agent_utils_unittest.cc
@@ -227,9 +227,12 @@
   ASSERT_FALSE(command_line->HasSwitch(switches::kUseMobileUserAgent));
   {
     std::string buffer = GetUserAgent();
-    EXPECT_EQ(buffer, base::StringPrintf(
-                          content::frozen_user_agent_strings::kAndroid,
-                          version_info::GetMajorVersionNumber().c_str()));
+    std::string device_compat = "";
+    EXPECT_EQ(buffer,
+              base::StringPrintf(content::frozen_user_agent_strings::kAndroid,
+                                 content::GetUnifiedPlatform().c_str(),
+                                 version_info::GetMajorVersionNumber().c_str(),
+                                 device_compat.c_str()));
   }
 
   // Verify the mobile user agent string is returned when using a mobile user
@@ -238,15 +241,19 @@
   ASSERT_TRUE(command_line->HasSwitch(switches::kUseMobileUserAgent));
   {
     std::string buffer = GetUserAgent();
-    EXPECT_EQ(buffer, base::StringPrintf(
-                          content::frozen_user_agent_strings::kAndroidMobile,
-                          version_info::GetMajorVersionNumber().c_str()));
+    std::string device_compat = "Mobile ";
+    EXPECT_EQ(buffer,
+              base::StringPrintf(content::frozen_user_agent_strings::kAndroid,
+                                 content::GetUnifiedPlatform().c_str(),
+                                 version_info::GetMajorVersionNumber().c_str(),
+                                 device_compat.c_str()));
   }
 #else
   {
     std::string buffer = GetUserAgent();
     EXPECT_EQ(buffer, base::StringPrintf(
                           content::frozen_user_agent_strings::kDesktop,
+                          content::GetUnifiedPlatform().c_str(),
                           version_info::GetMajorVersionNumber().c_str()));
   }
 #endif
diff --git a/components/error_page/common/OWNERS b/components/error_page/common/OWNERS
index ec20b61..40bbf02 100644
--- a/components/error_page/common/OWNERS
+++ b/components/error_page/common/OWNERS
@@ -1 +1 @@
-per-file localized_error.cc=edwardjung@chromium.org
\ No newline at end of file
+per-file localized_error.cc=edwardjung@chromium.org
diff --git a/components/error_page/common/localized_error.cc b/components/error_page/common/localized_error.cc
index c92890e..498ac21 100644
--- a/components/error_page/common/localized_error.cc
+++ b/components/error_page/common/localized_error.cc
@@ -12,11 +12,11 @@
 
 #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"
 #include "base/notreached.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
diff --git a/components/exo/wayland/clients/blur.cc b/components/exo/wayland/clients/blur.cc
index 9538016..d30020d 100644
--- a/components/exo/wayland/clients/blur.cc
+++ b/components/exo/wayland/clients/blur.cc
@@ -8,7 +8,7 @@
 #include <vector>
 
 #include "base/command_line.h"
-#include "base/stl_util.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"
diff --git a/components/exo/wayland/clients/rects.cc b/components/exo/wayland/clients/rects.cc
index e74a5a7..9c3bfac 100644
--- a/components/exo/wayland/clients/rects.cc
+++ b/components/exo/wayland/clients/rects.cc
@@ -20,10 +20,10 @@
 #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"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/task/single_thread_task_executor.h"
 #include "base/time/time.h"
diff --git a/components/exo/wayland/clients/simple.cc b/components/exo/wayland/clients/simple.cc
index bec46ef..2d73a18a 100644
--- a/components/exo/wayland/clients/simple.cc
+++ b/components/exo/wayland/clients/simple.cc
@@ -9,7 +9,7 @@
 
 #include "base/command_line.h"
 #include "base/containers/circular_deque.h"
-#include "base/stl_util.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"
diff --git a/components/exo/wayland/clients/subsurface.cc b/components/exo/wayland/clients/subsurface.cc
index 3877a41..ef88eb7 100644
--- a/components/exo/wayland/clients/subsurface.cc
+++ b/components/exo/wayland/clients/subsurface.cc
@@ -4,8 +4,8 @@
 
 #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/stl_util.h"
 #include "base/task/single_thread_task_executor.h"
 #include "components/exo/wayland/clients/client_base.h"
 #include "components/exo/wayland/clients/client_helper.h"
diff --git a/components/exo/wayland/clients/vulkan.cc b/components/exo/wayland/clients/vulkan.cc
index 741ac3e2..c2e5ec9 100644
--- a/components/exo/wayland/clients/vulkan.cc
+++ b/components/exo/wayland/clients/vulkan.cc
@@ -4,8 +4,8 @@
 
 #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/stl_util.h"
 #include "base/task/single_thread_task_executor.h"
 #include "components/exo/wayland/clients/client_base.h"
 #include "components/exo/wayland/clients/client_helper.h"
diff --git a/components/exo/wayland/zcr_color_space.cc b/components/exo/wayland/zcr_color_space.cc
index 2c5f855..eefd459 100644
--- a/components/exo/wayland/zcr_color_space.cc
+++ b/components/exo/wayland/zcr_color_space.cc
@@ -8,7 +8,7 @@
 #include <wayland-server-core.h>
 #include <wayland-server-protocol-core.h>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "components/exo/wayland/server_util.h"
 #include "ui/gfx/color_space.h"
 
diff --git a/components/favicon/core/fallback_url_util_unittest.cc b/components/favicon/core/fallback_url_util_unittest.cc
index 84e9022..75af5a2 100644
--- a/components/favicon/core/fallback_url_util_unittest.cc
+++ b/components/favicon/core/fallback_url_util_unittest.cc
@@ -6,7 +6,7 @@
 
 #include <stddef.h>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "base/strings/utf_string_conversions.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "url/gurl.h"
diff --git a/components/favicon/core/favicon_database_unittest.cc b/components/favicon/core/favicon_database_unittest.cc
index 6c1fd25..54a3871 100644
--- a/components/favicon/core/favicon_database_unittest.cc
+++ b/components/favicon/core/favicon_database_unittest.cc
@@ -46,39 +46,6 @@
 const gfx::Size kSmallSize = gfx::Size(16, 16);
 const gfx::Size kLargeSize = gfx::Size(32, 32);
 
-// Page and icon urls shared by tests.  Present in golden database
-// files (see VersionN tests).
-// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
-// function.
-GURL PageUrl1() {
-  return GURL("http://google.com/");
-}
-GURL PageUrl2() {
-  return GURL("http://yahoo.com/");
-}
-GURL PageUrl3() {
-  return GURL("http://www.google.com/");
-}
-GURL PageUrl4() {
-  return GURL("http://www.google.com/blank.html");
-}
-GURL PageUrl5() {
-  return GURL("http://www.bing.com/");
-}
-
-GURL IconUrl1() {
-  return GURL("http://www.google.com/favicon.ico");
-}
-GURL IconUrl2() {
-  return GURL("http://www.yahoo.com/favicon.ico");
-}
-GURL IconUrl3() {
-  return GURL("http://www.google.com/touch.ico");
-}
-GURL IconUrl5() {
-  return GURL("http://www.bing.com/favicon.ico");
-}
-
 // Verify that the up-to-date database has the expected tables and
 // columns.  Functional tests only check whether the things which
 // should be there are, but do not check if extraneous items are
@@ -235,6 +202,18 @@
     file_name_ = temp_dir_.GetPath().AppendASCII("TestFavicons.db");
   }
 
+  // Page and icon urls shared by tests.  Present in golden database files (see
+  // VersionN tests).
+  const GURL kPageUrl1{"http://google.com/"};
+  const GURL kPageUrl2{"http://yahoo.com/"};
+  const GURL kPageUrl3{"http://www.google.com/"};
+  const GURL kPageUrl4{"http://www.google.com/blank.html"};
+  const GURL kPageUrl5{"http://www.bing.com/"};
+  const GURL kIconUrl1{"http://www.google.com/favicon.ico"};
+  const GURL kIconUrl2{"http://www.yahoo.com/favicon.ico"};
+  const GURL kIconUrl3{"http://www.google.com/touch.ico"};
+  const GURL kIconUrl5{"http://www.bing.com/favicon.ico"};
+
   base::ScopedTempDir temp_dir_;
   base::FilePath file_name_;
 };
@@ -643,13 +622,13 @@
   db.BeginTransaction();
 
   // Build a database mapping
-  // PageUrl1() -> IconUrl1()
-  // PageUrl2() -> IconUrl2()
-  // PageUrl3() -> IconUrl1()
-  // PageUrl4() -> IconUrl1()
-  // PageUrl5() -> IconUrl5()
-  // Then retain PageUrl1(), PageUrl3(), and PageUrl5(). PageUrl2()
-  // and PageUrl4() should go away, but the others should be retained
+  // kPageUrl1 -> kIconUrl1
+  // kPageUrl2 -> kIconUrl2
+  // kPageUrl3 -> kIconUrl1
+  // kPageUrl4 -> kIconUrl1
+  // kPageUrl5 -> kIconUrl5
+  // Then retain kPageUrl1, kPageUrl3, and kPageUrl5. kPageUrl2
+  // and kPageUrl4 should go away, but the others should be retained
   // correctly.
 
   // TODO(shess): This would probably make sense as a golden file.
@@ -660,49 +639,46 @@
       new base::RefCountedStaticMemory(kBlob2, sizeof(kBlob2)));
 
   favicon_base::FaviconID kept_id1 =
-      db.AddFavicon(IconUrl1(), favicon_base::IconType::kFavicon);
+      db.AddFavicon(kIconUrl1, favicon_base::IconType::kFavicon);
   db.AddFaviconBitmap(kept_id1, favicon1, FaviconBitmapType::ON_VISIT,
                       base::Time::Now(), kLargeSize);
-  db.AddIconMapping(PageUrl1(), kept_id1);
-  db.AddIconMapping(PageUrl3(), kept_id1);
-  db.AddIconMapping(PageUrl4(), kept_id1);
+  db.AddIconMapping(kPageUrl1, kept_id1);
+  db.AddIconMapping(kPageUrl3, kept_id1);
+  db.AddIconMapping(kPageUrl4, kept_id1);
 
   favicon_base::FaviconID unkept_id =
-      db.AddFavicon(IconUrl2(), favicon_base::IconType::kFavicon);
+      db.AddFavicon(kIconUrl2, favicon_base::IconType::kFavicon);
   db.AddFaviconBitmap(unkept_id, favicon1, FaviconBitmapType::ON_VISIT,
                       base::Time::Now(), kLargeSize);
-  db.AddIconMapping(PageUrl2(), unkept_id);
+  db.AddIconMapping(kPageUrl2, unkept_id);
 
   favicon_base::FaviconID kept_id2 =
-      db.AddFavicon(IconUrl5(), favicon_base::IconType::kFavicon);
+      db.AddFavicon(kIconUrl5, favicon_base::IconType::kFavicon);
   db.AddFaviconBitmap(kept_id2, favicon2, FaviconBitmapType::ON_VISIT,
                       base::Time::Now(), kLargeSize);
-  db.AddIconMapping(PageUrl5(), kept_id2);
+  db.AddIconMapping(kPageUrl5, kept_id2);
 
   // RetainDataForPageUrls() uses schema manipulations for efficiency.
   // Grab a copy of the schema to make sure the final schema matches.
   const std::string original_schema = db.db_.GetSchema();
 
   std::vector<GURL> pages_to_keep;
-  pages_to_keep.push_back(PageUrl1());
-  pages_to_keep.push_back(PageUrl3());
-  pages_to_keep.push_back(PageUrl5());
+  pages_to_keep.push_back(kPageUrl1);
+  pages_to_keep.push_back(kPageUrl3);
+  pages_to_keep.push_back(kPageUrl5);
   EXPECT_TRUE(db.RetainDataForPageUrls(pages_to_keep));
 
   // Mappings from the retained urls should be left.
-  EXPECT_TRUE(CheckPageHasIcon(&db, PageUrl1(),
-                               favicon_base::IconType::kFavicon, IconUrl1(),
-                               kLargeSize, sizeof(kBlob1), kBlob1));
-  EXPECT_TRUE(CheckPageHasIcon(&db, PageUrl3(),
-                               favicon_base::IconType::kFavicon, IconUrl1(),
-                               kLargeSize, sizeof(kBlob1), kBlob1));
-  EXPECT_TRUE(CheckPageHasIcon(&db, PageUrl5(),
-                               favicon_base::IconType::kFavicon, IconUrl5(),
-                               kLargeSize, sizeof(kBlob2), kBlob2));
+  EXPECT_TRUE(CheckPageHasIcon(&db, kPageUrl1, favicon_base::IconType::kFavicon,
+                               kIconUrl1, kLargeSize, sizeof(kBlob1), kBlob1));
+  EXPECT_TRUE(CheckPageHasIcon(&db, kPageUrl3, favicon_base::IconType::kFavicon,
+                               kIconUrl1, kLargeSize, sizeof(kBlob1), kBlob1));
+  EXPECT_TRUE(CheckPageHasIcon(&db, kPageUrl5, favicon_base::IconType::kFavicon,
+                               kIconUrl5, kLargeSize, sizeof(kBlob2), kBlob2));
 
   // The ones not retained should be missing.
-  EXPECT_FALSE(db.GetIconMappingsForPageURL(PageUrl2(), nullptr));
-  EXPECT_FALSE(db.GetIconMappingsForPageURL(PageUrl4(), nullptr));
+  EXPECT_FALSE(db.GetIconMappingsForPageURL(kPageUrl2, nullptr));
+  EXPECT_FALSE(db.GetIconMappingsForPageURL(kPageUrl4, nullptr));
 
   // Schema should be the same.
   EXPECT_EQ(original_schema, db.db_.GetSchema());
@@ -717,14 +693,14 @@
   scoped_refptr<base::RefCountedStaticMemory> favicon1(
       new base::RefCountedStaticMemory(kBlob1, sizeof(kBlob1)));
   favicon_base::FaviconID kept_id = db.AddFavicon(
-      IconUrl1(), favicon_base::IconType::kFavicon, favicon1,
+      kIconUrl1, favicon_base::IconType::kFavicon, favicon1,
       FaviconBitmapType::ON_VISIT, base::Time::Now(), gfx::Size());
-  db.AddIconMapping(PageUrl1(), kept_id);
+  db.AddIconMapping(kPageUrl1, kept_id);
 
-  EXPECT_TRUE(db.RetainDataForPageUrls(std::vector<GURL>(1u, PageUrl1())));
+  EXPECT_TRUE(db.RetainDataForPageUrls(std::vector<GURL>(1u, kPageUrl1)));
 
-  favicon_base::FaviconID new_favicon_id = db.GetFaviconIDForFaviconURL(
-      IconUrl1(), favicon_base::IconType::kFavicon);
+  favicon_base::FaviconID new_favicon_id =
+      db.GetFaviconIDForFaviconURL(kIconUrl1, favicon_base::IconType::kFavicon);
   ASSERT_NE(0, new_favicon_id);
   std::vector<FaviconBitmap> new_favicon_bitmaps;
   db.GetFaviconBitmaps(new_favicon_id, &new_favicon_bitmaps);
@@ -833,13 +809,13 @@
   db.BeginTransaction();
 
   const GURL kPageUrl("http://www.google.com");
-  AddAndMapFaviconSimple(&db, kPageUrl, IconUrl1(),
+  AddAndMapFaviconSimple(&db, kPageUrl, kIconUrl1,
                          favicon_base::IconType::kFavicon);
-  AddAndMapFaviconSimple(&db, kPageUrl, IconUrl2(),
+  AddAndMapFaviconSimple(&db, kPageUrl, kIconUrl2,
                          favicon_base::IconType::kTouchIcon);
-  AddAndMapFaviconSimple(&db, kPageUrl, IconUrl3(),
+  AddAndMapFaviconSimple(&db, kPageUrl, kIconUrl3,
                          favicon_base::IconType::kTouchIcon);
-  AddAndMapFaviconSimple(&db, kPageUrl, IconUrl5(),
+  AddAndMapFaviconSimple(&db, kPageUrl, kIconUrl5,
                          favicon_base::IconType::kTouchPrecomposedIcon);
 
   // Only the mappings for kFavicon and kTouchIcon should be returned.
@@ -851,9 +827,9 @@
   SortMappingsByIconUrl(&icon_mappings);
 
   ASSERT_EQ(3u, icon_mappings.size());
-  EXPECT_EQ(IconUrl1(), icon_mappings[0].icon_url);
-  EXPECT_EQ(IconUrl3(), icon_mappings[1].icon_url);
-  EXPECT_EQ(IconUrl2(), icon_mappings[2].icon_url);
+  EXPECT_EQ(kIconUrl1, icon_mappings[0].icon_url);
+  EXPECT_EQ(kIconUrl3, icon_mappings[1].icon_url);
+  EXPECT_EQ(kIconUrl2, icon_mappings[2].icon_url);
 }
 
 TEST_F(FaviconDatabaseTest, FindFirstPageURLForHost) {
@@ -871,11 +847,11 @@
       kPageUrlHttps,
       {favicon_base::IconType::kFavicon, favicon_base::IconType::kTouchIcon}));
 
-  AddAndMapFaviconSimple(&db, kPageUrlHttpsSamePrefix, IconUrl1(),
+  AddAndMapFaviconSimple(&db, kPageUrlHttpsSamePrefix, kIconUrl1,
                          favicon_base::IconType::kFavicon);
-  AddAndMapFaviconSimple(&db, kPageUrlHttpsSameSuffix, IconUrl2(),
+  AddAndMapFaviconSimple(&db, kPageUrlHttpsSameSuffix, kIconUrl2,
                          favicon_base::IconType::kFavicon);
-  AddAndMapFaviconSimple(&db, kPageUrlInPath, IconUrl3(),
+  AddAndMapFaviconSimple(&db, kPageUrlInPath, kIconUrl3,
                          favicon_base::IconType::kTouchIcon);
 
   // There should be no matching host for www.google.com when no matching host
@@ -884,7 +860,7 @@
                                           {favicon_base::IconType::kFavicon}));
 
   // Register the HTTP url in the database as a touch icon.
-  AddAndMapFaviconSimple(&db, kPageUrlHttp, IconUrl5(),
+  AddAndMapFaviconSimple(&db, kPageUrlHttp, kIconUrl5,
                          favicon_base::IconType::kTouchIcon);
 
   EXPECT_FALSE(db.FindFirstPageURLForHost(kPageUrlHttps,
@@ -905,7 +881,7 @@
       {favicon_base::IconType::kFavicon, favicon_base::IconType::kTouchIcon},
       &icon_mappings));
   ASSERT_EQ(1u, icon_mappings.size());
-  EXPECT_EQ(IconUrl5(), icon_mappings[0].icon_url);
+  EXPECT_EQ(kIconUrl5, icon_mappings[0].icon_url);
 }
 
 TEST_F(FaviconDatabaseTest, HasMappingFor) {
@@ -999,17 +975,17 @@
   ASSERT_TRUE(db);
   VerifyTablesAndColumns(&db->db_);
 
-  EXPECT_TRUE(CheckPageHasIcon(db.get(), PageUrl1(),
-                               favicon_base::IconType::kFavicon, IconUrl1(),
+  EXPECT_TRUE(CheckPageHasIcon(db.get(), kPageUrl1,
+                               favicon_base::IconType::kFavicon, kIconUrl1,
                                kLargeSize, sizeof(kBlob1), kBlob1));
-  EXPECT_TRUE(CheckPageHasIcon(db.get(), PageUrl2(),
-                               favicon_base::IconType::kFavicon, IconUrl2(),
+  EXPECT_TRUE(CheckPageHasIcon(db.get(), kPageUrl2,
+                               favicon_base::IconType::kFavicon, kIconUrl2,
                                kLargeSize, sizeof(kBlob2), kBlob2));
-  EXPECT_TRUE(CheckPageHasIcon(db.get(), PageUrl3(),
-                               favicon_base::IconType::kFavicon, IconUrl1(),
+  EXPECT_TRUE(CheckPageHasIcon(db.get(), kPageUrl3,
+                               favicon_base::IconType::kFavicon, kIconUrl1,
                                kLargeSize, sizeof(kBlob1), kBlob1));
-  EXPECT_TRUE(CheckPageHasIcon(db.get(), PageUrl3(),
-                               favicon_base::IconType::kTouchIcon, IconUrl3(),
+  EXPECT_TRUE(CheckPageHasIcon(db.get(), kPageUrl3,
+                               favicon_base::IconType::kTouchIcon, kIconUrl3,
                                kLargeSize, sizeof(kBlob2), kBlob2));
 }
 
@@ -1019,17 +995,17 @@
   ASSERT_TRUE(db);
   VerifyTablesAndColumns(&db->db_);
 
-  EXPECT_TRUE(CheckPageHasIcon(db.get(), PageUrl1(),
-                               favicon_base::IconType::kFavicon, IconUrl1(),
+  EXPECT_TRUE(CheckPageHasIcon(db.get(), kPageUrl1,
+                               favicon_base::IconType::kFavicon, kIconUrl1,
                                kLargeSize, sizeof(kBlob1), kBlob1));
-  EXPECT_TRUE(CheckPageHasIcon(db.get(), PageUrl2(),
-                               favicon_base::IconType::kFavicon, IconUrl2(),
+  EXPECT_TRUE(CheckPageHasIcon(db.get(), kPageUrl2,
+                               favicon_base::IconType::kFavicon, kIconUrl2,
                                kLargeSize, sizeof(kBlob2), kBlob2));
-  EXPECT_TRUE(CheckPageHasIcon(db.get(), PageUrl3(),
-                               favicon_base::IconType::kFavicon, IconUrl1(),
+  EXPECT_TRUE(CheckPageHasIcon(db.get(), kPageUrl3,
+                               favicon_base::IconType::kFavicon, kIconUrl1,
                                kLargeSize, sizeof(kBlob1), kBlob1));
-  EXPECT_TRUE(CheckPageHasIcon(db.get(), PageUrl3(),
-                               favicon_base::IconType::kTouchIcon, IconUrl3(),
+  EXPECT_TRUE(CheckPageHasIcon(db.get(), kPageUrl3,
+                               favicon_base::IconType::kTouchIcon, kIconUrl3,
                                kLargeSize, sizeof(kBlob2), kBlob2));
 }
 
@@ -1048,11 +1024,11 @@
     FaviconDatabase db;
     ASSERT_EQ(sql::INIT_OK, db.Init(file_name_));
 
-    EXPECT_TRUE(CheckPageHasIcon(&db, PageUrl1(),
-                                 favicon_base::IconType::kFavicon, IconUrl1(),
+    EXPECT_TRUE(CheckPageHasIcon(&db, kPageUrl1,
+                                 favicon_base::IconType::kFavicon, kIconUrl1,
                                  kLargeSize, sizeof(kBlob1), kBlob1));
-    EXPECT_TRUE(CheckPageHasIcon(&db, PageUrl2(),
-                                 favicon_base::IconType::kFavicon, IconUrl2(),
+    EXPECT_TRUE(CheckPageHasIcon(&db, kPageUrl2,
+                                 favicon_base::IconType::kFavicon, kIconUrl2,
                                  kLargeSize, sizeof(kBlob2), kBlob2));
   }
 
@@ -1083,11 +1059,11 @@
     FaviconDatabase db;
     ASSERT_EQ(sql::INIT_OK, db.Init(file_name_));
 
-    // Data for PageUrl2() was deleted, but the index entry remains,
+    // Data for kPageUrl2 was deleted, but the index entry remains,
     // this will throw SQLITE_CORRUPT.  The corruption handler will
     // recover the database and poison the handle, so the outer call
     // fails.
-    EXPECT_FALSE(db.GetIconMappingsForPageURL(PageUrl2(), nullptr));
+    EXPECT_FALSE(db.GetIconMappingsForPageURL(kPageUrl2, nullptr));
 
     ASSERT_TRUE(expecter.SawExpectedErrors());
   }
@@ -1108,11 +1084,11 @@
     ASSERT_EQ(sql::INIT_OK, db.Init(file_name_));
 
     // Now this fails because there is no mapping.
-    EXPECT_FALSE(db.GetIconMappingsForPageURL(PageUrl2(), nullptr));
+    EXPECT_FALSE(db.GetIconMappingsForPageURL(kPageUrl2, nullptr));
 
     // Other data was retained by recovery.
-    EXPECT_TRUE(CheckPageHasIcon(&db, PageUrl1(),
-                                 favicon_base::IconType::kFavicon, IconUrl1(),
+    EXPECT_TRUE(CheckPageHasIcon(&db, kPageUrl1,
+                                 favicon_base::IconType::kFavicon, kIconUrl1,
                                  kLargeSize, sizeof(kBlob1), kBlob1));
   }
 
@@ -1136,9 +1112,9 @@
     FaviconDatabase db;
     ASSERT_EQ(sql::INIT_OK, db.Init(file_name_));
 
-    EXPECT_FALSE(db.GetIconMappingsForPageURL(PageUrl2(), nullptr));
-    EXPECT_TRUE(CheckPageHasIcon(&db, PageUrl1(),
-                                 favicon_base::IconType::kFavicon, IconUrl1(),
+    EXPECT_FALSE(db.GetIconMappingsForPageURL(kPageUrl2, nullptr));
+    EXPECT_TRUE(CheckPageHasIcon(&db, kPageUrl1,
+                                 favicon_base::IconType::kFavicon, kIconUrl1,
                                  kLargeSize, sizeof(kBlob1), kBlob1));
 
     ASSERT_TRUE(expecter.SawExpectedErrors());
@@ -1178,11 +1154,11 @@
     FaviconDatabase db;
     ASSERT_EQ(sql::INIT_OK, db.Init(file_name_));
 
-    // Data for PageUrl2() was deleted, but the index entry remains,
+    // Data for kPageUrl2 was deleted, but the index entry remains,
     // this will throw SQLITE_CORRUPT.  The corruption handler will
     // recover the database and poison the handle, so the outer call
     // fails.
-    EXPECT_FALSE(db.GetIconMappingsForPageURL(PageUrl2(), nullptr));
+    EXPECT_FALSE(db.GetIconMappingsForPageURL(kPageUrl2, nullptr));
 
     ASSERT_TRUE(expecter.SawExpectedErrors());
   }
@@ -1203,11 +1179,11 @@
     ASSERT_EQ(sql::INIT_OK, db.Init(file_name_));
 
     // Now this fails because there is no mapping.
-    EXPECT_FALSE(db.GetIconMappingsForPageURL(PageUrl2(), nullptr));
+    EXPECT_FALSE(db.GetIconMappingsForPageURL(kPageUrl2, nullptr));
 
     // Other data was retained by recovery.
-    EXPECT_TRUE(CheckPageHasIcon(&db, PageUrl1(),
-                                 favicon_base::IconType::kFavicon, IconUrl1(),
+    EXPECT_TRUE(CheckPageHasIcon(&db, kPageUrl1,
+                                 favicon_base::IconType::kFavicon, kIconUrl1,
                                  kLargeSize, sizeof(kBlob1), kBlob1));
   }
 
@@ -1231,9 +1207,9 @@
     FaviconDatabase db;
     ASSERT_EQ(sql::INIT_OK, db.Init(file_name_));
 
-    EXPECT_FALSE(db.GetIconMappingsForPageURL(PageUrl2(), nullptr));
-    EXPECT_TRUE(CheckPageHasIcon(&db, PageUrl1(),
-                                 favicon_base::IconType::kFavicon, IconUrl1(),
+    EXPECT_FALSE(db.GetIconMappingsForPageURL(kPageUrl2, nullptr));
+    EXPECT_TRUE(CheckPageHasIcon(&db, kPageUrl1,
+                                 favicon_base::IconType::kFavicon, kIconUrl1,
                                  kLargeSize, sizeof(kBlob1), kBlob1));
 
     ASSERT_TRUE(expecter.SawExpectedErrors());
diff --git a/components/favicon/ios/OWNERS b/components/favicon/ios/OWNERS
index 378261e88..c5cd5cb 100644
--- a/components/favicon/ios/OWNERS
+++ b/components/favicon/ios/OWNERS
@@ -1 +1 @@
-sdefresne@chromium.org
\ No newline at end of file
+sdefresne@chromium.org
diff --git a/components/favicon_base/select_favicon_frames_unittest.cc b/components/favicon_base/select_favicon_frames_unittest.cc
index 955b499..44477a6 100644
--- a/components/favicon_base/select_favicon_frames_unittest.cc
+++ b/components/favicon_base/select_favicon_frames_unittest.cc
@@ -6,7 +6,7 @@
 
 #include <stddef.h>
 
-#include "base/stl_util.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"
diff --git a/components/feature_engagement/public/feature_list.cc b/components/feature_engagement/public/feature_list.cc
index abea505..308cd5b8 100644
--- a/components/feature_engagement/public/feature_list.cc
+++ b/components/feature_engagement/public/feature_list.cc
@@ -4,7 +4,7 @@
 
 #include "components/feature_engagement/public/feature_list.h"
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "components/feature_engagement/public/feature_constants.h"
 
 namespace feature_engagement {
diff --git a/components/filename_generation/filename_generation_unittest.cc b/components/filename_generation/filename_generation_unittest.cc
index e60afe1..43ba448 100644
--- a/components/filename_generation/filename_generation_unittest.cc
+++ b/components/filename_generation/filename_generation_unittest.cc
@@ -4,10 +4,10 @@
 
 #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"
-#include "base/stl_util.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "build/build_config.h"
diff --git a/components/gcm_driver/crypto/encryption_header_parsers_unittest.cc b/components/gcm_driver/crypto/encryption_header_parsers_unittest.cc
index 4eb6626..51da756 100644
--- a/components/gcm_driver/crypto/encryption_header_parsers_unittest.cc
+++ b/components/gcm_driver/crypto/encryption_header_parsers_unittest.cc
@@ -9,7 +9,7 @@
 
 #include <vector>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "base/strings/string_number_conversions.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
diff --git a/components/gcm_driver/crypto/gcm_message_cryptographer_unittest.cc b/components/gcm_driver/crypto/gcm_message_cryptographer_unittest.cc
index 94741cd..380e166e 100644
--- a/components/gcm_driver/crypto/gcm_message_cryptographer_unittest.cc
+++ b/components/gcm_driver/crypto/gcm_message_cryptographer_unittest.cc
@@ -8,8 +8,8 @@
 
 #include "base/base64url.h"
 #include "base/big_endian.h"
+#include "base/cxx17_backports.h"
 #include "base/logging.h"
-#include "base/stl_util.h"
 #include "base/strings/string_piece.h"
 #include "base/strings/string_util.h"
 #include "components/gcm_driver/crypto/message_payload_parser.h"
diff --git a/components/gcm_driver/crypto/message_payload_parser_unittest.cc b/components/gcm_driver/crypto/message_payload_parser_unittest.cc
index 9394071..f9d7203 100644
--- a/components/gcm_driver/crypto/message_payload_parser_unittest.cc
+++ b/components/gcm_driver/crypto/message_payload_parser_unittest.cc
@@ -5,7 +5,7 @@
 #include "components/gcm_driver/crypto/message_payload_parser.h"
 
 #include "base/big_endian.h"
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "components/gcm_driver/crypto/gcm_decryption_result.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
diff --git a/components/google/core/common/google_util.cc b/components/google/core/common/google_util.cc
index f0df49dd1..d9978b9d 100644
--- a/components/google/core/common/google_util.cc
+++ b/components/google/core/common/google_util.cc
@@ -11,9 +11,9 @@
 
 #include "base/command_line.h"
 #include "base/containers/flat_set.h"
+#include "base/cxx17_backports.h"
 #include "base/macros.h"
 #include "base/no_destructor.h"
-#include "base/stl_util.h"
 #include "base/strings/strcat.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_piece.h"
diff --git a/components/history/OWNERS b/components/history/OWNERS
index a5e53e0..90b3e80 100644
--- a/components/history/OWNERS
+++ b/components/history/OWNERS
@@ -1 +1 @@
-sky@chromium.org
\ No newline at end of file
+sky@chromium.org
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 59c6a028..77192d0 100644
--- a/components/history/content/browser/content_history_backend_db_unittest.cc
+++ b/components/history/content/browser/content_history_backend_db_unittest.cc
@@ -21,7 +21,7 @@
 
 #include <stddef.h>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "components/history/core/test/history_backend_db_base_test.h"
 
 namespace history {
diff --git a/components/history/core/browser/android/android_history_types.cc b/components/history/core/browser/android/android_history_types.cc
index 36d44f7..7d50aba 100644
--- a/components/history/core/browser/android/android_history_types.cc
+++ b/components/history/core/browser/android/android_history_types.cc
@@ -6,7 +6,7 @@
 
 #include <stddef.h>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "sql/statement.h"
 
 namespace history {
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 1bf2de9..0703011b 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,7 @@
 #include "components/history/core/browser/android/android_urls_sql_handler.h"
 
 #include "base/check.h"
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "components/history/core/browser/android/android_urls_database.h"
 
 namespace history {
diff --git a/components/history/core/browser/android/favicon_sql_handler.cc b/components/history/core/browser/android/favicon_sql_handler.cc
index a8a8a47f..9b7473dc 100644
--- a/components/history/core/browser/android/favicon_sql_handler.cc
+++ b/components/history/core/browser/android/favicon_sql_handler.cc
@@ -5,9 +5,9 @@
 #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 "base/stl_util.h"
 #include "components/favicon/core/favicon_database.h"
 
 using base::Time;
diff --git a/components/history/core/browser/android/urls_sql_handler.cc b/components/history/core/browser/android/urls_sql_handler.cc
index 292c13b..182da4c6 100644
--- a/components/history/core/browser/android/urls_sql_handler.cc
+++ b/components/history/core/browser/android/urls_sql_handler.cc
@@ -4,8 +4,8 @@
 
 #include "components/history/core/browser/android/urls_sql_handler.h"
 
+#include "base/cxx17_backports.h"
 #include "base/logging.h"
-#include "base/stl_util.h"
 #include "components/history/core/browser/url_database.h"
 
 using base::Time;
diff --git a/components/history/core/browser/android/visit_sql_handler.cc b/components/history/core/browser/android/visit_sql_handler.cc
index 7451eb8..aa592b0 100644
--- a/components/history/core/browser/android/visit_sql_handler.cc
+++ b/components/history/core/browser/android/visit_sql_handler.cc
@@ -7,7 +7,7 @@
 #include <stdint.h>
 
 #include "base/check.h"
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "components/history/core/browser/url_database.h"
 #include "components/history/core/browser/visit_database.h"
 
diff --git a/components/history/core/browser/expire_history_backend_unittest.cc b/components/history/core/browser/expire_history_backend_unittest.cc
index 8b302a9..79c553cf 100644
--- a/components/history/core/browser/expire_history_backend_unittest.cc
+++ b/components/history/core/browser/expire_history_backend_unittest.cc
@@ -13,12 +13,12 @@
 
 #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"
 #include "base/run_loop.h"
 #include "base/scoped_observation.h"
-#include "base/stl_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/task/current_thread.h"
 #include "base/test/task_environment.h"
diff --git a/components/history/core/browser/history_backend_unittest.cc b/components/history/core/browser/history_backend_unittest.cc
index cc847b7..dc0303a 100644
--- a/components/history/core/browser/history_backend_unittest.cc
+++ b/components/history/core/browser/history_backend_unittest.cc
@@ -16,6 +16,7 @@
 #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"
@@ -24,7 +25,6 @@
 #include "base/metrics/histogram_samples.h"
 #include "base/metrics/statistics_recorder.h"
 #include "base/run_loop.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/gtest_util.h"
diff --git a/components/history/core/browser/history_querying_unittest.cc b/components/history/core/browser/history_querying_unittest.cc
index 25f0063..8f0ff53d 100644
--- a/components/history/core/browser/history_querying_unittest.cc
+++ b/components/history/core/browser/history_querying_unittest.cc
@@ -8,11 +8,11 @@
 
 #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"
 #include "base/run_loop.h"
-#include "base/stl_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/task/cancelable_task_tracker.h"
 #include "base/test/bind.h"
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 3528676..3f41fb70 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,8 +9,8 @@
 
 #include "base/big_endian.h"
 #include "base/bind.h"
+#include "base/cxx17_backports.h"
 #include "base/files/scoped_temp_dir.h"
-#include "base/stl_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/task_environment.h"
 #include "base/threading/thread_task_runner_handle.h"
diff --git a/components/history/core/browser/top_sites_database_unittest.cc b/components/history/core/browser/top_sites_database_unittest.cc
index 240f10c..0718ddab 100644
--- a/components/history/core/browser/top_sites_database_unittest.cc
+++ b/components/history/core/browser/top_sites_database_unittest.cc
@@ -23,23 +23,6 @@
 
 namespace {
 
-// URL with url_rank 0 in golden files.
-// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
-// function.
-GURL Url0() {
-  return GURL("http://www.google.com/");
-}
-
-// URL with url_rank 1 in golden files.
-GURL Url1() {
-  return GURL("http://www.google.com/chrome/intl/en/welcome.html");
-}
-
-// URL with url_rank 2 in golden files.
-GURL Url2() {
-  return GURL("https://chrome.google.com/webstore?hl=en");
-}
-
 // Verify that the up-to-date database has the expected tables and
 // columns.  Functional tests only check whether the things which
 // should be there are, but do not check if extraneous items are
@@ -84,6 +67,11 @@
     file_name_ = temp_dir_.GetPath().AppendASCII("TestTopSites.db");
   }
 
+  // URLs by rank in golden files.
+  const GURL kUrl0{"http://www.google.com/"};
+  const GURL kUrl1{"http://www.google.com/chrome/intl/en/welcome.html"};
+  const GURL kUrl2{"https://chrome.google.com/webstore?hl=en"};
+
   base::ScopedTempDir temp_dir_;
   base::FilePath file_name_;
 };
@@ -122,7 +110,7 @@
   MostVisitedURLList urls;
   db.GetSites(&urls);
   ASSERT_EQ(3u, urls.size());
-  EXPECT_EQ(Url0(), urls[0].url);  // [0] because of url_rank.
+  EXPECT_EQ(kUrl0, urls[0].url);  // [0] because of url_rank.
 
   sql::Transaction transaction(db.db_.get());
   transaction.Begin();
@@ -145,7 +133,7 @@
   MostVisitedURLList urls;
   db.GetSites(&urls);
   ASSERT_EQ(3u, urls.size());
-  EXPECT_EQ(Url0(), urls[0].url);  // [0] because of url_rank.
+  EXPECT_EQ(kUrl0, urls[0].url);  // [0] because of url_rank.
 
   sql::Transaction transaction(db.db_.get());
   transaction.Begin();
@@ -250,7 +238,7 @@
     MostVisitedURLList urls;
     db.GetSites(&urls);
     ASSERT_EQ(3u, urls.size());
-    EXPECT_EQ(Url0(), urls[0].url);  // [0] because of url_rank.
+    EXPECT_EQ(kUrl0, urls[0].url);  // [0] because of url_rank.
 
     ASSERT_TRUE(expecter.SawExpectedErrors());
   }
@@ -290,11 +278,11 @@
       sql::test::ScopedErrorExpecter expecter;
       expecter.ExpectError(SQLITE_CORRUPT);
 
-      // Data for Url1() was deleted, but the index entry remains, this will
+      // Data for kUrl1 was deleted, but the index entry remains, this will
       // throw SQLITE_CORRUPT.  The corruption handler will recover the database
       // and poison the handle, so the outer call fails.
       EXPECT_EQ(TopSitesDatabase::kRankOfNonExistingURL,
-                db.GetURLRank(MostVisitedURL(Url1(), std::u16string())));
+                db.GetURLRank(MostVisitedURL(kUrl1, std::u16string())));
 
       ASSERT_TRUE(expecter.SawExpectedErrors());
     }
@@ -315,13 +303,13 @@
     VerifyTablesAndColumns(db.db_.get());
 
     EXPECT_EQ(TopSitesDatabase::kRankOfNonExistingURL,
-              db.GetURLRank(MostVisitedURL(Url1(), std::u16string())));
+              db.GetURLRank(MostVisitedURL(kUrl1, std::u16string())));
 
     MostVisitedURLList urls;
     db.GetSites(&urls);
     ASSERT_EQ(2u, urls.size());
-    EXPECT_EQ(Url0(), urls[0].url);  // [0] because of url_rank.
-    EXPECT_EQ(Url2(), urls[1].url);  // [1] because of url_rank.
+    EXPECT_EQ(kUrl0, urls[0].url);  // [0] because of url_rank.
+    EXPECT_EQ(kUrl2, urls[1].url);  // [1] because of url_rank.
   }
 }
 
@@ -353,7 +341,7 @@
     MostVisitedURLList urls;
     db.GetSites(&urls);
     ASSERT_EQ(3u, urls.size());
-    EXPECT_EQ(Url0(), urls[0].url);  // [0] because of url_rank.
+    EXPECT_EQ(kUrl0, urls[0].url);  // [0] because of url_rank.
 
     ASSERT_TRUE(expecter.SawExpectedErrors());
   }
@@ -393,11 +381,11 @@
       sql::test::ScopedErrorExpecter expecter;
       expecter.ExpectError(SQLITE_CORRUPT);
 
-      // Data for Url1() was deleted, but the index entry remains, this will
+      // Data for kUrl1 was deleted, but the index entry remains, this will
       // throw SQLITE_CORRUPT.  The corruption handler will recover the database
       // and poison the handle, so the outer call fails.
       EXPECT_EQ(TopSitesDatabase::kRankOfNonExistingURL,
-                db.GetURLRank(MostVisitedURL(Url1(), std::u16string())));
+                db.GetURLRank(MostVisitedURL(kUrl1, std::u16string())));
 
       ASSERT_TRUE(expecter.SawExpectedErrors());
     }
@@ -418,13 +406,13 @@
     VerifyTablesAndColumns(db.db_.get());
 
     EXPECT_EQ(TopSitesDatabase::kRankOfNonExistingURL,
-              db.GetURLRank(MostVisitedURL(Url1(), std::u16string())));
+              db.GetURLRank(MostVisitedURL(kUrl1, std::u16string())));
 
     MostVisitedURLList urls;
     db.GetSites(&urls);
     ASSERT_EQ(2u, urls.size());
-    EXPECT_EQ(Url0(), urls[0].url);  // [0] because of url_rank.
-    EXPECT_EQ(Url2(), urls[1].url);  // [1] because of url_rank.
+    EXPECT_EQ(kUrl0, urls[0].url);  // [0] because of url_rank.
+    EXPECT_EQ(kUrl2, urls[1].url);  // [1] because of url_rank.
   }
 }
 
@@ -435,8 +423,8 @@
   ASSERT_TRUE(db.Init(file_name_));
 
   TopSitesDelta delta;
-  // Delete Url0(). Now db has Url1() and Url2().
-  MostVisitedURL url_to_delete(Url0(), u"Google");
+  // Delete kUrl0. Now db has kUrl1 and kUrl2.
+  MostVisitedURL url_to_delete(kUrl0, u"Google");
   delta.deleted.push_back(url_to_delete);
 
   // Update db.
@@ -445,7 +433,7 @@
   // Read db and verify.
   MostVisitedURLList urls;
   db.GetSites(&urls);
-  VerifyURLsEqual(std::vector<GURL>({Url1(), Url2()}), urls);
+  VerifyURLsEqual(std::vector<GURL>({kUrl1, kUrl2}), urls);
 }
 
 TEST_F(TopSitesDatabaseTest, ApplyDelta_Add) {
@@ -456,7 +444,7 @@
 
   GURL mapsUrl = GURL("http://maps.google.com/");
 
-  // Add a new URL, rank = 0. Now db has mapsUrl, Url0(), Url1(), and Url2().
+  // Add a new URL, rank = 0. Now db has mapsUrl, kUrl0, kUrl1, and kUrl2.
   TopSitesDelta delta;
   MostVisitedURLWithRank url_to_add;
   url_to_add.url = MostVisitedURL(mapsUrl, u"Google Maps");
@@ -469,7 +457,7 @@
   // Read db and verify.
   MostVisitedURLList urls;
   db.GetSites(&urls);
-  VerifyURLsEqual(std::vector<GURL>({mapsUrl, Url0(), Url1(), Url2()}), urls);
+  VerifyURLsEqual(std::vector<GURL>({mapsUrl, kUrl0, kUrl1, kUrl2}), urls);
 }
 
 TEST_F(TopSitesDatabaseTest, ApplyDelta_Move) {
@@ -478,11 +466,11 @@
   TopSitesDatabase db;
   ASSERT_TRUE(db.Init(file_name_));
 
-  // Move Url1() by updating its rank to 2. Now db has Url0(), Url2(), and
-  // Url1().
+  // Move kUrl1 by updating its rank to 2. Now db has kUrl0, kUrl2, and
+  // kUrl1.
   TopSitesDelta delta;
   MostVisitedURLWithRank url_to_move;
-  url_to_move.url = MostVisitedURL(Url1(), u"Google Chrome");
+  url_to_move.url = MostVisitedURL(kUrl1, u"Google Chrome");
   url_to_move.rank = 2;
   delta.moved.push_back(url_to_move);
 
@@ -492,7 +480,7 @@
   // Read db and verify.
   MostVisitedURLList urls;
   db.GetSites(&urls);
-  VerifyURLsEqual(std::vector<GURL>({Url0(), Url2(), Url1()}), urls);
+  VerifyURLsEqual(std::vector<GURL>({kUrl0, kUrl2, kUrl1}), urls);
 }
 
 TEST_F(TopSitesDatabaseTest, ApplyDelta_All) {
@@ -504,20 +492,20 @@
   GURL mapsUrl = GURL("http://maps.google.com/");
 
   TopSitesDelta delta;
-  // Delete Url0(). Now db has Url1() and Url2().
-  MostVisitedURL url_to_delete(Url0(), u"Google");
+  // Delete kUrl0. Now db has kUrl1 and kUrl2.
+  MostVisitedURL url_to_delete(kUrl0, u"Google");
   delta.deleted.push_back(url_to_delete);
 
-  // Add a new URL, not forced, rank = 0. Now db has mapsUrl, Url1() and Url2().
+  // Add a new URL, not forced, rank = 0. Now db has mapsUrl, kUrl1 and kUrl2.
   MostVisitedURLWithRank url_to_add;
   url_to_add.url = MostVisitedURL(mapsUrl, u"Google Maps");
   url_to_add.rank = 0;
   delta.added.push_back(url_to_add);
 
-  // Move Url1() by updating its rank to 2. Now db has mapsUrl, Url2() and
-  // Url1().
+  // Move kUrl1 by updating its rank to 2. Now db has mapsUrl, kUrl2 and
+  // kUrl1.
   MostVisitedURLWithRank url_to_move;
-  url_to_move.url = MostVisitedURL(Url1(), u"Google Chrome");
+  url_to_move.url = MostVisitedURL(kUrl1, u"Google Chrome");
   url_to_move.rank = 2;
   delta.moved.push_back(url_to_move);
 
@@ -527,7 +515,7 @@
   // Read db and verify.
   MostVisitedURLList urls;
   db.GetSites(&urls);
-  VerifyURLsEqual(std::vector<GURL>({mapsUrl, Url2(), Url1()}), urls);
+  VerifyURLsEqual(std::vector<GURL>({mapsUrl, kUrl2, kUrl1}), urls);
 }
 
 }  // namespace history
diff --git a/components/history/core/browser/url_utils_unittest.cc b/components/history/core/browser/url_utils_unittest.cc
index ad19bd8..a824922 100644
--- a/components/history/core/browser/url_utils_unittest.cc
+++ b/components/history/core/browser/url_utils_unittest.cc
@@ -6,7 +6,7 @@
 
 #include <stddef.h>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "url/gurl.h"
 
diff --git a/components/history/core/browser/visit_tracker_unittest.cc b/components/history/core/browser/visit_tracker_unittest.cc
index 3c69e7cf..9353781 100644
--- a/components/history/core/browser/visit_tracker_unittest.cc
+++ b/components/history/core/browser/visit_tracker_unittest.cc
@@ -4,7 +4,7 @@
 
 #include "components/history/core/browser/visit_tracker.h"
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace history {
diff --git a/components/history_clusters/core/history_clusters_service_unittest.cc b/components/history_clusters/core/history_clusters_service_unittest.cc
index b69d6e7..fad27f26 100644
--- a/components/history_clusters/core/history_clusters_service_unittest.cc
+++ b/components/history_clusters/core/history_clusters_service_unittest.cc
@@ -8,10 +8,10 @@
 #include <string>
 
 #include "base/base64.h"
+#include "base/cxx17_backports.h"
 #include "base/files/scoped_temp_dir.h"
 #include "base/memory/scoped_refptr.h"
 #include "base/run_loop.h"
-#include "base/stl_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/task/cancelable_task_tracker.h"
 #include "base/test/bind.h"
diff --git a/components/image_fetcher/core/cached_image_fetcher_unittest.cc b/components/image_fetcher/core/cached_image_fetcher_unittest.cc
index d84c9df..1df2975 100644
--- a/components/image_fetcher/core/cached_image_fetcher_unittest.cc
+++ b/components/image_fetcher/core/cached_image_fetcher_unittest.cc
@@ -55,12 +55,6 @@
 const char kNetworkLoadHistogramName[] =
     "ImageFetcher.ImageLoadFromNetworkTime";
 
-// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
-// function.
-GURL ImageUrl() {
-  return GURL("http://gstatic.img.com/foo.jpg");
-}
-
 }  // namespace
 
 class CachedImageFetcherTest : public testing::Test {
@@ -95,12 +89,13 @@
         base::SequencedTaskRunnerHandle::Get());
 
     // Use an initial request to start the cache up.
-    image_cache_->SaveImage(ImageUrl().spec(), kImageData,
+    const std::string kImageUrl("http://gstatic.img.com/foo.jpg");
+    image_cache_->SaveImage(kImageUrl, kImageData,
                             /* needs_transcoding */ false,
                             /* expiration_interval */ absl::nullopt);
     RunUntilIdle();
     db_->InitStatusCallback(leveldb_proto::Enums::InitStatus::kOK);
-    image_cache_->DeleteImage(ImageUrl().spec());
+    image_cache_->DeleteImage(kImageUrl);
     RunUntilIdle();
 
     shared_factory_ =
@@ -169,7 +164,8 @@
 // that they both can use what's inside.
 TEST_F(CachedImageFetcherTest, FetchImageFromCache) {
   // Save the image in the database.
-  image_cache()->SaveImage(ImageUrl().spec(), kImageData,
+  const GURL kImageUrl("http://gstatic.img.com/foo.jpg");
+  image_cache()->SaveImage(kImageUrl.spec(), kImageData,
                            /* needs_transcoding */ false,
                            /* expiration_interval */ absl::nullopt);
   RunUntilIdle();
@@ -180,7 +176,7 @@
   EXPECT_CALL(data_callback, Run(kImageData, _));
   EXPECT_CALL(image_callback, Run(NonEmptyImage(), _));
   cached_image_fetcher()->FetchImageAndData(
-      ImageUrl(), data_callback.Get(), image_callback.Get(),
+      kImageUrl, data_callback.Get(), image_callback.Get(),
       ImageFetcherParams(TRAFFIC_ANNOTATION_FOR_TESTS, kUmaClientName));
   db()->LoadCallback(true);
   RunUntilIdle();
@@ -194,7 +190,8 @@
 
 TEST_F(CachedImageFetcherTest, FetchImageFromCacheNeedsTranscoding) {
   // Save the image in the database.
-  image_cache()->SaveImage(ImageUrl().spec(), kImageData,
+  const GURL kImageUrl("http://gstatic.img.com/foo.jpg");
+  image_cache()->SaveImage(kImageUrl.spec(), kImageData,
                            /* needs_transcoding */ true,
                            /* expiration_interval */ absl::nullopt);
   RunUntilIdle();
@@ -205,7 +202,7 @@
   EXPECT_CALL(data_callback, Run(kImageData, _));
   EXPECT_CALL(image_callback, Run(NonEmptyImage(), _));
   cached_image_fetcher()->FetchImageAndData(
-      ImageUrl(), data_callback.Get(), image_callback.Get(),
+      kImageUrl, data_callback.Get(), image_callback.Get(),
       ImageFetcherParams(TRAFFIC_ANNOTATION_FOR_TESTS, kUmaClientName));
   db()->LoadCallback(true);
   RunUntilIdle();
@@ -221,10 +218,11 @@
 TEST_F(CachedImageFetcherTest, FetchImageFromCacheReadOnly) {
   CreateCachedImageFetcher(/* read_only */ true);
   // Save the image in the database.
-  image_cache()->SaveImage(ImageUrl().spec(), kImageData,
+  const GURL kImageUrl("http://gstatic.img.com/foo.jpg");
+  image_cache()->SaveImage(kImageUrl.spec(), kImageData,
                            /* needs_transcoding */ false,
                            /* expiration_interval */ absl::nullopt);
-  test_url_loader_factory()->AddResponse(ImageUrl().spec(), kImageData);
+  test_url_loader_factory()->AddResponse(kImageUrl.spec(), kImageData);
   RunUntilIdle();
   {
     // Even if there's a decoding error, read_only cache shouldn't alter the
@@ -234,7 +232,7 @@
     base::MockCallback<ImageFetcherCallback> image_callback;
     EXPECT_CALL(image_callback, Run(EmptyImage(), _));
     cached_image_fetcher()->FetchImageAndData(
-        ImageUrl(), data_callback.Get(), image_callback.Get(),
+        kImageUrl, data_callback.Get(), image_callback.Get(),
         ImageFetcherParams(TRAFFIC_ANNOTATION_FOR_TESTS, kUmaClientName));
     db()->LoadCallback(true);
     RunUntilIdle();
@@ -254,7 +252,7 @@
     base::MockCallback<ImageFetcherCallback> image_callback;
     EXPECT_CALL(image_callback, Run(NonEmptyImage(), _));
     cached_image_fetcher()->FetchImageAndData(
-        ImageUrl(), data_callback.Get(), image_callback.Get(),
+        kImageUrl, data_callback.Get(), image_callback.Get(),
         ImageFetcherParams(TRAFFIC_ANNOTATION_FOR_TESTS, kUmaClientName));
     db()->LoadCallback(true);
     RunUntilIdle();
@@ -263,8 +261,9 @@
 
 TEST_F(CachedImageFetcherTest, FetchImagePopulatesCache) {
   // Expect the image to be fetched by URL.
+  const GURL kImageUrl("http://gstatic.img.com/foo.jpg");
   {
-    test_url_loader_factory()->AddResponse(ImageUrl().spec(), kImageData);
+    test_url_loader_factory()->AddResponse(kImageUrl.spec(), kImageData);
 
     base::MockCallback<ImageDataFetcherCallback> data_callback;
     base::MockCallback<ImageFetcherCallback> image_callback;
@@ -272,7 +271,7 @@
     EXPECT_CALL(data_callback, Run(NonEmptyString(), _));
     EXPECT_CALL(image_callback, Run(NonEmptyImage(), _));
     cached_image_fetcher()->FetchImageAndData(
-        ImageUrl(), data_callback.Get(), image_callback.Get(),
+        kImageUrl, data_callback.Get(), image_callback.Get(),
         ImageFetcherParams(TRAFFIC_ANNOTATION_FOR_TESTS, kUmaClientName));
     db()->LoadCallback(true);
     RunUntilIdle();
@@ -287,7 +286,7 @@
   {
     EXPECT_CALL(*this, OnImageLoaded(false, NonEmptyString()));
     image_cache()->LoadImage(
-        /* read_only */ false, ImageUrl().spec(),
+        /* read_only */ false, kImageUrl.spec(),
         base::BindOnce(&CachedImageFetcherTest::OnImageLoaded,
                        base::Unretained(this)));
     db()->LoadCallback(true);
@@ -303,7 +302,7 @@
     EXPECT_CALL(data_callback, Run(NonEmptyString(), _));
     EXPECT_CALL(image_callback, Run(NonEmptyImage(), _));
     cached_image_fetcher()->FetchImageAndData(
-        ImageUrl(), data_callback.Get(), image_callback.Get(),
+        kImageUrl, data_callback.Get(), image_callback.Get(),
         ImageFetcherParams(TRAFFIC_ANNOTATION_FOR_TESTS, kUmaClientName));
     db()->LoadCallback(true);
     RunUntilIdle();
@@ -313,8 +312,9 @@
 TEST_F(CachedImageFetcherTest, FetchImagePopulatesCacheReadOnly) {
   CreateCachedImageFetcher(/* read_only */ true);
   // Expect the image to be fetched by URL.
+  const GURL kImageUrl("http://gstatic.img.com/foo.jpg");
   {
-    test_url_loader_factory()->AddResponse(ImageUrl().spec(), kImageData);
+    test_url_loader_factory()->AddResponse(kImageUrl.spec(), kImageData);
 
     base::MockCallback<ImageDataFetcherCallback> data_callback;
     base::MockCallback<ImageFetcherCallback> image_callback;
@@ -322,7 +322,7 @@
     EXPECT_CALL(data_callback, Run(NonEmptyString(), _));
     EXPECT_CALL(image_callback, Run(NonEmptyImage(), _));
     cached_image_fetcher()->FetchImageAndData(
-        ImageUrl(), data_callback.Get(), image_callback.Get(),
+        kImageUrl, data_callback.Get(), image_callback.Get(),
         ImageFetcherParams(TRAFFIC_ANNOTATION_FOR_TESTS, kUmaClientName));
     db()->LoadCallback(true);
     RunUntilIdle();
@@ -337,7 +337,7 @@
   {
     EXPECT_CALL(*this, OnImageLoaded(false, std::string()));
     image_cache()->LoadImage(
-        /* read_only */ false, ImageUrl().spec(),
+        /* read_only */ false, kImageUrl.spec(),
         base::BindOnce(&CachedImageFetcherTest::OnImageLoaded,
                        base::Unretained(this)));
     db()->LoadCallback(true);
@@ -346,8 +346,9 @@
 }
 
 TEST_F(CachedImageFetcherTest, FetchImageWithoutTranscodingDoesNotDecode) {
+  const GURL kImageUrl("http://gstatic.img.com/foo.jpg");
   {
-    test_url_loader_factory()->AddResponse(ImageUrl().spec(), kImageData);
+    test_url_loader_factory()->AddResponse(kImageUrl.spec(), kImageData);
     image_decoder()->SetDecodingValid(false);
 
     base::MockCallback<ImageDataFetcherCallback> data_callback;
@@ -355,7 +356,7 @@
     EXPECT_CALL(data_callback, Run(kImageData, _));
     ImageFetcherParams params(TRAFFIC_ANNOTATION_FOR_TESTS, kUmaClientName);
     params.set_skip_transcoding_for_testing(true);
-    cached_image_fetcher()->FetchImageAndData(ImageUrl(), data_callback.Get(),
+    cached_image_fetcher()->FetchImageAndData(kImageUrl, data_callback.Get(),
                                               ImageFetcherCallback(), params);
     db()->LoadCallback(true);
     RunUntilIdle();
@@ -365,7 +366,7 @@
     base::MockCallback<ImageDataFetcherCallback> data_callback;
     EXPECT_CALL(data_callback, Run(kImageData, _));
     cached_image_fetcher()->FetchImageAndData(
-        ImageUrl(), data_callback.Get(), ImageFetcherCallback(),
+        kImageUrl, data_callback.Get(), ImageFetcherCallback(),
         ImageFetcherParams(TRAFFIC_ANNOTATION_FOR_TESTS, kUmaClientName));
     db()->LoadCallback(true);
     RunUntilIdle();
@@ -374,11 +375,12 @@
 
 TEST_F(CachedImageFetcherTest, FetchImageWithSkipDiskCache) {
   // Save the image in the database.
-  image_cache()->SaveImage(ImageUrl().spec(), kImageDataOther,
+  const GURL kImageUrl("http://gstatic.img.com/foo.jpg");
+  image_cache()->SaveImage(kImageUrl.spec(), kImageDataOther,
                            /* needs_transcoding */ false,
                            /* expiration_interval */ absl::nullopt);
   RunUntilIdle();
-  test_url_loader_factory()->AddResponse(ImageUrl().spec(), kImageData);
+  test_url_loader_factory()->AddResponse(kImageUrl.spec(), kImageData);
 
   base::MockCallback<ImageDataFetcherCallback> data_callback;
   base::MockCallback<ImageFetcherCallback> image_callback;
@@ -388,7 +390,7 @@
 
   EXPECT_CALL(data_callback, Run(kImageData, _));
   EXPECT_CALL(image_callback, Run(NonEmptyImage(), _));
-  cached_image_fetcher()->FetchImageAndData(ImageUrl(), data_callback.Get(),
+  cached_image_fetcher()->FetchImageAndData(kImageUrl, data_callback.Get(),
                                             image_callback.Get(), params);
 
   RunUntilIdle();
diff --git a/components/image_fetcher/core/reduced_mode_image_fetcher_unittest.cc b/components/image_fetcher/core/reduced_mode_image_fetcher_unittest.cc
index 40de583..5f6be467 100644
--- a/components/image_fetcher/core/reduced_mode_image_fetcher_unittest.cc
+++ b/components/image_fetcher/core/reduced_mode_image_fetcher_unittest.cc
@@ -49,12 +49,6 @@
 
 const char kImageFetcherEventHistogramName[] = "ImageFetcher.Events";
 
-// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
-// function.
-GURL ImageUrl() {
-  return GURL("http://gstatic.img.com/foo.jpg");
-}
-
 }  // namespace
 
 class ReducedModeImageFetcherTest : public testing::Test {
@@ -89,12 +83,12 @@
         base::SequencedTaskRunnerHandle::Get());
 
     // Use an initial request to start the cache up.
-    image_cache_->SaveImage(ImageUrl().spec(), kImageData,
+    image_cache_->SaveImage(kImageUrl.spec(), kImageData,
                             /* needs_transcoding */ false,
                             /* expiration_interval */ absl::nullopt);
     RunUntilIdle();
     db_->InitStatusCallback(leveldb_proto::Enums::InitStatus::kOK);
-    image_cache_->DeleteImage(ImageUrl().spec());
+    image_cache_->DeleteImage(kImageUrl.spec());
     RunUntilIdle();
 
     shared_factory_ =
@@ -120,7 +114,7 @@
 
     EXPECT_CALL(data_callback, Run(kImageData, _));
     reduced_mode_image_fetcher()->FetchImageAndData(
-        ImageUrl(), data_callback.Get(), ImageFetcherCallback(),
+        kImageUrl, data_callback.Get(), ImageFetcherCallback(),
         ImageFetcherParams(TRAFFIC_ANNOTATION_FOR_TESTS, kUmaClientName));
     db()->LoadCallback(true);
     RunUntilIdle();
@@ -143,6 +137,9 @@
 
   MOCK_METHOD2(OnImageLoaded, void(bool, std::string));
 
+ protected:
+  GURL kImageUrl{"http://gstatic.img.com/foo.jpg"};
+
  private:
   std::unique_ptr<ImageFetcher> image_fetcher_;
   std::unique_ptr<ImageFetcher> cached_image_fetcher_;
@@ -165,7 +162,7 @@
 
 TEST_F(ReducedModeImageFetcherTest, FetchNeedsTranscodingImageFromCache) {
   // Save the image that needs transcoding in the database.
-  image_cache()->SaveImage(ImageUrl().spec(), kImageData,
+  image_cache()->SaveImage(kImageUrl.spec(), kImageData,
                            /* needs_transcoding */ true,
                            /* expiration_interval */ absl::nullopt);
   VerifyCacheHit();
@@ -173,7 +170,7 @@
 
 TEST_F(ReducedModeImageFetcherTest, FetchImageFromCache) {
   // Save the image that doesn't need transcoding in the database.
-  image_cache()->SaveImage(ImageUrl().spec(), kImageData,
+  image_cache()->SaveImage(kImageUrl.spec(), kImageData,
                            /* needs_transcoding */ false,
                            /* expiration_interval */ absl::nullopt);
   VerifyCacheHit();
diff --git a/components/language/core/browser/heuristic_language_model_unittest.cc b/components/language/core/browser/heuristic_language_model_unittest.cc
index 073ea950..5c8d759f 100644
--- a/components/language/core/browser/heuristic_language_model_unittest.cc
+++ b/components/language/core/browser/heuristic_language_model_unittest.cc
@@ -6,8 +6,8 @@
 
 #include <cmath>
 
+#include "base/cxx17_backports.h"
 #include "base/json/json_reader.h"
-#include "base/stl_util.h"
 #include "base/values.h"
 #include "components/language/core/browser/url_language_histogram.h"
 #include "components/prefs/pref_registry_simple.h"
diff --git a/components/lens/OWNERS b/components/lens/OWNERS
index c2bd050..43032675 100644
--- a/components/lens/OWNERS
+++ b/components/lens/OWNERS
@@ -1,3 +1,3 @@
 schechter@google.com
 benwgold@google.com
-timothyallen@google.com
\ No newline at end of file
+timothyallen@google.com
diff --git a/components/metrics/field_trials_provider_unittest.cc b/components/metrics/field_trials_provider_unittest.cc
index 593568ce..9182c50 100644
--- a/components/metrics/field_trials_provider_unittest.cc
+++ b/components/metrics/field_trials_provider_unittest.cc
@@ -4,7 +4,7 @@
 
 #include "components/metrics/field_trials_provider.h"
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "components/variations/active_field_trials.h"
 #include "components/variations/synthetic_trial_registry.h"
 #include "testing/gtest/include/gtest/gtest.h"
diff --git a/components/metrics/file_metrics_provider.cc b/components/metrics/file_metrics_provider.cc
index 9c3a068..756ecc1e 100644
--- a/components/metrics/file_metrics_provider.cc
+++ b/components/metrics/file_metrics_provider.cc
@@ -9,6 +9,7 @@
 #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"
@@ -20,7 +21,6 @@
 #include "base/metrics/histogram_macros.h"
 #include "base/metrics/persistent_histogram_allocator.h"
 #include "base/metrics/persistent_memory_allocator.h"
-#include "base/stl_util.h"
 #include "base/strings/string_piece.h"
 #include "base/task/post_task.h"
 #include "base/task/task_traits.h"
diff --git a/components/metrics/file_metrics_provider_unittest.cc b/components/metrics/file_metrics_provider_unittest.cc
index b7632301..a2b230a4 100644
--- a/components/metrics/file_metrics_provider_unittest.cc
+++ b/components/metrics/file_metrics_provider_unittest.cc
@@ -8,6 +8,7 @@
 
 #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"
@@ -19,7 +20,6 @@
 #include "base/metrics/persistent_memory_allocator.h"
 #include "base/metrics/sparse_histogram.h"
 #include "base/metrics/statistics_recorder.h"
-#include "base/stl_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/synchronization/waitable_event.h"
 #include "base/test/test_simple_task_runner.h"
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 778bf880..2c782a6b 100644
--- a/components/metrics/system_session_analyzer/system_session_analyzer_win.cc
+++ b/components/metrics/system_session_analyzer/system_session_analyzer_win.cc
@@ -4,8 +4,8 @@
 
 #include "components/metrics/system_session_analyzer/system_session_analyzer_win.h"
 
+#include "base/cxx17_backports.h"
 #include "base/logging.h"
-#include "base/stl_util.h"
 #include "base/time/time.h"
 
 namespace metrics {
diff --git a/components/mirroring/browser/single_client_video_capture_host_unittest.cc b/components/mirroring/browser/single_client_video_capture_host_unittest.cc
index 3584bdfd..7ad8247 100644
--- a/components/mirroring/browser/single_client_video_capture_host_unittest.cc
+++ b/components/mirroring/browser/single_client_video_capture_host_unittest.cc
@@ -22,6 +22,8 @@
 
 namespace {
 
+constexpr bool kNotPremapped = false;
+
 class MockVideoCaptureDevice final
     : public content::LaunchedVideoCaptureDevice {
  public:
@@ -164,8 +166,8 @@
 media::mojom::VideoFrameInfoPtr GetVideoFrameInfo() {
   return media::mojom::VideoFrameInfo::New(
       base::TimeDelta(), media::VideoFrameMetadata(), media::PIXEL_FORMAT_I420,
-      gfx::Size(320, 180), gfx::Rect(320, 180), gfx::ColorSpace::CreateREC709(),
-      nullptr);
+      gfx::Size(320, 180), gfx::Rect(320, 180), kNotPremapped,
+      gfx::ColorSpace::CreateREC709(), nullptr);
 }
 
 }  // namespace
diff --git a/components/mirroring/service/fake_video_capture_host.cc b/components/mirroring/service/fake_video_capture_host.cc
index 20d2f250..a2855bc 100644
--- a/components/mirroring/service/fake_video_capture_host.cc
+++ b/components/mirroring/service/fake_video_capture_host.cc
@@ -10,6 +10,13 @@
 
 namespace mirroring {
 
+namespace {
+
+// Video buffer parameters.
+constexpr bool kNotPremapped = false;
+
+}  // namespace
+
 FakeVideoCaptureHost::FakeVideoCaptureHost(
     mojo::PendingReceiver<media::mojom::VideoCaptureHost> receiver)
     : receiver_(this, std::move(receiver)) {}
@@ -50,7 +57,8 @@
   media::mojom::ReadyBufferPtr buffer = media::mojom::ReadyBuffer::New(
       0, media::mojom::VideoFrameInfo::New(
              base::TimeDelta(), metadata, media::PIXEL_FORMAT_I420, size,
-             gfx::Rect(size), gfx::ColorSpace::CreateREC709(), nullptr));
+             gfx::Rect(size), kNotPremapped, gfx::ColorSpace::CreateREC709(),
+             nullptr));
   observer_->OnBufferReady(std::move(buffer), {});
 }
 
diff --git a/components/mirroring/service/video_capture_client_unittest.cc b/components/mirroring/service/video_capture_client_unittest.cc
index d9d4e65..feaebc40 100644
--- a/components/mirroring/service/video_capture_client_unittest.cc
+++ b/components/mirroring/service/video_capture_client_unittest.cc
@@ -26,13 +26,15 @@
 
 const media::VideoCaptureFeedback kFeedback(0.6, 30.0, 1000);
 
+constexpr bool kNotPremapped = false;
+
 media::mojom::VideoFrameInfoPtr GetVideoFrameInfo(const gfx::Size& size) {
   media::VideoFrameMetadata metadata;
   metadata.frame_rate = 30;
   metadata.reference_time = base::TimeTicks();
   return media::mojom::VideoFrameInfo::New(
       base::TimeDelta(), metadata, media::PIXEL_FORMAT_I420, size,
-      gfx::Rect(size), gfx::ColorSpace::CreateREC709(), nullptr);
+      gfx::Rect(size), kNotPremapped, gfx::ColorSpace::CreateREC709(), nullptr);
 }
 
 }  // namespace
diff --git a/components/nacl/browser/nacl_process_host.cc b/components/nacl/browser/nacl_process_host.cc
index fd943127..58150c3 100644
--- a/components/nacl/browser/nacl_process_host.cc
+++ b/components/nacl/browser/nacl_process_host.cc
@@ -14,6 +14,7 @@
 #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"
@@ -23,7 +24,6 @@
 #include "base/process/process_iterator.h"
 #include "base/rand_util.h"
 #include "base/single_thread_task_runner.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_split.h"
 #include "base/strings/string_util.h"
diff --git a/components/nacl/common/nacl_cmd_line.cc b/components/nacl/common/nacl_cmd_line.cc
index bd9d371..09cad50 100644
--- a/components/nacl/common/nacl_cmd_line.cc
+++ b/components/nacl/common/nacl_cmd_line.cc
@@ -4,7 +4,7 @@
 
 #include "base/base_switches.h"
 #include "base/command_line.h"
-#include "base/stl_util.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"
diff --git a/components/nacl/renderer/json_manifest.cc b/components/nacl/renderer/json_manifest.cc
index 5a6a5dc..2faefa9 100644
--- a/components/nacl/renderer/json_manifest.cc
+++ b/components/nacl/renderer/json_manifest.cc
@@ -9,9 +9,9 @@
 
 #include <set>
 
+#include "base/cxx17_backports.h"
 #include "base/json/json_reader.h"
 #include "base/logging.h"
-#include "base/stl_util.h"
 #include "components/nacl/common/nacl_types.h"
 #include "components/nacl/renderer/nexe_load_manager.h"
 #include "url/gurl.h"
diff --git a/components/nacl/zygote/nacl_fork_delegate_linux.cc b/components/nacl/zygote/nacl_fork_delegate_linux.cc
index 6768fe79..34c639e 100644
--- a/components/nacl/zygote/nacl_fork_delegate_linux.cc
+++ b/components/nacl/zygote/nacl_fork_delegate_linux.cc
@@ -15,6 +15,7 @@
 
 #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"
@@ -25,7 +26,6 @@
 #include "base/posix/unix_domain_socket.h"
 #include "base/process/kill.h"
 #include "base/process/launch.h"
-#include "base/stl_util.h"
 #include "base/strings/string_split.h"
 #include "build/build_config.h"
 #include "components/nacl/common/nacl_nonsfi_util.h"
diff --git a/components/navigation_metrics/navigation_metrics.cc b/components/navigation_metrics/navigation_metrics.cc
index f814e71e..52c05c4 100644
--- a/components/navigation_metrics/navigation_metrics.cc
+++ b/components/navigation_metrics/navigation_metrics.cc
@@ -4,10 +4,10 @@
 
 #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"
-#include "base/stl_util.h"
 #include "components/dom_distiller/core/url_constants.h"
 #include "components/profile_metrics/browser_profile_type.h"
 #include "components/url_formatter/url_formatter.h"
diff --git a/components/network_session_configurator/common/network_switches.cc b/components/network_session_configurator/common/network_switches.cc
index 6d9a3df..429ee7a 100644
--- a/components/network_session_configurator/common/network_switches.cc
+++ b/components/network_session_configurator/common/network_switches.cc
@@ -5,7 +5,7 @@
 #include "components/network_session_configurator/common/network_switches.h"
 
 #include "base/command_line.h"
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 
 namespace switches {
 
diff --git a/components/network_time/network_time_tracker_unittest.cc b/components/network_time/network_time_tracker_unittest.cc
index e46af1d1..b0e484f 100644
--- a/components/network_time/network_time_tracker_unittest.cc
+++ b/components/network_time/network_time_tracker_unittest.cc
@@ -10,8 +10,8 @@
 
 #include "base/bind.h"
 #include "base/compiler_specific.h"
+#include "base/cxx17_backports.h"
 #include "base/run_loop.h"
-#include "base/stl_util.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/simple_test_clock.h"
 #include "base/test/simple_test_tick_clock.h"
diff --git a/components/no_state_prefetch/common/prerender_final_status.cc b/components/no_state_prefetch/common/prerender_final_status.cc
index be22d0f..8449196 100644
--- a/components/no_state_prefetch/common/prerender_final_status.cc
+++ b/components/no_state_prefetch/common/prerender_final_status.cc
@@ -5,7 +5,7 @@
 #include "components/no_state_prefetch/common/prerender_final_status.h"
 
 #include "base/check_op.h"
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 
 namespace prerender {
 
diff --git a/components/no_state_prefetch/common/prerender_origin.cc b/components/no_state_prefetch/common/prerender_origin.cc
index eb43f8d4..60ede91 100644
--- a/components/no_state_prefetch/common/prerender_origin.cc
+++ b/components/no_state_prefetch/common/prerender_origin.cc
@@ -4,8 +4,8 @@
 
 #include "components/no_state_prefetch/common/prerender_origin.h"
 
+#include "base/cxx17_backports.h"
 #include "base/metrics/histogram_macros.h"
-#include "base/stl_util.h"
 
 namespace prerender {
 
diff --git a/components/ntp_snippets/features.cc b/components/ntp_snippets/features.cc
index 226d09dc..c5ea510 100644
--- a/components/ntp_snippets/features.cc
+++ b/components/ntp_snippets/features.cc
@@ -4,9 +4,9 @@
 
 #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/stl_util.h"
 #include "base/time/clock.h"
 #include "build/build_config.h"
 #include "components/ntp_snippets/category_rankers/click_based_category_ranker.h"
diff --git a/components/ntp_snippets/remote/remote_suggestions_scheduler_impl.cc b/components/ntp_snippets/remote/remote_suggestions_scheduler_impl.cc
index bb2f5d6..9ebf8cd1 100644
--- a/components/ntp_snippets/remote/remote_suggestions_scheduler_impl.cc
+++ b/components/ntp_snippets/remote/remote_suggestions_scheduler_impl.cc
@@ -10,11 +10,11 @@
 #include <utility>
 
 #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"
 #include "base/metrics/histogram_macros.h"
-#include "base/stl_util.h"
 #include "base/strings/string_split.h"
 #include "base/time/clock.h"
 #include "components/ntp_snippets/features.h"
diff --git a/components/ntp_snippets/user_classifier.cc b/components/ntp_snippets/user_classifier.cc
index 62cfd21..3d48b3c 100644
--- a/components/ntp_snippets/user_classifier.cc
+++ b/components/ntp_snippets/user_classifier.cc
@@ -8,10 +8,10 @@
 #include <cfloat>
 #include <string>
 
+#include "base/cxx17_backports.h"
 #include "base/logging.h"
 #include "base/metrics/histogram_macros.h"
 #include "base/numerics/ranges.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/time/clock.h"
 #include "components/ntp_snippets/features.h"
diff --git a/components/ntp_tiles/metrics.cc b/components/ntp_tiles/metrics.cc
index 32cf11a..e145379 100644
--- a/components/ntp_tiles/metrics.cc
+++ b/components/ntp_tiles/metrics.cc
@@ -29,7 +29,6 @@
 const char kHistogramHomepageName[] = "homepage";
 const char kHistogramCustomLinksName[] = "custom_links";
 const char kHistogramExploreName[] = "explore";
-const char kHistogramRepeatableQueryName[] = "repeatable_query";
 
 // Suffixes for the various icon types.
 const char kTileTypeSuffixIconColor[] = "IconsColor";
@@ -60,8 +59,6 @@
       return kHistogramCustomLinksName;
     case TileSource::EXPLORE:
       return kHistogramExploreName;
-    case TileSource::REPEATABLE_QUERIES_SERVICE:
-      return kHistogramRepeatableQueryName;
   }
   NOTREACHED();
   return std::string();
diff --git a/components/ntp_tiles/most_visited_sites.cc b/components/ntp_tiles/most_visited_sites.cc
index faea918..ba0539d 100644
--- a/components/ntp_tiles/most_visited_sites.cc
+++ b/components/ntp_tiles/most_visited_sites.cc
@@ -120,7 +120,6 @@
 MostVisitedSites::MostVisitedSites(
     PrefService* prefs,
     scoped_refptr<history::TopSites> top_sites,
-    RepeatableQueriesService* repeatable_queries,
     SuggestionsService* suggestions,
     std::unique_ptr<PopularSites> popular_sites,
     std::unique_ptr<CustomLinksManager> custom_links,
@@ -128,7 +127,6 @@
     std::unique_ptr<MostVisitedSitesSupervisor> supervisor)
     : prefs_(prefs),
       top_sites_(top_sites),
-      repeatable_queries_(repeatable_queries),
       suggestions_service_(suggestions),
       popular_sites_(std::move(popular_sites)),
       custom_links_(std::move(custom_links)),
@@ -181,8 +179,6 @@
       return custom_links_ != nullptr;
     case TileSource::EXPLORE:
       return explore_sites_client_ != nullptr;
-    case TileSource::REPEATABLE_QUERIES_SERVICE:
-      return false;
   }
   NOTREACHED();
   return false;
@@ -220,10 +216,6 @@
     top_sites_observation_.Observe(top_sites_.get());
   }
 
-  if (repeatable_queries_) {
-    repeatable_queries_observation_.Observe(repeatable_queries_);
-  }
-
   if (custom_links_) {
     custom_links_subscription_ =
         custom_links_->RegisterCallbackForOnChanged(base::BindRepeating(
@@ -250,10 +242,6 @@
     top_sites_->SyncWithHistory();
   }
 
-  if (repeatable_queries_) {
-    repeatable_queries_->Refresh();
-  }
-
   suggestions_service_->FetchSuggestionsData();
 }
 
@@ -403,12 +391,6 @@
         base::UserMetricsAction("Suggestions.Site.RemovalUndone"));
   }
 
-  if (repeatable_queries_) {
-    // Restoring repeatable queries is not supported as deletion is permanent.
-    if (add_url)
-      repeatable_queries_->DeleteQueryWithDestinationURL(url);
-  }
-
   if (top_sites_) {
     if (add_url)
       top_sites_->AddBlockedUrl(url);
@@ -501,37 +483,7 @@
   }
 
   mv_source_ = TileSource::TOP_SITES;
-  InitiateNotificationForNewTiles(InsertRepeatableQueryTiles(std::move(tiles)));
-}
-
-NTPTilesVector MostVisitedSites::InsertRepeatableQueryTiles(
-    NTPTilesVector tiles) {
-  if (!repeatable_queries_)
-    return tiles;
-
-  const std::vector<RepeatableQuery>& repeatable_queries =
-      repeatable_queries_->repeatable_queries();
-
-  // Make room for the repeatable query tiles, if necessary.
-  int num_overflow_tiles =
-      tiles.size() + repeatable_queries.size() - GetMaxNumSites();
-  if (num_overflow_tiles > 0)
-    tiles.resize(tiles.size() - num_overflow_tiles);
-
-  auto insert_position = (ntp_features::GetRepeatableQueriesInsertPosition() ==
-                          ntp_features::RepeatableQueriesInsertPosition::kStart)
-                             ? tiles.begin()
-                             : tiles.end();
-  for (const auto& repeatable_query : repeatable_queries) {
-    NTPTile tile;
-    tile.title = repeatable_query.query;
-    tile.url = repeatable_query.destination_url;
-    tile.source = TileSource::REPEATABLE_QUERIES_SERVICE;
-
-    auto inserted_position = tiles.insert(insert_position, tile);
-    insert_position = inserted_position + 1;
-  }
-  return tiles;
+  InitiateNotificationForNewTiles(std::move(tiles));
 }
 
 void MostVisitedSites::OnSuggestionsProfileChanged(
@@ -938,21 +890,6 @@
   }
 }
 
-void MostVisitedSites::OnRepeatableQueriesUpdated() {
-  // Repeatable Queries are shown along with the most visited URLs only.
-  // Simulate a change to the most visited urls. This will result in
-  // MostVisitedSites::OnMostVisitedURLsAvailable to be called synchronously or
-  // asynchronously depending on whether the most visited URLs are cached.
-  if (top_sites_) {
-    TopSitesChanged(top_sites_.get(), ChangeReason::MOST_VISITED);
-  }
-}
-
-void MostVisitedSites::OnRepeatableQueriesServiceShuttingDown() {
-  DCHECK(repeatable_queries_observation_.IsObserving());
-  repeatable_queries_observation_.Reset();
-}
-
 bool MostVisitedSites::ShouldAddHomeTile() const {
   return GetMaxNumSites() > 0u &&
          homepage_client_ &&  // No platform-specific implementation - no tile.
diff --git a/components/ntp_tiles/most_visited_sites.h b/components/ntp_tiles/most_visited_sites.h
index 76e2b5c..6720ee68 100644
--- a/components/ntp_tiles/most_visited_sites.h
+++ b/components/ntp_tiles/most_visited_sites.h
@@ -29,8 +29,6 @@
 #include "components/ntp_tiles/popular_sites.h"
 #include "components/ntp_tiles/section_type.h"
 #include "components/ntp_tiles/tile_source.h"
-#include "components/search/repeatable_queries/repeatable_queries_service.h"
-#include "components/search/repeatable_queries/repeatable_queries_service_observer.h"
 #include "components/suggestions/proto/suggestions.pb.h"
 #include "components/suggestions/suggestions_service.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
@@ -84,8 +82,7 @@
 
 // Tracks the list of most visited sites.
 class MostVisitedSites : public history::TopSitesObserver,
-                         public MostVisitedSitesSupervisor::Observer,
-                         public RepeatableQueriesServiceObserver {
+                         public MostVisitedSitesSupervisor::Observer {
  public:
   // The observer to be notified when the list of most visited sites changes.
   class Observer {
@@ -126,7 +123,6 @@
   //  optional and if null, the associated features will be disabled.
   MostVisitedSites(PrefService* prefs,
                    scoped_refptr<history::TopSites> top_sites,
-                   RepeatableQueriesService* repeatable_queries,
                    suggestions::SuggestionsService* suggestions,
                    std::unique_ptr<PopularSites> popular_sites,
                    std::unique_ptr<CustomLinksManager> custom_links,
@@ -266,8 +262,6 @@
   void OnMostVisitedURLsAvailable(
       const history::MostVisitedURLList& visited_list);
 
-  NTPTilesVector InsertRepeatableQueryTiles(NTPTilesVector tiles);
-
   // Callback for when an update is reported by the SuggestionsService.
   void OnSuggestionsProfileChanged(
       const suggestions::SuggestionsProfile& suggestions_profile);
@@ -349,13 +343,8 @@
   void TopSitesChanged(history::TopSites* top_sites,
                        ChangeReason change_reason) override;
 
-  // RepeatableQueriesServiceObserver implementation.
-  void OnRepeatableQueriesUpdated() override;
-  void OnRepeatableQueriesServiceShuttingDown() override;
-
   PrefService* prefs_;
   scoped_refptr<history::TopSites> top_sites_;
-  RepeatableQueriesService* repeatable_queries_;
   suggestions::SuggestionsService* suggestions_service_;
   std::unique_ptr<PopularSites> const popular_sites_;
   std::unique_ptr<CustomLinksManager> const custom_links_;
@@ -382,10 +371,6 @@
   base::ScopedObservation<history::TopSites, history::TopSitesObserver>
       top_sites_observation_{this};
 
-  base::ScopedObservation<RepeatableQueriesService,
-                          RepeatableQueriesServiceObserver>
-      repeatable_queries_observation_{this};
-
   base::CallbackListSubscription custom_links_subscription_;
 
   // The main source of personal tiles - either TOP_SITES or SUGGESTIONS_SEVICE.
diff --git a/components/ntp_tiles/most_visited_sites_unittest.cc b/components/ntp_tiles/most_visited_sites_unittest.cc
index 85a72ea4b..f4a57c4 100644
--- a/components/ntp_tiles/most_visited_sites_unittest.cc
+++ b/components/ntp_tiles/most_visited_sites_unittest.cc
@@ -472,9 +472,9 @@
     EXPECT_CALL(*icon_cacher, StartFetchMostLikely(_, _)).Times(AtLeast(0));
 
     most_visited_sites_ = std::make_unique<MostVisitedSites>(
-        &pref_service_, mock_top_sites_, /*repeatable_queries=*/nullptr,
-        &mock_suggestions_service_, popular_sites_factory_.New(),
-        std::move(mock_custom_links), std::move(icon_cacher),
+        &pref_service_, mock_top_sites_, &mock_suggestions_service_,
+        popular_sites_factory_.New(), std::move(mock_custom_links),
+        std::move(icon_cacher),
         /*supervisor=*/nullptr);
   }
 
diff --git a/components/ntp_tiles/tile_source.h b/components/ntp_tiles/tile_source.h
index 53cac00..ea067c1d 100644
--- a/components/ntp_tiles/tile_source.h
+++ b/components/ntp_tiles/tile_source.h
@@ -28,10 +28,8 @@
   HOMEPAGE,
   // Tile comes from explore sites list.
   EXPLORE,
-  // Tile comes from the repeatable queries service, based on search history.
-  REPEATABLE_QUERIES_SERVICE,
 
-  LAST = REPEATABLE_QUERIES_SERVICE
+  LAST = EXPLORE
 };
 
 }  // namespace ntp_tiles
diff --git a/components/offline_pages/core/downloads/download_ui_adapter.cc b/components/offline_pages/core/downloads/download_ui_adapter.cc
index 0a7e2de..e798ffd2 100644
--- a/components/offline_pages/core/downloads/download_ui_adapter.cc
+++ b/components/offline_pages/core/downloads/download_ui_adapter.cc
@@ -161,11 +161,6 @@
   if (!delegate_->IsVisibleInUI(request.client_id()))
     return;
 
-  if (delegate_->MaybeSuppressNotification(request.request_origin(),
-                                           request.client_id())) {
-    return;
-  }
-
   OfflineItem item = OfflineItemConversions::CreateOfflineItem(request);
   if (status == RequestNotifier::BackgroundSavePageResult::SUCCESS) {
     // If the request is completed successfully, it means there should already
diff --git a/components/offline_pages/core/downloads/download_ui_adapter.h b/components/offline_pages/core/downloads/download_ui_adapter.h
index 06064fb..7721510 100644
--- a/components/offline_pages/core/downloads/download_ui_adapter.h
+++ b/components/offline_pages/core/downloads/download_ui_adapter.h
@@ -65,11 +65,6 @@
                           int64_t offline_id,
                           const OpenParams& open_params) = 0;
 
-    // Suppresses the download complete notification
-    // depending on flags and origin.
-    virtual bool MaybeSuppressNotification(const std::string& origin,
-                                           const ClientId& id) = 0;
-
     // Share item to other apps.
     virtual void GetShareInfoForItem(const ContentId& id,
                                      ShareCallback share_callback) = 0;
diff --git a/components/offline_pages/core/downloads/download_ui_adapter_unittest.cc b/components/offline_pages/core/downloads/download_ui_adapter_unittest.cc
index 7c2d5a55..2bd7effe8 100644
--- a/components/offline_pages/core/downloads/download_ui_adapter_unittest.cc
+++ b/components/offline_pages/core/downloads/download_ui_adapter_unittest.cc
@@ -90,15 +90,10 @@
   void OpenItem(const OfflineItem& item,
                 int64_t offline_id,
                 const OpenParams& open_params) override {}
-  bool MaybeSuppressNotification(const std::string& origin,
-                                 const ClientId& item) override {
-    return maybe_suppress_notification_;
-  }
   MOCK_METHOD2(GetShareInfoForItem,
                void(const ContentId&, OfflineContentProvider::ShareCallback));
 
   bool is_visible = true;
-  bool maybe_suppress_notification_ = false;
 };
 
 class MockVisualsDecoder : public VisualsDecoder {
diff --git a/components/offline_pages/core/offline_page_feature.cc b/components/offline_pages/core/offline_page_feature.cc
index 1d53df4c..d1a9a4fc 100644
--- a/components/offline_pages/core/offline_page_feature.cc
+++ b/components/offline_pages/core/offline_page_feature.cc
@@ -41,9 +41,6 @@
 const base::Feature kOfflinePagesInDownloadHomeOpenInCctFeature{
     "OfflinePagesInDownloadHomeOpenInCct", base::FEATURE_ENABLED_BY_DEFAULT};
 
-const base::Feature kOfflinePagesCTSuppressNotificationsFeature{
-    "OfflinePagesCTSuppressNotifications", base::FEATURE_DISABLED_BY_DEFAULT};
-
 const base::Feature kOfflineIndicatorFeature{"OfflineIndicator",
                                              base::FEATURE_DISABLED_BY_DEFAULT};
 
@@ -88,11 +85,6 @@
       kOfflinePagesInDownloadHomeOpenInCctFeature);
 }
 
-bool IsOfflinePagesSuppressNotificationsEnabled() {
-  return base::FeatureList::IsEnabled(
-      kOfflinePagesCTSuppressNotificationsFeature);
-}
-
 std::string GetPrefetchingOfflinePagesExperimentTag() {
   return base::GetFieldTrialParamValueByFeature(
       kPrefetchingOfflinePagesFeature,
diff --git a/components/offline_pages/core/offline_page_feature.h b/components/offline_pages/core/offline_page_feature.h
index 40889b96..c2882b1c 100644
--- a/components/offline_pages/core/offline_page_feature.h
+++ b/components/offline_pages/core/offline_page_feature.h
@@ -18,7 +18,6 @@
 extern const base::Feature kOfflinePagesDescriptivePendingStatusFeature;
 extern const base::Feature kOfflinePagesInDownloadHomeOpenInCctFeature;
 extern const base::Feature kOfflinePagesDescriptiveFailStatusFeature;
-extern const base::Feature kOfflinePagesCTSuppressNotificationsFeature;
 extern const base::Feature kOfflineIndicatorFeature;
 extern const base::Feature kOnTheFlyMhtmlHashComputationFeature;
 extern const base::Feature kOfflinePagesNetworkStateLikelyUnknown;
@@ -55,10 +54,6 @@
 // opened in CCTs instead of new tabs.
 bool ShouldOfflinePagesInDownloadHomeOpenInCct();
 
-// Returns true if we should suppress completed notifications for certain custom
-// tabs downloads.
-bool IsOfflinePagesSuppressNotificationsEnabled();
-
 // Controls whether we should show a dinosaur page with alternate UI.
 bool ShouldShowAlternateDinoPage();
 
diff --git a/components/omnibox/browser/autocomplete_input.cc b/components/omnibox/browser/autocomplete_input.cc
index eca0d8af..d16ba4a5 100644
--- a/components/omnibox/browser/autocomplete_input.cc
+++ b/components/omnibox/browser/autocomplete_input.cc
@@ -6,8 +6,8 @@
 
 #include <vector>
 
+#include "base/cxx17_backports.h"
 #include "base/logging.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_split.h"
 #include "base/strings/string_util.h"
diff --git a/components/omnibox/browser/autocomplete_input_unittest.cc b/components/omnibox/browser/autocomplete_input_unittest.cc
index b5b2e09..19bf354 100644
--- a/components/omnibox/browser/autocomplete_input_unittest.cc
+++ b/components/omnibox/browser/autocomplete_input_unittest.cc
@@ -8,8 +8,8 @@
 
 #include <string>
 
+#include "base/cxx17_backports.h"
 #include "base/logging.h"
-#include "base/stl_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "build/build_config.h"
 #include "components/omnibox/browser/test_scheme_classifier.h"
diff --git a/components/omnibox/browser/autocomplete_match.cc b/components/omnibox/browser/autocomplete_match.cc
index a3a05f0..5360916 100644
--- a/components/omnibox/browser/autocomplete_match.cc
+++ b/components/omnibox/browser/autocomplete_match.cc
@@ -7,6 +7,7 @@
 #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"
@@ -14,7 +15,6 @@
 #include "base/metrics/histogram_macros.h"
 #include "base/notreached.h"
 #include "base/ranges/algorithm.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_piece.h"
 #include "base/strings/string_split.h"
diff --git a/components/omnibox/browser/autocomplete_match_type.cc b/components/omnibox/browser/autocomplete_match_type.cc
index e5611bb..3dbe005 100644
--- a/components/omnibox/browser/autocomplete_match_type.cc
+++ b/components/omnibox/browser/autocomplete_match_type.cc
@@ -5,8 +5,8 @@
 #include "components/omnibox/browser/autocomplete_match_type.h"
 
 #include "base/check.h"
+#include "base/cxx17_backports.h"
 #include "base/notreached.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/utf_string_conversions.h"
 #include "components/omnibox/browser/autocomplete_match.h"
diff --git a/components/omnibox/browser/autocomplete_match_unittest.cc b/components/omnibox/browser/autocomplete_match_unittest.cc
index e0d8506..3a82e1e 100644
--- a/components/omnibox/browser/autocomplete_match_unittest.cc
+++ b/components/omnibox/browser/autocomplete_match_unittest.cc
@@ -9,7 +9,7 @@
 #include <utility>
 
 #include "autocomplete_match.h"
-#include "base/stl_util.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"
diff --git a/components/omnibox/browser/autocomplete_provider_unittest.cc b/components/omnibox/browser/autocomplete_provider_unittest.cc
index b52927ff..b541d95 100644
--- a/components/omnibox/browser/autocomplete_provider_unittest.cc
+++ b/components/omnibox/browser/autocomplete_provider_unittest.cc
@@ -11,11 +11,11 @@
 
 #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/run_loop.h"
 #include "base/single_thread_task_runner.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
diff --git a/components/omnibox/browser/autocomplete_result_unittest.cc b/components/omnibox/browser/autocomplete_result_unittest.cc
index fb7866a..576a862 100644
--- a/components/omnibox/browser/autocomplete_result_unittest.cc
+++ b/components/omnibox/browser/autocomplete_result_unittest.cc
@@ -10,9 +10,9 @@
 #include <string>
 #include <vector>
 
+#include "base/cxx17_backports.h"
 #include "base/metrics/field_trial.h"
 #include "base/metrics/field_trial_params.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
diff --git a/components/omnibox/browser/bookmark_provider.cc b/components/omnibox/browser/bookmark_provider.cc
index 9d688d3a..cc11ec6 100644
--- a/components/omnibox/browser/bookmark_provider.cc
+++ b/components/omnibox/browser/bookmark_provider.cc
@@ -8,10 +8,10 @@
 #include <functional>
 #include <vector>
 
+#include "base/cxx17_backports.h"
 #include "base/feature_list.h"
 #include "base/macros.h"
 #include "base/metrics/field_trial_params.h"
-#include "base/stl_util.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/trace_event/trace_event.h"
diff --git a/components/omnibox/browser/bookmark_provider_unittest.cc b/components/omnibox/browser/bookmark_provider_unittest.cc
index a2161409..0d2e1ae 100644
--- a/components/omnibox/browser/bookmark_provider_unittest.cc
+++ b/components/omnibox/browser/bookmark_provider_unittest.cc
@@ -11,9 +11,9 @@
 #include <string>
 #include <vector>
 
+#include "base/cxx17_backports.h"
 #include "base/guid.h"
 #include "base/memory/ref_counted.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_split.h"
 #include "base/strings/utf_string_conversions.h"
diff --git a/components/omnibox/browser/builtin_provider_unittest.cc b/components/omnibox/browser/builtin_provider_unittest.cc
index ddbaef5..29bda8ff 100644
--- a/components/omnibox/browser/builtin_provider_unittest.cc
+++ b/components/omnibox/browser/builtin_provider_unittest.cc
@@ -10,8 +10,8 @@
 #include <string>
 #include <vector>
 
+#include "base/cxx17_backports.h"
 #include "base/format_macros.h"
-#include "base/stl_util.h"
 #include "base/strings/strcat.h"
 #include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
diff --git a/components/omnibox/browser/history_quick_provider_performance_unittest.cc b/components/omnibox/browser/history_quick_provider_performance_unittest.cc
index d97e076..e71114a1 100644
--- a/components/omnibox/browser/history_quick_provider_performance_unittest.cc
+++ b/components/omnibox/browser/history_quick_provider_performance_unittest.cc
@@ -8,9 +8,9 @@
 #include <random>
 #include <string>
 
+#include "base/cxx17_backports.h"
 #include "base/no_destructor.h"
 #include "base/run_loop.h"
-#include "base/stl_util.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/task_environment.h"
diff --git a/components/omnibox/browser/history_quick_provider_unittest.cc b/components/omnibox/browser/history_quick_provider_unittest.cc
index b7610a3..d66b233 100644
--- a/components/omnibox/browser/history_quick_provider_unittest.cc
+++ b/components/omnibox/browser/history_quick_provider_unittest.cc
@@ -13,9 +13,9 @@
 #include <string>
 #include <vector>
 
+#include "base/cxx17_backports.h"
 #include "base/format_macros.h"
 #include "base/run_loop.h"
-#include "base/stl_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/task_environment.h"
 #include "components/bookmarks/browser/bookmark_model.h"
diff --git a/components/omnibox/browser/history_url_provider_unittest.cc b/components/omnibox/browser/history_url_provider_unittest.cc
index 7e05ecb0..7e0c5bd 100644
--- a/components/omnibox/browser/history_url_provider_unittest.cc
+++ b/components/omnibox/browser/history_url_provider_unittest.cc
@@ -10,9 +10,9 @@
 #include <memory>
 #include <utility>
 
+#include "base/cxx17_backports.h"
 #include "base/memory/ptr_util.h"
 #include "base/run_loop.h"
-#include "base/stl_util.h"
 #include "base/strings/string_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
diff --git a/components/omnibox/browser/in_memory_url_index.h b/components/omnibox/browser/in_memory_url_index.h
index b64c488..171896f 100644
--- a/components/omnibox/browser/in_memory_url_index.h
+++ b/components/omnibox/browser/in_memory_url_index.h
@@ -152,7 +152,6 @@
   friend class history::HQPPerfTestOnePopularURL;
   friend class InMemoryURLIndexTest;
   friend class InMemoryURLIndexCacheTest;
-  friend class RepeatableQueriesServiceTest;
   FRIEND_TEST_ALL_PREFIXES(InMemoryURLIndexTest, ExpireRow);
   FRIEND_TEST_ALL_PREFIXES(LimitedInMemoryURLIndexTest, Initialization);
 
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 efab8e7..ec8ca05c 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,7 @@
 #include <algorithm>
 #include <string>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "base/strings/utf_string_conversions.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
diff --git a/components/omnibox/browser/in_memory_url_index_unittest.cc b/components/omnibox/browser/in_memory_url_index_unittest.cc
index 8341a1e..ac68c5d 100644
--- a/components/omnibox/browser/in_memory_url_index_unittest.cc
+++ b/components/omnibox/browser/in_memory_url_index_unittest.cc
@@ -13,13 +13,13 @@
 #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"
 #include "base/i18n/case_conversion.h"
 #include "base/path_service.h"
 #include "base/run_loop.h"
-#include "base/stl_util.h"
 #include "base/strings/string_split.h"
 #include "base/strings/string_util.h"
 #include "base/strings/stringprintf.h"
diff --git a/components/omnibox/browser/keyword_provider_unittest.cc b/components/omnibox/browser/keyword_provider_unittest.cc
index 6f859c59..3818e11 100644
--- a/components/omnibox/browser/keyword_provider_unittest.cc
+++ b/components/omnibox/browser/keyword_provider_unittest.cc
@@ -11,8 +11,8 @@
 #include <utility>
 
 #include "base/command_line.h"
+#include "base/cxx17_backports.h"
 #include "base/metrics/field_trial.h"
-#include "base/stl_util.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/scoped_feature_list.h"
diff --git a/components/omnibox/browser/omnibox_edit_model_unittest.cc b/components/omnibox/browser/omnibox_edit_model_unittest.cc
index 384e168..2eac0a2 100644
--- a/components/omnibox/browser/omnibox_edit_model_unittest.cc
+++ b/components/omnibox/browser/omnibox_edit_model_unittest.cc
@@ -9,7 +9,7 @@
 #include <memory>
 #include <string>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/task_environment.h"
 #include "build/build_config.h"
diff --git a/components/omnibox/browser/omnibox_view_unittest.cc b/components/omnibox/browser/omnibox_view_unittest.cc
index 0790503af..135c231 100644
--- a/components/omnibox/browser/omnibox_view_unittest.cc
+++ b/components/omnibox/browser/omnibox_view_unittest.cc
@@ -7,7 +7,7 @@
 #include <utility>
 
 #include "base/callback_helpers.h"
-#include "base/stl_util.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"
diff --git a/components/omnibox/browser/shortcuts_backend_unittest.cc b/components/omnibox/browser/shortcuts_backend_unittest.cc
index 5f8e8eb..ef50131f 100644
--- a/components/omnibox/browser/shortcuts_backend_unittest.cc
+++ b/components/omnibox/browser/shortcuts_backend_unittest.cc
@@ -8,9 +8,9 @@
 
 #include <memory>
 
+#include "base/cxx17_backports.h"
 #include "base/files/scoped_temp_dir.h"
 #include "base/run_loop.h"
-#include "base/stl_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/task_environment.h"
 #include "components/history/core/browser/history_service.h"
diff --git a/components/omnibox/browser/shortcuts_database_unittest.cc b/components/omnibox/browser/shortcuts_database_unittest.cc
index 5b6afbb8d..a19a7d13 100644
--- a/components/omnibox/browser/shortcuts_database_unittest.cc
+++ b/components/omnibox/browser/shortcuts_database_unittest.cc
@@ -6,10 +6,10 @@
 
 #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"
-#include "base/stl_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/time/time.h"
 #include "build/build_config.h"
diff --git a/components/omnibox/browser/shortcuts_provider_unittest.cc b/components/omnibox/browser/shortcuts_provider_unittest.cc
index 7c3f588..1235ac8 100644
--- a/components/omnibox/browser/shortcuts_provider_unittest.cc
+++ b/components/omnibox/browser/shortcuts_provider_unittest.cc
@@ -14,10 +14,10 @@
 #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"
-#include "base/stl_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/task_environment.h"
 #include "components/history/core/browser/url_database.h"
diff --git a/components/omnibox/resources/OWNERS b/components/omnibox/resources/OWNERS
index 379aa51b..a0d1e83 100644
--- a/components/omnibox/resources/OWNERS
+++ b/components/omnibox/resources/OWNERS
@@ -1,2 +1,2 @@
 # For adding or removing languages.
-per-file *.grd=claudiomagni@chromium.org
\ No newline at end of file
+per-file *.grd=claudiomagni@chromium.org
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 fb0512a..861983d 100644
--- a/components/open_from_clipboard/clipboard_recent_content_generic_unittest.cc
+++ b/components/open_from_clipboard/clipboard_recent_content_generic_unittest.cc
@@ -8,8 +8,8 @@
 #include <string>
 #include <utility>
 
+#include "base/cxx17_backports.h"
 #include "base/run_loop.h"
-#include "base/stl_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/time/time.h"
 #include "build/build_config.h"
diff --git a/components/os_crypt/keyring_util_linux.cc b/components/os_crypt/keyring_util_linux.cc
index 5acaa1e..ddd948df 100644
--- a/components/os_crypt/keyring_util_linux.cc
+++ b/components/os_crypt/keyring_util_linux.cc
@@ -6,8 +6,8 @@
 
 #include <dlfcn.h>
 
+#include "base/cxx17_backports.h"
 #include "base/logging.h"
-#include "base/stl_util.h"
 
 decltype(&::gnome_keyring_is_available)
     GnomeKeyringLoader::gnome_keyring_is_available_ptr;
diff --git a/components/os_crypt/os_crypt_linux.cc b/components/os_crypt/os_crypt_linux.cc
index 4dd0a6a..18b9ac2b 100644
--- a/components/os_crypt/os_crypt_linux.cc
+++ b/components/os_crypt/os_crypt_linux.cc
@@ -10,10 +10,10 @@
 #include <iterator>
 #include <memory>
 
+#include "base/cxx17_backports.h"
 #include "base/lazy_instance.h"
 #include "base/logging.h"
 #include "base/single_thread_task_runner.h"
-#include "base/stl_util.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/synchronization/lock.h"
diff --git a/components/page_info/page_info_ui.cc b/components/page_info/page_info_ui.cc
index f28a5de..96f6941 100644
--- a/components/page_info/page_info_ui.cc
+++ b/components/page_info/page_info_ui.cc
@@ -8,8 +8,8 @@
 
 #include "base/command_line.h"
 #include "base/containers/span.h"
+#include "base/cxx17_backports.h"
 #include "base/feature_list.h"
-#include "base/stl_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "build/build_config.h"
 #include "build/chromeos_buildflags.h"
diff --git a/components/page_load_metrics/browser/OWNERS b/components/page_load_metrics/browser/OWNERS
index cf584f7..a9b9177 100644
--- a/components/page_load_metrics/browser/OWNERS
+++ b/components/page_load_metrics/browser/OWNERS
@@ -1,2 +1,2 @@
 # For QUIC version changes in ConnectionInfo switch statmenets.
-per-file protocol_util.cc=file://net/quic/OWNERS
\ No newline at end of file
+per-file protocol_util.cc=file://net/quic/OWNERS
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 b48097fd..756e65b 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,10 +11,10 @@
 
 #include "base/bind.h"
 #include "base/callback_helpers.h"
+#include "base/cxx17_backports.h"
 #include "base/location.h"
 #include "base/memory/ref_counted.h"
 #include "base/rand_util.h"
-#include "base/stl_util.h"
 #include "base/test/test_mock_time_task_runner.h"
 #include "base/test/test_simple_task_runner.h"
 #include "base/time/clock.h"
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 8bb29dcd..9c606dd 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,7 @@
 
 #include <vector>
 
-#include "base/stl_util.h"
+#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"
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 618d68bc..edd3687 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,7 @@
 #include <string>
 #include <utility>
 
-#include "base/stl_util.h"
+#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"
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 ec458fe..ff6d415 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,7 @@
 #include <climits>
 #include <utility>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "base/strings/strcat.h"
 #include "base/strings/string_piece.h"
 #include "base/strings/string_util.h"
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 d9dd592..414aec6 100644
--- a/components/password_manager/core/browser/login_database_ios_unittest.cc
+++ b/components/password_manager/core/browser/login_database_ios_unittest.cc
@@ -7,9 +7,9 @@
 #include <Security/Security.h>
 #include <stddef.h>
 
+#include "base/cxx17_backports.h"
 #include "base/files/scoped_temp_dir.h"
 #include "base/mac/scoped_cftyperef.h"
-#include "base/stl_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/task_environment.h"
 #include "components/password_manager/core/browser/password_form.h"
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 7d7941a8..928697e 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,7 @@
 
 #include "components/password_manager/core/browser/password_hash_data.h"
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "base/strings/utf_string_conversions.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
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 e0618c2c..3474d560 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,8 +4,8 @@
 
 #include "components/password_manager/core/browser/password_reuse_detection_manager.h"
 
+#include "base/cxx17_backports.h"
 #include "base/run_loop.h"
-#include "base/stl_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/simple_test_clock.h"
 #include "base/test/task_environment.h"
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 02b6f0a..31ecf30 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,7 @@
 
 #include <stddef.h>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "base/strings/utf_string_conversions.h"
 #include "build/build_config.h"
 #include "components/password_manager/core/browser/password_form.h"
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 92d0c38..4f70b91 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,7 @@
 
 #include "components/password_manager/ios/account_select_fill_data.h"
 
-#include "base/stl_util.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"
diff --git a/components/payments/content/android/java/src/org/chromium/components/payments/OWNERS b/components/payments/content/android/java/src/org/chromium/components/payments/OWNERS
index 305b5e8..82b3eac 100644
--- a/components/payments/content/android/java/src/org/chromium/components/payments/OWNERS
+++ b/components/payments/content/android/java/src/org/chromium/components/payments/OWNERS
@@ -5,4 +5,4 @@
 per-file *TypeConverter*.*=file://ipc/SECURITY_OWNERS
 
 per-file *.aidl=set noparent
-per-file *.aidl=file://ipc/SECURITY_OWNERS
\ No newline at end of file
+per-file *.aidl=file://ipc/SECURITY_OWNERS
diff --git a/components/payments/content/android/java/src/org/chromium/components/payments/PaymentRequestService.java b/components/payments/content/android/java/src/org/chromium/components/payments/PaymentRequestService.java
index 6f9a543..0f06d32 100644
--- a/components/payments/content/android/java/src/org/chromium/components/payments/PaymentRequestService.java
+++ b/components/payments/content/android/java/src/org/chromium/components/payments/PaymentRequestService.java
@@ -631,6 +631,9 @@
                 case MethodStrings.GOOGLE_PLAY_BILLING:
                     methodTypes.add(PaymentMethodCategory.PLAY_BILLING);
                     break;
+                case MethodStrings.SECURE_PAYMENT_CONFIRMATION:
+                    methodTypes.add(PaymentMethodCategory.SECURE_PAYMENT_CONFIRMATION);
+                    break;
                 case MethodStrings.BASIC_CARD:
                     // Not to record requestedMethodBasicCard because JourneyLogger ignore the case
                     // where the specified networks are unsupported.
@@ -738,6 +741,10 @@
                             == PaymentAppType.NATIVE_MOBILE_APP;
                     category = PaymentMethodCategory.PLAY_BILLING;
                     break;
+                } else if (method.equals(MethodStrings.SECURE_PAYMENT_CONFIRMATION)) {
+                    assert invokedPaymentApp.getPaymentAppType() == PaymentAppType.INTERNAL;
+                    category = PaymentMethodCategory.SECURE_PAYMENT_CONFIRMATION;
+                    break;
                 }
             }
         }
@@ -825,10 +832,35 @@
         assert mSpec.getRawTotal() != null;
         mJourneyLogger.recordTransactionAmount(mSpec.getRawTotal().amount.currency,
                 mSpec.getRawTotal().amount.value, false /*completed*/);
+        if (isSecurePaymentConfirmationApplicable()) {
+            mJourneyLogger.setShown();
+            // TODO(crbug.com/1204565): Replace the auto-accept with a SPC payment UI.
+            onSecurePaymentConfirmationUiAccepted(mBrowserPaymentRequest.getSelectedPaymentApp());
+            return null;
+        }
         return mBrowserPaymentRequest.onShowCalledAndAppsQueriedAndDetailsFinalized(
                 mIsUserGestureShow);
     }
 
+    private boolean isSecurePaymentConfirmationApplicable() {
+        PaymentApp selectedApp = mBrowserPaymentRequest.getSelectedPaymentApp();
+        // TODO(crbug.com/1211947): Deduplicate this part with
+        // SecurePaymentConfirmationController::SetupModelAndShowDialogIfApplicable().
+        return selectedApp != null && selectedApp.getPaymentAppType() == PaymentAppType.INTERNAL
+                && selectedApp.getInstrumentMethodNames().size() == 1
+                && selectedApp.getInstrumentMethodNames().contains(
+                        MethodStrings.SECURE_PAYMENT_CONFIRMATION)
+                && mBrowserPaymentRequest.getPaymentApps().size() == 1 && mSpec != null
+                && !mSpec.isDestroyed() && mSpec.isSecurePaymentConfirmationRequested()
+                && !PaymentOptionsUtils.requestAnyInformation(mSpec.getPaymentOptions());
+    }
+
+    private void onSecurePaymentConfirmationUiAccepted(PaymentApp app) {
+        PaymentResponseHelperInterface paymentResponseHelper =
+                new PaymentResponseHelper(app, mSpec.getPaymentOptions());
+        invokePaymentApp(app, paymentResponseHelper);
+    }
+
     private void onShowFailed(String error) {
         onShowFailed(NotShownReason.OTHER, error, PaymentErrorReason.USER_CANCEL);
     }
diff --git a/components/payments/content/android/java/src/org/chromium/components/payments/PaymentRequestSpec.java b/components/payments/content/android/java/src/org/chromium/components/payments/PaymentRequestSpec.java
index e2fd229..d66faab2 100644
--- a/components/payments/content/android/java/src/org/chromium/components/payments/PaymentRequestSpec.java
+++ b/components/payments/content/android/java/src/org/chromium/components/payments/PaymentRequestSpec.java
@@ -193,6 +193,11 @@
         return mNativePointer;
     }
 
+    /** Whether the secure-payment-confirmation method is requested. */
+    public boolean isSecurePaymentConfirmationRequested() {
+        return PaymentRequestSpecJni.get().isSecurePaymentConfirmationRequested(mNativePointer);
+    }
+
     @NativeMethods
     /* package */ interface Natives {
         long create(ByteBuffer optionsByteBuffer, ByteBuffer detailsByteBuffer,
@@ -205,5 +210,6 @@
         byte[] getPaymentDetails(long nativePaymentRequestSpec);
         byte[][] getMethodData(long nativePaymentRequestSpec);
         byte[] getPaymentOptions(long nativePaymentRequestSpec);
+        boolean isSecurePaymentConfirmationRequested(long nativePaymentRequestSpec);
     }
 }
diff --git a/components/payments/content/android/java/src/org/chromium/components/payments/intent/OWNERS b/components/payments/content/android/java/src/org/chromium/components/payments/intent/OWNERS
index 02824e0d..47d8657 100644
--- a/components/payments/content/android/java/src/org/chromium/components/payments/intent/OWNERS
+++ b/components/payments/content/android/java/src/org/chromium/components/payments/intent/OWNERS
@@ -2,4 +2,4 @@
 file://components/payments/OWNERS
 
 per-file *TypeConverter*.*=set noparent
-per-file *TypeConverter*.*=file://ipc/SECURITY_OWNERS
\ No newline at end of file
+per-file *TypeConverter*.*=file://ipc/SECURITY_OWNERS
diff --git a/components/payments/content/android/payment_request_spec.cc b/components/payments/content/android/payment_request_spec.cc
index cf2a60d..5738f119 100644
--- a/components/payments/content/android/payment_request_spec.cc
+++ b/components/payments/content/android/payment_request_spec.cc
@@ -85,6 +85,10 @@
   spec_->RecomputeSpecForDetails();
 }
 
+bool PaymentRequestSpec::IsSecurePaymentConfirmationRequested(JNIEnv* env) {
+  return spec_->IsSecurePaymentConfirmationRequested();
+}
+
 base::android::ScopedJavaLocalRef<jstring>
 PaymentRequestSpec::SelectedShippingOptionError(JNIEnv* env) {
   return base::android::ConvertUTF16ToJavaString(
diff --git a/components/payments/content/android/payment_request_spec.h b/components/payments/content/android/payment_request_spec.h
index 201f0a6..388fe68 100644
--- a/components/payments/content/android/payment_request_spec.h
+++ b/components/payments/content/android/payment_request_spec.h
@@ -54,6 +54,9 @@
   // Recomputes spec based on details.
   void RecomputeSpecForDetails(JNIEnv* env);
 
+  // Returns whether the secure-payment-confirmation method is requested.
+  bool IsSecurePaymentConfirmationRequested(JNIEnv* env);
+
   // Returns the selected shipping option error.
   base::android::ScopedJavaLocalRef<jstring> SelectedShippingOptionError(
       JNIEnv* env);
diff --git a/components/payments/core/strings_util.cc b/components/payments/core/strings_util.cc
index a02d77d..f0bf6b0 100644
--- a/components/payments/core/strings_util.cc
+++ b/components/payments/core/strings_util.cc
@@ -6,8 +6,8 @@
 
 #include <vector>
 
+#include "base/cxx17_backports.h"
 #include "base/notreached.h"
-#include "base/stl_util.h"
 #include "components/autofill/core/browser/data_model/autofill_profile.h"
 #include "components/autofill/core/browser/field_types.h"
 #include "components/strings/grit/components_strings.h"
diff --git a/components/pdf/OWNERS b/components/pdf/OWNERS
index 8000934..59c3f69 100644
--- a/components/pdf/OWNERS
+++ b/components/pdf/OWNERS
@@ -1 +1 @@
-file://pdf/OWNERS
\ No newline at end of file
+file://pdf/OWNERS
diff --git a/components/permissions/permission_auditing_database_unittest.cc b/components/permissions/permission_auditing_database_unittest.cc
index 910e6cc..6b14a52 100644
--- a/components/permissions/permission_auditing_database_unittest.cc
+++ b/components/permissions/permission_auditing_database_unittest.cc
@@ -8,10 +8,10 @@
 
 #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/macros.h"
-#include "base/stl_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/time/time.h"
 #include "sql/test/scoped_error_expecter.h"
diff --git a/components/permissions/permission_auditing_service_unittest.cc b/components/permissions/permission_auditing_service_unittest.cc
index b084e1ef..067bf92 100644
--- a/components/permissions/permission_auditing_service_unittest.cc
+++ b/components/permissions/permission_auditing_service_unittest.cc
@@ -7,10 +7,10 @@
 #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"
-#include "base/stl_util.h"
 #include "base/task/task_traits.h"
 #include "base/task/thread_pool.h"
 #include "base/test/bind.h"
diff --git a/components/policy/core/browser/browser_policy_connector.cc b/components/policy/core/browser/browser_policy_connector.cc
index ac149df..5ffc7bc 100644
--- a/components/policy/core/browser/browser_policy_connector.cc
+++ b/components/policy/core/browser/browser_policy_connector.cc
@@ -13,8 +13,8 @@
 
 #include "base/bind.h"
 #include "base/command_line.h"
+#include "base/cxx17_backports.h"
 #include "base/logging.h"
-#include "base/stl_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "base/trace_event/trace_event.h"
diff --git a/components/policy/core/browser/browser_policy_connector_unittest.cc b/components/policy/core/browser/browser_policy_connector_unittest.cc
index 61afdd2f..2f50ae0b 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/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace policy {
diff --git a/components/policy/core/browser/proxy_policy_handler.cc b/components/policy/core/browser/proxy_policy_handler.cc
index 4796261..3979346 100644
--- a/components/policy/core/browser/proxy_policy_handler.cc
+++ b/components/policy/core/browser/proxy_policy_handler.cc
@@ -7,8 +7,8 @@
 #include <stddef.h>
 
 #include "base/check.h"
+#include "base/cxx17_backports.h"
 #include "base/notreached.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/values.h"
 #include "components/policy/core/browser/configuration_policy_handler.h"
diff --git a/components/policy/core/common/cloud/OWNERS b/components/policy/core/common/cloud/OWNERS
index ca609b3..d44b0ee 100644
--- a/components/policy/core/common/cloud/OWNERS
+++ b/components/policy/core/common/cloud/OWNERS
@@ -1,4 +1,3 @@
 per-file machine_level_user_cloud_policy*=rogerta@chromium.org
 per-file machine_level_user_cloud_policy*=zmin@chromium.org
-per-file encrypted*=zatrudo@google.com
-per-file encrypted*=lbaraz@chromium.org
+per-file encrypted*=file://components/reporting/OWNERS
diff --git a/components/policy/core/common/cloud/cloud_policy_client.cc b/components/policy/core/common/cloud/cloud_policy_client.cc
index 949cda4..a4826e5c 100644
--- a/components/policy/core/common/cloud/cloud_policy_client.cc
+++ b/components/policy/core/common/cloud/cloud_policy_client.cc
@@ -980,7 +980,7 @@
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
 
   auto it = responses_.find(std::make_pair(policy_type, settings_entity_id));
-  return it == responses_.end() ? nullptr : it->second.get();
+  return it == responses_.end() ? nullptr : &it->second;
 }
 
 scoped_refptr<network::SharedURLLoaderFactory>
@@ -1159,7 +1159,7 @@
                      << ", entity: " << entity_id << ", ignoring";
         continue;
       }
-      responses_[key] = std::make_unique<em::PolicyFetchResponse>(response);
+      responses_[key] = response;
     }
     state_keys_to_upload_.clear();
     NotifyPolicyFetched();
diff --git a/components/policy/core/common/cloud/cloud_policy_client.h b/components/policy/core/common/cloud/cloud_policy_client.h
index 2bd2400..252cc8bb 100644
--- a/components/policy/core/common/cloud/cloud_policy_client.h
+++ b/components/policy/core/common/cloud/cloud_policy_client.h
@@ -54,9 +54,8 @@
  public:
   // Maps a (policy type, settings entity ID) pair to its corresponding
   // PolicyFetchResponse.
-  using ResponseMap =
-      std::map<std::pair<std::string, std::string>,
-               std::unique_ptr<enterprise_management::PolicyFetchResponse>>;
+  using ResponseMap = std::map<std::pair<std::string, std::string>,
+                               enterprise_management::PolicyFetchResponse>;
 
   // A callback which receives boolean status of an operation.  If the operation
   // succeeded, |status| is true.
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 f762c866..c8a4340 100644
--- a/components/policy/core/common/cloud/cloud_policy_client_unittest.cc
+++ b/components/policy/core/common/cloud/cloud_policy_client_unittest.cc
@@ -15,11 +15,11 @@
 #include "base/bind.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"
 #include "base/run_loop.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/test/bind.h"
 #include "base/test/scoped_feature_list.h"
diff --git a/components/policy/core/common/cloud/cloud_policy_util.cc b/components/policy/core/common/cloud/cloud_policy_util.cc
index 683599f..d61980b0 100644
--- a/components/policy/core/common/cloud/cloud_policy_util.cc
+++ b/components/policy/core/common/cloud/cloud_policy_util.cc
@@ -42,8 +42,8 @@
 #include <utility>
 
 #include "base/check.h"
+#include "base/cxx17_backports.h"
 #include "base/notreached.h"
-#include "base/stl_util.h"
 #include "base/system/sys_info.h"
 #if defined(OS_WIN)
 #include "base/win/wmi.h"
diff --git a/components/policy/core/common/cloud/cloud_policy_validator.cc b/components/policy/core/common/cloud/cloud_policy_validator.cc
index dc1b219a..f79b996 100644
--- a/components/policy/core/common/cloud/cloud_policy_validator.cc
+++ b/components/policy/core/common/cloud/cloud_policy_validator.cc
@@ -10,12 +10,12 @@
 #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"
 #include "base/sequenced_task_runner.h"
 #include "base/single_thread_task_runner.h"
-#include "base/stl_util.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "build/build_config.h"
 #include "components/policy/core/common/cloud/cloud_policy_constants.h"
diff --git a/components/policy/core/common/cloud/component_cloud_policy_service.cc b/components/policy/core/common/cloud/component_cloud_policy_service.cc
index bd2ca0bc..ea654fd 100644
--- a/components/policy/core/common/cloud/component_cloud_policy_service.cc
+++ b/components/policy/core/common/cloud/component_cloud_policy_service.cc
@@ -33,10 +33,9 @@
 
 namespace em = enterprise_management;
 
-using ScopedResponseMap =
-    std::unordered_map<policy::PolicyNamespace,
-                       std::unique_ptr<em::PolicyFetchResponse>,
-                       policy::PolicyNamespaceHash>;
+using ScopedResponseMap = std::unordered_map<policy::PolicyNamespace,
+                                             em::PolicyFetchResponse,
+                                             policy::PolicyNamespaceHash>;
 
 namespace policy {
 
@@ -262,7 +261,7 @@
   for (auto it = last_fetched_policy_->begin();
        it != last_fetched_policy_->end(); ++it) {
     updater_->UpdateExternalPolicy(
-        it->first, std::make_unique<em::PolicyFetchResponse>(*it->second));
+        it->first, std::make_unique<em::PolicyFetchResponse>(it->second));
   }
 }
 
@@ -454,8 +453,7 @@
       DVLOG(1) << "Ignored policy with type = " << response.first.first;
       continue;
     }
-    (*valid_responses)[ns] =
-        std::make_unique<em::PolicyFetchResponse>(*response.second);
+    (*valid_responses)[ns] = response.second;
   }
 
   backend_task_runner_->PostTask(
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 b71c71e..df0cd4e0 100644
--- a/components/policy/core/common/cloud/device_management_service_unittest.cc
+++ b/components/policy/core/common/cloud/device_management_service_unittest.cc
@@ -11,9 +11,9 @@
 
 #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/stl_util.h"
 #include "base/strings/strcat.h"
 #include "base/strings/string_split.h"
 #include "base/test/metrics/histogram_tester.h"
diff --git a/components/policy/core/common/cloud/mock_cloud_policy_client.cc b/components/policy/core/common/cloud/mock_cloud_policy_client.cc
index ced4112..0ba5360 100644
--- a/components/policy/core/common/cloud/mock_cloud_policy_client.cc
+++ b/components/policy/core/common/cloud/mock_cloud_policy_client.cc
@@ -39,8 +39,7 @@
 void MockCloudPolicyClient::SetPolicy(const std::string& policy_type,
                                       const std::string& settings_entity_id,
                                       const em::PolicyFetchResponse& policy) {
-  responses_[std::make_pair(policy_type, settings_entity_id)] =
-      std::make_unique<enterprise_management::PolicyFetchResponse>(policy);
+  responses_[std::make_pair(policy_type, settings_entity_id)] = policy;
 }
 
 void MockCloudPolicyClient::SetFetchedInvalidationVersion(
diff --git a/components/policy/core/common/cloud/policy_builder.cc b/components/policy/core/common/cloud/policy_builder.cc
index 8c0dcc9..df9a3a6 100644
--- a/components/policy/core/common/cloud/policy_builder.cc
+++ b/components/policy/core/common/cloud/policy_builder.cc
@@ -4,7 +4,7 @@
 
 #include "components/policy/core/common/cloud/policy_builder.h"
 
-#include "base/stl_util.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"
diff --git a/components/policy/core/common/policy_loader_mac_unittest.cc b/components/policy/core/common/policy_loader_mac_unittest.cc
index 5b3756c..a94b2c6 100644
--- a/components/policy/core/common/policy_loader_mac_unittest.cc
+++ b/components/policy/core/common/policy_loader_mac_unittest.cc
@@ -10,11 +10,11 @@
 #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"
 #include "base/sequenced_task_runner.h"
-#include "base/stl_util.h"
 #include "base/strings/sys_string_conversions.h"
 #include "base/values.h"
 #include "components/policy/core/common/async_policy_provider.h"
diff --git a/components/policy/core/common/policy_loader_win.cc b/components/policy/core/common/policy_loader_win.cc
index e443ff5..cbf9209 100644
--- a/components/policy/core/common/policy_loader_win.cc
+++ b/components/policy/core/common/policy_loader_win.cc
@@ -18,6 +18,7 @@
 #include "base/bind.h"
 #include "base/callback.h"
 #include "base/callback_helpers.h"
+#include "base/cxx17_backports.h"
 #include "base/enterprise_util.h"
 #include "base/files/file_util.h"
 #include "base/json/json_reader.h"
@@ -30,7 +31,6 @@
 #include "base/path_service.h"
 #include "base/scoped_native_library.h"
 #include "base/sequenced_task_runner.h"
-#include "base/stl_util.h"
 #include "base/strings/string_util.h"
 #include "base/threading/scoped_thread_priority.h"
 #include "base/values.h"
diff --git a/components/policy/core/common/preg_parser.cc b/components/policy/core/common/preg_parser.cc
index bc0328c5..4d9c3b3 100644
--- a/components/policy/core/common/preg_parser.cc
+++ b/components/policy/core/common/preg_parser.cc
@@ -15,11 +15,11 @@
 #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"
 #include "base/memory/ptr_util.h"
-#include "base/stl_util.h"
 #include "base/strings/string_split.h"
 #include "base/strings/string_util.h"
 #include "base/strings/stringprintf.h"
diff --git a/components/policy/core/common/schema_unittest.cc b/components/policy/core/common/schema_unittest.cc
index 1cf4ded..6132e79 100644
--- a/components/policy/core/common/schema_unittest.cc
+++ b/components/policy/core/common/schema_unittest.cc
@@ -9,7 +9,7 @@
 #include <memory>
 #include <utility>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "base/strings/stringprintf.h"
 #include "base/values.h"
 #include "components/policy/core/common/schema_internal.h"
diff --git a/components/policy/resources/policy_templates.json b/components/policy/resources/policy_templates.json
index 07fc774..fe1c2c4 100644
--- a/components/policy/resources/policy_templates.json
+++ b/components/policy/resources/policy_templates.json
@@ -9429,7 +9429,7 @@
     },
     {
       'name': 'ReportDeviceVersionInfo',
-      'owners': ['file://components/policy/resources/OWNERS', 'bartfab@chromium.org'],
+      'owners': ['cros-reporting-team@google.com', 'lbaraz@chromium.org'],
       'type': 'main',
       'schema': { 'type': 'boolean' },
       'supported_on': ['chrome_os:18-'],
@@ -9449,7 +9449,7 @@
     },
     {
       'name': 'ReportDeviceActivityTimes',
-      'owners': ['file://components/policy/resources/OWNERS', 'pmarko@chromium.org'],
+      'owners': ['cros-reporting-team@google.com', 'lbaraz@chromium.org'],
       'type': 'main',
       'schema': { 'type': 'boolean' },
       'supported_on': ['chrome_os:18-'],
@@ -9469,7 +9469,7 @@
     },
     {
       'name': 'ReportDeviceBootMode',
-      'owners': ['file://components/policy/resources/OWNERS', 'bartfab@chromium.org'],
+      'owners': ['cros-reporting-team@google.com', 'lbaraz@chromium.org'],
       'type': 'main',
       'schema': { 'type': 'boolean' },
       'supported_on': ['chrome_os:18-'],
@@ -9489,7 +9489,7 @@
     },
     {
       'name': 'ReportDeviceLocation',
-      'owners': ['file://components/policy/resources/OWNERS', 'hendrich@chromium.org'],
+      'owners': ['cros-reporting-team@google.com', 'lbaraz@chromium.org'],
       'type': 'main',
       'schema': { 'type': 'boolean' },
       'future_on': ['chrome_os'],
@@ -9509,7 +9509,7 @@
     },
     {
       'name': 'ReportDeviceNetworkInterfaces',
-      'owners': ['file://components/policy/resources/OWNERS', 'rsorokin@chromium.org'],
+      'owners': ['cros-reporting-team@google.com', 'lbaraz@chromium.org'],
       'type': 'main',
       'schema': { 'type': 'boolean' },
       'supported_on': ['chrome_os:29-'],
@@ -9529,7 +9529,7 @@
     },
     {
       'name': 'ReportDeviceUsers',
-      'owners': ['stepco@chromium.org', 'poromov@chromium.org'],
+      'owners': ['stepco@chromium.org', 'cros-reporting-team@google.com', 'lbaraz@chromium.org'],
       'type': 'main',
       'schema': { 'type': 'boolean' },
       'supported_on': ['chrome_os:32-'],
@@ -9549,7 +9549,7 @@
     },
     {
       'name': 'ReportDeviceHardwareStatus',
-      'owners': ['antrim@chromium.org'],
+      'owners': ['cros-reporting-team@google.com', 'lbaraz@chromium.org', 'antrim@chromium.org'],
       'type': 'main',
       'schema': { 'type': 'boolean' },
       'supported_on': ['chrome_os:42-'],
@@ -9569,7 +9569,7 @@
     },
     {
       'name': 'ReportDeviceSessionStatus',
-      'owners': ['antrim@chromium.org'],
+      'owners': ['cros-reporting-team@google.com', 'lbaraz@chromium.org', 'antrim@chromium.org'],
       'type': 'main',
       'schema': { 'type': 'boolean' },
       'supported_on': ['chrome_os:42-'],
@@ -9589,7 +9589,7 @@
     },
     {
       'name': 'ReportDeviceGraphicsStatus',
-      'owners': ['file://components/policy/resources/OWNERS', 'anqing@chromium.org'],
+      'owners': ['cros-reporting-team@google.com', 'lbaraz@chromium.org'],
       'type': 'main',
       'schema': { 'type': 'boolean' },
       'supported_on': ['chrome_os:81-'],
@@ -9612,7 +9612,7 @@
     },
     {
       'name': 'ReportDeviceCrashReportInfo',
-      'owners': ['file://components/policy/resources/OWNERS', 'atwilson@chromium.org'],
+      'owners': ['cros-reporting-team@google.com', 'lbaraz@chromium.org'],
       'type': 'main',
       'schema': { 'type': 'boolean' },
       'supported_on': ['chrome_os:83-'],
@@ -9635,7 +9635,7 @@
     },
     {
       'name': 'ReportDeviceOsUpdateStatus',
-      'owners': ['anqing@chromium.org'],
+      'owners': ['cros-reporting-team@google.com', 'lbaraz@chromium.org', 'anqing@chromium.org'],
       'type': 'main',
       'schema': { 'type': 'boolean' },
       'supported_on': ['chrome_os:79-'],
@@ -9657,7 +9657,7 @@
     },
     {
       'name': 'ReportDevicePowerStatus',
-      'owners': ['antrim@chromium.org'],
+      'owners': ['cros-reporting-team@google.com', 'lbaraz@chromium.org', 'antrim@chromium.org'],
       'type': 'main',
       'schema': { 'type': 'boolean' },
       'supported_on': ['chrome_os:73-'],
@@ -9677,7 +9677,7 @@
     },
     {
       'name': 'ReportDeviceStorageStatus',
-      'owners': ['antrim@chromium.org'],
+      'owners': ['cros-reporting-team@google.com', 'lbaraz@chromium.org', 'antrim@chromium.org'],
       'type': 'main',
       'schema': { 'type': 'boolean' },
       'supported_on': ['chrome_os:73-'],
@@ -9697,7 +9697,7 @@
     },
     {
       'name': 'ReportDeviceBoardStatus',
-      'owners': ['antrim@chromium.org'],
+      'owners': ['cros-reporting-team@google.com', 'lbaraz@chromium.org', 'antrim@chromium.org'],
       'type': 'main',
       'schema': { 'type': 'boolean' },
       'supported_on': ['chrome_os:73-'],
@@ -9717,7 +9717,7 @@
     },
     {
       'name': 'ReportDeviceCpuInfo',
-      'owners': ['file://components/policy/resources/OWNERS', 'anqing@chromium.org'],
+      'owners': ['cros-reporting-team@google.com', 'lbaraz@chromium.org'],
       'type': 'main',
       'schema': { 'type': 'boolean' },
       'supported_on': ['chrome_os:81-'],
@@ -9739,7 +9739,7 @@
     },
     {
       'name': 'ReportDeviceTimezoneInfo',
-      'owners': ['file://components/policy/resources/OWNERS', 'poromov@chromium.org'],
+      'owners': ['cros-reporting-team@google.com', 'lbaraz@chromium.org'],
       'type': 'main',
       'schema': { 'type': 'boolean' },
       'supported_on': ['chrome_os:83-'],
@@ -9760,7 +9760,7 @@
     },
     {
       'name': 'ReportDeviceMemoryInfo',
-      'owners': ['file://components/policy/resources/OWNERS', 'atwilson@chromium.org'],
+      'owners': ['cros-reporting-team@google.com', 'lbaraz@chromium.org'],
       'type': 'main',
       'schema': { 'type': 'boolean' },
       'supported_on': ['chrome_os:83-'],
@@ -9781,7 +9781,7 @@
     },
     {
       'name': 'ReportDeviceBacklightInfo',
-      'owners': ['file://components/policy/resources/OWNERS', 'atwilson@chromium.org'],
+      'owners': ['cros-reporting-team@google.com', 'lbaraz@chromium.org'],
       'type': 'main',
       'schema': { 'type': 'boolean' },
       'supported_on': ['chrome_os:83-'],
@@ -9802,7 +9802,7 @@
     },
     {
       'name': 'ReportDeviceAppInfo',
-      'owners': ['mattme@google.com', 'file://components/policy/resources/OWNERS'],
+      'owners': ['cros-reporting-team@google.com', 'lbaraz@chromium.org', 'mattme@google.com'],
       'type': 'main',
       'schema': { 'type': 'boolean' },
       'supported_on': ['chrome_os:85-'],
@@ -9823,7 +9823,7 @@
     },
     {
       'name': 'ReportDeviceBluetoothInfo',
-      'owners': ['file://components/policy/resources/OWNERS', 'rsorokin@chromium.org'],
+      'owners': ['cros-reporting-team@google.com', 'lbaraz@chromium.org'],
       'type': 'main',
       'schema': { 'type': 'boolean' },
       'supported_on': ['chrome_os:85-'],
@@ -9844,7 +9844,7 @@
     },
     {
       'name': 'ReportDeviceFanInfo',
-      'owners': ['file://components/policy/resources/OWNERS', 'anqing@chromium.org'],
+      'owners': ['cros-reporting-team@google.com', 'lbaraz@chromium.org'],
       'type': 'main',
       'schema': { 'type': 'boolean' },
       'supported_on': ['chrome_os:85-'],
@@ -9865,7 +9865,7 @@
     },
     {
       'name': 'ReportDeviceVpdInfo',
-      'owners': ['file://components/policy/resources/OWNERS', 'rsorokin@chromium.org'],
+      'owners': ['cros-reporting-team@google.com', 'lbaraz@chromium.org'],
       'type': 'main',
       'schema': { 'type': 'boolean' },
       'supported_on': ['chrome_os:85-'],
@@ -9887,7 +9887,7 @@
     },
     {
       'name': 'ReportDeviceSystemInfo',
-      'owners': ['file://components/policy/resources/OWNERS', 'hendrich@chromium.org'],
+      'owners': ['cros-reporting-team@google.com', 'lbaraz@chromium.org'],
       'type': 'main',
       'schema': { 'type': 'boolean' },
       'supported_on': ['chrome_os:86-'],
@@ -9908,7 +9908,7 @@
     },
     {
       'name': 'ReportDevicePrintJobs',
-      'owners': ['mattme@google.com', 'file://components/policy/resources/OWNERS'],
+      'owners': ['cros-reporting-team@google.com', 'lbaraz@chromium.org', 'mattme@google.com'],
       'type': 'main',
       'schema': { 'type': 'boolean' },
       'future_on': ['chrome_os'],
@@ -9940,7 +9940,7 @@
     },
     {
       'name': 'ReportUploadFrequency',
-      'owners': ['file://components/policy/resources/OWNERS', 'atwilson@chromium.org'],
+      'owners': ['cros-reporting-team@google.com', 'lbaraz@chromium.org'],
       'type': 'int',
       'schema': { 'type': 'integer', 'minimum': 60000 },
       'supported_on': ['chrome_os:42-'],
@@ -9960,7 +9960,7 @@
     },
     {
       'name': 'ReportArcStatusEnabled',
-      'owners': ['phweiss@chromium.org'],
+      'owners': ['cros-reporting-team@google.com', 'lbaraz@chromium.org', 'phweiss@chromium.org'],
       'type': 'main',
       'schema': { 'type': 'boolean' },
       'supported_on': ['chrome_os:55-'],
@@ -9979,7 +9979,7 @@
     },
     {
       'name': 'ReportCrostiniUsageEnabled',
-      'owners': ['aoldemeier@chromium.org', 'okalitova@chromium.org'],
+      'owners': ['cros-reporting-team@google.com', 'lbaraz@chromium.org', 'aoldemeier@chromium.org', 'okalitova@chromium.org'],
       'type': 'main',
       'schema': { 'type': 'boolean' },
       'supported_on': ['chrome_os:70-'],
@@ -9998,7 +9998,7 @@
     },
     {
       'name': 'HeartbeatEnabled',
-      'owners': ['file://components/policy/resources/OWNERS', 'atwilson@chromium.org'],
+      'owners': ['cros-reporting-team@google.com', 'lbaraz@chromium.org'],
       'type': 'main',
       'schema': { 'type': 'boolean' },
       'supported_on': ['chrome_os:43-'],
@@ -10018,7 +10018,7 @@
     },
     {
       'name': 'HeartbeatFrequency',
-      'owners': ['file://components/policy/resources/OWNERS', 'atwilson@chromium.org'],
+      'owners': ['cros-reporting-team@google.com', 'lbaraz@chromium.org'],
       'type': 'int',
       'schema': { 'type': 'integer', 'minimum': 30000 },
       'supported_on': ['chrome_os:43-'],
@@ -10038,7 +10038,7 @@
     },
     {
       'name': 'LogUploadEnabled',
-      'owners': ['poromov@chromium.org', 'pbond@chromium.org'],
+      'owners': ['cros-reporting-team@google.com', 'lbaraz@chromium.org', 'pbond@chromium.org'],
       'type': 'main',
       'schema': { 'type': 'boolean' },
       'supported_on': ['chrome_os:46-'],
@@ -10185,7 +10185,7 @@
     },
     {
       'name': 'DeviceMetricsReportingEnabled',
-      'owners': ['file://components/policy/resources/OWNERS', 'zmin@chromium.org'],
+      'owners': ['cros-reporting-team@google.com', 'lbaraz@chromium.org', 'zmin@chromium.org'],
       'type': 'main',
       'schema': { 'type': 'boolean' },
       'supported_on': ['chrome_os:14-'],
diff --git a/components/prefs/json_pref_store_unittest.cc b/components/prefs/json_pref_store_unittest.cc
index 5eeeeee..fa7df78 100644
--- a/components/prefs/json_pref_store_unittest.cc
+++ b/components/prefs/json_pref_store_unittest.cc
@@ -11,6 +11,7 @@
 
 #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"
@@ -19,7 +20,6 @@
 #include "base/path_service.h"
 #include "base/run_loop.h"
 #include "base/single_thread_task_runner.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
diff --git a/components/prefs/pref_service_unittest.cc b/components/prefs/pref_service_unittest.cc
index fd83ccf..6bf4afc 100644
--- a/components/prefs/pref_service_unittest.cc
+++ b/components/prefs/pref_service_unittest.cc
@@ -8,7 +8,7 @@
 #include <string>
 
 #include "base/callback_helpers.h"
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "base/time/time.h"
 #include "base/values.h"
 #include "components/prefs/json_pref_store.h"
diff --git a/components/printing/renderer/print_render_frame_helper.cc b/components/printing/renderer/print_render_frame_helper.cc
index bf54ba1..2831dbf 100644
--- a/components/printing/renderer/print_render_frame_helper.cc
+++ b/components/printing/renderer/print_render_frame_helper.cc
@@ -2025,9 +2025,8 @@
   // is enabled.
   std::unique_ptr<content::AXTreeSnapshotter> snapshotter;
   if (delegate_->ShouldGenerateTaggedPDF()) {
-    snapshotter = render_frame()->CreateAXTreeSnapshotter();
-    snapshotter->Snapshot(ui::AXMode::kPDF,
-                          /* exclude_offscreen= */ false,
+    snapshotter = render_frame()->CreateAXTreeSnapshotter(ui::AXMode::kPDF);
+    snapshotter->Snapshot(/* exclude_offscreen= */ false,
                           /* max_node_count= */ 0,
                           /* timeout= */ {}, &metafile.accessibility_tree());
   }
@@ -2435,7 +2434,7 @@
   // the scope of printing, because text drawing commands are only annotated
   // with a DOMNodeId if accessibility is enabled.
   if (delegate_->ShouldGenerateTaggedPDF())
-    snapshotter_ = render_frame()->CreateAXTreeSnapshotter();
+    snapshotter_ = render_frame()->CreateAXTreeSnapshotter(ui::AXMode::kPDF);
 
   auto params = mojom::RequestPrintPreviewParams::New();
   params->is_from_arc = is_from_arc;
@@ -2566,8 +2565,7 @@
   // http://crbug.com/1039817
   if (snapshotter_ && page_number == 0) {
     ui::AXTreeUpdate accessibility_tree;
-    snapshotter_->Snapshot(ui::AXMode::kPDF,
-                           /* exclude_offscreen= */ false,
+    snapshotter_->Snapshot(/* exclude_offscreen= */ false,
                            /* max_node_count= */ 0,
                            /* timeout= */ {}, &accessibility_tree);
     GetPrintManagerHost()->SetAccessibilityTree(
diff --git a/components/printing/test/print_render_frame_helper_browsertest.cc b/components/printing/test/print_render_frame_helper_browsertest.cc
index cd9f5bd..e53b828 100644
--- a/components/printing/test/print_render_frame_helper_browsertest.cc
+++ b/components/printing/test/print_render_frame_helper_browsertest.cc
@@ -11,8 +11,8 @@
 #include <utility>
 
 #include "base/command_line.h"
+#include "base/cxx17_backports.h"
 #include "base/run_loop.h"
-#include "base/stl_util.h"
 #include "base/strings/string_piece.h"
 #include "base/strings/utf_string_conversions.h"
 #include "build/build_config.h"
diff --git a/components/proxy_config/proxy_prefs.cc b/components/proxy_config/proxy_prefs.cc
index db6c6d6..3bd430d4 100644
--- a/components/proxy_config/proxy_prefs.cc
+++ b/components/proxy_config/proxy_prefs.cc
@@ -5,8 +5,8 @@
 #include "components/proxy_config/proxy_prefs.h"
 
 #include "base/check.h"
+#include "base/cxx17_backports.h"
 #include "base/notreached.h"
-#include "base/stl_util.h"
 
 namespace ProxyPrefs {
 
diff --git a/components/query_parser/query_parser_unittest.cc b/components/query_parser/query_parser_unittest.cc
index 0fdd19ca..7aa20ce 100644
--- a/components/query_parser/query_parser_unittest.cc
+++ b/components/query_parser/query_parser_unittest.cc
@@ -4,7 +4,7 @@
 
 #include <stddef.h>
 
-#include "base/stl_util.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"
diff --git a/components/query_parser/snippet_unittest.cc b/components/query_parser/snippet_unittest.cc
index 534a4e2..67efdbb2 100644
--- a/components/query_parser/snippet_unittest.cc
+++ b/components/query_parser/snippet_unittest.cc
@@ -8,7 +8,7 @@
 
 #include <algorithm>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "base/strings/string_split.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
diff --git a/components/reading_list/core/reading_list_model_unittest.cc b/components/reading_list/core/reading_list_model_unittest.cc
index 4cdcb3c..ea205c0 100644
--- a/components/reading_list/core/reading_list_model_unittest.cc
+++ b/components/reading_list/core/reading_list_model_unittest.cc
@@ -16,14 +16,6 @@
 
 namespace {
 
-const std::string callback_title("test title");
-
-// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
-// function.
-GURL CallbackUrl() {
-  return GURL("http://example.com");
-}
-
 base::Time AdvanceAndGetTime(base::SimpleTestClock* clock) {
   clock->Advance(base::TimeDelta::FromMilliseconds(10));
   return clock->Now();
@@ -161,7 +153,7 @@
                              public TestReadingListStorageObserver,
                              public testing::Test {
  public:
-  ReadingListModelTest() : callback_called_(false) {
+  ReadingListModelTest() {
     model_ = std::make_unique<ReadingListModelImpl>(nullptr, nullptr, &clock_);
     ClearCounts();
     model_->AddObserver(this);
@@ -277,14 +269,6 @@
     return size;
   }
 
-  void Callback(const ReadingListEntry& entry) {
-    EXPECT_EQ(CallbackUrl(), entry.URL());
-    EXPECT_EQ(callback_title, entry.Title());
-    callback_called_ = true;
-  }
-
-  bool CallbackCalled() { return callback_called_; }
-
  protected:
   int observer_loaded_;
   int observer_started_batch_update_;
@@ -298,7 +282,6 @@
   int observer_did_apply_;
   int storage_saved_;
   int storage_removed_;
-  bool callback_called_;
 
   std::unique_ptr<ReadingListModelImpl> model_;
   base::SimpleTestClock clock_;
diff --git a/components/reporting/OWNERS b/components/reporting/OWNERS
index c5a4620..91f8f1b 100644
--- a/components/reporting/OWNERS
+++ b/components/reporting/OWNERS
@@ -1,3 +1,2 @@
 lbaraz@chromium.org
 zatrudo@google.com
-
diff --git a/components/rlz/rlz_tracker_unittest.cc b/components/rlz/rlz_tracker_unittest.cc
index b69c01a..03f33496 100644
--- a/components/rlz/rlz_tracker_unittest.cc
+++ b/components/rlz/rlz_tracker_unittest.cc
@@ -6,9 +6,9 @@
 
 #include <memory>
 
+#include "base/cxx17_backports.h"
 #include "base/memory/ptr_util.h"
 #include "base/memory/ref_counted.h"
-#include "base/stl_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/task_environment.h"
 #include "base/threading/thread_task_runner_handle.h"
diff --git a/components/safe_browsing/core/db/v4_store.cc b/components/safe_browsing/core/db/v4_store.cc
index 398895f2..fa3758f9 100644
--- a/components/safe_browsing/core/db/v4_store.cc
+++ b/components/safe_browsing/core/db/v4_store.cc
@@ -9,11 +9,11 @@
 
 #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"
 #include "base/metrics/histogram_macros.h"
-#include "base/stl_util.h"
 #include "base/strings/string_piece.h"
 #include "base/strings/stringprintf.h"
 #include "base/timer/elapsed_timer.h"
diff --git a/components/safe_browsing/ios/password_protection/OWNERS b/components/safe_browsing/ios/password_protection/OWNERS
index c3446b0..d7e88b0 100644
--- a/components/safe_browsing/ios/password_protection/OWNERS
+++ b/components/safe_browsing/ios/password_protection/OWNERS
@@ -1,2 +1,2 @@
 ajuma@chromium.org
-edchin@chromium.org
\ No newline at end of file
+edchin@chromium.org
diff --git a/components/safe_search_api/url_checker_unittest.cc b/components/safe_search_api/url_checker_unittest.cc
index 83eb71d..93c2de8a 100644
--- a/components/safe_search_api/url_checker_unittest.cc
+++ b/components/safe_search_api/url_checker_unittest.cc
@@ -12,8 +12,8 @@
 
 #include "base/bind.h"
 #include "base/callback.h"
+#include "base/cxx17_backports.h"
 #include "base/macros.h"
-#include "base/stl_util.h"
 #include "base/test/scoped_feature_list.h"
 #include "base/test/task_environment.h"
 #include "components/safe_search_api/fake_url_checker_client.h"
diff --git a/components/search/BUILD.gn b/components/search/BUILD.gn
index 2dc5e56..d605086 100644
--- a/components/search/BUILD.gn
+++ b/components/search/BUILD.gn
@@ -6,9 +6,6 @@
   sources = [
     "ntp_features.cc",
     "ntp_features.h",
-    "repeatable_queries/repeatable_queries_service.cc",
-    "repeatable_queries/repeatable_queries_service.h",
-    "repeatable_queries/repeatable_queries_service_observer.h",
     "search.cc",
     "search.h",
     "search_provider_observer.cc",
@@ -34,10 +31,7 @@
 source_set("unit_tests") {
   testonly = true
 
-  sources = [
-    "repeatable_queries/repeatable_queries_service_unittest.cc",
-    "search_unittest.cc",
-  ]
+  sources = [ "search_unittest.cc" ]
   if (is_android) {
     sources += [ "search_android_unittest.cc" ]
   }
diff --git a/components/search/ntp_features.cc b/components/search/ntp_features.cc
index 4fa4368..34d28653 100644
--- a/components/search/ntp_features.cc
+++ b/components/search/ntp_features.cc
@@ -95,15 +95,6 @@
 const base::Feature kNtpDriveModule{"NtpDriveModule",
                                     base::FEATURE_DISABLED_BY_DEFAULT};
 
-const char kNtpRepeatableQueriesAgeThresholdDaysParam[] =
-    "NtpRepeatableQueriesAgeThresholdDays";
-const char kNtpRepeatableQueriesRecencyHalfLifeSecondsParam[] =
-    "NtpRepeatableQueriesRecencyHalfLifeSeconds";
-const char kNtpRepeatableQueriesFrequencyExponentParam[] =
-    "NtpRepeatableQueriesFrequencyExponent";
-const char kNtpRepeatableQueriesInsertPositionParam[] =
-    "NtpRepeatableQueriesInsertPosition";
-
 const char kNtpModulesLoadTimeoutMillisecondsParam[] =
     "NtpModulesLoadTimeoutMillisecondsParam";
 const char kNtpStatefulTasksModuleDataParam[] =
@@ -117,60 +108,6 @@
 const char kNtpDriveModuleManagedUsersOnlyParam[] =
     "NtpDriveModuleManagedUsersOnlyParam";
 
-base::Time GetLocalHistoryRepeatableQueriesAgeThreshold() {
-  const base::TimeDelta kLocalHistoryRepeatableQueriesAgeThreshold =
-      base::TimeDelta::FromDays(180);  // Six months.
-  std::string param_value = base::GetFieldTrialParamValueByFeature(
-      kNtpRepeatableQueries, kNtpRepeatableQueriesAgeThresholdDaysParam);
-
-  // If the field trial param is not found or cannot be parsed to an unsigned
-  // integer, return the default value.
-  unsigned int param_value_as_int = 0;
-  if (!base::StringToUint(param_value, &param_value_as_int)) {
-    return base::Time::Now() - kLocalHistoryRepeatableQueriesAgeThreshold;
-  }
-
-  return (base::Time::Now() - base::TimeDelta::FromDays(param_value_as_int));
-}
-
-int GetLocalHistoryRepeatableQueriesRecencyHalfLifeSeconds() {
-  const base::TimeDelta kLocalHistoryRepeatableQueriesRecencyHalfLife =
-      base::TimeDelta::FromDays(7);  // One week.
-  std::string param_value = base::GetFieldTrialParamValueByFeature(
-      kNtpRepeatableQueries, kNtpRepeatableQueriesRecencyHalfLifeSecondsParam);
-
-  // If the field trial param is not found or cannot be parsed to an unsigned
-  // integer, return the default value.
-  unsigned int param_value_as_int = 0;
-  if (!base::StringToUint(param_value, &param_value_as_int)) {
-    return kLocalHistoryRepeatableQueriesRecencyHalfLife.InSeconds();
-  }
-
-  return param_value_as_int;
-}
-
-double GetLocalHistoryRepeatableQueriesFrequencyExponent() {
-  const double kLocalHistoryRepeatableQueriesFrequencyExponent = 2.0;
-  std::string param_value = base::GetFieldTrialParamValueByFeature(
-      kNtpRepeatableQueries, kNtpRepeatableQueriesFrequencyExponentParam);
-
-  // If the field trial param is not found or cannot be parsed to an unsigned
-  // integer, return the default value.
-  double param_value_as_double = 0;
-  if (!base::StringToDouble(param_value, &param_value_as_double)) {
-    return kLocalHistoryRepeatableQueriesFrequencyExponent;
-  }
-
-  return param_value_as_double;
-}
-
-RepeatableQueriesInsertPosition GetRepeatableQueriesInsertPosition() {
-  std::string param_value = base::GetFieldTrialParamValueByFeature(
-      kNtpRepeatableQueries, kNtpRepeatableQueriesInsertPositionParam);
-  return param_value == "end" ? RepeatableQueriesInsertPosition::kEnd
-                              : RepeatableQueriesInsertPosition::kStart;
-}
-
 base::TimeDelta GetModulesLoadTimeout() {
   std::string param_value = base::GetFieldTrialParamValueByFeature(
       kModules, kNtpModulesLoadTimeoutMillisecondsParam);
diff --git a/components/search/ntp_features.h b/components/search/ntp_features.h
index 3ff7743..06f6230 100644
--- a/components/search/ntp_features.h
+++ b/components/search/ntp_features.h
@@ -8,7 +8,7 @@
 #include "base/feature_list.h"
 
 namespace base {
-class Time;
+class TimeDelta;
 }  // namespace base
 
 namespace ntp_features {
@@ -38,28 +38,6 @@
 
 extern const base::Feature kNtpHandleMostVisitedNavigationExplicitly;
 
-// Parameter name determining the age threshold in days for local history
-// repeatable queries.
-// The value of this parameter should be parsable as an unsigned integer.
-extern const char kNtpRepeatableQueriesAgeThresholdDaysParam[];
-// Parameter name determining the number of seconds until the recency component
-// of the frecency score for local history repeatable queries decays to half.
-// The value of this parameter should be parsable as an unsigned integer.
-extern const char kNtpRepeatableQueriesRecencyHalfLifeSecondsParam[];
-// Parameter name determining the factor by which the frequency component of the
-// frecency score for local history repeatable queries is exponentiated.
-// The value of this parameter should be parsable as a double.
-extern const char kNtpRepeatableQueriesFrequencyExponentParam[];
-// Parameter name determining the position, with respect to the MV tiles, in
-// which the repeatable queries should be inserted.
-extern const char kNtpRepeatableQueriesInsertPositionParam[];
-// The available positions, with respect to the MV tiles, in which the
-// repeatable queries can be inserted.
-enum class RepeatableQueriesInsertPosition {
-  kStart = 0,  // At the start of MV tiles.
-  kEnd,        // At the end of MV tiles.
-};
-
 // Parameter determining the module load timeout.
 extern const char kNtpModulesLoadTimeoutMillisecondsParam[];
 // Parameter determining the type of stateful data to request.
@@ -75,18 +53,6 @@
 // Parameter for enabling the Drive module for managed users only.
 extern const char kNtpDriveModuleManagedUsersOnlyParam[];
 
-// Returns the age threshold for local history repeatable queries.
-base::Time GetLocalHistoryRepeatableQueriesAgeThreshold();
-// Returns the number of seconds until the recency component of the frecency
-// score for local history repeatable queries decays to half.
-int GetLocalHistoryRepeatableQueriesRecencyHalfLifeSeconds();
-// Returns the factor by which the frequency component of the frecency score for
-// local history repeatable queries is exponentiated.
-double GetLocalHistoryRepeatableQueriesFrequencyExponent();
-// Returns the position, with respect to the MV tiles, in which the repeatable
-// queries should be inserted.
-RepeatableQueriesInsertPosition GetRepeatableQueriesInsertPosition();
-
 // Returns the timeout after which the load of a module should be aborted.
 base::TimeDelta GetModulesLoadTimeout();
 }  // namespace ntp_features
diff --git a/components/search/repeatable_queries/repeatable_queries_service.cc b/components/search/repeatable_queries/repeatable_queries_service.cc
deleted file mode 100644
index e190aeea..0000000
--- a/components/search/repeatable_queries/repeatable_queries_service.cc
+++ /dev/null
@@ -1,529 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "components/search/repeatable_queries/repeatable_queries_service.h"
-
-#include <algorithm>
-#include <utility>
-
-#include "base/bind.h"
-#include "base/callback_helpers.h"
-#include "base/containers/contains.h"
-#include "base/json/json_writer.h"
-#include "base/metrics/histogram_functions.h"
-#include "base/scoped_observation.h"
-#include "base/stl_util.h"
-#include "base/task/task_traits.h"
-#include "base/task/thread_pool.h"
-#include "base/values.h"
-#include "components/history/core/browser/history_service.h"
-#include "components/history/core/browser/history_types.h"
-#include "components/history/core/browser/keyword_search_term.h"
-#include "components/history/core/browser/url_database.h"
-#include "components/search/ntp_features.h"
-#include "components/search/search_provider_observer.h"
-#include "components/search_engines/template_url_service.h"
-#include "components/signin/public/identity_manager/accounts_in_cookie_jar_info.h"
-#include "components/signin/public/identity_manager/identity_manager.h"
-#include "components/variations/net/variations_http_headers.h"
-#include "net/http/http_status_code.h"
-#include "net/traffic_annotation/network_traffic_annotation.h"
-#include "services/network/public/cpp/resource_request.h"
-#include "services/network/public/cpp/shared_url_loader_factory.h"
-#include "services/network/public/cpp/simple_url_loader.h"
-
-namespace {
-const char kXSSIResponsePreamble[] = ")]}'";
-const size_t kMaxQueries = 2;
-
-bool JsonToRepeatableQueriesData(const base::Value& root_value,
-                                 std::vector<RepeatableQuery>* data) {
-  // 1st element is the query. 2nd element is the list of results.
-  std::u16string query;
-  const base::ListValue* root_list = nullptr;
-  const base::ListValue* results_list = nullptr;
-  if (!root_value.GetAsList(&root_list) || !root_list->GetString(0, &query) ||
-      !query.empty() || !root_list->GetList(1, &results_list))
-    return false;
-
-  // Ignore the 3rd and 4th elements. 5th element is the key-value pairs from
-  // the Suggest server containing the deletion URLs.
-  const base::DictionaryValue* extras = nullptr;
-  const base::ListValue* suggestion_details = nullptr;
-  if (!root_list->GetDictionary(4, &extras) ||
-      !extras->GetList("google:suggestdetail", &suggestion_details) ||
-      suggestion_details->GetSize() != results_list->GetSize()) {
-    return false;
-  }
-
-  std::u16string suggestion;
-  for (size_t index = 0; results_list->GetString(index, &suggestion); ++index) {
-    RepeatableQuery result;
-    result.query = base::CollapseWhitespace(suggestion, false);
-    if (result.query.empty())
-      continue;
-
-    const base::DictionaryValue* suggestion_detail = nullptr;
-    if (suggestion_details->GetDictionary(index, &suggestion_detail)) {
-      suggestion_detail->GetString("du", &result.deletion_url);
-    }
-    data->push_back(result);
-  }
-
-  return !data->empty();
-}
-}  // namespace
-
-// static
-const char RepeatableQueriesService::kExtractedCountHistogram[] =
-    "NewTabPage.RepeatableQueries.ExtractedCount";
-const char RepeatableQueriesService::kExtractionDurationHistogram[] =
-    "NewTabPage.RepeatableQueries.ExtractionDuration";
-
-class RepeatableQueriesService::SigninObserver
-    : public signin::IdentityManager::Observer {
- public:
-  SigninObserver(signin::IdentityManager* identity_manager,
-                 base::RepeatingClosure callback)
-      : identity_manager_(identity_manager), callback_(std::move(callback)) {
-    if (identity_manager_) {
-      identity_manager_observation_.Observe(identity_manager_);
-    }
-  }
-  ~SigninObserver() override = default;
-
-  bool IsSignedIn() {
-    return identity_manager_ ? !identity_manager_->GetAccountsInCookieJar()
-                                    .signed_in_accounts.empty()
-                             : false;
-  }
-
- private:
-  // IdentityManager::Observer implementation.
-  void OnAccountsInCookieUpdated(
-      const signin::AccountsInCookieJarInfo& accounts_in_cookie_jar_info,
-      const GoogleServiceAuthError& error) override {
-    callback_.Run();
-  }
-
-  base::ScopedObservation<signin::IdentityManager,
-                          signin::IdentityManager::Observer>
-      identity_manager_observation_{this};
-  // May be nullptr in tests.
-  signin::IdentityManager* const identity_manager_;
-  base::RepeatingClosure callback_;
-};
-
-RepeatableQueriesService::RepeatableQueriesService(
-    signin::IdentityManager* identity_manager,
-    history::HistoryService* history_service,
-    TemplateURLService* template_url_service,
-    scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
-    const GURL& request_initiator_url)
-    : history_service_(history_service),
-      template_url_service_(template_url_service),
-      url_loader_factory_(url_loader_factory),
-      request_initiator_url_(request_initiator_url),
-      signin_observer_(std::make_unique<SigninObserver>(
-          identity_manager,
-          base::BindRepeating(&RepeatableQueriesService::SigninStatusChanged,
-                              base::Unretained(this)))),
-      search_provider_observer_(std::make_unique<SearchProviderObserver>(
-          template_url_service,
-          base::BindRepeating(&RepeatableQueriesService::SearchProviderChanged,
-                              base::Unretained(this)))),
-      deletion_task_runner_(base::ThreadPool::CreateSequencedTaskRunner({})) {
-  DCHECK(history_service_);
-  DCHECK(template_url_service_);
-  DCHECK(url_loader_factory_);
-}
-
-RepeatableQueriesService::~RepeatableQueriesService() = default;
-
-void RepeatableQueriesService::Shutdown() {
-  for (auto& observer : observers_) {
-    observer.OnRepeatableQueriesServiceShuttingDown();
-  }
-}
-
-const std::vector<RepeatableQuery>&
-RepeatableQueriesService::repeatable_queries() const {
-  return repeatable_queries_;
-}
-
-void RepeatableQueriesService::Refresh() {
-  if (!search_provider_observer()->is_google()) {
-    NotifyObservers();
-    return;
-  }
-
-  if (signin_observer()->IsSignedIn()) {
-    GetRepeatableQueriesFromServer();
-  } else {
-    GetRepeatableQueriesFromURLDatabase();
-  }
-}
-
-void RepeatableQueriesService::DeleteQueryWithDestinationURL(const GURL& url) {
-  auto it = std::find_if(repeatable_queries_.begin(), repeatable_queries_.end(),
-                         [&url](const auto& repeatable_query) {
-                           return repeatable_query.destination_url == url;
-                         });
-
-  // Return if no repeatable query with a matching destination URL exists.
-  if (it == repeatable_queries_.end()) {
-    // Still notify observers of the deletion attempt.
-    NotifyObservers();
-    return;
-  }
-
-  if (it->deletion_url.empty()) {
-    DeleteRepeatableQueryFromURLDatabase(it->query);
-  } else {
-    DeleteRepeatableQueryFromServer(it->deletion_url);
-  }
-
-  // Delete all the Google search URLs for the given query from history.
-  const TemplateURL* default_provider =
-      template_url_service_->GetDefaultSearchProvider();
-  if (default_provider) {
-    history_service_->DeleteMatchingURLsForKeyword(default_provider->id(),
-                                                   it->query);
-  }
-
-  // Make sure the query is not suggested again.
-  MarkQueryAsDeleted(it->query);
-
-  // Update the repeatable queries and notify the observers.
-  repeatable_queries_.erase(it);
-  NotifyObservers();
-}
-
-void RepeatableQueriesService::AddObserver(
-    RepeatableQueriesServiceObserver* observer) {
-  observers_.AddObserver(observer);
-}
-
-void RepeatableQueriesService::RemoveObserver(
-    RepeatableQueriesServiceObserver* observer) {
-  observers_.RemoveObserver(observer);
-}
-
-RepeatableQueriesService::SigninObserver*
-RepeatableQueriesService::signin_observer() {
-  return signin_observer_.get();
-}
-
-SearchProviderObserver* RepeatableQueriesService::search_provider_observer() {
-  return search_provider_observer_.get();
-}
-
-void RepeatableQueriesService::SearchProviderChanged() {
-  // If we have cached data, clear it.
-  repeatable_queries_.clear();
-  Refresh();
-}
-
-void RepeatableQueriesService::SigninStatusChanged() {
-  // If we have cached data, clear it.
-  repeatable_queries_.clear();
-  Refresh();
-}
-
-GURL RepeatableQueriesService::GetQueryDestinationURL(
-    const std::u16string& query,
-    const TemplateURL* search_provider) {
-  DCHECK(search_provider);
-
-  TemplateURLRef::SearchTermsArgs search_terms_args(query);
-  const TemplateURLRef& search_url_ref = search_provider->url_ref();
-  const SearchTermsData& search_terms_data =
-      template_url_service_->search_terms_data();
-  DCHECK(search_url_ref.SupportsReplacement(search_terms_data));
-  return GURL(
-      search_url_ref.ReplaceSearchTerms(search_terms_args, search_terms_data));
-}
-
-GURL RepeatableQueriesService::GetQueryDeletionURL(
-    const std::string& deletion_url) {
-  const auto* default_provider =
-      template_url_service_->GetDefaultSearchProvider();
-  if (!default_provider)
-    return GURL();
-  const SearchTermsData& search_terms_data =
-      template_url_service_->search_terms_data();
-  GURL request_url = default_provider->GenerateSearchURL(search_terms_data);
-  return request_url.GetOrigin().Resolve(deletion_url);
-}
-
-GURL RepeatableQueriesService::GetRequestURL() {
-  TemplateURLRef::SearchTermsArgs search_terms_args;
-  search_terms_args.request_source = TemplateURLRef::NON_SEARCHBOX_NTP;
-  const TemplateURLRef& suggestion_url_ref =
-      template_url_service_->GetDefaultSearchProvider()->suggestions_url_ref();
-  const SearchTermsData& search_terms_data =
-      template_url_service_->search_terms_data();
-  DCHECK(suggestion_url_ref.SupportsReplacement(search_terms_data));
-  return GURL(suggestion_url_ref.ReplaceSearchTerms(search_terms_args,
-                                                    search_terms_data));
-}
-
-void RepeatableQueriesService::FlushForTesting(base::OnceClosure flushed) {
-  deletion_task_runner_->PostTaskAndReply(FROM_HERE, base::DoNothing(),
-                                          std::move(flushed));
-}
-
-void RepeatableQueriesService::GetRepeatableQueriesFromServer() {
-  net::NetworkTrafficAnnotationTag traffic_annotation =
-      net::DefineNetworkTrafficAnnotation("repeatable_queries_service", R"(
-        semantics {
-          sender: "Repeatable Queries Service"
-          description:
-            "Downloads search queries to be shown on the Most Visited "
-            "section of New Tab Page to signed-in users based on their "
-            "previous search history."
-          trigger:
-            "Displaying the new tab page, if Google is the "
-            "configured search provider, and the user is signed in."
-          data: "Google credentials if user is signed in."
-          destination: GOOGLE_OWNED_SERVICE
-        }
-        policy {
-          cookies_allowed: YES
-          cookies_store: "user"
-          setting:
-            "Users can control this feature by selecting a non-Google default "
-            "search engine in Chrome settings under 'Search Engine', or by "
-            "signing out of the browser on the New Tab Page. Users can opt "
-            "out of this feature by switching to custom shortcuts."
-          chrome_policy {
-            DefaultSearchProviderEnabled {
-              policy_options {mode: MANDATORY}
-              DefaultSearchProviderEnabled: false
-            }
-            BrowserSignin {
-              policy_options {mode: MANDATORY}
-              BrowserSignin: 0
-            }
-          }
-        })");
-
-  auto resource_request = std::make_unique<network::ResourceRequest>();
-  const GURL& request_url = GetRequestURL();
-  variations::AppendVariationsHeaderUnknownSignedIn(
-      request_url, variations::InIncognito::kNo, resource_request.get());
-  resource_request->url = request_url;
-  resource_request->request_initiator =
-      url::Origin::Create(request_initiator_url_);
-
-  loaders_.push_back(network::SimpleURLLoader::Create(
-      std::move(resource_request), traffic_annotation));
-  loaders_.back()->DownloadToString(
-      url_loader_factory_.get(),
-      base::BindOnce(&RepeatableQueriesService::RepeatableQueriesResponseLoaded,
-                     weak_ptr_factory_.GetWeakPtr(), loaders_.back().get()),
-      network::SimpleURLLoader::kMaxBoundedStringDownloadSize);
-}
-
-void RepeatableQueriesService::RepeatableQueriesResponseLoaded(
-    network::SimpleURLLoader* loader,
-    std::unique_ptr<std::string> response) {
-  auto net_error = loader->NetError();
-  base::EraseIf(loaders_, [loader](const auto& loader_ptr) {
-    return loader == loader_ptr.get();
-  });
-
-  if (net_error != net::OK || !response) {
-    // In the case of network errors, keep the cached data, if any, but still
-    // notify observers of the finished load attempt.
-    NotifyObservers();
-    return;
-  }
-
-  if (base::StartsWith(*response, kXSSIResponsePreamble,
-                       base::CompareCase::SENSITIVE)) {
-    *response = response->substr(strlen(kXSSIResponsePreamble));
-  }
-
-  data_decoder::DataDecoder::ParseJsonIsolated(
-      *response,
-      base::BindOnce(&RepeatableQueriesService::RepeatableQueriesParsed,
-                     weak_ptr_factory_.GetWeakPtr()));
-}
-
-void RepeatableQueriesService::RepeatableQueriesParsed(
-    data_decoder::DataDecoder::ValueOrError result) {
-  const TemplateURL* default_provider =
-      template_url_service_->GetDefaultSearchProvider();
-  if (!default_provider)
-    return;
-
-  repeatable_queries_.clear();
-
-  std::vector<RepeatableQuery> queries;
-  if (result.value && JsonToRepeatableQueriesData(*result.value, &queries)) {
-    for (auto& query : queries) {
-      if (IsQueryDeleted(query.query))
-        continue;
-      query.destination_url =
-          GetQueryDestinationURL(query.query, default_provider);
-      repeatable_queries_.push_back(query);
-      if (repeatable_queries_.size() >= kMaxQueries)
-        break;
-    }
-  }
-
-  NotifyObservers();
-}
-
-void RepeatableQueriesService::GetRepeatableQueriesFromURLDatabase() {
-  const TemplateURL* default_provider =
-      template_url_service_->GetDefaultSearchProvider();
-  if (!default_provider)
-    return;
-
-  repeatable_queries_.clear();
-
-  // Fail if the in-memory URLDatabase is not available.
-  history::URLDatabase* url_db = history_service_->InMemoryDatabase();
-  if (!url_db)
-    return;
-
-  const base::TimeTicks db_query_time = base::TimeTicks::Now();
-  auto results = url_db->GetMostRecentNormalizedKeywordSearchTerms(
-      template_url_service_->GetDefaultSearchProvider()->id(),
-      ntp_features::GetLocalHistoryRepeatableQueriesAgeThreshold());
-
-  const base::Time now = base::Time::Now();
-  const int kRecencyDecayUnitSec =
-      ntp_features::GetLocalHistoryRepeatableQueriesRecencyHalfLifeSeconds();
-  const double kFrequencyExponent =
-      ntp_features::GetLocalHistoryRepeatableQueriesFrequencyExponent();
-  auto CompareByFrecency = [&](const auto& a, const auto& b) {
-    return a.GetFrecency(now, kRecencyDecayUnitSec, kFrequencyExponent) >
-           b.GetFrecency(now, kRecencyDecayUnitSec, kFrequencyExponent);
-  };
-  std::sort(results.begin(), results.end(), CompareByFrecency);
-
-  for (const auto& result : results) {
-    RepeatableQuery repeatable_query;
-    repeatable_query.query = result.normalized_term;
-    if (IsQueryDeleted(repeatable_query.query))
-      continue;
-    repeatable_query.destination_url =
-        GetQueryDestinationURL(repeatable_query.query, default_provider);
-    repeatable_queries_.push_back(repeatable_query);
-    if (repeatable_queries_.size() >= kMaxQueries)
-      break;
-  }
-
-  base::UmaHistogramTimes(kExtractionDurationHistogram,
-                          base::TimeTicks::Now() - db_query_time);
-  base::UmaHistogramCounts10000(kExtractedCountHistogram, results.size());
-
-  NotifyObservers();
-}
-
-void RepeatableQueriesService::DeleteRepeatableQueryFromServer(
-    const std::string& deletion_url) {
-  net::NetworkTrafficAnnotationTag traffic_annotation =
-      net::DefineNetworkTrafficAnnotation("repeatable_queries_deletion", R"(
-        semantics {
-          sender: "Repeatable Queries Service"
-          description:
-            "When users attempt to delete a server-provided repeatable search "
-            "query from the Most Visited section of New Tab Page, Chrome sends "
-            "a request to the server requesting deletion of that suggestion."
-          trigger:
-            "User attempts to delete a server-provided repeatable search "
-            "query for which the server provided a custom deletion URL from "
-            "the Most Visited section of New Tab Page, if Google is the "
-            "configured search provider, and the user is signed in."
-          data: "Google credentials if user is signed in."
-          destination: GOOGLE_OWNED_SERVICE
-        }
-        policy {
-          cookies_allowed: YES
-          cookies_store: "user"
-          setting:
-            "Users can control this feature by selecting a non-Google default "
-            "search engine in Chrome settings under 'Search Engine', or by "
-            "signing out of the browser on the New Tab Page. Users can opt "
-            "out of this feature by switching to custom shortcuts."
-          chrome_policy {
-            DefaultSearchProviderEnabled {
-              policy_options {mode: MANDATORY}
-              DefaultSearchProviderEnabled: false
-            }
-            BrowserSignin {
-              policy_options {mode: MANDATORY}
-              BrowserSignin: 0
-            }
-          }
-        })");
-
-  GURL request_url = GetQueryDeletionURL(deletion_url);
-  if (!request_url.is_valid())
-    return;
-
-  auto deletion_request = std::make_unique<network::ResourceRequest>();
-  variations::AppendVariationsHeaderUnknownSignedIn(
-      request_url, variations::InIncognito::kNo, deletion_request.get());
-  deletion_request->url = request_url;
-  deletion_request->request_initiator =
-      url::Origin::Create(request_initiator_url_);
-
-  loaders_.push_back(network::SimpleURLLoader::Create(
-      std::move(deletion_request), traffic_annotation));
-  loaders_.back()->DownloadToString(
-      url_loader_factory_.get(),
-      base::BindOnce(&RepeatableQueriesService::DeletionResponseLoaded,
-                     weak_ptr_factory_.GetWeakPtr(), loaders_.back().get()),
-      network::SimpleURLLoader::kMaxBoundedStringDownloadSize);
-}
-
-void RepeatableQueriesService::DeletionResponseLoaded(
-    network::SimpleURLLoader* loader,
-    std::unique_ptr<std::string> response) {
-  base::EraseIf(loaders_, [loader](const auto& loader_ptr) {
-    return loader == loader_ptr.get();
-  });
-}
-
-void RepeatableQueriesService::DeleteRepeatableQueryFromURLDatabase(
-    const std::u16string& query) {
-  deletion_task_runner_->PostTask(
-      FROM_HERE,
-      base::BindOnce(
-          &RepeatableQueriesService::DeleteRepeatableQueryFromURLDatabaseTask,
-          weak_ptr_factory_.GetWeakPtr(), query,
-          history_service_->InMemoryDatabase()));
-}
-
-void RepeatableQueriesService::DeleteRepeatableQueryFromURLDatabaseTask(
-    const std::u16string& query,
-    history::URLDatabase* url_db) {
-  // Fail if the in-memory URLDatabase is not available.
-  if (!url_db)
-    return;
-
-  // Delete all the search terms matching the repeatable query suggestion from
-  // the in-memory URLDatabase.
-  url_db->DeleteKeywordSearchTermForNormalizedTerm(
-      template_url_service_->GetDefaultSearchProvider()->id(), query);
-}
-
-void RepeatableQueriesService::NotifyObservers() {
-  for (auto& observer : observers_) {
-    observer.OnRepeatableQueriesUpdated();
-  }
-}
-
-bool RepeatableQueriesService::IsQueryDeleted(const std::u16string& query) {
-  return base::Contains(deleted_repeatable_queries_, query);
-}
-
-void RepeatableQueriesService::MarkQueryAsDeleted(const std::u16string& query) {
-  deleted_repeatable_queries_.insert(query);
-}
diff --git a/components/search/repeatable_queries/repeatable_queries_service.h b/components/search/repeatable_queries/repeatable_queries_service.h
deleted file mode 100644
index 6d2e643..0000000
--- a/components/search/repeatable_queries/repeatable_queries_service.h
+++ /dev/null
@@ -1,191 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef COMPONENTS_SEARCH_REPEATABLE_QUERIES_REPEATABLE_QUERIES_SERVICE_H_
-#define COMPONENTS_SEARCH_REPEATABLE_QUERIES_REPEATABLE_QUERIES_SERVICE_H_
-
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "base/callback_forward.h"
-#include "base/memory/weak_ptr.h"
-#include "base/observer_list.h"
-#include "components/keyed_service/core/keyed_service.h"
-#include "components/search/repeatable_queries/repeatable_queries_service_observer.h"
-#include "services/data_decoder/public/cpp/data_decoder.h"
-#include "url/gurl.h"
-
-class SearchProviderObserver;
-class TemplateURLService;
-class TemplateURL;
-
-namespace base {
-class SequencedTaskRunner;
-}  // namespace base
-
-namespace history {
-class HistoryService;
-class URLDatabase;
-}  // namespace history
-
-namespace network {
-class SimpleURLLoader;
-class SharedURLLoaderFactory;
-}  // namespace network
-
-namespace signin {
-class IdentityManager;
-}  // namespace signin
-
-// Represents a repeatable query suggestion.
-class RepeatableQuery {
- public:
-  RepeatableQuery() = default;
-  ~RepeatableQuery() = default;
-
-  bool operator==(const RepeatableQuery& other) const {
-    return query == other.query && destination_url == other.destination_url &&
-           deletion_url == other.deletion_url;
-  }
-  bool operator!=(const RepeatableQuery& other) const {
-    return !(this == &other);
-  }
-
-  // Repeatable query suggestion.
-  std::u16string query;
-
-  // The URL to navigate to when the suggestion is selected.
-  GURL destination_url;
-
-  // The relative endpoint used for deleting the query suggestion on the server.
-  // Populated for server provided queries only.
-  std::string deletion_url;
-};
-
-// Provides repeatable query suggestions to be shown in the NTP Most Visited
-// tiles when Google is the default search provider. The repeatable queries are
-// requested from the server for signed-in users and extracted from the
-// in-memory URLDatabase for unauthenticated users.
-class RepeatableQueriesService : public KeyedService {
- public:
-  RepeatableQueriesService(
-      signin::IdentityManager* identity_manager,
-      history::HistoryService* history_service,
-      TemplateURLService* template_url_service,
-      scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
-      const GURL& request_initiator_url);
-  ~RepeatableQueriesService() override;
-  RepeatableQueriesService(const RepeatableQueriesService&) = delete;
-  RepeatableQueriesService& operator=(const RepeatableQueriesService&) = delete;
-
-  // Histograms recorded by this class.
-  static const char kExtractedCountHistogram[];
-  static const char kExtractionDurationHistogram[];
-
-  // KeyedService:
-  void Shutdown() override;
-
-  // Returns the currently cached repeatable query suggestions, if any.
-  const std::vector<RepeatableQuery>& repeatable_queries() const;
-
-  // If Google is the default search provider, asynchronously requests
-  // repeatable query suggestions from the server for signed-in users and
-  // synchronously extracts them from the in-memory URLDatabase for
-  // unauthenticated users. Regardless of success, observers are notified via
-  // RepeatableQueriesServiceObserver::OnRepeatableQueriesUpdated.
-  void Refresh();
-
-  // Deletes the records of the repeatable query suggestion with the given
-  // destination URL on the server as well as on the device, whichever is
-  // applicable. Prevents the suggestion from being offered again by
-  // blocklisting it. Updates the current set of suggestions and notifies the
-  // observers.
-  void DeleteQueryWithDestinationURL(const GURL& url);
-
-  // Add/remove observers.
-  void AddObserver(RepeatableQueriesServiceObserver* observer);
-  void RemoveObserver(RepeatableQueriesServiceObserver* observer);
-
- protected:
-  class SigninObserver;
-
-  virtual SigninObserver* signin_observer();
-  virtual SearchProviderObserver* search_provider_observer();
-
-  // Called when the default search provider changes.
-  void SearchProviderChanged();
-
-  // Called when the signin status changes.
-  void SigninStatusChanged();
-
-  // Returns the server destination URL for |query| with |search_provider|.
-  // |search_provider| may not be nullptr.
-  GURL GetQueryDestinationURL(const std::u16string& query,
-                              const TemplateURL* search_provider);
-
-  // Returns the resolved deletion URL for the given relative deletion URL.
-  GURL GetQueryDeletionURL(const std::string& deletion_url);
-
-  // Returns the server request URL.
-  GURL GetRequestURL();
-
-  void FlushForTesting(base::OnceClosure flushed);
-
- private:
-  // Requests repeatable queries from the server. Called for signed-in users.
-  void GetRepeatableQueriesFromServer();
-  void RepeatableQueriesResponseLoaded(network::SimpleURLLoader* loader,
-                                       std::unique_ptr<std::string> response);
-  void RepeatableQueriesParsed(data_decoder::DataDecoder::ValueOrError result);
-
-  // Queries the in-memory URLDatabase for the repeatable queries submitted
-  // to the default search provider. Called for unauthenticated users.
-  void GetRepeatableQueriesFromURLDatabase();
-
-  // Deletes |query| from the in-memory URLDatabase.
-  void DeleteRepeatableQueryFromURLDatabase(const std::u16string& query);
-  void DeleteRepeatableQueryFromURLDatabaseTask(const std::u16string& query,
-                                                history::URLDatabase* url_db);
-
-  // Deletes the query with |deletion_url| from the server.
-  void DeleteRepeatableQueryFromServer(const std::string& deletion_url);
-  void DeletionResponseLoaded(network::SimpleURLLoader* loader,
-                              std::unique_ptr<std::string> response);
-
-  void NotifyObservers();
-
-  bool IsQueryDeleted(const std::u16string& query);
-  void MarkQueryAsDeleted(const std::u16string& query);
-
-  history::HistoryService* history_service_;
-
-  TemplateURLService* template_url_service_;
-
-  scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory_;
-
-  const GURL request_initiator_url_;
-
-  std::unique_ptr<SigninObserver> signin_observer_;
-
-  std::unique_ptr<SearchProviderObserver> search_provider_observer_;
-
-  base::ObserverList<RepeatableQueriesServiceObserver, true> observers_;
-
-  std::vector<RepeatableQuery> repeatable_queries_;
-
-  // Used to ensure the deleted repeatable queries won't be suggested again.
-  // This does not need to be persisted across sessions as the queries do get
-  // deleted on the server as well as on the device, whichever is applicable.
-  std::set<std::u16string> deleted_repeatable_queries_;
-
-  std::vector<std::unique_ptr<network::SimpleURLLoader>> loaders_;
-
-  // The TaskRunner to which in-memory URLDatabase deletion tasks are posted.
-  scoped_refptr<base::SequencedTaskRunner> deletion_task_runner_;
-
-  base::WeakPtrFactory<RepeatableQueriesService> weak_ptr_factory_{this};
-};
-
-#endif  // COMPONENTS_SEARCH_REPEATABLE_QUERIES_REPEATABLE_QUERIES_SERVICE_H_
diff --git a/components/search/repeatable_queries/repeatable_queries_service_observer.h b/components/search/repeatable_queries/repeatable_queries_service_observer.h
deleted file mode 100644
index 2b17f87b..0000000
--- a/components/search/repeatable_queries/repeatable_queries_service_observer.h
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef COMPONENTS_SEARCH_REPEATABLE_QUERIES_REPEATABLE_QUERIES_SERVICE_OBSERVER_H_
-#define COMPONENTS_SEARCH_REPEATABLE_QUERIES_REPEATABLE_QUERIES_SERVICE_OBSERVER_H_
-
-// Observer class for the RepeatableQueriesService.
-class RepeatableQueriesServiceObserver : public base::CheckedObserver {
- public:
-  // Called after a Refresh() call on the service, either directly or as a
-  // result of default search provider or signin status change. Note that this
-  // is called after each Refresh(), even if the network request failed, or if
-  // it didn't result in an actual change to the cached data. Observers can get
-  // the repeatable queries via RepeatableQueriesService::repeatable_queries().
-  virtual void OnRepeatableQueriesUpdated() = 0;
-
-  // Called when the service is shutting down allowing the observers to
-  // unregister themselves and clear references to the service.
-  virtual void OnRepeatableQueriesServiceShuttingDown() {}
-};
-
-#endif  // COMPONENTS_SEARCH_REPEATABLE_QUERIES_REPEATABLE_QUERIES_SERVICE_OBSERVER_H_
diff --git a/components/search/repeatable_queries/repeatable_queries_service_unittest.cc b/components/search/repeatable_queries/repeatable_queries_service_unittest.cc
deleted file mode 100644
index 034f29d..0000000
--- a/components/search/repeatable_queries/repeatable_queries_service_unittest.cc
+++ /dev/null
@@ -1,702 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "components/search/repeatable_queries/repeatable_queries_service.h"
-
-#include <memory>
-#include <utility>
-#include <vector>
-
-#include "base/callback_helpers.h"
-#include "base/cancelable_callback.h"
-#include "base/files/scoped_temp_dir.h"
-#include "base/strings/utf_string_conversions.h"
-#include "base/test/metrics/histogram_tester.h"
-#include "base/test/task_environment.h"
-#include "build/build_config.h"
-#include "components/bookmarks/browser/bookmark_model.h"
-#include "components/bookmarks/test/test_bookmark_client.h"
-#include "components/history/core/browser/history_service.h"
-#include "components/history/core/browser/url_database.h"
-#include "components/history/core/test/history_service_test_util.h"
-#include "components/omnibox/browser/in_memory_url_index.h"
-#include "components/omnibox/browser/in_memory_url_index_test_util.h"
-#include "components/search/search.h"
-#include "components/search/search_provider_observer.h"
-#include "components/search_engines/search_engines_test_util.h"
-#include "components/search_engines/template_url_service.h"
-#include "components/signin/public/base/test_signin_client.h"
-#include "components/signin/public/identity_manager/identity_test_environment.h"
-#include "components/signin/public/identity_manager/identity_test_utils.h"
-#include "services/data_decoder/public/cpp/test_support/in_process_data_decoder.h"
-#include "testing/gmock/include/gmock/gmock.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "third_party/abseil-cpp/absl/types/optional.h"
-
-using base::Time;
-using base::TimeDelta;
-
-namespace {
-
-std::string GoodServerResponse() {
-  return R"()]}'
-[
-   "",
-   [
-      "server query 1",
-      "server query 2",
-      "server query 3"
-   ],
-   [],
-   [],
-   {
-      "google:suggestdetail":[
-         {
-            "du":"/delete?server+query+1"
-         },
-         {
-            "du":"/delete?server+query+2"
-         },
-         {
-            "du":"/delete?server+query+3"
-         }
-      ]
-   }
-])";
-}
-
-std::string BadServerResponse1() {
-  return R"()]}'
-[
-   "",
-   [
-      "server query 1",
-      "server query 2",
-      "server query 3"
-   ],
-   [],
-   [],
-   {
-   }
-])";
-}
-
-std::string BadServerResponse2() {
-  return R"()]}'
-[
-   "",
-   [
-      "server query 1",
-      "server query 2",
-      "server query 3"
-   ],
-   [],
-   [],
-   {
-      "google:suggestdetail":[
-         {
-            "du":"/delete?server+query+1"
-         },
-         {
-            "du":"/delete?server+query+2"
-         },
-      ]
-   }
-])";
-}
-
-// Used to populate the URLDatabase.
-struct TestURLData {
-  const TemplateURL* search_provider;
-  std::string search_terms;
-  int age_in_seconds;
-  int visit_count = 1;
-  std::string title = "";
-  int typed_count = 1;
-  bool hidden = false;
-};
-
-}  // namespace
-
-class MockSearchProviderObserver : public SearchProviderObserver {
- public:
-  MockSearchProviderObserver()
-      : SearchProviderObserver(/*template_url_service=*/nullptr,
-                               base::DoNothing::Repeatedly()) {}
-  ~MockSearchProviderObserver() override = default;
-
-  MOCK_METHOD0(is_google, bool());
-};
-
-class TestRepeatableQueriesService : public RepeatableQueriesService {
- public:
-  TestRepeatableQueriesService(
-      signin::IdentityManager* identity_manager,
-      history::HistoryService* history_service,
-      TemplateURLService* template_url_service,
-      scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
-      const GURL& request_initiator_url)
-      : RepeatableQueriesService(identity_manager,
-                                 history_service,
-                                 template_url_service,
-                                 std::move(url_loader_factory),
-                                 request_initiator_url) {}
-  ~TestRepeatableQueriesService() override = default;
-
-  MockSearchProviderObserver* search_provider_observer() override {
-    return &search_provider_observer_;
-  }
-
-  void SearchProviderChanged() {
-    RepeatableQueriesService::SearchProviderChanged();
-  }
-
-  void SigninStatusChanged() {
-    RepeatableQueriesService::SigninStatusChanged();
-  }
-
-  void FlushForTesting(base::OnceClosure flushed) {
-    RepeatableQueriesService::FlushForTesting(std::move(flushed));
-  }
-
-  GURL GetQueryDestinationURL(const std::u16string& query,
-                              const TemplateURL* search_provider) {
-    return RepeatableQueriesService::GetQueryDestinationURL(query,
-                                                            search_provider);
-  }
-
-  GURL GetQueryDeletionURL(const std::string& deletion_url) {
-    return RepeatableQueriesService::GetQueryDeletionURL(deletion_url);
-  }
-
-  GURL GetRequestURL() { return RepeatableQueriesService::GetRequestURL(); }
-
-  testing::NiceMock<MockSearchProviderObserver> search_provider_observer_;
-};
-
-class RepeatableQueriesServiceTest : public ::testing::Test,
-                                     public RepeatableQueriesServiceObserver {
- public:
-  RepeatableQueriesServiceTest() = default;
-  ~RepeatableQueriesServiceTest() override = default;
-
-  void SetUp() override {
-    bookmark_model_ = bookmarks::TestBookmarkClient::CreateModel();
-
-    CHECK(history_dir_.CreateUniqueTempDir());
-    history_service_ = history::CreateHistoryService(
-        history_dir_.GetPath(), /*create_history_db=*/true);
-
-    in_memory_url_index_ = std::make_unique<InMemoryURLIndex>(
-        bookmark_model_.get(), history_service_.get(), nullptr,
-        history_dir_.GetPath(), SchemeSet());
-    in_memory_url_index_->Init();
-
-    template_url_service_ = std::make_unique<TemplateURLService>(nullptr, 0);
-
-    // Add the fallback default search provider to the TemplateURLService so
-    // that it gets a valid unique identifier. Make the newly added provider the
-    // user selected default search provider.
-    TemplateURL* default_provider = template_url_service_->Add(
-        std::make_unique<TemplateURL>(default_search_provider()->data()));
-    template_url_service_->SetUserSelectedDefaultSearchProvider(
-        default_provider);
-    // Verify that Google is the default search provider.
-    EXPECT_TRUE(
-        search::DefaultSearchProviderIsGoogle(template_url_service_.get()));
-
-    identity_env_ = std::make_unique<signin::IdentityTestEnvironment>(
-        &test_url_loader_factory_);
-    identity_env_->MakePrimaryAccountAvailable("example@gmail.com");
-    identity_env_->SetAutomaticIssueOfAccessTokens(true);
-
-    service_ = std::make_unique<TestRepeatableQueriesService>(
-        identity_env_->identity_manager(), history_service_.get(),
-        template_url_service_.get(),
-        base::MakeRefCounted<network::WeakWrapperSharedURLLoaderFactory>(
-            &test_url_loader_factory_),
-        GURL());
-    EXPECT_TRUE(service_->repeatable_queries().empty());
-    service_->AddObserver(this);
-  }
-
-  void TearDown() override {
-    // RepeatableQueriesService must be explicitly shut down so that its
-    // observers can unregister.
-    service_->Shutdown();
-    // InMemoryURLIndex must be explicitly shut down or it will DCHECK() in
-    // its destructor.
-    in_memory_url_index_->Shutdown();
-
-    WaitForRepeatableQueriesService();
-    WaitForHistoryService();
-    WaitForInMemoryURLIndex();
-  }
-
-  const TemplateURL* default_search_provider() {
-    return template_url_service_->GetDefaultSearchProvider();
-  }
-
-  network::TestURLLoaderFactory* test_url_loader_factory() {
-    return &test_url_loader_factory_;
-  }
-
-  TestRepeatableQueriesService* service() { return service_.get(); }
-
-  void set_service_is_done(bool is_done) { service_is_done_ = is_done; }
-
-  void SignIn() {
-    AccountInfo account_info =
-        identity_env_->MakeAccountAvailable("test@email.com");
-    identity_env_->SetCookieAccounts({{account_info.email, account_info.gaia}});
-  }
-
-  void SignOut() { identity_env_->SetCookieAccounts({}); }
-
-  GURL GetQueryDestinationURL(const std::string& query) {
-    return service_->GetQueryDestinationURL(base::ASCIIToUTF16(query),
-                                            default_search_provider());
-  }
-
-  void RefreshAndMaybeWaitForService() {
-    service_is_done_ = false;
-    service_->Refresh();
-    MaybeWaitForService();
-  }
-
-  void MaybeWaitForService() {
-    if (!service_is_done_) {
-      service_run_loop_ = std::make_unique<base::RunLoop>();
-      // Quits in OnRepeatableQueriesUpdated when the service is done.
-      service_run_loop_->Run();
-    }
-  }
-
-  // Fills the URLDatabase with search URLs created using the provided data.
-  void FillURLDatabase(const std::vector<TestURLData>& url_data_list) {
-    const Time now = Time::Now();
-    for (const auto& entry : url_data_list) {
-      TemplateURLRef::SearchTermsArgs search_terms_args(
-          base::UTF8ToUTF16(entry.search_terms));
-      const auto& search_terms_data =
-          template_url_service_->search_terms_data();
-      std::string search_url =
-          entry.search_provider->url_ref().ReplaceSearchTerms(
-              search_terms_args, search_terms_data);
-      history_service_->AddPageWithDetails(
-          GURL(search_url), base::UTF8ToUTF16(entry.title), entry.visit_count,
-          entry.typed_count, now - TimeDelta::FromSeconds(entry.age_in_seconds),
-          entry.hidden, history::SOURCE_BROWSED);
-      history_service_->SetKeywordSearchTermsForURL(
-          GURL(search_url), entry.search_provider->id(),
-          base::UTF8ToUTF16(entry.search_terms));
-      WaitForHistoryService();
-    }
-  }
-
-  // Waits for RepeatableQueriesService's async operations.
-  void WaitForRepeatableQueriesService() {
-    base::RunLoop run_loop;
-    service_->FlushForTesting(run_loop.QuitClosure());
-    run_loop.Run();
-  }
-
-  // Waits for history::HistoryService's async operations.
-  void WaitForHistoryService() {
-    history::BlockUntilHistoryProcessesPendingRequests(history_service_.get());
-  }
-
-  // Waits for InMemoryURLIndex's async operations.
-  void WaitForInMemoryURLIndex() {
-    BlockUntilInMemoryURLIndexIsRefreshed(in_memory_url_index_.get());
-  }
-
- private:
-  base::test::TaskEnvironment task_environment_;
-  std::unique_ptr<base::RunLoop> service_run_loop_;
-  std::unique_ptr<bookmarks::BookmarkModel> bookmark_model_;
-  std::unique_ptr<history::HistoryService> history_service_;
-  std::unique_ptr<InMemoryURLIndex> in_memory_url_index_;
-  base::ScopedTempDir history_dir_;
-  std::unique_ptr<TemplateURLService> template_url_service_;
-  data_decoder::test::InProcessDataDecoder in_process_data_decoder_;
-  network::TestURLLoaderFactory test_url_loader_factory_;
-  std::unique_ptr<signin::IdentityTestEnvironment> identity_env_;
-  std::unique_ptr<TestRepeatableQueriesService> service_;
-  bool service_is_done_ = false;
-
-  // RepeatableQueriesServiceObserver
-  void OnRepeatableQueriesUpdated() override;
-  void OnRepeatableQueriesServiceShuttingDown() override;
-};
-
-void RepeatableQueriesServiceTest::OnRepeatableQueriesUpdated() {
-  service_is_done_ = true;
-  if (service_run_loop_) {
-    service_run_loop_->Quit();
-  }
-}
-
-void RepeatableQueriesServiceTest::OnRepeatableQueriesServiceShuttingDown() {
-  service_->RemoveObserver(this);
-}
-
-// TODO(crbug.com/1151909) Test fails on iOS
-// TODO(crbug.com/1177139) Re-enable test
-TEST_F(RepeatableQueriesServiceTest, DISABLED_SignedIn) {
-  SignIn();
-  test_url_loader_factory()->AddResponse(service()->GetRequestURL().spec(),
-                                         GoodServerResponse());
-
-  EXPECT_CALL(*service()->search_provider_observer(), is_google())
-      .WillOnce(testing::Return(true));
-
-  // Request a refresh.
-  RefreshAndMaybeWaitForService();
-  // The first two server suggestions are kept as repeatable queries.
-  std::vector<RepeatableQuery> expected_server_queries{
-      {u"server query 1", GetQueryDestinationURL("server query 1"),
-       "/delete?server+query+1"},
-      {u"server query 2", GetQueryDestinationURL("server query 2"),
-       "/delete?server+query+2"}};
-  EXPECT_EQ(expected_server_queries, service()->repeatable_queries());
-}
-
-// TODO(crbug.com/1151909) Test fails on iOS
-// TODO(crbug.com/1170500) Test fails also on other platforms
-TEST_F(RepeatableQueriesServiceTest, DISABLED_SignedIn_BadResponse) {
-  SignIn();
-  test_url_loader_factory()->AddResponse(service()->GetRequestURL().spec(),
-                                         GoodServerResponse());
-
-  EXPECT_CALL(*service()->search_provider_observer(), is_google())
-      .WillRepeatedly(testing::Return(true));
-
-  // Request a refresh.
-  RefreshAndMaybeWaitForService();
-  std::vector<RepeatableQuery> expected_server_queries{
-      {u"server query 1", GetQueryDestinationURL("server query 1"),
-       "/delete?server+query+1"},
-      {u"server query 2", GetQueryDestinationURL("server query 2"),
-       "/delete?server+query+2"}};
-  EXPECT_EQ(expected_server_queries, service()->repeatable_queries());
-
-  test_url_loader_factory()->AddResponse(service()->GetRequestURL().spec(),
-                                         BadServerResponse1());
-
-  // Request a refresh.
-  RefreshAndMaybeWaitForService();
-  // Cached data is cleared.
-  EXPECT_TRUE(service()->repeatable_queries().empty());
-
-  test_url_loader_factory()->AddResponse(service()->GetRequestURL().spec(),
-                                         BadServerResponse2());
-
-  // Request a refresh.
-  RefreshAndMaybeWaitForService();
-  // Cached data is still empty.
-  EXPECT_TRUE(service()->repeatable_queries().empty());
-}
-
-// TODO(crbug.com/1151909) Test fails on iOS
-// TODO(crbug.com/1170500) Test fails also on other platforms
-TEST_F(RepeatableQueriesServiceTest, DISABLED_SignedIn_ErrorResponse) {
-  SignIn();
-  test_url_loader_factory()->AddResponse(service()->GetRequestURL().spec(),
-                                         GoodServerResponse());
-
-  EXPECT_CALL(*service()->search_provider_observer(), is_google())
-      .WillRepeatedly(testing::Return(true));
-
-  // Request a refresh.
-  RefreshAndMaybeWaitForService();
-  std::vector<RepeatableQuery> expected_server_queries{
-      {u"server query 1", GetQueryDestinationURL("server query 1"),
-       "/delete?server+query+1"},
-      {u"server query 2", GetQueryDestinationURL("server query 2"),
-       "/delete?server+query+2"}};
-  EXPECT_EQ(expected_server_queries, service()->repeatable_queries());
-
-  test_url_loader_factory()->AddResponse(
-      service()->GetRequestURL(), network::mojom::URLResponseHead::New(),
-      std::string(), network::URLLoaderCompletionStatus(net::HTTP_NOT_FOUND));
-
-  // Request a refresh.
-  RefreshAndMaybeWaitForService();
-  // Cached data is kept.
-  EXPECT_EQ(expected_server_queries, service()->repeatable_queries());
-}
-
-// TODO(crbug.com/1151909) Test fails on iOS
-// TODO(crbug.com/1158533): This test is disabled because it has been failing
-// intermittently on all platforms.
-TEST_F(RepeatableQueriesServiceTest,
-       DISABLED_SignedIn_DefaultSearchProviderChanged) {
-  SignIn();
-  test_url_loader_factory()->AddResponse(service()->GetRequestURL().spec(),
-                                         GoodServerResponse());
-
-  EXPECT_CALL(*service()->search_provider_observer(), is_google())
-      .WillOnce(testing::Return(true))
-      .WillOnce(testing::Return(false));
-
-  // Request a refresh.
-  RefreshAndMaybeWaitForService();
-  std::vector<RepeatableQuery> expected_server_queries{
-      {u"server query 1", GetQueryDestinationURL("server query 1"),
-       "/delete?server+query+1"},
-      {u"server query 2", GetQueryDestinationURL("server query 2"),
-       "/delete?server+query+2"}};
-  EXPECT_EQ(expected_server_queries, service()->repeatable_queries());
-
-  set_service_is_done(false);
-  // Simulate DSP change. Requests a refresh.
-  service()->SearchProviderChanged();
-  MaybeWaitForService();
-  // Cached data is cleared.
-  EXPECT_TRUE(service()->repeatable_queries().empty());
-}
-
-// TODO(crbug.com/1151909) Test fails on iOS
-// TODO(crbug.com/1170500) Test fails also on other platforms
-TEST_F(RepeatableQueriesServiceTest, DISABLED_SignedIn_SigninStatusChanged) {
-  base::HistogramTester histogram_tester;
-
-  SignIn();
-  test_url_loader_factory()->AddResponse(service()->GetRequestURL().spec(),
-                                         GoodServerResponse());
-
-  EXPECT_CALL(*service()->search_provider_observer(), is_google())
-      .WillRepeatedly(testing::Return(true));
-
-  // Request a refresh.
-  RefreshAndMaybeWaitForService();
-  std::vector<RepeatableQuery> expected_server_queries{
-      {u"server query 1", GetQueryDestinationURL("server query 1"),
-       "/delete?server+query+1"},
-      {u"server query 2", GetQueryDestinationURL("server query 2"),
-       "/delete?server+query+2"}};
-  EXPECT_EQ(expected_server_queries, service()->repeatable_queries());
-
-  int original_query_age =
-      history::kAutocompleteDuplicateVisitIntervalThreshold.InSeconds() + 3;
-  FillURLDatabase({
-      // Issued far enough from the original query; won't be ignored:
-      {default_search_provider(), "more recent local query",
-       /*age_in_seconds=*/0},
-      // Issued far enough from the original query; won't be ignored:
-      {default_search_provider(), "less recent local query",
-       /*age_in_seconds=*/1},
-      {default_search_provider(), "less recent local query",
-       /*age_in_seconds=*/original_query_age},
-      {default_search_provider(), "more recent local query",
-       /*age_in_seconds=*/original_query_age},
-  });
-
-  set_service_is_done(false);
-  SignOut();  // Requests a refresh.
-  MaybeWaitForService();
-  // Cached data is updated to local results.
-  std::vector<RepeatableQuery> expected_local_queries{
-      {u"more recent local query",
-       GetQueryDestinationURL("more recent local query"), ""},
-      {u"less recent local query",
-       GetQueryDestinationURL("less recent local query"), ""}};
-  EXPECT_EQ(expected_local_queries, service()->repeatable_queries());
-
-  histogram_tester.ExpectTotalCount(
-      RepeatableQueriesService::kExtractionDurationHistogram, 1);
-  histogram_tester.ExpectTotalCount(
-      RepeatableQueriesService::kExtractedCountHistogram, 1);
-  histogram_tester.ExpectUniqueSample(
-      RepeatableQueriesService::kExtractedCountHistogram, 2, 1);
-}
-
-// TODO(crbug.com/1151909) Test fails on iOS
-// TODO(crbug.com/1170500) Test fails also on other platforms
-TEST_F(RepeatableQueriesServiceTest, DISABLED_SignedIn_Deletion) {
-  SignIn();
-  test_url_loader_factory()->AddResponse(service()->GetRequestURL().spec(),
-                                         GoodServerResponse());
-
-  EXPECT_CALL(*service()->search_provider_observer(), is_google())
-      .WillRepeatedly(testing::Return(true));
-
-  // Request a refresh.
-  RefreshAndMaybeWaitForService();
-  std::vector<RepeatableQuery> expected_server_queries{
-      {u"server query 1", GetQueryDestinationURL("server query 1"),
-       "/delete?server+query+1"},
-      {u"server query 2", GetQueryDestinationURL("server query 2"),
-       "/delete?server+query+2"}};
-  EXPECT_EQ(expected_server_queries, service()->repeatable_queries());
-
-  // Try to delete a query suggestion not provided by the service.
-  set_service_is_done(false);
-  service()->DeleteQueryWithDestinationURL(GetQueryDestinationURL("blah"));
-  // No request to delete the suggestion was sent.
-  EXPECT_TRUE(test_url_loader_factory()->pending_requests()->empty());
-  MaybeWaitForService();
-  // Suggestions should not change.
-  EXPECT_EQ(expected_server_queries, service()->repeatable_queries());
-
-  // Delete the query suggestion provided by the service.
-  set_service_is_done(false);
-  service()->DeleteQueryWithDestinationURL(
-      GetQueryDestinationURL("server query 1"));
-  // A request to delete the suggestion was sent.
-  EXPECT_EQ(1u, test_url_loader_factory()->pending_requests()->size());
-  EXPECT_EQ(test_url_loader_factory()->GetPendingRequest(0)->request.url,
-            service()->GetQueryDeletionURL("/delete?server+query+1"));
-  MaybeWaitForService();
-  expected_server_queries = {{u"server query 2",
-                              GetQueryDestinationURL("server query 2"),
-                              "/delete?server+query+2"}};
-  // The deleted suggestion is not offered anymore.
-  EXPECT_EQ(expected_server_queries, service()->repeatable_queries());
-
-  expected_server_queries = {
-      {u"server query 2", GetQueryDestinationURL("server query 2"),
-       "/delete?server+query+2"},
-      {u"server query 3", GetQueryDestinationURL("server query 3"),
-       "/delete?server+query+3"}};
-  // Request a refresh.
-  RefreshAndMaybeWaitForService();
-  // The deleted suggestion will not be offered again.
-  EXPECT_EQ(expected_server_queries, service()->repeatable_queries());
-}
-
-// TODO(crbug.com/1151909) Test fails on iOS simulators
-// TODO(crbug.com/1170500) Test fails also on other platforms
-TEST_F(RepeatableQueriesServiceTest,
-       DISABLED_SignedOut_DefaultSearchProviderChanged) {
-  int original_query_age =
-      history::kAutocompleteDuplicateVisitIntervalThreshold.InSeconds() + 3;
-  FillURLDatabase({
-      // Issued far enough from the original query; won't be ignored:
-      {default_search_provider(), "more recent local query",
-       /*age_in_seconds=*/0},
-      // Issued far enough from the original query; won't be ignored:
-      {default_search_provider(), "less recent local query",
-       /*age_in_seconds=*/1},
-      {default_search_provider(), "less recent local query",
-       /*age_in_seconds=*/original_query_age},
-      {default_search_provider(), "more recent local query",
-       /*age_in_seconds=*/original_query_age},
-  });
-
-  EXPECT_CALL(*service()->search_provider_observer(), is_google())
-      .WillOnce(testing::Return(true))
-      .WillOnce(testing::Return(false));
-
-  // Request a refresh.
-  RefreshAndMaybeWaitForService();
-  std::vector<RepeatableQuery> expected_local_queries{
-      {u"more recent local query",
-       GetQueryDestinationURL("more recent local query"), ""},
-      {u"less recent local query",
-       GetQueryDestinationURL("less recent local query"), ""}};
-  EXPECT_EQ(expected_local_queries, service()->repeatable_queries());
-
-  set_service_is_done(false);
-  // Simulate DSP change. Requests a refresh.
-  service()->SearchProviderChanged();
-  MaybeWaitForService();
-  // Cached data is cleared.
-  EXPECT_TRUE(service()->repeatable_queries().empty());
-}
-
-// TODO(crbug.com/1151909) Test fails on iOS
-// TODO(crbug.com/1170500) Test fails also on other platforms
-TEST_F(RepeatableQueriesServiceTest, DISABLED_SignedOut_SigninStatusChanged) {
-  int original_query_age =
-      history::kAutocompleteDuplicateVisitIntervalThreshold.InSeconds() + 3;
-  FillURLDatabase({
-      // Issued far enough from the original query; won't be ignored:
-      {default_search_provider(), "more recent local query",
-       /*age_in_seconds=*/0},
-      // Issued far enough from the original query; won't be ignored:
-      {default_search_provider(), "less recent local query",
-       /*age_in_seconds=*/1},
-      {default_search_provider(), "less recent local query",
-       /*age_in_seconds=*/original_query_age},
-      {default_search_provider(), "more recent local query",
-       /*age_in_seconds=*/original_query_age},
-  });
-
-  EXPECT_CALL(*service()->search_provider_observer(), is_google())
-      .WillRepeatedly(testing::Return(true));
-
-  // Request a refresh.
-  RefreshAndMaybeWaitForService();
-  std::vector<RepeatableQuery> expected_local_queries{
-      {u"more recent local query",
-       GetQueryDestinationURL("more recent local query"), ""},
-      {u"less recent local query",
-       GetQueryDestinationURL("less recent local query"), ""}};
-  EXPECT_EQ(expected_local_queries, service()->repeatable_queries());
-
-  test_url_loader_factory()->AddResponse(service()->GetRequestURL().spec(),
-                                         GoodServerResponse());
-
-  set_service_is_done(false);
-  SignIn();  // Requests a refresh.
-  MaybeWaitForService();
-  // Cached data is updated to server results.
-  std::vector<RepeatableQuery> expected_server_queries{
-      {u"server query 1", GetQueryDestinationURL("server query 1"),
-       "/delete?server+query+1"},
-      {u"server query 2", GetQueryDestinationURL("server query 2"),
-       "/delete?server+query+2"}};
-  EXPECT_EQ(expected_server_queries, service()->repeatable_queries());
-}
-
-// TODO(crbug.com/1151909) Test fails on iOS
-// TODO(crbug.com/1170500) Test fails also on other platforms
-TEST_F(RepeatableQueriesServiceTest, DISABLED_SignedOut_Deletion) {
-  FillURLDatabase({{default_search_provider(), "local query 1",
-                    /*age_in_seconds=*/1},
-                   {default_search_provider(), "local query 2",
-                    /*age_in_seconds=*/2},
-                   {default_search_provider(), "local query 3",
-                    /*age_in_seconds=*/3}});
-
-  EXPECT_CALL(*service()->search_provider_observer(), is_google())
-      .WillRepeatedly(testing::Return(true));
-
-  // Request a refresh.
-  RefreshAndMaybeWaitForService();
-  std::vector<RepeatableQuery> expected_local_queries{
-      {u"local query 1", GetQueryDestinationURL("local query 1"), ""},
-      {u"local query 2", GetQueryDestinationURL("local query 2"), ""}};
-  EXPECT_EQ(expected_local_queries, service()->repeatable_queries());
-
-  // Try to delete a query suggestion not provided by the service.
-  set_service_is_done(false);
-  service()->DeleteQueryWithDestinationURL(GetQueryDestinationURL("blah"));
-  MaybeWaitForService();
-  // Suggestions should not change.
-  EXPECT_EQ(expected_local_queries, service()->repeatable_queries());
-
-  // Delete the query suggestion provided by the service.
-  set_service_is_done(false);
-  service()->DeleteQueryWithDestinationURL(
-      GetQueryDestinationURL("local query 1"));
-  MaybeWaitForService();
-  expected_local_queries = {
-      {u"local query 2", GetQueryDestinationURL("local query 2"), ""}};
-  // The deleted suggestion is not offered anymore.
-  EXPECT_EQ(expected_local_queries, service()->repeatable_queries());
-
-  // Make sure there is no pending deletion task.
-  WaitForRepeatableQueriesService();
-
-  // Request a refresh.
-  RefreshAndMaybeWaitForService();
-  expected_local_queries = {
-      {u"local query 2", GetQueryDestinationURL("local query 2"), ""},
-      {u"local query 3", GetQueryDestinationURL("local query 3"), ""}};
-  // The deleted suggestion will not be offered again.
-  EXPECT_EQ(expected_local_queries, service()->repeatable_queries());
-}
diff --git a/components/search_engines/template_url_prepopulate_data.cc b/components/search_engines/template_url_prepopulate_data.cc
index 150b548..f7495f04 100644
--- a/components/search_engines/template_url_prepopulate_data.cc
+++ b/components/search_engines/template_url_prepopulate_data.cc
@@ -4,8 +4,8 @@
 
 #include "components/search_engines/template_url_prepopulate_data.h"
 
+#include "base/cxx17_backports.h"
 #include "base/logging.h"
-#include "base/stl_util.h"
 #include "build/build_config.h"
 #include "components/country_codes/country_codes.h"
 #include "components/pref_registry/pref_registry_syncable.h"
diff --git a/components/search_engines/template_url_unittest.cc b/components/search_engines/template_url_unittest.cc
index 2cbb292..e8e615ed 100644
--- a/components/search_engines/template_url_unittest.cc
+++ b/components/search_engines/template_url_unittest.cc
@@ -7,8 +7,8 @@
 #include "base/base64.h"
 #include "base/base_paths.h"
 #include "base/command_line.h"
+#include "base/cxx17_backports.h"
 #include "base/i18n/case_conversion.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
diff --git a/components/segmentation_platform/OWNERS b/components/segmentation_platform/OWNERS
index ec92ff59..2c36451 100644
--- a/components/segmentation_platform/OWNERS
+++ b/components/segmentation_platform/OWNERS
@@ -1,2 +1,2 @@
 nyquist@chromium.org
-shaktisahu@chromium.org
\ No newline at end of file
+shaktisahu@chromium.org
diff --git a/components/services/filesystem/directory_impl_unittest.cc b/components/services/filesystem/directory_impl_unittest.cc
index 66c4279e..9b01593 100644
--- a/components/services/filesystem/directory_impl_unittest.cc
+++ b/components/services/filesystem/directory_impl_unittest.cc
@@ -8,8 +8,8 @@
 #include <map>
 #include <string>
 
+#include "base/cxx17_backports.h"
 #include "base/macros.h"
-#include "base/stl_util.h"
 #include "base/test/task_environment.h"
 #include "components/services/filesystem/directory_test_helper.h"
 #include "components/services/filesystem/public/mojom/directory.mojom.h"
diff --git a/components/services/quarantine/quarantine_unittest.cc b/components/services/quarantine/quarantine_unittest.cc
index 2e47de6..4a5b4072 100644
--- a/components/services/quarantine/quarantine_unittest.cc
+++ b/components/services/quarantine/quarantine_unittest.cc
@@ -8,11 +8,11 @@
 #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"
 #include "base/run_loop.h"
-#include "base/stl_util.h"
 #include "base/test/task_environment.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "url/gurl.h"
diff --git a/components/services/storage/dom_storage/legacy_dom_storage_database_unittest.cc b/components/services/storage/dom_storage/legacy_dom_storage_database_unittest.cc
index f187579..da7794e 100644
--- a/components/services/storage/dom_storage/legacy_dom_storage_database_unittest.cc
+++ b/components/services/storage/dom_storage/legacy_dom_storage_database_unittest.cc
@@ -4,11 +4,11 @@
 
 #include "components/services/storage/dom_storage/legacy_dom_storage_database.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/path_service.h"
-#include "base/stl_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "components/services/storage/public/cpp/filesystem/filesystem_proxy.h"
 #include "sql/statement.h"
diff --git a/components/services/storage/dom_storage/session_storage_metadata.cc b/components/services/storage/dom_storage/session_storage_metadata.cc
index c4aa4c0..d40ab0bc 100644
--- a/components/services/storage/dom_storage/session_storage_metadata.cc
+++ b/components/services/storage/dom_storage/session_storage_metadata.cc
@@ -4,9 +4,9 @@
 
 #include "components/services/storage/dom_storage/session_storage_metadata.h"
 
+#include "base/cxx17_backports.h"
 #include "base/logging.h"
 #include "base/macros.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_piece.h"
 #include "base/strings/string_util.h"
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 156d5a3..4a5010e 100644
--- a/components/services/storage/public/cpp/filesystem/filesystem_proxy_unittest.cc
+++ b/components/services/storage/public/cpp/filesystem/filesystem_proxy_unittest.cc
@@ -7,10 +7,10 @@
 #include <memory>
 
 #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"
-#include "base/stl_util.h"
 #include "base/task/post_task.h"
 #include "base/task/thread_pool.h"
 #include "base/test/task_environment.h"
diff --git a/components/services/storage/public/mojom/storage_key/OWNERS b/components/services/storage/public/mojom/storage_key/OWNERS
index d970307..1feb514 100644
--- a/components/services/storage/public/mojom/storage_key/OWNERS
+++ b/components/services/storage/public/mojom/storage_key/OWNERS
@@ -1,4 +1,4 @@
 per-file *.mojom=set noparent
 per-file *.mojom=file://ipc/SECURITY_OWNERS
 per-file *_mojom_traits*.*=set noparent
-per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS
\ No newline at end of file
+per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS
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 e0a8e29..dbab889 100644
--- a/components/services/storage/service_worker/service_worker_storage_unittest.cc
+++ b/components/services/storage/service_worker/service_worker_storage_unittest.cc
@@ -11,10 +11,10 @@
 
 #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"
-#include "base/stl_util.h"
 #include "base/test/bind.h"
 #include "base/test/task_environment.h"
 #include "base/threading/thread_task_runner_handle.h"
diff --git a/components/sessions/content/content_serialized_navigation_builder_unittest.cc b/components/sessions/content/content_serialized_navigation_builder_unittest.cc
index eb5fb06..88a91e8 100644
--- a/components/sessions/content/content_serialized_navigation_builder_unittest.cc
+++ b/components/sessions/content/content_serialized_navigation_builder_unittest.cc
@@ -62,32 +62,32 @@
   DISALLOW_COPY_AND_ASSIGN(TestExtendedInfoHandler);
 };
 
-// Create a NavigationEntry from the test_data constants in
-// serialized_navigation_entry_test_helper.h.
 std::unique_ptr<content::NavigationEntry> MakeNavigationEntryForTest() {
   std::unique_ptr<content::NavigationEntry> navigation_entry(
       content::NavigationEntry::Create());
   navigation_entry->SetReferrer(content::Referrer(
-      test_data::ReferrerUrl(),
+      GURL("http://www.referrer.com"),
       static_cast<network::mojom::ReferrerPolicy>(test_data::kReferrerPolicy)));
-  navigation_entry->SetURL(test_data::Url());
-  navigation_entry->SetVirtualURL(test_data::VirtualUrl());
+  navigation_entry->SetURL(GURL("http://www.url.com"));
+  navigation_entry->SetVirtualURL(GURL("http://www.virtual-url.com"));
   navigation_entry->SetTitle(test_data::kTitle);
   navigation_entry->SetTransitionType(test_data::kTransitionType);
   navigation_entry->SetHasPostData(test_data::kHasPostData);
   navigation_entry->SetPostID(test_data::kPostID);
-  navigation_entry->SetOriginalRequestURL(test_data::OriginalRequestUrl());
+  navigation_entry->SetOriginalRequestURL(
+      GURL("http://www.original-request.com"));
   navigation_entry->SetIsOverridingUserAgent(test_data::kIsOverridingUserAgent);
   navigation_entry->SetTimestamp(test_data::kTimestamp);
   SetPasswordStateInNavigation(test_data::kPasswordState,
                                navigation_entry.get());
   navigation_entry->GetFavicon().valid = true;
-  navigation_entry->GetFavicon().url = test_data::FaviconUrl();
+  navigation_entry->GetFavicon().url =
+      GURL("http://virtual-url.com/favicon.ico");
   navigation_entry->SetHttpStatusCode(test_data::kHttpStatusCode);
   std::vector<GURL> redirect_chain;
-  redirect_chain.push_back(test_data::RedirectUrl0());
-  redirect_chain.push_back(test_data::RedirectUrl1());
-  redirect_chain.push_back(test_data::VirtualUrl());
+  redirect_chain.emplace_back("http://go/redirect0");
+  redirect_chain.emplace_back("http://go/redirect1");
+  redirect_chain.push_back(navigation_entry->GetVirtualURL());
   navigation_entry->SetRedirectChain(redirect_chain);
   NavigationTaskId::Get(navigation_entry.get())->set_id(test_data::kTaskId);
   NavigationTaskId::Get(navigation_entry.get())
@@ -146,27 +146,29 @@
   EXPECT_EQ(test_data::kIndex, navigation.index());
 
   EXPECT_EQ(navigation_entry->GetUniqueID(), navigation.unique_id());
-  EXPECT_EQ(test_data::ReferrerUrl(), navigation.referrer_url());
-  EXPECT_EQ(test_data::kReferrerPolicy, navigation.referrer_policy());
-  EXPECT_EQ(test_data::VirtualUrl(), navigation.virtual_url());
-  EXPECT_EQ(test_data::kTitle, navigation.title());
+  EXPECT_EQ(navigation_entry->GetReferrer().url, navigation.referrer_url());
+  EXPECT_EQ(navigation_entry->GetReferrer().policy,
+            static_cast<network::mojom::ReferrerPolicy>(
+                navigation.referrer_policy()));
+  EXPECT_EQ(navigation_entry->GetVirtualURL(), navigation.virtual_url());
+  EXPECT_EQ(navigation_entry->GetTitle(), navigation.title());
   EXPECT_EQ(navigation_entry->GetPageState().ToEncodedData(),
             navigation.encoded_page_state());
   EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs(
-      navigation.transition_type(), test_data::kTransitionType));
-  EXPECT_EQ(test_data::kHasPostData, navigation.has_post_data());
-  EXPECT_EQ(test_data::kPostID, navigation.post_id());
-  EXPECT_EQ(test_data::OriginalRequestUrl(), navigation.original_request_url());
-  EXPECT_EQ(test_data::kIsOverridingUserAgent,
+      navigation.transition_type(), navigation_entry->GetTransitionType()));
+  EXPECT_EQ(navigation_entry->GetHasPostData(), navigation.has_post_data());
+  EXPECT_EQ(navigation_entry->GetPostID(), navigation.post_id());
+  EXPECT_EQ(navigation_entry->GetOriginalRequestURL(),
+            navigation.original_request_url());
+  EXPECT_EQ(navigation_entry->GetIsOverridingUserAgent(),
             navigation.is_overriding_user_agent());
-  EXPECT_EQ(test_data::kTimestamp, navigation.timestamp());
-  EXPECT_EQ(test_data::FaviconUrl(), navigation.favicon_url());
-  EXPECT_EQ(test_data::kHttpStatusCode, navigation.http_status_code());
-  ASSERT_EQ(3U, navigation.redirect_chain().size());
-  EXPECT_EQ(test_data::RedirectUrl0(), navigation.redirect_chain()[0]);
-  EXPECT_EQ(test_data::RedirectUrl1(), navigation.redirect_chain()[1]);
-  EXPECT_EQ(test_data::VirtualUrl(), navigation.redirect_chain()[2]);
-  EXPECT_EQ(test_data::kPasswordState, navigation.password_state());
+  EXPECT_EQ(navigation_entry->GetTimestamp(), navigation.timestamp());
+  EXPECT_EQ(navigation_entry->GetFavicon().url, navigation.favicon_url());
+  EXPECT_EQ(navigation_entry->GetHttpStatusCode(),
+            navigation.http_status_code());
+  EXPECT_EQ(navigation_entry->GetRedirectChain(), navigation.redirect_chain());
+  EXPECT_EQ(GetPasswordStateFromNavigation(navigation_entry.get()),
+            navigation.password_state());
 
   ASSERT_EQ(2U, navigation.extended_info_map().size());
   ASSERT_EQ(1U, navigation.extended_info_map().count(kExtendedInfoKey1));
@@ -176,9 +178,11 @@
   EXPECT_EQ(kExtendedInfoValue2,
             navigation.extended_info_map().at(kExtendedInfoKey2));
 
-  EXPECT_EQ(test_data::kTaskId, navigation.task_id());
-  EXPECT_EQ(test_data::kParentTaskId, navigation.parent_task_id());
-  EXPECT_EQ(test_data::kRootTaskId, navigation.root_task_id());
+  sessions::NavigationTaskId* navigation_task_id =
+      sessions::NavigationTaskId::Get(navigation_entry.get());
+  EXPECT_EQ(navigation_task_id->id(), navigation.task_id());
+  EXPECT_EQ(navigation_task_id->parent_id(), navigation.parent_task_id());
+  EXPECT_EQ(navigation_task_id->root_id(), navigation.root_task_id());
 }
 
 // Test effect of the navigation serialization options.
@@ -221,37 +225,40 @@
       ContentSerializedNavigationBuilder::ToNavigationEntry(&navigation,
                                                             &browser_context));
 
-  EXPECT_EQ(test_data::ReferrerUrl(), new_navigation_entry->GetReferrer().url);
-  EXPECT_EQ(test_data::kReferrerPolicy,
-            static_cast<int>(new_navigation_entry->GetReferrer().policy));
-  EXPECT_EQ(test_data::Url(), new_navigation_entry->GetURL());
-  EXPECT_EQ(test_data::VirtualUrl(), new_navigation_entry->GetVirtualURL());
-  EXPECT_EQ(test_data::kTitle, new_navigation_entry->GetTitle());
+  EXPECT_EQ(old_navigation_entry->GetReferrer().url,
+            new_navigation_entry->GetReferrer().url);
+  EXPECT_EQ(old_navigation_entry->GetReferrer().policy,
+            new_navigation_entry->GetReferrer().policy);
+  EXPECT_EQ(old_navigation_entry->GetURL(), new_navigation_entry->GetURL());
+  EXPECT_EQ(old_navigation_entry->GetVirtualURL(),
+            new_navigation_entry->GetVirtualURL());
+  EXPECT_EQ(old_navigation_entry->GetTitle(), new_navigation_entry->GetTitle());
   EXPECT_EQ(old_navigation_entry->GetPageState().ToEncodedData(),
             new_navigation_entry->GetPageState().ToEncodedData());
   EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs(
       new_navigation_entry->GetTransitionType(), ui::PAGE_TRANSITION_RELOAD));
-  EXPECT_EQ(test_data::kHasPostData, new_navigation_entry->GetHasPostData());
-  EXPECT_EQ(test_data::kPostID, new_navigation_entry->GetPostID());
-  EXPECT_EQ(test_data::OriginalRequestUrl(),
+  EXPECT_EQ(old_navigation_entry->GetHasPostData(),
+            new_navigation_entry->GetHasPostData());
+  EXPECT_EQ(old_navigation_entry->GetPostID(),
+            new_navigation_entry->GetPostID());
+  EXPECT_EQ(old_navigation_entry->GetOriginalRequestURL(),
             new_navigation_entry->GetOriginalRequestURL());
-  EXPECT_EQ(test_data::kIsOverridingUserAgent,
+  EXPECT_EQ(old_navigation_entry->GetIsOverridingUserAgent(),
             new_navigation_entry->GetIsOverridingUserAgent());
-  EXPECT_EQ(test_data::kHttpStatusCode,
+  EXPECT_EQ(old_navigation_entry->GetHttpStatusCode(),
             new_navigation_entry->GetHttpStatusCode());
-  ASSERT_EQ(3U, new_navigation_entry->GetRedirectChain().size());
-  EXPECT_EQ(test_data::RedirectUrl0(),
-            new_navigation_entry->GetRedirectChain()[0]);
-  EXPECT_EQ(test_data::RedirectUrl1(),
-            new_navigation_entry->GetRedirectChain()[1]);
-  EXPECT_EQ(test_data::VirtualUrl(),
-            new_navigation_entry->GetRedirectChain()[2]);
+  EXPECT_EQ(old_navigation_entry->GetRedirectChain(),
+            new_navigation_entry->GetRedirectChain());
+
+  sessions::NavigationTaskId* old_navigation_task_id =
+      sessions::NavigationTaskId::Get(old_navigation_entry.get());
   sessions::NavigationTaskId* new_navigation_task_id =
       sessions::NavigationTaskId::Get(new_navigation_entry.get());
-
-  EXPECT_EQ(test_data::kTaskId, new_navigation_task_id->id());
-  EXPECT_EQ(test_data::kParentTaskId, new_navigation_task_id->parent_id());
-  EXPECT_EQ(test_data::kRootTaskId, new_navigation_task_id->root_id());
+  EXPECT_EQ(old_navigation_task_id->id(), new_navigation_task_id->id());
+  EXPECT_EQ(old_navigation_task_id->parent_id(),
+            new_navigation_task_id->parent_id());
+  EXPECT_EQ(old_navigation_task_id->root_id(),
+            new_navigation_task_id->root_id());
 
   TestData* test_data = static_cast<TestData*>(
       new_navigation_entry->GetUserData(kExtendedInfoKey1));
diff --git a/components/sessions/core/command_storage_backend_unittest.cc b/components/sessions/core/command_storage_backend_unittest.cc
index 97855b6..1dcc6f40 100644
--- a/components/sessions/core/command_storage_backend_unittest.cc
+++ b/components/sessions/core/command_storage_backend_unittest.cc
@@ -10,12 +10,12 @@
 
 #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"
 #include "base/path_service.h"
 #include "base/run_loop.h"
-#include "base/stl_util.h"
 #include "base/strings/string_util.h"
 #include "base/test/bind.h"
 #include "base/test/task_environment.h"
diff --git a/components/sessions/core/serialized_navigation_entry_test_helper.cc b/components/sessions/core/serialized_navigation_entry_test_helper.cc
index 2cda26a..93c94eb 100644
--- a/components/sessions/core/serialized_navigation_entry_test_helper.cc
+++ b/components/sessions/core/serialized_navigation_entry_test_helper.cc
@@ -40,33 +40,6 @@
 const int64_t kParentTaskId = 1;
 const int64_t kRootTaskId = 0;
 
-// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
-// function.
-GURL ReferrerUrl() {
-  return GURL("http://www.referrer.com");
-}
-GURL Url() {
-  return GURL("http://www.url.com");
-}
-GURL VirtualUrl() {
-  return GURL("http://www.virtual-url.com");
-}
-GURL OriginalRequestUrl() {
-  return GURL("http://www.original-request.com");
-}
-GURL FaviconUrl() {
-  return GURL("http://virtual-url.com/favicon.ico");
-}
-GURL RedirectUrl0() {
-  return GURL("http://go/redirect0");
-}
-GURL RedirectUrl1() {
-  return GURL("http://go/redirect1");
-}
-GURL OtherUrl() {
-  return GURL("http://other.com");
-}
-
 }  // namespace test_data
 
 // static
@@ -92,18 +65,18 @@
   SerializedNavigationEntry navigation;
   navigation.index_ = test_data::kIndex;
   navigation.unique_id_ = test_data::kUniqueID;
-  navigation.referrer_url_ = test_data::ReferrerUrl();
+  navigation.referrer_url_ = GURL("http://www.referrer.com");
   navigation.referrer_policy_ = test_data::kReferrerPolicy;
-  navigation.virtual_url_ = test_data::VirtualUrl();
+  navigation.virtual_url_ = GURL("http://www.virtual-url.com");
   navigation.title_ = test_data::kTitle;
   navigation.encoded_page_state_ = test_data::kEncodedPageState;
   navigation.transition_type_ = test_data::kTransitionType;
   navigation.has_post_data_ = test_data::kHasPostData;
   navigation.post_id_ = test_data::kPostID;
-  navigation.original_request_url_ = test_data::OriginalRequestUrl();
+  navigation.original_request_url_ = GURL("http://www.original-request.com");
   navigation.is_overriding_user_agent_ = test_data::kIsOverridingUserAgent;
   navigation.timestamp_ = test_data::kTimestamp;
-  navigation.favicon_url_ = test_data::FaviconUrl();
+  navigation.favicon_url_ = GURL("http://virtual-url.com/favicon.ico");
   navigation.http_status_code_ = test_data::kHttpStatusCode;
   navigation.password_state_ = test_data::kPasswordState;
 
@@ -112,9 +85,9 @@
   navigation.extended_info_map_[test_data::kExtendedInfoKey2] =
       test_data::kExtendedInfoValue2;
 
-  navigation.redirect_chain_.push_back(test_data::RedirectUrl0());
-  navigation.redirect_chain_.push_back(test_data::RedirectUrl1());
-  navigation.redirect_chain_.push_back(test_data::VirtualUrl());
+  navigation.redirect_chain_.emplace_back("http://go/redirect0");
+  navigation.redirect_chain_.emplace_back("http://go/redirect1");
+  navigation.redirect_chain_.push_back(navigation.virtual_url_);
   navigation.task_id_ = test_data::kTaskId;
   navigation.parent_task_id_ = test_data::kParentTaskId;
   navigation.root_task_id_ = test_data::kRootTaskId;
diff --git a/components/sessions/core/serialized_navigation_entry_test_helper.h b/components/sessions/core/serialized_navigation_entry_test_helper.h
index 9751aa69..ec6274f 100644
--- a/components/sessions/core/serialized_navigation_entry_test_helper.h
+++ b/components/sessions/core/serialized_navigation_entry_test_helper.h
@@ -44,17 +44,6 @@
 extern const int64_t kRootTaskId;
 extern const int64_t kTaskId;
 
-// TODO(https://crbug.com/1042727): Fix test GURL scoping and remove this getter
-// function.
-GURL ReferrerUrl();
-GURL Url();
-GURL VirtualUrl();
-GURL OriginalRequestUrl();
-GURL FaviconUrl();
-GURL RedirectUrl0();
-GURL RedirectUrl1();
-GURL OtherUrl();
-
 }  // namespace test_data
 
 // Set of test functions to manipulate a SerializedNavigationEntry.
diff --git a/components/sessions/core/serialized_navigation_entry_unittest.cc b/components/sessions/core/serialized_navigation_entry_unittest.cc
index 376b5df..ea35c50 100644
--- a/components/sessions/core/serialized_navigation_entry_unittest.cc
+++ b/components/sessions/core/serialized_navigation_entry_unittest.cc
@@ -63,36 +63,26 @@
   EXPECT_TRUE(new_navigation.ReadFromPickle(&pickle_iterator));
 
   // Fields that are written to the pickle.
-  EXPECT_EQ(test_data::kIndex, new_navigation.index());
-  EXPECT_EQ(test_data::ReferrerUrl(), new_navigation.referrer_url());
-  EXPECT_EQ(test_data::kReferrerPolicy, new_navigation.referrer_policy());
-  EXPECT_EQ(test_data::VirtualUrl(), new_navigation.virtual_url());
-  EXPECT_EQ(test_data::kTitle, new_navigation.title());
+  EXPECT_EQ(old_navigation.index(), new_navigation.index());
+  EXPECT_EQ(old_navigation.referrer_url(), new_navigation.referrer_url());
+  EXPECT_EQ(old_navigation.referrer_policy(), new_navigation.referrer_policy());
+  EXPECT_EQ(old_navigation.virtual_url(), new_navigation.virtual_url());
+  EXPECT_EQ(old_navigation.title(), new_navigation.title());
   EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs(
-      new_navigation.transition_type(), test_data::kTransitionType));
-  EXPECT_EQ(test_data::kHasPostData, new_navigation.has_post_data());
-  EXPECT_EQ(test_data::OriginalRequestUrl(),
+      new_navigation.transition_type(), old_navigation.transition_type()));
+  EXPECT_EQ(old_navigation.has_post_data(), new_navigation.has_post_data());
+  EXPECT_EQ(old_navigation.original_request_url(),
             new_navigation.original_request_url());
-  EXPECT_EQ(test_data::kIsOverridingUserAgent,
+  EXPECT_EQ(old_navigation.is_overriding_user_agent(),
             new_navigation.is_overriding_user_agent());
-  EXPECT_EQ(test_data::kTimestamp, new_navigation.timestamp());
-  EXPECT_EQ(test_data::kHttpStatusCode, new_navigation.http_status_code());
-
-  ASSERT_EQ(2U, new_navigation.extended_info_map().size());
-  ASSERT_EQ(1U, new_navigation.extended_info_map().count(
-                    test_data::kExtendedInfoKey1));
-  EXPECT_EQ(
-      test_data::kExtendedInfoValue1,
-      new_navigation.extended_info_map().at(test_data::kExtendedInfoKey1));
-  ASSERT_EQ(1U, new_navigation.extended_info_map().count(
-                    test_data::kExtendedInfoKey2));
-  EXPECT_EQ(
-      test_data::kExtendedInfoValue2,
-      new_navigation.extended_info_map().at(test_data::kExtendedInfoKey2));
-
-  EXPECT_EQ(test_data::kTaskId, new_navigation.task_id());
-  EXPECT_EQ(test_data::kParentTaskId, new_navigation.parent_task_id());
-  EXPECT_EQ(test_data::kRootTaskId, new_navigation.root_task_id());
+  EXPECT_EQ(old_navigation.timestamp(), new_navigation.timestamp());
+  EXPECT_EQ(old_navigation.http_status_code(),
+            new_navigation.http_status_code());
+  EXPECT_EQ(old_navigation.extended_info_map(),
+            new_navigation.extended_info_map());
+  EXPECT_EQ(old_navigation.task_id(), new_navigation.task_id());
+  EXPECT_EQ(old_navigation.parent_task_id(), new_navigation.parent_task_id());
+  EXPECT_EQ(old_navigation.root_task_id(), new_navigation.root_task_id());
 
   // Fields that are not written to the pickle.
   EXPECT_EQ(0, new_navigation.unique_id());
diff --git a/components/sessions/ios/ios_serialized_navigation_builder_unittest.mm b/components/sessions/ios/ios_serialized_navigation_builder_unittest.mm
index 5a6a1155..efaba8d 100644
--- a/components/sessions/ios/ios_serialized_navigation_builder_unittest.mm
+++ b/components/sessions/ios/ios_serialized_navigation_builder_unittest.mm
@@ -21,20 +21,20 @@
 namespace sessions {
 
 namespace {
-// Creates a NavigationItem from the test_data constants in
-// serialized_navigation_entry_test_helper.h.
+
 std::unique_ptr<web::NavigationItem> MakeNavigationItemForTest() {
   std::unique_ptr<web::NavigationItem> navigation_item(
       web::NavigationItem::Create());
   navigation_item->SetReferrer(web::Referrer(
-      test_data::ReferrerUrl(),
+      GURL("http://www.referrer.com"),
       static_cast<web::ReferrerPolicy>(test_data::kReferrerPolicy)));
-  navigation_item->SetURL(test_data::VirtualUrl());
+  navigation_item->SetURL(GURL("http://www.virtual-url.com"));
   navigation_item->SetTitle(test_data::kTitle);
   navigation_item->SetTransitionType(test_data::kTransitionType);
   navigation_item->SetTimestamp(test_data::kTimestamp);
   navigation_item->GetFavicon().valid = true;
-  navigation_item->GetFavicon().url = test_data::FaviconUrl();
+  navigation_item->GetFavicon().url =
+      GURL("http://virtual-url.com/favicon.ico");
   return navigation_item;
 }
 
@@ -53,14 +53,15 @@
   EXPECT_EQ(test_data::kIndex, navigation.index());
 
   EXPECT_EQ(navigation_item->GetUniqueID(), navigation.unique_id());
-  EXPECT_EQ(test_data::ReferrerUrl(), navigation.referrer_url());
-  EXPECT_EQ(test_data::kReferrerPolicy, navigation.referrer_policy());
-  EXPECT_EQ(test_data::VirtualUrl(), navigation.virtual_url());
-  EXPECT_EQ(test_data::kTitle, navigation.title());
+  EXPECT_EQ(navigation_item->GetReferrer().url, navigation.referrer_url());
+  EXPECT_EQ(navigation_item->GetReferrer().policy,
+            static_cast<web::ReferrerPolicy>(navigation.referrer_policy()));
+  EXPECT_EQ(navigation_item->GetVirtualURL(), navigation.virtual_url());
+  EXPECT_EQ(navigation_item->GetTitle(), navigation.title());
   EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs(
-      navigation.transition_type(), test_data::kTransitionType));
-  EXPECT_EQ(test_data::kTimestamp, navigation.timestamp());
-  EXPECT_EQ(test_data::FaviconUrl(), navigation.favicon_url());
+      navigation.transition_type(), navigation_item->GetTransitionType()));
+  EXPECT_EQ(navigation_item->GetTimestamp(), navigation.timestamp());
+  EXPECT_EQ(navigation_item->GetFavicon().url, navigation.favicon_url());
 
   // The following fields should be left at their default values.
   SerializedNavigationEntry default_navigation;
diff --git a/components/sessions/ios/ios_serialized_navigation_driver_unittest.cc b/components/sessions/ios/ios_serialized_navigation_driver_unittest.cc
index 530c3f33..eb3154c3 100644
--- a/components/sessions/ios/ios_serialized_navigation_driver_unittest.cc
+++ b/components/sessions/ios/ios_serialized_navigation_driver_unittest.cc
@@ -35,25 +35,30 @@
       SerializedNavigationEntryTestHelper::CreateNavigationForTest();
   SerializedNavigationEntryTestHelper::SetReferrerPolicy(
       web::ReferrerPolicyAlways, &navigation);
-
   driver->Sanitize(&navigation);
-  EXPECT_EQ(test_data::kIndex, navigation.index());
-  EXPECT_EQ(test_data::kUniqueID, navigation.unique_id());
-  EXPECT_EQ(test_data::ReferrerUrl(), navigation.referrer_url());
+
+  SerializedNavigationEntry reference_navigation =
+      SerializedNavigationEntryTestHelper::CreateNavigationForTest();
+  EXPECT_EQ(reference_navigation.index(), navigation.index());
+  EXPECT_EQ(reference_navigation.unique_id(), navigation.unique_id());
+  EXPECT_EQ(reference_navigation.referrer_url(), navigation.referrer_url());
   EXPECT_EQ(web::ReferrerPolicyAlways, navigation.referrer_policy());
-  EXPECT_EQ(test_data::VirtualUrl(), navigation.virtual_url());
-  EXPECT_EQ(test_data::kTitle, navigation.title());
-  EXPECT_EQ(test_data::kEncodedPageState, navigation.encoded_page_state());
+  EXPECT_EQ(reference_navigation.virtual_url(), navigation.virtual_url());
+  EXPECT_EQ(reference_navigation.title(), navigation.title());
+  EXPECT_EQ(reference_navigation.encoded_page_state(),
+            navigation.encoded_page_state());
   EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs(
-      navigation.transition_type(), test_data::kTransitionType));
-  EXPECT_EQ(test_data::kHasPostData, navigation.has_post_data());
-  EXPECT_EQ(test_data::kPostID, navigation.post_id());
-  EXPECT_EQ(test_data::OriginalRequestUrl(), navigation.original_request_url());
-  EXPECT_EQ(test_data::kIsOverridingUserAgent,
+      navigation.transition_type(), reference_navigation.transition_type()));
+  EXPECT_EQ(reference_navigation.has_post_data(), navigation.has_post_data());
+  EXPECT_EQ(reference_navigation.post_id(), navigation.post_id());
+  EXPECT_EQ(reference_navigation.original_request_url(),
+            navigation.original_request_url());
+  EXPECT_EQ(reference_navigation.is_overriding_user_agent(),
             navigation.is_overriding_user_agent());
-  EXPECT_EQ(test_data::kTimestamp, navigation.timestamp());
-  EXPECT_EQ(test_data::FaviconUrl(), navigation.favicon_url());
-  EXPECT_EQ(test_data::kHttpStatusCode, navigation.http_status_code());
+  EXPECT_EQ(reference_navigation.timestamp(), navigation.timestamp());
+  EXPECT_EQ(reference_navigation.favicon_url(), navigation.favicon_url());
+  EXPECT_EQ(reference_navigation.http_status_code(),
+            navigation.http_status_code());
 }
 
 // Tests that the input data is properly sanitized when the referrer policy is
@@ -69,21 +74,26 @@
   driver->Sanitize(&navigation);
 
   // Fields that should remain untouched.
-  EXPECT_EQ(test_data::kIndex, navigation.index());
-  EXPECT_EQ(test_data::kUniqueID, navigation.unique_id());
-  EXPECT_EQ(test_data::VirtualUrl(), navigation.virtual_url());
-  EXPECT_EQ(test_data::kTitle, navigation.title());
-  EXPECT_EQ(test_data::kEncodedPageState, navigation.encoded_page_state());
+  SerializedNavigationEntry reference_navigation =
+      SerializedNavigationEntryTestHelper::CreateNavigationForTest();
+  EXPECT_EQ(reference_navigation.index(), navigation.index());
+  EXPECT_EQ(reference_navigation.unique_id(), navigation.unique_id());
+  EXPECT_EQ(reference_navigation.virtual_url(), navigation.virtual_url());
+  EXPECT_EQ(reference_navigation.title(), navigation.title());
+  EXPECT_EQ(reference_navigation.encoded_page_state(),
+            navigation.encoded_page_state());
   EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs(
-      navigation.transition_type(), test_data::kTransitionType));
-  EXPECT_EQ(test_data::kHasPostData, navigation.has_post_data());
-  EXPECT_EQ(test_data::kPostID, navigation.post_id());
-  EXPECT_EQ(test_data::OriginalRequestUrl(), navigation.original_request_url());
-  EXPECT_EQ(test_data::kIsOverridingUserAgent,
+      navigation.transition_type(), reference_navigation.transition_type()));
+  EXPECT_EQ(reference_navigation.has_post_data(), navigation.has_post_data());
+  EXPECT_EQ(reference_navigation.post_id(), navigation.post_id());
+  EXPECT_EQ(reference_navigation.original_request_url(),
+            navigation.original_request_url());
+  EXPECT_EQ(reference_navigation.is_overriding_user_agent(),
             navigation.is_overriding_user_agent());
-  EXPECT_EQ(test_data::kTimestamp, navigation.timestamp());
-  EXPECT_EQ(test_data::FaviconUrl(), navigation.favicon_url());
-  EXPECT_EQ(test_data::kHttpStatusCode, navigation.http_status_code());
+  EXPECT_EQ(reference_navigation.timestamp(), navigation.timestamp());
+  EXPECT_EQ(reference_navigation.favicon_url(), navigation.favicon_url());
+  EXPECT_EQ(reference_navigation.http_status_code(),
+            navigation.http_status_code());
 
   // Fields that were sanitized.
   EXPECT_EQ(GURL(), navigation.referrer_url());
diff --git a/components/signin/core/browser/signin_error_controller_unittest.cc b/components/signin/core/browser/signin_error_controller_unittest.cc
index d428880..06df52a0 100644
--- a/components/signin/core/browser/signin_error_controller_unittest.cc
+++ b/components/signin/core/browser/signin_error_controller_unittest.cc
@@ -9,8 +9,8 @@
 #include <functional>
 #include <memory>
 
+#include "base/cxx17_backports.h"
 #include "base/scoped_observation.h"
-#include "base/stl_util.h"
 #include "base/test/task_environment.h"
 #include "build/chromeos_buildflags.h"
 #include "components/signin/public/identity_manager/identity_test_environment.h"
diff --git a/components/signin/public/android/java/src/org/chromium/components/signin/AccountManagerDelegate.java b/components/signin/public/android/java/src/org/chromium/components/signin/AccountManagerDelegate.java
index f36c1b3..e5e31e84 100644
--- a/components/signin/public/android/java/src/org/chromium/components/signin/AccountManagerDelegate.java
+++ b/components/signin/public/android/java/src/org/chromium/components/signin/AccountManagerDelegate.java
@@ -71,6 +71,12 @@
     boolean hasFeature(Account account, String feature);
 
     /**
+     * @return Whether the account has the requested capability.
+     */
+    @WorkerThread
+    boolean hasCapability(Account account, String capability);
+
+    /**
      * Creates an intent that will ask the user to add a new account to the device. See
      * {@link AccountManager#addAccount} for details.
      * @param callback The callback to get the created intent. Will be invoked on the main thread.
diff --git a/components/signin/public/android/java/src/org/chromium/components/signin/AccountManagerFacade.java b/components/signin/public/android/java/src/org/chromium/components/signin/AccountManagerFacade.java
index f43acc2..3dd5682 100644
--- a/components/signin/public/android/java/src/org/chromium/components/signin/AccountManagerFacade.java
+++ b/components/signin/public/android/java/src/org/chromium/components/signin/AccountManagerFacade.java
@@ -113,10 +113,10 @@
     void checkChildAccountStatus(Account account, ChildAccountStatusListener listener);
 
     /**
-     * Gets the boolean for whether the account is subject to minor mode restrictions.
+     * Gets the boolean for whether the account can offer extended sync promos.
      * If the result is not yet fetched, the optional will be empty.
      */
-    Optional<Boolean> isAccountSubjectToMinorModeRestrictions(Account account);
+    Optional<Boolean> canOfferExtendedSyncPromos(Account account);
 
     /**
      * Creates an intent that will ask the user to add a new account to the device. See
diff --git a/components/signin/public/android/java/src/org/chromium/components/signin/AccountManagerFacadeImpl.java b/components/signin/public/android/java/src/org/chromium/components/signin/AccountManagerFacadeImpl.java
index 147cbf0..74e331e 100644
--- a/components/signin/public/android/java/src/org/chromium/components/signin/AccountManagerFacadeImpl.java
+++ b/components/signin/public/android/java/src/org/chromium/components/signin/AccountManagerFacadeImpl.java
@@ -52,6 +52,9 @@
     @VisibleForTesting
     public static final String FEATURE_IS_USM_ACCOUNT_KEY = "service_usm";
 
+    @VisibleForTesting
+    static final String CAN_OFFER_EXTENDED_CHROME_SYNC_PROMOS = "CanOfferExtendedChromeSyncPromos";
+
     private final AccountManagerDelegate mDelegate;
     private final AccountRestrictionPatternReceiver mAccountRestrictionPatternReceiver;
 
@@ -66,8 +69,9 @@
     private int mUpdateTasksCounter;
     private final Queue<Callback<List<Account>>> mCallbacksWaitingForAccountsFetch =
             new ArrayDeque<>();
-    // The map stores the boolean for whether an account is subject to minor mode restrictions
-    private final Map<String, Boolean> mSubjectToMinorModeRestrictions = new HashMap<>();
+    // The map stores the boolean for whether an account can offer extended chrome sync promos
+    private final AtomicReference<Map<String, Boolean>> mCanOfferExtendedSyncPromos =
+            new AtomicReference<>();
 
     /**
      * @param delegate the AccountManagerDelegate to use as a backend
@@ -221,9 +225,9 @@
     }
 
     @Override
-    public Optional<Boolean> isAccountSubjectToMinorModeRestrictions(Account account) {
+    public Optional<Boolean> canOfferExtendedSyncPromos(Account account) {
         return Optional.fromNullable(
-                mSubjectToMinorModeRestrictions.get(AccountUtils.canonicalizeName(account.name)));
+                mCanOfferExtendedSyncPromos.get().get(AccountUtils.canonicalizeName(account.name)));
     }
 
     /**
@@ -278,6 +282,27 @@
         return mDelegate.isGooglePlayServicesAvailable();
     }
 
+    private void updateCanOfferExtendedSyncPromos(List<Account> accounts) {
+        new AsyncTask<Void>() {
+            @Override
+            protected Void doInBackground() {
+                final Map<String, Boolean> subjectToMinorModeRestrictions = new HashMap<>();
+                for (Account account : accounts) {
+                    subjectToMinorModeRestrictions.put(AccountUtils.canonicalizeName(account.name),
+                            mDelegate.hasCapability(
+                                    account, CAN_OFFER_EXTENDED_CHROME_SYNC_PROMOS));
+                }
+                mCanOfferExtendedSyncPromos.set(subjectToMinorModeRestrictions);
+                return null;
+            }
+
+            @Override
+            protected void onPostExecute(Void unused) {
+                // TODO(crbug/1206249): Notify observers
+            }
+        }.executeOnExecutor(AsyncTask.SERIAL_EXECUTOR);
+    }
+
     private void updateAccounts() {
         ThreadUtils.assertOnUiThread();
         new UpdateAccountsTask().executeOnExecutor(AsyncTask.SERIAL_EXECUTOR);
@@ -334,6 +359,7 @@
             final Callback<List<Account>> callback = mCallbacksWaitingForAccountsFetch.remove();
             callback.onResult(mFilteredAccounts.get());
         }
+        updateCanOfferExtendedSyncPromos(mFilteredAccounts.get());
     }
 
     private class InitializeTask extends AsyncTask<Void> {
diff --git a/components/signin/public/android/java/src/org/chromium/components/signin/AccountsChangeObserver.java b/components/signin/public/android/java/src/org/chromium/components/signin/AccountsChangeObserver.java
index 07de708..e56a02f7 100644
--- a/components/signin/public/android/java/src/org/chromium/components/signin/AccountsChangeObserver.java
+++ b/components/signin/public/android/java/src/org/chromium/components/signin/AccountsChangeObserver.java
@@ -19,7 +19,7 @@
     void onAccountsChanged();
 
     /**
-     * Called every time the MinorModeRestrictions gets updated.
+     * Called every time the capabilities get updated.
      */
-    default void onMinorModeRestrictionsUpdated() {}
+    default void onCapabilitiesUpdated() {}
 }
diff --git a/components/signin/public/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java b/components/signin/public/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java
index 603d55b..982dc71d 100644
--- a/components/signin/public/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java
+++ b/components/signin/public/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java
@@ -146,6 +146,11 @@
         return hasFeatures(account, new String[] {feature});
     }
 
+    @Override
+    public boolean hasCapability(Account account, String capability) {
+        return false;
+    }
+
     /**
      * Records a histogram value for how long time an action has taken using
      * {@link RecordHistogram#recordTimesHistogram(String, long))} if the browser
diff --git a/components/signin/public/android/java/src/org/chromium/components/signin/test/util/FakeAccountManagerDelegate.java b/components/signin/public/android/java/src/org/chromium/components/signin/test/util/FakeAccountManagerDelegate.java
index 4fa317f..c809e991 100644
--- a/components/signin/public/android/java/src/org/chromium/components/signin/test/util/FakeAccountManagerDelegate.java
+++ b/components/signin/public/android/java/src/org/chromium/components/signin/test/util/FakeAccountManagerDelegate.java
@@ -148,6 +148,11 @@
     }
 
     @Override
+    public boolean hasCapability(Account account, String capability) {
+        return hasFeature(account, capability);
+    }
+
+    @Override
     public void createAddAccountIntent(Callback<Intent> callback) {
         ThreadUtils.assertOnUiThread();
         ThreadUtils.postOnUiThread(callback.bind(null));
diff --git a/components/signin/public/android/java/src/org/chromium/components/signin/test/util/FakeAccountManagerFacade.java b/components/signin/public/android/java/src/org/chromium/components/signin/test/util/FakeAccountManagerFacade.java
index 0f6fad3c..21c7169 100644
--- a/components/signin/public/android/java/src/org/chromium/components/signin/test/util/FakeAccountManagerFacade.java
+++ b/components/signin/public/android/java/src/org/chromium/components/signin/test/util/FakeAccountManagerFacade.java
@@ -126,7 +126,7 @@
     public void checkChildAccountStatus(Account account, ChildAccountStatusListener listener) {}
 
     @Override
-    public Optional<Boolean> isAccountSubjectToMinorModeRestrictions(Account account) {
+    public Optional<Boolean> canOfferExtendedSyncPromos(Account account) {
         return Optional.absent();
     }
 
diff --git a/components/signin/public/android/junit/src/org/chromium/components/signin/AccountManagerFacadeImplTest.java b/components/signin/public/android/junit/src/org/chromium/components/signin/AccountManagerFacadeImplTest.java
index 0734356..61a38c1 100644
--- a/components/signin/public/android/junit/src/org/chromium/components/signin/AccountManagerFacadeImplTest.java
+++ b/components/signin/public/android/junit/src/org/chromium/components/signin/AccountManagerFacadeImplTest.java
@@ -283,6 +283,33 @@
     }
 
     @Test
+    public void testCanOfferExtendedSyncPromosForUnknownAccount() {
+        final Account account = AccountUtils.createAccountFromName("test@gmail.com");
+
+        Assert.assertFalse(mFacade.canOfferExtendedSyncPromos(account).isPresent());
+    }
+
+    @Test
+    public void testAccountCanNotOfferExtendedSyncPromos() {
+        final AccountHolder accountHolder = AccountHolder.createFromEmail("test@gmail.com");
+        mDelegate.addAccount(accountHolder);
+
+        Assert.assertFalse(mFacade.canOfferExtendedSyncPromos(accountHolder.getAccount()).get());
+    }
+
+    @Test
+    public void testAccountCanOfferExtendedSyncPromos() {
+        final AccountHolder accountHolder1 = AccountHolder.createFromEmail("test1@gmail.com");
+        mDelegate.addAccount(accountHolder1);
+        final AccountHolder accountHolder2 = AccountHolder.createFromEmailAndFeatures(
+                "test2@gmail.com", AccountManagerFacadeImpl.CAN_OFFER_EXTENDED_CHROME_SYNC_PROMOS);
+        mDelegate.addAccount(accountHolder2);
+
+        Assert.assertFalse(mFacade.canOfferExtendedSyncPromos(accountHolder1.getAccount()).get());
+        Assert.assertTrue(mFacade.canOfferExtendedSyncPromos(accountHolder2.getAccount()).get());
+    }
+
+    @Test
     public void testGetAccessToken() throws AuthException {
         final Account account = AccountUtils.createAccountFromName("test@gmail.com");
         final AccessTokenData originalToken =
diff --git a/components/site_engagement/content/site_engagement_metrics.cc b/components/site_engagement/content/site_engagement_metrics.cc
index 23c8974..7439d8bf 100644
--- a/components/site_engagement/content/site_engagement_metrics.cc
+++ b/components/site_engagement/content/site_engagement_metrics.cc
@@ -4,8 +4,8 @@
 
 #include "components/site_engagement/content/site_engagement_metrics.h"
 
+#include "base/cxx17_backports.h"
 #include "base/metrics/histogram_macros.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "components/site_engagement/content/engagement_type.h"
 #include "components/site_engagement/content/site_engagement_score.h"
diff --git a/components/spellcheck/browser/android/component_jni_registrar.cc b/components/spellcheck/browser/android/component_jni_registrar.cc
index 6f0197c..a8973312 100644
--- a/components/spellcheck/browser/android/component_jni_registrar.cc
+++ b/components/spellcheck/browser/android/component_jni_registrar.cc
@@ -6,7 +6,7 @@
 
 #include "base/android/jni_android.h"
 #include "base/android/jni_registrar.h"
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "components/spellcheck/browser/spellchecker_session_bridge_android.h"
 
 namespace spellcheck {
diff --git a/components/spellcheck/browser/spellcheck_host_metrics_unittest.cc b/components/spellcheck/browser/spellcheck_host_metrics_unittest.cc
index 5d9a6881..875ebe6 100644
--- a/components/spellcheck/browser/spellcheck_host_metrics_unittest.cc
+++ b/components/spellcheck/browser/spellcheck_host_metrics_unittest.cc
@@ -8,8 +8,8 @@
 
 #include <memory>
 
+#include "base/cxx17_backports.h"
 #include "base/metrics/histogram_samples.h"
-#include "base/stl_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/task_environment.h"
diff --git a/components/spellcheck/browser/spellcheck_platform_mac_unittest.cc b/components/spellcheck/browser/spellcheck_platform_mac_unittest.cc
index ffdbf18..7af1228d 100644
--- a/components/spellcheck/browser/spellcheck_platform_mac_unittest.cc
+++ b/components/spellcheck/browser/spellcheck_platform_mac_unittest.cc
@@ -7,9 +7,9 @@
 #include <stddef.h>
 
 #include "base/bind.h"
+#include "base/cxx17_backports.h"
 #include "base/run_loop.h"
 #include "base/single_thread_task_runner.h"
-#include "base/stl_util.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/task_environment.h"
diff --git a/components/spellcheck/renderer/spellcheck_multilingual_unittest.cc b/components/spellcheck/renderer/spellcheck_multilingual_unittest.cc
index af88e90..fe430763 100644
--- a/components/spellcheck/renderer/spellcheck_multilingual_unittest.cc
+++ b/components/spellcheck/renderer/spellcheck_multilingual_unittest.cc
@@ -8,8 +8,8 @@
 #include <memory>
 #include <utility>
 
+#include "base/cxx17_backports.h"
 #include "base/path_service.h"
-#include "base/stl_util.h"
 #include "base/strings/string_piece.h"
 #include "base/strings/string_split.h"
 #include "base/strings/string_util.h"
diff --git a/components/spellcheck/renderer/spellcheck_worditerator.cc b/components/spellcheck/renderer/spellcheck_worditerator.cc
index cc76c058..059dae0 100644
--- a/components/spellcheck/renderer/spellcheck_worditerator.cc
+++ b/components/spellcheck/renderer/spellcheck_worditerator.cc
@@ -11,9 +11,9 @@
 #include <string>
 #include <utility>
 
+#include "base/cxx17_backports.h"
 #include "base/i18n/break_iterator.h"
 #include "base/logging.h"
-#include "base/stl_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "components/spellcheck/renderer/spellcheck.h"
diff --git a/components/spellcheck/renderer/spellcheck_worditerator_unittest.cc b/components/spellcheck/renderer/spellcheck_worditerator_unittest.cc
index 37bc303..04f53af 100644
--- a/components/spellcheck/renderer/spellcheck_worditerator_unittest.cc
+++ b/components/spellcheck/renderer/spellcheck_worditerator_unittest.cc
@@ -7,9 +7,9 @@
 #include <string>
 #include <vector>
 
+#include "base/cxx17_backports.h"
 #include "base/format_macros.h"
 #include "base/i18n/break_iterator.h"
-#include "base/stl_util.h"
 #include "base/strings/string_split.h"
 #include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
diff --git a/components/ssl_errors/error_info.cc b/components/ssl_errors/error_info.cc
index b9b688d..5e3dfa0 100644
--- a/components/ssl_errors/error_info.cc
+++ b/components/ssl_errors/error_info.cc
@@ -6,9 +6,9 @@
 
 #include <stddef.h>
 
+#include "base/cxx17_backports.h"
 #include "base/i18n/message_formatter.h"
 #include "base/notreached.h"
-#include "base/stl_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "components/strings/grit/components_strings.h"
 #include "net/base/escape.h"
diff --git a/components/storage_monitor/mtab_watcher_linux.cc b/components/storage_monitor/mtab_watcher_linux.cc
index 4492d3f..ab5714e9 100644
--- a/components/storage_monitor/mtab_watcher_linux.cc
+++ b/components/storage_monitor/mtab_watcher_linux.cc
@@ -11,8 +11,8 @@
 #include <stdio.h>
 
 #include "base/bind.h"
+#include "base/cxx17_backports.h"
 #include "base/logging.h"
-#include "base/stl_util.h"
 #include "base/threading/scoped_blocking_call.h"
 
 namespace {
diff --git a/components/storage_monitor/storage_monitor_linux_unittest.cc b/components/storage_monitor/storage_monitor_linux_unittest.cc
index f0d0e2c..50ed6d4 100644
--- a/components/storage_monitor/storage_monitor_linux_unittest.cc
+++ b/components/storage_monitor/storage_monitor_linux_unittest.cc
@@ -16,10 +16,10 @@
 
 #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"
-#include "base/stl_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/task/thread_pool/thread_pool_instance.h"
 #include "base/test/task_environment.h"
diff --git a/components/strings/components_strings_af.xtb b/components/strings/components_strings_af.xtb
index ff3b0f4..0fe17e41 100644
--- a/components/strings/components_strings_af.xtb
+++ b/components/strings/components_strings_af.xtb
@@ -308,12 +308,14 @@
 <translation id="2042213636306070719">Laai 7</translation>
 <translation id="204357726431741734">Meld aan om wagwoorde te gebruik wat in jou Google-rekening gestoor is</translation>
 <translation id="2053111141626950936">Bladsye in <ph name="LANGUAGE" /> sal nie vertaal word nie.</translation>
+<translation id="2053373601901562871">{NUM_DAYS,plural, =0{Wanneer hierdie kontrole aan is en die status aktief is, bepaal Chrome met watter groot groep mense, of "kohort", jou onlangse blaai-aktiwiteit die meeste ooreenstem. Adverteerders kan advertensies vir die groep kies en jou blaai-aktiwiteit word privaat op jou toestel gehou. Jou groep word elke dag opgedateer.}=1{Wanneer hierdie kontrole aan is en die status aktief is, bepaal Chrome met watter groot groep mense, of "kohort", jou onlangse blaai-aktiwiteit die meeste ooreenstem. Adverteerders kan advertensies vir die groep kies en jou blaai-aktiwiteit word privaat op jou toestel gehou. Jou groep word elke dag opgedateer.}other{Wanneer hierdie kontrole aan is en die status aktief is, bepaal Chrome met watter groot groep mense, of "kohort", jou onlangse blaai-aktiwiteit die meeste ooreenstem. Adverteerders kan advertensies vir die groep kies en jou blaai-aktiwiteit word privaat op jou toestel gehou. Jou groep word elke {NUM_DAYS} dae opgedateer.}}</translation>
 <translation id="2053553514270667976">Poskode</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{1 voorstel}other{# voorstelle}}</translation>
 <translation id="2071692954027939183">Kennisgewings is outomaties geblokkeer omdat jy hulle gewoonlik nie toelaat nie</translation>
 <translation id="2079545284768500474">Ontdoen</translation>
 <translation id="20817612488360358">Stelsel se instaanbedienerinstellings word gestel om gebruik te word, maar doelbewuste instaanbedieneropstelling word ook gespesifiseer.</translation>
 <translation id="2082238445998314030">Resultaat <ph name="RESULT_NUMBER" /> van <ph name="TOTAL_RESULTS" /></translation>
+<translation id="2085876078937250610">Stoor …</translation>
 <translation id="2088086323192747268">Bestuur Sinkronisering-knoppie, druk Enter om te bestuur watter inligting jy in Chrome-instellings sinkroniseer</translation>
 <translation id="2091887806945687916">Klank</translation>
 <translation id="2094505752054353250">Domein stem nie ooreen nie</translation>
@@ -394,6 +396,7 @@
 <translation id="2355395290879513365">Aanvallers sal dalk die prente kan sien waarna jy op hierdie werf kyk en jou mislei deur hulle te wysig.</translation>
 <translation id="2356070529366658676">Vra</translation>
 <translation id="2357481397660644965">Jou toestel word deur <ph name="DEVICE_MANAGER" /> bestuur en jou rekening word deur <ph name="ACCOUNT_MANAGER" /> bestuur.</translation>
+<translation id="2359347814217202136">{NUM_DAYS,plural, =0{Oor minder as 'n dag}=1{Oor 'n dag}other{Oor {NUM_DAYS} dae}}</translation>
 <translation id="2359629602545592467">Veelvuldige</translation>
 <translation id="2359808026110333948">Gaan voort</translation>
 <translation id="2359961752320758691">Jou virtuelekaartnommer is toegepas.</translation>
@@ -715,6 +718,7 @@
 <translation id="3590643883886679995">Aanmelddata sal op hierdie toestel geberg word nadat jy Incognitomodus verlaat het.</translation>
 <translation id="359126217934908072">Maand/jaar:</translation>
 <translation id="3592413004129370115">Italian (Envelope)</translation>
+<translation id="3595699422137460894">{NUM_DAYS,plural, =0{Jy kan jou groep enige tyd terugstel. Dit neem omtrent 'n dag om by 'n nuwe groep aan te sluit.}=1{Jy kan jou groep enige tyd terugstel. Dit neem omtrent 'n dag om by 'n nuwe groep aan te sluit.}other{Jy kan jou groep enige tyd terugstel. Dit neem {NUM_DAYS} dae om by 'n nuwe groep aan te sluit.}}</translation>
 <translation id="3600246354004376029"><ph name="TITLE" />, <ph name="DOMAIN" />, <ph name="TIME" /></translation>
 <translation id="3603507503523709">Jou administrateur blokkeer die program</translation>
 <translation id="3608932978122581043">Stroomoriëntasie</translation>
@@ -1202,6 +1206,7 @@
 <translation id="5332219387342487447">Versendingmetode</translation>
 <translation id="5333022057423422993">Chrome het die wagwoord wat jy sopas gebruik het, in 'n dataskending gekry. Gaan jou gestoorde wagwoorde na om jou rekeninge te beveilig.</translation>
 <translation id="5334013548165032829">Gedetailleerde stelselloglêers</translation>
+<translation id="5334145288572353250">Stoor adres?</translation>
 <translation id="5340250774223869109">Program word geblokkeer</translation>
 <translation id="534295439873310000">NFC-toestelle</translation>
 <translation id="5344579389779391559">Hierdie bladsy kan dalk geld van jou probeer hef</translation>
@@ -1541,6 +1546,7 @@
 <translation id="6671697161687535275">Verwyder vormvoorstel uit Chromium?</translation>
 <translation id="6685834062052613830">Meld af en voltooi opstelling</translation>
 <translation id="6687335167692595844">Lettertipegrootte versoek</translation>
+<translation id="6688743156324860098">Dateer op …</translation>
 <translation id="6689249931105087298">Relatief met swartpuntsaampersing</translation>
 <translation id="6689271823431384964">Chrome bied aan om jou kaarte in jou Google-rekening te stoor omdat jy aangemeld is. Jy kan hierdie gedrag in instellings verander. Die kaarthouernaam kom van jou rekening af.</translation>
 <translation id="6698381487523150993">Geskep:</translation>
@@ -1556,6 +1562,7 @@
 <translation id="6744009308914054259">Terwyl jy vir 'n verbinding wag, kan jy Aflaaie besoek om vanlyn artikels te lees.</translation>
 <translation id="6753269504797312559">Beleidwaarde</translation>
 <translation id="6757797048963528358">Jou toestel het gaan slaap.</translation>
+<translation id="6767985426384634228">Dateer adres op?</translation>
 <translation id="6768213884286397650">Hagaki (Postcard)</translation>
 <translation id="6775759552199460396">JIS B2</translation>
 <translation id="67862343314499040">Pers</translation>
@@ -1715,6 +1722,7 @@
 <translation id="7378810950367401542">/</translation>
 <translation id="7386364858855961704">Nie van toepassing nie</translation>
 <translation id="7390545607259442187">Bevestig kaart</translation>
+<translation id="7392089738299859607">Dateer adres op</translation>
 <translation id="7399802613464275309">Veiligheidskontrole</translation>
 <translation id="7400418766976504921">URL</translation>
 <translation id="7403591733719184120">Jou <ph name="DEVICE_NAME" /> word bestuur</translation>
@@ -1853,6 +1861,7 @@
 <translation id="7865448901209910068">Beste spoed</translation>
 <translation id="7874263914261512992">Jy het sopas jou wagwoord op 'n misleidende werf ingevoer. Chrome beveel aan dat jy jou gestoorde wagwoorde vir <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> en ander werwe waar jy hierdie wagwoord gebruik, nou nagaan.</translation>
 <translation id="7878562273885520351">Jou wagwoord is dalk in gevaar</translation>
+<translation id="7880146494886811634">Stoor adres</translation>
 <translation id="7882421473871500483">Bruin</translation>
 <translation id="7887683347370398519">Gaan jou CVC na en probeer weer</translation>
 <translation id="7887885240995164102">Gaan na prent-in-prent</translation>
diff --git a/components/strings/components_strings_fa.xtb b/components/strings/components_strings_fa.xtb
index cc03dd9..39f5bfe 100644
--- a/components/strings/components_strings_fa.xtb
+++ b/components/strings/components_strings_fa.xtb
@@ -308,12 +308,14 @@
 <translation id="2042213636306070719">سینی ۷</translation>
 <translation id="204357726431741734">‏ورود به سیستم برای استفاده از گذرواژه‌های ذخیره‌شده در «حساب Google»</translation>
 <translation id="2053111141626950936">صفحه‌های <ph name="LANGUAGE" /> ترجمه نخواهند شد.</translation>
+<translation id="2053373601901562871">{NUM_DAYS,plural, =0{‏وقتی این کنترل روشن باشد و وضعیت روی فعال تنظیم شده باشد، Chrome تعیین می‌کند فعالیت مرور اخیر شما بیشتر شبیه کدام «هم‌گروه» یا گروه بزرگ از افراد است. تبلیغ‌کنندگان می‌توانند برای آن گروهِ به‌خصوص آگهی انتخاب کنند و سابقه مرور شما به‌صورت خصوصی در دستگاهتان نگه داشته می‌شود. گروهتان هر روز به‌روزرسانی می‌شود.}=1{‏وقتی این کنترل روشن باشد و وضعیت روی فعال تنظیم شده باشد، Chrome تعیین می‌کند فعالیت مرور اخیر شما بیشتر شبیه کدام «هم‌گروه» یا گروه بزرگ از افراد است. تبلیغ‌کنندگان می‌توانند برای آن گروهِ به‌خصوص آگهی انتخاب کنند و سابقه مرور شما به‌صورت خصوصی در دستگاهتان نگه داشته می‌شود. گروهتان هر روز به‌روزرسانی می‌شود.}one{‏وقتی این کنترل روشن باشد و وضعیت روی فعال تنظیم شده باشد، Chrome تعیین می‌کند فعالیت مرور اخیر شما بیشتر شبیه کدام «هم‌گروه» یا گروه بزرگ از افراد است. تبلیغ‌کنندگان می‌توانند برای آن گروهِ به‌خصوص آگهی انتخاب کنند و سابقه مرور شما به‌صورت خصوصی در دستگاهتان نگه داشته می‌شود. گروهتان هر {NUM_DAYS} روز یکبار به‌روزرسانی می‌شود.}other{‏وقتی این کنترل روشن باشد و وضعیت روی فعال تنظیم شده باشد، Chrome تعیین می‌کند فعالیت مرور اخیر شما بیشتر شبیه کدام «هم‌گروه» یا گروه بزرگ از افراد است. تبلیغ‌کنندگان می‌توانند برای آن گروهِ به‌خصوص آگهی انتخاب کنند و سابقه مرور شما به‌صورت خصوصی در دستگاهتان نگه داشته می‌شود. گروهتان هر {NUM_DAYS} روز یکبار به‌روزرسانی می‌شود.}}</translation>
 <translation id="2053553514270667976">کد پستی</translation>
 <translation id="2064691555167957331">{COUNT,plural, =1{۱ پیشنهاد}one{# پیشنهاد}other{# پیشنهاد}}</translation>
 <translation id="2071692954027939183">اعلان‌ها به‌طور خودکار مسدود شدند چون شما معمولاً اجازه نمی‌دهید نمایش داده شوند</translation>
 <translation id="2079545284768500474">لغو</translation>
 <translation id="20817612488360358">تنظیمات پروکسی سیستم تنظیم شده تا مورد استفاده قرار گیرد، اما یک پیکربندی مشخص برای پروکسی نیز تعیین شده است.</translation>
 <translation id="2082238445998314030"><ph name="RESULT_NUMBER" /> نتیجه از <ph name="TOTAL_RESULTS" /></translation>
+<translation id="2085876078937250610">ذخیره…</translation>
 <translation id="2088086323192747268">‏دکمه مدیریت همگام‌سازی، کلید «ورود» را فشار دهید تا اطلاعاتی را که همگام‌سازی می‌کنید در تنظیمات Chrome مدیریت کنید</translation>
 <translation id="2091887806945687916">صدا</translation>
 <translation id="2094505752054353250">عدم تطابق دامنه</translation>
@@ -394,6 +396,7 @@
 <translation id="2355395290879513365">مهاجمین ممکن است بتوانند تصاویری را که در این سایت می‌بینید مشاهده کنند و با دست‌کاری آن‌ها شما را فریب دهند.</translation>
 <translation id="2356070529366658676">سؤال شود</translation>
 <translation id="2357481397660644965">دستگاهتان توسط <ph name="DEVICE_MANAGER" />، و حسابتان توسط <ph name="ACCOUNT_MANAGER" /> مدیریت می‌شود.</translation>
+<translation id="2359347814217202136">{NUM_DAYS,plural, =0{کمتر از یک روز}=1{تا یک روز دیگر}one{تا {NUM_DAYS} روز دیگر}other{تا {NUM_DAYS} روز دیگر}}</translation>
 <translation id="2359629602545592467">چند ارز</translation>
 <translation id="2359808026110333948">ادامه</translation>
 <translation id="2359961752320758691">شماره کارت مجازی اعمال شد.</translation>
@@ -713,6 +716,7 @@
 <translation id="3590643883886679995">پس‌از خروج از «حالت ناشناس»، داده‌های ورود به سیستم در این دستگاه ذخیره خواهد شد.</translation>
 <translation id="359126217934908072">ماه/سال:</translation>
 <translation id="3592413004129370115">Italian (Envelope)</translation>
+<translation id="3595699422137460894">{NUM_DAYS,plural, =0{هرزمان خواستید می‌توانید گروه را بازنشانی کنید. پیوستن به گروه جدید حدود یک روز طول می‌کشد.}=1{هرزمان خواستید می‌توانید گروه را بازنشانی کنید. پیوستن به گروه جدید حدود یک روز طول می‌کشد.}one{هرزمان خواستید می‌توانید گروه را بازنشانی کنید. پیوستن به گروه جدید {NUM_DAYS} روز طول می‌کشد.}other{هرزمان خواستید می‌توانید گروه را بازنشانی کنید. پیوستن به گروه جدید {NUM_DAYS} روز طول می‌کشد.}}</translation>
 <translation id="3600246354004376029"><ph name="TITLE" />، <ph name="DOMAIN" />، <ph name="TIME" /></translation>
 <translation id="3603507503523709">سرپرست برنامه را مسدود کرده است</translation>
 <translation id="3608932978122581043">جهت تغذیه کاغذ</translation>
@@ -1200,6 +1204,7 @@
 <translation id="5332219387342487447">روش ارسال کالا</translation>
 <translation id="5333022057423422993">‏Chrome گذرواژه‌ای را که اکنون استفاده کردید در سرقت اطلاعات شبکه پیدا کرده است. برای ایمن کردن حساب‌هایتان، توصیه می‌کنیم گذرواژه‌های ذخیره‌شده‌تان را بررسی کنید.</translation>
 <translation id="5334013548165032829">گزارش دقیق سیستم</translation>
+<translation id="5334145288572353250">نشانی ذخیره شود؟</translation>
 <translation id="5340250774223869109">برنامه مسدود شده است</translation>
 <translation id="534295439873310000">‏دستگاه‌های NFC</translation>
 <translation id="5344579389779391559">این صفحه ممکن است تلاش کند از شما پول دریافت کند</translation>
@@ -1539,6 +1544,7 @@
 <translation id="6671697161687535275">‏پیشنهاد فرم از Chromium پاک شود؟</translation>
 <translation id="6685834062052613830">خروج از سیستم و تکمیل راه‌اندازی</translation>
 <translation id="6687335167692595844">اندازه قلم درخواست شد</translation>
+<translation id="6688743156324860098">به‌روزرسانی…</translation>
 <translation id="6689249931105087298">نسبی با فشرده‌سازی نقطه سیاه</translation>
 <translation id="6689271823431384964">‏چون به سیستم وارد شده‌اید، Chrome پیشنهاد می‌کند کارت‌ها را در حساب Google ذخیره کنید. در تنظیمات می‌توانید این رفتار را تغییر دهید. نام دارنده کارت از حساب شما گرفته شده است.</translation>
 <translation id="6698381487523150993">ایجاد شده:</translation>
@@ -1554,6 +1560,7 @@
 <translation id="6744009308914054259">وقتی درانتظار اتصال هستید، می‌توانید برای خواندن مقاله‌های آفلاین، «بارگیری‌ها» را مشاهده کنید.</translation>
 <translation id="6753269504797312559">مقدار خط‌‌مشی</translation>
 <translation id="6757797048963528358">دستگاهتان به خواب رفته است.</translation>
+<translation id="6767985426384634228">نشانی به‌روزرسانی شود؟</translation>
 <translation id="6768213884286397650">Hagaki (Postcard)</translation>
 <translation id="6775759552199460396">JIS B2</translation>
 <translation id="67862343314499040">بنفش</translation>
@@ -1713,6 +1720,7 @@
 <translation id="7378810950367401542">/</translation>
 <translation id="7386364858855961704">نامربوط</translation>
 <translation id="7390545607259442187">تأیید کارت</translation>
+<translation id="7392089738299859607">به‌روزرسانی نشانی</translation>
 <translation id="7399802613464275309">بررسی ایمنی</translation>
 <translation id="7400418766976504921">نشانی وب</translation>
 <translation id="7403591733719184120">دستگاه <ph name="DEVICE_NAME" /> تحت مدیریت است</translation>
@@ -1851,6 +1859,7 @@
 <translation id="7865448901209910068">بهترین سرعت</translation>
 <translation id="7874263914261512992">‏اخیراً گذرواژه‌تان را در سایتی فریب‌کار وارد کرده‌اید. Chrome توصیه می‌کند همین حالا گذرواژه‌های ذخیره‌شده برای <ph name="WEBSITE_1" />، <ph name="WEBSITE_2" />، و سایت‌های دیگری را که در آن‌ها از این گذرواژه استفاده می‌کنید بررسی کنید.</translation>
 <translation id="7878562273885520351">ممکن است گذرواژه‌تان درمعرض خطر باشد</translation>
+<translation id="7880146494886811634">ذخیره نشانی</translation>
 <translation id="7882421473871500483">قهوه‌ای</translation>
 <translation id="7887683347370398519">‏CVC را بررسی کرده و دوباره امتحان کنید</translation>
 <translation id="7887885240995164102">ورود به تصویر در تصویر</translation>
diff --git a/components/strings/components_strings_fil.xtb b/components/strings/components_strings_fil.xtb
index cadccc46..e07ecc56 100644
--- a/components/strings/components_strings_fil.xtb
+++ b/components/strings/components_strings_fil.xtb
@@ -536,6 +536,7 @@
 <translation id="2941952326391522266">Hindi mapatunayan ng server na ito na ito ay <ph name="DOMAIN" />; mula sa <ph name="DOMAIN2" /> ang certificate ng seguridad nito. Maaaring dulot ito ng maling configuration o isang umaatake na hinahadlangan ang iyong koneksyon.</translation>
 <translation id="2943895734390379394">Oras ng Pag-upload:</translation>
 <translation id="2948083400971632585">Maaari mong i-disable ang anumang mga proxy na naka-configure para sa isang koneksyon mula sa pahina ng mga setting.</translation>
+<translation id="2949183777371959169">Binalewala dahil hindi naka-enroll ang machine sa Chrome Browser Cloud Management.</translation>
 <translation id="2951588413176968965">Aking mailbox</translation>
 <translation id="295526156371527179">Babala: Hindi na-merge ang patakarang ito bilang isang diksyunaryo gaya ng tinukoy ng patakaran dahil hindi ito isang diksyunaryo.</translation>
 <translation id="2955913368246107853">Isara ang bar sa paghahanap</translation>
diff --git a/components/strings/components_strings_lo.xtb b/components/strings/components_strings_lo.xtb
index f6e0809..ae83a77 100644
--- a/components/strings/components_strings_lo.xtb
+++ b/components/strings/components_strings_lo.xtb
@@ -536,6 +536,7 @@
 <translation id="2941952326391522266">ເຊີບເວີນີ້ບໍ່ສາມາດພິສູດໄດ້ວ່າ ມັນແມ່ນ <ph name="DOMAIN" />; ໃບຢັ້ງຢືນຄວາມປອດໄພຂອງມັນມາຈາກ <ph name="DOMAIN2" />. ອັນນີ້ອາດຈະເຮັດໃຫ້ເກີດມີການປັບຕັ້ງຄ່າຜິດ ຫຼືຜູ້ໂຈມຕີອາດຈະດັກເອົາການເຊື່ອມຕໍ່ຂອງທ່ານ.</translation>
 <translation id="2943895734390379394">ເວລາອັບໂຫຼດ:</translation>
 <translation id="2948083400971632585">ທ່ານສາມາດປິດໃຊ້ງານພຣັອກຊີໃດໜຶ່ງທີ່ໄດ້ປັບຕັ້ງຄ່າສໍາລັບການເຊື່ອມຕໍ່ຈາກໜ້າການຕັ້ງຄ່າ.</translation>
+<translation id="2949183777371959169">ບໍ່ສົນໃຈແລ້ວເນື່ອງຈາກເຄື່ອງບໍ່ໄດ້ລົງທະບຽນກັບ Chrome Browser Cloud Management.</translation>
 <translation id="2951588413176968965">ກ່ອງເມວຂອງຂ້ອຍ</translation>
 <translation id="295526156371527179">ຄຳເຕືອນ: ນະໂຍບາຍນີ້ບໍ່ຖືກຮວມເຂົ້າກັນເປັນພົດຈະນານຸກົມຕາມທີ່ລະບຸໄວ້ໂດຍນະໂຍບາຍ ເພາະວ່າມັນບໍ່ແມ່ນພົດຈະນານຸກົມ.</translation>
 <translation id="2955913368246107853">ປິດຊອກຫາແຖບ</translation>
diff --git a/components/subresource_filter/OWNERS b/components/subresource_filter/OWNERS
index 3b49c4c..7a957059 100644
--- a/components/subresource_filter/OWNERS
+++ b/components/subresource_filter/OWNERS
@@ -1,4 +1,4 @@
 alexmt@chromium.org
 csharrison@chromium.org
 jkarlin@chromium.org
-johnidel@chromium.org
\ No newline at end of file
+johnidel@chromium.org
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 262c48e..7c2ca9a 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,8 +9,8 @@
 
 #include "base/bind.h"
 #include "base/callback_helpers.h"
+#include "base/cxx17_backports.h"
 #include "base/run_loop.h"
-#include "base/stl_util.h"
 #include "base/test/task_environment.h"
 #include "base/test/test_simple_task_runner.h"
 #include "base/threading/sequenced_task_runner_handle.h"
diff --git a/components/sync/base/immutable_unittest.cc b/components/sync/base/immutable_unittest.cc
index 1402b389..9603d5f 100644
--- a/components/sync/base/immutable_unittest.cc
+++ b/components/sync/base/immutable_unittest.cc
@@ -11,7 +11,7 @@
 #include <vector>
 
 #include "base/containers/circular_deque.h"
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace syncer {
diff --git a/components/sync/base/model_type.cc b/components/sync/base/model_type.cc
index d1e4390..1047872 100644
--- a/components/sync/base/model_type.cc
+++ b/components/sync/base/model_type.cc
@@ -8,9 +8,9 @@
 
 #include <ostream>
 
+#include "base/cxx17_backports.h"
 #include "base/logging.h"
 #include "base/notreached.h"
-#include "base/stl_util.h"
 #include "base/strings/string_split.h"
 #include "base/values.h"
 #include "components/sync/protocol/app_setting_specifics.pb.h"
diff --git a/components/sync/base/node_ordinal_unittest.cc b/components/sync/base/node_ordinal_unittest.cc
index c6c3ba14..117fb14 100644
--- a/components/sync/base/node_ordinal_unittest.cc
+++ b/components/sync/base/node_ordinal_unittest.cc
@@ -10,7 +10,7 @@
 #include <limits>
 #include <vector>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace syncer {
diff --git a/components/sync/base/unique_position_unittest.cc b/components/sync/base/unique_position_unittest.cc
index 73d76e7..a0d2e0e8 100644
--- a/components/sync/base/unique_position_unittest.cc
+++ b/components/sync/base/unique_position_unittest.cc
@@ -10,9 +10,9 @@
 #include <vector>
 
 #include "base/base64.h"
+#include "base/cxx17_backports.h"
 #include "base/hash/sha1.h"
 #include "base/logging.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "components/sync/protocol/unique_position.pb.h"
 #include "testing/gtest/include/gtest/gtest.h"
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 20bc7c5..bd33e95 100644
--- a/components/sync_device_info/local_device_info_util_win.cc
+++ b/components/sync_device_info/local_device_info_util_win.cc
@@ -7,7 +7,7 @@
 #include <string>
 
 #include "base/check.h"
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "base/strings/utf_string_conversions.h"
 
 namespace syncer {
diff --git a/components/sync_sessions/synced_session_unittest.cc b/components/sync_sessions/synced_session_unittest.cc
index 98e6b18..18883b8c 100644
--- a/components/sync_sessions/synced_session_unittest.cc
+++ b/components/sync_sessions/synced_session_unittest.cc
@@ -28,8 +28,8 @@
 // Create a sync_pb::TabNavigation from the constants above.
 sync_pb::TabNavigation MakeSyncDataForTest() {
   sync_pb::TabNavigation sync_data;
-  sync_data.set_virtual_url(test_data::VirtualUrl().spec());
-  sync_data.set_referrer(test_data::ReferrerUrl().spec());
+  sync_data.set_virtual_url("http://www.virtual-url.com/");
+  sync_data.set_referrer("http://www.referrer.com/");
   sync_data.set_obsolete_referrer_policy(test_data::kReferrerPolicy);
   sync_data.set_correct_referrer_policy(test_data::kReferrerPolicy);
   sync_data.set_title(base::UTF16ToUTF8(test_data::kTitle));
@@ -39,7 +39,7 @@
   sync_data.set_timestamp_msec(syncer::TimeToProtoTime(test_data::kTimestamp));
   sync_data.set_redirect_type(sync_pb::SyncEnums::CLIENT_REDIRECT);
   sync_data.set_navigation_home_page(true);
-  sync_data.set_favicon_url(test_data::FaviconUrl().spec());
+  sync_data.set_favicon_url("http://virtual-url.com/favicon.ico");
   sync_data.set_http_status_code(test_data::kHttpStatusCode);
   // The redirect chain only syncs one way.
   return sync_data;
@@ -55,20 +55,21 @@
       SessionNavigationFromSyncData(test_data::kIndex, sync_data);
 
   EXPECT_EQ(test_data::kIndex, navigation.index());
-  EXPECT_EQ(test_data::kUniqueID, navigation.unique_id());
-  EXPECT_EQ(test_data::ReferrerUrl(), navigation.referrer_url());
-  EXPECT_EQ(test_data::kReferrerPolicy, navigation.referrer_policy());
-  EXPECT_EQ(test_data::VirtualUrl(), navigation.virtual_url());
-  EXPECT_EQ(test_data::kTitle, navigation.title());
+  EXPECT_EQ(sync_data.unique_id(), navigation.unique_id());
+  EXPECT_EQ(sync_data.referrer(), navigation.referrer_url().spec());
+  EXPECT_EQ(sync_data.correct_referrer_policy(), navigation.referrer_policy());
+  EXPECT_EQ(sync_data.virtual_url(), navigation.virtual_url().spec());
+  EXPECT_EQ(base::UTF8ToUTF16(sync_data.title()), navigation.title());
   EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs(
       navigation.transition_type(), test_data::kTransitionType));
   EXPECT_FALSE(navigation.has_post_data());
   EXPECT_EQ(-1, navigation.post_id());
   EXPECT_EQ(GURL(), navigation.original_request_url());
   EXPECT_FALSE(navigation.is_overriding_user_agent());
-  EXPECT_EQ(test_data::kTimestamp, navigation.timestamp());
-  EXPECT_EQ(test_data::FaviconUrl(), navigation.favicon_url());
-  EXPECT_EQ(test_data::kHttpStatusCode, navigation.http_status_code());
+  EXPECT_EQ(sync_data.timestamp_msec(),
+            syncer::TimeToProtoTime(navigation.timestamp()));
+  EXPECT_EQ(sync_data.favicon_url(), navigation.favicon_url().spec());
+  EXPECT_EQ(sync_data.http_status_code(), navigation.http_status_code());
   // The redirect chain only syncs one way.
 }
 
@@ -81,25 +82,25 @@
   const sync_pb::TabNavigation sync_data =
       SessionNavigationToSyncData(navigation);
 
-  EXPECT_EQ(test_data::VirtualUrl().spec(), sync_data.virtual_url());
-  EXPECT_EQ(test_data::ReferrerUrl().spec(), sync_data.referrer());
-  EXPECT_EQ(test_data::kTitle, base::ASCIIToUTF16(sync_data.title()));
+  EXPECT_EQ(navigation.virtual_url().spec(), sync_data.virtual_url());
+  EXPECT_EQ(navigation.referrer_url().spec(), sync_data.referrer());
+  EXPECT_EQ(navigation.title(), base::UTF8ToUTF16(sync_data.title()));
   EXPECT_EQ(sync_pb::SyncEnums_PageTransition_AUTO_SUBFRAME,
             sync_data.page_transition());
   EXPECT_TRUE(sync_data.has_redirect_type());
-  EXPECT_EQ(test_data::kUniqueID, sync_data.unique_id());
-  EXPECT_EQ(syncer::TimeToProtoTime(test_data::kTimestamp),
+  EXPECT_EQ(navigation.unique_id(), sync_data.unique_id());
+  EXPECT_EQ(syncer::TimeToProtoTime(navigation.timestamp()),
             sync_data.timestamp_msec());
-  EXPECT_EQ(test_data::kTimestamp.ToInternalValue(), sync_data.global_id());
-  EXPECT_EQ(test_data::FaviconUrl().spec(), sync_data.favicon_url());
-  EXPECT_EQ(test_data::kHttpStatusCode, sync_data.http_status_code());
+  EXPECT_EQ(navigation.favicon_url().spec(), sync_data.favicon_url());
+  EXPECT_EQ(navigation.http_status_code(), sync_data.http_status_code());
   // The proto navigation redirects don't include the final chain entry
   // (because it didn't redirect) so the lengths should differ by 1.
-  ASSERT_EQ(3, sync_data.navigation_redirect_size() + 1);
-  EXPECT_EQ(test_data::RedirectUrl0().spec(),
-            sync_data.navigation_redirect(0).url());
-  EXPECT_EQ(test_data::RedirectUrl1().spec(),
-            sync_data.navigation_redirect(1).url());
+  ASSERT_EQ(navigation.redirect_chain().size(),
+            static_cast<size_t>(sync_data.navigation_redirect_size() + 1));
+  for (auto i = 0; i < sync_data.navigation_redirect_size(); ++i) {
+    EXPECT_EQ(navigation.redirect_chain()[i].spec(),
+              sync_data.navigation_redirect(i).url());
+  }
   EXPECT_FALSE(sync_data.has_last_navigation_redirect_url());
   EXPECT_FALSE(sync_data.has_replaced_navigation());
 }
@@ -138,21 +139,23 @@
 TEST(SyncedSessionTest, SessionNavigationToSyncDataWithLastRedirectUrl) {
   SerializedNavigationEntry navigation =
       SerializedNavigationEntryTestHelper::CreateNavigationForTest();
-  SerializedNavigationEntryTestHelper::SetVirtualURL(test_data::OtherUrl(),
+  SerializedNavigationEntryTestHelper::SetVirtualURL(GURL("http://other.com"),
                                                      &navigation);
 
   const sync_pb::TabNavigation sync_data =
       SessionNavigationToSyncData(navigation);
   EXPECT_TRUE(sync_data.has_last_navigation_redirect_url());
-  EXPECT_EQ(test_data::VirtualUrl().spec(),
+  ASSERT_FALSE(navigation.redirect_chain().empty());
+  EXPECT_EQ(navigation.redirect_chain().back().spec(),
             sync_data.last_navigation_redirect_url());
 
-  // The redirect chain should be the same as in the above test.
-  ASSERT_EQ(3, sync_data.navigation_redirect_size() + 1);
-  EXPECT_EQ(test_data::RedirectUrl0().spec(),
-            sync_data.navigation_redirect(0).url());
-  EXPECT_EQ(test_data::RedirectUrl1().spec(),
-            sync_data.navigation_redirect(1).url());
+  // The redirect chain should be the same as in SessionNavigationToSyncData.
+  ASSERT_EQ(navigation.redirect_chain().size(),
+            static_cast<size_t>(sync_data.navigation_redirect_size() + 1));
+  for (auto i = 0; i < sync_data.navigation_redirect_size(); ++i) {
+    EXPECT_EQ(navigation.redirect_chain()[i].spec(),
+              sync_data.navigation_redirect(i).url());
+  }
 }
 
 // Ensure all transition types and qualifiers are converted to/from the sync
diff --git a/components/system_media_controls/OWNERS b/components/system_media_controls/OWNERS
index 4152d74..c48e48e 100644
--- a/components/system_media_controls/OWNERS
+++ b/components/system_media_controls/OWNERS
@@ -1 +1 @@
-steimel@chromium.org
\ No newline at end of file
+steimel@chromium.org
diff --git a/components/tab_count_metrics/tab_count_metrics.cc b/components/tab_count_metrics/tab_count_metrics.cc
index 13f47b1..836a72e 100644
--- a/components/tab_count_metrics/tab_count_metrics.cc
+++ b/components/tab_count_metrics/tab_count_metrics.cc
@@ -7,8 +7,8 @@
 #include <limits>
 
 #include "base/check_op.h"
+#include "base/cxx17_backports.h"
 #include "base/notreached.h"
-#include "base/stl_util.h"
 
 namespace tab_count_metrics {
 
diff --git a/components/test/components_test_suite.cc b/components/test/components_test_suite.cc
index 7fc3310..e87fbd5 100644
--- a/components/test/components_test_suite.cc
+++ b/components/test/components_test_suite.cc
@@ -9,9 +9,9 @@
 
 #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/stl_util.h"
 #include "base/test/launcher/unit_test_launcher.h"
 #include "base/test/test_suite.h"
 #include "build/build_config.h"
diff --git a/components/translate/core/language_detection/language_detection_util.cc b/components/translate/core/language_detection/language_detection_util.cc
index c7ad67d9..727d1dd2 100644
--- a/components/translate/core/language_detection/language_detection_util.cc
+++ b/components/translate/core/language_detection/language_detection_util.cc
@@ -6,12 +6,12 @@
 
 #include <stddef.h>
 
+#include "base/cxx17_backports.h"
 #include "base/logging.h"
 #include "base/metrics/histogram_base.h"
 #include "base/metrics/histogram_functions.h"
 #include "base/metrics/histogram_macros.h"
 #include "base/metrics/metrics_hashes.h"
-#include "base/stl_util.h"
 #include "base/strings/string_split.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
diff --git a/components/update_client/update_checker_unittest.cc b/components/update_client/update_checker_unittest.cc
index 5152574..09a046a4 100644
--- a/components/update_client/update_checker_unittest.cc
+++ b/components/update_client/update_checker_unittest.cc
@@ -11,13 +11,13 @@
 #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/macros.h"
 #include "base/memory/ref_counted.h"
 #include "base/path_service.h"
 #include "base/run_loop.h"
-#include "base/stl_util.h"
 #include "base/task/post_task.h"
 #include "base/test/bind.h"
 #include "base/test/task_environment.h"
diff --git a/components/update_client/update_client_unittest.cc b/components/update_client/update_client_unittest.cc
index 7a4cc162..dfca3c3 100644
--- a/components/update_client/update_client_unittest.cc
+++ b/components/update_client/update_client_unittest.cc
@@ -8,13 +8,13 @@
 
 #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"
 #include "base/memory/ref_counted.h"
 #include "base/path_service.h"
 #include "base/run_loop.h"
-#include "base/stl_util.h"
 #include "base/task/post_task.h"
 #include "base/task/task_traits.h"
 #include "base/task/thread_pool.h"
diff --git a/components/url_formatter/elide_url_unittest.cc b/components/url_formatter/elide_url_unittest.cc
index 784ddc0..1a9dbfd9 100644
--- a/components/url_formatter/elide_url_unittest.cc
+++ b/components/url_formatter/elide_url_unittest.cc
@@ -6,9 +6,9 @@
 
 #include <stddef.h>
 
+#include "base/cxx17_backports.h"
 #include "base/logging.h"
 #include "base/run_loop.h"
-#include "base/stl_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/task_environment.h"
 #include "build/build_config.h"
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 3909d486..f212619 100644
--- a/components/url_formatter/spoof_checks/idn_spoof_checker_unittest.cc
+++ b/components/url_formatter/spoof_checks/idn_spoof_checker_unittest.cc
@@ -7,7 +7,7 @@
 #include <stddef.h>
 #include <string.h>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "base/strings/string_piece.h"
 #include "base/strings/utf_string_conversions.h"
 #include "build/build_config.h"
diff --git a/components/url_formatter/url_fixer_unittest.cc b/components/url_formatter/url_fixer_unittest.cc
index 1137b327..794c1a02 100644
--- a/components/url_formatter/url_fixer_unittest.cc
+++ b/components/url_formatter/url_fixer_unittest.cc
@@ -8,10 +8,10 @@
 #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/stl_util.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "build/build_config.h"
diff --git a/components/url_formatter/url_formatter_unittest.cc b/components/url_formatter/url_formatter_unittest.cc
index d286cbb5..0f3066a 100644
--- a/components/url_formatter/url_formatter_unittest.cc
+++ b/components/url_formatter/url_formatter_unittest.cc
@@ -9,8 +9,8 @@
 
 #include <vector>
 
+#include "base/cxx17_backports.h"
 #include "base/logging.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_piece.h"
 #include "base/strings/utf_string_conversions.h"
diff --git a/components/url_matcher/url_matcher_factory_unittest.cc b/components/url_matcher/url_matcher_factory_unittest.cc
index 31301e2..6cac0c19 100644
--- a/components/url_matcher/url_matcher_factory_unittest.cc
+++ b/components/url_matcher/url_matcher_factory_unittest.cc
@@ -9,8 +9,8 @@
 #include <memory>
 #include <utility>
 
+#include "base/cxx17_backports.h"
 #include "base/format_macros.h"
-#include "base/stl_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/values.h"
 #include "components/url_matcher/url_matcher_constants.h"
diff --git a/components/url_matcher/url_matcher_unittest.cc b/components/url_matcher/url_matcher_unittest.cc
index f3b29c8..2d0e0a0 100644
--- a/components/url_matcher/url_matcher_unittest.cc
+++ b/components/url_matcher/url_matcher_unittest.cc
@@ -9,7 +9,7 @@
 #include <memory>
 #include <utility>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "base/strings/string_util.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "url/gurl.h"
diff --git a/components/variations/entropy_provider_unittest.cc b/components/variations/entropy_provider_unittest.cc
index 8f68fab..2798d27 100644
--- a/components/variations/entropy_provider_unittest.cc
+++ b/components/variations/entropy_provider_unittest.cc
@@ -12,10 +12,10 @@
 #include <memory>
 #include <numeric>
 
+#include "base/cxx17_backports.h"
 #include "base/guid.h"
 #include "base/macros.h"
 #include "base/rand_util.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/test/scoped_field_trial_list_resetter.h"
 #include "components/variations/hashing.h"
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 34344103..3fdc045 100644
--- a/components/variations/field_trial_config/field_trial_util_unittest.cc
+++ b/components/variations/field_trial_config/field_trial_util_unittest.cc
@@ -9,10 +9,10 @@
 #include <utility>
 
 #include "base/command_line.h"
+#include "base/cxx17_backports.h"
 #include "base/macros.h"
 #include "base/metrics/field_trial.h"
 #include "base/metrics/field_trial_params.h"
-#include "base/stl_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/system/sys_info.h"
 #include "base/test/scoped_feature_list.h"
diff --git a/components/variations/hashing_unittest.cc b/components/variations/hashing_unittest.cc
index 5a2ee35..125581a 100644
--- a/components/variations/hashing_unittest.cc
+++ b/components/variations/hashing_unittest.cc
@@ -7,8 +7,8 @@
 #include <stddef.h>
 #include <stdint.h>
 
+#include "base/cxx17_backports.h"
 #include "base/macros.h"
-#include "base/stl_util.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace variations {
diff --git a/components/variations/net/variations_http_headers_unittest.cc b/components/variations/net/variations_http_headers_unittest.cc
index 0b7b480..3380879 100644
--- a/components/variations/net/variations_http_headers_unittest.cc
+++ b/components/variations/net/variations_http_headers_unittest.cc
@@ -7,8 +7,8 @@
 #include <string>
 
 #include "base/containers/flat_map.h"
+#include "base/cxx17_backports.h"
 #include "base/macros.h"
-#include "base/stl_util.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/task_environment.h"
 #include "components/variations/variations.mojom.h"
diff --git a/components/variations/service/variations_service_unittest.cc b/components/variations/service/variations_service_unittest.cc
index 8c73177..422ef639 100644
--- a/components/variations/service/variations_service_unittest.cc
+++ b/components/variations/service/variations_service_unittest.cc
@@ -13,11 +13,11 @@
 
 #include "base/base64.h"
 #include "base/bind.h"
+#include "base/cxx17_backports.h"
 #include "base/feature_list.h"
 #include "base/json/json_string_value_serializer.h"
 #include "base/macros.h"
 #include "base/run_loop.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_split.h"
 #include "base/strings/string_util.h"
diff --git a/components/variations/study_filtering_unittest.cc b/components/variations/study_filtering_unittest.cc
index 91ff17b..7047bd75 100644
--- a/components/variations/study_filtering_unittest.cc
+++ b/components/variations/study_filtering_unittest.cc
@@ -12,8 +12,8 @@
 
 #include "base/bind.h"
 #include "base/callback_helpers.h"
+#include "base/cxx17_backports.h"
 #include "base/macros.h"
-#include "base/stl_util.h"
 #include "base/strings/string_split.h"
 #include "components/variations/client_filterable_state.h"
 #include "components/variations/processed_study.h"
diff --git a/components/variations/variations_seed_processor_unittest.cc b/components/variations/variations_seed_processor_unittest.cc
index 8e6fe40..3312e958 100644
--- a/components/variations/variations_seed_processor_unittest.cc
+++ b/components/variations/variations_seed_processor_unittest.cc
@@ -15,10 +15,10 @@
 #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/macros.h"
-#include "base/stl_util.h"
 #include "base/strings/string_split.h"
 #include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
diff --git a/components/visitedlink/browser/visitedlink_writer.cc b/components/visitedlink/browser/visitedlink_writer.cc
index e8af3af..23dbda3 100644
--- a/components/visitedlink/browser/visitedlink_writer.cc
+++ b/components/visitedlink/browser/visitedlink_writer.cc
@@ -14,11 +14,11 @@
 #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"
 #include "base/rand_util.h"
-#include "base/stl_util.h"
 #include "base/strings/string_util.h"
 #include "base/threading/thread_restrictions.h"
 #include "base/trace_event/trace_event.h"
diff --git a/components/viz/common/resources/resource_format_utils.cc b/components/viz/common/resources/resource_format_utils.cc
index 8360b42..99395cfe7 100644
--- a/components/viz/common/resources/resource_format_utils.cc
+++ b/components/viz/common/resources/resource_format_utils.cc
@@ -7,8 +7,8 @@
 #include <ostream>
 
 #include "base/check_op.h"
+#include "base/cxx17_backports.h"
 #include "base/notreached.h"
-#include "base/stl_util.h"
 #include "third_party/khronos/GLES2/gl2.h"
 #include "third_party/khronos/GLES2/gl2ext.h"
 #include "ui/gfx/buffer_types.h"
diff --git a/components/viz/common/yuv_readback_unittest.cc b/components/viz/common/yuv_readback_unittest.cc
index 78820f0..7071626 100644
--- a/components/viz/common/yuv_readback_unittest.cc
+++ b/components/viz/common/yuv_readback_unittest.cc
@@ -5,11 +5,11 @@
 #include <tuple>
 
 #include "base/bind.h"
+#include "base/cxx17_backports.h"
 #include "base/json/json_reader.h"
 #include "base/memory/ref_counted_memory.h"
 #include "base/numerics/ranges.h"
 #include "base/run_loop.h"
-#include "base/stl_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "base/trace_event/trace_event.h"
diff --git a/components/viz/service/display/bsp_tree_unittest.cc b/components/viz/service/display/bsp_tree_unittest.cc
index 01bc051..237a772 100644
--- a/components/viz/service/display/bsp_tree_unittest.cc
+++ b/components/viz/service/display/bsp_tree_unittest.cc
@@ -9,7 +9,7 @@
 #include <memory>
 
 #include "base/containers/circular_deque.h"
-#include "base/stl_util.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"
diff --git a/components/viz/service/display/gl_renderer.cc b/components/viz/service/display/gl_renderer.cc
index 601806e..6eb1aa17 100644
--- a/components/viz/service/display/gl_renderer.cc
+++ b/components/viz/service/display/gl_renderer.cc
@@ -17,10 +17,10 @@
 #include "base/bind.h"
 #include "base/callback_helpers.h"
 #include "base/check_op.h"
+#include "base/cxx17_backports.h"
 #include "base/feature_list.h"
 #include "base/memory/ptr_util.h"
 #include "base/notreached.h"
-#include "base/stl_util.h"
 #include "base/strings/string_split.h"
 #include "base/strings/string_util.h"
 #include "base/threading/thread_task_runner_handle.h"
diff --git a/components/viz/service/display/overlay_unittest.cc b/components/viz/service/display/overlay_unittest.cc
index fff8853..5cb1608 100644
--- a/components/viz/service/display/overlay_unittest.cc
+++ b/components/viz/service/display/overlay_unittest.cc
@@ -11,7 +11,7 @@
 #include "base/bind.h"
 #include "base/callback_helpers.h"
 #include "base/containers/flat_map.h"
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "base/time/time.h"
 #include "base/time/time_override.h"
 #include "base/unguessable_token.h"
diff --git a/components/viz/service/display/surface_aggregator_unittest.cc b/components/viz/service/display/surface_aggregator_unittest.cc
index a28599a..a7403d36 100644
--- a/components/viz/service/display/surface_aggregator_unittest.cc
+++ b/components/viz/service/display/surface_aggregator_unittest.cc
@@ -14,10 +14,10 @@
 #include <vector>
 
 #include "base/bind.h"
+#include "base/cxx17_backports.h"
 #include "base/format_macros.h"
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
-#include "base/stl_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/time/time.h"
 #include "cc/test/render_pass_test_utils.h"
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 eea72a2..3657a9c 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,7 @@
 #include <utility>
 
 #include "base/bind.h"
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "base/test/simple_test_tick_clock.h"
 #include "base/time/time.h"
 #include "build/build_config.h"
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 c0d8234..101399ab 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,11 +11,11 @@
 #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"
 #include "base/run_loop.h"
-#include "base/stl_util.h"
 #include "cc/test/pixel_comparator.h"
 #include "cc/test/pixel_test_utils.h"
 #include "components/viz/test/paths.h"
diff --git a/components/viz/test/test_context_provider.cc b/components/viz/test/test_context_provider.cc
index 34b6426e..875a85d 100644
--- a/components/viz/test/test_context_provider.cc
+++ b/components/viz/test/test_context_provider.cc
@@ -15,8 +15,8 @@
 #include "base/bind.h"
 #include "base/callback_helpers.h"
 #include "base/check.h"
+#include "base/cxx17_backports.h"
 #include "base/notreached.h"
-#include "base/stl_util.h"
 #include "build/build_config.h"
 #include "components/viz/common/gpu/context_cache_controller.h"
 #include "components/viz/test/test_gles2_interface.h"
diff --git a/components/webcrypto/algorithms/aes_cbc_unittest.cc b/components/webcrypto/algorithms/aes_cbc_unittest.cc
index fc9982d..467f5af 100644
--- a/components/webcrypto/algorithms/aes_cbc_unittest.cc
+++ b/components/webcrypto/algorithms/aes_cbc_unittest.cc
@@ -9,7 +9,7 @@
 #include <memory>
 #include <utility>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "base/values.h"
 #include "components/webcrypto/algorithm_dispatch.h"
 #include "components/webcrypto/algorithms/test_helpers.h"
diff --git a/components/webcrypto/algorithms/aes_ctr_unittest.cc b/components/webcrypto/algorithms/aes_ctr_unittest.cc
index ac0a2a91..01eeddcb 100644
--- a/components/webcrypto/algorithms/aes_ctr_unittest.cc
+++ b/components/webcrypto/algorithms/aes_ctr_unittest.cc
@@ -5,7 +5,7 @@
 #include <stddef.h>
 #include <stdint.h>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "base/values.h"
 #include "components/webcrypto/algorithm_dispatch.h"
 #include "components/webcrypto/algorithms/test_helpers.h"
diff --git a/components/webcrypto/algorithms/aes_gcm_unittest.cc b/components/webcrypto/algorithms/aes_gcm_unittest.cc
index e409ba0..c94c362 100644
--- a/components/webcrypto/algorithms/aes_gcm_unittest.cc
+++ b/components/webcrypto/algorithms/aes_gcm_unittest.cc
@@ -5,7 +5,7 @@
 #include <stddef.h>
 #include <stdint.h>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "base/values.h"
 #include "components/webcrypto/algorithm_dispatch.h"
 #include "components/webcrypto/algorithms/test_helpers.h"
diff --git a/components/webcrypto/algorithms/aes_kw_unittest.cc b/components/webcrypto/algorithms/aes_kw_unittest.cc
index 645c9d25..1d7cd89 100644
--- a/components/webcrypto/algorithms/aes_kw_unittest.cc
+++ b/components/webcrypto/algorithms/aes_kw_unittest.cc
@@ -7,7 +7,7 @@
 
 #include <memory>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "base/values.h"
 #include "components/webcrypto/algorithm_dispatch.h"
 #include "components/webcrypto/algorithms/test_helpers.h"
diff --git a/components/webcrypto/algorithms/ec.cc b/components/webcrypto/algorithms/ec.cc
index f0be1d3..13774c8c 100644
--- a/components/webcrypto/algorithms/ec.cc
+++ b/components/webcrypto/algorithms/ec.cc
@@ -7,7 +7,7 @@
 #include <stddef.h>
 #include <utility>
 
-#include "base/stl_util.h"
+#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"
diff --git a/components/webcrypto/algorithms/rsa_oaep_unittest.cc b/components/webcrypto/algorithms/rsa_oaep_unittest.cc
index cd3be74..0ebb170 100644
--- a/components/webcrypto/algorithms/rsa_oaep_unittest.cc
+++ b/components/webcrypto/algorithms/rsa_oaep_unittest.cc
@@ -6,7 +6,7 @@
 #include <stdint.h>
 
 #include "base/base64url.h"
-#include "base/stl_util.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"
diff --git a/components/webcrypto/algorithms/rsa_ssa_unittest.cc b/components/webcrypto/algorithms/rsa_ssa_unittest.cc
index d9009c3c..03c09bf8 100644
--- a/components/webcrypto/algorithms/rsa_ssa_unittest.cc
+++ b/components/webcrypto/algorithms/rsa_ssa_unittest.cc
@@ -6,7 +6,7 @@
 #include <stdint.h>
 
 #include "base/check_op.h"
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "base/values.h"
 #include "components/webcrypto/algorithm_dispatch.h"
 #include "components/webcrypto/algorithms/test_helpers.h"
diff --git a/components/webcrypto/algorithms/test_helpers.cc b/components/webcrypto/algorithms/test_helpers.cc
index d9afec1..cbb815b 100644
--- a/components/webcrypto/algorithms/test_helpers.cc
+++ b/components/webcrypto/algorithms/test_helpers.cc
@@ -10,11 +10,11 @@
 
 #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"
 #include "base/path_service.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_util.h"
 #include "base/values.h"
diff --git a/components/webcrypto/jwk.cc b/components/webcrypto/jwk.cc
index 08d5d0b..de3aa71 100644
--- a/components/webcrypto/jwk.cc
+++ b/components/webcrypto/jwk.cc
@@ -9,9 +9,9 @@
 #include <set>
 
 #include "base/base64url.h"
+#include "base/cxx17_backports.h"
 #include "base/json/json_reader.h"
 #include "base/json/json_writer.h"
-#include "base/stl_util.h"
 #include "base/strings/string_piece.h"
 #include "base/strings/stringprintf.h"
 #include "components/webcrypto/algorithms/util.h"
diff --git a/components/zoom/page_zoom_constants.cc b/components/zoom/page_zoom_constants.cc
index 9eeb1ba9..5a8437fa1 100644
--- a/components/zoom/page_zoom_constants.cc
+++ b/components/zoom/page_zoom_constants.cc
@@ -4,8 +4,8 @@
 
 #include "components/zoom/page_zoom_constants.h"
 
+#include "base/cxx17_backports.h"
 #include "base/json/json_writer.h"
-#include "base/stl_util.h"
 #include "base/values.h"
 
 namespace zoom {
diff --git a/components/zucchini/disassembler_ztf_unittest.cc b/components/zucchini/disassembler_ztf_unittest.cc
index 81891da2..515a1e3 100644
--- a/components/zucchini/disassembler_ztf_unittest.cc
+++ b/components/zucchini/disassembler_ztf_unittest.cc
@@ -13,7 +13,7 @@
 #include <utility>
 #include <vector>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "base/strings/string_piece.h"
 #include "components/zucchini/buffer_view.h"
 #include "components/zucchini/element_detection.h"
diff --git a/content/browser/accessibility/accessibility_event_recorder_auralinux.cc b/content/browser/accessibility/accessibility_event_recorder_auralinux.cc
index 66e0487..d48f33d 100644
--- a/content/browser/accessibility/accessibility_event_recorder_auralinux.cc
+++ b/content/browser/accessibility/accessibility_event_recorder_auralinux.cc
@@ -8,8 +8,8 @@
 #include <atk/atkutil.h>
 #include <atspi/atspi.h>
 
+#include "base/cxx17_backports.h"
 #include "base/process/process_handle.h"
-#include "base/stl_util.h"
 #include "base/strings/stringprintf.h"
 #include "content/browser/accessibility/browser_accessibility_auralinux.h"
 #include "content/browser/accessibility/browser_accessibility_manager.h"
diff --git a/content/browser/accessibility/accessibility_tree_formatter_android.cc b/content/browser/accessibility/accessibility_tree_formatter_android.cc
index 114539f0..1dd2f90 100644
--- a/content/browser/accessibility/accessibility_tree_formatter_android.cc
+++ b/content/browser/accessibility/accessibility_tree_formatter_android.cc
@@ -8,9 +8,9 @@
 
 #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/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_util.h"
 #include "base/strings/stringprintf.h"
diff --git a/content/browser/accessibility/aom_browsertest.cc b/content/browser/accessibility/aom_browsertest.cc
index 2fefe9c..4922a60 100644
--- a/content/browser/accessibility/aom_browsertest.cc
+++ b/content/browser/accessibility/aom_browsertest.cc
@@ -67,8 +67,9 @@
 
 }  // namespace
 
+// TODO(http://crbug.com/1212324): Flaky on various builders.
 IN_PROC_BROWSER_TEST_F(AccessibilityObjectModelBrowserTest,
-                       EventListenerOnVirtualNode) {
+                       DISABLED_EventListenerOnVirtualNode) {
   ASSERT_TRUE(embedded_test_server()->Start());
   EXPECT_TRUE(NavigateToURL(shell(), GURL(url::kAboutBlankURL)));
 
diff --git a/content/browser/accessibility/browser_accessibility_state_impl_win.cc b/content/browser/accessibility/browser_accessibility_state_impl_win.cc
index 7f690ff..9c1ea74 100644
--- a/content/browser/accessibility/browser_accessibility_state_impl_win.cc
+++ b/content/browser/accessibility/browser_accessibility_state_impl_win.cc
@@ -11,9 +11,9 @@
 
 #include <memory>
 
+#include "base/cxx17_backports.h"
 #include "base/files/file_path.h"
 #include "base/metrics/histogram_macros.h"
-#include "base/stl_util.h"
 #include "base/strings/string_util.h"
 #include "content/browser/web_contents/web_contents_impl.h"
 #include "ui/accessibility/accessibility_features.h"
diff --git a/content/browser/android/java/java_type_unittest.cc b/content/browser/android/java/java_type_unittest.cc
index 6594b038..4407aefd 100644
--- a/content/browser/android/java/java_type_unittest.cc
+++ b/content/browser/android/java/java_type_unittest.cc
@@ -8,7 +8,7 @@
 
 #include <memory>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace content {
diff --git a/content/browser/android/message_port_descriptor.cc b/content/browser/android/message_port_descriptor.cc
index fa2587c..bed390d 100644
--- a/content/browser/android/message_port_descriptor.cc
+++ b/content/browser/android/message_port_descriptor.cc
@@ -11,7 +11,7 @@
 #include "base/android/jni_android.h"
 #include "base/android/jni_array.h"
 #include "base/android/scoped_java_ref.h"
-#include "base/stl_util.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"
diff --git a/content/browser/appcache/appcache_cache_test_helper_unittest.cc b/content/browser/appcache/appcache_cache_test_helper_unittest.cc
index b32bb60..288fa52 100644
--- a/content/browser/appcache/appcache_cache_test_helper_unittest.cc
+++ b/content/browser/appcache/appcache_cache_test_helper_unittest.cc
@@ -12,11 +12,11 @@
 
 #include "base/bind.h"
 #include "base/callback_helpers.h"
+#include "base/cxx17_backports.h"
 #include "base/location.h"
 #include "base/memory/ptr_util.h"
 #include "base/run_loop.h"
 #include "base/single_thread_task_runner.h"
-#include "base/stl_util.h"
 #include "base/synchronization/waitable_event.h"
 #include "base/test/task_environment.h"
 #include "base/threading/thread_task_runner_handle.h"
diff --git a/content/browser/appcache/appcache_request_handler_unittest.cc b/content/browser/appcache/appcache_request_handler_unittest.cc
index 784bdf1f..307bc26 100644
--- a/content/browser/appcache/appcache_request_handler_unittest.cc
+++ b/content/browser/appcache/appcache_request_handler_unittest.cc
@@ -14,11 +14,11 @@
 #include "base/callback.h"
 #include "base/callback_helpers.h"
 #include "base/containers/stack.h"
+#include "base/cxx17_backports.h"
 #include "base/location.h"
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
 #include "base/single_thread_task_runner.h"
-#include "base/stl_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/synchronization/waitable_event.h"
 #include "base/test/scoped_feature_list.h"
diff --git a/content/browser/appcache/appcache_response_unittest.cc b/content/browser/appcache/appcache_response_unittest.cc
index 7e28c7a9..0fdf25f4 100644
--- a/content/browser/appcache/appcache_response_unittest.cc
+++ b/content/browser/appcache/appcache_response_unittest.cc
@@ -13,12 +13,12 @@
 #include "base/callback_helpers.h"
 #include "base/compiler_specific.h"
 #include "base/containers/stack.h"
+#include "base/cxx17_backports.h"
 #include "base/location.h"
 #include "base/message_loop/message_pump_type.h"
 #include "base/pickle.h"
 #include "base/run_loop.h"
 #include "base/single_thread_task_runner.h"
-#include "base/stl_util.h"
 #include "base/strings/escape.h"
 #include "base/synchronization/waitable_event.h"
 #include "base/test/bind.h"
diff --git a/content/browser/appcache/appcache_service_unittest.cc b/content/browser/appcache/appcache_service_unittest.cc
index 2d2f5c60..53ce001 100644
--- a/content/browser/appcache/appcache_service_unittest.cc
+++ b/content/browser/appcache/appcache_service_unittest.cc
@@ -10,11 +10,11 @@
 
 #include "base/bind.h"
 #include "base/callback_helpers.h"
+#include "base/cxx17_backports.h"
 #include "base/location.h"
 #include "base/pickle.h"
 #include "base/run_loop.h"
 #include "base/single_thread_task_runner.h"
-#include "base/stl_util.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "content/browser/appcache/appcache_response_info.h"
 #include "content/browser/appcache/appcache_service_impl.h"
diff --git a/content/browser/appcache/appcache_update_job_unittest.cc b/content/browser/appcache/appcache_update_job_unittest.cc
index 35abdd0..ddb8d64b 100644
--- a/content/browser/appcache/appcache_update_job_unittest.cc
+++ b/content/browser/appcache/appcache_update_job_unittest.cc
@@ -13,11 +13,11 @@
 #include "base/bind.h"
 #include "base/callback_helpers.h"
 #include "base/containers/contains.h"
+#include "base/cxx17_backports.h"
 #include "base/location.h"
 #include "base/memory/ptr_util.h"
 #include "base/run_loop.h"
 #include "base/single_thread_task_runner.h"
-#include "base/stl_util.h"
 #include "base/strings/strcat.h"
 #include "base/synchronization/waitable_event.h"
 #include "base/test/scoped_feature_list.h"
diff --git a/content/browser/appcache/test_origin_trial_policy.cc b/content/browser/appcache/test_origin_trial_policy.cc
index cf70532..48de5bf 100644
--- a/content/browser/appcache/test_origin_trial_policy.cc
+++ b/content/browser/appcache/test_origin_trial_policy.cc
@@ -4,7 +4,7 @@
 
 #include "content/browser/appcache/test_origin_trial_policy.h"
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 
 namespace content {
 
diff --git a/content/browser/blob_storage/blob_url_unittest.cc b/content/browser/blob_storage/blob_url_unittest.cc
index a7edd4e..8d49c3d 100644
--- a/content/browser/blob_storage/blob_url_unittest.cc
+++ b/content/browser/blob_storage/blob_url_unittest.cc
@@ -8,13 +8,13 @@
 #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"
 #include "base/memory/ref_counted.h"
 #include "base/numerics/safe_conversions.h"
 #include "base/run_loop.h"
-#include "base/stl_util.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "base/time/time.h"
 #include "content/public/test/browser_task_environment.h"
diff --git a/content/browser/browser_child_process_host_impl.cc b/content/browser/browser_child_process_host_impl.cc
index cd27590..f9027332 100644
--- a/content/browser/browser_child_process_host_impl.cc
+++ b/content/browser/browser_child_process_host_impl.cc
@@ -9,6 +9,7 @@
 #include "base/base_switches.h"
 #include "base/bind.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"
@@ -21,7 +22,6 @@
 #include "base/metrics/persistent_histogram_allocator.h"
 #include "base/metrics/persistent_memory_allocator.h"
 #include "base/no_destructor.h"
-#include "base/stl_util.h"
 #include "base/strings/string_util.h"
 #include "base/synchronization/waitable_event.h"
 #include "base/threading/thread_task_runner_handle.h"
diff --git a/content/browser/browser_main_loop.cc b/content/browser/browser_main_loop.cc
index 058bdd40..4c1b0bb 100644
--- a/content/browser/browser_main_loop.cc
+++ b/content/browser/browser_main_loop.cc
@@ -15,6 +15,7 @@
 #include "base/base_switches.h"
 #include "base/bind.h"
 #include "base/command_line.h"
+#include "base/cxx17_backports.h"
 #include "base/deferred_sequenced_task_runner.h"
 #include "base/feature_list.h"
 #include "base/location.h"
@@ -33,7 +34,6 @@
 #include "base/run_loop.h"
 #include "base/scoped_observation.h"
 #include "base/single_thread_task_runner.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_split.h"
 #include "base/synchronization/waitable_event.h"
diff --git a/content/browser/browser_url_handler_impl.cc b/content/browser/browser_url_handler_impl.cc
index 919d97e..e00e303 100644
--- a/content/browser/browser_url_handler_impl.cc
+++ b/content/browser/browser_url_handler_impl.cc
@@ -6,8 +6,8 @@
 
 #include <stddef.h>
 
+#include "base/cxx17_backports.h"
 #include "base/ranges/algorithm.h"
-#include "base/stl_util.h"
 #include "base/strings/string_util.h"
 #include "content/browser/renderer_host/debug_urls.h"
 #include "content/browser/webui/web_ui_impl.h"
diff --git a/content/browser/devtools/devtools_io_context.cc b/content/browser/devtools/devtools_io_context.cc
index c45fdfc7..88aced1 100644
--- a/content/browser/devtools/devtools_io_context.cc
+++ b/content/browser/devtools/devtools_io_context.cc
@@ -5,8 +5,8 @@
 #include "content/browser/devtools/devtools_io_context.h"
 
 #include "base/bind.h"
+#include "base/cxx17_backports.h"
 #include "base/sequenced_task_runner.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "content/browser/blob_storage/chrome_blob_storage_context.h"
 #include "content/browser/devtools/devtools_stream_blob.h"
diff --git a/content/browser/devtools/devtools_video_consumer_unittest.cc b/content/browser/devtools/devtools_video_consumer_unittest.cc
index 60e6884..865ab3b 100644
--- a/content/browser/devtools/devtools_video_consumer_unittest.cc
+++ b/content/browser/devtools/devtools_video_consumer_unittest.cc
@@ -27,6 +27,9 @@
 constexpr gfx::Size kResolution = gfx::Size(320, 180);  // Arbitrarily chosen.
 constexpr media::VideoPixelFormat kFormat = media::PIXEL_FORMAT_I420;
 
+// Video buffer parameters.
+constexpr bool kNotPremapped = false;
+
 // A non-zero FrameSinkId to prevent validation errors when
 // DevToolsVideoConsumer::ChangeTarget(viz::FrameSinkId) is called
 // (which eventually fails in FrameSinkVideoCapturerStubDispatch::Accept).
@@ -193,7 +196,8 @@
 
     media::mojom::VideoFrameInfoPtr info = media::mojom::VideoFrameInfo::New(
         base::TimeDelta(), media::VideoFrameMetadata(), kFormat, kResolution,
-        gfx::Rect(kResolution), gfx::ColorSpace::CreateREC709(), nullptr);
+        gfx::Rect(kResolution), kNotPremapped, gfx::ColorSpace::CreateREC709(),
+        nullptr);
 
     consumer_->OnFrameCaptured(std::move(data), std::move(info),
                                gfx::Rect(kResolution),
diff --git a/content/browser/download/save_package_unittest.cc b/content/browser/download/save_package_unittest.cc
index d626e35..b91539f3 100644
--- a/content/browser/download/save_package_unittest.cc
+++ b/content/browser/download/save_package_unittest.cc
@@ -7,10 +7,10 @@
 
 #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"
-#include "base/stl_util.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "build/build_config.h"
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 58decd3..03cb55c 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,7 @@
 
 #include <memory>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "base/test/scoped_feature_list.h"
 #include "base/threading/thread_restrictions.h"
 #include "build/build_config.h"
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 d7025b4f..aa25043d 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
@@ -5,11 +5,11 @@
 #include "testing/gtest/include/gtest/gtest.h"
 
 #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/stl_util.h"
 #include "base/strings/string_util.h"
 #include "content/browser/font_unique_name_lookup/font_unique_name_lookup.h"
 #include "third_party/blink/public/common/font_unique_name_lookup/font_table_matcher.h"
diff --git a/content/browser/gpu/compositor_util.cc b/content/browser/gpu/compositor_util.cc
index d3604f9..79d2285f 100644
--- a/content/browser/gpu/compositor_util.cc
+++ b/content/browser/gpu/compositor_util.cc
@@ -11,11 +11,11 @@
 #include <utility>
 
 #include "base/command_line.h"
+#include "base/cxx17_backports.h"
 #include "base/feature_list.h"
 #include "base/logging.h"
 #include "base/metrics/field_trial.h"
 #include "base/numerics/ranges.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_split.h"
 #include "base/system/sys_info.h"
diff --git a/content/browser/gpu/gpu_process_host.cc b/content/browser/gpu/gpu_process_host.cc
index 4f7de561..262633b 100644
--- a/content/browser/gpu/gpu_process_host.cc
+++ b/content/browser/gpu/gpu_process_host.cc
@@ -16,6 +16,7 @@
 #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/logging.h"
 #include "base/memory/ref_counted.h"
@@ -25,7 +26,6 @@
 #include "base/metrics/histogram_macros.h"
 #include "base/no_destructor.h"
 #include "base/numerics/ranges.h"
-#include "base/stl_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/threading/thread.h"
diff --git a/content/browser/host_zoom_map_impl_unittest.cc b/content/browser/host_zoom_map_impl_unittest.cc
index 7dedbdbf..7c332065 100644
--- a/content/browser/host_zoom_map_impl_unittest.cc
+++ b/content/browser/host_zoom_map_impl_unittest.cc
@@ -6,8 +6,8 @@
 
 #include <stddef.h>
 
+#include "base/cxx17_backports.h"
 #include "base/memory/ref_counted.h"
-#include "base/stl_util.h"
 #include "base/test/simple_test_clock.h"
 #include "content/public/test/browser_task_environment.h"
 #include "testing/gtest/include/gtest/gtest.h"
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 b19fb0c..73798288 100644
--- a/content/browser/indexed_db/indexed_db_backing_store_unittest.cc
+++ b/content/browser/indexed_db/indexed_db_backing_store_unittest.cc
@@ -15,12 +15,12 @@
 #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"
 #include "base/notreached.h"
 #include "base/sequenced_task_runner.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/synchronization/waitable_event.h"
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 7e050d3d..2df6d0a 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,7 @@
 #include <utility>
 #include <vector>
 
-#include "base/stl_util.h"
+#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"
diff --git a/content/browser/media/capture/desktop_streams_registry_impl.cc b/content/browser/media/capture/desktop_streams_registry_impl.cc
index e345bbad..7b00b61 100644
--- a/content/browser/media/capture/desktop_streams_registry_impl.cc
+++ b/content/browser/media/capture/desktop_streams_registry_impl.cc
@@ -6,10 +6,10 @@
 
 #include "base/base64.h"
 #include "base/bind.h"
+#include "base/cxx17_backports.h"
 #include "base/location.h"
 #include "base/macros.h"
 #include "base/no_destructor.h"
-#include "base/stl_util.h"
 #include "base/time/time.h"
 #include "content/public/browser/browser_task_traits.h"
 #include "content/public/browser/browser_thread.h"
diff --git a/content/browser/media/capture/frame_sink_video_capture_device_unittest.cc b/content/browser/media/capture/frame_sink_video_capture_device_unittest.cc
index 880e89c..b59069c 100644
--- a/content/browser/media/capture/frame_sink_video_capture_device_unittest.cc
+++ b/content/browser/media/capture/frame_sink_video_capture_device_unittest.cc
@@ -70,6 +70,9 @@
     base::Time::kMicrosecondsPerSecond / kMaxFrameRate);
 constexpr media::VideoPixelFormat kFormat = media::PIXEL_FORMAT_I420;
 
+// Video buffer parameters.
+constexpr bool kNotPremapped = false;
+
 // Helper to return the capture parameters packaged in a VideoCaptureParams.
 media::VideoCaptureParams GetCaptureParams() {
   media::VideoCaptureParams params;
@@ -388,7 +391,7 @@
               std::move(data),
               media::mojom::VideoFrameInfo::New(
                   kMinCapturePeriod * frame_number, media::VideoFrameMetadata(),
-                  kFormat, kResolution, gfx::Rect(kResolution),
+                  kFormat, kResolution, gfx::Rect(kResolution), kNotPremapped,
                   gfx::ColorSpace::CreateREC709(), nullptr),
               gfx::Rect(kResolution), std::move(callbacks_remote));
         },
diff --git a/content/browser/media/media_internals.cc b/content/browser/media/media_internals.cc
index 1ba5dd0..88ee60f1 100644
--- a/content/browser/media/media_internals.cc
+++ b/content/browser/media/media_internals.cc
@@ -12,11 +12,11 @@
 
 #include "base/bind.h"
 #include "base/containers/adapters.h"
+#include "base/cxx17_backports.h"
 #include "base/feature_list.h"
 #include "base/metrics/field_trial_params.h"
 #include "base/metrics/histogram_functions.h"
 #include "base/metrics/histogram_macros.h"
-#include "base/stl_util.h"
 #include "base/strings/strcat.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/stringprintf.h"
diff --git a/content/browser/notifications/notification_database_conversions_unittest.cc b/content/browser/notifications/notification_database_conversions_unittest.cc
index 78d1740..814a70c 100644
--- a/content/browser/notifications/notification_database_conversions_unittest.cc
+++ b/content/browser/notifications/notification_database_conversions_unittest.cc
@@ -5,8 +5,8 @@
 #include <stddef.h>
 #include <stdint.h>
 
+#include "base/cxx17_backports.h"
 #include "base/macros.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/time/time.h"
diff --git a/content/browser/payments/payment_app_database.cc b/content/browser/payments/payment_app_database.cc
index bc9acd9..4e166497 100644
--- a/content/browser/payments/payment_app_database.cc
+++ b/content/browser/payments/payment_app_database.cc
@@ -364,10 +364,8 @@
   bool success = payment_app_proto.SerializeToString(&serialized_payment_app);
   DCHECK(success);
 
-  // TODO(crbug.com/1199077): Update this when ServiceWorkerRegistration
-  // implements StorageKey.
   service_worker_context_->StoreRegistrationUserData(
-      registration->id(), storage::StorageKey(registration->origin()),
+      registration->id(), registration->key(),
       {{CreatePaymentAppKey(registration->scope().spec()),
         serialized_payment_app}},
       base::BindOnce(&PaymentAppDatabase::DidUpdatePaymentApp,
@@ -444,21 +442,23 @@
     return;
   }
 
-  // TODO(crbug.com/1199077): Update this when ServiceWorkerRegistration
-  // implements StorageKey.
+  // Constructing registration_id and payment_app_key before
+  // moving registration.
+  int64_t registration_id = registration->id();
+  std::string payment_app_key =
+      CreatePaymentAppKey(registration->scope().spec());
   service_worker_context_->GetRegistrationUserDataByKeyPrefix(
-      registration->id(), CreatePaymentAppKey(registration->scope().spec()),
+      registration_id, payment_app_key,
       base::BindOnce(
           &PaymentAppDatabase::DidGetPaymentAppInfoToEnableDelegations,
           weak_ptr_factory_.GetWeakPtr(), delegations, std::move(callback),
-          registration->id(), registration->scope()));
+          std::move(registration)));
 }
 
 void PaymentAppDatabase::DidGetPaymentAppInfoToEnableDelegations(
     const std::vector<PaymentDelegation>& delegations,
     EnableDelegationsCallback callback,
-    int64_t registration_id,
-    const GURL& pattern,
+    scoped_refptr<ServiceWorkerRegistration> registration,
     const std::vector<std::string>& data,
     blink::ServiceWorkerStatusCode status) {
   DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
@@ -499,8 +499,9 @@
   DCHECK(success);
 
   service_worker_context_->StoreRegistrationUserData(
-      registration_id, storage::StorageKey(url::Origin::Create(pattern)),
-      {{CreatePaymentAppKey(pattern.spec()), serialized_payment_app}},
+      registration->id(), registration->key(),
+      {{CreatePaymentAppKey(registration->scope().spec()),
+        serialized_payment_app}},
       base::BindOnce(&PaymentAppDatabase::DidEnablePaymentAppDelegations,
                      weak_ptr_factory_.GetWeakPtr(), std::move(callback)));
 }
@@ -523,19 +524,21 @@
   if (status != blink::ServiceWorkerStatusCode::kOk)
     return;
 
-  // TODO(crbug.com/1199077): Update this when ServiceWorkerRegistration
-  // implements StorageKey.
+  // Constructing registration_id and payment_app_key before
+  // moving registration.
+  int64_t registration_id = registration->id();
+  std::string payment_app_key =
+      CreatePaymentAppKey(registration->scope().spec());
   service_worker_context_->GetRegistrationUserDataByKeyPrefix(
-      registration->id(), CreatePaymentAppKey(registration->scope().spec()),
+      registration_id, payment_app_key,
       base::BindOnce(&PaymentAppDatabase::DidGetPaymentAppInfoToSetUserHint,
                      weak_ptr_factory_.GetWeakPtr(), user_hint,
-                     registration->id(), registration->scope()));
+                     std::move(registration)));
 }
 
 void PaymentAppDatabase::DidGetPaymentAppInfoToSetUserHint(
     const std::string& user_hint,
-    int64_t registration_id,
-    const GURL& pattern,
+    scoped_refptr<ServiceWorkerRegistration> registration,
     const std::vector<std::string>& data,
     blink::ServiceWorkerStatusCode status) {
   DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
@@ -554,8 +557,9 @@
   DCHECK(success);
 
   service_worker_context_->StoreRegistrationUserData(
-      registration_id, storage::StorageKey(url::Origin::Create(pattern)),
-      {{CreatePaymentAppKey(pattern.spec()), serialized_payment_app}},
+      registration->id(), registration->key(),
+      {{CreatePaymentAppKey(registration->scope().spec()),
+        serialized_payment_app}},
       base::BindOnce(&PaymentAppDatabase::DidSetPaymentAppUserHint,
                      weak_ptr_factory_.GetWeakPtr()));
 }
@@ -622,15 +626,13 @@
   bool success = payment_app_proto.SerializeToString(&serialized_payment_app);
   DCHECK(success);
 
-  // Constructing registration_id, registration_origin and storage_key before
+  // Constructing registration_id, registration_key and storage_key before
   // moving registration.
   int64_t registration_id = registration->id();
-  url::Origin registration_origin = registration->origin();
+  storage::StorageKey registration_key = registration->key();
   std::string storage_key = CreatePaymentAppKey(registration->scope().spec());
-  // TODO(crbug.com/1199077): Update this when ServiceWorkerRegistration
-  // implements StorageKey.
   service_worker_context_->StoreRegistrationUserData(
-      registration_id, storage::StorageKey(registration_origin),
+      registration_id, registration_key,
       {{storage_key, serialized_payment_app}},
       base::BindOnce(&PaymentAppDatabase::DidWritePaymentAppForSetPaymentApp,
                      weak_ptr_factory_.GetWeakPtr(), instrument_key, method,
@@ -669,10 +671,8 @@
   success = key_info_proto.SerializeToString(&serialized_key_info);
   DCHECK(success);
 
-  // TODO(crbug.com/1199077): Update this when ServiceWorkerRegistration
-  // implements StorageKey.
   service_worker_context_->StoreRegistrationUserData(
-      registration->id(), storage::StorageKey(registration->origin()),
+      registration->id(), registration->key(),
       {{CreatePaymentInstrumentKey(instrument_key), serialized_instrument},
        {CreatePaymentInstrumentKeyInfoKey(instrument_key),
         serialized_key_info}},
@@ -952,10 +952,8 @@
   success = key_info_proto.SerializeToString(&serialized_key_info);
   DCHECK(success);
 
-  // TODO(crbug.com/1199077): Update this when ServiceWorkerRegistration
-  // implements StorageKey.
   service_worker_context_->StoreRegistrationUserData(
-      registration->id(), storage::StorageKey(registration->origin()),
+      registration->id(), registration->key(),
       {{CreatePaymentInstrumentKey(instrument_key), serialized_instrument},
        {CreatePaymentInstrumentKeyInfoKey(instrument_key),
         serialized_key_info}},
diff --git a/content/browser/payments/payment_app_database.h b/content/browser/payments/payment_app_database.h
index a2a02b9..e70e211 100644
--- a/content/browser/payments/payment_app_database.h
+++ b/content/browser/payments/payment_app_database.h
@@ -204,11 +204,11 @@
       const std::string& user_hint,
       blink::ServiceWorkerStatusCode status,
       scoped_refptr<ServiceWorkerRegistration> registration);
-  void DidGetPaymentAppInfoToSetUserHint(const std::string& user_hint,
-                                         int64_t registration_id,
-                                         const GURL& pattern,
-                                         const std::vector<std::string>& data,
-                                         blink::ServiceWorkerStatusCode status);
+  void DidGetPaymentAppInfoToSetUserHint(
+      const std::string& user_hint,
+      scoped_refptr<ServiceWorkerRegistration> registration,
+      const std::vector<std::string>& data,
+      blink::ServiceWorkerStatusCode status);
   void DidSetPaymentAppUserHint(blink::ServiceWorkerStatusCode status);
 
   // EnablePaymentAppDelegations callbacks.
@@ -220,8 +220,7 @@
   void DidGetPaymentAppInfoToEnableDelegations(
       const std::vector<payments::mojom::PaymentDelegation>& delegations,
       EnableDelegationsCallback callback,
-      int64_t registration_id,
-      const GURL& pattern,
+      scoped_refptr<ServiceWorkerRegistration> registration,
       const std::vector<std::string>& data,
       blink::ServiceWorkerStatusCode status);
   void DidEnablePaymentAppDelegations(EnableDelegationsCallback callback,
diff --git a/content/browser/pointer_lock_browsertest.cc b/content/browser/pointer_lock_browsertest.cc
index 7a284f26..bda293b 100644
--- a/content/browser/pointer_lock_browsertest.cc
+++ b/content/browser/pointer_lock_browsertest.cc
@@ -280,7 +280,13 @@
                        grand_child, EXECUTE_SCRIPT_NO_USER_GESTURE));
 }
 
-IN_PROC_BROWSER_TEST_F(PointerLockBrowserTest, PointerLockEventRouting) {
+// crbug.com/1210940: flaky on Linux
+#if defined(OS_LINUX)
+#define MAYBE_PointerLockEventRouting DISABLED_PointerLockEventRouting
+#else
+#define MAYBE_PointerLockEventRouting PointerLockEventRouting
+#endif
+IN_PROC_BROWSER_TEST_F(PointerLockBrowserTest, MAYBE_PointerLockEventRouting) {
   GURL main_url(embedded_test_server()->GetURL(
       "a.com", "/cross_site_iframe_factory.html?a(b)"));
   EXPECT_TRUE(NavigateToURL(shell(), main_url));
diff --git a/content/browser/ppapi_plugin_process_host.cc b/content/browser/ppapi_plugin_process_host.cc
index 4493794..bebe914 100644
--- a/content/browser/ppapi_plugin_process_host.cc
+++ b/content/browser/ppapi_plugin_process_host.cc
@@ -12,9 +12,9 @@
 #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/metrics/field_trial.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/utf_string_conversions.h"
 #include "build/build_config.h"
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 bec8219..96ac4899 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
@@ -28,6 +28,11 @@
 
 }  // namespace
 
+bool BackForwardCacheCanStoreDocumentResult::HasNotStoredReason(
+    BackForwardCacheMetrics::NotRestoredReason reason) const {
+  return not_stored_reasons_.test(static_cast<size_t>(reason));
+}
+
 bool BackForwardCacheCanStoreDocumentResult::CanStore() const {
   return not_stored_reasons_.none();
 }
@@ -193,7 +198,7 @@
 
 void BackForwardCacheCanStoreDocumentResult::AddReasonsFrom(
     const BackForwardCacheCanStoreDocumentResult& other) {
-  not_stored_reasons_ |= other.not_stored_reasons();
+  not_stored_reasons_ |= other.not_stored_reasons_;
   blocklisted_features_ |= other.blocklisted_features();
   for (const BackForwardCache::DisabledReason& reason :
        other.disabled_reasons()) {
diff --git a/content/browser/renderer_host/back_forward_cache_can_store_document_result.h b/content/browser/renderer_host/back_forward_cache_can_store_document_result.h
index 7fe7be96..9b260a0 100644
--- a/content/browser/renderer_host/back_forward_cache_can_store_document_result.h
+++ b/content/browser/renderer_host/back_forward_cache_can_store_document_result.h
@@ -33,6 +33,8 @@
 
   // Add reasons contained in the |other| to |this|.
   void AddReasonsFrom(const BackForwardCacheCanStoreDocumentResult& other);
+  bool HasNotStoredReason(
+      BackForwardCacheMetrics::NotRestoredReason reason) const;
 
   void No(BackForwardCacheMetrics::NotRestoredReason reason);
   void NoDueToFeatures(uint64_t features);
diff --git a/content/browser/renderer_host/back_forward_cache_metrics.cc b/content/browser/renderer_host/back_forward_cache_metrics.cc
index 8b293de..72a586f 100644
--- a/content/browser/renderer_host/back_forward_cache_metrics.cc
+++ b/content/browser/renderer_host/back_forward_cache_metrics.cc
@@ -258,9 +258,7 @@
     const BackForwardCacheCanStoreDocumentResult& can_store) {
   page_store_result_->AddReasonsFrom(can_store);
 
-  if (can_store.not_stored_reasons().test(
-          static_cast<size_t>(BackForwardCacheMetrics::NotRestoredReason::
-                                  kRendererProcessKilled))) {
+  if (can_store.HasNotStoredReason(NotRestoredReason::kRendererProcessKilled)) {
     renderer_killed_timestamp_ = Now();
   }
 }
@@ -303,12 +301,11 @@
     if (back_forward_cache_allowed) {
       UMA_HISTOGRAM_ENUMERATION(
           "BackForwardCache.EvictedAfterDocumentRestoredReason",
-          BackForwardCacheMetrics::EvictedAfterDocumentRestoredReason::
-              kRestored);
+          EvictedAfterDocumentRestoredReason::kRestored);
     }
     UMA_HISTOGRAM_ENUMERATION(
         "BackForwardCache.AllSites.EvictedAfterDocumentRestoredReason",
-        BackForwardCacheMetrics::EvictedAfterDocumentRestoredReason::kRestored);
+        EvictedAfterDocumentRestoredReason::kRestored);
   }
 
   if (back_forward_cache_allowed) {
@@ -324,8 +321,8 @@
   UMA_HISTOGRAM_ENUMERATION(
       "BackForwardCache.AllSites.HistoryNavigationOutcome", outcome);
 
-  for (int i = 0; i <= static_cast<int>(NotRestoredReason::kMaxValue); i++) {
-    if (!page_store_result_->not_stored_reasons().test(static_cast<size_t>(i)))
+  for (size_t i = 0; i <= static_cast<int>(NotRestoredReason::kMaxValue); i++) {
+    if (!page_store_result_->not_stored_reasons().test(i))
       continue;
     DCHECK(!navigation->IsServedFromBackForwardCache());
     NotRestoredReason reason = static_cast<NotRestoredReason>(i);
@@ -337,8 +334,7 @@
     UMA_HISTOGRAM_ENUMERATION(
         "BackForwardCache.AllSites.HistoryNavigationOutcome.NotRestoredReason",
         reason);
-    if (reason ==
-        BackForwardCacheMetrics::NotRestoredReason::kRendererProcessKilled) {
+    if (reason == NotRestoredReason::kRendererProcessKilled) {
       DCHECK(renderer_killed_timestamp_);
       DCHECK(navigated_away_from_main_document_timestamp_);
       base::TimeDelta time =
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 9878035b..f9dd3a8 100644
--- a/content/browser/renderer_host/dwrite_font_proxy_impl_win.cc
+++ b/content/browser/renderer_host/dwrite_font_proxy_impl_win.cc
@@ -16,11 +16,11 @@
 
 #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"
 #include "base/metrics/histogram_macros.h"
-#include "base/stl_util.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/task/post_task.h"
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 0eab816..0495a7b3 100644
--- a/content/browser/renderer_host/input/input_router_impl_unittest.cc
+++ b/content/browser/renderer_host/input/input_router_impl_unittest.cc
@@ -13,10 +13,10 @@
 #include <vector>
 
 #include "base/command_line.h"
+#include "base/cxx17_backports.h"
 #include "base/location.h"
 #include "base/run_loop.h"
 #include "base/single_thread_task_runner.h"
-#include "base/stl_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/scoped_feature_list.h"
 #include "base/test/task_environment.h"
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 6f36e8a3..bc4472d 100644
--- a/content/browser/renderer_host/input/motion_event_web_unittest.cc
+++ b/content/browser/renderer_host/input/motion_event_web_unittest.cc
@@ -4,8 +4,8 @@
 
 #include <stddef.h>
 
+#include "base/cxx17_backports.h"
 #include "base/numerics/math_constants.h"
-#include "base/stl_util.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"
diff --git a/content/browser/renderer_host/media/media_stream_manager.cc b/content/browser/renderer_host/media/media_stream_manager.cc
index bc85b94c..0254f32 100644
--- a/content/browser/renderer_host/media/media_stream_manager.cc
+++ b/content/browser/renderer_host/media/media_stream_manager.cc
@@ -17,13 +17,13 @@
 #include "base/bind_post_task.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"
 #include "base/power_monitor/power_monitor.h"
 #include "base/power_monitor/power_monitor_source.h"
 #include "base/rand_util.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_util.h"
 #include "base/strings/stringprintf.h"
diff --git a/content/browser/renderer_host/navigation_controller_impl_unittest.cc b/content/browser/renderer_host/navigation_controller_impl_unittest.cc
index 62ae44ba..36ed866 100644
--- a/content/browser/renderer_host/navigation_controller_impl_unittest.cc
+++ b/content/browser/renderer_host/navigation_controller_impl_unittest.cc
@@ -13,9 +13,9 @@
 #include <utility>
 
 #include "base/bind.h"
+#include "base/cxx17_backports.h"
 #include "base/files/file_util.h"
 #include "base/memory/ptr_util.h"
-#include "base/stl_util.h"
 #include "base/strings/string_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
diff --git a/content/browser/renderer_host/navigator_unittest.cc b/content/browser/renderer_host/navigator_unittest.cc
index cc3254b0..dd33548 100644
--- a/content/browser/renderer_host/navigator_unittest.cc
+++ b/content/browser/renderer_host/navigator_unittest.cc
@@ -6,8 +6,8 @@
 
 #include <stdint.h>
 
+#include "base/cxx17_backports.h"
 #include "base/feature_list.h"
-#include "base/stl_util.h"
 #include "base/test/test_simple_task_runner.h"
 #include "base/time/time.h"
 #include "build/build_config.h"
diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc
index 347f12c1..8bcdeaa 100644
--- a/content/browser/renderer_host/render_process_host_impl.cc
+++ b/content/browser/renderer_host/render_process_host_impl.cc
@@ -24,6 +24,7 @@
 #include "base/containers/adapters.h"
 #include "base/containers/contains.h"
 #include "base/containers/flat_map.h"
+#include "base/cxx17_backports.h"
 #include "base/debug/alias.h"
 #include "base/debug/crash_logging.h"
 #include "base/debug/dump_without_crashing.h"
@@ -51,7 +52,6 @@
 #include "base/process/process_handle.h"
 #include "base/rand_util.h"
 #include "base/single_thread_task_runner.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/supports_user_data.h"
 #include "base/synchronization/lock.h"
diff --git a/content/browser/sandbox_ipc_linux.cc b/content/browser/sandbox_ipc_linux.cc
index b0cade3d5..f1d611c1 100644
--- a/content/browser/sandbox_ipc_linux.cc
+++ b/content/browser/sandbox_ipc_linux.cc
@@ -13,6 +13,7 @@
 #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"
@@ -20,7 +21,6 @@
 #include "base/posix/eintr_wrapper.h"
 #include "base/posix/unix_domain_socket.h"
 #include "base/process/launch.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "content/public/common/content_switches.h"
 #include "sandbox/linux/services/libc_interceptor.h"
diff --git a/content/browser/service_process_host_browsertest.cc b/content/browser/service_process_host_browsertest.cc
index a6fa2c5..63e94c56 100644
--- a/content/browser/service_process_host_browsertest.cc
+++ b/content/browser/service_process_host_browsertest.cc
@@ -4,10 +4,10 @@
 
 #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/stl_util.h"
 #include "base/test/bind.h"
 #include "base/time/time.h"
 #include "base/timer/elapsed_timer.h"
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 a00b920..4f03b82e 100644
--- a/content/browser/service_worker/service_worker_cache_writer_unittest.cc
+++ b/content/browser/service_worker/service_worker_cache_writer_unittest.cc
@@ -13,8 +13,8 @@
 #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/stl_util.h"
 #include "base/test/task_environment.h"
 #include "content/browser/service_worker/service_worker_test_utils.h"
 #include "testing/gtest/include/gtest/gtest.h"
diff --git a/content/browser/service_worker/service_worker_context_wrapper_unittest.cc b/content/browser/service_worker/service_worker_context_wrapper_unittest.cc
index 41aaac5..1274faa 100644
--- a/content/browser/service_worker/service_worker_context_wrapper_unittest.cc
+++ b/content/browser/service_worker/service_worker_context_wrapper_unittest.cc
@@ -90,7 +90,7 @@
     blink::ServiceWorkerStatusCode result;
     base::RunLoop loop;
     registry()->DeleteRegistration(
-        registration, storage::StorageKey(registration->origin()),
+        registration, registration->key(),
         base::BindLambdaForTesting([&](blink::ServiceWorkerStatusCode status) {
           result = status;
           loop.Quit();
diff --git a/content/browser/service_worker/service_worker_job_unittest.cc b/content/browser/service_worker/service_worker_job_unittest.cc
index cc2478e..bb6e1dd 100644
--- a/content/browser/service_worker/service_worker_job_unittest.cc
+++ b/content/browser/service_worker/service_worker_job_unittest.cc
@@ -11,9 +11,9 @@
 #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/run_loop.h"
-#include "base/stl_util.h"
 #include "base/test/bind.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/scoped_feature_list.h"
diff --git a/content/browser/service_worker/service_worker_register_job.cc b/content/browser/service_worker/service_worker_register_job.cc
index dd0a0171d..9fa964db 100644
--- a/content/browser/service_worker/service_worker_register_job.cc
+++ b/content/browser/service_worker/service_worker_register_job.cc
@@ -783,8 +783,7 @@
         registration()->NotifyRegistrationFailed();
         if (!registration()->is_deleted()) {
           context_->registry()->DeleteRegistration(
-              registration(), storage::StorageKey(registration()->origin()),
-              base::DoNothing());
+              registration(), registration()->key(), base::DoNothing());
           context_->registry()->NotifyDoneUninstallingRegistration(
               registration(), ServiceWorkerRegistration::Status::kUninstalled);
         }
@@ -843,10 +842,7 @@
   // while they are in bfcache or after they are restored from bfcache.
   for (std::unique_ptr<ServiceWorkerContextCore::ContainerHostIterator> it =
            context_->GetClientContainerHostIterator(
-               // TODO(crbug.com/1199077): Update this when
-               // ServiceWorkerRegistration implements StorageKey.
-               storage::StorageKey(registration->origin()),
-               true /* include_reserved_clients */,
+               registration->key(), true /* include_reserved_clients */,
                true /* include_back_forward_cached_clients */);
        !it->IsAtEnd(); it->Advance()) {
     ServiceWorkerContainerHost* container_host = it->GetContainerHost();
@@ -889,7 +885,7 @@
 
     if (registration()->newest_installed_version()) {
       context_->registry()->UpdateLastUpdateCheckTime(
-          registration()->id(), storage::StorageKey(registration()->origin()),
+          registration()->id(), registration()->key(),
           registration()->last_update_check(),
           base::BindOnce([](blink::ServiceWorkerStatusCode status) {
             // Ignore errors; bumping the update check time is just best-effort.
diff --git a/content/browser/service_worker/service_worker_registration.cc b/content/browser/service_worker/service_worker_registration.cc
index 2643b9a..8fd9da9a 100644
--- a/content/browser/service_worker/service_worker_registration.cc
+++ b/content/browser/service_worker/service_worker_registration.cc
@@ -9,7 +9,6 @@
 #include "base/bind.h"
 #include "base/callback_helpers.h"
 #include "base/threading/thread_task_runner_handle.h"
-#include "components/services/storage/public/cpp/storage_key.h"
 #include "content/browser/service_worker/embedded_worker_status.h"
 #include "content/browser/service_worker/service_worker_container_host.h"
 #include "content/browser/service_worker/service_worker_context_core.h"
@@ -50,7 +49,9 @@
     : scope_(options.scope),
       // Safe to convert GURL to Origin because service workers are restricted
       // to secure contexts.
-      origin_(url::Origin::Create(options.scope)),
+      // TODO(crbug.com/1199077): Update this when
+      // ServiceWorkerRegistrationOptions implements StorageKey.
+      key_(storage::StorageKey(url::Origin::Create(options.scope))),
       update_via_cache_(options.update_via_cache),
       registration_id_(registration_id),
       status_(Status::kIntact),
@@ -290,9 +291,7 @@
   const bool include_back_forward_cached_clients = true;
   for (std::unique_ptr<ServiceWorkerContextCore::ContainerHostIterator> it =
            context_->GetClientContainerHostIterator(
-               // TODO(crbug.com/1199077): Update this when
-               // ServiceWorkerRegistration implements StorageKey.
-               storage::StorageKey(origin_), include_reserved_clients,
+               key_, include_reserved_clients,
                include_back_forward_cached_clients);
        !it->IsAtEnd(); it->Advance()) {
     ServiceWorkerContainerHost* container_host = it->GetContainerHost();
@@ -337,7 +336,7 @@
   }
 
   context_->registry()->DeleteRegistration(
-      this, storage::StorageKey(origin()),
+      this, key_,
       base::BindOnce(&ServiceWorkerRegistration::OnDeleteFinished, this));
 
   if (!active_version() || !active_version()->HasControllee())
@@ -348,7 +347,7 @@
   DCHECK(context_);
   if (!is_deleted()) {
     context_->registry()->DeleteRegistration(
-        this, storage::StorageKey(origin()),
+        this, key_,
         base::BindOnce(&ServiceWorkerRegistration::OnDeleteFinished, this));
   }
 
@@ -589,7 +588,7 @@
   // Delete the registration and its state from storage.
   if (status() == Status::kIntact) {
     context_->registry()->DeleteRegistration(
-        this, storage::StorageKey(origin()),
+        this, key_,
         base::BindOnce(&ServiceWorkerRegistration::OnDeleteFinished, protect));
   }
   DCHECK(is_uninstalling());
@@ -682,8 +681,7 @@
   // "Run the Update State algorithm passing registration's active worker and
   // 'activated' as the arguments."
   activating_version->SetStatus(ServiceWorkerVersion::ACTIVATED);
-  context_->registry()->UpdateToActiveState(id(), storage::StorageKey(origin()),
-                                            base::DoNothing());
+  context_->registry()->UpdateToActiveState(id(), key_, base::DoNothing());
 }
 
 void ServiceWorkerRegistration::OnDeleteFinished(
diff --git a/content/browser/service_worker/service_worker_registration.h b/content/browser/service_worker/service_worker_registration.h
index 110200aa..4e174c34 100644
--- a/content/browser/service_worker/service_worker_registration.h
+++ b/content/browser/service_worker/service_worker_registration.h
@@ -16,6 +16,7 @@
 #include "base/single_thread_task_runner.h"
 #include "base/time/time.h"
 #include "base/timer/timer.h"
+#include "components/services/storage/public/cpp/storage_key.h"
 #include "content/common/content_export.h"
 #include "third_party/blink/public/common/service_worker/service_worker_status_code.h"
 #include "third_party/blink/public/mojom/service_worker/service_worker_registration.mojom.h"
@@ -77,7 +78,7 @@
 
   int64_t id() const { return registration_id_; }
   const GURL& scope() const { return scope_; }
-  const url::Origin& origin() const { return origin_; }
+  const storage::StorageKey& key() const { return key_; }
   blink::mojom::ServiceWorkerUpdateViaCache update_via_cache() const {
     return update_via_cache_;
   }
@@ -257,7 +258,7 @@
   };
 
   const GURL scope_;
-  const url::Origin origin_;
+  const storage::StorageKey key_;
   blink::mojom::ServiceWorkerUpdateViaCache update_via_cache_;
   const int64_t registration_id_;
   Status status_;
diff --git a/content/browser/service_worker/service_worker_registration_object_host.cc b/content/browser/service_worker/service_worker_registration_object_host.cc
index b1a930a..fe729e4a 100644
--- a/content/browser/service_worker/service_worker_registration_object_host.cc
+++ b/content/browser/service_worker/service_worker_registration_object_host.cc
@@ -259,10 +259,8 @@
               ServiceWorkerConsts::kServiceWorkerUnregisterErrorPrefix))) {
     return;
   }
-  // TODO(crbug.com/1199077): Update this when ServiceWorkerRegistration
-  // implements StorageKey.
   context_->UnregisterServiceWorker(
-      registration_->scope(), storage::StorageKey(registration_->origin()),
+      registration_->scope(), registration_->key(),
       /*is_immediate=*/false,
       base::BindOnce(
           &ServiceWorkerRegistrationObjectHost::UnregistrationComplete,
@@ -288,7 +286,7 @@
   }
 
   context_->registry()->UpdateNavigationPreloadEnabled(
-      registration_->id(), storage::StorageKey(registration_->origin()), enable,
+      registration_->id(), registration_->key(), enable,
       base::BindOnce(&ServiceWorkerRegistrationObjectHost::
                          DidUpdateNavigationPreloadEnabled,
                      weak_ptr_factory_.GetWeakPtr(), enable,
@@ -338,7 +336,7 @@
   }
 
   context_->registry()->UpdateNavigationPreloadHeader(
-      registration_->id(), storage::StorageKey(registration_->origin()), value,
+      registration_->id(), registration_->key(), value,
       base::BindOnce(&ServiceWorkerRegistrationObjectHost::
                          DidUpdateNavigationPreloadHeader,
                      weak_ptr_factory_.GetWeakPtr(), value,
diff --git a/content/browser/service_worker/service_worker_registry.cc b/content/browser/service_worker/service_worker_registry.cc
index 764297d..f4205ed 100644
--- a/content/browser/service_worker/service_worker_registry.cc
+++ b/content/browser/service_worker/service_worker_registry.cc
@@ -287,15 +287,14 @@
                      weak_factory_.GetWeakPtr(), std::move(callback)));
 }
 
-// TODO(crbug.com/1199077): Use `key` once ServiceWorkerRegistration
-// implements StorageKey.
 ServiceWorkerRegistration* ServiceWorkerRegistry::GetUninstallingRegistration(
     const GURL& scope,
     const storage::StorageKey& key) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
   // TODO(bashi): Should we check state of ServiceWorkerStorage?
   for (const auto& registration : uninstalling_registrations_) {
-    if (registration.second->scope() == scope) {
+    if (registration.second->key() == key &&
+        registration.second->scope() == scope) {
       DCHECK(registration.second->is_uninstalling());
       return registration.second.get();
     }
@@ -309,9 +308,7 @@
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
   std::vector<scoped_refptr<ServiceWorkerRegistration>> results;
   for (const auto& registration : uninstalling_registrations_) {
-    // TODO(crbug/1199077): Use full `key` once ServiceWorkerRegistration
-    // implements StorageKey.
-    if (url::Origin::Create(registration.second->scope()) == key.origin()) {
+    if (registration.second->key() == key) {
       results.push_back(registration.second);
     }
   }
@@ -383,16 +380,12 @@
   }
   data->resources_total_size_bytes = resources_total_size_bytes;
 
-  // TODO(crbug/1199077): Use `key` once ServiceWorkerRegistration implements
-  // StorageKey.
   CreateInvokerAndStartRemoteCall(
       &storage::mojom::ServiceWorkerStorageControl::StoreRegistration,
-      base::BindOnce(
-          &ServiceWorkerRegistry::DidStoreRegistration,
-          weak_factory_.GetWeakPtr(), registration->id(),
-          resources_total_size_bytes, registration->scope(),
-          storage::StorageKey(url::Origin::Create(registration->scope())),
-          std::move(callback)),
+      base::BindOnce(&ServiceWorkerRegistry::DidStoreRegistration,
+                     weak_factory_.GetWeakPtr(), registration->id(),
+                     resources_total_size_bytes, registration->scope(),
+                     registration->key(), std::move(callback)),
       std::move(data), std::move(resources));
 }
 
@@ -749,8 +742,8 @@
       if (quota_manager_proxy_) {
         // Can be nullptr in tests.
         quota_manager_proxy_->NotifyStorageAccessed(
-            (*registration)->origin(), blink::mojom::StorageType::kTemporary,
-            base::Time::Now());
+            (*registration)->key().origin(),
+            blink::mojom::StorageType::kTemporary, base::Time::Now());
       }
     }
 
@@ -767,8 +760,6 @@
       static_cast<const int64_t>(registration_id), key);
 }
 
-// TODO(crbug.com/1199077): Use `key` once ServiceWorkerRegistration
-// implements StorageKey.
 ServiceWorkerRegistration*
 ServiceWorkerRegistry::FindInstallingRegistrationForClientUrl(
     const GURL& client_url,
@@ -782,20 +773,20 @@
   // TODO(nhiroki): This searches over installing registrations linearly and it
   // couldn't be scalable. Maybe the regs should be partitioned by origin.
   for (const auto& registration : installing_registrations_)
-    if (matcher.MatchLongest(registration.second->scope()))
+    if (registration.second->key() == key &&
+        matcher.MatchLongest(registration.second->scope()))
       match = registration.second.get();
   return match;
 }
 
-// TODO(crbug.com/1199077): Use `key` once ServiceWorkerRegistration
-// implements StorageKey.
 ServiceWorkerRegistration*
 ServiceWorkerRegistry::FindInstallingRegistrationForScope(
     const GURL& scope,
     const storage::StorageKey& key) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
   for (const auto& registration : installing_registrations_)
-    if (registration.second->scope() == scope)
+    if (registration.second->key() == key &&
+        registration.second->scope() == scope)
       return registration.second.get();
   return nullptr;
 }
@@ -951,7 +942,7 @@
     if (quota_manager_proxy_) {
       // Can be nullptr in tests.
       quota_manager_proxy_->NotifyStorageAccessed(
-          registration->origin(), blink::mojom::StorageType::kTemporary,
+          registration->key().origin(), blink::mojom::StorageType::kTemporary,
           base::Time::Now());
     }
   }
@@ -988,7 +979,7 @@
     if (quota_manager_proxy_) {
       // Can be nullptr in tests.
       quota_manager_proxy_->NotifyStorageAccessed(
-          registration->origin(), blink::mojom::StorageType::kTemporary,
+          registration->key().origin(), blink::mojom::StorageType::kTemporary,
           base::Time::Now());
     }
   }
@@ -1033,7 +1024,7 @@
     if (quota_manager_proxy_) {
       // Can be nullptr in tests.
       quota_manager_proxy_->NotifyStorageAccessed(
-          registration->origin(), blink::mojom::StorageType::kTemporary,
+          registration->key().origin(), blink::mojom::StorageType::kTemporary,
           base::Time::Now());
     }
   }
diff --git a/content/browser/service_worker/service_worker_registry_unittest.cc b/content/browser/service_worker/service_worker_registry_unittest.cc
index a5d30cf..5578d6c 100644
--- a/content/browser/service_worker/service_worker_registry_unittest.cc
+++ b/content/browser/service_worker/service_worker_registry_unittest.cc
@@ -435,7 +435,7 @@
     base::RunLoop loop;
     blink::ServiceWorkerStatusCode result;
     registry()->UpdateToActiveState(
-        registration->id(), storage::StorageKey(registration->origin()),
+        registration->id(), registration->key(),
         base::BindLambdaForTesting([&](blink::ServiceWorkerStatusCode status) {
           result = status;
           loop.Quit();
@@ -449,7 +449,7 @@
     base::RunLoop loop;
     blink::ServiceWorkerStatusCode result;
     registry()->UpdateLastUpdateCheckTime(
-        registration->id(), storage::StorageKey(registration->origin()),
+        registration->id(), registration->key(),
         registration->last_update_check(),
         base::BindLambdaForTesting([&](blink::ServiceWorkerStatusCode status) {
           result = status;
@@ -2424,8 +2424,7 @@
   // Promote the worker to active worker and add a controllee.
   registration_->SetActiveVersion(registration_->waiting_version());
   registration_->active_version()->SetStatus(ServiceWorkerVersion::ACTIVATED);
-  registry()->UpdateToActiveState(registration_->id(),
-                                  storage::StorageKey(registration_->origin()),
+  registry()->UpdateToActiveState(registration_->id(), registration_->key(),
                                   base::DoNothing());
   ServiceWorkerRemoteContainerEndpoint remote_endpoint;
   base::WeakPtr<ServiceWorkerContainerHost> container_host =
@@ -2477,8 +2476,7 @@
 TEST_F(ServiceWorkerRegistryResourceTest, UpdateRegistration_NoLiveVersion) {
   // Promote the worker to active worker and add a controllee.
   registration_->SetActiveVersion(registration_->waiting_version());
-  registry()->UpdateToActiveState(registration_->id(),
-                                  storage::StorageKey(registration_->origin()),
+  registry()->UpdateToActiveState(registration_->id(), registration_->key(),
                                   base::DoNothing());
 
   // Make an updated registration.
@@ -2517,8 +2515,7 @@
   registration_->SetActiveVersion(registration_->waiting_version());
   registration_->active_version()->SetStatus(ServiceWorkerVersion::ACTIVATED);
   registration_->SetWaitingVersion(nullptr);
-  registry()->UpdateToActiveState(registration_->id(),
-                                  storage::StorageKey(registration_->origin()),
+  registry()->UpdateToActiveState(registration_->id(), registration_->key(),
                                   base::DoNothing());
   ServiceWorkerRemoteContainerEndpoint remote_endpoint;
   base::WeakPtr<ServiceWorkerContainerHost> container_host =
@@ -2541,9 +2538,8 @@
 
   // Also add an uncommitted resource.
   int64_t kStaleUncommittedResourceId = GetNewResourceIdSync(storage_control());
-  registry()->StoreUncommittedResourceId(
-      kStaleUncommittedResourceId,
-      storage::StorageKey(registration_->origin()));
+  registry()->StoreUncommittedResourceId(kStaleUncommittedResourceId,
+                                         registration_->key());
   EnsureRemoteCallsAreExecuted();
   verify_ids = GetUncommittedResourceIds();
   EXPECT_EQ(1u, verify_ids.size());
@@ -2560,8 +2556,7 @@
   storage_control()->SetPurgingCompleteCallbackForTest(loop.QuitClosure());
   int64_t kNewResourceId = GetNewResourceIdSync(storage_control());
   WriteBasicResponse(storage_control(), kNewResourceId);
-  registry()->StoreUncommittedResourceId(
-      kNewResourceId, storage::StorageKey(registration_->origin()));
+  registry()->StoreUncommittedResourceId(kNewResourceId, registration_->key());
   loop.Run();
 
   // The stale resources should be purged, but the new resource should persist.
@@ -2629,8 +2624,7 @@
 TEST_F(ServiceWorkerRegistryResourceTest, RetryInflightCalls_Resources) {
   const int64_t kResourceId = GetNewResourceIdSync(storage_control());
 
-  registry()->StoreUncommittedResourceId(
-      kResourceId, storage::StorageKey(registration_->origin()));
+  registry()->StoreUncommittedResourceId(kResourceId, registration_->key());
   EXPECT_EQ(inflight_call_count(), 1U);
 
   helper()->SimulateStorageRestartForTesting();
diff --git a/content/browser/service_worker/service_worker_version.cc b/content/browser/service_worker/service_worker_version.cc
index 98cdf32..cad85bc 100644
--- a/content/browser/service_worker/service_worker_version.cc
+++ b/content/browser/service_worker/service_worker_version.cc
@@ -244,7 +244,7 @@
     : version_id_(version_id),
       registration_id_(registration->id()),
       script_url_(script_url),
-      origin_(registration->origin()),
+      origin_(registration->key().origin()),
       scope_(registration->scope()),
       script_type_(script_type),
       fetch_handler_existence_(FetchHandlerExistence::UNKNOWN),
diff --git a/content/browser/service_worker/service_worker_version_browsertest.cc b/content/browser/service_worker/service_worker_version_browsertest.cc
index a5d2d2b..3a252f79 100644
--- a/content/browser/service_worker/service_worker_version_browsertest.cc
+++ b/content/browser/service_worker/service_worker_version_browsertest.cc
@@ -13,10 +13,10 @@
 #include "base/bind.h"
 #include "base/callback.h"
 #include "base/callback_helpers.h"
+#include "base/cxx17_backports.h"
 #include "base/memory/ref_counted.h"
 #include "base/metrics/statistics_recorder.h"
 #include "base/run_loop.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
@@ -869,8 +869,7 @@
   EXPECT_EQ(ServiceWorkerVersion::REDUNDANT, version_->status());
 
   // The registration should be deleted from storage.
-  FindRegistrationForId(registration_->id(),
-                        storage::StorageKey(registration_->origin()),
+  FindRegistrationForId(registration_->id(), registration_->key(),
                         blink::ServiceWorkerStatusCode::kErrorNotFound);
   EXPECT_TRUE(registration_->is_uninstalled());
 }
@@ -912,8 +911,7 @@
 
   // The whole registration should be deleted from storage even though the
   // waiting version was not the broken one.
-  FindRegistrationForId(registration_->id(),
-                        storage::StorageKey(registration_->origin()),
+  FindRegistrationForId(registration_->id(), registration_->key(),
                         blink::ServiceWorkerStatusCode::kErrorNotFound);
   EXPECT_TRUE(registration_->is_uninstalled());
 }
diff --git a/content/browser/site_per_process_browsertest.cc b/content/browser/site_per_process_browsertest.cc
index bac9abf1..4c8efe9 100644
--- a/content/browser/site_per_process_browsertest.cc
+++ b/content/browser/site_per_process_browsertest.cc
@@ -23,6 +23,7 @@
 #include "base/callback_helpers.h"
 #include "base/command_line.h"
 #include "base/containers/contains.h"
+#include "base/cxx17_backports.h"
 #include "base/feature_list.h"
 #include "base/json/json_reader.h"
 #include "base/location.h"
@@ -33,7 +34,6 @@
 #include "base/scoped_observation.h"
 #include "base/sequenced_task_runner.h"
 #include "base/single_thread_task_runner.h"
-#include "base/stl_util.h"
 #include "base/strings/pattern.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_split.h"
diff --git a/content/browser/storage_partition_impl_unittest.cc b/content/browser/storage_partition_impl_unittest.cc
index f74c286..3252d318f 100644
--- a/content/browser/storage_partition_impl_unittest.cc
+++ b/content/browser/storage_partition_impl_unittest.cc
@@ -14,12 +14,12 @@
 #include "base/bind.h"
 #include "base/callback_helpers.h"
 #include "base/containers/contains.h"
+#include "base/cxx17_backports.h"
 #include "base/files/file_util.h"
 #include "base/location.h"
 #include "base/run_loop.h"
 #include "base/scoped_observation.h"
 #include "base/single_thread_task_runner.h"
-#include "base/stl_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/test/bind.h"
 #include "base/test/scoped_feature_list.h"
diff --git a/content/browser/utility_process_host.cc b/content/browser/utility_process_host.cc
index 545aad0..e33b00e 100644
--- a/content/browser/utility_process_host.cc
+++ b/content/browser/utility_process_host.cc
@@ -11,10 +11,10 @@
 #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/sequenced_task_runner.h"
-#include "base/stl_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "build/chromeos_buildflags.h"
 #include "components/network_session_configurator/common/network_switches.h"
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 01facd5..22fd5d4 100644
--- a/content/browser/web_package/signed_exchange_subresource_prefetch_browsertest.cc
+++ b/content/browser/web_package/signed_exchange_subresource_prefetch_browsertest.cc
@@ -5,13 +5,13 @@
 #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"
 #include "base/no_destructor.h"
 #include "base/path_service.h"
 #include "base/run_loop.h"
-#include "base/stl_util.h"
 #include "base/strings/string_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/task_runner.h"
diff --git a/content/browser/webauth/authenticator_impl_unittest.cc b/content/browser/webauth/authenticator_impl_unittest.cc
index 929ccb051..011b3d8 100644
--- a/content/browser/webauth/authenticator_impl_unittest.cc
+++ b/content/browser/webauth/authenticator_impl_unittest.cc
@@ -15,11 +15,11 @@
 #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/rand_util.h"
 #include "base/run_loop.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
diff --git a/content/browser/webui/web_ui_data_source_unittest.cc b/content/browser/webui/web_ui_data_source_unittest.cc
index ffdf3cd..a969338 100644
--- a/content/browser/webui/web_ui_data_source_unittest.cc
+++ b/content/browser/webui/web_ui_data_source_unittest.cc
@@ -3,8 +3,8 @@
 // found in the LICENSE file.
 
 #include "base/bind.h"
+#include "base/cxx17_backports.h"
 #include "base/memory/ref_counted_memory.h"
-#include "base/stl_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "content/browser/webui/web_ui_data_source_impl.h"
 #include "content/public/test/browser_task_environment.h"
diff --git a/content/browser/webui/web_ui_main_frame_observer.cc b/content/browser/webui/web_ui_main_frame_observer.cc
index a1a99c3..2b72cd2 100644
--- a/content/browser/webui/web_ui_main_frame_observer.cc
+++ b/content/browser/webui/web_ui_main_frame_observer.cc
@@ -16,8 +16,8 @@
 #include "base/logging.h"
 #include "base/strings/strcat.h"
 #include "base/strings/utf_string_conversions.h"
-#include "components/crash/content/browser/error_reporting/javascript_error_report.h"  // nogncheck
-#include "components/crash/content/browser/error_reporting/js_error_report_processor.h"  // nogncheck
+#include "components/crash/content/browser/error_reporting/javascript_error_report.h"
+#include "components/crash/content/browser/error_reporting/js_error_report_processor.h"
 #include "content/browser/renderer_host/render_frame_host_impl.h"
 #include "content/public/browser/navigation_handle.h"
 #include "content/public/browser/web_contents.h"
diff --git a/content/browser/webui/web_ui_main_frame_observer_unittest.cc b/content/browser/webui/web_ui_main_frame_observer_unittest.cc
index d661e16..0cde2b6 100644
--- a/content/browser/webui/web_ui_main_frame_observer_unittest.cc
+++ b/content/browser/webui/web_ui_main_frame_observer_unittest.cc
@@ -10,8 +10,8 @@
 #include "base/metrics/field_trial_params.h"
 #include "base/test/scoped_feature_list.h"
 #include "build/build_config.h"
-#include "components/crash/content/browser/error_reporting/javascript_error_report.h"  // nogncheck
-#include "components/crash/content/browser/error_reporting/js_error_report_processor.h"  // nogncheck
+#include "components/crash/content/browser/error_reporting/javascript_error_report.h"
+#include "components/crash/content/browser/error_reporting/js_error_report_processor.h"
 #include "content/public/browser/site_instance.h"
 #include "content/public/browser/web_ui_controller.h"
 #include "content/public/common/content_features.h"
diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc
index b9ab033..bb7c815 100644
--- a/content/child/runtime_features.cc
+++ b/content/child/runtime_features.cc
@@ -350,6 +350,10 @@
            kSetOnlyIfOverridden},
           {"DeclarativeShadowDOM", blink::features::kDeclarativeShadowDOM},
           {"DocumentTransition", blink::features::kDocumentTransition},
+          // TODO(crbug.com/649162): Remove DialogFocusNewSpecBehavior after
+          // the feature is in stable with no issues.
+          {"DialogFocusNewSpecBehavior",
+           blink::features::kDialogFocusNewSpecBehavior},
           {"FeaturePolicyForClientHints",
            features::kFeaturePolicyForClientHints},
           {"EditingNG", blink::features::kEditingNG},
diff --git a/content/common/font_list_fontconfig.cc b/content/common/font_list_fontconfig.cc
index ed8d8584..4d65e0d 100644
--- a/content/common/font_list_fontconfig.cc
+++ b/content/common/font_list_fontconfig.cc
@@ -11,7 +11,7 @@
 
 #include <fontconfig/fontconfig.h>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "base/values.h"
 
 namespace content {
diff --git a/content/common/user_agent.cc b/content/common/user_agent.cc
index 1049863..3b0305e6 100644
--- a/content/common/user_agent.cc
+++ b/content/common/user_agent.cc
@@ -48,6 +48,19 @@
 
 }  // namespace
 
+std::string GetUnifiedPlatform() {
+#if defined(OS_ANDROID)
+  return frozen_user_agent_strings::kUnifiedPlatformAndroid;
+#elif BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS)
+  return frozen_user_agent_strings::kUnifiedPlatformCrOS;
+#elif defined(OS_MAC)
+  return frozen_user_agent_strings::kUnifiedPlatformMacOS;
+#elif defined(OS_WIN)
+  return frozen_user_agent_strings::kUnifiedPlatformWindows;
+#endif
+  return frozen_user_agent_strings::kUnifiedPlatformLinux;
+}
+
 std::string GetWebKitVersion() {
   return base::StringPrintf("%d.%d (%s)",
                             WEBKIT_VERSION_MAJOR,
@@ -228,16 +241,23 @@
   return os_cpu;
 }
 
-std::string GetFrozenUserAgent(bool mobile, std::string major_version) {
+std::string GetReducedUserAgent(bool mobile, std::string major_version) {
   std::string user_agent;
 #if defined(OS_ANDROID)
-  user_agent = mobile ? frozen_user_agent_strings::kAndroidMobile
-                      : frozen_user_agent_strings::kAndroid;
+  std::string device_compat;
+  // Note: The extra space after Mobile is meaningful here, to avoid
+  // "MobileSafari", but unneeded for non-mobile Android devices.
+  device_compat = mobile ? "Mobile " : "";
+  user_agent = base::StringPrintf(frozen_user_agent_strings::kAndroid,
+                                  GetUnifiedPlatform().c_str(),
+                                  major_version.c_str(), device_compat.c_str());
 #else
-  user_agent = frozen_user_agent_strings::kDesktop;
+  user_agent =
+      base::StringPrintf(frozen_user_agent_strings::kDesktop,
+                         GetUnifiedPlatform().c_str(), major_version.c_str());
 #endif
 
-  return base::StringPrintf(user_agent.c_str(), major_version.c_str());
+  return user_agent;
 }
 
 std::string BuildUserAgentFromProduct(const std::string& product) {
diff --git a/content/common/webplugininfo_unittest.cc b/content/common/webplugininfo_unittest.cc
index 05ce782..f76dced8 100644
--- a/content/common/webplugininfo_unittest.cc
+++ b/content/common/webplugininfo_unittest.cc
@@ -10,7 +10,7 @@
 #include <string>
 #include <vector>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/version.h"
 #include "testing/gtest/include/gtest/gtest.h"
diff --git a/content/common/zygote/zygote_communication_linux.cc b/content/common/zygote/zygote_communication_linux.cc
index bdc2b0a..30d4c6b7 100644
--- a/content/common/zygote/zygote_communication_linux.cc
+++ b/content/common/zygote/zygote_communication_linux.cc
@@ -9,6 +9,7 @@
 
 #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"
@@ -16,7 +17,6 @@
 #include "base/pickle.h"
 #include "base/posix/eintr_wrapper.h"
 #include "base/posix/unix_domain_socket.h"
-#include "base/stl_util.h"
 #include "content/common/zygote/zygote_commands_linux.h"
 #include "content/public/common/content_switches.h"
 #include "content/public/common/result_codes.h"
diff --git a/content/public/android/javatests/src/org/chromium/content/browser/accessibility/AssistViewStructureTest.java b/content/public/android/javatests/src/org/chromium/content/browser/accessibility/AssistViewStructureTest.java
index 4954ecc..5fac330 100644
--- a/content/public/android/javatests/src/org/chromium/content/browser/accessibility/AssistViewStructureTest.java
+++ b/content/public/android/javatests/src/org/chromium/content/browser/accessibility/AssistViewStructureTest.java
@@ -5,6 +5,7 @@
 package org.chromium.content.browser.accessibility;
 
 import android.annotation.TargetApi;
+import android.app.assist.AssistStructure.ViewNode;
 import android.os.Build;
 import android.os.Bundle;
 
@@ -19,9 +20,13 @@
 import org.chromium.base.test.util.CriteriaHelper;
 import org.chromium.base.test.util.MinAndroidSdkLevel;
 import org.chromium.base.test.util.UrlUtils;
+import org.chromium.content_public.browser.test.util.Coordinates;
 import org.chromium.content_public.browser.test.util.TestThreadUtils;
+import org.chromium.content_public.common.UseZoomForDSFPolicy;
 import org.chromium.content_shell_apk.ContentShellActivityTestRule;
 
+import java.util.concurrent.ExecutionException;
+
 /**
  * Tests for the implementation of onProvideVirtualStructure in
  * WebContentsAccessibility.
@@ -52,6 +57,22 @@
         return testViewStructure;
     }
 
+    private double cssToPixel(double css) {
+        boolean use_zoom_for_dsf = UseZoomForDSFPolicy.isUseZoomForDSFEnabled();
+        try {
+            return TestThreadUtils.runOnUiThreadBlocking(() -> {
+                Coordinates coord = Coordinates.createFor(mActivityTestRule.getWebContents());
+                double result = css;
+                if (use_zoom_for_dsf) result *= coord.getDeviceScaleFactor();
+                result = coord.fromLocalCssToPix((float) result);
+                return result;
+            });
+        } catch (ExecutionException ex) {
+            Assert.fail("Unexpected ExecutionException");
+            return 0.0;
+        }
+    }
+
     /**
      * Test simple paragraph.
      */
@@ -227,4 +248,137 @@
         TestViewStructureInterface buttonText = button.getChild(0);
         Assert.assertEquals("Click", buttonText.getText());
     }
+
+    /**
+     * Verifies colors are propagated correctly.
+     */
+    @Test
+    @MediumTest
+    @MinAndroidSdkLevel(Build.VERSION_CODES.M)
+    @TargetApi(Build.VERSION_CODES.M)
+    public void testColors() throws Throwable {
+        final String data = "<p style=\"color:#123456;background:#abcdef\">color</p>";
+        TestViewStructureInterface root = getViewStructureFromHtml(data).getChild(0);
+
+        Assert.assertEquals(1, root.getChildCount());
+        Assert.assertEquals("", root.getText());
+        TestViewStructureInterface para = root.getChild(0);
+        Assert.assertEquals("ff123456", Integer.toHexString(para.getFgColor()));
+        Assert.assertEquals("ffabcdef", Integer.toHexString(para.getBgColor()));
+        TestViewStructureInterface paraText = para.getChild(0);
+        Assert.assertEquals("color", paraText.getText());
+    }
+
+    /**
+     * Verifies font sizes are propagated correctly.
+     */
+    @Test
+    @MediumTest
+    @MinAndroidSdkLevel(Build.VERSION_CODES.M)
+    @TargetApi(Build.VERSION_CODES.M)
+    public void testFontSize() throws Throwable {
+        final String data = "<html><head><style> "
+                + "    p { font-size:16px; transform: scale(2); }"
+                + "    </style></head><body><p>foo</p></body></html>";
+        TestViewStructureInterface root = getViewStructureFromHtml(data).getChild(0);
+
+        Assert.assertEquals(1, root.getChildCount());
+        Assert.assertEquals("", root.getText());
+        TestViewStructureInterface para = root.getChild(0);
+        TestViewStructureInterface paraText = para.getChild(0);
+        Assert.assertEquals("foo", paraText.getText());
+
+        // The font size should take the scale into account.
+        double expected = cssToPixel(32.0);
+        Assert.assertEquals(expected, para.getTextSize(), 1.0);
+    }
+
+    /**
+     * Verifies text styles are propagated correctly.
+     */
+    @Test
+    @MediumTest
+    @MinAndroidSdkLevel(Build.VERSION_CODES.M)
+    @TargetApi(Build.VERSION_CODES.M)
+    public void testTextStyles() throws Throwable {
+        final String data = "<html><head><style> "
+                + "    body { font: italic bold 12px Courier; }"
+                + "    </style></head><body><p>foo</p></body></html>";
+        TestViewStructureInterface root = getViewStructureFromHtml(data).getChild(0);
+
+        Assert.assertEquals(1, root.getChildCount());
+        Assert.assertEquals("", root.getText());
+        TestViewStructureInterface para = root.getChild(0);
+        int style = para.getStyle();
+        Assert.assertTrue(0 != (style & ViewNode.TEXT_STYLE_BOLD));
+        Assert.assertTrue(0 != (style & ViewNode.TEXT_STYLE_ITALIC));
+        Assert.assertFalse(0 != (style & ViewNode.TEXT_STYLE_UNDERLINE));
+        Assert.assertFalse(0 != (style & ViewNode.TEXT_STYLE_STRIKE_THRU));
+
+        TestViewStructureInterface paraText = para.getChild(0);
+        Assert.assertEquals("foo", paraText.getText());
+    }
+
+    /**
+     * Verifies the strong style is propagated correctly.
+     */
+    @Test
+    @MediumTest
+    @MinAndroidSdkLevel(Build.VERSION_CODES.M)
+    @TargetApi(Build.VERSION_CODES.M)
+    public void testStrongStyle() throws Throwable {
+        final String data = "<html><body><p>foo</p><p><strong>bar</strong></p></body></html>";
+        TestViewStructureInterface root = getViewStructureFromHtml(data).getChild(0);
+
+        Assert.assertEquals(2, root.getChildCount());
+        Assert.assertEquals("", root.getText());
+        TestViewStructureInterface child1 = root.getChild(0);
+        Assert.assertEquals("foo", child1.getChild(0).getText());
+        int child1style = child1.getStyle();
+        Assert.assertFalse(0 != (child1style & ViewNode.TEXT_STYLE_BOLD));
+        TestViewStructureInterface child2 = root.getChild(1);
+        TestViewStructureInterface child2child = child2.getChild(0);
+        Assert.assertEquals("bar", child2child.getText());
+        Assert.assertEquals(child1.getTextSize(), child2child.getTextSize(), 0);
+        int child2childstyle = child2child.getStyle();
+        Assert.assertTrue(0 != (child2childstyle & ViewNode.TEXT_STYLE_BOLD));
+    }
+
+    /**
+     * Verifies the italic style is propagated correctly.
+     */
+    @Test
+    @MediumTest
+    @MinAndroidSdkLevel(Build.VERSION_CODES.M)
+    @TargetApi(Build.VERSION_CODES.M)
+    public void testItalicStyle() throws Throwable {
+        final String data = "<html><body><i>foo</i></body></html>";
+        TestViewStructureInterface root = getViewStructureFromHtml(data).getChild(0);
+
+        Assert.assertEquals(1, root.getChildCount());
+        Assert.assertEquals("", root.getText());
+        TestViewStructureInterface child = root.getChild(0);
+        TestViewStructureInterface grandchild = child.getChild(0);
+        int style = grandchild.getStyle();
+        Assert.assertTrue(0 != (style & ViewNode.TEXT_STYLE_ITALIC));
+    }
+
+    /**
+     * Verifies the bold style is propagated correctly.
+     */
+    @Test
+    @MediumTest
+    @MinAndroidSdkLevel(Build.VERSION_CODES.M)
+    @TargetApi(Build.VERSION_CODES.M)
+    public void testBoldStyle() throws Throwable {
+        final String data = "<html><body><b>foo</b></body></html>";
+        TestViewStructureInterface root = getViewStructureFromHtml(data).getChild(0);
+
+        Assert.assertEquals(1, root.getChildCount());
+        Assert.assertEquals("", root.getText());
+        TestViewStructureInterface child = root.getChild(0);
+        TestViewStructureInterface grandchild = child.getChild(0);
+        int style = grandchild.getStyle();
+        Assert.assertTrue(0 != (style & ViewNode.TEXT_STYLE_BOLD));
+    }
 }
diff --git a/content/public/android/javatests/src/org/chromium/content/browser/accessibility/TestViewStructure.java b/content/public/android/javatests/src/org/chromium/content/browser/accessibility/TestViewStructure.java
index 9ff592c4..58e7111 100644
--- a/content/public/android/javatests/src/org/chromium/content/browser/accessibility/TestViewStructure.java
+++ b/content/public/android/javatests/src/org/chromium/content/browser/accessibility/TestViewStructure.java
@@ -26,6 +26,10 @@
     private ArrayList<TestViewStructure> mChildren = new ArrayList<TestViewStructure>();
     private boolean mDone = true;
     private boolean mDumpHtmlTags;
+    private float mTextSize;
+    private int mFgColor;
+    private int mBgColor;
+    private int mStyle;
 
     public TestViewStructure() {}
 
@@ -52,6 +56,26 @@
         return mClassName;
     }
 
+    @Override
+    public float getTextSize() {
+        return mTextSize;
+    }
+
+    @Override
+    public int getFgColor() {
+        return mFgColor;
+    }
+
+    @Override
+    public int getBgColor() {
+        return mBgColor;
+    }
+
+    @Override
+    public int getStyle() {
+        return mStyle;
+    }
+
     private void recursiveDumpToString(StringBuilder builder, int indent, boolean dumpHtmlTags) {
         for (int i = 0; i < indent; i++) {
             builder.append("  ");
@@ -280,7 +304,12 @@
     public void setText(CharSequence text, int selectionStart, int selectionEnd) {}
 
     @Override
-    public void setTextStyle(float size, int fgColor, int bgColor, int style) {}
+    public void setTextStyle(float size, int fgColor, int bgColor, int style) {
+        mTextSize = size;
+        mFgColor = fgColor;
+        mBgColor = bgColor;
+        mStyle = style;
+    }
 
     @Override
     public void setTextLines(int[] charOffsets, int[] baselines) {}
diff --git a/content/public/android/javatests/src/org/chromium/content/browser/accessibility/TestViewStructureInterface.java b/content/public/android/javatests/src/org/chromium/content/browser/accessibility/TestViewStructureInterface.java
index df9a716f..8a0d835 100644
--- a/content/public/android/javatests/src/org/chromium/content/browser/accessibility/TestViewStructureInterface.java
+++ b/content/public/android/javatests/src/org/chromium/content/browser/accessibility/TestViewStructureInterface.java
@@ -48,6 +48,18 @@
      */
     public String getClassName();
 
+    /** Get the text size. */
+    public float getTextSize();
+
+    /** Get the foreground color. */
+    public int getFgColor();
+
+    /** Get the background color. */
+    public int getBgColor();
+
+    /** Get the style, @see android.view.ViewStructure#setTestStyle */
+    public int getStyle();
+
     /** @see android.view.ViewStructure#getText */
     public CharSequence getText();
 }
diff --git a/content/public/android/javatests/src/org/chromium/content/browser/webcontents/AccessibilitySnapshotTest.java b/content/public/android/javatests/src/org/chromium/content/browser/webcontents/AccessibilitySnapshotTest.java
index c7edd6ca..9dd39ccc 100644
--- a/content/public/android/javatests/src/org/chromium/content/browser/webcontents/AccessibilitySnapshotTest.java
+++ b/content/public/android/javatests/src/org/chromium/content/browser/webcontents/AccessibilitySnapshotTest.java
@@ -16,14 +16,9 @@
 import org.chromium.base.test.util.UrlUtils;
 import org.chromium.content_public.browser.AccessibilitySnapshotCallback;
 import org.chromium.content_public.browser.AccessibilitySnapshotNode;
-import org.chromium.content_public.browser.test.util.Coordinates;
 import org.chromium.content_public.browser.test.util.JavaScriptUtils;
-import org.chromium.content_public.browser.test.util.TestThreadUtils;
-import org.chromium.content_public.common.UseZoomForDSFPolicy;
 import org.chromium.content_shell_apk.ContentShellActivityTestRule;
 
-import java.util.concurrent.ExecutionException;
-
 /**
  * Accessibility snapshot tests for Assist feature.
  */
@@ -76,119 +71,6 @@
         return callbackHelper.getValue();
     }
 
-    private double cssToPixel(double css) {
-        double zoomFactor = 0;
-        try {
-            zoomFactor = TestThreadUtils.runOnUiThreadBlocking(() -> {
-                Coordinates coord = Coordinates.createFor(mActivityTestRule.getWebContents());
-                return coord.getDeviceScaleFactor();
-            });
-        } catch (ExecutionException ex) {
-            Assert.fail("Unexpected ExecutionException");
-        }
-        return Math.ceil(zoomFactor * css);
-    }
-
-    @Test
-    @SmallTest
-    public void testRequestAccessibilitySnapshotColors() throws Throwable {
-        final String data = "<p style=\"color:#123456;background:#abcdef\">color</p>";
-        AccessibilitySnapshotNode root = receiveAccessibilitySnapshot(data, null);
-        Assert.assertEquals(1, root.children.size());
-        Assert.assertEquals("", root.text);
-        AccessibilitySnapshotNode para = root.children.get(0);
-        Assert.assertTrue(para.hasStyle);
-        Assert.assertEquals("ff123456", Integer.toHexString(para.color));
-        Assert.assertEquals("ffabcdef", Integer.toHexString(para.bgcolor));
-        AccessibilitySnapshotNode paraText = para.children.get(0);
-        Assert.assertEquals("color", paraText.text);
-    }
-
-    @Test
-    @SmallTest
-    public void testRequestAccessibilitySnapshotFontSize() throws Throwable {
-        final String data = "<html><head><style> "
-                + "    p { font-size:16px; transform: scale(2); }"
-                + "    </style></head><body><p>foo</p></body></html>";
-        AccessibilitySnapshotNode root = receiveAccessibilitySnapshot(data, null);
-        Assert.assertEquals(1, root.children.size());
-        Assert.assertEquals("", root.text);
-        AccessibilitySnapshotNode para = root.children.get(0);
-        Assert.assertTrue(para.hasStyle);
-        AccessibilitySnapshotNode paraText = para.children.get(0);
-        Assert.assertEquals("foo", paraText.text);
-
-        // The font size should take the scale into account.
-        double expected = UseZoomForDSFPolicy.isUseZoomForDSFEnabled() ? cssToPixel(32.0) : 32.0;
-        Assert.assertEquals(expected, para.textSize, 1.0);
-    }
-
-    @Test
-    @SmallTest
-    public void testRequestAccessibilitySnapshotStyles() throws Throwable {
-        final String data = "<html><head><style> "
-                + "    body { font: italic bold 12px Courier; }"
-                + "    </style></head><body><p>foo</p></body></html>";
-        AccessibilitySnapshotNode root = receiveAccessibilitySnapshot(data, null);
-        Assert.assertEquals(1, root.children.size());
-        Assert.assertEquals("", root.text);
-        AccessibilitySnapshotNode para = root.children.get(0);
-        Assert.assertTrue(para.hasStyle);
-        Assert.assertTrue(para.bold);
-        Assert.assertTrue(para.italic);
-        Assert.assertFalse(para.lineThrough);
-        Assert.assertFalse(para.underline);
-
-        AccessibilitySnapshotNode paraText = para.children.get(0);
-        Assert.assertEquals("foo", paraText.text);
-    }
-
-    @Test
-    @SmallTest
-    public void testRequestAccessibilitySnapshotStrongStyle() throws Throwable {
-        final String data = "<html><body><p>foo</p><p><strong>bar</strong></p></body></html>";
-        AccessibilitySnapshotNode root = receiveAccessibilitySnapshot(data, null);
-        Assert.assertEquals(2, root.children.size());
-        Assert.assertEquals("", root.text);
-        AccessibilitySnapshotNode child1 = root.children.get(0);
-        Assert.assertEquals("foo", child1.children.get(0).text);
-        Assert.assertTrue(child1.hasStyle);
-        Assert.assertFalse(child1.bold);
-        AccessibilitySnapshotNode child2 = root.children.get(1);
-        AccessibilitySnapshotNode child2child = child2.children.get(0);
-        Assert.assertEquals("bar", child2child.text);
-        Assert.assertEquals(child1.textSize, child2child.textSize, ASSERTION_DELTA);
-        Assert.assertTrue(child2child.bold);
-    }
-
-    @Test
-    @SmallTest
-    public void testRequestAccessibilitySnapshotItalicStyle() throws Throwable {
-        final String data = "<html><body><i>foo</i></body></html>";
-        AccessibilitySnapshotNode root = receiveAccessibilitySnapshot(data, null);
-        Assert.assertEquals(1, root.children.size());
-        Assert.assertEquals("", root.text);
-        AccessibilitySnapshotNode child = root.children.get(0);
-        AccessibilitySnapshotNode grandchild = child.children.get(0);
-        Assert.assertEquals("foo", grandchild.text);
-        Assert.assertTrue(grandchild.hasStyle);
-        Assert.assertTrue(grandchild.italic);
-    }
-
-    @Test
-    @SmallTest
-    public void testRequestAccessibilitySnapshotBoldStyle() throws Throwable {
-        final String data = "<html><body><b>foo</b></body></html>";
-        AccessibilitySnapshotNode root = receiveAccessibilitySnapshot(data, null);
-        Assert.assertEquals(1, root.children.size());
-        Assert.assertEquals("", root.text);
-        AccessibilitySnapshotNode child = root.children.get(0);
-        AccessibilitySnapshotNode grandchild = child.children.get(0);
-        Assert.assertEquals("foo", grandchild.text);
-        Assert.assertTrue(grandchild.hasStyle);
-        Assert.assertTrue(grandchild.bold);
-    }
-
     private String getSelectionScript(String node1, int start, String node2, int end) {
         return "var element1 = document.getElementById('" + node1 + "');"
                 + "var node1 = element1.childNodes.item(0);"
diff --git a/content/public/common/user_agent.h b/content/public/common/user_agent.h
index 019a609..e48e80e 100644
--- a/content/public/common/user_agent.h
+++ b/content/public/common/user_agent.h
@@ -16,16 +16,17 @@
 namespace frozen_user_agent_strings {
 
 const char kDesktop[] =
-    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, "
+    "Mozilla/5.0 (%s) AppleWebKit/537.36 (KHTML, "
     "like Gecko) Chrome/%s.0.0.0 Safari/537.36";
 const char kAndroid[] =
-    "Mozilla/5.0 (Linux; Android 9; Unspecified Device) "
-    "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/%s.0.0.0 "
+    "Mozilla/5.0 (%s) "
+    "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/%s.0.0.0 %s"
     "Safari/537.36";
-const char kAndroidMobile[] =
-    "Mozilla/5.0 (Linux; Android 9; Unspecified Device) "
-    "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/%s.0.0.0 Mobile "
-    "Safari/537.36";
+const char kUnifiedPlatformAndroid[] = "Linux; Android 10; K";
+const char kUnifiedPlatformCrOS[] = "X11; CrOS x86_64";
+const char kUnifiedPlatformLinux[] = "X11; Linux x86_64";
+const char kUnifiedPlatformMacOS[] = "Macintosh; Intel Mac OS X 10_15_7";
+const char kUnifiedPlatformWindows[] = "Windows NT 10.0; Win64; x64";
 
 }  // namespace frozen_user_agent_strings
 
@@ -65,10 +66,14 @@
     IncludeAndroidBuildNumber include_android_build_number,
     IncludeAndroidModel include_android_model);
 
-// Returns the frozen User-agent string for
+// Returns the reduced User-agent string for
 // https://github.com/WICG/ua-client-hints.
-CONTENT_EXPORT std::string GetFrozenUserAgent(bool mobile,
-                                              std::string major_version);
+CONTENT_EXPORT std::string GetReducedUserAgent(bool mobile,
+                                               std::string major_version);
+
+// Helper function to return the <unifiedPlatform> token of a reduced
+// User-Agent header
+CONTENT_EXPORT std::string GetUnifiedPlatform();
 
 // Helper function to generate a full user agent string from a short
 // product name.
diff --git a/content/public/renderer/render_frame.h b/content/public/renderer/render_frame.h
index 577f42d5..1ec48b2 100644
--- a/content/public/renderer/render_frame.h
+++ b/content/public/renderer/render_frame.h
@@ -73,8 +73,6 @@
   // Return in |accessibility_tree| a snapshot of the accessibility tree
   // for the frame with the given accessibility mode.
   //
-  // - |ax_mode| is the accessibility mode to use, which determines which
-  //   fields of AXNodeData are populated.
   // - |exclude_offscreen| excludes a subtree if a node is entirely offscreen,
   //   but note that this heuristic is imperfect, and an aboslute-positioned
   //   node that's visible, but whose ancestors are entirely offscreen, may
@@ -87,8 +85,7 @@
   //   (per frame), specified in milliseconds. Like max_node_count, this is not
   //   a hard limit, and once this/ limit is reached a few more nodes may
   //   be added in order to ensure a well-formed tree. Use 0 for no timeout.
-  virtual void Snapshot(ui::AXMode ax_mode,
-                        bool exclude_offscreen,
+  virtual void Snapshot(bool exclude_offscreen,
                         size_t max_node_count,
                         base::TimeDelta timeout,
                         ui::AXTreeUpdate* accessibility_tree) = 0;
@@ -147,7 +144,10 @@
   virtual RenderAccessibility* GetRenderAccessibility() = 0;
 
   // Return an object that can take a snapshot of the accessibility tree.
-  virtual std::unique_ptr<AXTreeSnapshotter> CreateAXTreeSnapshotter() = 0;
+  // |ax_mode| is the accessibility mode to use, which determines which
+  // fields of AXNodeData are populated when you make a snapshot.
+  virtual std::unique_ptr<AXTreeSnapshotter> CreateAXTreeSnapshotter(
+      ui::AXMode ax_mode) = 0;
 
   // Get the routing ID of the frame.
   virtual int GetRoutingID() = 0;
diff --git a/content/public/test/render_view_test.cc b/content/public/test/render_view_test.cc
index f7243fe3..b6a94c5 100644
--- a/content/public/test/render_view_test.cc
+++ b/content/public/test/render_view_test.cc
@@ -163,7 +163,7 @@
                        base::TimeTicks::Now(), 0, 0, 0));
   }
 
-  void SetDefersLoading(blink::WebLoaderFreezeMode) override {}
+  void Freeze(blink::WebLoaderFreezeMode) override {}
   void DidChangePriority(WebURLRequest::Priority, int) override {}
   scoped_refptr<base::SingleThreadTaskRunner> GetTaskRunnerForBodyLoader()
       override {
diff --git a/content/public/test/test_host_resolver.cc b/content/public/test/test_host_resolver.cc
index 3d13d11..4a112adf 100644
--- a/content/public/test/test_host_resolver.cc
+++ b/content/public/test/test_host_resolver.cc
@@ -4,7 +4,7 @@
 
 #include "content/public/test/test_host_resolver.h"
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "base/threading/thread.h"
 #include "content/browser/notification_service_impl.h"
 #include "net/base/net_errors.h"
diff --git a/content/renderer/accessibility/aom_content_ax_tree.cc b/content/renderer/accessibility/aom_content_ax_tree.cc
index c8c787f..118a8d0 100644
--- a/content/renderer/accessibility/aom_content_ax_tree.cc
+++ b/content/renderer/accessibility/aom_content_ax_tree.cc
@@ -128,9 +128,8 @@
 
 bool AomContentAxTree::ComputeAccessibilityTree() {
   ui::AXTreeUpdate tree_update;
-  AXTreeSnapshotterImpl snapshotter(render_frame_);
-  snapshotter.Snapshot(ui::kAXModeComplete,
-                       /* exclude_offscreen= */ false,
+  AXTreeSnapshotterImpl snapshotter(render_frame_, ui::kAXModeComplete);
+  snapshotter.Snapshot(/* exclude_offscreen= */ false,
                        /* max_node_count= */ 0,
                        /* timeout= */ {}, &tree_update);
   CHECK(tree_.Unserialize(tree_update)) << tree_.error();
diff --git a/content/renderer/accessibility/ax_tree_snapshotter_impl.cc b/content/renderer/accessibility/ax_tree_snapshotter_impl.cc
index e31705b..ca2c244 100644
--- a/content/renderer/accessibility/ax_tree_snapshotter_impl.cc
+++ b/content/renderer/accessibility/ax_tree_snapshotter_impl.cc
@@ -20,17 +20,17 @@
 
 namespace content {
 
-AXTreeSnapshotterImpl::AXTreeSnapshotterImpl(RenderFrameImpl* render_frame)
+AXTreeSnapshotterImpl::AXTreeSnapshotterImpl(RenderFrameImpl* render_frame,
+                                             ui::AXMode ax_mode)
     : render_frame_(render_frame) {
   DCHECK(render_frame->GetWebFrame());
   blink::WebDocument document_ = render_frame->GetWebFrame()->GetDocument();
-  context_ = std::make_unique<WebAXContext>(document_);
+  context_ = std::make_unique<WebAXContext>(document_, ax_mode);
 }
 
 AXTreeSnapshotterImpl::~AXTreeSnapshotterImpl() = default;
 
-void AXTreeSnapshotterImpl::Snapshot(ui::AXMode ax_mode,
-                                     bool exclude_offscreen,
+void AXTreeSnapshotterImpl::Snapshot(bool exclude_offscreen,
                                      size_t max_node_count,
                                      base::TimeDelta timeout,
                                      ui::AXTreeUpdate* response) {
@@ -41,7 +41,7 @@
     return;
   WebAXObject root = context_->Root();
 
-  BlinkAXTreeSource tree_source(render_frame_, ax_mode);
+  BlinkAXTreeSource tree_source(render_frame_, context_->GetAXMode());
   tree_source.SetRoot(root);
   tree_source.set_exclude_offscreen(exclude_offscreen);
   ScopedFreezeBlinkAXTreeSource freeze(&tree_source);
diff --git a/content/renderer/accessibility/ax_tree_snapshotter_impl.h b/content/renderer/accessibility/ax_tree_snapshotter_impl.h
index b6a82fd..23be1dd 100644
--- a/content/renderer/accessibility/ax_tree_snapshotter_impl.h
+++ b/content/renderer/accessibility/ax_tree_snapshotter_impl.h
@@ -19,12 +19,11 @@
 
 class AXTreeSnapshotterImpl : public AXTreeSnapshotter {
  public:
-  explicit AXTreeSnapshotterImpl(RenderFrameImpl* render_frame);
+  AXTreeSnapshotterImpl(RenderFrameImpl* render_frame, ui::AXMode ax_mode);
   ~AXTreeSnapshotterImpl() override;
 
   // AXTreeSnapshotter implementation.
-  void Snapshot(ui::AXMode ax_mode,
-                bool exclude_offscreen,
+  void Snapshot(bool exclude_offscreen,
                 size_t max_node_count,
                 base::TimeDelta timeout,
                 ui::AXTreeUpdate* accessibility_tree) override;
diff --git a/content/renderer/accessibility/render_accessibility_impl.cc b/content/renderer/accessibility/render_accessibility_impl.cc
index 19aae071a..45b9613 100644
--- a/content/renderer/accessibility/render_accessibility_impl.cc
+++ b/content/renderer/accessibility/render_accessibility_impl.cc
@@ -157,7 +157,7 @@
 
   const WebDocument& document = GetMainDocument();
   if (!document.IsNull()) {
-    ax_context_ = std::make_unique<WebAXContext>(document);
+    ax_context_ = std::make_unique<WebAXContext>(document, mode);
     StartOrStopLabelingImages(ui::AXMode(), mode);
 
     // It's possible that the webview has already loaded a webpage without
@@ -177,7 +177,8 @@
 void RenderAccessibilityImpl::DidCreateNewDocument() {
   const WebDocument& document = GetMainDocument();
   if (!document.IsNull())
-    ax_context_ = std::make_unique<WebAXContext>(document);
+    ax_context_ =
+        std::make_unique<WebAXContext>(document, GetAccessibilityMode());
 }
 
 void RenderAccessibilityImpl::DidCommitProvisionalLoad(
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 bfecf07..75ddb02 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,7 @@
 #include <cmath>
 #include <memory>
 
-#include "base/stl_util.h"
+#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"
diff --git a/content/renderer/pepper/pepper_audio_encoder_host.cc b/content/renderer/pepper/pepper_audio_encoder_host.cc
index b42752d8..d1d8eb5 100644
--- a/content/renderer/pepper/pepper_audio_encoder_host.cc
+++ b/content/renderer/pepper/pepper_audio_encoder_host.cc
@@ -8,8 +8,8 @@
 #include <utility>
 
 #include "base/bind.h"
+#include "base/cxx17_backports.h"
 #include "base/memory/unsafe_shared_memory_region.h"
-#include "base/stl_util.h"
 #include "content/public/renderer/renderer_ppapi_host.h"
 #include "content/renderer/pepper/host_globals.h"
 #include "content/renderer/render_thread_impl.h"
diff --git a/content/renderer/pepper/pepper_graphics_2d_host_unittest.cc b/content/renderer/pepper/pepper_graphics_2d_host_unittest.cc
index e4476397..81394c5 100644
--- a/content/renderer/pepper/pepper_graphics_2d_host_unittest.cc
+++ b/content/renderer/pepper/pepper_graphics_2d_host_unittest.cc
@@ -6,7 +6,7 @@
 
 #include <stddef.h>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "base/test/task_environment.h"
 #include "content/renderer/pepper/gfx_conversion.h"
 #include "content/renderer/pepper/mock_renderer_ppapi_host.h"
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index aa5503a1..bdb030e 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -2212,9 +2212,9 @@
     mojom::SnapshotAccessibilityTreeParamsPtr params,
     SnapshotAccessibilityTreeCallback callback) {
   ui::AXTreeUpdate response;
-  AXTreeSnapshotterImpl snapshotter(this);
-  snapshotter.Snapshot(ui::AXMode(params->ax_mode), params->exclude_offscreen,
-                       params->max_nodes, params->timeout, &response);
+  AXTreeSnapshotterImpl snapshotter(this, ui::AXMode(params->ax_mode));
+  snapshotter.Snapshot(params->exclude_offscreen, params->max_nodes,
+                       params->timeout, &response);
   std::move(callback).Run(response);
 }
 
@@ -2269,8 +2269,9 @@
   return render_accessibility_manager_->GetRenderAccessibilityImpl();
 }
 
-std::unique_ptr<AXTreeSnapshotter> RenderFrameImpl::CreateAXTreeSnapshotter() {
-  return std::make_unique<AXTreeSnapshotterImpl>(this);
+std::unique_ptr<AXTreeSnapshotter> RenderFrameImpl::CreateAXTreeSnapshotter(
+    ui::AXMode ax_mode) {
+  return std::make_unique<AXTreeSnapshotterImpl>(this, ax_mode);
 }
 
 int RenderFrameImpl::GetRoutingID() {
diff --git a/content/renderer/render_frame_impl.h b/content/renderer/render_frame_impl.h
index 0e7eb96..4d6eacae 100644
--- a/content/renderer/render_frame_impl.h
+++ b/content/renderer/render_frame_impl.h
@@ -334,7 +334,8 @@
   // RenderFrame implementation:
   RenderView* GetRenderView() override;
   RenderAccessibility* GetRenderAccessibility() override;
-  std::unique_ptr<AXTreeSnapshotter> CreateAXTreeSnapshotter() override;
+  std::unique_ptr<AXTreeSnapshotter> CreateAXTreeSnapshotter(
+      ui::AXMode ax_mode) override;
   int GetRoutingID() override;
   blink::WebLocalFrame* GetWebFrame() override;
   const blink::WebLocalFrame* GetWebFrame() const override;
diff --git a/content/renderer/render_view_browsertest.cc b/content/renderer/render_view_browsertest.cc
index 24688c00..2701354 100644
--- a/content/renderer/render_view_browsertest.cc
+++ b/content/renderer/render_view_browsertest.cc
@@ -12,12 +12,12 @@
 #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"
 #include "base/run_loop.h"
 #include "base/single_thread_task_runner.h"
-#include "base/stl_util.h"
 #include "base/strings/string_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
diff --git a/content/services/auction_worklet/bidder_worklet.cc b/content/services/auction_worklet/bidder_worklet.cc
index 0b0c5ca..f889b282 100644
--- a/content/services/auction_worklet/bidder_worklet.cc
+++ b/content/services/auction_worklet/bidder_worklet.cc
@@ -13,8 +13,8 @@
 
 #include "base/bind.h"
 #include "base/callback.h"
+#include "base/cxx17_backports.h"
 #include "base/logging.h"
-#include "base/stl_util.h"
 #include "base/strings/strcat.h"
 #include "base/time/time.h"
 #include "content/services/auction_worklet/auction_v8_helper.h"
diff --git a/content/shell/browser/shell_content_browser_client.cc b/content/shell/browser/shell_content_browser_client.cc
index 77db03c..0b206e18 100644
--- a/content/shell/browser/shell_content_browser_client.cc
+++ b/content/shell/browser/shell_content_browser_client.cc
@@ -10,12 +10,12 @@
 #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.h"
 #include "base/files/file_util.h"
 #include "base/no_destructor.h"
 #include "base/path_service.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/threading/sequence_local_storage_slot.h"
@@ -136,7 +136,7 @@
   std::string product = "Chrome/" CONTENT_SHELL_VERSION;
   base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
   if (base::FeatureList::IsEnabled(blink::features::kFreezeUserAgent)) {
-    return content::GetFrozenUserAgent(
+    return content::GetReducedUserAgent(
         command_line->HasSwitch(switches::kUseMobileUserAgent),
         CONTENT_SHELL_MAJOR_VERSION);
   }
diff --git a/content/shell/browser/shell_download_manager_delegate.cc b/content/shell/browser/shell_download_manager_delegate.cc
index bae409af..ef9bc98 100644
--- a/content/shell/browser/shell_download_manager_delegate.cc
+++ b/content/shell/browser/shell_download_manager_delegate.cc
@@ -14,9 +14,9 @@
 #include "base/bind.h"
 #include "base/check_op.h"
 #include "base/command_line.h"
+#include "base/cxx17_backports.h"
 #include "base/files/file_util.h"
 #include "base/notreached.h"
-#include "base/stl_util.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/task/thread_pool.h"
diff --git a/content/shell/browser/shell_platform_delegate_views.cc b/content/shell/browser/shell_platform_delegate_views.cc
index ccff1a3..729c55b1 100644
--- a/content/shell/browser/shell_platform_delegate_views.cc
+++ b/content/shell/browser/shell_platform_delegate_views.cc
@@ -10,7 +10,7 @@
 
 #include "base/command_line.h"
 #include "base/containers/contains.h"
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "base/strings/utf_string_conversions.h"
 #include "build/build_config.h"
 #include "build/chromeos_buildflags.h"
diff --git a/content/shell/common/shell_origin_trial_policy.cc b/content/shell/common/shell_origin_trial_policy.cc
index 2163d38..a1ae521 100644
--- a/content/shell/common/shell_origin_trial_policy.cc
+++ b/content/shell/common/shell_origin_trial_policy.cc
@@ -4,8 +4,8 @@
 
 #include "content/shell/common/shell_origin_trial_policy.h"
 
+#include "base/cxx17_backports.h"
 #include "base/feature_list.h"
-#include "base/stl_util.h"
 #include "content/public/common/content_features.h"
 #include "services/network/public/cpp/is_potentially_trustworthy.h"
 
diff --git a/content/test/mock_keyboard_driver_win.cc b/content/test/mock_keyboard_driver_win.cc
index 809a2f01..e721b672 100644
--- a/content/test/mock_keyboard_driver_win.cc
+++ b/content/test/mock_keyboard_driver_win.cc
@@ -8,7 +8,7 @@
 #include <string.h>
 
 #include "base/check.h"
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "content/test/mock_keyboard.h"
 
 namespace content {
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 95fa60f..fa95feb 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
@@ -11,11 +11,11 @@
 #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"
 #include "base/path_service.h"
-#include "base/stl_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "content/shell/common/shell_switches.h"
 #include "ui/gfx/win/direct_write.h"
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 5e9b1a4..e3dd0401 100644
--- a/content/web_test/browser/web_test_content_browser_client.cc
+++ b/content/web_test/browser/web_test_content_browser_client.cc
@@ -12,9 +12,9 @@
 #include <vector>
 
 #include "base/bind.h"
+#include "base/cxx17_backports.h"
 #include "base/path_service.h"
 #include "base/single_thread_task_runner.h"
-#include "base/stl_util.h"
 #include "base/strings/pattern.h"
 #include "base/strings/stringprintf.h"
 #include "cc/base/switches.h"
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 25fbbcfd..eddcc20 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,7 @@
 
 #include "base/bind.h"
 #include "base/callback.h"
-#include "base/stl_util.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"
diff --git a/content/web_test/renderer/accessibility_controller.cc b/content/web_test/renderer/accessibility_controller.cc
index 648c43c34..fa044c2 100644
--- a/content/web_test/renderer/accessibility_controller.cc
+++ b/content/web_test/renderer/accessibility_controller.cc
@@ -4,7 +4,7 @@
 
 #include "content/web_test/renderer/accessibility_controller.h"
 
-#include "base/stl_util.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"
@@ -17,6 +17,7 @@
 #include "third_party/blink/public/web/web_local_frame.h"
 #include "third_party/blink/public/web/web_settings.h"
 #include "third_party/blink/public/web/web_view.h"
+#include "ui/accessibility/ax_mode.h"
 
 namespace content {
 
@@ -167,7 +168,8 @@
 }
 
 void AccessibilityController::Install(blink::WebLocalFrame* frame) {
-  ax_context_ = std::make_unique<blink::WebAXContext>(frame->GetDocument());
+  ax_context_ = std::make_unique<blink::WebAXContext>(frame->GetDocument(),
+                                                      ui::kAXModeComplete);
   frame->View()->GetSettings()->SetInlineTextBoxAccessibilityEnabled(true);
 
   AccessibilityControllerBindings::Install(weak_factory_.GetWeakPtr(), frame);
diff --git a/content/web_test/renderer/web_ax_object_proxy.cc b/content/web_test/renderer/web_ax_object_proxy.cc
index 963c392..b687bae 100644
--- a/content/web_test/renderer/web_ax_object_proxy.cc
+++ b/content/web_test/renderer/web_ax_object_proxy.cc
@@ -10,7 +10,7 @@
 #include <map>
 #include <utility>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "base/strings/stringprintf.h"
 #include "gin/handle.h"
 #include "third_party/blink/public/platform/web_string.h"
diff --git a/content/web_test/renderer/web_test_grammar_checker.cc b/content/web_test/renderer/web_test_grammar_checker.cc
index c9f30a3..309cd82 100644
--- a/content/web_test/renderer/web_test_grammar_checker.cc
+++ b/content/web_test/renderer/web_test_grammar_checker.cc
@@ -9,7 +9,7 @@
 #include <algorithm>
 
 #include "base/check.h"
-#include "base/stl_util.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"
diff --git a/content/web_test/renderer/web_test_spell_checker.cc b/content/web_test/renderer/web_test_spell_checker.cc
index 45783c4..a6cc9a9 100644
--- a/content/web_test/renderer/web_test_spell_checker.cc
+++ b/content/web_test/renderer/web_test_spell_checker.cc
@@ -9,7 +9,7 @@
 #include <algorithm>
 
 #include "base/check_op.h"
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "base/strings/string_util.h"
 
 namespace content {
diff --git a/dbus/OWNERS b/dbus/OWNERS
index 28dde184..c8c8e50 100644
--- a/dbus/OWNERS
+++ b/dbus/OWNERS
@@ -1,4 +1,4 @@
 set noparent
 hashimoto@chromium.org
 satorux@chromium.org
-stevenjb@chromium.org
\ No newline at end of file
+stevenjb@chromium.org
diff --git a/docs/OWNERS b/docs/OWNERS
index f59ec20..72e8ffc 100644
--- a/docs/OWNERS
+++ b/docs/OWNERS
@@ -1 +1 @@
-*
\ No newline at end of file
+*
diff --git a/docs/privacy/OWNERS b/docs/privacy/OWNERS
index 00060a96..30f1309 100644
--- a/docs/privacy/OWNERS
+++ b/docs/privacy/OWNERS
@@ -4,4 +4,4 @@
 mkwst@chromium.org
 msramek@chromium.org
 rhalavati@chromium.org
-tnagel@chromium.org
\ No newline at end of file
+tnagel@chromium.org
diff --git a/extensions/browser/event_router.cc b/extensions/browser/event_router.cc
index 813e051..cf697b1 100644
--- a/extensions/browser/event_router.cc
+++ b/extensions/browser/event_router.cc
@@ -864,27 +864,22 @@
     events::HistogramValue histogram_value,
     const std::string& event_name) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
-  // TODO(https://crbug.com/897946): Remove after investigating the bug.
-  if (ExtensionsBrowserClient::Get()->IsShuttingDown()) {
-    LOG(ERROR)
-        << "Event dispatched while shutting down extensions browser client.";
-    return;
-  }
   if (!ExtensionsBrowserClient::Get()->IsValidContext(browser_context))
     return;
-  DCHECK(ExtensionRegistry::Get(browser_context));
+
+  auto* registry = ExtensionRegistry::Get(browser_context);
+  DCHECK(registry);
   const Extension* extension =
-      ExtensionRegistry::Get(browser_context)->enabled_extensions().GetByID(
-          extension_id);
+      registry->enabled_extensions().GetByID(extension_id);
   if (!extension)
     return;
+
   EventRouter* event_router = EventRouter::Get(browser_context);
   DCHECK(event_router);
   event_router->IncrementInFlightEvents(
       browser_context, RenderProcessHost::FromID(render_process_id), extension,
       event_id, event_name, service_worker_version_id);
-  event_router->ReportEvent(histogram_value, extension,
-                            false /* did_enqueue */);
+  event_router->ReportEvent(histogram_value, extension, /*did_enqueue=*/false);
 }
 
 void EventRouter::IncrementInFlightEvents(BrowserContext* context,
diff --git a/extensions/shell/browser/shell_extension_system.cc b/extensions/shell/browser/shell_extension_system.cc
index f677875e..05e557e 100644
--- a/extensions/shell/browser/shell_extension_system.cc
+++ b/extensions/shell/browser/shell_extension_system.cc
@@ -22,6 +22,7 @@
 #include "extensions/browser/quota_service.h"
 #include "extensions/browser/runtime_data.h"
 #include "extensions/browser/service_worker_manager.h"
+#include "extensions/browser/user_script_manager.h"
 #include "extensions/browser/value_store/value_store_factory_impl.h"
 #include "extensions/common/constants.h"
 #include "extensions/common/file_util.h"
@@ -78,6 +79,7 @@
   quota_service_ = std::make_unique<QuotaService>();
   app_sorting_ = std::make_unique<NullAppSorting>();
   extension_loader_ = std::make_unique<ShellExtensionLoader>(browser_context_);
+  user_script_manager_ = std::make_unique<UserScriptManager>(browser_context_);
 }
 
 ExtensionService* ShellExtensionSystem::extension_service() {
@@ -97,7 +99,7 @@
 }
 
 UserScriptManager* ShellExtensionSystem::user_script_manager() {
-  return nullptr;
+  return user_script_manager_.get();
 }
 
 StateStore* ShellExtensionSystem::state_store() {
diff --git a/extensions/shell/browser/shell_extension_system.h b/extensions/shell/browser/shell_extension_system.h
index 65037fc..6ab7a7a 100644
--- a/extensions/shell/browser/shell_extension_system.h
+++ b/extensions/shell/browser/shell_extension_system.h
@@ -105,6 +105,7 @@
   std::unique_ptr<RuntimeData> runtime_data_;
   std::unique_ptr<QuotaService> quota_service_;
   std::unique_ptr<AppSorting> app_sorting_;
+  std::unique_ptr<UserScriptManager> user_script_manager_;
 
   std::unique_ptr<ShellExtensionLoader> extension_loader_;
 
diff --git a/fuchsia/engine/test/OWNERS b/fuchsia/engine/test/OWNERS
index ede9026..2f43650c 100644
--- a/fuchsia/engine/test/OWNERS
+++ b/fuchsia/engine/test/OWNERS
@@ -1,2 +1,2 @@
 per-file *.cmx=set noparent
-per-file *.cmx=file://fuchsia/SECURITY_OWNERS
\ No newline at end of file
+per-file *.cmx=file://fuchsia/SECURITY_OWNERS
diff --git a/gpu/ipc/service/OWNERS b/gpu/ipc/service/OWNERS
index 7a4fd13..e838c66 100644
--- a/gpu/ipc/service/OWNERS
+++ b/gpu/ipc/service/OWNERS
@@ -2,4 +2,4 @@
 per-file *_mac*=ccameron@chromium.org
 
 # Gpu Watchdog
-per-file *gpu_watchdog_thread*=magchen@chromium.org
\ No newline at end of file
+per-file *gpu_watchdog_thread*=magchen@chromium.org
diff --git a/infra/config/generated/cr-buildbucket.cfg b/infra/config/generated/cr-buildbucket.cfg
index 0a8f20f..cc795fd 100644
--- a/infra/config/generated/cr-buildbucket.cfg
+++ b/infra/config/generated/cr-buildbucket.cfg
@@ -40,7 +40,6 @@
         properties_j: "$recipe_engine/isolated:{\"server\":\"https://isolateserver.appspot.com\"}"
         properties_j: "$recipe_engine/resultdb/test_presentation:{\"column_keys\":[],\"grouping_keys\":[\"status\",\"v.test_suite\"]}"
         properties_j: "builder_group:\"chromium.packager\""
-        properties_j: "platform:\"linux-amd64\""
       }
       execution_timeout_secs: 10800
       build_numbers: YES
@@ -37283,8 +37282,6 @@
         properties_j: "$recipe_engine/isolated:{\"server\":\"https://isolateserver.appspot.com\"}"
         properties_j: "$recipe_engine/resultdb/test_presentation:{\"column_keys\":[],\"grouping_keys\":[\"status\",\"v.test_suite\"]}"
         properties_j: "builder_group:\"tryserver.chromium.packager\""
-        properties_j: "package_prefix:\"chromium_3pp\""
-        properties_j: "platform:\"linux-amd64\""
       }
       execution_timeout_secs: 14400
       expiration_secs: 7200
diff --git a/infra/config/subprojects/chromium/ci.star b/infra/config/subprojects/chromium/ci.star
index efdb8a636..c4723fb 100644
--- a/infra/config/subprojects/chromium/ci.star
+++ b/infra/config/subprojects/chromium/ci.star
@@ -1956,9 +1956,6 @@
     schedule = "with 6h interval",
     triggered_by = [],
     properties = {
-        # TODO(hypan): Remove this property after chromium_3pp is
-        # migrated to a recipe module (crrev.com/c/2870555)
-        "platform": "linux-amd64",
         "$build/chromium_3pp": {
             "platform": "linux-amd64",
             "preprocess": [{
diff --git a/infra/config/subprojects/chromium/try.star b/infra/config/subprojects/chromium/try.star
index a5b77a6b..193ef51e 100644
--- a/infra/config/subprojects/chromium/try.star
+++ b/infra/config/subprojects/chromium/try.star
@@ -1885,10 +1885,6 @@
     os = os.LINUX_XENIAL_OR_BIONIC_SWITCH_TO_DEFAULT,
     builderless = False,
     properties = {
-        # TODO(hypan): Remove these two properties after chromium_3pp is
-        # migrated to a recipe module (crrev.com/c/2870555)
-        "platform": "linux-amd64",
-        "package_prefix": "chromium_3pp",
         "$build/chromium_3pp": {
             "platform": "linux-amd64",
             "package_prefix": "chromium_3pp",
diff --git a/ios/DIR_METADATA b/ios/DIR_METADATA
index 1d9edd1f..00cb7036 100644
--- a/ios/DIR_METADATA
+++ b/ios/DIR_METADATA
@@ -1,10 +1,10 @@
 # Metadata information for this directory.
 #
 # For more information on DIR_METADATA files, see:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md
 #
 # For the schema of this file, see Metadata message:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto
 
 monorail {
   component: "UI>Browser>Mobile"
diff --git a/ios/build/DIR_METADATA b/ios/build/DIR_METADATA
index 3a18da1e..aea61c0b 100644
--- a/ios/build/DIR_METADATA
+++ b/ios/build/DIR_METADATA
@@ -1,10 +1,10 @@
 # Metadata information for this directory.
 #
 # For more information on DIR_METADATA files, see:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md
 #
 # For the schema of this file, see Metadata message:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto
 
 monorail {
   component: "Infra>Client>Chrome"
diff --git a/ios/build/bots/scripts/result_sink_util.py b/ios/build/bots/scripts/result_sink_util.py
index b703ef8..e3ca90b 100644
--- a/ios/build/bots/scripts/result_sink_util.py
+++ b/ios/build/bots/scripts/result_sink_util.py
@@ -13,7 +13,7 @@
 LOGGER = logging.getLogger(__name__)
 # VALID_STATUSES is a list of valid status values for test_result['status'].
 # The full list can be obtained at
-# https://source.chromium.org/chromium/infra/infra/+/master:go/src/go.chromium.org/luci/resultdb/proto/v1/test_result.proto;drc=ca12b9f52b27f064b0fa47c39baa3b011ffa5790;l=151-174
+# https://source.chromium.org/chromium/infra/infra/+/main:go/src/go.chromium.org/luci/resultdb/proto/v1/test_result.proto;drc=ca12b9f52b27f064b0fa47c39baa3b011ffa5790;l=151-174
 VALID_STATUSES = {"PASS", "FAIL", "CRASH", "ABORT", "SKIP"}
 
 
@@ -30,7 +30,7 @@
 
   Returns:
     A dict of test results with input information, confirming to
-      https://source.chromium.org/chromium/infra/infra/+/master:go/src/go.chromium.org/luci/resultdb/sink/proto/v1/test_result.proto
+      https://source.chromium.org/chromium/infra/infra/+/main:go/src/go.chromium.org/luci/resultdb/sink/proto/v1/test_result.proto
   """
   assert status in VALID_STATUSES, (
       '%s is not a valid status (one in %s) for ResultSink.' %
@@ -129,7 +129,7 @@
 
     Args:
         test_result: (dict) Confirming to protocol defined in
-          https://source.chromium.org/chromium/infra/infra/+/master:go/src/go.chromium.org/luci/resultdb/sink/proto/v1/test_result.proto
+          https://source.chromium.org/chromium/infra/infra/+/main:go/src/go.chromium.org/luci/resultdb/sink/proto/v1/test_result.proto
     """
     res = self._session.post(
         url=self.url,
diff --git a/ios/build/bots/scripts/standard_json_util.py b/ios/build/bots/scripts/standard_json_util.py
index 4a16571..9472c51 100644
--- a/ios/build/bots/scripts/standard_json_util.py
+++ b/ios/build/bots/scripts/standard_json_util.py
@@ -16,7 +16,7 @@
   def __init__(self, **kwargs):
     """Module for storing the results in standard JSON format.
 
-    https://chromium.googlesource.com/chromium/src/+/master/docs/testing/json_test_results_format.md
+    https://chromium.googlesource.com/chromium/src/+/main/docs/testing/json_test_results_format.md
     """
 
     self.tests = OrderedDict()
diff --git a/ios/chrome/app/strings/resources/ios_strings_af.xtb b/ios/chrome/app/strings/resources/ios_strings_af.xtb
index 15ffc13c..d41853d 100644
--- a/ios/chrome/app/strings/resources/ios_strings_af.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_af.xtb
@@ -456,6 +456,7 @@
 <translation id="5782227691023083829">Vertaal tans …</translation>
 <translation id="5797070761912323120">Google kan jou geskiedenis gebruik om Search, advertensies en ander Google-dienste te personaliseer</translation>
 <translation id="5803566855766646066">Is jy seker jy wil hierdie nuwe kaart weggooi?</translation>
+<translation id="5812974770859303494">Voeg by …</translation>
 <translation id="5816228676161003208">Dit laat jou vinniger soek met jou stem.</translation>
 <translation id="581659025233126501">Skakel sinkronisering aan</translation>
 <translation id="5819208479324046259">Bestuur deur <ph name="MANAGER" />. <ph name="BEGIN_LINK" />Kom meer te wete<ph name="END_LINK" /></translation>
@@ -765,6 +766,7 @@
 <translation id="8654802032646794042">Kanselleer</translation>
 <translation id="8668210798914567634">Hierdie bladsy is na jou Leeslys gestoor.</translation>
 <translation id="8680787084697685621">Rekening se aanmeldbesonderhede is verouderd.</translation>
+<translation id="8693663554456874301">{count,plural, =1{Maak oortjie toe}other{Maak oortjies toe}}</translation>
 <translation id="8706588385081740091">Wagwoorde</translation>
 <translation id="8717864919010420084">Kopieer skakel</translation>
 <translation id="8721297211384281569">Nutsgoedkieslys</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fa.xtb b/ios/chrome/app/strings/resources/ios_strings_fa.xtb
index 11937a0..75bb386 100644
--- a/ios/chrome/app/strings/resources/ios_strings_fa.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_fa.xtb
@@ -456,6 +456,7 @@
 <translation id="5782227691023083829">در حال ترجمه...</translation>
 <translation id="5797070761912323120">‏Google ممکن است از سابقه مرور شما برای شخصی کردن جستجو، آگهی‌ها و سایر سرویس‌های Google استفاده کند</translation>
 <translation id="5803566855766646066">مطمئنید می‌خواهید از این کارت جدید صرف‌نظر کنید؟</translation>
+<translation id="5812974770859303494">افزودن به…</translation>
 <translation id="5816228676161003208">این کار به شما اجازه می‌دهد با استفاده از صدایتان سریع‌تر جستجو کنید.</translation>
 <translation id="581659025233126501">روشن کردن همگام‌سازی</translation>
 <translation id="5819208479324046259">توسط <ph name="MANAGER" /> مدیریت می‌شود. <ph name="BEGIN_LINK" />بیشتر بدانید<ph name="END_LINK" /></translation>
@@ -765,6 +766,7 @@
 <translation id="8654802032646794042">لغو</translation>
 <translation id="8668210798914567634">این صفحه در «فهرست خواندن» شما ذخیره شده است.</translation>
 <translation id="8680787084697685621">جزئیات ورود به سیستم حساب قدیمی است.</translation>
+<translation id="8693663554456874301">{count,plural, =1{بستن برگه}one{بستن برگه}other{بستن برگه‌ها}}</translation>
 <translation id="8706588385081740091">گذرواژه‌ها</translation>
 <translation id="8717864919010420084">کپی پیوند</translation>
 <translation id="8721297211384281569">منوی ابزارها</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fil.xtb b/ios/chrome/app/strings/resources/ios_strings_fil.xtb
index 867b353..fd71a14 100644
--- a/ios/chrome/app/strings/resources/ios_strings_fil.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_fil.xtb
@@ -522,6 +522,7 @@
 <translation id="634878792104344809">I-sync ang iyong password, history, at higit pa sa lahat ng device mo</translation>
 <translation id="6362362396625799311">Walang Mga Tab na Incognito</translation>
 <translation id="6363526231572697780">Walang Username</translation>
+<translation id="6366663624406569102">Mag-sign Out at I-off ang Pag-sync</translation>
 <translation id="6374469231428023295">Subukang Muli</translation>
 <translation id="6377118281273296434">Seguridad ng Site</translation>
 <translation id="6380866119319257197">Kung makalimutan mo ang iyong passphrase o gusto mong baguhin ang setting na ito, <ph name="BEGIN_LINK" />i-reset ang pag-sync<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_lo.xtb b/ios/chrome/app/strings/resources/ios_strings_lo.xtb
index 08444cb..9871926 100644
--- a/ios/chrome/app/strings/resources/ios_strings_lo.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_lo.xtb
@@ -522,6 +522,7 @@
 <translation id="634878792104344809">ຊິ້ງຂໍ້ມູນລະຫັດຜ່ານຂອງທ່ານ, ປະຫວັດ ແລະ ອື່ນໆຢູ່ອຸປະກອນທັງໝົດຂອງທ່ານ</translation>
 <translation id="6362362396625799311">ບໍ່​ມີ​ແຖບທີ່ບໍ່​ເຜີຍ​​ຕົວຕົນ</translation>
 <translation id="6363526231572697780">ບໍ່ມີຊື່ຜູ້ໃຊ້</translation>
+<translation id="6366663624406569102">ອອກຈາກລະບົບ ແລະ ປິດການຊິ້ງຂໍ້ມູນ</translation>
 <translation id="6374469231428023295">ລອງໃໝ່ອີກ</translation>
 <translation id="6377118281273296434">ຄວາມປອດໄພເວັບໄຊ</translation>
 <translation id="6380866119319257197">ຖ້າທ່ານລືມວະລີຜ່ານຂອງທ່ານ ຫຼື ຕ້ອງການປ່ຽນການຕັ້ງຄ່ານີ້, <ph name="BEGIN_LINK" />ຣີເຊັດການຊິ້ງຂໍ້ມູນ<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/browser/browser_state_metrics/DIR_METADATA b/ios/chrome/browser/browser_state_metrics/DIR_METADATA
index 80bb3818..3e1c30b6 100644
--- a/ios/chrome/browser/browser_state_metrics/DIR_METADATA
+++ b/ios/chrome/browser/browser_state_metrics/DIR_METADATA
@@ -1,10 +1,10 @@
 # Metadata information for this directory.
 #
 # For more information on DIR_METADATA files, see:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md
 #
 # For the schema of this file, see Metadata message:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto
 
 monorail {
   component: "UI>Browser>Profiles"
diff --git a/ios/chrome/browser/component_updater/DIR_METADATA b/ios/chrome/browser/component_updater/DIR_METADATA
index 65f2ffa..ac9279c5 100644
--- a/ios/chrome/browser/component_updater/DIR_METADATA
+++ b/ios/chrome/browser/component_updater/DIR_METADATA
@@ -1,10 +1,10 @@
 # Metadata information for this directory.
 #
 # For more information on DIR_METADATA files, see:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md
 #
 # For the schema of this file, see Metadata message:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto
 
 monorail {
   component: "Internals>Installer>Components"
diff --git a/ios/chrome/browser/crash_report/main_thread_freeze_detector.mm b/ios/chrome/browser/crash_report/main_thread_freeze_detector.mm
index 1113c6c..0a3e4240 100644
--- a/ios/chrome/browser/crash_report/main_thread_freeze_detector.mm
+++ b/ios/chrome/browser/crash_report/main_thread_freeze_detector.mm
@@ -24,6 +24,9 @@
 const char kNsUserDefaultKeyLastSessionInfo[] =
     "MainThreadDetectionLastThreadWasFrozenInfo";
 
+// Clean exit beacon.
+NSString* const kLastSessionExitedCleanly = @"LastSessionExitedCleanly";
+
 const NSTimeInterval kFreezeDetectionDelay = 9;
 
 void LogRecoveryTime(base::TimeDelta time) {
@@ -96,6 +99,18 @@
   if (self) {
     _lastSessionFreezeInfo = [[NSUserDefaults standardUserDefaults]
         dictionaryForKey:@(kNsUserDefaultKeyLastSessionInfo)];
+
+    if (_lastSessionFreezeInfo != nil) {
+      NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
+      bool clean = [defaults objectForKey:kLastSessionExitedCleanly] != nil &&
+                   [defaults boolForKey:kLastSessionExitedCleanly];
+      // Last session exited cleanly, ignore _lastSessionFreezeInfo.
+      UMA_HISTOGRAM_BOOLEAN("IOS.MainThreadFreezeDetection.HangWithCleanExit",
+                            clean);
+      if (clean)
+        _lastSessionFreezeInfo = nil;
+    }
+
     _lastSessionEndedFrozen = _lastSessionFreezeInfo != nil;
     [[NSUserDefaults standardUserDefaults]
         removeObjectForKey:@(kNsUserDefaultKeyLastSessionInfo)];
diff --git a/ios/chrome/browser/first_run/DIR_METADATA b/ios/chrome/browser/first_run/DIR_METADATA
index 0feb00a68..6185129 100644
--- a/ios/chrome/browser/first_run/DIR_METADATA
+++ b/ios/chrome/browser/first_run/DIR_METADATA
@@ -1,10 +1,10 @@
 # Metadata information for this directory.
 #
 # For more information on DIR_METADATA files, see:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md
 #
 # For the schema of this file, see Metadata message:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto
 
 monorail {
   component: "UI>Browser>FirstRun"
diff --git a/ios/chrome/browser/gcm/DIR_METADATA b/ios/chrome/browser/gcm/DIR_METADATA
index a6b11371..428baeb 100644
--- a/ios/chrome/browser/gcm/DIR_METADATA
+++ b/ios/chrome/browser/gcm/DIR_METADATA
@@ -1,10 +1,10 @@
 # Metadata information for this directory.
 #
 # For more information on DIR_METADATA files, see:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md
 #
 # For the schema of this file, see Metadata message:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto
 
 monorail {
   component: "Services>CloudMessaging"
diff --git a/ios/chrome/browser/invalidation/DIR_METADATA b/ios/chrome/browser/invalidation/DIR_METADATA
index e8efb5d..47eb7b76 100644
--- a/ios/chrome/browser/invalidation/DIR_METADATA
+++ b/ios/chrome/browser/invalidation/DIR_METADATA
@@ -1,10 +1,10 @@
 # Metadata information for this directory.
 #
 # For more information on DIR_METADATA files, see:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md
 #
 # For the schema of this file, see Metadata message:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto
 
 monorail {
   component: "Services>Invalidation"
diff --git a/ios/chrome/browser/ntp_tiles/ios_most_visited_sites_factory.cc b/ios/chrome/browser/ntp_tiles/ios_most_visited_sites_factory.cc
index 6fafc58..46f89893 100644
--- a/ios/chrome/browser/ntp_tiles/ios_most_visited_sites_factory.cc
+++ b/ios/chrome/browser/ntp_tiles/ios_most_visited_sites_factory.cc
@@ -25,7 +25,6 @@
   return std::make_unique<ntp_tiles::MostVisitedSites>(
       browser_state->GetPrefs(),
       ios::TopSitesFactory::GetForBrowserState(browser_state),
-      /*repeatable_queries=*/nullptr,
       suggestions::SuggestionsServiceFactory::GetForBrowserState(browser_state),
       IOSPopularSitesFactory::NewForBrowserState(browser_state),
       /*custom_links=*/nullptr,
diff --git a/ios/chrome/browser/omaha/DIR_METADATA b/ios/chrome/browser/omaha/DIR_METADATA
index 2700701..20bb1946 100644
--- a/ios/chrome/browser/omaha/DIR_METADATA
+++ b/ios/chrome/browser/omaha/DIR_METADATA
@@ -1,10 +1,10 @@
 # Metadata information for this directory.
 #
 # For more information on DIR_METADATA files, see:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md
 #
 # For the schema of this file, see Metadata message:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto
 
 monorail {
   component: "Internals>Installer"
diff --git a/ios/chrome/browser/policy/DIR_METADATA b/ios/chrome/browser/policy/DIR_METADATA
index b21bb252..a33911f 100644
--- a/ios/chrome/browser/policy/DIR_METADATA
+++ b/ios/chrome/browser/policy/DIR_METADATA
@@ -1,10 +1,10 @@
 # Metadata information for this directory.
 #
 # For more information on DIR_METADATA files, see:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md
 #
 # For the schema of this file, see Metadata message:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto
 
 monorail {
   component: "Enterprise"
diff --git a/ios/chrome/browser/policy/policy_watcher_browser_agent.h b/ios/chrome/browser/policy/policy_watcher_browser_agent.h
index f24ef8e4..181bffd 100644
--- a/ios/chrome/browser/policy/policy_watcher_browser_agent.h
+++ b/ios/chrome/browser/policy/policy_watcher_browser_agent.h
@@ -8,6 +8,7 @@
 #include <memory>
 
 #include "base/macros.h"
+#include "base/memory/weak_ptr.h"
 #include "base/observer_list.h"
 #import "ios/chrome/browser/main/browser_user_data.h"
 
@@ -45,6 +46,9 @@
   // UI.
   void ForceSignOutIfSigninDisabled();
 
+  // Callback called when the sign out is complete.
+  void OnSignOutComplete();
+
   // The owning Browser.
   Browser* browser_;
 
@@ -59,6 +63,9 @@
 
   // Handler to send commands.
   id<PolicySignoutPromptCommands> handler_ = nil;
+
+  // WeakPtrFactory should be last.
+  base::WeakPtrFactory<PolicyWatcherBrowserAgent> weak_factory_{this};
 };
 
 #endif  // IOS_CHROME_BROWSER_POLICY_POLICY_WATCHER_BROWSER_AGENT_H_
diff --git a/ios/chrome/browser/policy/policy_watcher_browser_agent.mm b/ios/chrome/browser/policy/policy_watcher_browser_agent.mm
index ec50e668..1fde103 100644
--- a/ios/chrome/browser/policy/policy_watcher_browser_agent.mm
+++ b/ios/chrome/browser/policy/policy_watcher_browser_agent.mm
@@ -77,24 +77,14 @@
       base::UmaHistogramBoolean("Enterprise.BrowserSigninIOS.SignedOutByPolicy",
                                 true);
 
-      SceneState* scene_state =
-          SceneStateBrowserAgent::FromBrowser(browser_)->GetSceneState();
+      base::WeakPtr<PolicyWatcherBrowserAgent> weak_ptr =
+          weak_factory_.GetWeakPtr();
       // Sign the user out, but keep synced data (bookmarks, passwords, etc)
       // locally to be consistent with the policy's behavior on other platforms.
-      service->SignOut(
-          signin_metrics::ProfileSignout::SIGNOUT_PREF_CHANGED,
-          /*force_clear_browsing_data=*/false, ^{
-            sign_out_in_progress_ = false;
-            BOOL sceneIsActive = scene_state.activationLevel >=
-                                 SceneActivationLevelForegroundActive;
-            if (sceneIsActive) {
-              // Try to show the signout prompt in all cases: if there is a sign
-              // in in progress, the UI will prevent the prompt from showing.
-              [handler_ showPolicySignoutPrompt];
-            } else {
-              scene_state.appState.shouldShowPolicySignoutPrompt = YES;
-            }
-          });
+      service->SignOut(signin_metrics::ProfileSignout::SIGNOUT_PREF_CHANGED,
+                       /*force_clear_browsing_data=*/false, ^{
+                         weak_ptr->OnSignOutComplete();
+                       });
     }
 
     for (auto& observer : observers_) {
@@ -112,3 +102,18 @@
     PolicyWatcherBrowserAgentObserver* observer) {
   observers_.RemoveObserver(observer);
 }
+
+void PolicyWatcherBrowserAgent::OnSignOutComplete() {
+  SceneState* scene_state =
+      SceneStateBrowserAgent::FromBrowser(browser_)->GetSceneState();
+  sign_out_in_progress_ = false;
+  BOOL sceneIsActive =
+      scene_state.activationLevel >= SceneActivationLevelForegroundActive;
+  if (sceneIsActive) {
+    // Try to show the signout prompt in all cases: if there is a sign
+    // in in progress, the UI will prevent the prompt from showing.
+    [handler_ showPolicySignoutPrompt];
+  } else {
+    scene_state.appState.shouldShowPolicySignoutPrompt = YES;
+  }
+}
diff --git a/ios/chrome/browser/policy/policy_watcher_browser_agent_unittest.mm b/ios/chrome/browser/policy/policy_watcher_browser_agent_unittest.mm
index 9e0976b..9a03751 100644
--- a/ios/chrome/browser/policy/policy_watcher_browser_agent_unittest.mm
+++ b/ios/chrome/browser/policy/policy_watcher_browser_agent_unittest.mm
@@ -61,10 +61,10 @@
     agent_ = PolicyWatcherBrowserAgent::FromBrowser(browser_.get());
 
     // SceneState Browser Agent.
-    AppState* app_state = [[AppState alloc] initWithBrowserLauncher:nil
-                                                 startupInformation:nil
-                                                applicationDelegate:nil];
-    scene_state_ = [[FakeSceneState alloc] initWithAppState:app_state];
+    app_state_ = [[AppState alloc] initWithBrowserLauncher:nil
+                                        startupInformation:nil
+                                       applicationDelegate:nil];
+    scene_state_ = [[FakeSceneState alloc] initWithAppState:app_state_];
     scene_state_.activationLevel = SceneActivationLevelForegroundActive;
     SceneStateBrowserAgent::CreateForBrowser(browser_.get(), scene_state_);
   }
@@ -94,6 +94,8 @@
   PolicyWatcherBrowserAgent* agent_;
   std::unique_ptr<Browser> browser_;
   FakeSceneState* scene_state_;
+  // Keep app_state_ alive as it is a weak property of the scene state.
+  AppState* app_state_;
 };
 
 #pragma mark - Tests.
@@ -193,13 +195,7 @@
 
 // Tests that the pref change doesn't trigger a command if the scene isn't
 // active.
-// TODO(crbug.com/1211546): The test fails on device.
-#if TARGET_IPHONE_SIMULATOR
-#define MAYBE_NoCommandIfNotActive NoCommandIfNotActive
-#else
-#define MAYBE_NoCommandIfNotActive DISABLED_NoCommandIfNotActive
-#endif  // TARGET_IPHONE_SIMULATOR
-TEST_F(PolicyWatcherBrowserAgentTest, MAYBE_NoCommandIfNotActive) {
+TEST_F(PolicyWatcherBrowserAgentTest, NoCommandIfNotActive) {
   AuthenticationService* authentication_service =
       AuthenticationServiceFactory::GetForBrowserState(
           chrome_browser_state_.get());
@@ -266,13 +262,7 @@
 
 // Tests that the command to show the UI isn't sent if the authentication
 // service is still signing out the user.
-// TODO(crbug.com/1211546): The test is flaky on device.
-#if TARGET_IPHONE_SIMULATOR
-#define MAYBE_UINotShownWhileSignOut UINotShownWhileSignOut
-#else
-#define MAYBE_UINotShownWhileSignOut FLAKY_UINotShownWhileSignOut
-#endif  // TARGET_IPHONE_SIMULATOR
-TEST_F(PolicyWatcherBrowserAgentTest, MAYBE_UINotShownWhileSignOut) {
+TEST_F(PolicyWatcherBrowserAgentTest, UINotShownWhileSignOut) {
   chrome_browser_state_->GetPrefs()->SetBoolean(prefs::kSigninAllowed, false);
 
   AuthenticationService* authentication_service =
@@ -300,10 +290,8 @@
 
   OCMExpect([mockHandler showPolicySignoutPrompt]);
 
-  ASSERT_TRUE(base::test::ios::WaitUntilConditionOrTimeout(
-      base::test::ios::kWaitForActionTimeout, ^bool {
-        return !authentication_service->IsAuthenticated();
-      }));
+  base::RunLoop().RunUntilIdle();
+  ASSERT_FALSE(authentication_service->IsAuthenticated());
 
   // Once the SignOut callback is executed, the command should be sent.
   EXPECT_OCMOCK_VERIFY(mockHandler);
diff --git a/ios/chrome/browser/policy_url_blocking/DIR_METADATA b/ios/chrome/browser/policy_url_blocking/DIR_METADATA
index 62508236..bcd21f0d 100644
--- a/ios/chrome/browser/policy_url_blocking/DIR_METADATA
+++ b/ios/chrome/browser/policy_url_blocking/DIR_METADATA
@@ -1,10 +1,10 @@
 # Metadata information for this directory.
 #
 # For more information on DIR_METADATA files, see:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md
 #
 # For the schema of this file, see Metadata message:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto
 
 monorail {
   component: "Enterprise>iOS"
diff --git a/ios/chrome/browser/safe_browsing/DIR_METADATA b/ios/chrome/browser/safe_browsing/DIR_METADATA
index ca03f3cc..f8a3c4ae0 100644
--- a/ios/chrome/browser/safe_browsing/DIR_METADATA
+++ b/ios/chrome/browser/safe_browsing/DIR_METADATA
@@ -1,10 +1,10 @@
 # Metadata information for this directory.
 #
 # For more information on DIR_METADATA files, see:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md
 #
 # For the schema of this file, see Metadata message:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto
 
 monorail {
   component: "UI>Browser>Navigation"
diff --git a/ios/chrome/browser/signin/DIR_METADATA b/ios/chrome/browser/signin/DIR_METADATA
index 3f72231..2322464 100644
--- a/ios/chrome/browser/signin/DIR_METADATA
+++ b/ios/chrome/browser/signin/DIR_METADATA
@@ -1,10 +1,10 @@
 # Metadata information for this directory.
 #
 # For more information on DIR_METADATA files, see:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md
 #
 # For the schema of this file, see Metadata message:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto
 
 monorail {
   component: "Services>SignIn"
diff --git a/ios/chrome/browser/signin/authentication_service.mm b/ios/chrome/browser/signin/authentication_service.mm
index 6001aad..b2565e6f7 100644
--- a/ios/chrome/browser/signin/authentication_service.mm
+++ b/ios/chrome/browser/signin/authentication_service.mm
@@ -574,8 +574,8 @@
   }
 
   // Sign the user out.
-  SignOut(signin_metrics::ABORT_SIGNIN, /*force_clear_browsing_data=*/false,
-          nil);
+  SignOut(signin_metrics::ACCOUNT_REMOVED_FROM_DEVICE,
+          /*force_clear_browsing_data=*/false, nil);
   if (should_prompt)
     SetPromptForSignIn();
 }
diff --git a/ios/chrome/browser/signin/authentication_service_fake.h b/ios/chrome/browser/signin/authentication_service_fake.h
index c664bd0..f4297714 100644
--- a/ios/chrome/browser/signin/authentication_service_fake.h
+++ b/ios/chrome/browser/signin/authentication_service_fake.h
@@ -7,6 +7,7 @@
 
 #include <memory>
 
+#include "base/memory/ptr_util.h"
 #import "ios/chrome/browser/signin/authentication_service.h"
 #import "ios/public/provider/chrome/browser/signin/chrome_identity.h"
 
@@ -55,6 +56,9 @@
 
   __strong ChromeIdentity* authenticated_identity_;
   bool have_accounts_changed_while_in_background_;
+
+  // WeakPtrFactory should be last.
+  base::WeakPtrFactory<AuthenticationServiceFake> weak_factory_{this};
 };
 
 #endif  // IOS_CHROME_BROWSER_SIGNIN_AUTHENTICATION_SERVICE_FAKE_H_
diff --git a/ios/chrome/browser/signin/authentication_service_fake.mm b/ios/chrome/browser/signin/authentication_service_fake.mm
index 9b5309a..99e1c2b9 100644
--- a/ios/chrome/browser/signin/authentication_service_fake.mm
+++ b/ios/chrome/browser/signin/authentication_service_fake.mm
@@ -6,8 +6,6 @@
 
 #include <memory>
 
-#include "base/memory/ptr_util.h"
-#include "base/task/thread_pool.h"
 #include "ios/chrome/browser/browser_state/chrome_browser_state.h"
 #import "ios/chrome/browser/signin/authentication_service_delegate_fake.h"
 #import "ios/chrome/browser/signin/authentication_service_factory.h"
@@ -49,9 +47,9 @@
     bool force_clear_browsing_data,
     ProceduralBlock completion) {
   if (force_clear_browsing_data || IsAuthenticatedIdentityManaged()) {
-    base::ThreadPool::PostTask(
-        base::BindOnce(&AuthenticationServiceFake::SignOutInternal,
-                       base::Unretained(this), completion));
+    base::SequencedTaskRunnerHandle::Get()->PostTask(
+        FROM_HERE, base::BindOnce(&AuthenticationServiceFake::SignOutInternal,
+                                  weak_factory_.GetWeakPtr(), completion));
   } else {
     SignOutInternal(completion);
   }
diff --git a/ios/chrome/browser/ssl/DIR_METADATA b/ios/chrome/browser/ssl/DIR_METADATA
index b26baeb..d326b673 100644
--- a/ios/chrome/browser/ssl/DIR_METADATA
+++ b/ios/chrome/browser/ssl/DIR_METADATA
@@ -1,9 +1,9 @@
 # Metadata information for this directory.
 #
 # For more information on DIR_METADATA files, see:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md
 #
 # For the schema of this file, see Metadata message:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto
 
 team_email: "security-enamel@chromium.org"
\ No newline at end of file
diff --git a/ios/chrome/browser/suggestions/DIR_METADATA b/ios/chrome/browser/suggestions/DIR_METADATA
index c86eea28..e3fa31a 100644
--- a/ios/chrome/browser/suggestions/DIR_METADATA
+++ b/ios/chrome/browser/suggestions/DIR_METADATA
@@ -1,10 +1,10 @@
 # Metadata information for this directory.
 #
 # For more information on DIR_METADATA files, see:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md
 #
 # For the schema of this file, see Metadata message:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto
 
 monorail {
   component: "UI>Browser>NewTabPage"
diff --git a/ios/chrome/browser/sync/DIR_METADATA b/ios/chrome/browser/sync/DIR_METADATA
index 48d7e48..5099a4e6 100644
--- a/ios/chrome/browser/sync/DIR_METADATA
+++ b/ios/chrome/browser/sync/DIR_METADATA
@@ -1,10 +1,10 @@
 # Metadata information for this directory.
 #
 # For more information on DIR_METADATA files, see:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md
 #
 # For the schema of this file, see Metadata message:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto
 
 monorail {
   component: "Services>Sync"
diff --git a/ios/chrome/browser/ui/authentication/DIR_METADATA b/ios/chrome/browser/ui/authentication/DIR_METADATA
index 3f72231..2322464 100644
--- a/ios/chrome/browser/ui/authentication/DIR_METADATA
+++ b/ios/chrome/browser/ui/authentication/DIR_METADATA
@@ -1,10 +1,10 @@
 # Metadata information for this directory.
 #
 # For more information on DIR_METADATA files, see:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md
 #
 # For the schema of this file, see Metadata message:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto
 
 monorail {
   component: "Services>SignIn"
diff --git a/ios/chrome/browser/ui/content_suggestions/content_suggestions_collection_utils.mm b/ios/chrome/browser/ui/content_suggestions/content_suggestions_collection_utils.mm
index 2923f937..b6cd47df 100644
--- a/ios/chrome/browser/ui/content_suggestions/content_suggestions_collection_utils.mm
+++ b/ios/chrome/browser/ui/content_suggestions/content_suggestions_collection_utils.mm
@@ -29,6 +29,7 @@
 // Width of search field.
 const CGFloat kSearchFieldLarge = 432;
 const CGFloat kSearchFieldSmall = 343;
+const CGFloat kSearchFieldSmallMin = 304;
 const CGFloat kSearchFieldMinMargin = 8;
 
 // Top margin for the doodle.
@@ -118,7 +119,9 @@
     return kSearchFieldLarge;
 
   // Special case for narrow sizes.
-  return MIN(kSearchFieldSmall, superviewWidth - kSearchFieldMinMargin * 2);
+  return MAX(
+      kSearchFieldSmallMin,
+      MIN(kSearchFieldSmall, superviewWidth - kSearchFieldMinMargin * 2));
 }
 
 CGFloat heightForLogoHeader(BOOL logoIsShowing,
diff --git a/ios/chrome/browser/ui/location_bar/DIR_METADATA b/ios/chrome/browser/ui/location_bar/DIR_METADATA
index e776efa..ac4fcdaf 100644
--- a/ios/chrome/browser/ui/location_bar/DIR_METADATA
+++ b/ios/chrome/browser/ui/location_bar/DIR_METADATA
@@ -1,10 +1,10 @@
 # Metadata information for this directory.
 #
 # For more information on DIR_METADATA files, see:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md
 #
 # For the schema of this file, see Metadata message:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto
 
 monorail {
   component: "UI>Browser>Omnibox"
diff --git a/ios/chrome/browser/ui/omnibox/DIR_METADATA b/ios/chrome/browser/ui/omnibox/DIR_METADATA
index e776efa..ac4fcdaf 100644
--- a/ios/chrome/browser/ui/omnibox/DIR_METADATA
+++ b/ios/chrome/browser/ui/omnibox/DIR_METADATA
@@ -1,10 +1,10 @@
 # Metadata information for this directory.
 #
 # For more information on DIR_METADATA files, see:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md
 #
 # For the schema of this file, see Metadata message:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto
 
 monorail {
   component: "UI>Browser>Omnibox"
diff --git a/ios/chrome/browser/ui/reading_list/BUILD.gn b/ios/chrome/browser/ui/reading_list/BUILD.gn
index 47700a5..b43fbdc 100644
--- a/ios/chrome/browser/ui/reading_list/BUILD.gn
+++ b/ios/chrome/browser/ui/reading_list/BUILD.gn
@@ -122,7 +122,6 @@
     ":reading_list_constants",
     "resources:reading_list_empty",
     "resources:reading_list_empty_state",
-    "resources:reading_list_empty_state_new",
     "resources:reading_list_tools_icon",
     "//base",
     "//base:i18n",
diff --git a/ios/chrome/browser/ui/reading_list/reading_list_table_view_controller.mm b/ios/chrome/browser/ui/reading_list/reading_list_table_view_controller.mm
index bf883b5..e06a763 100644
--- a/ios/chrome/browser/ui/reading_list/reading_list_table_view_controller.mm
+++ b/ios/chrome/browser/ui/reading_list/reading_list_table_view_controller.mm
@@ -42,8 +42,6 @@
 #endif
 
 namespace {
-// The image to use in the placeholder view while the table is empty.
-NSString* const kEmptyStateImage = @"reading_list_empty_state_new";
 // Types of ListItems used by the reading list UI.
 typedef NS_ENUM(NSInteger, ItemType) {
   ItemTypeHeader = kItemTypeEnumZero,
@@ -1000,23 +998,14 @@
   // elements may be outdated and the layout triggered by this function will
   // generate access non-existing items.
   [self.tableView reloadData];
-  if (base::FeatureList::IsEnabled(kIllustratedEmptyStates)) {
-    UIImage* emptyImage = [UIImage imageNamed:@"reading_list_empty"];
-    NSString* title =
-        l10n_util::GetNSString(IDS_IOS_READING_LIST_NO_ENTRIES_TITLE);
-    NSString* subtitle =
-        l10n_util::GetNSString(IDS_IOS_READING_LIST_NO_ENTRIES_MESSAGE);
-    [self addEmptyTableViewWithImage:emptyImage title:title subtitle:subtitle];
-    self.navigationItem.largeTitleDisplayMode =
-        UINavigationItemLargeTitleDisplayModeNever;
-  } else {
-    UIImage* emptyImage = [[UIImage imageNamed:kEmptyStateImage]
-        imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
-    [self addEmptyTableViewWithAttributedMessage:GetReadingListEmptyMessage()
-                                           image:emptyImage];
-    [self updateEmptyTableViewAccessibilityLabel:
-              GetReadingListEmptyMessageA11yLabel()];
-  }
+  UIImage* emptyImage = [UIImage imageNamed:@"reading_list_empty"];
+  NSString* title =
+      l10n_util::GetNSString(IDS_IOS_READING_LIST_NO_ENTRIES_TITLE);
+  NSString* subtitle =
+      l10n_util::GetNSString(IDS_IOS_READING_LIST_NO_ENTRIES_MESSAGE);
+  [self addEmptyTableViewWithImage:emptyImage title:title subtitle:subtitle];
+  self.navigationItem.largeTitleDisplayMode =
+      UINavigationItemLargeTitleDisplayModeNever;
   self.tableView.alwaysBounceVertical = NO;
   self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
   [self.audience readingListHasItems:NO];
diff --git a/ios/chrome/browser/ui/reading_list/resources/BUILD.gn b/ios/chrome/browser/ui/reading_list/resources/BUILD.gn
index 3aec4c07..931edbb 100644
--- a/ios/chrome/browser/ui/reading_list/resources/BUILD.gn
+++ b/ios/chrome/browser/ui/reading_list/resources/BUILD.gn
@@ -31,14 +31,6 @@
   ]
 }
 
-imageset("reading_list_empty_state_new") {
-  sources = [
-    "reading_list_empty_state_new.imageset/Contents.json",
-    "reading_list_empty_state_new.imageset/reading_list_empty_state_new@2x.png",
-    "reading_list_empty_state_new.imageset/reading_list_empty_state_new@3x.png",
-  ]
-}
-
 imageset("reading_list_tools_icon") {
   sources = [
     "reading_list_tools_icon.imageset/Contents.json",
diff --git a/ios/chrome/browser/ui/reading_list/resources/reading_list_empty_state_new.imageset/Contents.json b/ios/chrome/browser/ui/reading_list/resources/reading_list_empty_state_new.imageset/Contents.json
deleted file mode 100644
index 714582c7..0000000
--- a/ios/chrome/browser/ui/reading_list/resources/reading_list_empty_state_new.imageset/Contents.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-    "images": [
-        {
-            "idiom": "universal",
-            "scale": "2x",
-            "filename": "reading_list_empty_state_new@2x.png"
-        },
-        {
-            "idiom": "universal",
-            "scale": "3x",
-            "filename": "reading_list_empty_state_new@3x.png"
-        }
-    ],
-    "info": {
-        "version": 1,
-        "author": "xcode"
-    }
-}
diff --git a/ios/chrome/browser/ui/reading_list/resources/reading_list_empty_state_new.imageset/reading_list_empty_state_new@2x.png b/ios/chrome/browser/ui/reading_list/resources/reading_list_empty_state_new.imageset/reading_list_empty_state_new@2x.png
deleted file mode 100644
index 2e4b755..0000000
--- a/ios/chrome/browser/ui/reading_list/resources/reading_list_empty_state_new.imageset/reading_list_empty_state_new@2x.png
+++ /dev/null
Binary files differ
diff --git a/ios/chrome/browser/ui/reading_list/resources/reading_list_empty_state_new.imageset/reading_list_empty_state_new@3x.png b/ios/chrome/browser/ui/reading_list/resources/reading_list_empty_state_new.imageset/reading_list_empty_state_new@3x.png
deleted file mode 100644
index d397e205..0000000
--- a/ios/chrome/browser/ui/reading_list/resources/reading_list_empty_state_new.imageset/reading_list_empty_state_new@3x.png
+++ /dev/null
Binary files differ
diff --git a/ios/chrome/browser/ui/send_tab_to_self/DIR_METADATA b/ios/chrome/browser/ui/send_tab_to_self/DIR_METADATA
index 1d90daa..1642232 100644
--- a/ios/chrome/browser/ui/send_tab_to_self/DIR_METADATA
+++ b/ios/chrome/browser/ui/send_tab_to_self/DIR_METADATA
@@ -1,10 +1,10 @@
 # Metadata information for this directory.
 #
 # For more information on DIR_METADATA files, see:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md
 #
 # For the schema of this file, see Metadata message:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto
 
 monorail {
   component: "UI>Browser>Sharing"
diff --git a/ios/chrome/browser/ui/settings/sync/utils/DIR_METADATA b/ios/chrome/browser/ui/settings/sync/utils/DIR_METADATA
index 48d7e48..5099a4e6 100644
--- a/ios/chrome/browser/ui/settings/sync/utils/DIR_METADATA
+++ b/ios/chrome/browser/ui/settings/sync/utils/DIR_METADATA
@@ -1,10 +1,10 @@
 # Metadata information for this directory.
 #
 # For more information on DIR_METADATA files, see:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md
 #
 # For the schema of this file, see Metadata message:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto
 
 monorail {
   component: "Services>Sync"
diff --git a/ios/chrome/browser/ui/webui/gcm/DIR_METADATA b/ios/chrome/browser/ui/webui/gcm/DIR_METADATA
index a6b11371..428baeb 100644
--- a/ios/chrome/browser/ui/webui/gcm/DIR_METADATA
+++ b/ios/chrome/browser/ui/webui/gcm/DIR_METADATA
@@ -1,10 +1,10 @@
 # Metadata information for this directory.
 #
 # For more information on DIR_METADATA files, see:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md
 #
 # For the schema of this file, see Metadata message:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto
 
 monorail {
   component: "Services>CloudMessaging"
diff --git a/ios/chrome/browser/ui/webui/net_export/DIR_METADATA b/ios/chrome/browser/ui/webui/net_export/DIR_METADATA
index 8c78ff5..d3ab625 100644
--- a/ios/chrome/browser/ui/webui/net_export/DIR_METADATA
+++ b/ios/chrome/browser/ui/webui/net_export/DIR_METADATA
@@ -1,10 +1,10 @@
 # Metadata information for this directory.
 #
 # For more information on DIR_METADATA files, see:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md
 #
 # For the schema of this file, see Metadata message:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto
 
 monorail {
   component: "Internals>Network>Logging"
diff --git a/ios/chrome/browser/ui/webui/ntp_tiles_internals_ui.cc b/ios/chrome/browser/ui/webui/ntp_tiles_internals_ui.cc
index 62cb3995..5207b8a4 100644
--- a/ios/chrome/browser/ui/webui/ntp_tiles_internals_ui.cc
+++ b/ios/chrome/browser/ui/webui/ntp_tiles_internals_ui.cc
@@ -76,7 +76,6 @@
     case ntp_tiles::TileSource::CUSTOM_LINKS:
     case ntp_tiles::TileSource::ALLOWLIST:
     case ntp_tiles::TileSource::EXPLORE:
-    case ntp_tiles::TileSource::REPEATABLE_QUERIES_SERVICE:
       return false;
   }
   NOTREACHED();
diff --git a/ios/chrome/browser/unified_consent/DIR_METADATA b/ios/chrome/browser/unified_consent/DIR_METADATA
index 2d69945..8fb6bb1 100644
--- a/ios/chrome/browser/unified_consent/DIR_METADATA
+++ b/ios/chrome/browser/unified_consent/DIR_METADATA
@@ -1,10 +1,10 @@
 # Metadata information for this directory.
 #
 # For more information on DIR_METADATA files, see:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md
 #
 # For the schema of this file, see Metadata message:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto
 
 monorail {
   component: "Services>SignIn"
diff --git a/ios/chrome/browser/update_client/DIR_METADATA b/ios/chrome/browser/update_client/DIR_METADATA
index 65f2ffa..ac9279c5 100644
--- a/ios/chrome/browser/update_client/DIR_METADATA
+++ b/ios/chrome/browser/update_client/DIR_METADATA
@@ -1,10 +1,10 @@
 # Metadata information for this directory.
 #
 # For more information on DIR_METADATA files, see:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md
 #
 # For the schema of this file, see Metadata message:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto
 
 monorail {
   component: "Internals>Installer>Components"
diff --git a/ios/chrome/content_widget_extension/DIR_METADATA b/ios/chrome/content_widget_extension/DIR_METADATA
index 8ebca563..2333fb7e 100644
--- a/ios/chrome/content_widget_extension/DIR_METADATA
+++ b/ios/chrome/content_widget_extension/DIR_METADATA
@@ -1,10 +1,10 @@
 # Metadata information for this directory.
 #
 # For more information on DIR_METADATA files, see:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md
 #
 # For the schema of this file, see Metadata message:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto
 
 monorail {
   component: "UI>Browser>Mobile>TodayView"
diff --git a/ios/chrome/credential_provider_extension/DIR_METADATA b/ios/chrome/credential_provider_extension/DIR_METADATA
index 5189cfd9..d717e7e 100644
--- a/ios/chrome/credential_provider_extension/DIR_METADATA
+++ b/ios/chrome/credential_provider_extension/DIR_METADATA
@@ -1,10 +1,10 @@
 # Metadata information for this directory.
 #
 # For more information on DIR_METADATA files, see:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md
 #
 # For the schema of this file, see Metadata message:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto
 
 monorail {
   component: "UI>Browser>Mobile>Passwords"
diff --git a/ios/chrome/search_widget_extension/DIR_METADATA b/ios/chrome/search_widget_extension/DIR_METADATA
index 8ebca563..2333fb7e 100644
--- a/ios/chrome/search_widget_extension/DIR_METADATA
+++ b/ios/chrome/search_widget_extension/DIR_METADATA
@@ -1,10 +1,10 @@
 # Metadata information for this directory.
 #
 # For more information on DIR_METADATA files, see:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md
 #
 # For the schema of this file, see Metadata message:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto
 
 monorail {
   component: "UI>Browser>Mobile>TodayView"
diff --git a/ios/chrome/share_extension/DIR_METADATA b/ios/chrome/share_extension/DIR_METADATA
index 1d90daa..1642232 100644
--- a/ios/chrome/share_extension/DIR_METADATA
+++ b/ios/chrome/share_extension/DIR_METADATA
@@ -1,10 +1,10 @@
 # Metadata information for this directory.
 #
 # For more information on DIR_METADATA files, see:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md
 #
 # For the schema of this file, see Metadata message:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto
 
 monorail {
   component: "UI>Browser>Sharing"
diff --git a/ios/chrome/test/DIR_METADATA b/ios/chrome/test/DIR_METADATA
index 5bd66c6..3974bbe3 100644
--- a/ios/chrome/test/DIR_METADATA
+++ b/ios/chrome/test/DIR_METADATA
@@ -1,10 +1,10 @@
 # Metadata information for this directory.
 #
 # For more information on DIR_METADATA files, see:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md
 #
 # For the schema of this file, see Metadata message:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto
 
 monorail {
   component: "Test"
diff --git a/ios/chrome/tools/DIR_METADATA b/ios/chrome/tools/DIR_METADATA
index fceb01b1..03fa4c23 100644
--- a/ios/chrome/tools/DIR_METADATA
+++ b/ios/chrome/tools/DIR_METADATA
@@ -1,10 +1,10 @@
 # Metadata information for this directory.
 #
 # For more information on DIR_METADATA files, see:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md
 #
 # For the schema of this file, see Metadata message:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto
 
 monorail {
   component: "Tools"
diff --git a/ios/components/io_thread/DIR_METADATA b/ios/components/io_thread/DIR_METADATA
index 07219257..74e7086 100644
--- a/ios/components/io_thread/DIR_METADATA
+++ b/ios/components/io_thread/DIR_METADATA
@@ -1,10 +1,10 @@
 # Metadata information for this directory.
 #
 # For more information on DIR_METADATA files, see:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md
 #
 # For the schema of this file, see Metadata message:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto
 
 monorail {
   component: "Internals>Network"
diff --git a/ios/net/DIR_METADATA b/ios/net/DIR_METADATA
index 1fd3fb96..eeda617 100644
--- a/ios/net/DIR_METADATA
+++ b/ios/net/DIR_METADATA
@@ -1,10 +1,10 @@
 # Metadata information for this directory.
 #
 # For more information on DIR_METADATA files, see:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md
 #
 # For the schema of this file, see Metadata message:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto
 
 monorail {
   component: "Internals>Services>Network"
diff --git a/ios/net/cookies/DIR_METADATA b/ios/net/cookies/DIR_METADATA
index 1b6e5ed..69f95ee 100644
--- a/ios/net/cookies/DIR_METADATA
+++ b/ios/net/cookies/DIR_METADATA
@@ -1,10 +1,10 @@
 # Metadata information for this directory.
 #
 # For more information on DIR_METADATA files, see:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md
 #
 # For the schema of this file, see Metadata message:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto
 
 monorail {
   component: "Internals>Network>Cookies"
diff --git a/ios/public/provider/chrome/browser/signin/DIR_METADATA b/ios/public/provider/chrome/browser/signin/DIR_METADATA
index 3f72231..2322464 100644
--- a/ios/public/provider/chrome/browser/signin/DIR_METADATA
+++ b/ios/public/provider/chrome/browser/signin/DIR_METADATA
@@ -1,10 +1,10 @@
 # Metadata information for this directory.
 #
 # For more information on DIR_METADATA files, see:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md
 #
 # For the schema of this file, see Metadata message:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto
 
 monorail {
   component: "Services>SignIn"
diff --git a/ios/testing/DIR_METADATA b/ios/testing/DIR_METADATA
index 7edbb0d..662b26d 100644
--- a/ios/testing/DIR_METADATA
+++ b/ios/testing/DIR_METADATA
@@ -1,10 +1,10 @@
 # Metadata information for this directory.
 #
 # For more information on DIR_METADATA files, see:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md
 #
 # For the schema of this file, see Metadata message:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto
 
 monorail {
   component: "Test>iOS"
diff --git a/ios/web/DIR_METADATA b/ios/web/DIR_METADATA
index 78e07203..a3382f716 100644
--- a/ios/web/DIR_METADATA
+++ b/ios/web/DIR_METADATA
@@ -1,10 +1,10 @@
 # Metadata information for this directory.
 #
 # For more information on DIR_METADATA files, see:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md
 #
 # For the schema of this file, see Metadata message:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto
 
 monorail {
   component: "Mobile>iOSWeb"
diff --git a/ios/web/js_messaging/DIR_METADATA b/ios/web/js_messaging/DIR_METADATA
index 7cb36f0..5a6156b 100644
--- a/ios/web/js_messaging/DIR_METADATA
+++ b/ios/web/js_messaging/DIR_METADATA
@@ -1,10 +1,10 @@
 # Metadata information for this directory.
 #
 # For more information on DIR_METADATA files, see:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md
 #
 # For the schema of this file, see Metadata message:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto
 
 monorail {
   component: "Mobile>iOSWeb>ScriptInjections"
diff --git a/ios/web/navigation/DIR_METADATA b/ios/web/navigation/DIR_METADATA
index ca03f3cc..f8a3c4ae0 100644
--- a/ios/web/navigation/DIR_METADATA
+++ b/ios/web/navigation/DIR_METADATA
@@ -1,10 +1,10 @@
 # Metadata information for this directory.
 #
 # For more information on DIR_METADATA files, see:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md
 #
 # For the schema of this file, see Metadata message:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto
 
 monorail {
   component: "UI>Browser>Navigation"
diff --git a/ios/web/session/DIR_METADATA b/ios/web/session/DIR_METADATA
index 4e4b62c0..593ece2e 100644
--- a/ios/web/session/DIR_METADATA
+++ b/ios/web/session/DIR_METADATA
@@ -1,10 +1,10 @@
 # Metadata information for this directory.
 #
 # For more information on DIR_METADATA files, see:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md
 #
 # For the schema of this file, see Metadata message:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto
 
 monorail {
   component: "UI>Browser>Sessions"
diff --git a/ios/web/webui/DIR_METADATA b/ios/web/webui/DIR_METADATA
index cf14990..f0076025 100644
--- a/ios/web/webui/DIR_METADATA
+++ b/ios/web/webui/DIR_METADATA
@@ -1,10 +1,10 @@
 # Metadata information for this directory.
 #
 # For more information on DIR_METADATA files, see:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md
 #
 # For the schema of this file, see Metadata message:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto
 
 monorail {
   component: "UI>Browser>WebUI"
diff --git a/ios/web_view/DIR_METADATA b/ios/web_view/DIR_METADATA
index dff9f117..fe38759 100644
--- a/ios/web_view/DIR_METADATA
+++ b/ios/web_view/DIR_METADATA
@@ -1,10 +1,10 @@
 # Metadata information for this directory.
 #
 # For more information on DIR_METADATA files, see:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/README.md
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md
 #
 # For the schema of this file, see Metadata message:
-#   https://source.chromium.org/chromium/infra/infra/+/master:go/src/infra/tools/dirmd/proto/dir_metadata.proto
+#   https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto
 
 monorail {
   component: "Mobile>iOSWebView"
diff --git a/ios/web_view/shell/shell_view_controller.m b/ios/web_view/shell/shell_view_controller.m
index 33267e9..c417031 100644
--- a/ios/web_view/shell/shell_view_controller.m
+++ b/ios/web_view/shell/shell_view_controller.m
@@ -676,7 +676,7 @@
   // Set a non empty CGRect to avoid DCHECKs that occur when a load happens
   // after state restoration, and before the view hierarchy is laid out for the
   // first time.
-  // https://source.chromium.org/chromium/chromium/src/+/master:ios/web/web_state/ui/crw_web_request_controller.mm;l=518;drc=df887034106ef438611326745a7cd276eedd4953
+  // https://source.chromium.org/chromium/chromium/src/+/main:ios/web/web_state/ui/crw_web_request_controller.mm;l=518;drc=df887034106ef438611326745a7cd276eedd4953
   CGRect frame = CGRectMake(0, 0, 1, 1);
   CWVWebView* webView = [[CWVWebView alloc] initWithFrame:frame
                                             configuration:configuration];
diff --git a/jingle/OWNERS b/jingle/OWNERS
index 4a21a67..d342d13 100644
--- a/jingle/OWNERS
+++ b/jingle/OWNERS
@@ -1,3 +1,3 @@
 set noparent
 sergeyu@chromium.org
-thestig@chromium.org
\ No newline at end of file
+thestig@chromium.org
diff --git a/media/capture/mojom/video_capture_buffer.mojom b/media/capture/mojom/video_capture_buffer.mojom
index e8a70ee..fa28c2ea 100644
--- a/media/capture/mojom/video_capture_buffer.mojom
+++ b/media/capture/mojom/video_capture_buffer.mojom
@@ -19,6 +19,11 @@
   VideoCapturePixelFormat pixel_format;
   gfx.mojom.Size coded_size;
   gfx.mojom.Rect visible_rect;
+  // Some buffer types may be preemtively mapped in the capturer.
+  // In that case a shared memory region is passed to the consumer together
+  // with a GMB handle, and this flag here is passed to notify the consumer
+  // that the region has valid data.
+  bool is_premapped;
   // This field is only optional to work around the issue of native enums
   // not being usable for non-Chromium Mojo clients.
   // TODO(chfremer): Make this non-optional once gfx.mojom.ColorSpace has been
diff --git a/media/capture/video/video_capture_device.h b/media/capture/video/video_capture_device.h
index fdc1197..0ee1782 100644
--- a/media/capture/video/video_capture_device.h
+++ b/media/capture/video/video_capture_device.h
@@ -137,6 +137,12 @@
       int frame_feedback_id;
       std::unique_ptr<HandleProvider> handle_provider;
       std::unique_ptr<ScopedAccessPermission> access_permission;
+
+      // Some buffer types may be preemptively mapped in the capturer if
+      // requested by the consumer.
+      // This is used to notify the client that a shared memory region
+      // associated with the buffer is valid.
+      bool is_premapped = false;
     };
 
     // Result code for calls to ReserveOutputBuffer()
diff --git a/media/capture/video/video_capture_device_client.cc b/media/capture/video/video_capture_device_client.cc
index 2b438db..a677188 100644
--- a/media/capture/video/video_capture_device_client.cc
+++ b/media/capture/video/video_capture_device_client.cc
@@ -629,6 +629,7 @@
   info->coded_size = format.frame_size;
   info->visible_rect = visible_rect;
   info->metadata = metadata;
+  info->is_premapped = buffer.is_premapped;
 
   buffer_pool_->HoldForConsumers(buffer.id, 1);
   receiver_->OnFrameReadyInBuffer(
diff --git a/media/capture/video/win/gpu_memory_buffer_tracker.cc b/media/capture/video/win/gpu_memory_buffer_tracker.cc
index e39f2db..8579ebcc 100644
--- a/media/capture/video/win/gpu_memory_buffer_tracker.cc
+++ b/media/capture/video/win/gpu_memory_buffer_tracker.cc
@@ -101,6 +101,9 @@
     NOTREACHED() << "Failed to create GPU memory buffer";
     return false;
   }
+
+  region_ = base::UnsafeSharedMemoryRegion::Create(GetMemorySizeInBytes());
+
   return true;
 }
 
@@ -137,10 +140,8 @@
   if (!buffer_) {
     return base::UnsafeSharedMemoryRegion();
   }
-  const auto data_size = GetMemorySizeInBytes();
-  if (!region_.IsValid() || region_.GetSize() < data_size) {
-    region_ = base::UnsafeSharedMemoryRegion::Create(data_size);
-  }
+
+  CHECK(region_.IsValid());
 
   if (!gpu::CopyDXGIBufferToShMem(buffer_->GetHandle(), region_.Duplicate(),
                                   d3d_device_.Get(), &staging_texture_)) {
@@ -160,7 +161,9 @@
   if (!EnsureD3DDevice()) {
     return gfx::GpuMemoryBufferHandle();
   }
-  return buffer_->CloneHandle();
+  auto handle = buffer_->CloneHandle();
+  handle.region = region_.Duplicate();
+  return handle;
 }
 
 uint32_t GpuMemoryBufferTracker::GetMemorySizeInBytes() {
diff --git a/media/capture/video/win/video_capture_device_mf_win.cc b/media/capture/video/win/video_capture_device_mf_win.cc
index 090b91b2..7c63775 100644
--- a/media/capture/video/win/video_capture_device_mf_win.cc
+++ b/media/capture/video/win/video_capture_device_mf_win.cc
@@ -1497,9 +1497,15 @@
   auto gmb_handle = capture_buffer.handle_provider->GetGpuMemoryBufferHandle();
   hr = CopyTextureToGpuMemoryBuffer(texture, gmb_handle.dxgi_handle.Get());
 
+  capture_buffer.is_premapped = false;
   if (last_feedback_.require_mapped_frame) {
-    gmb_handle.region =
-        capture_buffer.handle_provider->DuplicateAsUnsafeRegion();
+    // Only a flag on the Buffer is set here; the region itself isn't passed
+    // anywhere because it was passed when the buffer was created.
+    // Now the flag would tell the consumer that the region contains actual
+    // frame data.
+    if (capture_buffer.handle_provider->DuplicateAsUnsafeRegion().IsValid()) {
+      capture_buffer.is_premapped = true;
+    }
   }
 
   if (FAILED(hr)) {
diff --git a/mojo/public/tools/mojom/mojom/generate/template_expander.py b/mojo/public/tools/mojom/mojom/generate/template_expander.py
index 8d9e26f..0da9005 100644
--- a/mojo/public/tools/mojom/mojom/generate/template_expander.py
+++ b/mojo/public/tools/mojom/mojom/generate/template_expander.py
@@ -79,5 +79,4 @@
         output_dir, "%s.zip" % generator.GetTemplatePrefix()),
                                 extensions=["tmpl"],
                                 zip="stored",
-                                py_compile=sys.version_info.major < 3,
                                 ignore_errors=False)
diff --git a/native_client_sdk/OWNERS b/native_client_sdk/OWNERS
index 1d9fa29..2de7111 100644
--- a/native_client_sdk/OWNERS
+++ b/native_client_sdk/OWNERS
@@ -1,4 +1,4 @@
 set noparent
 binji@chromium.org
 bradnelson@chromium.org
-sbc@chromium.org
\ No newline at end of file
+sbc@chromium.org
diff --git a/native_client_sdk/src/tools/create_nmf.py b/native_client_sdk/src/tools/create_nmf.py
index 7139444..cc3f7cb8 100755
--- a/native_client_sdk/src/tools/create_nmf.py
+++ b/native_client_sdk/src/tools/create_nmf.py
@@ -132,7 +132,7 @@
   """Wrap elf.ParseElfHeader to return raise this module's Error on failure."""
   try:
     return elf.ParseElfHeader(path)
-  except elf.Error, e:
+  except elf.Error as e:
     raise Error(str(e))
 
 
@@ -248,14 +248,14 @@
                                             self.lib_path)
     except get_shared_deps.NoObjdumpError:
       raise Error('No objdump executable found (see --help for more info)')
-    except get_shared_deps.Error, e:
+    except get_shared_deps.Error as e:
       raise Error(str(e))
 
     self.needed = {}
 
     # all_files is a dictionary mapping filename to architecture. self.needed
     # should be a dictionary of filename to ArchFile.
-    for filename, arch in all_files.iteritems():
+    for filename, arch in all_files.items():
       name = os.path.basename(filename)
       self.needed[filename] = ArchFile(name=name, path=filename, arch=arch)
 
@@ -286,7 +286,7 @@
         main_dir = ''
       arch_to_main_dir[arch] = main_dir
 
-    for arch_file in self.needed.itervalues():
+    for arch_file in self.needed.values():
       prefix = ''
       if DirectoryTreeContainsFile(self.nmf_root, arch_file.path):
         # This file is already in the nmf_root tree, so it does not need to be
@@ -317,7 +317,7 @@
       destination_dir: The destination directory for staging the dependencies
     """
     assert self.needed is not None
-    for arch_file in self.needed.itervalues():
+    for arch_file in self.needed.values():
       source = arch_file.path
       destination = os.path.join(destination_dir, arch_file.url)
 
@@ -377,7 +377,7 @@
                                      url=url))
                       for key, arch, url in self.extra_files]
 
-    manifest_items = needed.items() + extra_files_kv
+    manifest_items = list(needed.items()) + extra_files_kv
 
     # Add dynamic loader to the program section.
     for need, archinfo in manifest_items:
@@ -703,7 +703,7 @@
 if __name__ == '__main__':
   try:
     rtn = main(sys.argv[1:])
-  except Error, e:
+  except Error as e:
     sys.stderr.write('%s: %s\n' % (os.path.basename(__file__), e))
     rtn = 1
   except KeyboardInterrupt:
diff --git a/native_client_sdk/src/tools/getos.py b/native_client_sdk/src/tools/getos.py
index c5fe5c2..5324c8ed 100755
--- a/native_client_sdk/src/tools/getos.py
+++ b/native_client_sdk/src/tools/getos.py
@@ -10,6 +10,8 @@
 Toolchain to invoke.
 """
 
+from __future__ import print_function
+
 import argparse
 import os
 import re
@@ -263,7 +265,7 @@
     out = platform
 
   if out:
-    print out
+    print(out)
   return 0
 
 
diff --git a/native_client_sdk/src/tools/lib/elf.py b/native_client_sdk/src/tools/lib/elf.py
index 84519de..c860a5a6 100644
--- a/native_client_sdk/src/tools/lib/elf.py
+++ b/native_client_sdk/src/tools/lib/elf.py
@@ -37,7 +37,7 @@
     raise Error("error parsing elf header: %s" % path)
   e_ident, _, e_machine = header[:3]
 
-  elf_magic = '\x7fELF'
+  elf_magic = b'\x7fELF'
   if e_ident[:4] != elf_magic:
     raise Error('Not a valid NaCl executable: %s' % path)
 
diff --git a/native_client_sdk/src/tools/lib/get_shared_deps.py b/native_client_sdk/src/tools/lib/get_shared_deps.py
index 5325df9e..886936f 100644
--- a/native_client_sdk/src/tools/lib/get_shared_deps.py
+++ b/native_client_sdk/src/tools/lib/get_shared_deps.py
@@ -89,7 +89,7 @@
 def _GetNeededDynamic(main_files, objdump, lib_path):
   examined = set()
   all_files, unexamined = GleanFromObjdump(main_files, None, objdump, lib_path)
-  for arch in all_files.itervalues():
+  for arch in all_files.values():
     if unexamined:
       if arch == 'arm':
         unexamined.add((LOADER_ARM, arch))
@@ -106,7 +106,7 @@
 
     # Call GleanFromObjdump() for each architecture.
     needed = set()
-    for arch, files in files_to_examine.iteritems():
+    for arch, files in files_to_examine.items():
       new_files, new_needed = GleanFromObjdump(files, arch, objdump, lib_path)
       all_files.update(new_files)
       needed |= new_needed
@@ -117,7 +117,7 @@
   # With the runnable-ld.so scheme we have today, the proper name of
   # the dynamic linker should be excluded from the list of files.
   ldso = [LD_NACL_MAP[arch] for arch in set(OBJDUMP_ARCH_MAP.values())]
-  for filename, arch in all_files.items():
+  for filename, arch in list(all_files.items()):
     name = os.path.basename(filename)
     if name in ldso:
       del all_files[filename]
@@ -160,6 +160,7 @@
   env = {'LANG': 'en_US.UTF-8'}
   proc = subprocess.Popen(cmd, stdout=subprocess.PIPE,
                           stderr=subprocess.PIPE, bufsize=-1,
+                          universal_newlines=True,
                           env=env)
 
   input_info = {}
diff --git a/native_client_sdk/src/tools/oshelpers.py b/native_client_sdk/src/tools/oshelpers.py
index cd05cff..b5541bca 100755
--- a/native_client_sdk/src/tools/oshelpers.py
+++ b/native_client_sdk/src/tools/oshelpers.py
@@ -454,7 +454,7 @@
           zip_info.date_time = time.localtime(st.st_mtime)[0:6]
           zip_info.compress_type = zip_stream.compression
           zip_info.flag_bits = 0x00
-          zip_info.external_attr = (st[0] & 0xFFFF) << 16L
+          zip_info.external_attr = (st[0] & 0xFFFF) << 16
           zip_info.CRC = 0
           zip_info.compress_size = 0
           zip_info.file_size = 0
diff --git a/net/test/android/javatests/src/org/chromium/net/test/OWNERS b/net/test/android/javatests/src/org/chromium/net/test/OWNERS
index 89442abe..8f094e0 100644
--- a/net/test/android/javatests/src/org/chromium/net/test/OWNERS
+++ b/net/test/android/javatests/src/org/chromium/net/test/OWNERS
@@ -1,2 +1,2 @@
 per-file *.aidl=set noparent
-per-file *.aidl=file://ipc/SECURITY_OWNERS
\ No newline at end of file
+per-file *.aidl=file://ipc/SECURITY_OWNERS
diff --git a/pdf/BUILD.gn b/pdf/BUILD.gn
index f789bb4..94c8f6c 100644
--- a/pdf/BUILD.gn
+++ b/pdf/BUILD.gn
@@ -83,13 +83,7 @@
   }
 
   source_set("internal") {
-    visibility = [
-      ":*",
-
-      # TODO(crbug.com/1158929): Eliminate chrome_find_request_manager_browsertest.cc's dependence
-      # on document_loader_impl.h.
-      "//chrome/test:browser_tests",
-    ]
+    visibility = [ ":*" ]
 
     sources = [
       "accessibility.cc",
@@ -337,6 +331,7 @@
       ":internal",
       ":ppapi_migration",
       "//base",
+      "//base:i18n",
       "//cc/paint",
       "//content/public/renderer",
       "//gin",
diff --git a/pdf/pdf_view_web_plugin.cc b/pdf/pdf_view_web_plugin.cc
index 855a5427..59247a8 100644
--- a/pdf/pdf_view_web_plugin.cc
+++ b/pdf/pdf_view_web_plugin.cc
@@ -12,6 +12,7 @@
 #include <vector>
 
 #include "base/check_op.h"
+#include "base/i18n/string_search.h"
 #include "base/metrics/user_metrics.h"
 #include "base/metrics/user_metrics_action.h"
 #include "base/no_destructor.h"
@@ -400,7 +401,14 @@
 PdfViewWebPlugin::SearchString(const char16_t* string,
                                const char16_t* term,
                                bool case_sensitive) {
-  return {};
+  base::i18n::RepeatingStringSearch searcher(
+      /*find_this=*/term, /*in_this=*/string, case_sensitive);
+  std::vector<SearchStringResult> results;
+  int match_index;
+  int match_length;
+  while (searcher.NextMatchResult(match_index, match_length))
+    results.push_back({.start_index = match_index, .length = match_length});
+  return results;
 }
 
 pp::Instance* PdfViewWebPlugin::GetPluginInstance() {
diff --git a/pdf/pdf_view_web_plugin_unittest.cc b/pdf/pdf_view_web_plugin_unittest.cc
index 7606edb..8fa4252 100644
--- a/pdf/pdf_view_web_plugin_unittest.cc
+++ b/pdf/pdf_view_web_plugin_unittest.cc
@@ -12,6 +12,7 @@
 #include "cc/test/pixel_test_utils.h"
 #include "pdf/ppapi_migration/bitmap.h"
 #include "pdf/test/test_helpers.h"
+#include "testing/gmock/include/gmock/gmock-matchers.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/blink/public/platform/web_string.h"
@@ -25,6 +26,8 @@
 #include "ui/gfx/geometry/size.h"
 #include "ui/gfx/skia_util.h"
 
+using testing::Pointwise;
+
 namespace chrome_pdf {
 
 namespace {
@@ -51,6 +54,12 @@
   gfx::Rect paint_rect;
 };
 
+MATCHER(SearchStringResultEq, "") {
+  PDFEngine::Client::SearchStringResult l = std::get<0>(arg);
+  PDFEngine::Client::SearchStringResult r = std::get<1>(arg);
+  return l.start_index == r.start_index && l.length == r.length;
+}
+
 // Generates the expected `SkBitmap` with `paint_color` filled in the expected
 // clipped area and `kDefaultColor` as the background color.
 SkBitmap GenerateExpectedBitmapForPaint(float device_scale,
@@ -321,4 +330,25 @@
             wrapper_ptr_->widget_text_input_type());
 }
 
+TEST_F(PdfViewWebPluginTest, SearchString) {
+  static constexpr char16_t kPattern[] = u"fox";
+  static constexpr char16_t kTarget[] =
+      u"The quick brown fox jumped over the lazy Fox";
+
+  {
+    static constexpr PDFEngine::Client::SearchStringResult kExpectation[] = {
+        {16, 3}};
+    EXPECT_THAT(
+        plugin_->SearchString(kTarget, kPattern, /*case_sensitive=*/true),
+        Pointwise(SearchStringResultEq(), kExpectation));
+  }
+  {
+    static constexpr PDFEngine::Client::SearchStringResult kExpectation[] = {
+        {16, 3}, {41, 3}};
+    EXPECT_THAT(
+        plugin_->SearchString(kTarget, kPattern, /*case_sensitive=*/false),
+        Pointwise(SearchStringResultEq(), kExpectation));
+  }
+}
+
 }  // namespace chrome_pdf
diff --git a/rlz/OWNERS b/rlz/OWNERS
index 144a99b5..44bdf48 100644
--- a/rlz/OWNERS
+++ b/rlz/OWNERS
@@ -1,3 +1,3 @@
 set noparent
 rogerta@chromium.org
-sdefresne@chromium.org
\ No newline at end of file
+sdefresne@chromium.org
diff --git a/skia/config/SkUserConfig.h b/skia/config/SkUserConfig.h
index 3f4298ec..5ae5bd7 100644
--- a/skia/config/SkUserConfig.h
+++ b/skia/config/SkUserConfig.h
@@ -213,9 +213,6 @@
 
 #define SK_SUPPORT_LEGACY_DITHER
 
-#define SK_LEGACY_FLOAT_RSQRT
-
-#define SK_RASTER_PIPELINE_LEGACY_RCP_RSQRT
 
 ///////////////////////// Imported from BUILD.gn and skia_common.gypi
 
diff --git a/sql/sqlite_features_unittest.cc b/sql/sqlite_features_unittest.cc
index 74a6fd8..a84a51b 100644
--- a/sql/sqlite_features_unittest.cc
+++ b/sql/sqlite_features_unittest.cc
@@ -297,47 +297,6 @@
   EXPECT_EQ(7, s.ColumnInt(0));
 }
 
-TEST_F(SQLiteFeaturesTest, PrintfPrecision_WidthAboveLimit) {
-  sql::Statement statement(
-      db_.GetUniqueStatement("SELECT printf('%1001d', 1)"));
-  ASSERT_TRUE(statement.Step());
-  EXPECT_EQ(std::string(999, ' ') + "1", statement.ColumnString(0));
-}
-
-TEST_F(SQLiteFeaturesTest, PrintfPrecision_WidthAtLimit) {
-  sql::Statement statement(
-      db_.GetUniqueStatement("SELECT printf('%1000d', 1)"));
-  ASSERT_TRUE(statement.Step());
-  EXPECT_EQ(std::string(999, ' ') + "1", statement.ColumnString(0));
-}
-
-TEST_F(SQLiteFeaturesTest, PrintfPrecision_WidthBelowLimit) {
-  sql::Statement statement(db_.GetUniqueStatement("SELECT printf('%999d', 1)"));
-  ASSERT_TRUE(statement.Step());
-  EXPECT_EQ(std::string(998, ' ') + "1", statement.ColumnString(0));
-}
-
-TEST_F(SQLiteFeaturesTest, PrintfPrecision_PrecisionAboveLimit) {
-  sql::Statement statement(
-      db_.GetUniqueStatement("SELECT printf('%.1001d', 1)"));
-  ASSERT_TRUE(statement.Step());
-  EXPECT_EQ(std::string(999, '0') + "1", statement.ColumnString(0));
-}
-
-TEST_F(SQLiteFeaturesTest, PrintfPrecision_PrecisionAtLimit) {
-  sql::Statement statement(
-      db_.GetUniqueStatement("SELECT printf('%.1000d', 1)"));
-  ASSERT_TRUE(statement.Step());
-  EXPECT_EQ(std::string(999, '0') + "1", statement.ColumnString(0));
-}
-
-TEST_F(SQLiteFeaturesTest, PrintfPrecision_PrecisionBelowLimit) {
-  sql::Statement statement(
-      db_.GetUniqueStatement("SELECT printf('%.999d', 1)"));
-  ASSERT_TRUE(statement.Step());
-  EXPECT_EQ(std::string(998, '0') + "1", statement.ColumnString(0));
-}
-
 #if defined(OS_MAC)
 // If a database file is marked to be excluded from Time Machine, verify that
 // journal files are also excluded.
diff --git a/storage/browser/quota/quota_database.cc b/storage/browser/quota/quota_database.cc
index a331757..4bc58da 100644
--- a/storage/browser/quota/quota_database.cc
+++ b/storage/browser/quota/quota_database.cc
@@ -93,20 +93,22 @@
 
 QuotaDatabase::BucketTableEntry::BucketTableEntry() = default;
 
+QuotaDatabase::BucketTableEntry::~BucketTableEntry() = default;
+
 QuotaDatabase::BucketTableEntry::BucketTableEntry(const BucketTableEntry&) =
     default;
 QuotaDatabase::BucketTableEntry& QuotaDatabase::BucketTableEntry::operator=(
     const QuotaDatabase::BucketTableEntry&) = default;
 
 QuotaDatabase::BucketTableEntry::BucketTableEntry(
-    const int64_t bucket_id,
+    BucketId bucket_id,
     url::Origin origin,
     StorageType type,
     std::string name,
     int use_count,
     const base::Time& last_accessed,
     const base::Time& last_modified)
-    : bucket_id(bucket_id),
+    : bucket_id(std::move(bucket_id)),
       origin(std::move(origin)),
       type(type),
       name(std::move(name)),
@@ -291,9 +293,10 @@
   return true;
 }
 
-bool QuotaDatabase::SetBucketLastAccessTime(const int64_t bucket_id,
+bool QuotaDatabase::SetBucketLastAccessTime(const BucketId bucket_id,
                                             base::Time last_accessed) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+  DCHECK(!bucket_id.is_null());
   if (!LazyOpen(true))
     return false;
 
@@ -307,7 +310,7 @@
   sql::Statement statement(db_->GetCachedStatement(SQL_FROM_HERE, kSql));
   statement.BindInt(0, entry.use_count);
   statement.BindTime(1, last_accessed);
-  statement.BindInt64(2, bucket_id);
+  statement.BindInt64(2, bucket_id.value());
 
   if (!statement.Run())
     return false;
@@ -365,9 +368,10 @@
   return true;
 }
 
-bool QuotaDatabase::SetBucketLastModifiedTime(const int64_t bucket_id,
+bool QuotaDatabase::SetBucketLastModifiedTime(const BucketId bucket_id,
                                               base::Time last_modified) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+  DCHECK(!bucket_id.is_null());
   if (!LazyOpen(true))
     return false;
 
@@ -379,7 +383,7 @@
       "UPDATE buckets SET last_modified = ? WHERE id = ?";
   sql::Statement statement(db_->GetCachedStatement(SQL_FROM_HERE, kSql));
   statement.BindTime(0, last_modified);
-  statement.BindInt64(1, bucket_id);
+  statement.BindInt64(1, bucket_id.value());
 
   if (!statement.Run())
     return false;
@@ -517,15 +521,16 @@
     return false;
 
   // TODO(crbug.com/889590): Use helper for url::Origin creation from string.
-  *entry = BucketTableEntry(statement.ColumnInt64(0), origin, type,
+  *entry = BucketTableEntry(BucketId(statement.ColumnInt64(0)), origin, type,
                             kDefaultBucket, statement.ColumnInt(1),
                             statement.ColumnTime(2), statement.ColumnTime(3));
   return true;
 }
 
-bool QuotaDatabase::GetBucketInfo(const int64_t bucket_id,
+bool QuotaDatabase::GetBucketInfo(const BucketId bucket_id,
                                   QuotaDatabase::BucketTableEntry* entry) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+  DCHECK(!bucket_id.is_null());
   if (!LazyOpen(false))
     return false;
 
@@ -542,7 +547,7 @@
         "WHERE id = ?";
   // clang-format on
   sql::Statement statement(db_->GetCachedStatement(SQL_FROM_HERE, kSql));
-  statement.BindInt64(0, bucket_id);
+  statement.BindInt64(0, bucket_id.value());
 
   if (!statement.Step())
     return false;
@@ -595,14 +600,15 @@
   return true;
 }
 
-bool QuotaDatabase::DeleteBucketInfo(const int64_t bucket_id) {
+bool QuotaDatabase::DeleteBucketInfo(const BucketId bucket_id) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+  DCHECK(!bucket_id.is_null());
   if (!LazyOpen(false))
     return false;
 
   static constexpr char kSql[] = "DELETE FROM buckets WHERE id = ?";
   sql::Statement statement(db_->GetCachedStatement(SQL_FROM_HERE, kSql));
-  statement.BindInt64(0, bucket_id);
+  statement.BindInt64(0, bucket_id.value());
 
   if (!statement.Run())
     return false;
@@ -655,7 +661,7 @@
 bool QuotaDatabase::GetLRUBucket(StorageType type,
                                  const std::set<url::Origin>& exceptions,
                                  SpecialStoragePolicy* special_storage_policy,
-                                 absl::optional<int64_t>* bucket_id) {
+                                 absl::optional<BucketId>* bucket_id) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   DCHECK(bucket_id);
   if (!LazyOpen(false))
@@ -687,7 +693,7 @@
       continue;
     }
 
-    *bucket_id = read_bucket_id;
+    *bucket_id = BucketId(read_bucket_id);
     return true;
   }
 
@@ -727,7 +733,7 @@
 }
 
 bool QuotaDatabase::GetBucketsModifiedBetween(StorageType type,
-                                              std::set<int64_t>* bucket_ids,
+                                              std::set<BucketId>* bucket_ids,
                                               base::Time begin,
                                               base::Time end) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
@@ -750,7 +756,7 @@
 
   bucket_ids->clear();
   while (statement.Step())
-    bucket_ids->insert(statement.ColumnInt64(0));
+    bucket_ids->insert(BucketId(statement.ColumnInt64(0)));
 
   return statement.Succeeded();
 }
@@ -1009,7 +1015,7 @@
   sql::Statement statement(db_->GetCachedStatement(SQL_FROM_HERE, kSql));
 
   while (statement.Step()) {
-    BucketTableEntry entry(statement.ColumnInt64(0),
+    BucketTableEntry entry(BucketId(statement.ColumnInt64(0)),
                            url::Origin::Create(GURL(statement.ColumnString(1))),
                            static_cast<StorageType>(statement.ColumnInt(2)),
                            statement.ColumnString(3), statement.ColumnInt(4),
diff --git a/storage/browser/quota/quota_database.h b/storage/browser/quota/quota_database.h
index 188dffb1..9fb7b50 100644
--- a/storage/browser/quota/quota_database.h
+++ b/storage/browser/quota/quota_database.h
@@ -46,18 +46,19 @@
  public:
   struct COMPONENT_EXPORT(STORAGE_BROWSER) BucketTableEntry {
     BucketTableEntry();
-    BucketTableEntry(int64_t bucket_id,
+    BucketTableEntry(BucketId bucket_id,
                      url::Origin origin,
                      blink::mojom::StorageType type,
                      std::string name,
                      int use_count,
                      const base::Time& last_accessed,
                      const base::Time& last_modified);
+    ~BucketTableEntry();
 
     BucketTableEntry(const BucketTableEntry&);
     BucketTableEntry& operator=(const BucketTableEntry&);
 
-    int64_t bucket_id = -1;
+    BucketId bucket_id;
     url::Origin origin;
     blink::mojom::StorageType type = blink::mojom::StorageType::kUnknown;
     std::string name;
@@ -102,7 +103,7 @@
 
   // Called by QuotaClient implementers to update when the bucket was last
   // accessed.
-  bool SetBucketLastAccessTime(int64_t bucket_id, base::Time last_accessed);
+  bool SetBucketLastAccessTime(BucketId bucket_id, base::Time last_accessed);
 
   // TODO(crbug.com/1202167): Remove once all usages have updated to use
   // SetBucketLastModifiedTime.
@@ -112,7 +113,7 @@
 
   // Called by QuotaClient implementers to update when the bucket was last
   // modified.
-  bool SetBucketLastModifiedTime(int64_t bucket_id, base::Time last_modified);
+  bool SetBucketLastModifiedTime(BucketId bucket_id, base::Time last_modified);
 
   bool GetOriginLastEvictionTime(const url::Origin& origin,
                                  blink::mojom::StorageType type,
@@ -141,7 +142,7 @@
 
   // Gets the table entry for `bucket`. Returns whether the record for an
   // origin bucket can be found.
-  bool GetBucketInfo(int64_t bucket_id, BucketTableEntry* entry);
+  bool GetBucketInfo(BucketId bucket_id, BucketTableEntry* entry);
 
   // TODO(crbug.com/1202167): Remove once all usages have been updated to use
   // DeleteBucketInfo. Deletes the default bucket for `origin`.
@@ -149,7 +150,7 @@
                         blink::mojom::StorageType type);
 
   // Deletes the specified bucket.
-  bool DeleteBucketInfo(int64_t bucket_id);
+  bool DeleteBucketInfo(BucketId bucket_id);
 
   // TODO(crbug.com/1202167): Remove once all usages have been updated to use
   // GetLRUBucket. Sets `origin` to the least recently used origin of origins
@@ -169,7 +170,7 @@
   bool GetLRUBucket(blink::mojom::StorageType type,
                     const std::set<url::Origin>& exceptions,
                     SpecialStoragePolicy* special_storage_policy,
-                    absl::optional<int64_t>* bucket_id);
+                    absl::optional<BucketId>* bucket_id);
 
   // TODO(crbug.com/1202167): Remove once all usages have been updated to use
   // GetBucketsModifiedBetween. Populates `origins` with the ones that have had
@@ -183,7 +184,7 @@
   // Populates `bucket_ids` with the buckets that have been modified since the
   // `begin` and until the `end`. Returns whether the operation succeeded.
   bool GetBucketsModifiedBetween(blink::mojom::StorageType type,
-                                 std::set<int64_t>* bucket_ids,
+                                 std::set<BucketId>* bucket_ids,
                                  base::Time begin,
                                  base::Time end);
 
diff --git a/storage/browser/quota/quota_database_unittest.cc b/storage/browser/quota/quota_database_unittest.cc
index bce6cd9..dcf5973d 100644
--- a/storage/browser/quota/quota_database_unittest.cc
+++ b/storage/browser/quota/quota_database_unittest.cc
@@ -134,7 +134,7 @@
           quota_database->db_->GetCachedStatement(SQL_FROM_HERE, kSql));
       ASSERT_TRUE(statement.is_valid());
 
-      statement.BindInt64(0, entry.bucket_id);
+      statement.BindInt64(0, entry.bucket_id.value());
       statement.BindString(1, entry.origin.GetURL().spec());
       statement.BindInt(2, static_cast<int>(entry.type));
       statement.BindString(3, entry.name);
@@ -317,17 +317,21 @@
   EXPECT_TRUE(LazyOpen(&db, /*create_if_needed=*/true));
 
   std::set<url::Origin> exceptions;
-  absl::optional<int64_t> bucket_id;
+  absl::optional<BucketId> bucket_id;
   EXPECT_TRUE(db.GetLRUBucket(kTemp, exceptions, nullptr, &bucket_id));
   EXPECT_FALSE(bucket_id.has_value());
 
   // Insert bucket entries into BucketTable.
-  base::Time now(base::Time::Now());
+  base::Time now = base::Time::Now();
   using Entry = QuotaDatabase::BucketTableEntry;
-  Entry bucket1 = Entry(0, ToOrigin("http://a/"), kTemp, "A", 99, now, now);
-  Entry bucket2 = Entry(1, ToOrigin("http://b/"), kTemp, "B", 0, now, now);
-  Entry bucket3 = Entry(2, ToOrigin("http://c/"), kTemp, "C", 1, now, now);
-  Entry bucket4 = Entry(3, ToOrigin("http://d/"), kPerm, "D", 5, now, now);
+  Entry bucket1 = Entry(BucketId(1), ToOrigin("http://example-a/"), kTemp,
+                        "bucket_a", 99, now, now);
+  Entry bucket2 = Entry(BucketId(2), ToOrigin("http://example-b/"), kTemp,
+                        "bucket_b", 0, now, now);
+  Entry bucket3 = Entry(BucketId(3), ToOrigin("http://example-c/"), kTemp,
+                        "bucket_c", 1, now, now);
+  Entry bucket4 = Entry(BucketId(4), ToOrigin("http://example-d/"), kPerm,
+                        "bucket_d", 5, now, now);
   Entry kTableEntries[] = {bucket1, bucket2, bucket3, bucket4};
   AssignBucketTable(&db, kTableEntries);
 
@@ -484,18 +488,22 @@
   QuotaDatabase db(use_in_memory_db() ? base::FilePath() : DbPath());
   EXPECT_TRUE(LazyOpen(&db, /*create_if_needed=*/true));
 
-  std::set<int64_t> bucket_ids;
+  std::set<BucketId> bucket_ids;
   EXPECT_TRUE(db.GetBucketsModifiedBetween(kTemp, &bucket_ids, base::Time(),
                                            base::Time::Max()));
   EXPECT_TRUE(bucket_ids.empty());
 
   // Insert bucket entries into BucketTable.
-  base::Time now(base::Time::Now());
+  base::Time now = base::Time::Now();
   using Entry = QuotaDatabase::BucketTableEntry;
-  Entry bucket1 = Entry(0, ToOrigin("http://a/"), kTemp, "A", 0, now, now);
-  Entry bucket2 = Entry(1, ToOrigin("http://b/"), kTemp, "B", 0, now, now);
-  Entry bucket3 = Entry(2, ToOrigin("http://c/"), kTemp, "C", 0, now, now);
-  Entry bucket4 = Entry(3, ToOrigin("http://d/"), kPerm, "D", 0, now, now);
+  Entry bucket1 = Entry(BucketId(1), ToOrigin("http://example-a/"), kTemp,
+                        "bucket_a", 0, now, now);
+  Entry bucket2 = Entry(BucketId(2), ToOrigin("http://example-b/"), kTemp,
+                        "bucket_b", 0, now, now);
+  Entry bucket3 = Entry(BucketId(3), ToOrigin("http://example-c/"), kTemp,
+                        "bucket_c", 0, now, now);
+  Entry bucket4 = Entry(BucketId(4), ToOrigin("http://example-d/"), kPerm,
+                        "bucket_d", 0, now, now);
   Entry kTableEntries[] = {bucket1, bucket2, bucket3, bucket4};
   AssignBucketTable(&db, kTableEntries);
 
@@ -662,13 +670,15 @@
 }
 
 TEST_P(QuotaDatabaseTest, DumpBucketTable) {
-  base::Time now(base::Time::Now());
+  base::Time now = base::Time::Now();
   using Entry = QuotaDatabase::BucketTableEntry;
   Entry kTableEntries[] = {
-      Entry(0, ToOrigin("http://go/"), kTemp, kDefaultBucket, 2147483647, now,
+      Entry(BucketId(1), ToOrigin("http://go/"), kTemp, kDefaultBucket,
+            2147483647, now, now),
+      Entry(BucketId(2), ToOrigin("http://oo/"), kTemp, kDefaultBucket, 0, now,
             now),
-      Entry(1, ToOrigin("http://oo/"), kTemp, kDefaultBucket, 0, now, now),
-      Entry(2, ToOrigin("http://gle/"), kTemp, kDefaultBucket, 1, now, now),
+      Entry(BucketId(3), ToOrigin("http://gle/"), kTemp, kDefaultBucket, 1, now,
+            now),
   };
 
   QuotaDatabase db(use_in_memory_db() ? base::FilePath() : DbPath());
@@ -685,8 +695,8 @@
 TEST_P(QuotaDatabaseTest, GetOriginInfo) {
   const url::Origin kOrigin = ToOrigin("http://go/");
   using Entry = QuotaDatabase::BucketTableEntry;
-  Entry kTableEntries[] = {Entry(0, kOrigin, kTemp, kDefaultBucket, 100,
-                                 base::Time(), base::Time())};
+  Entry kTableEntries[] = {Entry(BucketId(1), kOrigin, kTemp, kDefaultBucket,
+                                 100, base::Time(), base::Time())};
 
   QuotaDatabase db(use_in_memory_db() ? base::FilePath() : DbPath());
   EXPECT_TRUE(LazyOpen(&db, /*create_if_needed=*/true));
@@ -712,8 +722,8 @@
 
 TEST_P(QuotaDatabaseTest, GetBucketInfo) {
   using Entry = QuotaDatabase::BucketTableEntry;
-  Entry kTableEntries[] = {Entry(123, ToOrigin("http://go/"), kTemp,
-                                 "TestBucket", 100, base::Time(),
+  Entry kTableEntries[] = {Entry(BucketId(123), ToOrigin("http://go/"), kTemp,
+                                 "test_bucket", 100, base::Time(),
                                  base::Time())};
 
   QuotaDatabase db(use_in_memory_db() ? base::FilePath() : DbPath());
@@ -734,7 +744,7 @@
 
   {
     Entry entry;
-    EXPECT_FALSE(db.GetBucketInfo(456, &entry));
+    EXPECT_FALSE(db.GetBucketInfo(BucketId(456), &entry));
   }
 }
 
diff --git a/testing/scripts/representative_perf_test_data/OWNERS b/testing/scripts/representative_perf_test_data/OWNERS
index 8cb0bf5c..2b84d944 100644
--- a/testing/scripts/representative_perf_test_data/OWNERS
+++ b/testing/scripts/representative_perf_test_data/OWNERS
@@ -1,2 +1,2 @@
 behdadb@chromium.org
-sadrul@chromium.org
\ No newline at end of file
+sadrul@chromium.org
diff --git a/testing/variations/OWNERS b/testing/variations/OWNERS
index 289b66c..46e02ba5 100644
--- a/testing/variations/OWNERS
+++ b/testing/variations/OWNERS
@@ -1,4 +1,4 @@
 file://base/metrics/OWNERS
 
 # Changes to the testing config can be approved by any committer.
-per-file fieldtrial_testing_config.json=*
\ No newline at end of file
+per-file fieldtrial_testing_config.json=*
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json
index 5982076..0a42b0a6 100644
--- a/testing/variations/fieldtrial_testing_config.json
+++ b/testing/variations/fieldtrial_testing_config.json
@@ -4120,6 +4120,29 @@
             ]
         }
     ],
+    "IPH_ProfileSwitch": [
+        {
+            "platforms": [
+                "linux",
+                "mac",
+                "windows"
+            ],
+            "experiments": [
+                {
+                    "name": "Enabled",
+                    "params": {
+                        "availability": "any",
+                        "event_trigger": "name:profile_switch_trigger;comparator:==0;window:360;storage:360",
+                        "event_used": "name:profile_menu_shown;comparator:==0;window:360;storage:360",
+                        "session_rate": "any"
+                    },
+                    "enable_features": [
+                        "IPH_ProfileSwitch"
+                    ]
+                }
+            ]
+        }
+    ],
     "IdentifiabilityStudy": [
         {
             "platforms": [
@@ -4185,6 +4208,21 @@
             ]
         }
     ],
+    "IncognitoBiometricReauth": [
+        {
+            "platforms": [
+                "ios"
+            ],
+            "experiments": [
+                {
+                    "name": "Enabled",
+                    "enable_features": [
+                        "enable-incognito-authentication-ios"
+                    ]
+                }
+            ]
+        }
+    ],
     "IncompatibleApplicationsWarning": [
         {
             "platforms": [
@@ -4987,6 +5025,21 @@
             ]
         }
     ],
+    "NearbySharingChildAccounts": [
+        {
+            "platforms": [
+                "chromeos"
+            ],
+            "experiments": [
+                {
+                    "name": "Enabled",
+                    "enable_features": [
+                        "NearbySharingChildAccounts"
+                    ]
+                }
+            ]
+        }
+    ],
     "NetworkServiceSandbox": [
         {
             "platforms": [
@@ -5017,31 +5070,6 @@
             ]
         }
     ],
-    "NtpRepeatableQueriesDesktop": [
-        {
-            "platforms": [
-                "chromeos",
-                "chromeos_lacros",
-                "linux",
-                "mac",
-                "windows"
-            ],
-            "experiments": [
-                {
-                    "name": "Enabled",
-                    "params": {
-                        "NtpRepeatableQueriesAgeThresholdDays": "180",
-                        "NtpRepeatableQueriesFrequencyExponent": "2",
-                        "NtpRepeatableQueriesInsertPosition": "start",
-                        "NtpRepeatableQueriesRecencyHalfLifeSeconds": "604800"
-                    },
-                    "enable_features": [
-                        "NtpRepeatableQueries"
-                    ]
-                }
-            ]
-        }
-    ],
     "NtpWebUIDesktop": [
         {
             "platforms": [
@@ -6216,29 +6244,6 @@
             ]
         }
     ],
-    "ProfileSwitchIPH": [
-        {
-            "platforms": [
-                "linux",
-                "mac",
-                "windows"
-            ],
-            "experiments": [
-                {
-                    "name": "Enabled",
-                    "params": {
-                        "availability": "any",
-                        "event_trigger": "name:profile_switch_trigger;comparator:==0;window:360;storage:360",
-                        "event_used": "name:profile_menu_shown;comparator:==0;window:360;storage:360",
-                        "session_rate": "any"
-                    },
-                    "enable_features": [
-                        "IPH_ProfileSwitch"
-                    ]
-                }
-            ]
-        }
-    ],
     "ProtoDBSharedMigration": [
         {
             "platforms": [
@@ -6746,6 +6751,25 @@
             ]
         }
     ],
+    "SafeBrowsingCrxAllowlistShowWarnings": [
+        {
+            "platforms": [
+                "chromeos",
+                "chromeos_lacros",
+                "linux",
+                "mac",
+                "windows"
+            ],
+            "experiments": [
+                {
+                    "name": "Enabled",
+                    "enable_features": [
+                        "SafeBrowsingCrxAllowlistShowWarnings"
+                    ]
+                }
+            ]
+        }
+    ],
     "SafeBrowsingDelayedWarnings": [
         {
             "platforms": [
@@ -8794,21 +8818,6 @@
             ]
         }
     ],
-    "WebRtcThermalResource-ChromeOS": [
-        {
-            "platforms": [
-                "chromeos"
-            ],
-            "experiments": [
-                {
-                    "name": "Enabled",
-                    "enable_features": [
-                        "WebRtcThermalResource"
-                    ]
-                }
-            ]
-        }
-    ],
     "WebUIFeedback": [
         {
             "platforms": [
diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/features.cc
index dbf7ad9..db09a947 100644
--- a/third_party/blink/common/features.cc
+++ b/third_party/blink/common/features.cc
@@ -968,5 +968,12 @@
     "MinimizeAudioProcessingForUnusedOutput",
     base::FEATURE_DISABLED_BY_DEFAULT};
 
+// When <dialog>s are closed, this focuses the "previously focused" element
+// which had focus when the <dialog> was first opened.
+// TODO(crbug.com/649162): Remove DialogFocusNewSpecBehavior after
+// the feature is in stable with no issues.
+const base::Feature kDialogFocusNewSpecBehavior{
+    "DialogFocusNewSpecBehavior", base::FEATURE_ENABLED_BY_DEFAULT};
+
 }  // namespace features
 }  // namespace blink
diff --git a/third_party/blink/public/common/features.h b/third_party/blink/public/common/features.h
index 5903be4c..a18f82943 100644
--- a/third_party/blink/public/common/features.h
+++ b/third_party/blink/public/common/features.h
@@ -405,6 +405,12 @@
 BLINK_COMMON_EXPORT extern const base::Feature
     kMinimizeAudioProcessingForUnusedOutput;
 
+// When <dialog>s are closed, this focuses the "previously focused" element
+// which had focus when the <dialog> was first opened.
+// TODO(crbug.com/649162): Remove DialogFocusNewSpecBehavior after
+// the feature is in stable with no issues.
+BLINK_COMMON_EXPORT extern const base::Feature kDialogFocusNewSpecBehavior;
+
 }  // namespace features
 }  // namespace blink
 
diff --git a/third_party/blink/public/platform/internet_disconnected_web_url_loader.h b/third_party/blink/public/platform/internet_disconnected_web_url_loader.h
index 49d2e77..d4b4fe0 100644
--- a/third_party/blink/public/platform/internet_disconnected_web_url_loader.h
+++ b/third_party/blink/public/platform/internet_disconnected_web_url_loader.h
@@ -65,7 +65,7 @@
       std::unique_ptr<blink::ResourceLoadInfoNotifierWrapper>
           resource_load_info_notifier_wrapper,
       WebURLLoaderClient* client) override;
-  void SetDefersLoading(WebLoaderFreezeMode mode) override;
+  void Freeze(WebLoaderFreezeMode mode) override;
   void DidChangePriority(WebURLRequest::Priority, int) override;
   scoped_refptr<base::SingleThreadTaskRunner> GetTaskRunnerForBodyLoader()
       override;
diff --git a/third_party/blink/public/platform/web_resource_request_sender.h b/third_party/blink/public/platform/web_resource_request_sender.h
index ae24f21..1410caa4 100644
--- a/third_party/blink/public/platform/web_resource_request_sender.h
+++ b/third_party/blink/public/platform/web_resource_request_sender.h
@@ -129,8 +129,10 @@
   // Cancels the current request and `request_info_` will be released.
   virtual void Cancel(scoped_refptr<base::SingleThreadTaskRunner> task_runner);
 
-  // Toggles the is_deferred attribute for the specified request.
-  virtual void SetDefersLoading(WebLoaderFreezeMode mode);
+  // Freezes the loader. See blink/renderer/platform/loader/README.md for the
+  // general concept of "freezing" in the loading module. See
+  // blink/public/platform/web_loader_freezing_mode.h for `mode`.
+  virtual void Freeze(WebLoaderFreezeMode mode);
 
   // Indicates the priority of the specified request changed.
   void DidChangePriority(net::RequestPriority new_priority,
diff --git a/third_party/blink/public/platform/web_url_loader.h b/third_party/blink/public/platform/web_url_loader.h
index 8941781..3894775 100644
--- a/third_party/blink/public/platform/web_url_loader.h
+++ b/third_party/blink/public/platform/web_url_loader.h
@@ -134,8 +134,10 @@
           resource_load_info_notifier_wrapper,
       WebURLLoaderClient* client);
 
-  // Suspends/resumes an asynchronous load.
-  virtual void SetDefersLoading(WebLoaderFreezeMode mode);
+  // Freezes the loader. See blink/renderer/platform/loader/README.md for the
+  // general concept of "freezing" in the loading module. See
+  // blink/public/platform/web_loader_freezing_mode.h for `mode`.
+  virtual void Freeze(WebLoaderFreezeMode mode);
 
   // Notifies the loader that the priority of a WebURLRequest has changed from
   // its previous value. For example, a preload request starts with low
diff --git a/third_party/blink/public/web/web_ax_context.h b/third_party/blink/public/web/web_ax_context.h
index c3e1728d..cefdd30 100644
--- a/third_party/blink/public/web/web_ax_context.h
+++ b/third_party/blink/public/web/web_ax_context.h
@@ -8,6 +8,10 @@
 #include "third_party/blink/public/web/web_ax_object.h"
 #include "third_party/blink/public/web/web_document.h"
 
+namespace ui {
+class AXMode;
+}  // namespace ui
+
 namespace blink {
 
 class AXContext;
@@ -16,12 +20,15 @@
 // support for the given document.
 class WebAXContext {
  public:
-  BLINK_EXPORT explicit WebAXContext(WebDocument document);
+  BLINK_EXPORT explicit WebAXContext(WebDocument document,
+                                     const ui::AXMode& mode);
   BLINK_EXPORT ~WebAXContext();
 
   // Returns the root element of the document's accessibility tree.
   BLINK_EXPORT WebAXObject Root() const;
 
+  BLINK_EXPORT const ui::AXMode& GetAXMode() const;
+
  private:
   std::unique_ptr<AXContext> private_;
 };
diff --git a/third_party/blink/renderer/bindings/core/v8/script_streamer_test.cc b/third_party/blink/renderer/bindings/core/v8/script_streamer_test.cc
index 606a3f7..eddb362 100644
--- a/third_party/blink/renderer/bindings/core/v8/script_streamer_test.cc
+++ b/third_party/blink/renderer/bindings/core/v8/script_streamer_test.cc
@@ -108,7 +108,7 @@
         std::unique_ptr<blink::ResourceLoadInfoNotifierWrapper>
             resource_load_info_notifier_wrapper,
         WebURLLoaderClient*) override {}
-    void SetDefersLoading(WebLoaderFreezeMode) override {}
+    void Freeze(WebLoaderFreezeMode) override {}
     void DidChangePriority(WebURLRequest::Priority, int) override {
       NOTREACHED();
     }
diff --git a/third_party/blink/renderer/bindings/scripts/bind_gen/union.py b/third_party/blink/renderer/bindings/scripts/bind_gen/union.py
index 8b3e236c..7c735fa 100644
--- a/third_party/blink/renderer/bindings/scripts/bind_gen/union.py
+++ b/third_party/blink/renderer/bindings/scripts/bind_gen/union.py
@@ -98,6 +98,14 @@
 
 
 class _UnionMemberImpl(_UnionMember):
+    """
+    Represents a flattened member type of an union type or the special null
+    type, which represents that the union type includes a nullable type.
+
+    For example, either of (A? or B) or (A or B?) is represented as a list of
+    [_UnionMemberImpl(A), _UnionMemberImpl(B), _UnionMemberImpl(null)].
+    """
+
     def __init__(self, union, idl_type):
         assert isinstance(union, web_idl.NewUnion)
         assert idl_type is None or isinstance(idl_type, web_idl.IdlType)
@@ -120,6 +128,18 @@
 
 
 class _UnionMemberSubunion(_UnionMember):
+    """
+    Represents a subset of flattened member types in an union type as
+    'subunion'.
+
+    For example, given an union type X = (A or B or C) with the following use
+    cases,
+      ((A or B) or C)
+      (A or (B or C))
+    subunions of the union type X are represented as
+    [_UnionMemberSubunion(A or B), _UnionMemberSubunion(B or C)].
+    """
+
     def __init__(self, union, subunion):
         assert isinstance(union, web_idl.NewUnion)
         assert isinstance(subunion, web_idl.NewUnion)
@@ -138,11 +158,23 @@
 
 
 class _UnionMemberAlias(_UnionMember):
+    """
+    Represents a typedef'ed aliases to a flattened member type or subunion of
+    an union type.
+
+    For example, given the following Web IDL fragments,
+      typedef (A or B) T1;
+      typedef B T2;
+      (T1 or C)
+    _UnionMemberAlias(T1) represents an alias to _UnionMemberSubunion(A or B)
+    and _UnionMemberAlias(T2) represents an alias to _UnionMemberImpl(B).
+    """
+
     def __init__(self, impl, typedef):
         assert isinstance(impl, (_UnionMemberImpl, _UnionMemberSubunion))
         assert isinstance(typedef, web_idl.Typedef)
 
-        _UnionMember.__init__(self, base_name=typedef.identifier)
+        _UnionMember.__init__(self, base_name=blink_class_name(typedef))
         self._var_name = impl.var_name
         self._type_info = impl.type_info
 
@@ -548,11 +580,6 @@
     decls = ListNode()
     defs = ListNode()
 
-    def add(func_decl, func_def):
-        decls.append(func_decl)
-        defs.append(func_def)
-        defs.append(EmptyNode())
-
     func_def = CxxFuncDefNode(name="GetContentType",
                               arg_decls=[],
                               return_type="ContentType",
@@ -651,23 +678,6 @@
         ])
         return func_def, None
 
-    for member in cg_context.union_members:
-        if member.is_null:
-            add(*make_api_pred(member))
-            add(*make_api_set_null(member))
-        else:
-            add(*make_api_pred(member))
-            for alias in member.typedef_aliases:
-                add(*make_api_pred(alias))
-            add(*make_api_get(member))
-            for alias in member.typedef_aliases:
-                add(*make_api_get(alias))
-            if member.type_info.is_move_effective:
-                add(*make_api_set_copy_and_move(member))
-            else:
-                add(*make_api_set(member))
-        decls.append(EmptyNode())
-
     def make_api_subunion_pred(subunion, subunion_members):
         func_def = CxxFuncDefNode(name=subunion.api_pred,
                                   arg_decls=[],
@@ -724,12 +734,56 @@
         func_def.body.append(node)
         return func_decl, func_def
 
+    def make_api_subunion_alias_pred(subunion, alias):
+        func_def = CxxFuncDefNode(name=alias.api_pred,
+                                  arg_decls=[],
+                                  return_type="bool",
+                                  const=True)
+        func_def.set_base_template_vars(cg_context.template_bindings())
+        func_def.body.append(F("return {}();", subunion.api_pred))
+        return func_def, None
+
+    def make_api_subunion_alias_get(subunion, alias):
+        func_def = CxxFuncDefNode(name=alias.api_get,
+                                  arg_decls=[],
+                                  return_type=alias.type_info.value_t,
+                                  const=True)
+        func_def.set_base_template_vars(cg_context.template_bindings())
+        func_def.body.append(F("return {}();", subunion.api_get))
+        return func_def, None
+
+    def add(func_decl, func_def):
+        decls.append(func_decl)
+        defs.append(func_def)
+        defs.append(EmptyNode())
+
+    # Accessors to member types of the union type
+    for member in cg_context.union_members:
+        if member.is_null:
+            add(*make_api_pred(member))
+            add(*make_api_set_null(member))
+        else:
+            add(*make_api_pred(member))
+            add(*make_api_get(member))
+            if member.type_info.is_move_effective:
+                add(*make_api_set_copy_and_move(member))
+            else:
+                add(*make_api_set(member))
+            for alias in member.typedef_aliases:
+                add(*make_api_pred(alias))
+                add(*make_api_get(alias))
+        decls.append(EmptyNode())
+
+    # Accessors to subunions in the union type
     for subunion in cg_context.union.union_members:
         subunion_members = create_union_members(subunion)
         subunion = _UnionMemberSubunion(cg_context.union, subunion)
         add(*make_api_subunion_pred(subunion, subunion_members))
         add(*make_api_subunion_get(subunion, subunion_members))
         add(*make_api_subunion_set(subunion, subunion_members))
+        for alias in subunion.typedef_aliases:
+            add(*make_api_subunion_alias_pred(subunion, alias))
+            add(*make_api_subunion_alias_get(subunion, alias))
         decls.append(EmptyNode())
 
     return decls, defs
diff --git a/third_party/blink/renderer/bindings/scripts/v8_callback_function.py b/third_party/blink/renderer/bindings/scripts/v8_callback_function.py
index 65679db..a4a96543 100644
--- a/third_party/blink/renderer/bindings/scripts/v8_callback_function.py
+++ b/third_party/blink/renderer/bindings/scripts/v8_callback_function.py
@@ -15,7 +15,7 @@
     'platform/wtf/forward.h',
 ])
 CALLBACK_FUNCTION_CPP_INCLUDES = frozenset([
-    'base/stl_util.h',
+    'base/cxx17_backports.h',
     'bindings/core/v8/generated_code_helper.h',
     'bindings/core/v8/native_value_traits_impl.h',
     'bindings/core/v8/to_v8_for_core.h',
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_any_callback_function_optional_any_arg.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_any_callback_function_optional_any_arg.cc
index 79b1486..2a3a5c7 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_any_callback_function_optional_any_arg.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_any_callback_function_optional_any_arg.cc
@@ -11,7 +11,7 @@
 
 #include "third_party/blink/renderer/bindings/tests/results/core/v8_any_callback_function_optional_any_arg.h"
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "third_party/blink/renderer/bindings/core/v8/generated_code_helper.h"
 #include "third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h"
 #include "third_party/blink/renderer/bindings/core/v8/script_value.h"
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_any_callback_function_variadic_any_args.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_any_callback_function_variadic_any_args.cc
index f08ad1f..461d099 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_any_callback_function_variadic_any_args.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_any_callback_function_variadic_any_args.cc
@@ -11,7 +11,7 @@
 
 #include "third_party/blink/renderer/bindings/tests/results/core/v8_any_callback_function_variadic_any_args.h"
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "third_party/blink/renderer/bindings/core/v8/generated_code_helper.h"
 #include "third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h"
 #include "third_party/blink/renderer/bindings/core/v8/script_value.h"
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_for_each_iterator_callback.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_for_each_iterator_callback.cc
index e631cce..2f5cb1b 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_for_each_iterator_callback.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_for_each_iterator_callback.cc
@@ -11,7 +11,7 @@
 
 #include "third_party/blink/renderer/bindings/tests/results/core/v8_for_each_iterator_callback.h"
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "third_party/blink/renderer/bindings/core/v8/generated_code_helper.h"
 #include "third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h"
 #include "third_party/blink/renderer/bindings/core/v8/script_value.h"
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_long_callback_function.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_long_callback_function.cc
index 858e5ad..9f5861c 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_long_callback_function.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_long_callback_function.cc
@@ -11,7 +11,7 @@
 
 #include "third_party/blink/renderer/bindings/tests/results/core/v8_long_callback_function.h"
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "third_party/blink/renderer/bindings/core/v8/generated_code_helper.h"
 #include "third_party/blink/renderer/bindings/core/v8/idl_types.h"
 #include "third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h"
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_string_sequence_callback_function_long_sequence_arg.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_string_sequence_callback_function_long_sequence_arg.cc
index 233b286..87774dea 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_string_sequence_callback_function_long_sequence_arg.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_string_sequence_callback_function_long_sequence_arg.cc
@@ -11,7 +11,7 @@
 
 #include "third_party/blink/renderer/bindings/tests/results/core/v8_string_sequence_callback_function_long_sequence_arg.h"
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "third_party/blink/renderer/bindings/core/v8/generated_code_helper.h"
 #include "third_party/blink/renderer/bindings/core/v8/idl_types.h"
 #include "third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h"
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_treat_non_object_as_null_boolean_function.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_treat_non_object_as_null_boolean_function.cc
index 42e48148..946ffc38 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_treat_non_object_as_null_boolean_function.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_treat_non_object_as_null_boolean_function.cc
@@ -11,7 +11,7 @@
 
 #include "third_party/blink/renderer/bindings/tests/results/core/v8_treat_non_object_as_null_boolean_function.h"
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "third_party/blink/renderer/bindings/core/v8/generated_code_helper.h"
 #include "third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h"
 #include "third_party/blink/renderer/bindings/core/v8/to_v8_for_core.h"
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_treat_non_object_as_null_void_function.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_treat_non_object_as_null_void_function.cc
index 363af22..50c35ca 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_treat_non_object_as_null_void_function.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_treat_non_object_as_null_void_function.cc
@@ -11,7 +11,7 @@
 
 #include "third_party/blink/renderer/bindings/tests/results/core/v8_treat_non_object_as_null_void_function.h"
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "third_party/blink/renderer/bindings/core/v8/generated_code_helper.h"
 #include "third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h"
 #include "third_party/blink/renderer/bindings/core/v8/to_v8_for_core.h"
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_void_callback_function.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_void_callback_function.cc
index 7caac01..8c88586 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_void_callback_function.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_void_callback_function.cc
@@ -11,7 +11,7 @@
 
 #include "third_party/blink/renderer/bindings/tests/results/core/v8_void_callback_function.h"
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "third_party/blink/renderer/bindings/core/v8/generated_code_helper.h"
 #include "third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h"
 #include "third_party/blink/renderer/bindings/core/v8/to_v8_for_core.h"
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_void_callback_function_dictionary_arg.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_void_callback_function_dictionary_arg.cc
index 09b0a04..16e2e8b 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_void_callback_function_dictionary_arg.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_void_callback_function_dictionary_arg.cc
@@ -11,7 +11,7 @@
 
 #include "third_party/blink/renderer/bindings/tests/results/core/v8_void_callback_function_dictionary_arg.h"
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "third_party/blink/renderer/bindings/core/v8/generated_code_helper.h"
 #include "third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h"
 #include "third_party/blink/renderer/bindings/core/v8/to_v8_for_core.h"
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_void_callback_function_enum_arg.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_void_callback_function_enum_arg.cc
index b872faf..0fb7a93 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_void_callback_function_enum_arg.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_void_callback_function_enum_arg.cc
@@ -11,7 +11,7 @@
 
 #include "third_party/blink/renderer/bindings/tests/results/core/v8_void_callback_function_enum_arg.h"
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "third_party/blink/renderer/bindings/core/v8/generated_code_helper.h"
 #include "third_party/blink/renderer/bindings/core/v8/idl_types.h"
 #include "third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h"
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_void_callback_function_interface_arg.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_void_callback_function_interface_arg.cc
index b9e83586..7eede14 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_void_callback_function_interface_arg.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_void_callback_function_interface_arg.cc
@@ -11,7 +11,7 @@
 
 #include "third_party/blink/renderer/bindings/tests/results/core/v8_void_callback_function_interface_arg.h"
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "third_party/blink/renderer/bindings/core/v8/generated_code_helper.h"
 #include "third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h"
 #include "third_party/blink/renderer/bindings/core/v8/to_v8_for_core.h"
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_void_callback_function_test_interface_sequence_arg.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_void_callback_function_test_interface_sequence_arg.cc
index 8c31b2d..5f2568e 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_void_callback_function_test_interface_sequence_arg.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_void_callback_function_test_interface_sequence_arg.cc
@@ -11,7 +11,7 @@
 
 #include "third_party/blink/renderer/bindings/tests/results/core/v8_void_callback_function_test_interface_sequence_arg.h"
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "third_party/blink/renderer/bindings/core/v8/generated_code_helper.h"
 #include "third_party/blink/renderer/bindings/core/v8/idl_types.h"
 #include "third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h"
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_void_callback_function_typedef.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_void_callback_function_typedef.cc
index 375e9f6a..9552da90 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_void_callback_function_typedef.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_void_callback_function_typedef.cc
@@ -11,7 +11,7 @@
 
 #include "third_party/blink/renderer/bindings/tests/results/core/v8_void_callback_function_typedef.h"
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "third_party/blink/renderer/bindings/core/v8/generated_code_helper.h"
 #include "third_party/blink/renderer/bindings/core/v8/idl_types.h"
 #include "third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h"
diff --git a/third_party/blink/renderer/bindings/tests/results/modules/v8_void_callback_function_modules.cc b/third_party/blink/renderer/bindings/tests/results/modules/v8_void_callback_function_modules.cc
index 3bbc2b6b..bb379f8 100644
--- a/third_party/blink/renderer/bindings/tests/results/modules/v8_void_callback_function_modules.cc
+++ b/third_party/blink/renderer/bindings/tests/results/modules/v8_void_callback_function_modules.cc
@@ -11,7 +11,7 @@
 
 #include "third_party/blink/renderer/bindings/tests/results/modules/v8_void_callback_function_modules.h"
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "third_party/blink/renderer/bindings/core/v8/generated_code_helper.h"
 #include "third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h"
 #include "third_party/blink/renderer/bindings/core/v8/to_v8_for_core.h"
diff --git a/third_party/blink/renderer/core/accessibility/ax_context.h b/third_party/blink/renderer/core/accessibility/ax_context.h
index 8302aeb..16bfe8ce 100644
--- a/third_party/blink/renderer/core/accessibility/ax_context.h
+++ b/third_party/blink/renderer/core/accessibility/ax_context.h
@@ -22,8 +22,7 @@
   USING_FAST_MALLOC(AXContext);
 
  public:
-  explicit AXContext(Document& document,
-                     const ui::AXMode& mode = ui::kAXModeComplete);
+  AXContext(Document& document, const ui::AXMode& mode);
   AXContext(const AXContext&) = delete;
   AXContext& operator=(const AXContext&) = delete;
   virtual ~AXContext();
@@ -38,7 +37,7 @@
 
   Document* GetDocument();
 
-  ui::AXMode GetAXMode() { return ax_mode_; }
+  const ui::AXMode& GetAXMode() { return ax_mode_; }
 
  protected:
   WeakPersistent<Document> document_;
diff --git a/third_party/blink/renderer/core/accessibility/scoped_blink_ax_event_intent_test.cc b/third_party/blink/renderer/core/accessibility/scoped_blink_ax_event_intent_test.cc
index 77f2ab94..da4993f 100644
--- a/third_party/blink/renderer/core/accessibility/scoped_blink_ax_event_intent_test.cc
+++ b/third_party/blink/renderer/core/accessibility/scoped_blink_ax_event_intent_test.cc
@@ -12,13 +12,14 @@
 #include "third_party/blink/renderer/core/testing/core_unit_test_helper.h"
 #include "third_party/blink/renderer/platform/wtf/vector.h"
 #include "ui/accessibility/ax_enums.mojom-blink.h"
+#include "ui/accessibility/ax_mode.h"
 
 namespace blink {
 
 using ScopedBlinkAXEventIntentTest = RenderingTest;
 
 TEST_F(ScopedBlinkAXEventIntentTest, SingleIntent) {
-  AXContext ax_context(GetDocument());
+  AXContext ax_context(GetDocument(), ui::kAXModeComplete);
   AXObjectCache* cache = GetDocument().ExistingAXObjectCache();
   ASSERT_NE(nullptr, cache);
 
@@ -38,7 +39,7 @@
 }
 
 TEST_F(ScopedBlinkAXEventIntentTest, MultipleIdenticalIntents) {
-  AXContext ax_context(GetDocument());
+  AXContext ax_context(GetDocument(), ui::kAXModeComplete);
   AXObjectCache* cache = GetDocument().ExistingAXObjectCache();
   ASSERT_NE(nullptr, cache);
 
@@ -63,7 +64,7 @@
 }
 
 TEST_F(ScopedBlinkAXEventIntentTest, NestedIndividualIntents) {
-  AXContext ax_context(GetDocument());
+  AXContext ax_context(GetDocument(), ui::kAXModeComplete);
   AXObjectCache* cache = GetDocument().ExistingAXObjectCache();
   ASSERT_NE(nullptr, cache);
 
@@ -101,7 +102,7 @@
 }
 
 TEST_F(ScopedBlinkAXEventIntentTest, NestedMultipleIntents) {
-  AXContext ax_context(GetDocument());
+  AXContext ax_context(GetDocument(), ui::kAXModeComplete);
   AXObjectCache* cache = GetDocument().ExistingAXObjectCache();
   ASSERT_NE(nullptr, cache);
 
@@ -155,7 +156,7 @@
 }
 
 TEST_F(ScopedBlinkAXEventIntentTest, NestedIdenticalIntents) {
-  AXContext ax_context(GetDocument());
+  AXContext ax_context(GetDocument(), ui::kAXModeComplete);
   AXObjectCache* cache = GetDocument().ExistingAXObjectCache();
   ASSERT_NE(nullptr, cache);
 
diff --git a/third_party/blink/renderer/core/animation/compositor_animations.cc b/third_party/blink/renderer/core/animation/compositor_animations.cc
index 2a0d355..a537f2d 100644
--- a/third_party/blink/renderer/core/animation/compositor_animations.cc
+++ b/third_party/blink/renderer/core/animation/compositor_animations.cc
@@ -455,8 +455,8 @@
   bool any_compositor_properties_present = false;
 
   const auto& keyframe_effect = To<KeyframeEffectModelBase>(effect);
-  PropertyHandleSet properties = keyframe_effect.Properties();
-  for (const auto& property : properties) {
+  const auto& groups = keyframe_effect.GetPropertySpecificKeyframeGroups();
+  for (const PropertyHandle& property : groups.Keys()) {
     if (!CompositedAnimationRequiresProperties(property))
       continue;
 
diff --git a/third_party/blink/renderer/core/animation/css_font_stretch_interpolation_type.cc b/third_party/blink/renderer/core/animation/css_font_stretch_interpolation_type.cc
index 3dc54b2..a9c686f 100644
--- a/third_party/blink/renderer/core/animation/css_font_stretch_interpolation_type.cc
+++ b/third_party/blink/renderer/core/animation/css_font_stretch_interpolation_type.cc
@@ -8,7 +8,7 @@
 
 #include "base/memory/ptr_util.h"
 #include "third_party/blink/renderer/core/css/css_primitive_value_mappings.h"
-#include "third_party/blink/renderer/core/css/resolver/style_resolver_state.h"
+#include "third_party/blink/renderer/core/css/resolver/style_builder_converter.h"
 #include "third_party/blink/renderer/core/style/computed_style.h"
 #include "third_party/blink/renderer/platform/wtf/math_extras.h"
 
@@ -62,39 +62,8 @@
     const CSSValue& value,
     const StyleResolverState* state,
     ConversionCheckers& conversion_checkers) const {
-  if (auto* primitive_value = DynamicTo<CSSPrimitiveValue>(value)) {
-    return CreateFontStretchValue(
-        FontSelectionValue(primitive_value->GetFloatValue()));
-  }
-
-  const auto& identifier_value = To<CSSIdentifierValue>(value);
-  CSSValueID keyword = identifier_value.GetValueID();
-
-  switch (keyword) {
-    case CSSValueID::kInvalid:
-      return nullptr;
-    case CSSValueID::kUltraCondensed:
-      return CreateFontStretchValue(UltraCondensedWidthValue());
-    case CSSValueID::kExtraCondensed:
-      return CreateFontStretchValue(ExtraCondensedWidthValue());
-    case CSSValueID::kCondensed:
-      return CreateFontStretchValue(CondensedWidthValue());
-    case CSSValueID::kSemiCondensed:
-      return CreateFontStretchValue(SemiCondensedWidthValue());
-    case CSSValueID::kNormal:
-      return CreateFontStretchValue(NormalWidthValue());
-    case CSSValueID::kSemiExpanded:
-      return CreateFontStretchValue(SemiExpandedWidthValue());
-    case CSSValueID::kExpanded:
-      return CreateFontStretchValue(ExpandedWidthValue());
-    case CSSValueID::kExtraExpanded:
-      return CreateFontStretchValue(ExtraExpandedWidthValue());
-    case CSSValueID::kUltraExpanded:
-      return CreateFontStretchValue(UltraExpandedWidthValue());
-    default:
-      NOTREACHED();
-      return nullptr;
-  }
+  return CreateFontStretchValue(
+      StyleBuilderConverterBase::ConvertFontStretch(value));
 }
 
 InterpolationValue
diff --git a/third_party/blink/renderer/core/animation/css_font_weight_interpolation_type.cc b/third_party/blink/renderer/core/animation/css_font_weight_interpolation_type.cc
index 9870c5ec5..0fd1672 100644
--- a/third_party/blink/renderer/core/animation/css_font_weight_interpolation_type.cc
+++ b/third_party/blink/renderer/core/animation/css_font_weight_interpolation_type.cc
@@ -8,7 +8,7 @@
 
 #include "base/memory/ptr_util.h"
 #include "third_party/blink/renderer/core/css/css_primitive_value_mappings.h"
-#include "third_party/blink/renderer/core/css/resolver/style_resolver_state.h"
+#include "third_party/blink/renderer/core/css/resolver/style_builder_converter.h"
 #include "third_party/blink/renderer/core/style/computed_style.h"
 #include "third_party/blink/renderer/platform/wtf/math_extras.h"
 
@@ -62,40 +62,18 @@
     const CSSValue& value,
     const StyleResolverState* state,
     ConversionCheckers& conversion_checkers) const {
-  if (auto* primitive_value = DynamicTo<CSSPrimitiveValue>(value)) {
-    return CreateFontWeightValue(
-        FontSelectionValue(primitive_value->GetFloatValue()));
-  }
-
-  const auto& identifier_value = To<CSSIdentifierValue>(value);
-  CSSValueID keyword = identifier_value.GetValueID();
-
-  switch (keyword) {
-    case CSSValueID::kInvalid:
-      return nullptr;
-    case CSSValueID::kNormal:
-      return CreateFontWeightValue(NormalWeightValue());
-    case CSSValueID::kBold:
-      return CreateFontWeightValue(BoldWeightValue());
-
-    case CSSValueID::kBolder:
-    case CSSValueID::kLighter: {
-      DCHECK(state);
-      FontSelectionValue inherited_font_weight =
-          state->ParentStyle()->GetFontWeight();
+  DCHECK(state);
+  FontSelectionValue inherited_font_weight =
+      state->ParentStyle()->GetFontWeight();
+  if (auto* identifier_value = DynamicTo<CSSIdentifierValue>(value)) {
+    CSSValueID keyword = identifier_value->GetValueID();
+    if (keyword == CSSValueID::kBolder || keyword == CSSValueID::kLighter) {
       conversion_checkers.push_back(
           std::make_unique<InheritedFontWeightChecker>(inherited_font_weight));
-      if (keyword == CSSValueID::kBolder) {
-        return CreateFontWeightValue(
-            FontDescription::BolderWeight(inherited_font_weight));
-      }
-      return CreateFontWeightValue(
-          FontDescription::LighterWeight(inherited_font_weight));
     }
-    default:
-      NOTREACHED();
-      return nullptr;
   }
+  return CreateFontWeightValue(StyleBuilderConverterBase::ConvertFontWeight(
+      value, inherited_font_weight));
 }
 
 InterpolationValue
diff --git a/third_party/blink/renderer/core/aom/computed_accessible_node.cc b/third_party/blink/renderer/core/aom/computed_accessible_node.cc
index dd746a6b..6b33e80b 100644
--- a/third_party/blink/renderer/core/aom/computed_accessible_node.cc
+++ b/third_party/blink/renderer/core/aom/computed_accessible_node.cc
@@ -18,6 +18,7 @@
 #include "third_party/blink/renderer/platform/bindings/script_state.h"
 #include "third_party/blink/renderer/platform/heap/handle.h"
 #include "third_party/blink/renderer/platform/scheduler/public/thread_scheduler.h"
+#include "ui/accessibility/ax_mode.h"
 
 namespace blink {
 
@@ -50,7 +51,8 @@
     : element_(element),
       resolver_(MakeGarbageCollected<ScriptPromiseResolver>(script_state)),
       resolve_with_node_(false),
-      ax_context_(std::make_unique<AXContext>(element_->GetDocument())) {}
+      ax_context_(std::make_unique<AXContext>(element_->GetDocument(),
+                                              ui::kAXModeComplete)) {}
 
 ScriptPromise ComputedAccessibleNodePromiseResolver::Promise() {
   return resolver_->Promise();
@@ -106,11 +108,11 @@
 
 // ComputedAccessibleNode ------------------------------------------------------
 
-ComputedAccessibleNode::ComputedAccessibleNode(AXID ax_id,
-                                               Document* document)
+ComputedAccessibleNode::ComputedAccessibleNode(AXID ax_id, Document* document)
     : ax_id_(ax_id),
       document_(document),
-      ax_context_(std::make_unique<AXContext>(*document)) {}
+      ax_context_(std::make_unique<AXContext>(*document, ui::kAXModeComplete)) {
+}
 
 absl::optional<bool> ComputedAccessibleNode::atomic() const {
   return GetBoolAttribute(WebAOMBoolAttribute::AOM_ATTR_ATOMIC);
diff --git a/third_party/blink/renderer/core/clipboard/system_clipboard.cc b/third_party/blink/renderer/core/clipboard/system_clipboard.cc
index 1b0a5f1..33cdccb2 100644
--- a/third_party/blink/renderer/core/clipboard/system_clipboard.cc
+++ b/third_party/blink/renderer/core/clipboard/system_clipboard.cc
@@ -5,6 +5,7 @@
 #include "third_party/blink/renderer/core/clipboard/system_clipboard.h"
 
 #include "base/memory/scoped_refptr.h"
+#include "base/metrics/histogram_functions.h"
 #include "base/metrics/histogram_macros.h"
 #include "build/build_config.h"
 #include "mojo/public/cpp/system/platform_handle.h"
diff --git a/third_party/blink/renderer/core/css/resolver/style_adjuster.cc b/third_party/blink/renderer/core/css/resolver/style_adjuster.cc
index 83c646d..e1d812af 100644
--- a/third_party/blink/renderer/core/css/resolver/style_adjuster.cc
+++ b/third_party/blink/renderer/core/css/resolver/style_adjuster.cc
@@ -619,6 +619,7 @@
 
   style.SetTextShadow(ComputedStyleInitialValues::InitialTextShadow());
   style.SetBoxShadow(ComputedStyleInitialValues::InitialBoxShadow());
+  style.SetAccentColor(ComputedStyleInitialValues::InitialAccentColor());
   if (!style.HasUrlBackgroundImage())
     style.ClearBackgroundImage();
 }
diff --git a/third_party/blink/renderer/core/document_transition/document_transition_test.cc b/third_party/blink/renderer/core/document_transition/document_transition_test.cc
index 661d038..e87696894 100644
--- a/third_party/blink/renderer/core/document_transition/document_transition_test.cc
+++ b/third_party/blink/renderer/core/document_transition/document_transition_test.cc
@@ -16,6 +16,7 @@
 #include "third_party/blink/renderer/core/html/html_element.h"
 #include "third_party/blink/renderer/core/paint/compositing/compositing_state.h"
 #include "third_party/blink/renderer/core/paint/paint_layer.h"
+#include "third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.h"
 #include "third_party/blink/renderer/platform/testing/find_cc_layer.h"
 #include "third_party/blink/renderer/platform/testing/paint_test_configurations.h"
 
diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/renderer/core/dom/element.cc
index a594ae28..48f2694e1 100644
--- a/third_party/blink/renderer/core/dom/element.cc
+++ b/third_party/blink/renderer/core/dom/element.cc
@@ -169,6 +169,7 @@
 #include "third_party/blink/renderer/platform/wtf/hash_functions.h"
 #include "third_party/blink/renderer/platform/wtf/text/string_builder.h"
 #include "third_party/blink/renderer/platform/wtf/text/text_position.h"
+#include "ui/accessibility/ax_mode.h"
 
 namespace blink {
 
@@ -2133,7 +2134,7 @@
     document.View()->UpdateAllLifecyclePhasesExceptPaint(
         DocumentUpdateReason::kJavaScript);
   }
-  AXContext ax_context(document);
+  AXContext ax_context(document, ui::kAXModeBasic);
   return ax_context.GetAXObjectCache().ComputedRoleForNode(this);
 }
 
@@ -2147,7 +2148,7 @@
     document.View()->UpdateAllLifecyclePhasesExceptPaint(
         DocumentUpdateReason::kJavaScript);
   }
-  AXContext ax_context(document);
+  AXContext ax_context(document, ui::kAXModeBasic);
   return ax_context.GetAXObjectCache().ComputedNameForNode(this);
 }
 
diff --git a/third_party/blink/renderer/core/dom/events/event_queue.h b/third_party/blink/renderer/core/dom/events/event_queue.h
index 120ac0f..56f427f 100644
--- a/third_party/blink/renderer/core/dom/events/event_queue.h
+++ b/third_party/blink/renderer/core/dom/events/event_queue.h
@@ -27,6 +27,7 @@
 #ifndef THIRD_PARTY_BLINK_RENDERER_CORE_DOM_EVENTS_EVENT_QUEUE_H_
 #define THIRD_PARTY_BLINK_RENDERER_CORE_DOM_EVENTS_EVENT_QUEUE_H_
 
+#include "base/location.h"
 #include "third_party/blink/public/platform/task_type.h"
 #include "third_party/blink/renderer/core/execution_context/execution_context_lifecycle_observer.h"
 #include "third_party/blink/renderer/platform/wtf/linked_hash_set.h"
diff --git a/third_party/blink/renderer/core/editing/finder/async_find_buffer.cc b/third_party/blink/renderer/core/editing/finder/async_find_buffer.cc
index 8163219..d43d504 100644
--- a/third_party/blink/renderer/core/editing/finder/async_find_buffer.cc
+++ b/third_party/blink/renderer/core/editing/finder/async_find_buffer.cc
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 #include "third_party/blink/renderer/core/editing/finder/async_find_buffer.h"
 
+#include "base/metrics/histogram_macros.h"
 #include "third_party/blink/renderer/core/editing/ephemeral_range.h"
 #include "third_party/blink/renderer/core/editing/finder/find_buffer.h"
 
diff --git a/third_party/blink/renderer/core/frame/frame_overlay_test.cc b/third_party/blink/renderer/core/frame/frame_overlay_test.cc
index 0ddaf46..e8c4618 100644
--- a/third_party/blink/renderer/core/frame/frame_overlay_test.cc
+++ b/third_party/blink/renderer/core/frame/frame_overlay_test.cc
@@ -17,6 +17,7 @@
 #include "third_party/blink/renderer/core/layout/layout_view.h"
 #include "third_party/blink/renderer/core/paint/compositing/paint_layer_compositor.h"
 #include "third_party/blink/renderer/platform/graphics/color.h"
+#include "third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.h"
 #include "third_party/blink/renderer/platform/graphics/graphics_context.h"
 #include "third_party/blink/renderer/platform/graphics/graphics_layer.h"
 #include "third_party/blink/renderer/platform/graphics/paint/drawing_recorder.h"
diff --git a/third_party/blink/renderer/core/frame/local_frame_view.h b/third_party/blink/renderer/core/frame/local_frame_view.h
index 5836ce19..9572206 100644
--- a/third_party/blink/renderer/core/frame/local_frame_view.h
+++ b/third_party/blink/renderer/core/frame/local_frame_view.h
@@ -48,7 +48,6 @@
 #include "third_party/blink/renderer/platform/geometry/int_rect.h"
 #include "third_party/blink/renderer/platform/geometry/layout_size.h"
 #include "third_party/blink/renderer/platform/graphics/color.h"
-#include "third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.h"
 #include "third_party/blink/renderer/platform/graphics/compositor_element_id.h"
 #include "third_party/blink/renderer/platform/graphics/paint/cull_rect.h"
 #include "third_party/blink/renderer/platform/graphics/paint/paint_controller.h"
@@ -94,6 +93,7 @@
 class LocalFrame;
 class MobileFriendlinessChecker;
 class Page;
+class PaintArtifactCompositor;
 class PaintLayer;
 class PaintLayerScrollableArea;
 class PaintTimingDetector;
@@ -111,6 +111,7 @@
 struct MobileFriendliness;
 struct PhysicalOffset;
 struct PhysicalRect;
+struct PreCompositedLayerInfo;
 
 typedef uint64_t DOMTimeStamp;
 using LayerTreeFlags = unsigned;
diff --git a/third_party/blink/renderer/core/frame/navigator_id.cc b/third_party/blink/renderer/core/frame/navigator_id.cc
index 01a5a61..8d66a90 100644
--- a/third_party/blink/renderer/core/frame/navigator_id.cc
+++ b/third_party/blink/renderer/core/frame/navigator_id.cc
@@ -67,11 +67,13 @@
   // content::frozen_user_agent_strings.
   if (base::FeatureList::IsEnabled(features::kFreezeUserAgent)) {
 #if defined(OS_ANDROID)
-    // Matches the frozen mobile User-Agent string (arbitrary Android device).
-    return "Linux armv8l";
-#else
-    // Matches the frozen desktop User-Agent string (Windows).
+    return "Linux armv81";
+#elif defined(OS_MAC)
+    return "MacIntel";
+#elif defined(OS_WIN)
     return "Win32";
+#else
+    return "Linux x86_64";
 #endif
   }
 
diff --git a/third_party/blink/renderer/core/frame/visual_viewport_test.cc b/third_party/blink/renderer/core/frame/visual_viewport_test.cc
index 8e4ee52..f4337e7 100644
--- a/third_party/blink/renderer/core/frame/visual_viewport_test.cc
+++ b/third_party/blink/renderer/core/frame/visual_viewport_test.cc
@@ -60,6 +60,7 @@
 #include "third_party/blink/renderer/platform/testing/paint_test_configurations.h"
 #include "third_party/blink/renderer/platform/testing/unit_test_helpers.h"
 #include "third_party/blink/renderer/platform/testing/url_test_helpers.h"
+#include "ui/accessibility/ax_mode.h"
 
 #include <string>
 
@@ -1963,7 +1964,7 @@
   WebDocument web_doc = WebView()->MainFrameImpl()->GetDocument();
   LocalFrameView& frame_view = *WebView()->MainFrameImpl()->GetFrameView();
 
-  WebAXContext ax_context(web_doc);
+  WebAXContext ax_context(web_doc, ui::kAXModeComplete);
 
   WebView()->SetPageScaleFactor(2);
   WebView()->SetVisualViewportOffset(gfx::PointF(200, 230));
diff --git a/third_party/blink/renderer/core/html/html_dialog_element.cc b/third_party/blink/renderer/core/html/html_dialog_element.cc
index 553fd3f..2e78100 100644
--- a/third_party/blink/renderer/core/html/html_dialog_element.cc
+++ b/third_party/blink/renderer/core/html/html_dialog_element.cc
@@ -33,6 +33,7 @@
 #include "third_party/blink/renderer/core/frame/local_frame_view.h"
 #include "third_party/blink/renderer/core/frame/web_feature.h"
 #include "third_party/blink/renderer/core/fullscreen/fullscreen.h"
+#include "third_party/blink/renderer/core/html/focus_options.h"
 #include "third_party/blink/renderer/core/html/forms/html_form_control_element.h"
 #include "third_party/blink/renderer/core/html/html_frame_owner_element.h"
 #include "third_party/blink/renderer/platform/bindings/exception_state.h"
@@ -109,7 +110,8 @@
 HTMLDialogElement::HTMLDialogElement(Document& document)
     : HTMLElement(html_names::kDialogTag, document),
       is_modal_(false),
-      return_value_("") {
+      return_value_(""),
+      previously_focused_element_(nullptr) {
   UseCounter::Count(document, WebFeature::kDialogElement);
 }
 
@@ -130,6 +132,17 @@
     return_value_ = return_value;
 
   ScheduleCloseEvent();
+
+  // We should call focus() last since it will fire a focus event which could
+  // modify this element.
+  if (RuntimeEnabledFeatures::DialogFocusNewSpecBehaviorEnabled() &&
+      previously_focused_element_) {
+    FocusOptions focus_options;
+    focus_options.setPreventScroll(true);
+    Element* previously_focused_element = previously_focused_element_;
+    previously_focused_element_ = nullptr;
+    previously_focused_element->focus(&focus_options);
+  }
 }
 
 void HTMLDialogElement::SetIsModal(bool is_modal) {
@@ -158,6 +171,8 @@
   // Element::isFocusable, which requires an up-to-date layout.
   GetDocument().UpdateStyleAndLayout(DocumentUpdateReason::kJavaScript);
 
+  previously_focused_element_ = GetDocument().FocusedElement();
+
   SetFocusForDialog(this);
 }
 
@@ -197,6 +212,8 @@
   // is thrown away.
   InertSubtreesChanged(GetDocument());
 
+  previously_focused_element_ = GetDocument().FocusedElement();
+
   SetFocusForDialog(this);
 }
 
@@ -215,4 +232,9 @@
   HTMLElement::DefaultEventHandler(event);
 }
 
+void HTMLDialogElement::Trace(Visitor* visitor) const {
+  visitor->Trace(previously_focused_element_);
+  HTMLElement::Trace(visitor);
+}
+
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/html/html_dialog_element.h b/third_party/blink/renderer/core/html/html_dialog_element.h
index 605672be0..56c6579 100644
--- a/third_party/blink/renderer/core/html/html_dialog_element.h
+++ b/third_party/blink/renderer/core/html/html_dialog_element.h
@@ -40,6 +40,8 @@
  public:
   explicit HTMLDialogElement(Document&);
 
+  void Trace(Visitor*) const override;
+
   void close(const String& return_value = String());
   void show();
   void showModal(ExceptionState&);
@@ -60,6 +62,7 @@
 
   bool is_modal_;
   String return_value_;
+  WeakMember<Element> previously_focused_element_;
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/input/mouse_event_manager.cc b/third_party/blink/renderer/core/input/mouse_event_manager.cc
index 022a9be..27586bd8 100644
--- a/third_party/blink/renderer/core/input/mouse_event_manager.cc
+++ b/third_party/blink/renderer/core/input/mouse_event_manager.cc
@@ -4,6 +4,7 @@
 
 #include "third_party/blink/renderer/core/input/mouse_event_manager.h"
 
+#include "base/metrics/histogram_macros.h"
 #include "build/build_config.h"
 #include "third_party/blink/public/common/widget/screen_info.h"
 #include "third_party/blink/public/mojom/input/focus_type.mojom-blink.h"
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 1eb2e9a..0fe77445 100644
--- a/third_party/blink/renderer/core/inspector/inspector_overlay_agent.cc
+++ b/third_party/blink/renderer/core/inspector/inspector_overlay_agent.cc
@@ -83,6 +83,7 @@
 #include "third_party/blink/renderer/platform/heap/heap.h"
 #include "third_party/blink/renderer/platform/keyboard_codes.h"
 #include "third_party/inspector_protocol/crdtp/json.h"
+#include "ui/accessibility/ax_mode.h"
 #include "v8/include/v8.h"
 
 using crdtp::SpanFrom;
@@ -436,7 +437,7 @@
 void InspectorOverlayAgent::EnsureAXContext(Node* node) {
   Document& document = node->GetDocument();
   if (!document_to_ax_context_.Contains(&document)) {
-    auto context = std::make_unique<AXContext>(document);
+    auto context = std::make_unique<AXContext>(document, ui::kAXModeComplete);
     document_to_ax_context_.Set(&document, std::move(context));
   }
 }
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_items_builder.cc b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_items_builder.cc
index 71a44bb..0db5481fb 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_items_builder.cc
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_items_builder.cc
@@ -6,6 +6,7 @@
 
 #include <type_traits>
 
+#include "base/containers/adapters.h"
 #include "third_party/blink/renderer/core/layout/layout_inline.h"
 #include "third_party/blink/renderer/core/layout/layout_text.h"
 #include "third_party/blink/renderer/core/layout/ng/inline/layout_ng_text.h"
@@ -505,6 +506,8 @@
 
   RestoreTrailingCollapsibleSpaceIfRemoved();
 
+  if (text_chunk_offsets_ && AppendTextChunks(string, *layout_object))
+    return;
   if (!ComputedStyle::CollapseWhiteSpace(whitespace))
     AppendPreserveWhitespace(string, &style, layout_object);
   else if (ComputedStyle::PreserveNewline(whitespace) && !is_svg_text)
@@ -514,6 +517,38 @@
 }
 
 template <typename OffsetMappingBuilder>
+bool NGInlineItemsBuilderTemplate<OffsetMappingBuilder>::AppendTextChunks(
+    const String& string,
+    LayoutText& layout_text) {
+  auto iter = text_chunk_offsets_->find(&layout_text);
+  if (iter == text_chunk_offsets_->end())
+    return false;
+  const ComputedStyle& style = layout_text.StyleRef();
+  EWhiteSpace whitespace = style.WhiteSpace();
+  unsigned start = 0;
+  for (unsigned offset : iter->value) {
+    DCHECK_LT(offset, string.length());
+    if (start < offset) {
+      if (!ComputedStyle::CollapseWhiteSpace(whitespace)) {
+        AppendPreserveWhitespace(string.Substring(start, offset - start),
+                                 &style, &layout_text);
+      } else {
+        AppendCollapseWhitespace(StringView(string, start, offset - start),
+                                 &style, &layout_text);
+      }
+    }
+    ExitAndEnterSvgTextChunk(layout_text);
+    start = offset;
+  }
+  if (!ComputedStyle::CollapseWhiteSpace(whitespace)) {
+    AppendPreserveWhitespace(string.Substring(start), &style, &layout_text);
+  } else {
+    AppendCollapseWhitespace(StringView(string, start), &style, &layout_text);
+  }
+  return true;
+}
+
+template <typename OffsetMappingBuilder>
 void NGInlineItemsBuilderTemplate<
     OffsetMappingBuilder>::AppendCollapseWhitespace(const StringView string,
                                                     const ComputedStyle* style,
@@ -887,6 +922,38 @@
   return item;
 }
 
+// The logic is similar to AppendForcedBreak().
+template <typename OffsetMappingBuilder>
+void NGInlineItemsBuilderTemplate<
+    OffsetMappingBuilder>::ExitAndEnterSvgTextChunk(LayoutText& layout_text) {
+  DCHECK(block_flow_->IsNGSVGText());
+  DCHECK(text_chunk_offsets_);
+
+  if (bidi_context_.IsEmpty())
+    return;
+  typename OffsetMappingBuilder::SourceNodeScope scope(&mapping_builder_,
+                                                       nullptr);
+  // These bidi controls need to be associated with the |layout_text| so
+  // that items from a LayoutObject are consecutive.
+  for (const auto& bidi : base::Reversed(bidi_context_))
+    AppendOpaque(NGInlineItem::kBidiControl, bidi.exit, &layout_text);
+
+  // Then re-add bidi controls to restore the bidi context.
+  for (const auto& bidi : bidi_context_)
+    AppendOpaque(NGInlineItem::kBidiControl, bidi.enter, &layout_text);
+}
+
+template <typename OffsetMappingBuilder>
+void NGInlineItemsBuilderTemplate<OffsetMappingBuilder>::EnterSvgTextChunk(
+    const ComputedStyle* style) {
+  if (LIKELY(!block_flow_->IsNGSVGText() || !text_chunk_offsets_))
+    return;
+  EnterBidiContext(nullptr, style, kLeftToRightIsolateCharacter,
+                   kRightToLeftIsolateCharacter,
+                   kPopDirectionalIsolateCharacter);
+  // This context is automatically popped by Exit(nullptr) in ExitBlock().
+}
+
 template <typename OffsetMappingBuilder>
 NGInlineItem& NGInlineItemsBuilderTemplate<OffsetMappingBuilder>::Append(
     NGInlineItem::NGInlineItemType type,
@@ -1076,6 +1143,7 @@
     const ComputedStyle* style) {
   // Handle bidi-override on the block itself.
   if (style->RtlOrdering() == EOrder::kLogical) {
+    EnterSvgTextChunk(style);
     switch (style->GetUnicodeBidi()) {
       case UnicodeBidi::kNormal:
       case UnicodeBidi::kEmbed:
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_items_builder.h b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_items_builder.h
index d0354cf7..e0ce1a02 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_items_builder.h
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_items_builder.h
@@ -9,6 +9,7 @@
 #include "third_party/blink/renderer/core/layout/ng/inline/empty_offset_mapping_builder.h"
 #include "third_party/blink/renderer/core/layout/ng/inline/ng_inline_item.h"
 #include "third_party/blink/renderer/core/layout/ng/inline/ng_offset_mapping_builder.h"
+#include "third_party/blink/renderer/core/layout/ng/svg/svg_inline_node_data.h"
 #include "third_party/blink/renderer/platform/fonts/font_height.h"
 #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h"
 #include "third_party/blink/renderer/platform/wtf/text/string_builder.h"
@@ -44,9 +45,13 @@
 
  public:
   // Create a builder that appends items to |items|.
-  NGInlineItemsBuilderTemplate(LayoutBlockFlow* block_flow,
-                               Vector<NGInlineItem>* items)
-      : block_flow_(block_flow), items_(items) {}
+  NGInlineItemsBuilderTemplate(
+      LayoutBlockFlow* block_flow,
+      Vector<NGInlineItem>* items,
+      const SvgTextChunkOffsets* chunk_offsets = nullptr)
+      : block_flow_(block_flow),
+        items_(items),
+        text_chunk_offsets_(chunk_offsets) {}
   ~NGInlineItemsBuilderTemplate();
 
   LayoutBlockFlow* GetLayoutBlockFlow() const { return block_flow_; }
@@ -178,6 +183,8 @@
   };
   Vector<BidiContext> bidi_context_;
 
+  const SvgTextChunkOffsets* text_chunk_offsets_;
+
   bool has_bidi_controls_ = false;
   bool has_ruby_ = false;
   bool is_empty_inline_ = true;
@@ -202,6 +209,9 @@
 
   void AppendForcedBreakCollapseWhitespace(LayoutObject*);
   void AppendForcedBreak(LayoutObject*);
+  bool AppendTextChunks(const String& string, LayoutText& layout_text);
+  void ExitAndEnterSvgTextChunk(LayoutText& layout_text);
+  void EnterSvgTextChunk(const ComputedStyle* style);
 
   void RemoveTrailingCollapsibleSpaceIfExists();
   void RemoveTrailingCollapsibleSpace(NGInlineItem*);
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.cc b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.cc
index 82837a18..b18cd3b 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.cc
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.cc
@@ -919,13 +919,18 @@
   DCHECK(!layout_block_flow->GetDocument().NeedsLayoutTreeUpdate() ||
          layout_block_flow->IsLayoutNGObjectForCanvasFormattedText());
 
+  const SvgTextChunkOffsets* chunk_offsets = nullptr;
+  if (data->svg_node_data_ && data->svg_node_data_->chunk_offsets.size() > 0)
+    chunk_offsets = &data->svg_node_data_->chunk_offsets;
+
   // TODO(xiaochengh): ComputeOffsetMappingIfNeeded() discards the
   // NGInlineItems and text content built by |builder|, because they are
   // already there in NGInlineNodeData. For efficiency, we should make
   // |builder| not construct items and text content.
   Vector<NGInlineItem> items;
   items.ReserveCapacity(EstimateInlineItemsCount(*layout_block_flow));
-  NGInlineItemsBuilderForOffsetMapping builder(layout_block_flow, &items);
+  NGInlineItemsBuilderForOffsetMapping builder(layout_block_flow, &items,
+                                               chunk_offsets);
   builder.GetOffsetMappingBuilder().ReserveCapacity(
       EstimateOffsetMappingItemsCount(*layout_block_flow));
   CollectInlinesInternal(&builder, nullptr);
@@ -989,6 +994,7 @@
   LayoutBlockFlow* block = GetLayoutBlockFlow();
   block->WillCollectInlines();
 
+  const SvgTextChunkOffsets* chunk_offsets = nullptr;
   if (block->IsNGSVGText()) {
     // SVG <text> doesn't support reusing the previous result now.
     previous_data = nullptr;
@@ -999,12 +1005,14 @@
     Vector<NGInlineItem> items;
     items.ReserveCapacity(EstimateInlineItemsCount(*block));
     NGInlineItemsBuilderForOffsetMapping items_builder(block, &items);
-    items_builder.GetOffsetMappingBuilder().ReserveCapacity(
-        EstimateOffsetMappingItemsCount(*block));
+    NGOffsetMappingBuilder& mapping_builder =
+        items_builder.GetOffsetMappingBuilder();
+    mapping_builder.ReserveCapacity(EstimateOffsetMappingItemsCount(*block));
     CollectInlinesInternal(&items_builder, nullptr);
+    String ifc_text_content = items_builder.ToString();
 
     NGSVGTextLayoutAttributesBuilder svg_attr_builder(*this);
-    svg_attr_builder.Build(items_builder.ToString(), items);
+    svg_attr_builder.Build(ifc_text_content, items);
 
     auto svg_data = std::make_unique<SVGInlineNodeData>();
     svg_data->character_data_list = svg_attr_builder.CharacterDataList();
@@ -1012,11 +1020,39 @@
     svg_data->text_path_range_list = svg_attr_builder.TextPathRangeList();
     data->svg_node_data_ = std::move(svg_data);
 
-    // TODO(tkent): Pass "text chunk" information to NGInlineItemsBuilder.
+    // Compute DOM offsets of text chunks.
+    mapping_builder.SetDestinationString(ifc_text_content);
+    std::unique_ptr<NGOffsetMapping> mapping = mapping_builder.Build();
+    // Index in a UTF-32 sequence
+    unsigned last_addressable = 0;
+    // Index in a UTF-16 sequence for last_addressable.
+    unsigned text_content_offset = 0;
+    for (const auto& char_data : data->svg_node_data_->character_data_list) {
+      if (!char_data.second.anchored_chunk)
+        continue;
+      unsigned addressable_offset = char_data.first;
+      if (addressable_offset == 0u)
+        continue;
+      while (last_addressable < addressable_offset) {
+        ++last_addressable;
+        ++text_content_offset;
+        if (text_content_offset < ifc_text_content.length() &&
+            U16_IS_LEAD(ifc_text_content[text_content_offset - 1]) &&
+            U16_IS_TRAIL(ifc_text_content[text_content_offset]))
+          ++text_content_offset;
+      }
+      const auto* unit = mapping->GetLastMappingUnit(text_content_offset);
+      auto result = data->svg_node_data_->chunk_offsets.insert(
+          To<LayoutText>(&unit->GetLayoutObject()), Vector<unsigned>());
+      result.stored_value->value.push_back(
+          unit->ConvertTextContentToFirstDOMOffset(text_content_offset));
+    }
+    if (data->svg_node_data_->chunk_offsets.size() > 0)
+      chunk_offsets = &data->svg_node_data_->chunk_offsets;
   }
 
   data->items.ReserveCapacity(EstimateInlineItemsCount(*block));
-  NGInlineItemsBuilder builder(block, &data->items);
+  NGInlineItemsBuilder builder(block, &data->items, chunk_offsets);
   CollectInlinesInternal(&builder, previous_data);
   builder.DidFinishCollectInlines(data);
 
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_line_breaker.cc b/third_party/blink/renderer/core/layout/ng/inline/ng_line_breaker.cc
index 886b4ed..7995a2f 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_line_breaker.cc
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_line_breaker.cc
@@ -864,8 +864,18 @@
     result->should_create_line_box = true;
     auto shape_result_view =
         ShapeResultView::Create(&shape, offset_, glyph_end);
-    result->inline_size =
-        shape_result_view->SnappedWidth().ClampNegativeToZero();
+    // For general CSS text, we apply SnappedWidth().ClampNegativeToZero().
+    // However we need to remove ClampNegativeToZero() for SVG <text> in order
+    // to get similar character positioning.
+    //
+    // For general CSS text, a negative word-spacing value decreases
+    // inline_size of an NGInlineItemResult consisting of multiple characters,
+    // and the inline_size rarely becomes negative.  However, for SVG <text>,
+    // it decreases inline_size of an NGInlineItemResult consisting of only a
+    // space character, and the inline_size becomes negative easily.
+    //
+    // See svg/W3C-SVG-1.1/text-spacing-01-b.svg.
+    result->inline_size = shape_result_view->SnappedWidth();
     result->shape_result = std::move(shape_result_view);
     offset_ = glyph_end;
     position_ += result->inline_size;
diff --git a/third_party/blink/renderer/core/layout/ng/svg/svg_inline_node_data.h b/third_party/blink/renderer/core/layout/ng/svg/svg_inline_node_data.h
index 5cf792e..6a6a0c05d 100644
--- a/third_party/blink/renderer/core/layout/ng/svg/svg_inline_node_data.h
+++ b/third_party/blink/renderer/core/layout/ng/svg/svg_inline_node_data.h
@@ -12,6 +12,7 @@
 namespace blink {
 
 class LayoutObject;
+class LayoutText;
 
 struct SVGTextContentRange {
   DISALLOW_NEW();
@@ -30,11 +31,14 @@
 
 namespace blink {
 
+using SvgTextChunkOffsets = HashMap<const LayoutText*, Vector<unsigned>>;
+
 // SVG-specific data stored in NGInlineNodeData.
 struct SVGInlineNodeData final {
   Vector<std::pair<unsigned, NGSVGCharacterData>> character_data_list;
   Vector<SVGTextContentRange> text_length_range_list;
   Vector<SVGTextContentRange> text_path_range_list;
+  SvgTextChunkOffsets chunk_offsets;
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/layout/svg/layout_svg_inline_text.cc b/third_party/blink/renderer/core/layout/svg/layout_svg_inline_text.cc
index 2d31566..57fa461 100644
--- a/third_party/blink/renderer/core/layout/svg/layout_svg_inline_text.cc
+++ b/third_party/blink/renderer/core/layout/svg/layout_svg_inline_text.cc
@@ -461,6 +461,10 @@
 
   FontDescription font_description = unscaled_font_description;
   font_description.SetComputedSize(scaled_font_size);
+  font_description.SetLetterSpacing(font_description.LetterSpacing() *
+                                    scaling_factor);
+  font_description.SetWordSpacing(font_description.WordSpacing() *
+                                  scaling_factor);
 
   scaled_font =
       Font(font_description, document.GetStyleEngine().GetFontSelector());
diff --git a/third_party/blink/renderer/core/loader/prefetched_signed_exchange_manager.cc b/third_party/blink/renderer/core/loader/prefetched_signed_exchange_manager.cc
index 55f03c4..446f4dd 100644
--- a/third_party/blink/renderer/core/loader/prefetched_signed_exchange_manager.cc
+++ b/third_party/blink/renderer/core/loader/prefetched_signed_exchange_manager.cc
@@ -107,14 +107,13 @@
         std::move(resource_load_info_notifier_wrapper),
         WTF::Unretained(client)));
   }
-  void SetDefersLoading(LoaderFreezeMode value) override {
+  void Freeze(LoaderFreezeMode value) override {
     if (url_loader_) {
-      url_loader_->SetDefersLoading(value);
+      url_loader_->Freeze(value);
       return;
     }
-    pending_method_calls_.push(
-        WTF::Bind(&PrefetchedSignedExchangeLoader::SetDefersLoading,
-                  GetWeakPtr(), value));
+    pending_method_calls_.push(WTF::Bind(
+        &PrefetchedSignedExchangeLoader::Freeze, GetWeakPtr(), value));
   }
   void DidChangePriority(WebURLRequest::Priority new_priority,
                          int intra_priority_value) override {
diff --git a/third_party/blink/renderer/core/page/scrolling/text_fragment_selector_generator.cc b/third_party/blink/renderer/core/page/scrolling/text_fragment_selector_generator.cc
index f789de2..80440c6 100644
--- a/third_party/blink/renderer/core/page/scrolling/text_fragment_selector_generator.cc
+++ b/third_party/blink/renderer/core/page/scrolling/text_fragment_selector_generator.cc
@@ -4,6 +4,7 @@
 
 #include "third_party/blink/renderer/core/page/scrolling/text_fragment_selector_generator.h"
 
+#include "base/metrics/histogram_functions.h"
 #include "base/metrics/histogram_macros.h"
 #include "base/strings/strcat.h"
 #include "base/time/default_tick_clock.h"
diff --git a/third_party/blink/renderer/core/page/viewport_description.cc b/third_party/blink/renderer/core/page/viewport_description.cc
index 6955d5359..0ee19c1e 100644
--- a/third_party/blink/renderer/core/page/viewport_description.cc
+++ b/third_party/blink/renderer/core/page/viewport_description.cc
@@ -29,6 +29,7 @@
 
 #include "third_party/blink/renderer/core/page/viewport_description.h"
 
+#include "base/metrics/histogram_macros.h"
 #include "build/build_config.h"
 #include "third_party/blink/renderer/core/dom/document.h"
 #include "third_party/blink/renderer/core/frame/local_frame.h"
diff --git a/third_party/blink/renderer/core/paint/paint_layer_scrollable_area_test.cc b/third_party/blink/renderer/core/paint/paint_layer_scrollable_area_test.cc
index 78187982..09d5c4c 100644
--- a/third_party/blink/renderer/core/paint/paint_layer_scrollable_area_test.cc
+++ b/third_party/blink/renderer/core/paint/paint_layer_scrollable_area_test.cc
@@ -5,6 +5,7 @@
 #include "third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h"
 
 #include "build/build_config.h"
+#include "cc/layers/picture_layer.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "third_party/blink/public/common/features.h"
 #include "third_party/blink/renderer/core/animation/scroll_timeline.h"
diff --git a/third_party/blink/renderer/core/scheduler_integration_tests/frame_throttling_test.cc b/third_party/blink/renderer/core/scheduler_integration_tests/frame_throttling_test.cc
index 27fa2a8..0aa86e7 100644
--- a/third_party/blink/renderer/core/scheduler_integration_tests/frame_throttling_test.cc
+++ b/third_party/blink/renderer/core/scheduler_integration_tests/frame_throttling_test.cc
@@ -38,6 +38,7 @@
 #include "third_party/blink/renderer/core/testing/sim/sim_compositor.h"
 #include "third_party/blink/renderer/core/testing/sim/sim_request.h"
 #include "third_party/blink/renderer/core/testing/sim/sim_test.h"
+#include "third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.h"
 #include "third_party/blink/renderer/platform/graphics/paint/paint_controller.h"
 #include "third_party/blink/renderer/platform/graphics/paint/transform_paint_property_node.h"
 #include "third_party/blink/renderer/platform/testing/find_cc_layer.h"
diff --git a/third_party/blink/renderer/core/scroll/scrollable_area.cc b/third_party/blink/renderer/core/scroll/scrollable_area.cc
index 72853f1d..e1da07c 100644
--- a/third_party/blink/renderer/core/scroll/scrollable_area.cc
+++ b/third_party/blink/renderer/core/scroll/scrollable_area.cc
@@ -53,6 +53,7 @@
 #include "third_party/blink/renderer/core/scroll/scroll_animator_base.h"
 #include "third_party/blink/renderer/core/scroll/scrollbar_theme.h"
 #include "third_party/blink/renderer/core/scroll/smooth_scroll_sequencer.h"
+#include "third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.h"
 #include "third_party/blink/renderer/platform/graphics/graphics_layer.h"
 #include "third_party/blink/renderer/platform/instrumentation/tracing/trace_event.h"
 #include "third_party/blink/renderer/platform/scheduler/public/thread_scheduler.h"
diff --git a/third_party/blink/renderer/core/style/computed_style.cc b/third_party/blink/renderer/core/style/computed_style.cc
index b7a4bfb..c4c2389 100644
--- a/third_party/blink/renderer/core/style/computed_style.cc
+++ b/third_party/blink/renderer/core/style/computed_style.cc
@@ -2426,7 +2426,7 @@
 
 absl::optional<Color> ComputedStyle::AccentColorResolved() const {
   const StyleAutoColor& auto_color = AccentColor();
-  if (auto_color.IsAutoColor() || ShouldForceColor(auto_color))
+  if (auto_color.IsAutoColor())
     return absl::nullopt;
   return auto_color.Resolve(GetCurrentColor(), UsedColorScheme());
 }
diff --git a/third_party/blink/renderer/core/svg/graphics/svg_image.cc b/third_party/blink/renderer/core/svg/graphics/svg_image.cc
index 1b5b96d9..621ae36 100644
--- a/third_party/blink/renderer/core/svg/graphics/svg_image.cc
+++ b/third_party/blink/renderer/core/svg/graphics/svg_image.cc
@@ -119,7 +119,7 @@
       WebURLLoaderClient* client) override {
     NOTREACHED();
   }
-  void SetDefersLoading(LoaderFreezeMode) override {}
+  void Freeze(LoaderFreezeMode) override {}
   void DidChangePriority(WebURLRequest::Priority, int) override {}
   scoped_refptr<base::SingleThreadTaskRunner> GetTaskRunnerForBodyLoader()
       override {
diff --git a/third_party/blink/renderer/modules/DEPS b/third_party/blink/renderer/modules/DEPS
index 1779202d..d251717 100644
--- a/third_party/blink/renderer/modules/DEPS
+++ b/third_party/blink/renderer/modules/DEPS
@@ -20,6 +20,7 @@
     "!third_party/blink/renderer/core/frame/web_local_frame_impl.h",
     "!third_party/blink/renderer/core/frame/web_remote_frame_impl.h",
     "+third_party/blink/renderer/modules",
+    "+ui/accessibility/ax_mode.h",
     "+ui/gfx/geometry",
     "-web",
 ]
diff --git a/third_party/blink/renderer/modules/accessibility/accessibility_object_model_test.cc b/third_party/blink/renderer/modules/accessibility/accessibility_object_model_test.cc
index 8ba9a008..7583c62 100644
--- a/third_party/blink/renderer/modules/accessibility/accessibility_object_model_test.cc
+++ b/third_party/blink/renderer/modules/accessibility/accessibility_object_model_test.cc
@@ -12,6 +12,7 @@
 #include "third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.h"
 #include "third_party/blink/renderer/platform/testing/runtime_enabled_features_test_helpers.h"
 #include "third_party/blink/renderer/platform/wtf/hash_map.h"
+#include "ui/accessibility/ax_mode.h"
 
 namespace blink {
 namespace test {
@@ -36,7 +37,7 @@
   SimRequest main_resource("https://example.com/", "text/html");
   LoadURL("https://example.com/");
   main_resource.Complete("<button id=button>Click me</button>");
-  AXContext ax_context(GetDocument());
+  AXContext ax_context(GetDocument(), ui::kAXModeComplete);
 
   auto* button = GetDocument().getElementById("button");
   EXPECT_NE(nullptr, button->accessibleNode());
@@ -52,7 +53,7 @@
   SimRequest main_resource("https://example.com/", "text/html");
   LoadURL("https://example.com/");
   main_resource.Complete("<button id=button>Click me</button>");
-  AXContext ax_context(GetDocument());
+  AXContext ax_context(GetDocument(), ui::kAXModeComplete);
 
   auto* cache = AXObjectCache();
   ASSERT_NE(nullptr, cache);
@@ -78,7 +79,7 @@
   SimRequest main_resource("https://example.com/", "text/html");
   LoadURL("https://example.com/");
   main_resource.Complete("<input id=textbox>");
-  AXContext ax_context(GetDocument());
+  AXContext ax_context(GetDocument(), ui::kAXModeComplete);
 
   // Set ARIA attributes.
   auto* textbox = GetDocument().getElementById("textbox");
@@ -107,7 +108,7 @@
   SimRequest main_resource("https://example.com/", "text/html");
   LoadURL("https://example.com/");
   main_resource.Complete("<input type=button id=button>");
-  AXContext ax_context(GetDocument());
+  AXContext ax_context(GetDocument(), ui::kAXModeComplete);
 
   // Set ARIA attributes.
   auto* button = GetDocument().getElementById("button");
@@ -159,7 +160,7 @@
   SimRequest main_resource("https://example.com/", "text/html");
   LoadURL("https://example.com/");
   main_resource.Complete("<div role=slider id=slider>");
-  AXContext ax_context(GetDocument());
+  AXContext ax_context(GetDocument(), ui::kAXModeComplete);
 
   auto* slider = GetDocument().getElementById("slider");
   ASSERT_NE(nullptr, slider);
@@ -185,7 +186,7 @@
   SimRequest main_resource("https://example.com/", "text/html");
   LoadURL("https://example.com/");
   main_resource.Complete("<div role=heading id=heading>");
-  AXContext ax_context(GetDocument());
+  AXContext ax_context(GetDocument(), ui::kAXModeComplete);
 
   auto* heading = GetDocument().getElementById("heading");
   ASSERT_NE(nullptr, heading);
@@ -202,7 +203,7 @@
   LoadURL("https://example.com/");
   main_resource.Complete(
       "<div role=list><div role=listitem id=listitem></div></div>");
-  AXContext ax_context(GetDocument());
+  AXContext ax_context(GetDocument(), ui::kAXModeComplete);
 
   auto* listitem = GetDocument().getElementById("listitem");
   ASSERT_NE(nullptr, listitem);
@@ -227,7 +228,7 @@
       </div>
     </div>
   )HTML");
-  AXContext ax_context(GetDocument());
+  AXContext ax_context(GetDocument(), ui::kAXModeComplete);
 
   auto* grid = GetDocument().getElementById("grid");
   ASSERT_NE(nullptr, grid);
@@ -282,7 +283,7 @@
     <div id=error role=article>Error</div>
     <div id=error2 role=banner>Error 2</div>
   )HTML");
-  AXContext ax_context(GetDocument());
+  AXContext ax_context(GetDocument(), ui::kAXModeComplete);
 
   auto* target = GetDocument().getElementById("target");
   auto* cache = AXObjectCache();
@@ -361,7 +362,7 @@
     <label id=l2>Label 2</label>
     <label id=l3>Label 3</label>
   )HTML");
-  AXContext ax_context(GetDocument());
+  AXContext ax_context(GetDocument(), ui::kAXModeComplete);
 
   auto* target = GetDocument().getElementById("target");
   auto* l1 = GetDocument().getElementById("l1");
diff --git a/third_party/blink/renderer/modules/accessibility/ax_object_test.cc b/third_party/blink/renderer/modules/accessibility/ax_object_test.cc
index 191831a1..3c86689 100644
--- a/third_party/blink/renderer/modules/accessibility/ax_object_test.cc
+++ b/third_party/blink/renderer/modules/accessibility/ax_object_test.cc
@@ -10,6 +10,7 @@
 #include "third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.h"
 #include "third_party/blink/renderer/modules/accessibility/testing/accessibility_test.h"
 #include "third_party/blink/renderer/platform/weborigin/kurl.h"
+#include "ui/accessibility/ax_mode.h"
 
 namespace blink {
 namespace test {
@@ -954,7 +955,7 @@
 
   // Now recreate an AXContext, simulating what happens if accessibility
   // is enabled after the document is loaded.
-  ax_context_ = std::make_unique<AXContext>(GetDocument());
+  ax_context_ = std::make_unique<AXContext>(GetDocument(), ui::kAXModeComplete);
 
   const AXObject* root = GetAXRootObject();
   ASSERT_NE(nullptr, root);
@@ -980,7 +981,7 @@
 
   // Now recreate an AXContext, simulating what happens if accessibility
   // is enabled after the document is loaded.
-  ax_context_ = std::make_unique<AXContext>(GetDocument());
+  ax_context_ = std::make_unique<AXContext>(GetDocument(), ui::kAXModeComplete);
 
   const AXObject* root = GetAXRootObject();
   ASSERT_NE(nullptr, root);
diff --git a/third_party/blink/renderer/modules/accessibility/inspector_accessibility_agent.cc b/third_party/blink/renderer/modules/accessibility/inspector_accessibility_agent.cc
index 4e1c498..009d082 100644
--- a/third_party/blink/renderer/modules/accessibility/inspector_accessibility_agent.cc
+++ b/third_party/blink/renderer/modules/accessibility/inspector_accessibility_agent.cc
@@ -23,6 +23,7 @@
 #include "third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.h"
 #include "third_party/blink/renderer/modules/accessibility/inspector_type_builder_helper.h"
 #include "third_party/blink/renderer/platform/wtf/deque.h"
+#include "ui/accessibility/ax_mode.h"
 
 namespace blink {
 
@@ -547,7 +548,7 @@
   LocalFrame* local_frame = document.GetFrame();
   if (!local_frame)
     return Response::ServerError("Frame is detached.");
-  AXContext ax_context(document);
+  AXContext ax_context(document, ui::kAXModeComplete);
   auto& cache = To<AXObjectCacheImpl>(ax_context.GetAXObjectCache());
 
   AXObject* inspected_ax_object = cache.GetOrCreate(dom_node);
@@ -757,7 +758,7 @@
   std::unique_ptr<protocol::Array<AXNode>> nodes =
       std::make_unique<protocol::Array<protocol::Accessibility::AXNode>>();
 
-  AXContext ax_context(*document);
+  AXContext ax_context(*document, ui::kAXModeComplete);
   auto& cache = To<AXObjectCacheImpl>(ax_context.GetAXObjectCache());
 
   Deque<std::pair<AXID, int>> id_depths;
@@ -961,7 +962,7 @@
   document.UpdateStyleAndLayout(DocumentUpdateReason::kInspector);
   DocumentLifecycle::DisallowTransitionScope disallow_transition(
       document.Lifecycle());
-  AXContext ax_context(document);
+  AXContext ax_context(document, ui::kAXModeComplete);
 
   *nodes = std::make_unique<protocol::Array<protocol::Accessibility::AXNode>>();
   auto& cache = To<AXObjectCacheImpl>(ax_context.GetAXObjectCache());
@@ -1051,7 +1052,7 @@
 void InspectorAccessibilityAgent::CreateAXContext() {
   Document* document = inspected_frames_->Root()->GetDocument();
   if (document)
-    context_ = std::make_unique<AXContext>(*document);
+    context_ = std::make_unique<AXContext>(*document, ui::kAXModeComplete);
 }
 
 void InspectorAccessibilityAgent::Trace(Visitor* visitor) const {
diff --git a/third_party/blink/renderer/modules/accessibility/testing/accessibility_test.cc b/third_party/blink/renderer/modules/accessibility/testing/accessibility_test.cc
index b8ca5fe7..7256c497 100644
--- a/third_party/blink/renderer/modules/accessibility/testing/accessibility_test.cc
+++ b/third_party/blink/renderer/modules/accessibility/testing/accessibility_test.cc
@@ -11,6 +11,7 @@
 #include "third_party/blink/renderer/core/layout/layout_view.h"
 #include "third_party/blink/renderer/modules/accessibility/ax_object.h"
 #include "third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.h"
+#include "ui/accessibility/ax_mode.h"
 
 namespace blink {
 
@@ -19,7 +20,7 @@
 
 void AccessibilityTest::SetUp() {
   RenderingTest::SetUp();
-  ax_context_ = std::make_unique<AXContext>(GetDocument());
+  ax_context_ = std::make_unique<AXContext>(GetDocument(), ui::kAXModeComplete);
 }
 
 AXObjectCacheImpl& AccessibilityTest::GetAXObjectCache() const {
diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d_api_test.cc b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d_api_test.cc
index 25ad152..4b409e6 100644
--- a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d_api_test.cc
+++ b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d_api_test.cc
@@ -26,6 +26,7 @@
 #include "third_party/blink/renderer/modules/canvas/canvas2d/canvas_gradient.h"
 #include "third_party/blink/renderer/modules/canvas/canvas2d/canvas_pattern.h"
 #include "third_party/blink/renderer/modules/webgl/webgl_rendering_context.h"
+#include "ui/accessibility/ax_mode.h"
 
 using testing::Mock;
 
@@ -344,7 +345,7 @@
 
 TEST_F(CanvasRenderingContext2DAPITest, AccessibilityRectTestForAddHitRegion) {
   ResetCanvasForAccessibilityRectTest(GetDocument());
-  AXContext ax_context(GetDocument());
+  AXContext ax_context(GetDocument(), ui::kAXModeComplete);
 
   Element* button_element = GetDocument().getElementById("button");
   auto* canvas = To<HTMLCanvasElement>(GetDocument().getElementById("canvas"));
@@ -373,7 +374,7 @@
 TEST_F(CanvasRenderingContext2DAPITest,
        AccessibilityRectTestForDrawFocusIfNeeded) {
   ResetCanvasForAccessibilityRectTest(GetDocument());
-  AXContext ax_context(GetDocument());
+  AXContext ax_context(GetDocument(), ui::kAXModeComplete);
 
   Element* button_element = GetDocument().getElementById("button");
   auto* canvas = To<HTMLCanvasElement>(GetDocument().getElementById("canvas"));
diff --git a/third_party/blink/renderer/modules/exported/web_ax_context.cc b/third_party/blink/renderer/modules/exported/web_ax_context.cc
index 5553fb8b..3a0ff3f 100644
--- a/third_party/blink/renderer/modules/exported/web_ax_context.cc
+++ b/third_party/blink/renderer/modules/exported/web_ax_context.cc
@@ -9,11 +9,12 @@
 #include "third_party/blink/renderer/core/accessibility/ax_object_cache.h"
 #include "third_party/blink/renderer/core/dom/document.h"
 #include "third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.h"
+#include "ui/accessibility/ax_mode.h"
 
 namespace blink {
 
-WebAXContext::WebAXContext(WebDocument root_document)
-    : private_(new AXContext(*root_document.Unwrap<Document>())) {}
+WebAXContext::WebAXContext(WebDocument root_document, const ui::AXMode& mode)
+    : private_(new AXContext(*root_document.Unwrap<Document>(), mode)) {}
 
 WebAXContext::~WebAXContext() {}
 
@@ -31,4 +32,8 @@
       static_cast<AXObjectCacheImpl*>(&private_->GetAXObjectCache())->Root());
 }
 
+const ui::AXMode& WebAXContext::GetAXMode() const {
+  return private_->GetAXMode();
+}
+
 }  // namespace blink
diff --git a/third_party/blink/renderer/modules/media_capabilities/media_capabilities.cc b/third_party/blink/renderer/modules/media_capabilities/media_capabilities.cc
index d40f300..391d9bd 100644
--- a/third_party/blink/renderer/modules/media_capabilities/media_capabilities.cc
+++ b/third_party/blink/renderer/modules/media_capabilities/media_capabilities.cc
@@ -421,7 +421,7 @@
                                 mime_type.Ascii(), codec_vector)) {
     DVLOG(2) << __func__
              << " MSE does not support the content type: " << mime_type.Ascii()
-             << " " << (codec_vector.empty() ? "" : codec_vector[1]);
+             << " " << (codec_vector.empty() ? "" : codec_vector[0]);
     return false;
   }
 
diff --git a/third_party/blink/renderer/modules/mediastream/media_stream_track.cc b/third_party/blink/renderer/modules/mediastream/media_stream_track.cc
index b7c592d33..aaf6ba9 100644
--- a/third_party/blink/renderer/modules/mediastream/media_stream_track.cc
+++ b/third_party/blink/renderer/modules/mediastream/media_stream_track.cc
@@ -291,7 +291,11 @@
 }
 
 String MediaStreamTrack::label() const {
-  return component_->Source()->GetName();
+  String label = component_->Source()->GetName();
+  if (label.Contains("AirPods")) {
+    label = "AirPods";
+  }
+  return label;
 }
 
 bool MediaStreamTrack::enabled() const {
diff --git a/third_party/blink/renderer/modules/mediastream/media_stream_track_test.cc b/third_party/blink/renderer/modules/mediastream/media_stream_track_test.cc
index 8b7427b..109e8ac4 100644
--- a/third_party/blink/renderer/modules/mediastream/media_stream_track_test.cc
+++ b/third_party/blink/renderer/modules/mediastream/media_stream_track_test.cc
@@ -69,4 +69,17 @@
   EXPECT_EQ(testObserver->ObservationCount(), 2);
 }
 
+TEST_F(MediaStreamTrackTest, LabelSanitizer) {
+  V8TestingScope v8_scope;
+
+  MediaStreamSource* source = MakeGarbageCollected<MediaStreamSource>(
+      "id", MediaStreamSource::StreamType::kTypeAudio, "Chromiums AirPods",
+      false /* remote */);
+  MediaStreamComponent* component =
+      MakeGarbageCollected<MediaStreamComponent>(source);
+  MediaStreamTrack* track = MakeGarbageCollected<MediaStreamTrack>(
+      v8_scope.GetExecutionContext(), component);
+  EXPECT_EQ(track->label(), "AirPods");
+}
+
 }  // namespace blink
diff --git a/third_party/blink/renderer/modules/peerconnection/media_stream_video_webrtc_sink.cc b/third_party/blink/renderer/modules/peerconnection/media_stream_video_webrtc_sink.cc
index 600ec7a..0393d76 100644
--- a/third_party/blink/renderer/modules/peerconnection/media_stream_video_webrtc_sink.cc
+++ b/third_party/blink/renderer/modules/peerconnection/media_stream_video_webrtc_sink.cc
@@ -21,7 +21,6 @@
 #include "third_party/blink/renderer/platform/scheduler/public/post_cross_thread_task.h"
 #include "third_party/blink/renderer/platform/wtf/cross_thread_functional.h"
 #include "third_party/blink/renderer/platform/wtf/thread_safe_ref_counted.h"
-#include "third_party/webrtc/api/video_track_source_proxy.h"
 
 namespace blink {
 
diff --git a/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc b/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc
index b819d46..b0405d0 100644
--- a/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc
+++ b/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc
@@ -60,7 +60,7 @@
 #include "third_party/webrtc/api/call/call_factory_interface.h"
 #include "third_party/webrtc/api/peer_connection_interface.h"
 #include "third_party/webrtc/api/rtc_event_log/rtc_event_log_factory.h"
-#include "third_party/webrtc/api/video_track_source_proxy.h"
+#include "third_party/webrtc/api/video_track_source_proxy_factory.h"
 #include "third_party/webrtc/media/engine/fake_video_codec_factory.h"
 #include "third_party/webrtc/media/engine/multiplex_codec_factory.h"
 #include "third_party/webrtc/media/engine/webrtc_media_engine.h"
@@ -218,34 +218,40 @@
 
  private:
   static void LogTaskLatencyWorker(base::TimeDelta sample) {
-    UMA_HISTOGRAM_CUSTOM_TIMES("WebRTC.PeerConnection.Latency.Worker", sample,
-                               base::TimeDelta::FromMicroseconds(1),
-                               base::TimeDelta::FromSeconds(10), 50);
+    UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES(
+        "WebRTC.PeerConnection.Latency.Worker", sample,
+        base::TimeDelta::FromMicroseconds(1), base::TimeDelta::FromSeconds(10),
+        50);
   }
   static void LogTaskDurationWorker(base::TimeDelta sample) {
-    UMA_HISTOGRAM_CUSTOM_TIMES("WebRTC.PeerConnection.Duration.Worker", sample,
-                               base::TimeDelta::FromMicroseconds(1),
-                               base::TimeDelta::FromSeconds(10), 50);
+    UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES(
+        "WebRTC.PeerConnection.Duration.Worker", sample,
+        base::TimeDelta::FromMicroseconds(1), base::TimeDelta::FromSeconds(10),
+        50);
   }
   static void LogTaskLatencyNetwork(base::TimeDelta sample) {
-    UMA_HISTOGRAM_CUSTOM_TIMES("WebRTC.PeerConnection.Latency.Network", sample,
-                               base::TimeDelta::FromMicroseconds(1),
-                               base::TimeDelta::FromSeconds(10), 50);
+    UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES(
+        "WebRTC.PeerConnection.Latency.Network", sample,
+        base::TimeDelta::FromMicroseconds(1), base::TimeDelta::FromSeconds(10),
+        50);
   }
   static void LogTaskDurationNetwork(base::TimeDelta sample) {
-    UMA_HISTOGRAM_CUSTOM_TIMES("WebRTC.PeerConnection.Duration.Network", sample,
-                               base::TimeDelta::FromMicroseconds(1),
-                               base::TimeDelta::FromSeconds(10), 50);
+    UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES(
+        "WebRTC.PeerConnection.Duration.Network", sample,
+        base::TimeDelta::FromMicroseconds(1), base::TimeDelta::FromSeconds(10),
+        50);
   }
   static void LogTaskLatencySignaling(base::TimeDelta sample) {
-    UMA_HISTOGRAM_CUSTOM_TIMES("WebRTC.PeerConnection.Latency.Signaling",
-                               sample, base::TimeDelta::FromMicroseconds(1),
-                               base::TimeDelta::FromSeconds(10), 50);
+    UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES(
+        "WebRTC.PeerConnection.Latency.Signaling", sample,
+        base::TimeDelta::FromMicroseconds(1), base::TimeDelta::FromSeconds(10),
+        50);
   }
   static void LogTaskDurationSignaling(base::TimeDelta sample) {
-    UMA_HISTOGRAM_CUSTOM_TIMES("WebRTC.PeerConnection.Duration.Signaling",
-                               sample, base::TimeDelta::FromMicroseconds(1),
-                               base::TimeDelta::FromSeconds(10), 50);
+    UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES(
+        "WebRTC.PeerConnection.Duration.Signaling", sample,
+        base::TimeDelta::FromMicroseconds(1), base::TimeDelta::FromSeconds(10),
+        50);
   }
 
   static void InitializeOnThread(
@@ -721,8 +727,8 @@
   if (!PeerConnectionFactoryCreated())
     CreatePeerConnectionFactory();
 
-  return webrtc::VideoTrackSourceProxy::Create(GetSignalingThread(),
-                                               GetNetworkThread(), source)
+  return webrtc::CreateVideoTrackSourceProxy(GetSignalingThread(),
+                                             GetNetworkThread(), source)
       .get();
 }
 
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_handler_test.cc b/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_handler_test.cc
index 7eda91c7..17415721 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_handler_test.cc
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_handler_test.cc
@@ -1298,7 +1298,7 @@
   EXPECT_TRUE(mock_peer_connection_->adaptation_resources().IsEmpty());
   pc_handler_->OnThermalStateChange(
       mojom::blink::DeviceThermalState::kCritical);
-#if defined(OS_MAC)
+#if defined(OS_MAC) || defined(OS_CHROMEOS)
   bool expect_disabled = false;
 #else
   bool expect_disabled = true;
diff --git a/third_party/blink/renderer/modules/peerconnection/thermal_resource.cc b/third_party/blink/renderer/modules/peerconnection/thermal_resource.cc
index 23f7476..8ad426a5 100644
--- a/third_party/blink/renderer/modules/peerconnection/thermal_resource.cc
+++ b/third_party/blink/renderer/modules/peerconnection/thermal_resource.cc
@@ -17,7 +17,7 @@
 
 const base::Feature kWebRtcThermalResource {
   "WebRtcThermalResource",
-#if defined(OS_MAC)
+#if defined(OS_MAC) || defined(OS_CHROMEOS)
       base::FEATURE_ENABLED_BY_DEFAULT
 #else
       base::FEATURE_DISABLED_BY_DEFAULT
diff --git a/third_party/blink/renderer/modules/permissions/permissions.cc b/third_party/blink/renderer/modules/permissions/permissions.cc
index 798a5224..ed8f7b0 100644
--- a/third_party/blink/renderer/modules/permissions/permissions.cc
+++ b/third_party/blink/renderer/modules/permissions/permissions.cc
@@ -7,6 +7,7 @@
 #include <memory>
 #include <utility>
 
+#include "base/metrics/histogram_functions.h"
 #include "third_party/blink/public/platform/platform.h"
 #include "third_party/blink/renderer/bindings/core/v8/script_promise.h"
 #include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h"
diff --git a/third_party/blink/renderer/modules/service_worker/web_embedded_worker_impl_test.cc b/third_party/blink/renderer/modules/service_worker/web_embedded_worker_impl_test.cc
index 0946b4ba..17f279f 100644
--- a/third_party/blink/renderer/modules/service_worker/web_embedded_worker_impl_test.cc
+++ b/third_party/blink/renderer/modules/service_worker/web_embedded_worker_impl_test.cc
@@ -83,7 +83,7 @@
     // Don't handle other requests intentionally to emulate ongoing load.
   }
 
-  void SetDefersLoading(WebLoaderFreezeMode) override {}
+  void Freeze(WebLoaderFreezeMode) override {}
   void DidChangePriority(WebURLRequest::Priority, int) override {}
   scoped_refptr<base::SingleThreadTaskRunner> GetTaskRunnerForBodyLoader()
       override {
diff --git a/third_party/blink/renderer/modules/vibration/vibration_controller.cc b/third_party/blink/renderer/modules/vibration/vibration_controller.cc
index 07fb22f..463b1d4 100644
--- a/third_party/blink/renderer/modules/vibration/vibration_controller.cc
+++ b/third_party/blink/renderer/modules/vibration/vibration_controller.cc
@@ -19,6 +19,7 @@
 
 #include "third_party/blink/renderer/modules/vibration/vibration_controller.h"
 
+#include "base/metrics/histogram_functions.h"
 #include "third_party/blink/public/common/browser_interface_broker_proxy.h"
 #include "third_party/blink/public/platform/platform.h"
 #include "third_party/blink/public/platform/task_type.h"
diff --git a/third_party/blink/renderer/modules/webaudio/audio_param.cc b/third_party/blink/renderer/modules/webaudio/audio_param.cc
index 45e00ef9..4f88204 100644
--- a/third_party/blink/renderer/modules/webaudio/audio_param.cc
+++ b/third_party/blink/renderer/modules/webaudio/audio_param.cc
@@ -267,17 +267,17 @@
   }
 #elif defined(CPU_ARM_NEON)
   if (number_of_values >= 4) {
-    uint32x4_t defaults = static_cast<uint32x4_t>(vdupq_n_f32(default_value));
+    uint32x4_t defaults = vcvtq_u32_f32(vdupq_n_f32(default_value));
     for (k = 0; k < number_of_values; k += 4) {
       float32x4_t v = vld1q_f32(values + k);
       // Returns true (all ones) if v is not NaN
       uint32x4_t is_not_nan = vceqq_f32(v, v);
       // Get the parts that are not NaN
-      uint32x4_t result = vandq_u32(is_not_nan, v);
+      uint32x4_t result = vandq_u32(is_not_nan, vcvtq_u32_f32(v));
       // Replace the parts that are NaN with the default and merge with previous
       // result.  (Note: vbic_u32(x, y) = x and not y)
       result = vorrq_u32(result, vbicq_u32(defaults, is_not_nan));
-      vst1q_f32(values + k, static_cast<float32x4_t>(result));
+      vst1q_f32(values + k, vcvtq_f32_u32(result));
     }
   }
 #endif
diff --git a/third_party/blink/renderer/modules/webaudio/audio_param_timeline.cc b/third_party/blink/renderer/modules/webaudio/audio_param_timeline.cc
index 317af73..55e3673 100644
--- a/third_party/blink/renderer/modules/webaudio/audio_param_timeline.cc
+++ b/third_party/blink/renderer/modules/webaudio/audio_param_timeline.cc
@@ -699,6 +699,9 @@
     ExceptionState& exception_state) {
   DCHECK(IsMainThread());
 
+  if (!IsNonNegativeAudioParamTime(cancel_time, exception_state))
+    return;
+
   MutexLocker locker(events_lock_);
 
   // Remove all events starting at startTime.
diff --git a/third_party/blink/renderer/platform/heap/BUILD.gn b/third_party/blink/renderer/platform/heap/BUILD.gn
index 601e1692..723b7ae 100644
--- a/third_party/blink/renderer/platform/heap/BUILD.gn
+++ b/third_party/blink/renderer/platform/heap/BUILD.gn
@@ -114,6 +114,7 @@
       "v8_wrapper/member.h",
       "v8_wrapper/persistent.h",
       "v8_wrapper/process_heap.h",
+      "v8_wrapper/thread_local.h",
       "v8_wrapper/thread_state.cc",
       "v8_wrapper/thread_state.h",
       "v8_wrapper/thread_state_scopes.h",
diff --git a/third_party/blink/renderer/platform/heap/v8_wrapper/thread_local.h b/third_party/blink/renderer/platform/heap/v8_wrapper/thread_local.h
new file mode 100644
index 0000000..1a0c43b0
--- /dev/null
+++ b/third_party/blink/renderer/platform/heap/v8_wrapper/thread_local.h
@@ -0,0 +1,63 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_HEAP_V8_WRAPPER_THREAD_LOCAL_H_
+#define THIRD_PARTY_BLINK_RENDERER_PLATFORM_HEAP_V8_WRAPPER_THREAD_LOCAL_H_
+
+#include "base/compiler_specific.h"
+#include "build/build_config.h"
+#include "third_party/blink/renderer/platform/platform_export.h"
+
+// On component builds, always hide the thread_local variable behind a call.
+// This avoids complexity with "global-dyn" and allows to use "local-dyn"
+// instead, across all platforms. On non-component (release) builds, don't hide
+// the variable behind the call (to improve performance in access time), but use
+// different tls models on different platforms. On Windows, since chrome is
+// linked into the chrome.dll which is always linked to chrome.exe at static
+// link time (DT_NEEDED in ELF terms), use "init-exec". On Android, since the
+// library can be opened with "dlopen" (through JNI), use "local-dyn". On other
+// systems (Linux/ChromeOS/MacOS) use the fastest "local-exec".
+
+//         |_____component_____|___non-component___|
+// ________|_tls_model__|_hide_|_tls_model__|_hide_|
+// Windows | local-dyn  | yes  | init-exec  |  no  |
+// Android | local-dyn  | yes  | local-dyn  |  no  |
+// Other   | local-dyn  | yes  | local-exec |  no  |
+
+// The call is still cheaper than multiple calls through WTF/base/pthread*
+// layers.
+#if defined(COMPONENT_BUILD)
+#define BLINK_HEAP_HIDE_THREAD_LOCAL_IN_LIBRARY 1
+#else
+#define BLINK_HEAP_HIDE_THREAD_LOCAL_IN_LIBRARY 0
+#endif
+
+#if BLINK_HEAP_HIDE_THREAD_LOCAL_IN_LIBRARY
+#define BLINK_HEAP_THREAD_LOCAL_MODEL "local-dynamic"
+#else
+#if defined(OS_WIN)
+#define BLINK_HEAP_THREAD_LOCAL_MODEL "initial-exec"
+#elif defined(OS_ANDROID)
+#define BLINK_HEAP_THREAD_LOCAL_MODEL "local-dynamic"
+#else
+#define BLINK_HEAP_THREAD_LOCAL_MODEL "local-exec"
+#endif
+#endif
+
+#if defined(BLINK_HEAP_HIDE_THREAD_LOCAL_IN_LIBRARY)
+
+#define BLINK_HEAP_DECLARE_THREAD_LOCAL_GETTER(Name, Type, Member) \
+  static NOINLINE Type Name();
+#define BLINK_HEAP_DEFINE_THREAD_LOCAL_GETTER(Name, Type, Member) \
+  NOINLINE Type Name() { return Member; }
+
+#else  // !defined(BLINK_HEAP_HIDE_THREAD_LOCAL_IN_LIBRARY)
+
+#define BLINK_HEAP_DECLARE_THREAD_LOCAL_GETTER(Name, Type, Member) \
+  static ALWAYS_INLINE Type Name() { return Member; }
+#define BLINK_HEAP_DEFINE_THREAD_LOCAL_GETTER(Name, Type, Member)
+
+#endif  // defined(BLINK_HEAP_HIDE_THREAD_LOCAL_IN_LIBRARY)
+
+#endif  // THIRD_PARTY_BLINK_RENDERER_PLATFORM_HEAP_V8_WRAPPER_THREAD_LOCAL_H_
diff --git a/third_party/blink/renderer/platform/heap/v8_wrapper/thread_state.cc b/third_party/blink/renderer/platform/heap/v8_wrapper/thread_state.cc
index 78da3ce3..303c2839 100644
--- a/third_party/blink/renderer/platform/heap/v8_wrapper/thread_state.cc
+++ b/third_party/blink/renderer/platform/heap/v8_wrapper/thread_state.cc
@@ -82,14 +82,17 @@
 
 }  // namespace
 
-// static
-base::LazyInstance<WTF::ThreadSpecific<ThreadState*>>::Leaky
-    ThreadState::thread_specific_ = LAZY_INSTANCE_INITIALIZER;
+thread_local ThreadState* g_thread_specific_ CONSTINIT
+    __attribute__((tls_model(BLINK_HEAP_THREAD_LOCAL_MODEL))) = nullptr;
 
 // static
 alignas(ThreadState) uint8_t
     ThreadState::main_thread_state_storage_[sizeof(ThreadState)];
 
+BLINK_HEAP_DEFINE_THREAD_LOCAL_GETTER(ThreadState::Current,
+                                      ThreadState*,
+                                      g_thread_specific_)
+
 // static
 ThreadState* ThreadState::AttachMainThread() {
   return new (main_thread_state_storage_) ThreadState(gin::V8Platform::Get());
@@ -149,7 +152,7 @@
       allocation_handle_(cpp_heap_->GetAllocationHandle()),
       heap_handle_(cpp_heap_->GetHeapHandle()),
       thread_id_(CurrentThread()) {
-  *(thread_specific_.Get()) = this;
+  g_thread_specific_ = this;
 }
 
 ThreadState::~ThreadState() {
diff --git a/third_party/blink/renderer/platform/heap/v8_wrapper/thread_state.h b/third_party/blink/renderer/platform/heap/v8_wrapper/thread_state.h
index 8b6b1f9..eea4c20 100644
--- a/third_party/blink/renderer/platform/heap/v8_wrapper/thread_state.h
+++ b/third_party/blink/renderer/platform/heap/v8_wrapper/thread_state.h
@@ -6,11 +6,11 @@
 #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_HEAP_V8_WRAPPER_THREAD_STATE_H_
 
 #include "base/compiler_specific.h"
-#include "base/lazy_instance.h"
+#include "build/build_config.h"
 #include "third_party/blink/renderer/platform/heap/blink_gc.h"
+#include "third_party/blink/renderer/platform/heap/v8_wrapper/thread_local.h"
 #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h"
 #include "third_party/blink/renderer/platform/wtf/hash_set.h"
-#include "third_party/blink/renderer/platform/wtf/thread_specific.h"
 #include "third_party/blink/renderer/platform/wtf/threading.h"
 #include "v8-profiler.h"
 #include "v8/include/cppgc/heap-consistency.h"
@@ -61,13 +61,19 @@
                                               v8::EmbedderGraph*,
                                               void*);
 
+// Storage for all ThreadState objects. This includes the main-thread
+// ThreadState as well. Keep it outside the class so that PLATFORM_EXPORT
+// doesn't apply to it (otherwise, clang-cl complains).
+extern thread_local ThreadState* g_thread_specific_ CONSTINIT
+    __attribute__((tls_model(BLINK_HEAP_THREAD_LOCAL_MODEL)));
+
 class PLATFORM_EXPORT ThreadState final {
  public:
   class NoAllocationScope;
 
-  static ALWAYS_INLINE ThreadState* Current() {
-    return *(thread_specific_.Get());
-  }
+  BLINK_HEAP_DECLARE_THREAD_LOCAL_GETTER(Current,
+                                         ThreadState*,
+                                         g_thread_specific_)
 
   static ALWAYS_INLINE ThreadState* MainThreadState() {
     return reinterpret_cast<ThreadState*>(main_thread_state_storage_);
@@ -132,10 +138,6 @@
   // Main-thread ThreadState avoids TLS completely by using a regular global.
   // The object is manually managed and should not rely on global ctor/dtor.
   static uint8_t main_thread_state_storage_[];
-  // Storage for all ThreadState objects. This includes the main-thread
-  // ThreadState as well.
-  static base::LazyInstance<WTF::ThreadSpecific<ThreadState*>>::Leaky
-      thread_specific_;
 
   explicit ThreadState(v8::Platform*);
   ~ThreadState();
diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_loader.cc b/third_party/blink/renderer/platform/loader/fetch/resource_loader.cc
index f52ddcec..58e7f52 100644
--- a/third_party/blink/renderer/platform/loader/fetch/resource_loader.cc
+++ b/third_party/blink/renderer/platform/loader/fetch/resource_loader.cc
@@ -300,7 +300,7 @@
   // ensure that the resource receives cached code before the response data.
   // This directly calls the WebURLLoader's SetDefersLoading without going
   // through ResourceLoader.
-  url_loader->SetDefersLoading(LoaderFreezeMode::kStrict);
+  url_loader->Freeze(LoaderFreezeMode::kStrict);
 
   WebCodeCacheLoader::FetchCodeCacheCallback callback =
       base::BindOnce(&ResourceLoader::CodeCacheRequest::DidReceiveCachedCode,
@@ -676,7 +676,7 @@
     }
   }
 
-  loader_->SetDefersLoading(mode);
+  loader_->Freeze(mode);
   if (mode != LoaderFreezeMode::kNone) {
     resource_->VirtualTimePauser().UnpauseVirtualTime();
   } else {
diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_loader_defer_loading_test.cc b/third_party/blink/renderer/platform/loader/fetch/resource_loader_defer_loading_test.cc
index 3ff75d8..0d1e64b 100644
--- a/third_party/blink/renderer/platform/loader/fetch/resource_loader_defer_loading_test.cc
+++ b/third_party/blink/renderer/platform/loader/fetch/resource_loader_defer_loading_test.cc
@@ -86,9 +86,7 @@
           resource_load_info_notifier_wrapper,
       WebURLLoaderClient*) override {}
 
-  void SetDefersLoading(WebLoaderFreezeMode mode) override {
-    *freeze_mode_ptr_ = mode;
-  }
+  void Freeze(WebLoaderFreezeMode mode) override { *freeze_mode_ptr_ = mode; }
   void DidChangePriority(WebURLRequest::Priority, int) override {
     NOTREACHED();
   }
@@ -169,7 +167,7 @@
   ProcessCodeCacheRequestCallback process_code_cache_request_callback_;
   WebCodeCacheLoader::FetchCodeCacheCallback code_cache_response_callback_;
   // Passed to TestWebURLLoader (via |platform_|) and updated when its
-  // SetDefersLoading method is called.
+  // Freeze method is called.
   WebLoaderFreezeMode freeze_mode_ = WebLoaderFreezeMode::kNone;
   const KURL test_url_ = KURL("http://example.com/");
 
diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_loader_test.cc b/third_party/blink/renderer/platform/loader/fetch/resource_loader_test.cc
index ac0530f..f593a14 100644
--- a/third_party/blink/renderer/platform/loader/fetch/resource_loader_test.cc
+++ b/third_party/blink/renderer/platform/loader/fetch/resource_loader_test.cc
@@ -138,7 +138,7 @@
             resource_load_info_notifier_wrapper,
         WebURLLoaderClient*) override {}
 
-    void SetDefersLoading(LoaderFreezeMode) override {}
+    void Freeze(LoaderFreezeMode) override {}
     void DidChangePriority(WebURLRequest::Priority, int) override {
       NOTREACHED();
     }
diff --git a/third_party/blink/renderer/platform/loader/fetch/url_loader/mojo_url_loader_client.cc b/third_party/blink/renderer/platform/loader/fetch/url_loader/mojo_url_loader_client.cc
index b6e9e16..515d13e5 100644
--- a/third_party/blink/renderer/platform/loader/fetch/url_loader/mojo_url_loader_client.cc
+++ b/third_party/blink/renderer/platform/loader/fetch/url_loader/mojo_url_loader_client.cc
@@ -194,7 +194,7 @@
                  "total_bytes_drained", static_cast<int>(total_bytes_drained_),
                  "added_bytes", static_cast<int>(num_bytes));
 
-    if (owner_->IsDeferredWithBackForwardCache()) {
+    if (owner_->freeze_mode() == WebLoaderFreezeMode::kBufferIncoming) {
       owner_->DidBufferLoadWhileInBackForwardCache(num_bytes);
       if (total_bytes_drained_ > max_bytes_drained_ ||
           !owner_->CanContinueBufferingWhileInBackForwardCache()) {
@@ -302,14 +302,15 @@
 
 MojoURLLoaderClient::~MojoURLLoaderClient() = default;
 
-void MojoURLLoaderClient::SetDefersLoading(WebLoaderFreezeMode value) {
-  freeze_mode_ = value;
-  if (value == WebLoaderFreezeMode::kNone) {
+void MojoURLLoaderClient::Freeze(WebLoaderFreezeMode mode) {
+  freeze_mode_ = mode;
+  if (mode == WebLoaderFreezeMode::kNone) {
     StopBackForwardCacheEvictionTimer();
     task_runner_->PostTask(
         FROM_HERE, WTF::Bind(&MojoURLLoaderClient::FlushDeferredMessages,
                              weak_factory_.GetWeakPtr()));
-  } else if (IsDeferredWithBackForwardCache() && !has_received_complete_ &&
+  } else if (mode == WebLoaderFreezeMode::kBufferIncoming &&
+             !has_received_complete_ &&
              !back_forward_cache_eviction_timer_.IsRunning()) {
     // We should evict the page associated with this load if the connection
     // takes too long until it either finished or failed.
diff --git a/third_party/blink/renderer/platform/loader/fetch/url_loader/mojo_url_loader_client.h b/third_party/blink/renderer/platform/loader/fetch/url_loader/mojo_url_loader_client.h
index 21825b3..3832adc 100644
--- a/third_party/blink/renderer/platform/loader/fetch/url_loader/mojo_url_loader_client.h
+++ b/third_party/blink/renderer/platform/loader/fetch/url_loader/mojo_url_loader_client.h
@@ -52,9 +52,10 @@
       WebBackForwardCacheLoaderHelper back_forward_cache_loader_helper);
   ~MojoURLLoaderClient() override;
 
-  // Set the defer status. If loading is deferred, received messages are not
-  // dispatched to clients until it is set not deferred.
-  void SetDefersLoading(WebLoaderFreezeMode value);
+  // Freezes the loader. See blink/renderer/platform/loader/README.md for the
+  // general concept of "freezing" in the loading module. See
+  // blink/public/platform/web_loader_freezing_mode.h for `mode`.
+  void Freeze(WebLoaderFreezeMode mode);
 
   // network::mojom::URLLoaderClient implementation
   void OnReceiveEarlyHints(network::mojom::EarlyHintsPtr early_hints) override;
@@ -75,9 +76,7 @@
   void EvictFromBackForwardCache(blink::mojom::RendererEvictionReason reason);
   void DidBufferLoadWhileInBackForwardCache(size_t num_bytes);
   bool CanContinueBufferingWhileInBackForwardCache();
-  bool IsDeferredWithBackForwardCache() {
-    return freeze_mode_ == WebLoaderFreezeMode::kBufferIncoming;
-  }
+  WebLoaderFreezeMode freeze_mode() const { return freeze_mode_; }
 
  private:
   class BodyBuffer;
diff --git a/third_party/blink/renderer/platform/loader/fetch/url_loader/mojo_url_loader_client_unittest.cc b/third_party/blink/renderer/platform/loader/fetch/url_loader/mojo_url_loader_client_unittest.cc
index 12d7f2e..aa3e208b 100644
--- a/third_party/blink/renderer/platform/loader/fetch/url_loader/mojo_url_loader_client_unittest.cc
+++ b/third_party/blink/renderer/platform/loader/fetch/url_loader/mojo_url_loader_client_unittest.cc
@@ -53,8 +53,7 @@
     ++context_->seen_redirects;
     context_->last_load_timing = head->load_timing;
     if (context_->defer_on_redirect) {
-      context_->url_laoder_client->SetDefersLoading(
-          WebLoaderFreezeMode::kStrict);
+      context_->url_laoder_client->Freeze(WebLoaderFreezeMode::kStrict);
     }
   }
 
@@ -84,8 +83,7 @@
       return;
     context_->total_encoded_data_length += transfer_size_diff;
     if (context_->defer_on_transfer_size_updated) {
-      context_->url_laoder_client->SetDefersLoading(
-          WebLoaderFreezeMode::kStrict);
+      context_->url_laoder_client->Freeze(WebLoaderFreezeMode::kStrict);
     }
   }
 
@@ -444,13 +442,13 @@
   EXPECT_FALSE(context_->received_response);
   EXPECT_FALSE(context_->complete);
 
-  client_->SetDefersLoading(WebLoaderFreezeMode::kStrict);
+  client_->Freeze(WebLoaderFreezeMode::kStrict);
 
   base::RunLoop().RunUntilIdle();
   EXPECT_FALSE(context_->received_response);
   EXPECT_FALSE(context_->complete);
 
-  client_->SetDefersLoading(WebLoaderFreezeMode::kNone);
+  client_->Freeze(WebLoaderFreezeMode::kNone);
   EXPECT_FALSE(context_->received_response);
   EXPECT_FALSE(context_->complete);
 
@@ -482,14 +480,14 @@
   EXPECT_FALSE(context_->complete);
   EXPECT_EQ("", GetRequestPeerContextBody(context_));
 
-  client_->SetDefersLoading(WebLoaderFreezeMode::kStrict);
+  client_->Freeze(WebLoaderFreezeMode::kStrict);
 
   base::RunLoop().RunUntilIdle();
   EXPECT_FALSE(context_->received_response);
   EXPECT_FALSE(context_->complete);
   EXPECT_EQ("", GetRequestPeerContextBody(context_));
 
-  client_->SetDefersLoading(WebLoaderFreezeMode::kNone);
+  client_->Freeze(WebLoaderFreezeMode::kNone);
   EXPECT_FALSE(context_->received_response);
   EXPECT_FALSE(context_->complete);
   EXPECT_EQ("", GetRequestPeerContextBody(context_));
@@ -506,7 +504,7 @@
     return;
   // Call OnReceiveResponse and OnStartLoadingResponseBody while
   // deferred (not for back-forward cache).
-  client_->SetDefersLoading(WebLoaderFreezeMode::kStrict);
+  client_->Freeze(WebLoaderFreezeMode::kStrict);
   url_loader_client_->OnReceiveResponse(network::mojom::URLResponseHead::New());
   mojo::ScopedDataPipeProducerHandle producer_handle;
   mojo::ScopedDataPipeConsumerHandle consumer_handle;
@@ -528,7 +526,7 @@
   EXPECT_EQ("", GetRequestPeerContextBody(context_));
 
   // Defer for back-forward cache.
-  client_->SetDefersLoading(WebLoaderFreezeMode::kBufferIncoming);
+  client_->Freeze(WebLoaderFreezeMode::kBufferIncoming);
   std::string msg2 = "ll";
   size = msg2.size();
   ASSERT_EQ(MOJO_RESULT_OK, producer_handle->WriteData(
@@ -538,7 +536,7 @@
   EXPECT_EQ("", GetRequestPeerContextBody(context_));
 
   // Defer not for back-forward cache again.
-  client_->SetDefersLoading(WebLoaderFreezeMode::kBufferIncoming);
+  client_->Freeze(WebLoaderFreezeMode::kBufferIncoming);
   std::string msg3 = "o";
   size = msg3.size();
   ASSERT_EQ(MOJO_RESULT_OK, producer_handle->WriteData(
@@ -548,7 +546,7 @@
   EXPECT_EQ("", GetRequestPeerContextBody(context_));
 
   // Stop deferring.
-  client_->SetDefersLoading(WebLoaderFreezeMode::kNone);
+  client_->Freeze(WebLoaderFreezeMode::kNone);
   base::RunLoop().RunUntilIdle();
   EXPECT_TRUE(context_->received_response);
   EXPECT_FALSE(context_->complete);
@@ -572,7 +570,7 @@
     return;
   // Call OnReceiveResponse, OnStartLoadingResponseBody, OnComplete while
   // deferred.
-  client_->SetDefersLoading(WebLoaderFreezeMode::kBufferIncoming);
+  client_->Freeze(WebLoaderFreezeMode::kBufferIncoming);
   url_loader_client_->OnReceiveResponse(network::mojom::URLResponseHead::New());
   mojo::ScopedDataPipeProducerHandle producer_handle;
   mojo::ScopedDataPipeConsumerHandle consumer_handle;
@@ -599,7 +597,7 @@
 
   // Stop deferring. OnComplete message shouldn't be dispatched yet because
   // we're still waiting for the response body pipe to be closed.
-  client_->SetDefersLoading(WebLoaderFreezeMode::kNone);
+  client_->Freeze(WebLoaderFreezeMode::kNone);
   base::RunLoop().RunUntilIdle();
   EXPECT_TRUE(context_->received_response);
   // When the body is buffered, we'll wait until the pipe is closed before
@@ -629,7 +627,7 @@
 TEST_P(WebMojoURLLoaderClientTest, DeferBodyWithoutOnComplete) {
   url_loader_client_->OnReceiveResponse(network::mojom::URLResponseHead::New());
   // Call OnStartLoadingResponseBody while deferred.
-  client_->SetDefersLoading(WebLoaderFreezeMode::kStrict);
+  client_->Freeze(WebLoaderFreezeMode::kStrict);
   mojo::ScopedDataPipeProducerHandle producer_handle;
   mojo::ScopedDataPipeConsumerHandle consumer_handle;
   ASSERT_EQ(MOJO_RESULT_OK,
@@ -652,7 +650,7 @@
   EXPECT_EQ("", GetRequestPeerContextBody(context_));
 
   // Stop deferring.
-  client_->SetDefersLoading(WebLoaderFreezeMode::kNone);
+  client_->Freeze(WebLoaderFreezeMode::kNone);
   base::RunLoop().RunUntilIdle();
   EXPECT_TRUE(context_->received_response);
   EXPECT_FALSE(context_->complete);
@@ -672,7 +670,7 @@
     return;
   // Call OnReceiveResponse, OnStartLoadingResponseBody, OnComplete while
   // deferred.
-  client_->SetDefersLoading(WebLoaderFreezeMode::kBufferIncoming);
+  client_->Freeze(WebLoaderFreezeMode::kBufferIncoming);
   url_loader_client_->OnReceiveResponse(network::mojom::URLResponseHead::New());
   mojo::ScopedDataPipeProducerHandle producer_handle;
   mojo::ScopedDataPipeConsumerHandle consumer_handle;
@@ -712,7 +710,7 @@
   producer_handle.reset();
 
   // Stop deferring.
-  client_->SetDefersLoading(WebLoaderFreezeMode::kNone);
+  client_->Freeze(WebLoaderFreezeMode::kNone);
   base::RunLoop().RunUntilIdle();
   EXPECT_TRUE(context_->received_response);
   // When the body is buffered, BodyBuffer shouldn't be finished writing to the
@@ -759,7 +757,7 @@
   EXPECT_EQ("", GetRequestPeerContextBody(context_));
   EXPECT_EQ(0, context_->total_encoded_data_length);
 
-  client_->SetDefersLoading(WebLoaderFreezeMode::kStrict);
+  client_->Freeze(WebLoaderFreezeMode::kStrict);
 
   base::RunLoop().RunUntilIdle();
   EXPECT_FALSE(context_->received_response);
@@ -767,7 +765,7 @@
   EXPECT_EQ("", GetRequestPeerContextBody(context_));
   EXPECT_EQ(0, context_->total_encoded_data_length);
 
-  client_->SetDefersLoading(WebLoaderFreezeMode::kNone);
+  client_->Freeze(WebLoaderFreezeMode::kNone);
   EXPECT_FALSE(context_->received_response);
   EXPECT_FALSE(context_->complete);
   EXPECT_EQ("", GetRequestPeerContextBody(context_));
@@ -811,7 +809,7 @@
   EXPECT_EQ("", GetRequestPeerContextBody(context_));
   EXPECT_EQ(0, context_->total_encoded_data_length);
 
-  client_->SetDefersLoading(WebLoaderFreezeMode::kStrict);
+  client_->Freeze(WebLoaderFreezeMode::kStrict);
 
   base::RunLoop().RunUntilIdle();
   EXPECT_EQ(0, context_->seen_redirects);
@@ -820,7 +818,7 @@
   EXPECT_EQ("", GetRequestPeerContextBody(context_));
   EXPECT_EQ(0, context_->total_encoded_data_length);
 
-  client_->SetDefersLoading(WebLoaderFreezeMode::kNone);
+  client_->Freeze(WebLoaderFreezeMode::kNone);
   EXPECT_EQ(0, context_->seen_redirects);
   EXPECT_FALSE(context_->received_response);
   EXPECT_FALSE(context_->complete);
@@ -835,7 +833,7 @@
   EXPECT_EQ(0, context_->total_encoded_data_length);
   EXPECT_FALSE(context_->cancelled);
 
-  client_->SetDefersLoading(WebLoaderFreezeMode::kNone);
+  client_->Freeze(WebLoaderFreezeMode::kNone);
   base::RunLoop().RunUntilIdle();
   EXPECT_EQ(1, context_->seen_redirects);
   EXPECT_TRUE(context_->received_response);
@@ -867,14 +865,14 @@
   EXPECT_FALSE(context_->complete);
   EXPECT_EQ(0, context_->total_encoded_data_length);
 
-  client_->SetDefersLoading(WebLoaderFreezeMode::kStrict);
+  client_->Freeze(WebLoaderFreezeMode::kStrict);
 
   base::RunLoop().RunUntilIdle();
   EXPECT_FALSE(context_->received_response);
   EXPECT_FALSE(context_->complete);
   EXPECT_EQ(0, context_->total_encoded_data_length);
 
-  client_->SetDefersLoading(WebLoaderFreezeMode::kNone);
+  client_->Freeze(WebLoaderFreezeMode::kNone);
   EXPECT_FALSE(context_->received_response);
   EXPECT_FALSE(context_->complete);
   EXPECT_EQ(0, context_->total_encoded_data_length);
@@ -885,7 +883,7 @@
   EXPECT_EQ(4, context_->total_encoded_data_length);
   EXPECT_FALSE(context_->cancelled);
 
-  client_->SetDefersLoading(WebLoaderFreezeMode::kNone);
+  client_->Freeze(WebLoaderFreezeMode::kNone);
   base::RunLoop().RunUntilIdle();
   EXPECT_TRUE(context_->received_response);
   EXPECT_TRUE(context_->complete);
diff --git a/third_party/blink/renderer/platform/loader/fetch/url_loader/sync_load_context.cc b/third_party/blink/renderer/platform/loader/fetch/url_loader/sync_load_context.cc
index 33805384..452d4b0 100644
--- a/third_party/blink/renderer/platform/loader/fetch/url_loader/sync_load_context.cc
+++ b/third_party/blink/renderer/platform/loader/fetch/url_loader/sync_load_context.cc
@@ -172,7 +172,7 @@
   response_->head = std::move(head);
   response_->redirect_info = redirect_info;
   *context_for_redirect_ = this;
-  resource_request_sender_->SetDefersLoading(WebLoaderFreezeMode::kStrict);
+  resource_request_sender_->Freeze(WebLoaderFreezeMode::kStrict);
   signals_->SignalRedirectOrResponseComplete();
   return true;
 }
@@ -186,7 +186,7 @@
   response_->redirect_info = net::RedirectInfo();
   *context_for_redirect_ = nullptr;
 
-  resource_request_sender_->SetDefersLoading(WebLoaderFreezeMode::kNone);
+  resource_request_sender_->Freeze(WebLoaderFreezeMode::kNone);
 }
 
 void SyncLoadContext::CancelRedirect() {
diff --git a/third_party/blink/renderer/platform/loader/fetch/url_loader/web_resource_request_sender.cc b/third_party/blink/renderer/platform/loader/fetch/url_loader/web_resource_request_sender.cc
index abdb9e2..bd932a5 100644
--- a/third_party/blink/renderer/platform/loader/fetch/url_loader/web_resource_request_sender.cc
+++ b/third_party/blink/renderer/platform/loader/fetch/url_loader/web_resource_request_sender.cc
@@ -317,18 +317,17 @@
   DeletePendingRequest(std::move(task_runner));
 }
 
-void WebResourceRequestSender::SetDefersLoading(WebLoaderFreezeMode mode) {
+void WebResourceRequestSender::Freeze(WebLoaderFreezeMode mode) {
   if (!request_info_) {
     DLOG(ERROR) << "unknown request";
     return;
   }
   if (mode != WebLoaderFreezeMode::kNone) {
     request_info_->freeze_mode = mode;
-    request_info_->url_loader_client->SetDefersLoading(mode);
+    request_info_->url_loader_client->Freeze(mode);
   } else if (request_info_->freeze_mode != WebLoaderFreezeMode::kNone) {
     request_info_->freeze_mode = WebLoaderFreezeMode::kNone;
-    request_info_->url_loader_client->SetDefersLoading(
-        WebLoaderFreezeMode::kNone);
+    request_info_->url_loader_client->Freeze(WebLoaderFreezeMode::kNone);
 
     FollowPendingRedirect(request_info_.get());
   }
diff --git a/third_party/blink/renderer/platform/loader/fetch/url_loader/web_url_loader.cc b/third_party/blink/renderer/platform/loader/fetch/url_loader/web_url_loader.cc
index a5124ee..a398790 100644
--- a/third_party/blink/renderer/platform/loader/fetch/url_loader/web_url_loader.cc
+++ b/third_party/blink/renderer/platform/loader/fetch/url_loader/web_url_loader.cc
@@ -344,7 +344,7 @@
   scoped_refptr<base::SingleThreadTaskRunner> GetMaybeUnfreezableTaskRunner();
 
   void Cancel();
-  void SetDefersLoading(WebLoaderFreezeMode mode);
+  void Freeze(WebLoaderFreezeMode mode);
   void DidChangePriority(WebURLRequest::Priority new_priority,
                          int intra_priority_value);
   void Start(std::unique_ptr<network::ResourceRequest> request,
@@ -489,9 +489,9 @@
   loader_ = nullptr;
 }
 
-void WebURLLoader::Context::SetDefersLoading(WebLoaderFreezeMode mode) {
+void WebURLLoader::Context::Freeze(WebLoaderFreezeMode mode) {
   if (request_id_ != -1)
-    resource_request_sender_->SetDefersLoading(mode);
+    resource_request_sender_->Freeze(mode);
   freeze_mode_ = mode;
 }
 
@@ -623,7 +623,7 @@
       back_forward_cache_loader_helper_);
 
   if (freeze_mode_ != WebLoaderFreezeMode::kNone) {
-    resource_request_sender_->SetDefersLoading(WebLoaderFreezeMode::kStrict);
+    resource_request_sender_->Freeze(WebLoaderFreezeMode::kStrict);
   }
 }
 
@@ -1056,9 +1056,9 @@
     context_->Cancel();
 }
 
-void WebURLLoader::SetDefersLoading(WebLoaderFreezeMode mode) {
+void WebURLLoader::Freeze(WebLoaderFreezeMode mode) {
   if (context_)
-    context_->SetDefersLoading(mode);
+    context_->Freeze(mode);
 }
 
 void WebURLLoader::DidChangePriority(WebURLRequest::Priority new_priority,
diff --git a/third_party/blink/renderer/platform/loader/fetch/url_loader/web_url_loader_unittest.cc b/third_party/blink/renderer/platform/loader/fetch/url_loader/web_url_loader_unittest.cc
index c436933..2654dfa 100644
--- a/third_party/blink/renderer/platform/loader/fetch/url_loader/web_url_loader_unittest.cc
+++ b/third_party/blink/renderer/platform/loader/fetch/url_loader/web_url_loader_unittest.cc
@@ -121,9 +121,7 @@
 
   bool canceled() { return canceled_; }
 
-  void SetDefersLoading(WebLoaderFreezeMode mode) override {
-    freeze_mode_ = mode;
-  }
+  void Freeze(WebLoaderFreezeMode mode) override { freeze_mode_ = mode; }
   WebLoaderFreezeMode freeze_mode() const { return freeze_mode_; }
 
   void set_sync_load_response(SyncLoadResponse&& sync_load_response) {
@@ -471,7 +469,7 @@
 }
 
 TEST_F(WebURLLoaderTest, DefersLoadingBeforeStart) {
-  client()->loader()->SetDefersLoading(WebLoaderFreezeMode::kStrict);
+  client()->loader()->Freeze(WebLoaderFreezeMode::kStrict);
   EXPECT_EQ(sender()->freeze_mode(), WebLoaderFreezeMode::kNone);
   DoStartAsyncRequest();
   EXPECT_EQ(sender()->freeze_mode(), WebLoaderFreezeMode::kStrict);
diff --git a/third_party/blink/renderer/platform/loader/internet_disconnected_web_url_loader.cc b/third_party/blink/renderer/platform/loader/internet_disconnected_web_url_loader.cc
index 65e6ab4..a79caa0 100644
--- a/third_party/blink/renderer/platform/loader/internet_disconnected_web_url_loader.cc
+++ b/third_party/blink/renderer/platform/loader/internet_disconnected_web_url_loader.cc
@@ -77,7 +77,7 @@
           WebURLError(net::ERR_INTERNET_DISCONNECTED, KURL(request->url))));
 }
 
-void InternetDisconnectedWebURLLoader::SetDefersLoading(WebLoaderFreezeMode) {}
+void InternetDisconnectedWebURLLoader::Freeze(WebLoaderFreezeMode) {}
 
 void InternetDisconnectedWebURLLoader::DidChangePriority(
     WebURLRequest::Priority,
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
index 6d3e550..60d6c86 100644
--- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
+++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -719,6 +719,10 @@
       status: "experimental",
     },
     {
+      name: "DialogFocusNewSpecBehavior",
+      status: "stable",
+    },
+    {
       name: "DigitalGoods",
       origin_trial_feature_name: "DigitalGoods",
       origin_trial_os: ["android", "chromeos"],
diff --git a/third_party/blink/renderer/platform/testing/weburl_loader_mock.cc b/third_party/blink/renderer/platform/testing/weburl_loader_mock.cc
index c3535fb..e7370fa 100644
--- a/third_party/blink/renderer/platform/testing/weburl_loader_mock.cc
+++ b/third_party/blink/renderer/platform/testing/weburl_loader_mock.cc
@@ -133,7 +133,7 @@
   factory_->CancelLoad(this);
 }
 
-void WebURLLoaderMock::SetDefersLoading(WebLoaderFreezeMode mode) {
+void WebURLLoaderMock::Freeze(WebLoaderFreezeMode mode) {
   is_deferred_ = (mode != WebLoaderFreezeMode::kNone);
   // Ignores setDefersLoading(false) safely.
   if (!is_deferred_)
diff --git a/third_party/blink/renderer/platform/testing/weburl_loader_mock.h b/third_party/blink/renderer/platform/testing/weburl_loader_mock.h
index b414dc9..1c37d409 100644
--- a/third_party/blink/renderer/platform/testing/weburl_loader_mock.h
+++ b/third_party/blink/renderer/platform/testing/weburl_loader_mock.h
@@ -66,7 +66,7 @@
       std::unique_ptr<blink::ResourceLoadInfoNotifierWrapper>
           resource_load_info_notifier_wrapper,
       WebURLLoaderClient* client) override;
-  void SetDefersLoading(WebLoaderFreezeMode mode) override;
+  void Freeze(WebLoaderFreezeMode mode) override;
   void DidChangePriority(WebURLRequest::Priority new_priority,
                          int intra_priority_value) override;
   scoped_refptr<base::SingleThreadTaskRunner> GetTaskRunnerForBodyLoader()
diff --git a/third_party/blink/renderer/platform/video_capture/video_capture_impl.cc b/third_party/blink/renderer/platform/video_capture/video_capture_impl.cc
index 4bbabc3..8ba7c1c54 100644
--- a/third_party/blink/renderer/platform/video_capture/video_capture_impl.cc
+++ b/third_party/blink/renderer/platform/video_capture/video_capture_impl.cc
@@ -382,15 +382,26 @@
                     video_capture_impl_.gpu_factories_
                         ->GpuMemoryBufferManager(),
                     video_capture_impl_.pool_);
+        // Keep one GpuMemoryBuffer for current GpuMemoryHandle alive,
+        // so that any associated structures are kept alive while this buffer id
+        // is still used (e.g. DMA buf handles for linux/CrOS).
         buffer_context_->SetGpuMemoryBuffer(std::move(gmb));
       }
       CHECK(buffer_context_->GetGpuMemoryBuffer());
 
+      auto buffer_handle = buffer_context_->GetGpuMemoryBuffer()->CloneHandle();
+      if (!frame_info_->is_premapped) {
+        // The buffer may have a region associated with it, which is passed
+        // together with the buffer handle when a new buffer is allocated by the
+        // capturer. However, it will contain actual frame data only if the
+        // |is_premapped| flag is signalled for this frame.
+        buffer_handle.region = base::UnsafeSharedMemoryRegion();
+      }
       // Clone the GpuMemoryBuffer and wrap it in a VideoFrame.
       gpu_memory_buffer_ =
           video_capture_impl_.gpu_memory_buffer_support_
               ->CreateGpuMemoryBufferImplFromHandle(
-                  buffer_context_->GetGpuMemoryBuffer()->CloneHandle(),
+                  std::move(buffer_handle),
                   buffer_context_->GetGpuMemoryBuffer()->GetSize(),
                   buffer_context_->GetGpuMemoryBuffer()->GetFormat(),
                   gfx::BufferUsage::SCANOUT_VEA_CPU_READ, base::DoNothing(),
diff --git a/third_party/blink/tools/blinkpy/presubmit/audit_non_blink_usage.py b/third_party/blink/tools/blinkpy/presubmit/audit_non_blink_usage.py
index 906a1672..85c7ca4 100755
--- a/third_party/blink/tools/blinkpy/presubmit/audit_non_blink_usage.py
+++ b/third_party/blink/tools/blinkpy/presubmit/audit_non_blink_usage.py
@@ -512,6 +512,8 @@
             'ui::AXMode',
             'ui::AXNodeData',
             'ui::AXTreeID',
+            'ui::kAXModeBasic',
+            'ui::kAXModeComplete',
             'ax::mojom::BoolAttribute',
             'ax::mojom::HasPopup',
             'ax::mojom::State',
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations
index a296495..e78c157 100644
--- a/third_party/blink/web_tests/TestExpectations
+++ b/third_party/blink/web_tests/TestExpectations
@@ -1631,6 +1631,10 @@
 crbug.com/802029 [ Mac10.13 Debug ] fast/dom/shadow/focus-controller-recursion-crash.html [ Pass Timeout ]
 crbug.com/829740 fast/history/history-back-twice-with-subframes-assert.html [ Pass Timeout ]
 crbug.com/836783 fast/peerconnection/RTCRtpSender-setParameters.html [ Pass Timeout ]
+
+# Sheriff 2021-05-25
+crbug.com/1209900 fast/peerconnection/RTCPeerConnection-reload-sctptransport.html [ Pass Failure ]
+
 crbug.com/846981 fast/webgl/texImage-imageBitmap-from-imageData-resize.html [ Pass Timeout ]
 
 # crbug.com/1095379: These fail with a timeout, even when they're given extra time (via SlowTests)
@@ -3938,7 +3942,6 @@
 crbug.com/1179585 virtual/layout_ng_svg_text/svg/custom/svg-root-with-opacity.html [ Pass Failure ]
 crbug.com/1179585 virtual/layout_ng_svg_text/svg/custom/text-dom-01-f.svg [ Failure Crash ]
 crbug.com/1179585 virtual/layout_ng_svg_text/svg/custom/text-hit-test.svg [ Failure ]
-crbug.com/1179585 virtual/layout_ng_svg_text/svg/custom/text-letter-spacing.svg [ Failure ]
 crbug.com/1179585 virtual/layout_ng_svg_text/svg/custom/text-linking.svg [ Failure ]
 crbug.com/1179585 virtual/layout_ng_svg_text/svg/custom/text-match-highlight.html [ Failure ]
 crbug.com/1179585 virtual/layout_ng_svg_text/svg/custom/text-rotated-gradient.svg [ Failure ]
@@ -4127,7 +4130,6 @@
 crbug.com/1179585 virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/render-elems-07-t.svg [ Failure ]
 crbug.com/1179585 virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/render-elems-08-t.svg [ Failure ]
 crbug.com/1179585 virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/text-deco-01-b.svg [ Failure ]
-crbug.com/1179585 virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/text-spacing-01-b.svg [ Failure ]
 crbug.com/1179585 virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/text-text-03-b.svg [ Failure ]
 crbug.com/1179585 virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/text-text-08-b.svg [ Failure ]
 crbug.com/1179585 virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/text-tselect-02-f.svg [ Failure ]
diff --git a/third_party/blink/web_tests/VirtualTestSuites b/third_party/blink/web_tests/VirtualTestSuites
index 365826c5..72fee8a 100644
--- a/third_party/blink/web_tests/VirtualTestSuites
+++ b/third_party/blink/web_tests/VirtualTestSuites
@@ -1050,5 +1050,12 @@
   "prefix": "playback_speed_button",
   "bases": ["media/controls"],
   "args": [ "--enable-features=PlaybackSpeedButton" ]
+  },
+  {
+    "prefix": "dialogfocus-old-behavior",
+    "bases": [
+      "external/wpt/html/semantics/interactive-elements/the-dialog-element"
+    ],
+    "args": ["--disable-features=DialogFocusNewSpecBehavior"]
   }
 ]
diff --git a/third_party/blink/web_tests/css3/blending/background-blend-mode-crossfade-image-gradient-expected.png b/third_party/blink/web_tests/css3/blending/background-blend-mode-crossfade-image-gradient-expected.png
index 4729210..d3eb3c5 100644
--- a/third_party/blink/web_tests/css3/blending/background-blend-mode-crossfade-image-gradient-expected.png
+++ b/third_party/blink/web_tests/css3/blending/background-blend-mode-crossfade-image-gradient-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/css3/blending/background-blend-mode-gradient-gradient-expected.png b/third_party/blink/web_tests/css3/blending/background-blend-mode-gradient-gradient-expected.png
index d62a1a9..73e0dfe 100644
--- a/third_party/blink/web_tests/css3/blending/background-blend-mode-gradient-gradient-expected.png
+++ b/third_party/blink/web_tests/css3/blending/background-blend-mode-gradient-gradient-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/css3/blending/background-blend-mode-gradient-image-expected.png b/third_party/blink/web_tests/css3/blending/background-blend-mode-gradient-image-expected.png
index cb3b727..d4155f8 100644
--- a/third_party/blink/web_tests/css3/blending/background-blend-mode-gradient-image-expected.png
+++ b/third_party/blink/web_tests/css3/blending/background-blend-mode-gradient-image-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/css3/blending/background-blend-mode-image-color-expected.png b/third_party/blink/web_tests/css3/blending/background-blend-mode-image-color-expected.png
index 24297d4..819a712 100644
--- a/third_party/blink/web_tests/css3/blending/background-blend-mode-image-color-expected.png
+++ b/third_party/blink/web_tests/css3/blending/background-blend-mode-image-color-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/css3/blending/background-blend-mode-image-image-expected.png b/third_party/blink/web_tests/css3/blending/background-blend-mode-image-image-expected.png
index b9dd801..4d3f101b 100644
--- a/third_party/blink/web_tests/css3/blending/background-blend-mode-image-image-expected.png
+++ b/third_party/blink/web_tests/css3/blending/background-blend-mode-image-image-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/css3/blending/background-blend-mode-tiled-gradient-expected.png b/third_party/blink/web_tests/css3/blending/background-blend-mode-tiled-gradient-expected.png
index b9bc03a3..4f2b47e 100644
--- a/third_party/blink/web_tests/css3/blending/background-blend-mode-tiled-gradient-expected.png
+++ b/third_party/blink/web_tests/css3/blending/background-blend-mode-tiled-gradient-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/css3/blending/effect-background-blend-mode-expected.png b/third_party/blink/web_tests/css3/blending/effect-background-blend-mode-expected.png
index c45c187..80f6100e 100644
--- a/third_party/blink/web_tests/css3/blending/effect-background-blend-mode-expected.png
+++ b/third_party/blink/web_tests/css3/blending/effect-background-blend-mode-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/css3/blending/effect-background-blend-mode-tiled-expected.png b/third_party/blink/web_tests/css3/blending/effect-background-blend-mode-tiled-expected.png
index 6ad9d3e7..7ecb395f 100644
--- a/third_party/blink/web_tests/css3/blending/effect-background-blend-mode-tiled-expected.png
+++ b/third_party/blink/web_tests/css3/blending/effect-background-blend-mode-tiled-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/css3/blending/mix-blend-mode-isolated-group-1-expected.png b/third_party/blink/web_tests/css3/blending/mix-blend-mode-isolated-group-1-expected.png
index cccd218f..83eb07a2 100644
--- a/third_party/blink/web_tests/css3/blending/mix-blend-mode-isolated-group-1-expected.png
+++ b/third_party/blink/web_tests/css3/blending/mix-blend-mode-isolated-group-1-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/css3/blending/mix-blend-mode-isolated-group-2-expected.png b/third_party/blink/web_tests/css3/blending/mix-blend-mode-isolated-group-2-expected.png
index 8a053a0..bae774c 100644
--- a/third_party/blink/web_tests/css3/blending/mix-blend-mode-isolated-group-2-expected.png
+++ b/third_party/blink/web_tests/css3/blending/mix-blend-mode-isolated-group-2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/css3/blending/mix-blend-mode-isolated-group-3-expected.png b/third_party/blink/web_tests/css3/blending/mix-blend-mode-isolated-group-3-expected.png
index 5b44808..dbd4765 100644
--- a/third_party/blink/web_tests/css3/blending/mix-blend-mode-isolated-group-3-expected.png
+++ b/third_party/blink/web_tests/css3/blending/mix-blend-mode-isolated-group-3-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/css3/filters/effect-reference-zoom-expected.png b/third_party/blink/web_tests/css3/filters/effect-reference-zoom-expected.png
index 5135c71e..17df25e 100644
--- a/third_party/blink/web_tests/css3/filters/effect-reference-zoom-expected.png
+++ b/third_party/blink/web_tests/css3/filters/effect-reference-zoom-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/external/wpt/css/css-fonts/animations/system-fonts-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-fonts/animations/system-fonts-expected.txt
new file mode 100644
index 0000000..77b2b14
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-fonts/animations/system-fonts-expected.txt
@@ -0,0 +1,592 @@
+This is a testharness.js-based test.
+Found 588 tests; 528 PASS, 60 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-2) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-2) should be [1] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-2) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-2) should be [400%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-2) should be [268px] for <font-size> assert_equals: expected "268px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-2) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-2) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-0.5) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-0.5) should be [1] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-0.5) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-0.5) should be [250%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-0.5) should be [142px] for <font-size> assert_equals: expected "142px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-0.5) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-0.5) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0) should be [100] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0) should be [200%] for <font-stretch>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0) should be [100px] for <font-size>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.3) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.3) should be [190] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.3) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.3) should be [170%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.3) should be [74.8px] for <font-size> assert_equals: expected "74.8px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.3) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.3) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.6) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.6) should be [280] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.6) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.6) should be [140%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.6) should be [49.6px] for <font-size> assert_equals: expected "49.6px " but got "16px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.6) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.6) should be [Arial] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1) should be [400] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1) should be [100%] for <font-stretch>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1) should be [16px] for <font-size>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1) should be [Arial] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1.5) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1.5) should be [550] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1.5) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1.5) should be [50%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1.5) should be [0px] for <font-size> assert_equals: expected "0px " but got "16px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1.5) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1.5) should be [Arial] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-2) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-2) should be [1] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-2) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-2) should be [400%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-2) should be [268px] for <font-size> assert_equals: expected "268px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-2) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-2) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-0.5) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-0.5) should be [1] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-0.5) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-0.5) should be [250%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-0.5) should be [142px] for <font-size> assert_equals: expected "142px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-0.5) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-0.5) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0) should be [100] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0) should be [200%] for <font-stretch>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0) should be [100px] for <font-size>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.3) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.3) should be [190] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.3) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.3) should be [170%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.3) should be [74.8px] for <font-size> assert_equals: expected "74.8px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.3) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.3) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.6) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.6) should be [280] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.6) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.6) should be [140%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.6) should be [49.6px] for <font-size> assert_equals: expected "49.6px " but got "16px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.6) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.6) should be [Arial] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1) should be [400] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1) should be [100%] for <font-stretch>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1) should be [16px] for <font-size>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1) should be [Arial] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1.5) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1.5) should be [550] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1.5) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1.5) should be [50%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1.5) should be [0px] for <font-size> assert_equals: expected "0px " but got "16px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1.5) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1.5) should be [Arial] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-2) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-2) should be [1] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-2) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-2) should be [400%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-2) should be [268px] for <font-size> assert_equals: expected "268px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-2) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-2) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-0.5) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-0.5) should be [1] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-0.5) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-0.5) should be [250%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-0.5) should be [142px] for <font-size> assert_equals: expected "142px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-0.5) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-0.5) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0) should be [100] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0) should be [200%] for <font-stretch>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0) should be [100px] for <font-size>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.3) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.3) should be [190] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.3) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.3) should be [170%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.3) should be [74.8px] for <font-size> assert_equals: expected "74.8px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.3) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.3) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.6) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.6) should be [280] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.6) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.6) should be [140%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.6) should be [49.6px] for <font-size> assert_equals: expected "49.6px " but got "16px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.6) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.6) should be [Arial] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1) should be [400] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1) should be [100%] for <font-stretch>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1) should be [16px] for <font-size>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1) should be [Arial] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1.5) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1.5) should be [550] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1.5) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1.5) should be [50%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1.5) should be [0px] for <font-size> assert_equals: expected "0px " but got "16px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1.5) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1.5) should be [Arial] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-2) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-2) should be [1] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-2) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-2) should be [400%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-2) should be [268px] for <font-size> assert_equals: expected "268px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-2) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-2) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-0.5) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-0.5) should be [1] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-0.5) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-0.5) should be [250%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-0.5) should be [142px] for <font-size> assert_equals: expected "142px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-0.5) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-0.5) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0) should be [100] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0) should be [200%] for <font-stretch>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0) should be [100px] for <font-size>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.3) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.3) should be [190] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.3) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.3) should be [170%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.3) should be [74.8px] for <font-size> assert_equals: expected "74.8px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.3) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.3) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.6) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.6) should be [280] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.6) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.6) should be [140%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.6) should be [49.6px] for <font-size> assert_equals: expected "49.6px " but got "16px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.6) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.6) should be [Arial] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1) should be [400] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1) should be [100%] for <font-stretch>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1) should be [16px] for <font-size>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1) should be [Arial] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1.5) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1.5) should be [550] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1.5) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1.5) should be [50%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1.5) should be [0px] for <font-size> assert_equals: expected "0px " but got "16px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1.5) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1.5) should be [Arial] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-2) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-2) should be [1] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-2) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-2) should be [400%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-2) should be [268px] for <font-size> assert_equals: expected "268px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-2) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-2) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-0.5) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-0.5) should be [1] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-0.5) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-0.5) should be [250%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-0.5) should be [142px] for <font-size> assert_equals: expected "142px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-0.5) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-0.5) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0) should be [100] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0) should be [200%] for <font-stretch>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0) should be [100px] for <font-size>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.3) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.3) should be [190] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.3) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.3) should be [170%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.3) should be [74.8px] for <font-size> assert_equals: expected "74.8px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.3) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.3) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.6) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.6) should be [280] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.6) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.6) should be [140%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.6) should be [49.6px] for <font-size> assert_equals: expected "49.6px " but got "16px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.6) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.6) should be [Arial] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1) should be [400] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1) should be [100%] for <font-stretch>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1) should be [16px] for <font-size>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1) should be [Arial] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1.5) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1.5) should be [550] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1.5) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1.5) should be [50%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1.5) should be [0px] for <font-size> assert_equals: expected "0px " but got "16px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1.5) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1.5) should be [Arial] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-2) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-2) should be [1] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-2) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-2) should be [400%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-2) should be [268px] for <font-size> assert_equals: expected "268px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-2) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-2) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-0.5) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-0.5) should be [1] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-0.5) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-0.5) should be [250%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-0.5) should be [142px] for <font-size> assert_equals: expected "142px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-0.5) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-0.5) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0) should be [100] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0) should be [200%] for <font-stretch>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0) should be [100px] for <font-size>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.3) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.3) should be [190] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.3) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.3) should be [170%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.3) should be [74.8px] for <font-size> assert_equals: expected "74.8px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.3) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.3) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.6) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.6) should be [280] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.6) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.6) should be [140%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.6) should be [49.6px] for <font-size> assert_equals: expected "49.6px " but got "16px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.6) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.6) should be [Arial] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1) should be [400] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1) should be [100%] for <font-stretch>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1) should be [16px] for <font-size>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1) should be [Arial] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1.5) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1.5) should be [550] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1.5) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1.5) should be [50%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1.5) should be [0px] for <font-size> assert_equals: expected "0px " but got "16px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1.5) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1.5) should be [Arial] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-2) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-2) should be [1] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-2) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-2) should be [400%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-2) should be [268px] for <font-size> assert_equals: expected "268px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-2) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-2) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-0.5) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-0.5) should be [1] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-0.5) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-0.5) should be [250%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-0.5) should be [142px] for <font-size> assert_equals: expected "142px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-0.5) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-0.5) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0) should be [100] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0) should be [200%] for <font-stretch>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0) should be [100px] for <font-size>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.3) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.3) should be [190] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.3) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.3) should be [170%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.3) should be [74.8px] for <font-size> assert_equals: expected "74.8px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.3) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.3) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.6) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.6) should be [280] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.6) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.6) should be [140%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.6) should be [49.6px] for <font-size> assert_equals: expected "49.6px " but got "16px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.6) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.6) should be [Arial] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1) should be [400] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1) should be [100%] for <font-stretch>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1) should be [16px] for <font-size>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1) should be [Arial] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1.5) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1.5) should be [550] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1.5) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1.5) should be [50%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1.5) should be [0px] for <font-size> assert_equals: expected "0px " but got "16px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1.5) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1.5) should be [Arial] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-2) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-2) should be [1] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-2) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-2) should be [400%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-2) should be [268px] for <font-size> assert_equals: expected "268px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-2) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-2) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-0.5) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-0.5) should be [1] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-0.5) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-0.5) should be [250%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-0.5) should be [142px] for <font-size> assert_equals: expected "142px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-0.5) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-0.5) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0) should be [100] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0) should be [200%] for <font-stretch>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0) should be [100px] for <font-size>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.3) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.3) should be [190] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.3) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.3) should be [170%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.3) should be [74.8px] for <font-size> assert_equals: expected "74.8px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.3) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.3) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.6) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.6) should be [280] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.6) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.6) should be [140%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.6) should be [49.6px] for <font-size> assert_equals: expected "49.6px " but got "16px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.6) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.6) should be [Arial] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1) should be [400] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1) should be [100%] for <font-stretch>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1) should be [16px] for <font-size>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1) should be [Arial] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1.5) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1.5) should be [550] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1.5) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1.5) should be [50%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1.5) should be [0px] for <font-size> assert_equals: expected "0px " but got "16px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1.5) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1.5) should be [Arial] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-2) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-2) should be [1] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-2) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-2) should be [400%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-2) should be [268px] for <font-size> assert_equals: expected "268px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-2) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-2) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-0.5) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-0.5) should be [1] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-0.5) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-0.5) should be [250%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-0.5) should be [142px] for <font-size> assert_equals: expected "142px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-0.5) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-0.5) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0) should be [100] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0) should be [200%] for <font-stretch>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0) should be [100px] for <font-size>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.3) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.3) should be [190] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.3) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.3) should be [170%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.3) should be [74.8px] for <font-size> assert_equals: expected "74.8px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.3) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.3) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.6) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.6) should be [280] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.6) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.6) should be [140%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.6) should be [49.6px] for <font-size> assert_equals: expected "49.6px " but got "16px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.6) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.6) should be [Arial] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1) should be [400] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1) should be [100%] for <font-stretch>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1) should be [16px] for <font-size>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1) should be [Arial] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1.5) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1.5) should be [550] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1.5) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1.5) should be [50%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1.5) should be [0px] for <font-size> assert_equals: expected "0px " but got "16px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1.5) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1.5) should be [Arial] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-2) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-2) should be [1] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-2) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-2) should be [400%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-2) should be [268px] for <font-size> assert_equals: expected "268px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-2) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-2) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-0.5) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-0.5) should be [1] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-0.5) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-0.5) should be [250%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-0.5) should be [142px] for <font-size> assert_equals: expected "142px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-0.5) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-0.5) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0) should be [100] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0) should be [200%] for <font-stretch>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0) should be [100px] for <font-size>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.3) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.3) should be [190] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.3) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.3) should be [170%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.3) should be [74.8px] for <font-size> assert_equals: expected "74.8px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.3) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.3) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.6) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.6) should be [280] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.6) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.6) should be [140%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.6) should be [49.6px] for <font-size> assert_equals: expected "49.6px " but got "16px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.6) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.6) should be [Arial] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1) should be [400] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1) should be [100%] for <font-stretch>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1) should be [16px] for <font-size>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1) should be [Arial] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1.5) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1.5) should be [550] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1.5) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1.5) should be [50%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1.5) should be [0px] for <font-size> assert_equals: expected "0px " but got "16px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1.5) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1.5) should be [Arial] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-2) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-2) should be [1] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-2) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-2) should be [400%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-2) should be [268px] for <font-size> assert_equals: expected "268px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-2) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-2) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-0.5) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-0.5) should be [1] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-0.5) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-0.5) should be [250%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-0.5) should be [142px] for <font-size> assert_equals: expected "142px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-0.5) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-0.5) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0) should be [100] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0) should be [200%] for <font-stretch>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0) should be [100px] for <font-size>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.3) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.3) should be [190] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.3) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.3) should be [170%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.3) should be [74.8px] for <font-size> assert_equals: expected "74.8px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.3) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.3) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.6) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.6) should be [280] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.6) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.6) should be [140%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.6) should be [49.6px] for <font-size> assert_equals: expected "49.6px " but got "16px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.6) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.6) should be [Arial] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1) should be [400] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1) should be [100%] for <font-stretch>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1) should be [16px] for <font-size>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1) should be [Arial] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1.5) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1.5) should be [550] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1.5) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1.5) should be [50%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1.5) should be [0px] for <font-size> assert_equals: expected "0px " but got "16px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1.5) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1.5) should be [Arial] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-2) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-2) should be [1] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-2) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-2) should be [400%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-2) should be [268px] for <font-size> assert_equals: expected "268px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-2) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-2) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-0.5) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-0.5) should be [1] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-0.5) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-0.5) should be [250%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-0.5) should be [142px] for <font-size> assert_equals: expected "142px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-0.5) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-0.5) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0) should be [100] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0) should be [200%] for <font-stretch>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0) should be [100px] for <font-size>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.3) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.3) should be [190] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.3) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.3) should be [170%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.3) should be [74.8px] for <font-size> assert_equals: expected "74.8px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.3) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.3) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.6) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.6) should be [280] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.6) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.6) should be [140%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.6) should be [49.6px] for <font-size> assert_equals: expected "49.6px " but got "16px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.6) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.6) should be [Arial] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1) should be [400] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1) should be [100%] for <font-stretch>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1) should be [16px] for <font-size>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1) should be [Arial] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1.5) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1.5) should be [550] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1.5) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1.5) should be [50%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1.5) should be [0px] for <font-size> assert_equals: expected "0px " but got "16px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1.5) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1.5) should be [Arial] for <font-family>
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/css/css-fonts/animations/system-fonts.html b/third_party/blink/web_tests/external/wpt/css/css-fonts/animations/system-fonts.html
new file mode 100644
index 0000000..7021a52
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-fonts/animations/system-fonts.html
@@ -0,0 +1,70 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Fonts Test: Interpolation of system fonts</title>
+<link rel="help" href="https://drafts.csswg.org/css-fonts/#valdef-font-caption">
+<link rel="author" title="Oriol Brufau" href="mailto:obrufau@igalia.com">
+<meta name="assert" content="When interpolating system fonts, they are first resolved and then the font longhands interpolate as usual">
+<link rel="stylesheet" herf="/fonts/ahem.css">
+
+<div id="resolver"></div>
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/interpolation-testcommon.js"></script>
+<script>
+// The system fonts will probably resolve to something very different.
+const initialFont = "italic 100 small-caps ultra-expanded 100px / 100px Ahem";
+
+const resolver = document.getElementById("resolver");
+const resolvedStyle = getComputedStyle(resolver);
+
+function extractNumber(value, unit) {
+  value = value.trim();
+  if (!value.endsWith(unit))
+    return NaN;
+  value = value.slice(0, -unit.length);
+  if (!value.length || value !== value.trim())
+    return NaN;
+  return Number(value);
+}
+
+const systemFonts = ["caption", "icon", "menu", "message-box", "small-caption", "status-bar"];
+for (const systemFont of systemFonts) {
+  resolver.style.font = systemFont;
+  const expectations = [];
+  const systemFontStyle = resolvedStyle["font-style"];
+  const systemFontWeight = Number(resolvedStyle["font-weight"]);
+  const systemFontVariant = resolvedStyle["font-variant"];
+  const systemFontStretch = extractNumber(resolvedStyle["font-stretch"], "%");
+  const systemFontSize = extractNumber(resolvedStyle["font-size"], "px");
+  const systemLineHeight = resolvedStyle["line-height"];
+  const systemLineHeightNumber = extractNumber(systemLineHeight, "px");
+  const systemFontFamily = resolvedStyle["font-family"];
+
+  for (const at of [-2, -0.5, 0, 0.3, 0.6, 1, 1.5]) {
+    const expect = {};
+    expect["font-style"] = at >= 0.5 ? systemFontStyle : "italic";
+    expect["font-weight"] = `${Math.max(1, at * systemFontWeight + (1 - at) * 100)}`;
+    expect["font-variant"] = at >= 0.5 ? systemFontVariant : "small-caps";
+    expect["font-stretch"] = `${at * systemFontStretch + (1 - at) * 200}%`;
+    expect["font-size"] = `${Math.max(0, at * systemFontSize + (1 - at) * 100)}px`;
+    expect["line-height"] = Number.isNaN(systemLineHeightNumber)
+        ? (at >= 0.5 ? systemLineHeight : "100px")
+        : `${Math.max(0, at * systemLineHeightNumber + (1 - at) * 100)}px`;
+    expect["font-family"] = at >= 0.5 ? systemFontFamily : "Ahem";
+    // There are more font longhands, but they can't be set in the shorthand,
+    // and the system fonts will probably resolve to the initial value,
+    // preventing a noticeable interpolation.
+    expectations.push({at, expect});
+  }
+
+  for (const method of ["CSS Animations", "Web Animations"]) {
+    test_interpolation({
+      method,
+      property: "font",
+      from: initialFont,
+      to: systemFont,
+    }, expectations);
+  }
+}
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/support/interpolation-testcommon.js b/third_party/blink/web_tests/external/wpt/css/support/interpolation-testcommon.js
index 999a1e05..9a5e86d 100644
--- a/third_party/blink/web_tests/external/wpt/css/support/interpolation-testcommon.js
+++ b/third_party/blink/web_tests/external/wpt/css/support/interpolation-testcommon.js
@@ -269,9 +269,9 @@
     return expectations.map(function(expectation) {
       var actualTargetContainer = createTargetContainer(testContainer, 'actual');
       var expectedTargetContainer = createTargetContainer(testContainer, 'expected');
-      var expectedStr = expectation.option || expectation.expect;
-      if (!isNeutralKeyframe(expectedStr)) {
-        expectedTargetContainer.target.style.setProperty(property, expectedStr);
+      var expectedProperties = expectation.option || expectation.expect;
+      if (typeof expectedProperties !== "object") {
+        expectedProperties = {[property]: expectedProperties};
       }
       var target = actualTargetContainer.target;
       interpolationMethod.setup(property, from, target);
@@ -279,24 +279,33 @@
         interpolationMethod.interpolate(property, from, to, expectation.at, target);
       };
       target.measure = function() {
-        var expectedValue = getComputedStyle(expectedTargetContainer.target).getPropertyValue(property);
-        test(function() {
-          assert_true(interpolationMethod.isSupported(), `${interpolationMethod.name} should be supported`);
+        for (var [expectedProp, expectedStr] of Object.entries(expectedProperties)) {
+          if (!isNeutralKeyframe(expectedStr)) {
+            expectedTargetContainer.target.style.setProperty(expectedProp, expectedStr);
+          }
+          var expectedValue = getComputedStyle(expectedTargetContainer.target).getPropertyValue(expectedProp);
+          let testName = `${testText} at (${expectation.at}) should be [${sanitizeUrls(expectedStr)}]`;
+          if (property !== expectedProp) {
+            testName += ` for <${expectedProp}>`;
+          }
+          test(function() {
+            assert_true(interpolationMethod.isSupported(), `${interpolationMethod.name} should be supported`);
 
-          if (from && from !== neutralKeyframe) {
-            assert_true(CSS.supports(property, from), '\'from\' value should be supported');
-          }
-          if (to && to !== neutralKeyframe) {
-            assert_true(CSS.supports(property, to), '\'to\' value should be supported');
-          }
-          if (typeof underlying !== 'undefined') {
-            assert_true(CSS.supports(property, underlying), '\'underlying\' value should be supported');
-          }
+            if (from && from !== neutralKeyframe) {
+              assert_true(CSS.supports(property, from), '\'from\' value should be supported');
+            }
+            if (to && to !== neutralKeyframe) {
+              assert_true(CSS.supports(property, to), '\'to\' value should be supported');
+            }
+            if (typeof underlying !== 'undefined') {
+              assert_true(CSS.supports(property, underlying), '\'underlying\' value should be supported');
+            }
 
-          comparisonFunction(
-              getComputedStyle(target).getPropertyValue(property),
-              expectedValue);
-        }, `${testText} at (${expectation.at}) should be [${sanitizeUrls(expectedStr)}]`);
+            comparisonFunction(
+                getComputedStyle(target).getPropertyValue(expectedProp),
+                expectedValue);
+          }, testName);
+        }
       };
       return target;
     });
diff --git a/third_party/blink/web_tests/external/wpt/forced-colors-mode/forced-colors-mode-50.html b/third_party/blink/web_tests/external/wpt/forced-colors-mode/forced-colors-mode-50.html
new file mode 100644
index 0000000..5a98534
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/forced-colors-mode/forced-colors-mode-50.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Forced colors mode - accent-color.</title>
+<link rel="help" href="https://www.w3.org/TR/css-color-adjust-1/#forced-colors-properties">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+  input {
+    accent-color: green;
+  }
+  #a {
+    forced-color-adjust: none;
+  }
+</style>
+<input type="checkbox" id="a" checked>
+<input type="checkbox" id="b" checked>
+
+<script>
+  test(function(){
+    assert_equals(getComputedStyle(a).accentColor, "rgb(0, 128, 0)");
+    assert_equals(getComputedStyle(b).accentColor, "auto");
+  }, "Accent-color computes to auto in forced colors mode, unless forced-color-adjust is none.");
+</script>
diff --git a/third_party/blink/web_tests/webaudio/AudioParam/audioparam-cancel-and-hold.html b/third_party/blink/web_tests/external/wpt/webaudio/the-audio-api/the-audioparam-interface/audioparam-cancel-and-hold.html
similarity index 95%
rename from third_party/blink/web_tests/webaudio/AudioParam/audioparam-cancel-and-hold.html
rename to third_party/blink/web_tests/external/wpt/webaudio/the-audio-api/the-audioparam-interface/audioparam-cancel-and-hold.html
index 2853af2..2b57b4d 100644
--- a/third_party/blink/web_tests/webaudio/AudioParam/audioparam-cancel-and-hold.html
+++ b/third_party/blink/web_tests/external/wpt/webaudio/the-audio-api/the-audioparam-interface/audioparam-cancel-and-hold.html
@@ -4,11 +4,11 @@
     <title>
       Test CancelValuesAndHoldAtTime
     </title>
-    <script src="../../resources/testharness.js"></script>
-    <script src="../../resources/testharnessreport.js"></script>
-    <script src="../resources/audio-param.js"></script>
-    <script src="../resources/audit-util.js"></script>
-    <script src="../resources/audit.js"></script>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/webaudio/resources/audio-param.js"></script>
+    <script src="/webaudio/resources/audit-util.js"></script>
+    <script src="/webaudio/resources/audit.js"></script>
   </head>
   <body>
     <script id="layout-test-code">
@@ -17,6 +17,38 @@
 
       let audit = Audit.createTaskRunner();
 
+      audit.define(
+          {label: 'cancelTime', description: 'Test Invalid Values'},
+          (task, should) => {
+            let context = new OfflineAudioContext({
+              numberOfChannels: 1,
+              length: 1,
+              sampleRate: 8000
+            });
+
+            let src = new ConstantSourceNode(context);
+            src.connect(context.destination);
+
+            should(
+                () => src.offset.cancelAndHoldAtTime(-1),
+                'cancelAndHoldAtTime(-1)')
+                .throw(RangeError);
+
+            // These are TypeErrors because |cancelTime| is a
+            // double, not unrestricted double.
+            should(
+                () => src.offset.cancelAndHoldAtTime(NaN),
+                'cancelAndHoldAtTime(NaN)')
+                .throw(TypeError);
+
+            should(
+                () => src.offset.cancelAndHoldAtTime(Infinity),
+                'cancelAndHoldAtTime(Infinity)')
+                .throw(TypeError);
+
+            task.done();
+          });
+
       // The first few tasks test the cancellation of each relevant automation
       // function.  For the test, a simple linear ramp from 0 to 1 is used to
       // start things off.  Then the automation to be tested is scheduled and
diff --git a/third_party/blink/web_tests/external/wpt/webaudio/the-audio-api/the-audioparam-interface/cancel-scheduled-values.html b/third_party/blink/web_tests/external/wpt/webaudio/the-audio-api/the-audioparam-interface/cancel-scheduled-values.html
index 0174922..ac1da8cd5 100644
--- a/third_party/blink/web_tests/external/wpt/webaudio/the-audio-api/the-audioparam-interface/cancel-scheduled-values.html
+++ b/third_party/blink/web_tests/external/wpt/webaudio/the-audio-api/the-audioparam-interface/cancel-scheduled-values.html
@@ -17,6 +17,38 @@
       let audit = Audit.createTaskRunner();
 
       audit.define(
+          {label: 'cancel-time', description: 'handle cancelTime values'},
+          (task, should) => {
+            let context = new OfflineAudioContext({
+              numberOfChannels: 1,
+              length: renderFrames,
+              sampleRate: sampleRate
+            });
+
+            let src = new ConstantSourceNode(context);
+            src.connect(context.destination);
+
+            should(
+                () => src.offset.cancelScheduledValues(-1),
+                'cancelScheduledValues(-1)')
+                .throw(RangeError);
+
+            // These are TypeErrors because |cancelTime| is a
+            // double, not unrestricted double.
+            should(
+                () => src.offset.cancelScheduledValues(NaN),
+                'cancelScheduledValues(NaN)')
+                .throw(TypeError);
+
+            should(
+                () => src.offset.cancelScheduledValues(Infinity),
+                'cancelScheduledValues(Infinity)')
+                .throw(TypeError);
+
+            task.done();
+          });
+
+      audit.define(
           {label: 'cancel1', description: 'cancel setValueCurve'},
           (task, should) => {
             let context = new OfflineAudioContext({
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/css3/filters/effect-reference-colorspace-hw-expected.png b/third_party/blink/web_tests/flag-specific/composite-after-paint/css3/filters/effect-reference-colorspace-hw-expected.png
index ea3605a..6f596db 100644
--- a/third_party/blink/web_tests/flag-specific/composite-after-paint/css3/filters/effect-reference-colorspace-hw-expected.png
+++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/css3/filters/effect-reference-colorspace-hw-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/css3/filters/effect-reference-hw-expected.png b/third_party/blink/web_tests/flag-specific/composite-after-paint/css3/filters/effect-reference-hw-expected.png
index 87b9f3d0..a09ff49 100644
--- a/third_party/blink/web_tests/flag-specific/composite-after-paint/css3/filters/effect-reference-hw-expected.png
+++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/css3/filters/effect-reference-hw-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/css3/filters/effect-reference-subregion-hw-expected.png b/third_party/blink/web_tests/flag-specific/composite-after-paint/css3/filters/effect-reference-subregion-hw-expected.png
index 3d458650..d3245ff 100644
--- a/third_party/blink/web_tests/flag-specific/composite-after-paint/css3/filters/effect-reference-subregion-hw-expected.png
+++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/css3/filters/effect-reference-subregion-hw-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/virtual/scalefactor200/css3/filters/effect-reference-colorspace-hw-expected.png b/third_party/blink/web_tests/flag-specific/composite-after-paint/virtual/scalefactor200/css3/filters/effect-reference-colorspace-hw-expected.png
index 32ed34b..9315fd3 100644
--- a/third_party/blink/web_tests/flag-specific/composite-after-paint/virtual/scalefactor200/css3/filters/effect-reference-colorspace-hw-expected.png
+++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/virtual/scalefactor200/css3/filters/effect-reference-colorspace-hw-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/virtual/scalefactor200/css3/filters/effect-reference-hw-expected.png b/third_party/blink/web_tests/flag-specific/composite-after-paint/virtual/scalefactor200/css3/filters/effect-reference-hw-expected.png
index c2c56ea6..a0efd31 100644
--- a/third_party/blink/web_tests/flag-specific/composite-after-paint/virtual/scalefactor200/css3/filters/effect-reference-hw-expected.png
+++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/virtual/scalefactor200/css3/filters/effect-reference-hw-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/virtual/scalefactor200/css3/filters/effect-reference-subregion-hw-expected.png b/third_party/blink/web_tests/flag-specific/composite-after-paint/virtual/scalefactor200/css3/filters/effect-reference-subregion-hw-expected.png
index 16ac3e8..cac8104 100644
--- a/third_party/blink/web_tests/flag-specific/composite-after-paint/virtual/scalefactor200/css3/filters/effect-reference-subregion-hw-expected.png
+++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/virtual/scalefactor200/css3/filters/effect-reference-subregion-hw-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/http/tests/navigation/frozen-useragent.html b/third_party/blink/web_tests/http/tests/navigation/frozen-useragent.html
index 21418be1..715e84a 100644
--- a/third_party/blink/web_tests/http/tests/navigation/frozen-useragent.html
+++ b/third_party/blink/web_tests/http/tests/navigation/frozen-useragent.html
@@ -8,29 +8,34 @@
         testRunner.dumpAsText();
     }
 
-    var userAgent = navigator.userAgent;
-    var platform = navigator.platform;
-
+    const userAgent = navigator.userAgent;
+    const platform = navigator.platform;
     // Validate the user agent string using the following frozen user agent strings found in content/common/user_agent.h:
-    // The version is 999 since that's what content_shell uses.
-    var desktopUserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/999.0.0.0 Safari/537.36"
-    var frozenUserAgents = [
-      desktopUserAgent,
-      "Mozilla/5.0 (Linux; Android 9; Unspecified Device) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/999.0.0.0 Safari/537.36",
-      "Mozilla/5.0 (Linux; Android 9; Unspecified Device) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/999.0.0.0 Mobile Safari/537.36"
+    // The version is 999 since that's what content_shell uses. Platform values should match
+    // strings defined in third_party/blink/renderer/core/frame/navigator_id.cc.
+    const desktopUAPlatformMap = new Map([
+      ["Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/999.0.0.0 Safari/537.36", "Win32"],
+      ["Mozilla/5.0 (X11; CrOS x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/999.0.0.0 Safari/537.36", "Linux x86_64"],
+      ["Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/999.0.0.0 Safari/537.36", "Linux x86_64"],
+      ["Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/999.0.0.0 Safari/537.36", "MacIntel"]
+    ]);
+    const mobileUAPlatformMap = new Map([
+      ["Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/999.0.0.0 Safari/537.36", "Linux armv81"],
+      ["Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/999.0.0.0 Mobile Safari/537.36", "Linux armv81"]
+    ]);
+    const frozenUserAgents = [
+      ...desktopUAPlatformMap.keys(),
+      ...mobileUAPlatformMap.keys()
     ];
 
-    // Platform values should match strings defined in third_party/blink/renderer/core/frame/navigator.cc.
-    var desktopPlatform = "Win32";
-    var mobilePlatform = "Linux armv8l";
+    document.write("UserAgent should match one of the frozen UA strings: " + frozenUserAgents.includes(userAgent) + "<br>");
 
-    document.write("UserAgent should match one of the frozen UA strings: " + (frozenUserAgents.indexOf(userAgent) > -1) + "<br>");
-
-    var platformMatchesUserAgent;
-    if (userAgent == desktopUserAgent) {
-      platformMatchesUserAgent = (platform == desktopPlatform);
+    let platformMatchesUserAgent;
+    const desktopUAs = Array.from(desktopUAPlatformMap.keys());
+    if (desktopUAs.includes(userAgent)) {
+      platformMatchesUserAgent = (platform == desktopUAPlatformMap.get(userAgent));
     } else {
-      platformMatchesUserAgent = (platform == mobilePlatform);
+      platformMatchesUserAgent = (platform == mobileUAPlatformMap.get(userAgent));
     }
 
     // Validate navigator.appVersion and navigator.appCodeName
diff --git a/third_party/blink/web_tests/platform/linux/css3/filters/effect-reference-hw-expected.png b/third_party/blink/web_tests/platform/linux/css3/filters/effect-reference-hw-expected.png
deleted file mode 100644
index a04fc69a..0000000
--- a/third_party/blink/web_tests/platform/linux/css3/filters/effect-reference-hw-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/external/wpt/css/css-fonts/animations/system-fonts-expected.txt b/third_party/blink/web_tests/platform/linux/external/wpt/css/css-fonts/animations/system-fonts-expected.txt
new file mode 100644
index 0000000..77b2b14
--- /dev/null
+++ b/third_party/blink/web_tests/platform/linux/external/wpt/css/css-fonts/animations/system-fonts-expected.txt
@@ -0,0 +1,592 @@
+This is a testharness.js-based test.
+Found 588 tests; 528 PASS, 60 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-2) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-2) should be [1] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-2) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-2) should be [400%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-2) should be [268px] for <font-size> assert_equals: expected "268px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-2) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-2) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-0.5) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-0.5) should be [1] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-0.5) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-0.5) should be [250%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-0.5) should be [142px] for <font-size> assert_equals: expected "142px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-0.5) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-0.5) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0) should be [100] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0) should be [200%] for <font-stretch>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0) should be [100px] for <font-size>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.3) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.3) should be [190] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.3) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.3) should be [170%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.3) should be [74.8px] for <font-size> assert_equals: expected "74.8px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.3) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.3) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.6) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.6) should be [280] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.6) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.6) should be [140%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.6) should be [49.6px] for <font-size> assert_equals: expected "49.6px " but got "16px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.6) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.6) should be [Arial] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1) should be [400] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1) should be [100%] for <font-stretch>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1) should be [16px] for <font-size>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1) should be [Arial] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1.5) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1.5) should be [550] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1.5) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1.5) should be [50%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1.5) should be [0px] for <font-size> assert_equals: expected "0px " but got "16px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1.5) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1.5) should be [Arial] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-2) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-2) should be [1] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-2) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-2) should be [400%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-2) should be [268px] for <font-size> assert_equals: expected "268px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-2) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-2) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-0.5) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-0.5) should be [1] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-0.5) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-0.5) should be [250%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-0.5) should be [142px] for <font-size> assert_equals: expected "142px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-0.5) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-0.5) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0) should be [100] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0) should be [200%] for <font-stretch>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0) should be [100px] for <font-size>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.3) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.3) should be [190] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.3) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.3) should be [170%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.3) should be [74.8px] for <font-size> assert_equals: expected "74.8px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.3) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.3) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.6) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.6) should be [280] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.6) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.6) should be [140%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.6) should be [49.6px] for <font-size> assert_equals: expected "49.6px " but got "16px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.6) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.6) should be [Arial] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1) should be [400] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1) should be [100%] for <font-stretch>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1) should be [16px] for <font-size>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1) should be [Arial] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1.5) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1.5) should be [550] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1.5) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1.5) should be [50%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1.5) should be [0px] for <font-size> assert_equals: expected "0px " but got "16px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1.5) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1.5) should be [Arial] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-2) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-2) should be [1] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-2) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-2) should be [400%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-2) should be [268px] for <font-size> assert_equals: expected "268px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-2) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-2) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-0.5) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-0.5) should be [1] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-0.5) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-0.5) should be [250%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-0.5) should be [142px] for <font-size> assert_equals: expected "142px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-0.5) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-0.5) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0) should be [100] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0) should be [200%] for <font-stretch>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0) should be [100px] for <font-size>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.3) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.3) should be [190] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.3) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.3) should be [170%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.3) should be [74.8px] for <font-size> assert_equals: expected "74.8px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.3) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.3) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.6) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.6) should be [280] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.6) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.6) should be [140%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.6) should be [49.6px] for <font-size> assert_equals: expected "49.6px " but got "16px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.6) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.6) should be [Arial] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1) should be [400] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1) should be [100%] for <font-stretch>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1) should be [16px] for <font-size>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1) should be [Arial] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1.5) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1.5) should be [550] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1.5) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1.5) should be [50%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1.5) should be [0px] for <font-size> assert_equals: expected "0px " but got "16px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1.5) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1.5) should be [Arial] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-2) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-2) should be [1] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-2) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-2) should be [400%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-2) should be [268px] for <font-size> assert_equals: expected "268px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-2) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-2) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-0.5) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-0.5) should be [1] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-0.5) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-0.5) should be [250%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-0.5) should be [142px] for <font-size> assert_equals: expected "142px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-0.5) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-0.5) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0) should be [100] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0) should be [200%] for <font-stretch>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0) should be [100px] for <font-size>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.3) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.3) should be [190] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.3) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.3) should be [170%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.3) should be [74.8px] for <font-size> assert_equals: expected "74.8px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.3) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.3) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.6) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.6) should be [280] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.6) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.6) should be [140%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.6) should be [49.6px] for <font-size> assert_equals: expected "49.6px " but got "16px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.6) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.6) should be [Arial] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1) should be [400] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1) should be [100%] for <font-stretch>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1) should be [16px] for <font-size>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1) should be [Arial] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1.5) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1.5) should be [550] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1.5) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1.5) should be [50%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1.5) should be [0px] for <font-size> assert_equals: expected "0px " but got "16px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1.5) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1.5) should be [Arial] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-2) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-2) should be [1] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-2) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-2) should be [400%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-2) should be [268px] for <font-size> assert_equals: expected "268px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-2) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-2) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-0.5) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-0.5) should be [1] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-0.5) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-0.5) should be [250%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-0.5) should be [142px] for <font-size> assert_equals: expected "142px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-0.5) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-0.5) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0) should be [100] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0) should be [200%] for <font-stretch>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0) should be [100px] for <font-size>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.3) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.3) should be [190] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.3) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.3) should be [170%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.3) should be [74.8px] for <font-size> assert_equals: expected "74.8px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.3) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.3) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.6) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.6) should be [280] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.6) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.6) should be [140%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.6) should be [49.6px] for <font-size> assert_equals: expected "49.6px " but got "16px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.6) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.6) should be [Arial] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1) should be [400] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1) should be [100%] for <font-stretch>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1) should be [16px] for <font-size>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1) should be [Arial] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1.5) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1.5) should be [550] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1.5) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1.5) should be [50%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1.5) should be [0px] for <font-size> assert_equals: expected "0px " but got "16px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1.5) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1.5) should be [Arial] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-2) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-2) should be [1] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-2) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-2) should be [400%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-2) should be [268px] for <font-size> assert_equals: expected "268px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-2) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-2) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-0.5) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-0.5) should be [1] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-0.5) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-0.5) should be [250%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-0.5) should be [142px] for <font-size> assert_equals: expected "142px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-0.5) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-0.5) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0) should be [100] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0) should be [200%] for <font-stretch>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0) should be [100px] for <font-size>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.3) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.3) should be [190] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.3) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.3) should be [170%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.3) should be [74.8px] for <font-size> assert_equals: expected "74.8px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.3) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.3) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.6) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.6) should be [280] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.6) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.6) should be [140%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.6) should be [49.6px] for <font-size> assert_equals: expected "49.6px " but got "16px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.6) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.6) should be [Arial] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1) should be [400] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1) should be [100%] for <font-stretch>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1) should be [16px] for <font-size>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1) should be [Arial] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1.5) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1.5) should be [550] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1.5) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1.5) should be [50%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1.5) should be [0px] for <font-size> assert_equals: expected "0px " but got "16px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1.5) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1.5) should be [Arial] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-2) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-2) should be [1] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-2) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-2) should be [400%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-2) should be [268px] for <font-size> assert_equals: expected "268px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-2) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-2) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-0.5) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-0.5) should be [1] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-0.5) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-0.5) should be [250%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-0.5) should be [142px] for <font-size> assert_equals: expected "142px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-0.5) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-0.5) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0) should be [100] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0) should be [200%] for <font-stretch>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0) should be [100px] for <font-size>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.3) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.3) should be [190] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.3) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.3) should be [170%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.3) should be [74.8px] for <font-size> assert_equals: expected "74.8px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.3) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.3) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.6) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.6) should be [280] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.6) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.6) should be [140%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.6) should be [49.6px] for <font-size> assert_equals: expected "49.6px " but got "16px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.6) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.6) should be [Arial] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1) should be [400] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1) should be [100%] for <font-stretch>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1) should be [16px] for <font-size>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1) should be [Arial] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1.5) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1.5) should be [550] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1.5) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1.5) should be [50%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1.5) should be [0px] for <font-size> assert_equals: expected "0px " but got "16px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1.5) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1.5) should be [Arial] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-2) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-2) should be [1] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-2) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-2) should be [400%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-2) should be [268px] for <font-size> assert_equals: expected "268px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-2) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-2) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-0.5) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-0.5) should be [1] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-0.5) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-0.5) should be [250%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-0.5) should be [142px] for <font-size> assert_equals: expected "142px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-0.5) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-0.5) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0) should be [100] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0) should be [200%] for <font-stretch>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0) should be [100px] for <font-size>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.3) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.3) should be [190] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.3) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.3) should be [170%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.3) should be [74.8px] for <font-size> assert_equals: expected "74.8px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.3) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.3) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.6) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.6) should be [280] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.6) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.6) should be [140%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.6) should be [49.6px] for <font-size> assert_equals: expected "49.6px " but got "16px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.6) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.6) should be [Arial] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1) should be [400] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1) should be [100%] for <font-stretch>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1) should be [16px] for <font-size>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1) should be [Arial] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1.5) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1.5) should be [550] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1.5) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1.5) should be [50%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1.5) should be [0px] for <font-size> assert_equals: expected "0px " but got "16px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1.5) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1.5) should be [Arial] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-2) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-2) should be [1] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-2) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-2) should be [400%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-2) should be [268px] for <font-size> assert_equals: expected "268px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-2) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-2) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-0.5) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-0.5) should be [1] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-0.5) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-0.5) should be [250%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-0.5) should be [142px] for <font-size> assert_equals: expected "142px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-0.5) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-0.5) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0) should be [100] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0) should be [200%] for <font-stretch>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0) should be [100px] for <font-size>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.3) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.3) should be [190] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.3) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.3) should be [170%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.3) should be [74.8px] for <font-size> assert_equals: expected "74.8px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.3) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.3) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.6) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.6) should be [280] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.6) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.6) should be [140%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.6) should be [49.6px] for <font-size> assert_equals: expected "49.6px " but got "16px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.6) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.6) should be [Arial] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1) should be [400] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1) should be [100%] for <font-stretch>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1) should be [16px] for <font-size>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1) should be [Arial] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1.5) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1.5) should be [550] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1.5) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1.5) should be [50%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1.5) should be [0px] for <font-size> assert_equals: expected "0px " but got "16px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1.5) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1.5) should be [Arial] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-2) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-2) should be [1] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-2) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-2) should be [400%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-2) should be [268px] for <font-size> assert_equals: expected "268px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-2) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-2) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-0.5) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-0.5) should be [1] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-0.5) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-0.5) should be [250%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-0.5) should be [142px] for <font-size> assert_equals: expected "142px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-0.5) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-0.5) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0) should be [100] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0) should be [200%] for <font-stretch>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0) should be [100px] for <font-size>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.3) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.3) should be [190] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.3) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.3) should be [170%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.3) should be [74.8px] for <font-size> assert_equals: expected "74.8px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.3) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.3) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.6) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.6) should be [280] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.6) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.6) should be [140%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.6) should be [49.6px] for <font-size> assert_equals: expected "49.6px " but got "16px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.6) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.6) should be [Arial] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1) should be [400] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1) should be [100%] for <font-stretch>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1) should be [16px] for <font-size>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1) should be [Arial] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1.5) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1.5) should be [550] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1.5) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1.5) should be [50%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1.5) should be [0px] for <font-size> assert_equals: expected "0px " but got "16px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1.5) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1.5) should be [Arial] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-2) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-2) should be [1] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-2) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-2) should be [400%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-2) should be [268px] for <font-size> assert_equals: expected "268px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-2) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-2) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-0.5) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-0.5) should be [1] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-0.5) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-0.5) should be [250%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-0.5) should be [142px] for <font-size> assert_equals: expected "142px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-0.5) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-0.5) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0) should be [100] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0) should be [200%] for <font-stretch>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0) should be [100px] for <font-size>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.3) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.3) should be [190] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.3) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.3) should be [170%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.3) should be [74.8px] for <font-size> assert_equals: expected "74.8px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.3) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.3) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.6) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.6) should be [280] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.6) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.6) should be [140%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.6) should be [49.6px] for <font-size> assert_equals: expected "49.6px " but got "16px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.6) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.6) should be [Arial] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1) should be [400] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1) should be [100%] for <font-stretch>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1) should be [16px] for <font-size>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1) should be [Arial] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1.5) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1.5) should be [550] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1.5) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1.5) should be [50%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1.5) should be [0px] for <font-size> assert_equals: expected "0px " but got "16px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1.5) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1.5) should be [Arial] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-2) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-2) should be [1] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-2) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-2) should be [400%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-2) should be [268px] for <font-size> assert_equals: expected "268px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-2) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-2) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-0.5) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-0.5) should be [1] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-0.5) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-0.5) should be [250%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-0.5) should be [142px] for <font-size> assert_equals: expected "142px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-0.5) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-0.5) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0) should be [100] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0) should be [200%] for <font-stretch>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0) should be [100px] for <font-size>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.3) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.3) should be [190] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.3) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.3) should be [170%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.3) should be [74.8px] for <font-size> assert_equals: expected "74.8px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.3) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.3) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.6) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.6) should be [280] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.6) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.6) should be [140%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.6) should be [49.6px] for <font-size> assert_equals: expected "49.6px " but got "16px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.6) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.6) should be [Arial] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1) should be [400] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1) should be [100%] for <font-stretch>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1) should be [16px] for <font-size>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1) should be [Arial] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1.5) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1.5) should be [550] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1.5) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1.5) should be [50%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1.5) should be [0px] for <font-size> assert_equals: expected "0px " but got "16px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1.5) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1.5) should be [Arial] for <font-family>
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/filters-diffuse-01-f-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/filters-diffuse-01-f-expected.png
index 3c77e17..8aa571f6 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/filters-diffuse-01-f-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/filters-diffuse-01-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/filters-light-01-f-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/filters-light-01-f-expected.png
index d829086..69f3ae0c 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/filters-light-01-f-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/filters-light-01-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/filters-light-04-f-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/filters-light-04-f-expected.png
index 75d69a3d..6aca7cbb 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/filters-light-04-f-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/filters-light-04-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/filters-specular-01-f-expected.png b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/filters-specular-01-f-expected.png
index fd3ec9f..bee7268 100644
--- a/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/filters-specular-01-f-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/W3C-SVG-1.1/filters-specular-01-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/text/bidi-reorder-in-text-chunks-expected.png b/third_party/blink/web_tests/platform/linux/svg/text/bidi-reorder-in-text-chunks-expected.png
new file mode 100644
index 0000000..ac2562c7
--- /dev/null
+++ b/third_party/blink/web_tests/platform/linux/svg/text/bidi-reorder-in-text-chunks-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/filters-diffuse-01-f-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/filters-diffuse-01-f-expected.png
new file mode 100644
index 0000000..8aa571f6
--- /dev/null
+++ b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/filters-diffuse-01-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/filters-light-01-f-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/filters-light-01-f-expected.png
new file mode 100644
index 0000000..69f3ae0c
--- /dev/null
+++ b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/filters-light-01-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/filters-light-04-f-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/filters-light-04-f-expected.png
new file mode 100644
index 0000000..6aca7cbb
--- /dev/null
+++ b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/filters-light-04-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/filters-specular-01-f-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/filters-specular-01-f-expected.png
new file mode 100644
index 0000000..bee7268
--- /dev/null
+++ b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/filters-specular-01-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/text-spacing-01-b-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/text-spacing-01-b-expected.png
new file mode 100644
index 0000000..a68786a
--- /dev/null
+++ b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/text-spacing-01-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_svg_text/svg/batik/text/textLayout-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_svg_text/svg/batik/text/textLayout-expected.png
index a92f202..08e8552c 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_svg_text/svg/batik/text/textLayout-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_svg_text/svg/batik/text/textLayout-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_svg_text/svg/text/bidi-reorder-in-text-chunks-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_svg_text/svg/text/bidi-reorder-in-text-chunks-expected.png
new file mode 100644
index 0000000..1afee93
--- /dev/null
+++ b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_svg_text/svg/text/bidi-reorder-in-text-chunks-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/css3/filters/effect-reference-colorspace-expected.png b/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/css3/filters/effect-reference-colorspace-expected.png
index 32ed34b..9315fd3 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/css3/filters/effect-reference-colorspace-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/css3/filters/effect-reference-colorspace-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/css3/filters/effect-reference-colorspace-hw-expected.png b/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/css3/filters/effect-reference-colorspace-hw-expected.png
index 41486ec..6497519 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/css3/filters/effect-reference-colorspace-hw-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/css3/filters/effect-reference-colorspace-hw-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/css3/filters/effect-reference-expected.png b/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/css3/filters/effect-reference-expected.png
index c2c56ea6..a0efd31 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/css3/filters/effect-reference-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/css3/filters/effect-reference-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/css3/filters/effect-reference-hw-expected.png b/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/css3/filters/effect-reference-hw-expected.png
index 9b5d8884..f0b2c43 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/css3/filters/effect-reference-hw-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/css3/filters/effect-reference-hw-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/css3/filters/effect-reference-subregion-expected.png b/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/css3/filters/effect-reference-subregion-expected.png
index 16ac3e8..cac8104 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/css3/filters/effect-reference-subregion-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/css3/filters/effect-reference-subregion-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/css3/filters/effect-reference-subregion-hw-expected.png b/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/css3/filters/effect-reference-subregion-hw-expected.png
index 2c641a0..0394042cb 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/css3/filters/effect-reference-subregion-hw-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/css3/filters/effect-reference-subregion-hw-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/css3/filters/effect-reference-zoom-expected.png b/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/css3/filters/effect-reference-zoom-expected.png
index eb0f3a3..b8c6179 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/css3/filters/effect-reference-zoom-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/css3/filters/effect-reference-zoom-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/css3/filters/effect-reference-zoom-hw-expected.png b/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/css3/filters/effect-reference-zoom-hw-expected.png
index c8a3cb4..28ff48cd 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/css3/filters/effect-reference-zoom-hw-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/scalefactor200/css3/filters/effect-reference-zoom-hw-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/synchronous_html_parser/svg/W3C-SVG-1.1/filters-diffuse-01-f-expected.png b/third_party/blink/web_tests/platform/linux/virtual/synchronous_html_parser/svg/W3C-SVG-1.1/filters-diffuse-01-f-expected.png
new file mode 100644
index 0000000..8aa571f6
--- /dev/null
+++ b/third_party/blink/web_tests/platform/linux/virtual/synchronous_html_parser/svg/W3C-SVG-1.1/filters-diffuse-01-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/synchronous_html_parser/svg/W3C-SVG-1.1/filters-light-01-f-expected.png b/third_party/blink/web_tests/platform/linux/virtual/synchronous_html_parser/svg/W3C-SVG-1.1/filters-light-01-f-expected.png
new file mode 100644
index 0000000..69f3ae0c
--- /dev/null
+++ b/third_party/blink/web_tests/platform/linux/virtual/synchronous_html_parser/svg/W3C-SVG-1.1/filters-light-01-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/synchronous_html_parser/svg/W3C-SVG-1.1/filters-light-04-f-expected.png b/third_party/blink/web_tests/platform/linux/virtual/synchronous_html_parser/svg/W3C-SVG-1.1/filters-light-04-f-expected.png
new file mode 100644
index 0000000..6aca7cbb
--- /dev/null
+++ b/third_party/blink/web_tests/platform/linux/virtual/synchronous_html_parser/svg/W3C-SVG-1.1/filters-light-04-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/synchronous_html_parser/svg/W3C-SVG-1.1/filters-specular-01-f-expected.png b/third_party/blink/web_tests/platform/linux/virtual/synchronous_html_parser/svg/W3C-SVG-1.1/filters-specular-01-f-expected.png
new file mode 100644
index 0000000..bee7268
--- /dev/null
+++ b/third_party/blink/web_tests/platform/linux/virtual/synchronous_html_parser/svg/W3C-SVG-1.1/filters-specular-01-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/W3C-SVG-1.1/filters-diffuse-01-f-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/W3C-SVG-1.1/filters-diffuse-01-f-expected.png
deleted file mode 100644
index a64c0fe..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/W3C-SVG-1.1/filters-diffuse-01-f-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/text-spacing-01-b-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/text-spacing-01-b-expected.png
new file mode 100644
index 0000000..efc23458
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/text-spacing-01-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/W3C-SVG-1.1/filters-light-01-f-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/W3C-SVG-1.1/filters-light-01-f-expected.png
new file mode 100644
index 0000000..867fde3
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/W3C-SVG-1.1/filters-light-01-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/W3C-SVG-1.1/filters-light-04-f-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/W3C-SVG-1.1/filters-light-04-f-expected.png
new file mode 100644
index 0000000..22173e6
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/W3C-SVG-1.1/filters-light-04-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/W3C-SVG-1.1/filters-specular-01-f-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/W3C-SVG-1.1/filters-specular-01-f-expected.png
new file mode 100644
index 0000000..b70d2c3db
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/W3C-SVG-1.1/filters-specular-01-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-diffuseConstant-attr-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-diffuseConstant-attr-expected.png
new file mode 100644
index 0000000..6ffab20
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-diffuseConstant-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-in-attr-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-in-attr-expected.png
new file mode 100644
index 0000000..6ffab20
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-in-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-kernelUnitLength-attr-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-kernelUnitLength-attr-expected.png
new file mode 100644
index 0000000..04efe1f
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-kernelUnitLength-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-lighting-color-attr-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-lighting-color-attr-expected.png
new file mode 100644
index 0000000..6ffab20
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-lighting-color-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-surfaceScale-attr-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-surfaceScale-attr-expected.png
new file mode 100644
index 0000000..6ffab20
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-surfaceScale-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-inherit-lighting-color-css-prop-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-inherit-lighting-color-css-prop-expected.png
new file mode 100644
index 0000000..6ffab20
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-inherit-lighting-color-css-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-lighting-color-css-prop-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-lighting-color-css-prop-expected.png
new file mode 100644
index 0000000..6ffab20
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-lighting-color-css-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-svgdom-diffuseConstant-prop-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-svgdom-diffuseConstant-prop-expected.png
new file mode 100644
index 0000000..6ffab20
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-svgdom-diffuseConstant-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-svgdom-in-prop-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-svgdom-in-prop-expected.png
new file mode 100644
index 0000000..6ffab20
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-svgdom-in-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-svgdom-surfaceScale-prop-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-svgdom-surfaceScale-prop-expected.png
new file mode 100644
index 0000000..6ffab20
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-svgdom-surfaceScale-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDistantLightElement-dom-azimuth-attr-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDistantLightElement-dom-azimuth-attr-expected.png
new file mode 100644
index 0000000..4ff9b09d
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDistantLightElement-dom-azimuth-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDistantLightElement-dom-elevation-attr-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDistantLightElement-dom-elevation-attr-expected.png
new file mode 100644
index 0000000..4ff9b09d
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDistantLightElement-dom-elevation-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDistantLightElement-svgdom-azimuth-prop-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDistantLightElement-svgdom-azimuth-prop-expected.png
new file mode 100644
index 0000000..4ff9b09d
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDistantLightElement-svgdom-azimuth-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDistantLightElement-svgdom-elevation-prop-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDistantLightElement-svgdom-elevation-prop-expected.png
new file mode 100644
index 0000000..4ff9b09d
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDistantLightElement-svgdom-elevation-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEPointLightElement-dom-x-attr-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEPointLightElement-dom-x-attr-expected.png
new file mode 100644
index 0000000..6ffab20
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEPointLightElement-dom-x-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEPointLightElement-dom-y-attr-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEPointLightElement-dom-y-attr-expected.png
new file mode 100644
index 0000000..6ffab20
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEPointLightElement-dom-y-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEPointLightElement-dom-z-attr-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEPointLightElement-dom-z-attr-expected.png
new file mode 100644
index 0000000..6ffab20
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEPointLightElement-dom-z-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEPointLightElement-svgdom-x-prop-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEPointLightElement-svgdom-x-prop-expected.png
new file mode 100644
index 0000000..6ffab20
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEPointLightElement-svgdom-x-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEPointLightElement-svgdom-y-prop-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEPointLightElement-svgdom-y-prop-expected.png
new file mode 100644
index 0000000..6ffab20
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEPointLightElement-svgdom-y-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEPointLightElement-svgdom-z-prop-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEPointLightElement-svgdom-z-prop-expected.png
new file mode 100644
index 0000000..6ffab20
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEPointLightElement-svgdom-z-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-dom-in-attr-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-dom-in-attr-expected.png
new file mode 100644
index 0000000..ee71b807
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-dom-in-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-dom-kernelUnitLength-attr-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-dom-kernelUnitLength-attr-expected.png
new file mode 100644
index 0000000..90f3e6f
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-dom-kernelUnitLength-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-dom-specularConstant-attr-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-dom-specularConstant-attr-expected.png
new file mode 100644
index 0000000..ee71b807
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-dom-specularConstant-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-dom-specularExponent-attr-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-dom-specularExponent-attr-expected.png
new file mode 100644
index 0000000..ee71b807
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-dom-specularExponent-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-dom-suraceScale-attr-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-dom-suraceScale-attr-expected.png
new file mode 100644
index 0000000..ee71b807
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-dom-suraceScale-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-inherit-lighting-color-css-prop-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-inherit-lighting-color-css-prop-expected.png
new file mode 100644
index 0000000..c2403b4
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-inherit-lighting-color-css-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-lighting-color-css-prop-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-lighting-color-css-prop-expected.png
new file mode 100644
index 0000000..c2403b4
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-lighting-color-css-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-in-prop-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-in-prop-expected.png
new file mode 100644
index 0000000..ee71b807
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-in-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-specularConstant-prop-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-specularConstant-prop-expected.png
new file mode 100644
index 0000000..ee71b807
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-specularConstant-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-specularExponent-prop-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-specularExponent-prop-expected.png
new file mode 100644
index 0000000..ee71b807
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-specularExponent-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-suraceScale-prop-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-suraceScale-prop-expected.png
new file mode 100644
index 0000000..ee71b807
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-suraceScale-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-limitingConeAngle-attr-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-limitingConeAngle-attr-expected.png
new file mode 100644
index 0000000..376487cf
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-limitingConeAngle-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtX-attr-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtX-attr-expected.png
new file mode 100644
index 0000000..376487cf
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtX-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtY-attr-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtY-attr-expected.png
new file mode 100644
index 0000000..376487cf
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtY-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtZ-attr-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtZ-attr-expected.png
new file mode 100644
index 0000000..376487cf
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtZ-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-specularExponent-attr-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-specularExponent-attr-expected.png
new file mode 100644
index 0000000..376487cf
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-specularExponent-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-x-attr-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-x-attr-expected.png
new file mode 100644
index 0000000..376487cf
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-x-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-y-attr-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-y-attr-expected.png
new file mode 100644
index 0000000..376487cf
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-y-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-z-attr-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-z-attr-expected.png
new file mode 100644
index 0000000..376487cf
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-z-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-limitingConeAngle-prop-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-limitingConeAngle-prop-expected.png
new file mode 100644
index 0000000..376487cf
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-limitingConeAngle-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtX-prop-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtX-prop-expected.png
new file mode 100644
index 0000000..376487cf
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtX-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtY-prop-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtY-prop-expected.png
new file mode 100644
index 0000000..376487cf
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtY-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtZ-prop-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtZ-prop-expected.png
new file mode 100644
index 0000000..376487cf
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtZ-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-specularExponent-prop-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-specularExponent-prop-expected.png
new file mode 100644
index 0000000..376487cf
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-specularExponent-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-x-prop-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-x-prop-expected.png
new file mode 100644
index 0000000..376487cf
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-x-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-y-prop-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-y-prop-expected.png
new file mode 100644
index 0000000..376487cf
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-y-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-z-prop-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-z-prop-expected.png
new file mode 100644
index 0000000..376487cf
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-z-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-dom-filterUnits-attr-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-dom-filterUnits-attr-expected.png
new file mode 100644
index 0000000..4a6467a
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-dom-filterUnits-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-dom-height-attr-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-dom-height-attr-expected.png
new file mode 100644
index 0000000..4a6467a
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-dom-height-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-dom-width-attr-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-dom-width-attr-expected.png
new file mode 100644
index 0000000..4a6467a
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-dom-width-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-dom-x-attr-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-dom-x-attr-expected.png
new file mode 100644
index 0000000..4a6467a
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-dom-x-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-dom-y-attr-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-dom-y-attr-expected.png
new file mode 100644
index 0000000..4a6467a
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-dom-y-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-svgdom-filterUnits-prop-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-svgdom-filterUnits-prop-expected.png
new file mode 100644
index 0000000..4a6467a
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-svgdom-filterUnits-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-svgdom-height-prop-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-svgdom-height-prop-expected.png
new file mode 100644
index 0000000..4a6467a
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-svgdom-height-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-svgdom-width-prop-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-svgdom-width-prop-expected.png
new file mode 100644
index 0000000..4a6467a
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-svgdom-width-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-svgdom-x-prop-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-svgdom-x-prop-expected.png
new file mode 100644
index 0000000..4a6467a
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-svgdom-x-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-svgdom-y-prop-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-svgdom-y-prop-expected.png
new file mode 100644
index 0000000..4a6467a
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-svgdom-y-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-height-attr-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-height-attr-expected.png
new file mode 100644
index 0000000..4a6467a
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-height-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-result-attr-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-result-attr-expected.png
new file mode 100644
index 0000000..4a6467a
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-result-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-width-attr-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-width-attr-expected.png
new file mode 100644
index 0000000..4a6467a
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-width-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-x-attr-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-x-attr-expected.png
new file mode 100644
index 0000000..4a6467a
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-x-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-y-attr-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-y-attr-expected.png
new file mode 100644
index 0000000..4a6467a
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-y-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-height-prop-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-height-prop-expected.png
new file mode 100644
index 0000000..4a6467a
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-height-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-result-prop-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-result-prop-expected.png
new file mode 100644
index 0000000..4a6467a
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-result-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-width-prop-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-width-prop-expected.png
new file mode 100644
index 0000000..4a6467a
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-width-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-x-prop-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-x-prop-expected.png
new file mode 100644
index 0000000..4a6467a
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-x-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-y-prop-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-y-prop-expected.png
new file mode 100644
index 0000000..4a6467a
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-y-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/svg/W3C-SVG-1.1/filters-light-04-f-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/svg/W3C-SVG-1.1/filters-light-04-f-expected.png
index 3cc9b0a..23c9efc 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.14/svg/W3C-SVG-1.1/filters-light-04-f-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.14/svg/W3C-SVG-1.1/filters-light-04-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/svg/text/bidi-reorder-in-text-chunks-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/svg/text/bidi-reorder-in-text-chunks-expected.png
new file mode 100644
index 0000000..17da26d
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.14/svg/text/bidi-reorder-in-text-chunks-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/scalefactor200/css3/filters/effect-reference-zoom-hw-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/scalefactor200/css3/filters/effect-reference-zoom-hw-expected.png
new file mode 100644
index 0000000..666098f
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/scalefactor200/css3/filters/effect-reference-zoom-hw-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/synchronous_html_parser/svg/W3C-SVG-1.1/filters-light-04-f-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/synchronous_html_parser/svg/W3C-SVG-1.1/filters-light-04-f-expected.png
new file mode 100644
index 0000000..23c9efc
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/synchronous_html_parser/svg/W3C-SVG-1.1/filters-light-04-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/filters-diffuse-01-f-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/filters-diffuse-01-f-expected.png
new file mode 100644
index 0000000..3dea224
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/filters-diffuse-01-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/filters-light-01-f-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/filters-light-01-f-expected.png
new file mode 100644
index 0000000..552d59b8
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/filters-light-01-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/filters-light-04-f-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/filters-light-04-f-expected.png
new file mode 100644
index 0000000..a1130c32
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/filters-light-04-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/filters-specular-01-f-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/filters-specular-01-f-expected.png
new file mode 100644
index 0000000..f0d3dbb
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/filters-specular-01-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/text-text-06-t-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/text-text-06-t-expected.png
index 3149ceb1..8129541c 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/text-text-06-t-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/text-text-06-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/text-text-07-t-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/text-text-07-t-expected.png
new file mode 100644
index 0000000..d7cf2ca
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/text-text-07-t-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_svg_text/svg/batik/text/textLayout-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_svg_text/svg/batik/text/textLayout-expected.png
new file mode 100644
index 0000000..083929d
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_svg_text/svg/batik/text/textLayout-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_svg_text/svg/custom/glyph-transformation-with-hkern-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_svg_text/svg/custom/glyph-transformation-with-hkern-expected.png
index a6de0f4..f3fac3b 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_svg_text/svg/custom/glyph-transformation-with-hkern-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_svg_text/svg/custom/glyph-transformation-with-hkern-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_svg_text/svg/text/bidi-reorder-value-lists-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_svg_text/svg/text/bidi-reorder-value-lists-expected.png
index 2a07c20..ae71625 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_svg_text/svg/text/bidi-reorder-value-lists-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_svg_text/svg/text/bidi-reorder-value-lists-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/scalefactor200/css3/filters/effect-reference-zoom-hw-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/scalefactor200/css3/filters/effect-reference-zoom-hw-expected.png
new file mode 100644
index 0000000..4836134
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/scalefactor200/css3/filters/effect-reference-zoom-hw-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/css3/filters/effect-reference-colorspace-expected.png b/third_party/blink/web_tests/platform/mac/css3/filters/effect-reference-colorspace-expected.png
index c40ff60..d1034b3e 100644
--- a/third_party/blink/web_tests/platform/mac/css3/filters/effect-reference-colorspace-expected.png
+++ b/third_party/blink/web_tests/platform/mac/css3/filters/effect-reference-colorspace-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/css3/filters/effect-reference-colorspace-hw-expected.png b/third_party/blink/web_tests/platform/mac/css3/filters/effect-reference-colorspace-hw-expected.png
index 6872537..930afce1 100644
--- a/third_party/blink/web_tests/platform/mac/css3/filters/effect-reference-colorspace-hw-expected.png
+++ b/third_party/blink/web_tests/platform/mac/css3/filters/effect-reference-colorspace-hw-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/css3/filters/effect-reference-expected.png b/third_party/blink/web_tests/platform/mac/css3/filters/effect-reference-expected.png
index e76bb5b..beed33c 100644
--- a/third_party/blink/web_tests/platform/mac/css3/filters/effect-reference-expected.png
+++ b/third_party/blink/web_tests/platform/mac/css3/filters/effect-reference-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/css3/filters/effect-reference-hw-expected.png b/third_party/blink/web_tests/platform/mac/css3/filters/effect-reference-hw-expected.png
index 1c24b7c7d..3d85213 100644
--- a/third_party/blink/web_tests/platform/mac/css3/filters/effect-reference-hw-expected.png
+++ b/third_party/blink/web_tests/platform/mac/css3/filters/effect-reference-hw-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/css3/filters/effect-reference-subregion-expected.png b/third_party/blink/web_tests/platform/mac/css3/filters/effect-reference-subregion-expected.png
index 3f712764..97fa631 100644
--- a/third_party/blink/web_tests/platform/mac/css3/filters/effect-reference-subregion-expected.png
+++ b/third_party/blink/web_tests/platform/mac/css3/filters/effect-reference-subregion-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/css3/filters/effect-reference-subregion-hw-expected.png b/third_party/blink/web_tests/platform/mac/css3/filters/effect-reference-subregion-hw-expected.png
index 09f835e..654e9015 100644
--- a/third_party/blink/web_tests/platform/mac/css3/filters/effect-reference-subregion-hw-expected.png
+++ b/third_party/blink/web_tests/platform/mac/css3/filters/effect-reference-subregion-hw-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/css3/filters/effect-reference-zoom-hw-expected.png b/third_party/blink/web_tests/platform/mac/css3/filters/effect-reference-zoom-hw-expected.png
index ba67a1b..1eb88105a 100644
--- a/third_party/blink/web_tests/platform/mac/css3/filters/effect-reference-zoom-hw-expected.png
+++ b/third_party/blink/web_tests/platform/mac/css3/filters/effect-reference-zoom-hw-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/filters-diffuse-01-f-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/filters-diffuse-01-f-expected.png
index c0edaeb..a64c0fe 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/filters-diffuse-01-f-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/filters-diffuse-01-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/filters-light-01-f-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/filters-light-01-f-expected.png
index cf43585399..428f4e8 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/filters-light-01-f-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/filters-light-01-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/filters-light-04-f-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/filters-light-04-f-expected.png
index 68a2b931..f75af299 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/filters-light-04-f-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/filters-light-04-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/filters-specular-01-f-expected.png b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/filters-specular-01-f-expected.png
index 235b64bf..8cd185b 100644
--- a/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/filters-specular-01-f-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/W3C-SVG-1.1/filters-specular-01-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/text/bidi-reorder-in-text-chunks-expected.png b/third_party/blink/web_tests/platform/mac/svg/text/bidi-reorder-in-text-chunks-expected.png
new file mode 100644
index 0000000..c224b862
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac/svg/text/bidi-reorder-in-text-chunks-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/text/spacing-expected.png b/third_party/blink/web_tests/platform/mac/svg/text/spacing-expected.png
new file mode 100644
index 0000000..d15c8ed
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac/svg/text/spacing-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/text-spacing-01-b-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/text-spacing-01-b-expected.png
new file mode 100644
index 0000000..c0ba97bf
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/text-spacing-01-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_svg_text/svg/text/bidi-reorder-in-text-chunks-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_svg_text/svg/text/bidi-reorder-in-text-chunks-expected.png
new file mode 100644
index 0000000..1b7d51d1
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_svg_text/svg/text/bidi-reorder-in-text-chunks-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/scalefactor200/css3/filters/effect-reference-colorspace-expected.png b/third_party/blink/web_tests/platform/mac/virtual/scalefactor200/css3/filters/effect-reference-colorspace-expected.png
index 32ed34b..9315fd3 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/scalefactor200/css3/filters/effect-reference-colorspace-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/scalefactor200/css3/filters/effect-reference-colorspace-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/scalefactor200/css3/filters/effect-reference-colorspace-hw-expected.png b/third_party/blink/web_tests/platform/mac/virtual/scalefactor200/css3/filters/effect-reference-colorspace-hw-expected.png
index 9b37270..f11568b 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/scalefactor200/css3/filters/effect-reference-colorspace-hw-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/scalefactor200/css3/filters/effect-reference-colorspace-hw-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/scalefactor200/css3/filters/effect-reference-expected.png b/third_party/blink/web_tests/platform/mac/virtual/scalefactor200/css3/filters/effect-reference-expected.png
index c2c56ea6..a0efd31 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/scalefactor200/css3/filters/effect-reference-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/scalefactor200/css3/filters/effect-reference-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/scalefactor200/css3/filters/effect-reference-hw-expected.png b/third_party/blink/web_tests/platform/mac/virtual/scalefactor200/css3/filters/effect-reference-hw-expected.png
index 934a5c5..60da7b8 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/scalefactor200/css3/filters/effect-reference-hw-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/scalefactor200/css3/filters/effect-reference-hw-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/scalefactor200/css3/filters/effect-reference-subregion-expected.png b/third_party/blink/web_tests/platform/mac/virtual/scalefactor200/css3/filters/effect-reference-subregion-expected.png
index 16ac3e8..cac8104 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/scalefactor200/css3/filters/effect-reference-subregion-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/scalefactor200/css3/filters/effect-reference-subregion-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/scalefactor200/css3/filters/effect-reference-subregion-hw-expected.png b/third_party/blink/web_tests/platform/mac/virtual/scalefactor200/css3/filters/effect-reference-subregion-hw-expected.png
index ea075c8..70abf2f 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/scalefactor200/css3/filters/effect-reference-subregion-hw-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/scalefactor200/css3/filters/effect-reference-subregion-hw-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/scalefactor200/css3/filters/effect-reference-zoom-expected.png b/third_party/blink/web_tests/platform/mac/virtual/scalefactor200/css3/filters/effect-reference-zoom-expected.png
index 10d03be..393ceba 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/scalefactor200/css3/filters/effect-reference-zoom-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/scalefactor200/css3/filters/effect-reference-zoom-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/scalefactor200/css3/filters/effect-reference-zoom-hw-expected.png b/third_party/blink/web_tests/platform/mac/virtual/scalefactor200/css3/filters/effect-reference-zoom-hw-expected.png
index ea7427ab3..666098f 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/scalefactor200/css3/filters/effect-reference-zoom-hw-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/scalefactor200/css3/filters/effect-reference-zoom-hw-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css3/blending/mix-blend-mode-isolated-group-1-expected.png b/third_party/blink/web_tests/platform/win/css3/blending/mix-blend-mode-isolated-group-1-expected.png
deleted file mode 100644
index 3430ffa..0000000
--- a/third_party/blink/web_tests/platform/win/css3/blending/mix-blend-mode-isolated-group-1-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css3/blending/mix-blend-mode-isolated-group-3-expected.png b/third_party/blink/web_tests/platform/win/css3/blending/mix-blend-mode-isolated-group-3-expected.png
deleted file mode 100644
index ccae4c3c..0000000
--- a/third_party/blink/web_tests/platform/win/css3/blending/mix-blend-mode-isolated-group-3-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css3/filters/effect-reference-colorspace-expected.png b/third_party/blink/web_tests/platform/win/css3/filters/effect-reference-colorspace-expected.png
index ea3605a..6f596db 100644
--- a/third_party/blink/web_tests/platform/win/css3/filters/effect-reference-colorspace-expected.png
+++ b/third_party/blink/web_tests/platform/win/css3/filters/effect-reference-colorspace-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css3/filters/effect-reference-colorspace-hw-expected.png b/third_party/blink/web_tests/platform/win/css3/filters/effect-reference-colorspace-hw-expected.png
index c6ab69ac..05d52c8d 100644
--- a/third_party/blink/web_tests/platform/win/css3/filters/effect-reference-colorspace-hw-expected.png
+++ b/third_party/blink/web_tests/platform/win/css3/filters/effect-reference-colorspace-hw-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css3/filters/effect-reference-expected.png b/third_party/blink/web_tests/platform/win/css3/filters/effect-reference-expected.png
index 87b9f3d0..a09ff49 100644
--- a/third_party/blink/web_tests/platform/win/css3/filters/effect-reference-expected.png
+++ b/third_party/blink/web_tests/platform/win/css3/filters/effect-reference-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css3/filters/effect-reference-hw-expected.png b/third_party/blink/web_tests/platform/win/css3/filters/effect-reference-hw-expected.png
index a04fc69a..377f4a7b0 100644
--- a/third_party/blink/web_tests/platform/win/css3/filters/effect-reference-hw-expected.png
+++ b/third_party/blink/web_tests/platform/win/css3/filters/effect-reference-hw-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css3/filters/effect-reference-subregion-expected.png b/third_party/blink/web_tests/platform/win/css3/filters/effect-reference-subregion-expected.png
index 3d458650..d3245ff 100644
--- a/third_party/blink/web_tests/platform/win/css3/filters/effect-reference-subregion-expected.png
+++ b/third_party/blink/web_tests/platform/win/css3/filters/effect-reference-subregion-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css3/filters/effect-reference-subregion-hw-expected.png b/third_party/blink/web_tests/platform/win/css3/filters/effect-reference-subregion-hw-expected.png
index 5f03de7..655e8fb 100644
--- a/third_party/blink/web_tests/platform/win/css3/filters/effect-reference-subregion-hw-expected.png
+++ b/third_party/blink/web_tests/platform/win/css3/filters/effect-reference-subregion-hw-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css3/filters/effect-reference-zoom-hw-expected.png b/third_party/blink/web_tests/platform/win/css3/filters/effect-reference-zoom-hw-expected.png
index 218dd33f..6737587 100644
--- a/third_party/blink/web_tests/platform/win/css3/filters/effect-reference-zoom-hw-expected.png
+++ b/third_party/blink/web_tests/platform/win/css3/filters/effect-reference-zoom-hw-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/external/wpt/css/css-fonts/animations/system-fonts-expected.txt b/third_party/blink/web_tests/platform/win/external/wpt/css/css-fonts/animations/system-fonts-expected.txt
new file mode 100644
index 0000000..2675f0f
--- /dev/null
+++ b/third_party/blink/web_tests/platform/win/external/wpt/css/css-fonts/animations/system-fonts-expected.txt
@@ -0,0 +1,592 @@
+This is a testharness.js-based test.
+Found 588 tests; 528 PASS, 60 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-2) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-2) should be [1] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-2) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-2) should be [400%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-2) should be [268px] for <font-size> assert_equals: expected "268px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-2) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-2) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-0.5) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-0.5) should be [1] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-0.5) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-0.5) should be [250%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-0.5) should be [142px] for <font-size> assert_equals: expected "142px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-0.5) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-0.5) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0) should be [100] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0) should be [200%] for <font-stretch>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0) should be [100px] for <font-size>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.3) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.3) should be [190] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.3) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.3) should be [170%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.3) should be [74.8px] for <font-size> assert_equals: expected "74.8px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.3) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.3) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.6) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.6) should be [280] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.6) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.6) should be [140%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.6) should be [49.6px] for <font-size> assert_equals: expected "49.6px " but got "16px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.6) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.6) should be [Arial] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1) should be [400] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1) should be [100%] for <font-stretch>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1) should be [16px] for <font-size>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1) should be [Arial] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1.5) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1.5) should be [550] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1.5) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1.5) should be [50%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1.5) should be [0px] for <font-size> assert_equals: expected "0px " but got "16px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1.5) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1.5) should be [Arial] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-2) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-2) should be [1] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-2) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-2) should be [400%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-2) should be [268px] for <font-size> assert_equals: expected "268px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-2) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-2) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-0.5) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-0.5) should be [1] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-0.5) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-0.5) should be [250%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-0.5) should be [142px] for <font-size> assert_equals: expected "142px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-0.5) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (-0.5) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0) should be [100] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0) should be [200%] for <font-stretch>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0) should be [100px] for <font-size>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.3) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.3) should be [190] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.3) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.3) should be [170%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.3) should be [74.8px] for <font-size> assert_equals: expected "74.8px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.3) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.3) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.6) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.6) should be [280] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.6) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.6) should be [140%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.6) should be [49.6px] for <font-size> assert_equals: expected "49.6px " but got "16px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.6) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (0.6) should be [Arial] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1) should be [400] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1) should be [100%] for <font-stretch>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1) should be [16px] for <font-size>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1) should be [Arial] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1.5) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1.5) should be [550] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1.5) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1.5) should be [50%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1.5) should be [0px] for <font-size> assert_equals: expected "0px " but got "16px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1.5) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [caption] at (1.5) should be [Arial] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-2) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-2) should be [1] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-2) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-2) should be [400%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-2) should be [268px] for <font-size> assert_equals: expected "268px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-2) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-2) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-0.5) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-0.5) should be [1] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-0.5) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-0.5) should be [250%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-0.5) should be [142px] for <font-size> assert_equals: expected "142px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-0.5) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-0.5) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0) should be [100] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0) should be [200%] for <font-stretch>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0) should be [100px] for <font-size>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.3) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.3) should be [190] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.3) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.3) should be [170%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.3) should be [74.8px] for <font-size> assert_equals: expected "74.8px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.3) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.3) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.6) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.6) should be [280] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.6) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.6) should be [140%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.6) should be [49.6px] for <font-size> assert_equals: expected "49.6px " but got "16px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.6) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.6) should be [Arial] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1) should be [400] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1) should be [100%] for <font-stretch>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1) should be [16px] for <font-size>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1) should be [Arial] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1.5) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1.5) should be [550] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1.5) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1.5) should be [50%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1.5) should be [0px] for <font-size> assert_equals: expected "0px " but got "16px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1.5) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1.5) should be [Arial] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-2) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-2) should be [1] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-2) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-2) should be [400%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-2) should be [268px] for <font-size> assert_equals: expected "268px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-2) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-2) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-0.5) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-0.5) should be [1] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-0.5) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-0.5) should be [250%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-0.5) should be [142px] for <font-size> assert_equals: expected "142px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-0.5) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (-0.5) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0) should be [100] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0) should be [200%] for <font-stretch>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0) should be [100px] for <font-size>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.3) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.3) should be [190] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.3) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.3) should be [170%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.3) should be [74.8px] for <font-size> assert_equals: expected "74.8px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.3) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.3) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.6) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.6) should be [280] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.6) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.6) should be [140%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.6) should be [49.6px] for <font-size> assert_equals: expected "49.6px " but got "16px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.6) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (0.6) should be [Arial] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1) should be [400] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1) should be [100%] for <font-stretch>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1) should be [16px] for <font-size>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1) should be [Arial] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1.5) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1.5) should be [550] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1.5) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1.5) should be [50%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1.5) should be [0px] for <font-size> assert_equals: expected "0px " but got "16px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1.5) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [icon] at (1.5) should be [Arial] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-2) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-2) should be [1] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-2) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-2) should be [400%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-2) should be [276px] for <font-size> assert_equals: expected "276px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-2) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-2) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-0.5) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-0.5) should be [1] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-0.5) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-0.5) should be [250%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-0.5) should be [144px] for <font-size> assert_equals: expected "144px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-0.5) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-0.5) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0) should be [100] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0) should be [200%] for <font-stretch>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0) should be [100px] for <font-size>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.3) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.3) should be [190] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.3) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.3) should be [170%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.3) should be [73.6px] for <font-size> assert_equals: expected "73.6px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.3) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.3) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.6) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.6) should be [280] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.6) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.6) should be [140%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.6) should be [47.2px] for <font-size> assert_equals: expected "47.2px " but got "12px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.6) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.6) should be ["Segoe UI"] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1) should be [400] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1) should be [100%] for <font-stretch>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1) should be [12px] for <font-size>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1) should be ["Segoe UI"] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1.5) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1.5) should be [550] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1.5) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1.5) should be [50%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1.5) should be [0px] for <font-size> assert_equals: expected "0px " but got "12px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1.5) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1.5) should be ["Segoe UI"] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-2) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-2) should be [1] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-2) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-2) should be [400%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-2) should be [276px] for <font-size> assert_equals: expected "276px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-2) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-2) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-0.5) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-0.5) should be [1] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-0.5) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-0.5) should be [250%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-0.5) should be [144px] for <font-size> assert_equals: expected "144px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-0.5) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (-0.5) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0) should be [100] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0) should be [200%] for <font-stretch>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0) should be [100px] for <font-size>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.3) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.3) should be [190] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.3) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.3) should be [170%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.3) should be [73.6px] for <font-size> assert_equals: expected "73.6px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.3) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.3) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.6) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.6) should be [280] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.6) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.6) should be [140%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.6) should be [47.2px] for <font-size> assert_equals: expected "47.2px " but got "12px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.6) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (0.6) should be ["Segoe UI"] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1) should be [400] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1) should be [100%] for <font-stretch>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1) should be [12px] for <font-size>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1) should be ["Segoe UI"] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1.5) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1.5) should be [550] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1.5) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1.5) should be [50%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1.5) should be [0px] for <font-size> assert_equals: expected "0px " but got "12px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1.5) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [menu] at (1.5) should be ["Segoe UI"] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-2) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-2) should be [1] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-2) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-2) should be [400%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-2) should be [268px] for <font-size> assert_equals: expected "268px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-2) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-2) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-0.5) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-0.5) should be [1] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-0.5) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-0.5) should be [250%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-0.5) should be [142px] for <font-size> assert_equals: expected "142px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-0.5) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-0.5) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0) should be [100] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0) should be [200%] for <font-stretch>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0) should be [100px] for <font-size>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.3) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.3) should be [190] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.3) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.3) should be [170%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.3) should be [74.8px] for <font-size> assert_equals: expected "74.8px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.3) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.3) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.6) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.6) should be [280] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.6) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.6) should be [140%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.6) should be [49.6px] for <font-size> assert_equals: expected "49.6px " but got "16px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.6) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.6) should be [Arial] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1) should be [400] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1) should be [100%] for <font-stretch>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1) should be [16px] for <font-size>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1) should be [Arial] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1.5) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1.5) should be [550] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1.5) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1.5) should be [50%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1.5) should be [0px] for <font-size> assert_equals: expected "0px " but got "16px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1.5) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1.5) should be [Arial] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-2) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-2) should be [1] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-2) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-2) should be [400%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-2) should be [268px] for <font-size> assert_equals: expected "268px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-2) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-2) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-0.5) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-0.5) should be [1] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-0.5) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-0.5) should be [250%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-0.5) should be [142px] for <font-size> assert_equals: expected "142px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-0.5) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (-0.5) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0) should be [100] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0) should be [200%] for <font-stretch>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0) should be [100px] for <font-size>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.3) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.3) should be [190] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.3) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.3) should be [170%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.3) should be [74.8px] for <font-size> assert_equals: expected "74.8px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.3) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.3) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.6) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.6) should be [280] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.6) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.6) should be [140%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.6) should be [49.6px] for <font-size> assert_equals: expected "49.6px " but got "16px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.6) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (0.6) should be [Arial] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1) should be [400] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1) should be [100%] for <font-stretch>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1) should be [16px] for <font-size>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1) should be [Arial] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1.5) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1.5) should be [550] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1.5) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1.5) should be [50%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1.5) should be [0px] for <font-size> assert_equals: expected "0px " but got "16px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1.5) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [message-box] at (1.5) should be [Arial] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-2) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-2) should be [1] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-2) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-2) should be [400%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-2) should be [276px] for <font-size> assert_equals: expected "276px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-2) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-2) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-0.5) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-0.5) should be [1] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-0.5) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-0.5) should be [250%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-0.5) should be [144px] for <font-size> assert_equals: expected "144px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-0.5) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-0.5) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0) should be [100] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0) should be [200%] for <font-stretch>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0) should be [100px] for <font-size>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.3) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.3) should be [190] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.3) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.3) should be [170%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.3) should be [73.6px] for <font-size> assert_equals: expected "73.6px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.3) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.3) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.6) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.6) should be [280] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.6) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.6) should be [140%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.6) should be [47.2px] for <font-size> assert_equals: expected "47.2px " but got "12px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.6) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.6) should be ["Segoe UI"] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1) should be [400] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1) should be [100%] for <font-stretch>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1) should be [12px] for <font-size>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1) should be ["Segoe UI"] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1.5) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1.5) should be [550] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1.5) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1.5) should be [50%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1.5) should be [0px] for <font-size> assert_equals: expected "0px " but got "12px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1.5) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1.5) should be ["Segoe UI"] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-2) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-2) should be [1] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-2) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-2) should be [400%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-2) should be [276px] for <font-size> assert_equals: expected "276px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-2) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-2) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-0.5) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-0.5) should be [1] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-0.5) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-0.5) should be [250%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-0.5) should be [144px] for <font-size> assert_equals: expected "144px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-0.5) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (-0.5) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0) should be [100] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0) should be [200%] for <font-stretch>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0) should be [100px] for <font-size>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.3) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.3) should be [190] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.3) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.3) should be [170%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.3) should be [73.6px] for <font-size> assert_equals: expected "73.6px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.3) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.3) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.6) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.6) should be [280] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.6) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.6) should be [140%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.6) should be [47.2px] for <font-size> assert_equals: expected "47.2px " but got "12px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.6) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (0.6) should be ["Segoe UI"] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1) should be [400] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1) should be [100%] for <font-stretch>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1) should be [12px] for <font-size>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1) should be ["Segoe UI"] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1.5) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1.5) should be [550] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1.5) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1.5) should be [50%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1.5) should be [0px] for <font-size> assert_equals: expected "0px " but got "12px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1.5) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [small-caption] at (1.5) should be ["Segoe UI"] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-2) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-2) should be [1] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-2) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-2) should be [400%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-2) should be [276px] for <font-size> assert_equals: expected "276px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-2) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-2) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-0.5) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-0.5) should be [1] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-0.5) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-0.5) should be [250%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-0.5) should be [144px] for <font-size> assert_equals: expected "144px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-0.5) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-0.5) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0) should be [100] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0) should be [200%] for <font-stretch>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0) should be [100px] for <font-size>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.3) should be [italic] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.3) should be [190] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.3) should be [small-caps] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.3) should be [170%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.3) should be [73.6px] for <font-size> assert_equals: expected "73.6px " but got "100px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.3) should be [100px] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.3) should be [Ahem] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.6) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.6) should be [280] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.6) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.6) should be [140%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.6) should be [47.2px] for <font-size> assert_equals: expected "47.2px " but got "12px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.6) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.6) should be ["Segoe UI"] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1) should be [400] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1) should be [100%] for <font-stretch>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1) should be [12px] for <font-size>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1) should be ["Segoe UI"] for <font-family>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1.5) should be [normal] for <font-style>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1.5) should be [550] for <font-weight>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1.5) should be [normal] for <font-variant>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1.5) should be [50%] for <font-stretch>
+FAIL CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1.5) should be [0px] for <font-size> assert_equals: expected "0px " but got "12px "
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1.5) should be [normal] for <line-height>
+PASS CSS Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1.5) should be ["Segoe UI"] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-2) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-2) should be [1] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-2) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-2) should be [400%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-2) should be [276px] for <font-size> assert_equals: expected "276px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-2) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-2) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-0.5) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-0.5) should be [1] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-0.5) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-0.5) should be [250%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-0.5) should be [144px] for <font-size> assert_equals: expected "144px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-0.5) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (-0.5) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0) should be [100] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0) should be [200%] for <font-stretch>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0) should be [100px] for <font-size>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.3) should be [italic] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.3) should be [190] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.3) should be [small-caps] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.3) should be [170%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.3) should be [73.6px] for <font-size> assert_equals: expected "73.6px " but got "100px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.3) should be [100px] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.3) should be [Ahem] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.6) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.6) should be [280] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.6) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.6) should be [140%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.6) should be [47.2px] for <font-size> assert_equals: expected "47.2px " but got "12px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.6) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (0.6) should be ["Segoe UI"] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1) should be [400] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1) should be [100%] for <font-stretch>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1) should be [12px] for <font-size>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1) should be ["Segoe UI"] for <font-family>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1.5) should be [normal] for <font-style>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1.5) should be [550] for <font-weight>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1.5) should be [normal] for <font-variant>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1.5) should be [50%] for <font-stretch>
+FAIL Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1.5) should be [0px] for <font-size> assert_equals: expected "0px " but got "12px "
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1.5) should be [normal] for <line-height>
+PASS Web Animations: property <font> from [italic 100 small-caps ultra-expanded 100px / 100px Ahem] to [status-bar] at (1.5) should be ["Segoe UI"] for <font-family>
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/filters-diffuse-01-f-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/filters-diffuse-01-f-expected.png
index 6f22b20..33241a53 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/filters-diffuse-01-f-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/filters-diffuse-01-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/filters-light-01-f-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/filters-light-01-f-expected.png
index 0fa8bf57..8acad07 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/filters-light-01-f-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/filters-light-01-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/filters-light-04-f-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/filters-light-04-f-expected.png
index 93fc63e..49d3fc0c 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/filters-light-04-f-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/filters-light-04-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/filters-specular-01-f-expected.png b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/filters-specular-01-f-expected.png
index 04bdc83..428c8f8 100644
--- a/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/filters-specular-01-f-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/W3C-SVG-1.1/filters-specular-01-f-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/text/bidi-reorder-in-text-chunks-expected.png b/third_party/blink/web_tests/platform/win/svg/text/bidi-reorder-in-text-chunks-expected.png
new file mode 100644
index 0000000..0bd07663
--- /dev/null
+++ b/third_party/blink/web_tests/platform/win/svg/text/bidi-reorder-in-text-chunks-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/text/spacing-expected.png b/third_party/blink/web_tests/platform/win/svg/text/spacing-expected.png
new file mode 100644
index 0000000..ffdb898
--- /dev/null
+++ b/third_party/blink/web_tests/platform/win/svg/text/spacing-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/text-spacing-01-b-expected.png b/third_party/blink/web_tests/platform/win/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/text-spacing-01-b-expected.png
new file mode 100644
index 0000000..89b1cd96
--- /dev/null
+++ b/third_party/blink/web_tests/platform/win/virtual/layout_ng_svg_text/svg/W3C-SVG-1.1/text-spacing-01-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/layout_ng_svg_text/svg/batik/text/textLayout-expected.png b/third_party/blink/web_tests/platform/win/virtual/layout_ng_svg_text/svg/batik/text/textLayout-expected.png
index 1b8b46f..760d229 100644
--- a/third_party/blink/web_tests/platform/win/virtual/layout_ng_svg_text/svg/batik/text/textLayout-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/layout_ng_svg_text/svg/batik/text/textLayout-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/layout_ng_svg_text/svg/text/bidi-reorder-in-text-chunks-expected.png b/third_party/blink/web_tests/platform/win/virtual/layout_ng_svg_text/svg/text/bidi-reorder-in-text-chunks-expected.png
new file mode 100644
index 0000000..87ea8cd
--- /dev/null
+++ b/third_party/blink/web_tests/platform/win/virtual/layout_ng_svg_text/svg/text/bidi-reorder-in-text-chunks-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/scalefactor200/css3/filters/effect-reference-colorspace-expected.png b/third_party/blink/web_tests/platform/win/virtual/scalefactor200/css3/filters/effect-reference-colorspace-expected.png
index 870e9a5..a04026b 100644
--- a/third_party/blink/web_tests/platform/win/virtual/scalefactor200/css3/filters/effect-reference-colorspace-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/scalefactor200/css3/filters/effect-reference-colorspace-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/scalefactor200/css3/filters/effect-reference-colorspace-hw-expected.png b/third_party/blink/web_tests/platform/win/virtual/scalefactor200/css3/filters/effect-reference-colorspace-hw-expected.png
index c744fce..98e43ab 100644
--- a/third_party/blink/web_tests/platform/win/virtual/scalefactor200/css3/filters/effect-reference-colorspace-hw-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/scalefactor200/css3/filters/effect-reference-colorspace-hw-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/scalefactor200/css3/filters/effect-reference-expected.png b/third_party/blink/web_tests/platform/win/virtual/scalefactor200/css3/filters/effect-reference-expected.png
index b698f81..58bbec3d 100644
--- a/third_party/blink/web_tests/platform/win/virtual/scalefactor200/css3/filters/effect-reference-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/scalefactor200/css3/filters/effect-reference-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/scalefactor200/css3/filters/effect-reference-hw-expected.png b/third_party/blink/web_tests/platform/win/virtual/scalefactor200/css3/filters/effect-reference-hw-expected.png
index e7047599..8d4747c 100644
--- a/third_party/blink/web_tests/platform/win/virtual/scalefactor200/css3/filters/effect-reference-hw-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/scalefactor200/css3/filters/effect-reference-hw-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/scalefactor200/css3/filters/effect-reference-subregion-expected.png b/third_party/blink/web_tests/platform/win/virtual/scalefactor200/css3/filters/effect-reference-subregion-expected.png
index 392ff7f..26a25896 100644
--- a/third_party/blink/web_tests/platform/win/virtual/scalefactor200/css3/filters/effect-reference-subregion-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/scalefactor200/css3/filters/effect-reference-subregion-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/scalefactor200/css3/filters/effect-reference-subregion-hw-expected.png b/third_party/blink/web_tests/platform/win/virtual/scalefactor200/css3/filters/effect-reference-subregion-hw-expected.png
index 8c867cd..28a1f08 100644
--- a/third_party/blink/web_tests/platform/win/virtual/scalefactor200/css3/filters/effect-reference-subregion-hw-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/scalefactor200/css3/filters/effect-reference-subregion-hw-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/scalefactor200/css3/filters/effect-reference-zoom-expected.png b/third_party/blink/web_tests/platform/win/virtual/scalefactor200/css3/filters/effect-reference-zoom-expected.png
index d43dc6d..b72547f3 100644
--- a/third_party/blink/web_tests/platform/win/virtual/scalefactor200/css3/filters/effect-reference-zoom-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/scalefactor200/css3/filters/effect-reference-zoom-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/scalefactor200/css3/filters/effect-reference-zoom-hw-expected.png b/third_party/blink/web_tests/platform/win/virtual/scalefactor200/css3/filters/effect-reference-zoom-hw-expected.png
index d9519dee..bc77f9a 100644
--- a/third_party/blink/web_tests/platform/win/virtual/scalefactor200/css3/filters/effect-reference-zoom-hw-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/scalefactor200/css3/filters/effect-reference-zoom-hw-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/svg/text/bidi-reorder-in-text-chunks-expected.png b/third_party/blink/web_tests/platform/win7/svg/text/bidi-reorder-in-text-chunks-expected.png
new file mode 100644
index 0000000..708dabf5
--- /dev/null
+++ b/third_party/blink/web_tests/platform/win7/svg/text/bidi-reorder-in-text-chunks-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/storage/websql/printf-oom.html b/third_party/blink/web_tests/storage/websql/printf-oom.html
deleted file mode 100644
index d421d23..0000000
--- a/third_party/blink/web_tests/storage/websql/printf-oom.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<!doctype html>
-<meta charset="utf-8">
-<title>WebSQL: printf() does not OOM with large strings</title>
-<script src="../../resources/testharness.js"></script>
-<script src="../../resources/testharnessreport.js"></script>
-<script>
-'use strict';
-
-async_test(testCase => {
-  const database = openDatabase(
-      'PrintfTest', '1.0', 'Database for printf() test',
-      1024 * 1024);
-  assert_not_equals(database, null, 'openDatabase should not fail');
-
-  database.transaction(testCase.step_func(transaction => {
-    transaction.executeSql(
-        'DROP TABLE IF EXISTS main;', [], () => {},
-        testCase.unreached_func('DROP TABLE should not fail'));
-    transaction.executeSql(
-        'CREATE TABLE main(id INTEGER PRIMARY KEY);', [], () => {},
-        testCase.unreached_func('CREATE TABLE should not fail'));
-    transaction.executeSql(
-        'INSERT INTO main VALUES(1);', [], () => {},
-        testCase.unreached_func('INSERT should not fail'));
-
-    // When SQLITE_PRINTF_PRECISION_LIMIT is not overridden, the printf()
-    // statement below produces a string that takes up slightly less than 1GiB
-    // of RAM.
-    //
-    // SQLite's printf buffer is limited by SQLITE_PRINTF_PRECISION_LIMIT
-    // and SQLITE_LIMIT_LENGTH [1]. The latter defaults to
-    // SQLITE_MAX_LENGTH [2], and Chrome does not override this default via
-    // sqlite3_limit() [3]. Chrome uses SQLite's default SQLITE_MAX_LENGTH,
-    // which is 1,000,000,000.
-    //
-    // The statement uses the %X (hexadecimal) specifier instead of the more
-    // familiar %d (decimal) in order to reduce the CPU time taken by a failing
-    // test. More specifically, in case SQLite ends up doing division for each
-    // output character (1 billion times, if SQLITE_PRINTF_PRECISION_LIMIT isn't
-    // set), the savings of bit-shifting (used by hexadecimal) over full
-    // division (required by decimal) can add up.
-    //
-    // [1] https://sqlite.org/compile.html#printf_precision_limit and
-    // [2] https://sqlite.org/limits.html#max_length.
-    // [3] https://sqlite.org/c3ref/c_limit_attached.html#sqlitelimitlength
-    const kPrintf1GB = "printf('%1000000000X', id)";
-
-    // Chrome renderers are currently limited to using 4GiB of RAM.
-    // of these strings OOM the renderer. 5 printf() statements will produce
-    // strings whose combined lengths exceeds 4GiB of RAM.
-    //
-    // If this test completes, it means it hasn't OOMed, and
-    // SQLITE_PRINTF_PRECISION_LIMIT is set to less than 1,000,000,000.
-    transaction.executeSql(
-        `SELECT ${kPrintf1GB}, ${kPrintf1GB}, ${kPrintf1GB}, ${kPrintf1GB}, ` +
-            `${kPrintf1GB} FROM main;`,
-        [], testCase.step_func_done(() => {}),
-        testCase.unreached_func('printf() should not fail'));
-  }));
-}, `printf() should not fail or crash with %1000000000X`);
-</script>
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-diffuseConstant-attr-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-diffuseConstant-attr-expected.png
index 6173153..3c797fd 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-diffuseConstant-attr-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-diffuseConstant-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-in-attr-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-in-attr-expected.png
index 6173153..3c797fd 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-in-attr-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-in-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-kernelUnitLength-attr-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-kernelUnitLength-attr-expected.png
index b853fd2..1860d6e4 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-kernelUnitLength-attr-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-kernelUnitLength-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-lighting-color-attr-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-lighting-color-attr-expected.png
index 6173153..3c797fd 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-lighting-color-attr-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-lighting-color-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-surfaceScale-attr-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-surfaceScale-attr-expected.png
index 6173153..3c797fd 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-surfaceScale-attr-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-surfaceScale-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDiffuseLightingElement-inherit-lighting-color-css-prop-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDiffuseLightingElement-inherit-lighting-color-css-prop-expected.png
index 6173153..3c797fd 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDiffuseLightingElement-inherit-lighting-color-css-prop-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDiffuseLightingElement-inherit-lighting-color-css-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDiffuseLightingElement-lighting-color-css-prop-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDiffuseLightingElement-lighting-color-css-prop-expected.png
index 6173153..3c797fd 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDiffuseLightingElement-lighting-color-css-prop-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDiffuseLightingElement-lighting-color-css-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDiffuseLightingElement-svgdom-diffuseConstant-prop-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDiffuseLightingElement-svgdom-diffuseConstant-prop-expected.png
index 6173153..3c797fd 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDiffuseLightingElement-svgdom-diffuseConstant-prop-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDiffuseLightingElement-svgdom-diffuseConstant-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDiffuseLightingElement-svgdom-in-prop-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDiffuseLightingElement-svgdom-in-prop-expected.png
index 6173153..3c797fd 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDiffuseLightingElement-svgdom-in-prop-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDiffuseLightingElement-svgdom-in-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDiffuseLightingElement-svgdom-surfaceScale-prop-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDiffuseLightingElement-svgdom-surfaceScale-prop-expected.png
index 6173153..3c797fd 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDiffuseLightingElement-svgdom-surfaceScale-prop-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDiffuseLightingElement-svgdom-surfaceScale-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDistantLightElement-dom-azimuth-attr-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDistantLightElement-dom-azimuth-attr-expected.png
index bb1238462..111b957 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDistantLightElement-dom-azimuth-attr-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDistantLightElement-dom-azimuth-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDistantLightElement-dom-elevation-attr-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDistantLightElement-dom-elevation-attr-expected.png
index bb1238462..111b957 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDistantLightElement-dom-elevation-attr-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDistantLightElement-dom-elevation-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDistantLightElement-svgdom-azimuth-prop-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDistantLightElement-svgdom-azimuth-prop-expected.png
index bb1238462..111b957 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDistantLightElement-svgdom-azimuth-prop-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDistantLightElement-svgdom-azimuth-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDistantLightElement-svgdom-elevation-prop-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDistantLightElement-svgdom-elevation-prop-expected.png
index bb1238462..111b957 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDistantLightElement-svgdom-elevation-prop-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFEDistantLightElement-svgdom-elevation-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFEPointLightElement-dom-x-attr-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFEPointLightElement-dom-x-attr-expected.png
index 6173153..3c797fd 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFEPointLightElement-dom-x-attr-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFEPointLightElement-dom-x-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFEPointLightElement-dom-y-attr-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFEPointLightElement-dom-y-attr-expected.png
index 6173153..3c797fd 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFEPointLightElement-dom-y-attr-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFEPointLightElement-dom-y-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFEPointLightElement-dom-z-attr-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFEPointLightElement-dom-z-attr-expected.png
index 6173153..3c797fd 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFEPointLightElement-dom-z-attr-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFEPointLightElement-dom-z-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFEPointLightElement-svgdom-x-prop-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFEPointLightElement-svgdom-x-prop-expected.png
index 6173153..3c797fd 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFEPointLightElement-svgdom-x-prop-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFEPointLightElement-svgdom-x-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFEPointLightElement-svgdom-y-prop-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFEPointLightElement-svgdom-y-prop-expected.png
index 6173153..3c797fd 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFEPointLightElement-svgdom-y-prop-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFEPointLightElement-svgdom-y-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFEPointLightElement-svgdom-z-prop-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFEPointLightElement-svgdom-z-prop-expected.png
index 6173153..3c797fd 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFEPointLightElement-svgdom-z-prop-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFEPointLightElement-svgdom-z-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpecularLightingElement-dom-in-attr-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpecularLightingElement-dom-in-attr-expected.png
index 31050f17..00796ba9 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpecularLightingElement-dom-in-attr-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpecularLightingElement-dom-in-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpecularLightingElement-dom-kernelUnitLength-attr-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpecularLightingElement-dom-kernelUnitLength-attr-expected.png
index d3264b2a..1ccb6de 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpecularLightingElement-dom-kernelUnitLength-attr-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpecularLightingElement-dom-kernelUnitLength-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpecularLightingElement-dom-specularConstant-attr-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpecularLightingElement-dom-specularConstant-attr-expected.png
index 31050f17..00796ba9 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpecularLightingElement-dom-specularConstant-attr-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpecularLightingElement-dom-specularConstant-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpecularLightingElement-dom-specularExponent-attr-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpecularLightingElement-dom-specularExponent-attr-expected.png
index 31050f17..00796ba9 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpecularLightingElement-dom-specularExponent-attr-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpecularLightingElement-dom-specularExponent-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpecularLightingElement-dom-suraceScale-attr-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpecularLightingElement-dom-suraceScale-attr-expected.png
index 31050f17..00796ba9 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpecularLightingElement-dom-suraceScale-attr-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpecularLightingElement-dom-suraceScale-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpecularLightingElement-inherit-lighting-color-css-prop-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpecularLightingElement-inherit-lighting-color-css-prop-expected.png
index e4442dff..956704ce 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpecularLightingElement-inherit-lighting-color-css-prop-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpecularLightingElement-inherit-lighting-color-css-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpecularLightingElement-lighting-color-css-prop-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpecularLightingElement-lighting-color-css-prop-expected.png
index e4442dff..956704ce 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpecularLightingElement-lighting-color-css-prop-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpecularLightingElement-lighting-color-css-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-in-prop-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-in-prop-expected.png
index 31050f17..00796ba9 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-in-prop-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-in-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-specularConstant-prop-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-specularConstant-prop-expected.png
index 31050f17..00796ba9 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-specularConstant-prop-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-specularConstant-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-specularExponent-prop-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-specularExponent-prop-expected.png
index 31050f17..00796ba9 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-specularExponent-prop-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-specularExponent-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-suraceScale-prop-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-suraceScale-prop-expected.png
index 31050f17..00796ba9 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-suraceScale-prop-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-suraceScale-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-dom-limitingConeAngle-attr-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-dom-limitingConeAngle-attr-expected.png
index 65cd840..005b635 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-dom-limitingConeAngle-attr-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-dom-limitingConeAngle-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtX-attr-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtX-attr-expected.png
index 65cd840..005b635 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtX-attr-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtX-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtY-attr-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtY-attr-expected.png
index 65cd840..005b635 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtY-attr-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtY-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtZ-attr-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtZ-attr-expected.png
index 65cd840..005b635 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtZ-attr-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtZ-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-dom-specularExponent-attr-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-dom-specularExponent-attr-expected.png
index 65cd840..005b635 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-dom-specularExponent-attr-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-dom-specularExponent-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-dom-x-attr-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-dom-x-attr-expected.png
index 65cd840..005b635 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-dom-x-attr-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-dom-x-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-dom-y-attr-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-dom-y-attr-expected.png
index 65cd840..005b635 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-dom-y-attr-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-dom-y-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-dom-z-attr-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-dom-z-attr-expected.png
index 65cd840..005b635 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-dom-z-attr-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-dom-z-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-limitingConeAngle-prop-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-limitingConeAngle-prop-expected.png
index 65cd840..005b635 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-limitingConeAngle-prop-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-limitingConeAngle-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtX-prop-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtX-prop-expected.png
index 65cd840..005b635 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtX-prop-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtX-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtY-prop-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtY-prop-expected.png
index 65cd840..005b635 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtY-prop-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtY-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtZ-prop-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtZ-prop-expected.png
index 65cd840..005b635 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtZ-prop-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtZ-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-specularExponent-prop-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-specularExponent-prop-expected.png
index 65cd840..005b635 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-specularExponent-prop-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-specularExponent-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-x-prop-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-x-prop-expected.png
index 65cd840..005b635 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-x-prop-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-x-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-y-prop-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-y-prop-expected.png
index 65cd840..005b635 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-y-prop-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-y-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-z-prop-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-z-prop-expected.png
index 65cd840..005b635 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-z-prop-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFESpotLightElement-svgdom-z-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterElement-dom-filterUnits-attr-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterElement-dom-filterUnits-attr-expected.png
index 2508208..ffcdcec 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterElement-dom-filterUnits-attr-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterElement-dom-filterUnits-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterElement-dom-height-attr-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterElement-dom-height-attr-expected.png
index 2508208..ffcdcec 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterElement-dom-height-attr-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterElement-dom-height-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterElement-dom-width-attr-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterElement-dom-width-attr-expected.png
index 2508208..ffcdcec 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterElement-dom-width-attr-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterElement-dom-width-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterElement-dom-x-attr-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterElement-dom-x-attr-expected.png
index 2508208..ffcdcec 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterElement-dom-x-attr-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterElement-dom-x-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterElement-dom-y-attr-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterElement-dom-y-attr-expected.png
index 2508208..ffcdcec 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterElement-dom-y-attr-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterElement-dom-y-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterElement-svgdom-filterUnits-prop-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterElement-svgdom-filterUnits-prop-expected.png
index 2508208..ffcdcec 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterElement-svgdom-filterUnits-prop-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterElement-svgdom-filterUnits-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterElement-svgdom-height-prop-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterElement-svgdom-height-prop-expected.png
index 2508208..ffcdcec 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterElement-svgdom-height-prop-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterElement-svgdom-height-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterElement-svgdom-width-prop-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterElement-svgdom-width-prop-expected.png
index 2508208..ffcdcec 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterElement-svgdom-width-prop-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterElement-svgdom-width-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterElement-svgdom-x-prop-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterElement-svgdom-x-prop-expected.png
index 2508208..ffcdcec 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterElement-svgdom-x-prop-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterElement-svgdom-x-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterElement-svgdom-y-prop-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterElement-svgdom-y-prop-expected.png
index 2508208..ffcdcec 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterElement-svgdom-y-prop-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterElement-svgdom-y-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-height-attr-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-height-attr-expected.png
index 2508208..ffcdcec 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-height-attr-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-height-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-result-attr-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-result-attr-expected.png
index 2508208..ffcdcec 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-result-attr-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-result-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-width-attr-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-width-attr-expected.png
index 2508208..ffcdcec 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-width-attr-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-width-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-x-attr-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-x-attr-expected.png
index 2508208..ffcdcec 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-x-attr-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-x-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-y-attr-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-y-attr-expected.png
index 2508208..ffcdcec 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-y-attr-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-y-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-height-prop-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-height-prop-expected.png
index 2508208..ffcdcec 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-height-prop-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-height-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-result-prop-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-result-prop-expected.png
index 2508208..ffcdcec 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-result-prop-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-result-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-width-prop-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-width-prop-expected.png
index 2508208..ffcdcec 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-width-prop-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-width-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-x-prop-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-x-prop-expected.png
index 2508208..ffcdcec 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-x-prop-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-x-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-y-prop-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-y-prop-expected.png
index 2508208..ffcdcec 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-y-prop-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-y-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/text/bidi-reorder-in-text-chunks.html b/third_party/blink/web_tests/svg/text/bidi-reorder-in-text-chunks.html
new file mode 100644
index 0000000..d1a48d2
--- /dev/null
+++ b/third_party/blink/web_tests/svg/text/bidi-reorder-in-text-chunks.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<p>Character orders of the following two paragraphs should be same.</p>
+<pre style="font-size:32px; font-family:sans-serif;">
+いろは &#x202e;ABC 123
+DEF&#x202D; にほへ שלום</pre>
+
+<svg xmlns="http://www.w3.org/2000/svg" height="640" width="480">
+<text y="32" font-size="32" font-family="sans-serif">
+いろは &#x202e;ABC 123 <tspan x="0" y="70">DEF&#x202D; にほへ שלום</tspan>
+</text>
diff --git a/third_party/blink/web_tests/svg/text/spacing.html b/third_party/blink/web_tests/svg/text/spacing.html
new file mode 100644
index 0000000..27a7e212
--- /dev/null
+++ b/third_party/blink/web_tests/svg/text/spacing.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<script src="../../resources/ahem.js"></script>
+<style>
+.htmlbase {
+  font-size: 52px;
+  font-family: Ahem;
+}
+
+.base {
+  font-size: 26px;
+  font-family: Ahem;
+}
+
+.lsp {
+  letter-spacing: 0.5em;
+  color: lime;
+  fill: lime;
+}
+
+.wsp {
+  word-spacing: 1em;
+  color: lime;
+  fill: lime;
+}
+</style>
+
+<p class="htmlbase">AAA<span class="lsp">BBBB</span>CCC<br>
+AAA <span class="wsp">BB CC</span> DDD</p>
+
+<svg width="800" height="200" viewBox="0 0 400 100">
+<text class="base" y="30">AAA<tspan class="lsp">BBBB</tspan>CCC</text>
+<text class="base" y="56">AAA <tspan class="wsp">BB CC</tspan> DDD</text>
+</svg>
diff --git a/third_party/blink/web_tests/virtual/dialogfocus-old-behavior/README.md b/third_party/blink/web_tests/virtual/dialogfocus-old-behavior/README.md
new file mode 100644
index 0000000..e578c3a
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/dialogfocus-old-behavior/README.md
@@ -0,0 +1,6 @@
+This is a virtual test suite for the *old* dialog element focusing steps, to
+ensure it respects the feature flag, in case this behavior needs to be disabled
+via Finch.
+
+Flag: --disable-features=DialogFocusNewSpecBehavior
+Bug: crbug.com/298078
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/interactive-elements/the-dialog-element/focus-after-close-expected.txt b/third_party/blink/web_tests/virtual/dialogfocus-old-behavior/external/wpt/html/semantics/interactive-elements/the-dialog-element/focus-after-close-expected.txt
similarity index 100%
rename from third_party/blink/web_tests/external/wpt/html/semantics/interactive-elements/the-dialog-element/focus-after-close-expected.txt
rename to third_party/blink/web_tests/virtual/dialogfocus-old-behavior/external/wpt/html/semantics/interactive-elements/the-dialog-element/focus-after-close-expected.txt
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-diffuseConstant-attr-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-diffuseConstant-attr-expected.png
new file mode 100644
index 0000000..3c797fd
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-diffuseConstant-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-in-attr-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-in-attr-expected.png
new file mode 100644
index 0000000..3c797fd
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-in-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-kernelUnitLength-attr-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-kernelUnitLength-attr-expected.png
new file mode 100644
index 0000000..1860d6e4
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-kernelUnitLength-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-lighting-color-attr-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-lighting-color-attr-expected.png
new file mode 100644
index 0000000..3c797fd
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-lighting-color-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-surfaceScale-attr-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-surfaceScale-attr-expected.png
new file mode 100644
index 0000000..3c797fd
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-surfaceScale-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEDiffuseLightingElement-inherit-lighting-color-css-prop-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEDiffuseLightingElement-inherit-lighting-color-css-prop-expected.png
new file mode 100644
index 0000000..3c797fd
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEDiffuseLightingElement-inherit-lighting-color-css-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEDiffuseLightingElement-lighting-color-css-prop-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEDiffuseLightingElement-lighting-color-css-prop-expected.png
new file mode 100644
index 0000000..3c797fd
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEDiffuseLightingElement-lighting-color-css-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEDiffuseLightingElement-svgdom-diffuseConstant-prop-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEDiffuseLightingElement-svgdom-diffuseConstant-prop-expected.png
new file mode 100644
index 0000000..3c797fd
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEDiffuseLightingElement-svgdom-diffuseConstant-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEDiffuseLightingElement-svgdom-in-prop-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEDiffuseLightingElement-svgdom-in-prop-expected.png
new file mode 100644
index 0000000..3c797fd
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEDiffuseLightingElement-svgdom-in-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEDiffuseLightingElement-svgdom-surfaceScale-prop-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEDiffuseLightingElement-svgdom-surfaceScale-prop-expected.png
new file mode 100644
index 0000000..3c797fd
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEDiffuseLightingElement-svgdom-surfaceScale-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEDistantLightElement-dom-azimuth-attr-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEDistantLightElement-dom-azimuth-attr-expected.png
new file mode 100644
index 0000000..111b957
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEDistantLightElement-dom-azimuth-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEDistantLightElement-dom-elevation-attr-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEDistantLightElement-dom-elevation-attr-expected.png
new file mode 100644
index 0000000..111b957
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEDistantLightElement-dom-elevation-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEDistantLightElement-svgdom-azimuth-prop-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEDistantLightElement-svgdom-azimuth-prop-expected.png
new file mode 100644
index 0000000..111b957
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEDistantLightElement-svgdom-azimuth-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEDistantLightElement-svgdom-elevation-prop-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEDistantLightElement-svgdom-elevation-prop-expected.png
new file mode 100644
index 0000000..111b957
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEDistantLightElement-svgdom-elevation-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEPointLightElement-dom-x-attr-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEPointLightElement-dom-x-attr-expected.png
new file mode 100644
index 0000000..3c797fd
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEPointLightElement-dom-x-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEPointLightElement-dom-y-attr-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEPointLightElement-dom-y-attr-expected.png
new file mode 100644
index 0000000..3c797fd
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEPointLightElement-dom-y-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEPointLightElement-dom-z-attr-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEPointLightElement-dom-z-attr-expected.png
new file mode 100644
index 0000000..3c797fd
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEPointLightElement-dom-z-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEPointLightElement-svgdom-x-prop-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEPointLightElement-svgdom-x-prop-expected.png
new file mode 100644
index 0000000..3c797fd
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEPointLightElement-svgdom-x-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEPointLightElement-svgdom-y-prop-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEPointLightElement-svgdom-y-prop-expected.png
new file mode 100644
index 0000000..3c797fd
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEPointLightElement-svgdom-y-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEPointLightElement-svgdom-z-prop-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEPointLightElement-svgdom-z-prop-expected.png
new file mode 100644
index 0000000..3c797fd
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFEPointLightElement-svgdom-z-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpecularLightingElement-dom-in-attr-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpecularLightingElement-dom-in-attr-expected.png
new file mode 100644
index 0000000..00796ba9
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpecularLightingElement-dom-in-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpecularLightingElement-dom-kernelUnitLength-attr-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpecularLightingElement-dom-kernelUnitLength-attr-expected.png
new file mode 100644
index 0000000..1ccb6de
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpecularLightingElement-dom-kernelUnitLength-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpecularLightingElement-dom-specularConstant-attr-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpecularLightingElement-dom-specularConstant-attr-expected.png
new file mode 100644
index 0000000..00796ba9
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpecularLightingElement-dom-specularConstant-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpecularLightingElement-dom-specularExponent-attr-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpecularLightingElement-dom-specularExponent-attr-expected.png
new file mode 100644
index 0000000..00796ba9
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpecularLightingElement-dom-specularExponent-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpecularLightingElement-dom-suraceScale-attr-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpecularLightingElement-dom-suraceScale-attr-expected.png
new file mode 100644
index 0000000..00796ba9
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpecularLightingElement-dom-suraceScale-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpecularLightingElement-inherit-lighting-color-css-prop-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpecularLightingElement-inherit-lighting-color-css-prop-expected.png
new file mode 100644
index 0000000..956704ce
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpecularLightingElement-inherit-lighting-color-css-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpecularLightingElement-lighting-color-css-prop-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpecularLightingElement-lighting-color-css-prop-expected.png
new file mode 100644
index 0000000..956704ce
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpecularLightingElement-lighting-color-css-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-in-prop-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-in-prop-expected.png
new file mode 100644
index 0000000..00796ba9
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-in-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-specularConstant-prop-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-specularConstant-prop-expected.png
new file mode 100644
index 0000000..00796ba9
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-specularConstant-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-specularExponent-prop-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-specularExponent-prop-expected.png
new file mode 100644
index 0000000..00796ba9
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-specularExponent-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-suraceScale-prop-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-suraceScale-prop-expected.png
new file mode 100644
index 0000000..00796ba9
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-suraceScale-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-dom-limitingConeAngle-attr-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-dom-limitingConeAngle-attr-expected.png
new file mode 100644
index 0000000..005b635
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-dom-limitingConeAngle-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtX-attr-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtX-attr-expected.png
new file mode 100644
index 0000000..005b635
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtX-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtY-attr-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtY-attr-expected.png
new file mode 100644
index 0000000..005b635
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtY-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtZ-attr-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtZ-attr-expected.png
new file mode 100644
index 0000000..005b635
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtZ-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-dom-specularExponent-attr-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-dom-specularExponent-attr-expected.png
new file mode 100644
index 0000000..005b635
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-dom-specularExponent-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-dom-x-attr-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-dom-x-attr-expected.png
new file mode 100644
index 0000000..005b635
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-dom-x-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-dom-y-attr-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-dom-y-attr-expected.png
new file mode 100644
index 0000000..005b635
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-dom-y-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-dom-z-attr-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-dom-z-attr-expected.png
new file mode 100644
index 0000000..005b635
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-dom-z-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-svgdom-limitingConeAngle-prop-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-svgdom-limitingConeAngle-prop-expected.png
new file mode 100644
index 0000000..005b635
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-svgdom-limitingConeAngle-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtX-prop-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtX-prop-expected.png
new file mode 100644
index 0000000..005b635
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtX-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtY-prop-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtY-prop-expected.png
new file mode 100644
index 0000000..005b635
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtY-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtZ-prop-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtZ-prop-expected.png
new file mode 100644
index 0000000..005b635
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtZ-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-svgdom-specularExponent-prop-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-svgdom-specularExponent-prop-expected.png
new file mode 100644
index 0000000..005b635
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-svgdom-specularExponent-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-svgdom-x-prop-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-svgdom-x-prop-expected.png
new file mode 100644
index 0000000..005b635
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-svgdom-x-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-svgdom-y-prop-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-svgdom-y-prop-expected.png
new file mode 100644
index 0000000..005b635
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-svgdom-y-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-svgdom-z-prop-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-svgdom-z-prop-expected.png
new file mode 100644
index 0000000..005b635
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFESpotLightElement-svgdom-z-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterElement-dom-filterUnits-attr-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterElement-dom-filterUnits-attr-expected.png
new file mode 100644
index 0000000..ffcdcec
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterElement-dom-filterUnits-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterElement-dom-height-attr-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterElement-dom-height-attr-expected.png
new file mode 100644
index 0000000..ffcdcec
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterElement-dom-height-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterElement-dom-width-attr-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterElement-dom-width-attr-expected.png
new file mode 100644
index 0000000..ffcdcec
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterElement-dom-width-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterElement-dom-x-attr-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterElement-dom-x-attr-expected.png
new file mode 100644
index 0000000..ffcdcec
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterElement-dom-x-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterElement-dom-y-attr-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterElement-dom-y-attr-expected.png
new file mode 100644
index 0000000..ffcdcec
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterElement-dom-y-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterElement-svgdom-filterUnits-prop-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterElement-svgdom-filterUnits-prop-expected.png
new file mode 100644
index 0000000..ffcdcec
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterElement-svgdom-filterUnits-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterElement-svgdom-height-prop-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterElement-svgdom-height-prop-expected.png
new file mode 100644
index 0000000..ffcdcec
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterElement-svgdom-height-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterElement-svgdom-width-prop-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterElement-svgdom-width-prop-expected.png
new file mode 100644
index 0000000..ffcdcec
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterElement-svgdom-width-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterElement-svgdom-x-prop-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterElement-svgdom-x-prop-expected.png
new file mode 100644
index 0000000..ffcdcec
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterElement-svgdom-x-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterElement-svgdom-y-prop-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterElement-svgdom-y-prop-expected.png
new file mode 100644
index 0000000..ffcdcec
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterElement-svgdom-y-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-height-attr-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-height-attr-expected.png
new file mode 100644
index 0000000..ffcdcec
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-height-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-result-attr-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-result-attr-expected.png
new file mode 100644
index 0000000..ffcdcec
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-result-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-width-attr-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-width-attr-expected.png
new file mode 100644
index 0000000..ffcdcec
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-width-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-x-attr-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-x-attr-expected.png
new file mode 100644
index 0000000..ffcdcec
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-x-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-y-attr-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-y-attr-expected.png
new file mode 100644
index 0000000..ffcdcec
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-y-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-height-prop-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-height-prop-expected.png
new file mode 100644
index 0000000..ffcdcec
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-height-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-result-prop-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-result-prop-expected.png
new file mode 100644
index 0000000..ffcdcec
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-result-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-width-prop-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-width-prop-expected.png
new file mode 100644
index 0000000..ffcdcec
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-width-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-x-prop-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-x-prop-expected.png
new file mode 100644
index 0000000..ffcdcec
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-x-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-y-prop-expected.png b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-y-prop-expected.png
new file mode 100644
index 0000000..ffcdcec
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_svg_text/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-y-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-diffuseConstant-attr-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-diffuseConstant-attr-expected.png
new file mode 100644
index 0000000..3c797fd
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-diffuseConstant-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-in-attr-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-in-attr-expected.png
new file mode 100644
index 0000000..3c797fd
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-in-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-kernelUnitLength-attr-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-kernelUnitLength-attr-expected.png
new file mode 100644
index 0000000..1860d6e4
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-kernelUnitLength-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-lighting-color-attr-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-lighting-color-attr-expected.png
new file mode 100644
index 0000000..3c797fd
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-lighting-color-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-surfaceScale-attr-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-surfaceScale-attr-expected.png
new file mode 100644
index 0000000..3c797fd
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-dom-surfaceScale-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-inherit-lighting-color-css-prop-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-inherit-lighting-color-css-prop-expected.png
new file mode 100644
index 0000000..3c797fd
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-inherit-lighting-color-css-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-lighting-color-css-prop-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-lighting-color-css-prop-expected.png
new file mode 100644
index 0000000..3c797fd
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-lighting-color-css-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-svgdom-diffuseConstant-prop-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-svgdom-diffuseConstant-prop-expected.png
new file mode 100644
index 0000000..3c797fd
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-svgdom-diffuseConstant-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-svgdom-in-prop-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-svgdom-in-prop-expected.png
new file mode 100644
index 0000000..3c797fd
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-svgdom-in-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-svgdom-surfaceScale-prop-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-svgdom-surfaceScale-prop-expected.png
new file mode 100644
index 0000000..3c797fd
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDiffuseLightingElement-svgdom-surfaceScale-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDistantLightElement-dom-azimuth-attr-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDistantLightElement-dom-azimuth-attr-expected.png
new file mode 100644
index 0000000..111b957
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDistantLightElement-dom-azimuth-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDistantLightElement-dom-elevation-attr-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDistantLightElement-dom-elevation-attr-expected.png
new file mode 100644
index 0000000..111b957
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDistantLightElement-dom-elevation-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDistantLightElement-svgdom-azimuth-prop-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDistantLightElement-svgdom-azimuth-prop-expected.png
new file mode 100644
index 0000000..111b957
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDistantLightElement-svgdom-azimuth-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDistantLightElement-svgdom-elevation-prop-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDistantLightElement-svgdom-elevation-prop-expected.png
new file mode 100644
index 0000000..111b957
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEDistantLightElement-svgdom-elevation-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEPointLightElement-dom-x-attr-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEPointLightElement-dom-x-attr-expected.png
new file mode 100644
index 0000000..3c797fd
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEPointLightElement-dom-x-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEPointLightElement-dom-y-attr-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEPointLightElement-dom-y-attr-expected.png
new file mode 100644
index 0000000..3c797fd
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEPointLightElement-dom-y-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEPointLightElement-dom-z-attr-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEPointLightElement-dom-z-attr-expected.png
new file mode 100644
index 0000000..3c797fd
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEPointLightElement-dom-z-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEPointLightElement-svgdom-x-prop-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEPointLightElement-svgdom-x-prop-expected.png
new file mode 100644
index 0000000..3c797fd
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEPointLightElement-svgdom-x-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEPointLightElement-svgdom-y-prop-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEPointLightElement-svgdom-y-prop-expected.png
new file mode 100644
index 0000000..3c797fd
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEPointLightElement-svgdom-y-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEPointLightElement-svgdom-z-prop-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEPointLightElement-svgdom-z-prop-expected.png
new file mode 100644
index 0000000..3c797fd
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFEPointLightElement-svgdom-z-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-dom-in-attr-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-dom-in-attr-expected.png
new file mode 100644
index 0000000..00796ba9
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-dom-in-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-dom-kernelUnitLength-attr-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-dom-kernelUnitLength-attr-expected.png
new file mode 100644
index 0000000..1ccb6de
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-dom-kernelUnitLength-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-dom-specularConstant-attr-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-dom-specularConstant-attr-expected.png
new file mode 100644
index 0000000..00796ba9
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-dom-specularConstant-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-dom-specularExponent-attr-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-dom-specularExponent-attr-expected.png
new file mode 100644
index 0000000..00796ba9
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-dom-specularExponent-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-dom-suraceScale-attr-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-dom-suraceScale-attr-expected.png
new file mode 100644
index 0000000..00796ba9
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-dom-suraceScale-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-inherit-lighting-color-css-prop-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-inherit-lighting-color-css-prop-expected.png
new file mode 100644
index 0000000..956704ce
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-inherit-lighting-color-css-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-lighting-color-css-prop-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-lighting-color-css-prop-expected.png
new file mode 100644
index 0000000..956704ce
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-lighting-color-css-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-in-prop-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-in-prop-expected.png
new file mode 100644
index 0000000..00796ba9
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-in-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-specularConstant-prop-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-specularConstant-prop-expected.png
new file mode 100644
index 0000000..00796ba9
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-specularConstant-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-specularExponent-prop-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-specularExponent-prop-expected.png
new file mode 100644
index 0000000..00796ba9
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-specularExponent-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-suraceScale-prop-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-suraceScale-prop-expected.png
new file mode 100644
index 0000000..00796ba9
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpecularLightingElement-svgdom-suraceScale-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-limitingConeAngle-attr-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-limitingConeAngle-attr-expected.png
new file mode 100644
index 0000000..005b635
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-limitingConeAngle-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtX-attr-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtX-attr-expected.png
new file mode 100644
index 0000000..005b635
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtX-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtY-attr-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtY-attr-expected.png
new file mode 100644
index 0000000..005b635
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtY-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtZ-attr-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtZ-attr-expected.png
new file mode 100644
index 0000000..005b635
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-pointsAtZ-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-specularExponent-attr-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-specularExponent-attr-expected.png
new file mode 100644
index 0000000..005b635
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-specularExponent-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-x-attr-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-x-attr-expected.png
new file mode 100644
index 0000000..005b635
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-x-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-y-attr-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-y-attr-expected.png
new file mode 100644
index 0000000..005b635
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-y-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-z-attr-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-z-attr-expected.png
new file mode 100644
index 0000000..005b635
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-dom-z-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-limitingConeAngle-prop-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-limitingConeAngle-prop-expected.png
new file mode 100644
index 0000000..005b635
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-limitingConeAngle-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtX-prop-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtX-prop-expected.png
new file mode 100644
index 0000000..005b635
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtX-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtY-prop-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtY-prop-expected.png
new file mode 100644
index 0000000..005b635
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtY-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtZ-prop-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtZ-prop-expected.png
new file mode 100644
index 0000000..005b635
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-pointsAtZ-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-specularExponent-prop-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-specularExponent-prop-expected.png
new file mode 100644
index 0000000..005b635
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-specularExponent-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-x-prop-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-x-prop-expected.png
new file mode 100644
index 0000000..005b635
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-x-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-y-prop-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-y-prop-expected.png
new file mode 100644
index 0000000..005b635
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-y-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-z-prop-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-z-prop-expected.png
new file mode 100644
index 0000000..005b635
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFESpotLightElement-svgdom-z-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-dom-filterUnits-attr-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-dom-filterUnits-attr-expected.png
new file mode 100644
index 0000000..ffcdcec
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-dom-filterUnits-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-dom-height-attr-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-dom-height-attr-expected.png
new file mode 100644
index 0000000..ffcdcec
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-dom-height-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-dom-width-attr-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-dom-width-attr-expected.png
new file mode 100644
index 0000000..ffcdcec
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-dom-width-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-dom-x-attr-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-dom-x-attr-expected.png
new file mode 100644
index 0000000..ffcdcec
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-dom-x-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-dom-y-attr-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-dom-y-attr-expected.png
new file mode 100644
index 0000000..ffcdcec
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-dom-y-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-svgdom-filterUnits-prop-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-svgdom-filterUnits-prop-expected.png
new file mode 100644
index 0000000..ffcdcec
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-svgdom-filterUnits-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-svgdom-height-prop-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-svgdom-height-prop-expected.png
new file mode 100644
index 0000000..ffcdcec
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-svgdom-height-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-svgdom-width-prop-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-svgdom-width-prop-expected.png
new file mode 100644
index 0000000..ffcdcec
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-svgdom-width-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-svgdom-x-prop-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-svgdom-x-prop-expected.png
new file mode 100644
index 0000000..ffcdcec
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-svgdom-x-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-svgdom-y-prop-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-svgdom-y-prop-expected.png
new file mode 100644
index 0000000..ffcdcec
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterElement-svgdom-y-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-height-attr-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-height-attr-expected.png
new file mode 100644
index 0000000..ffcdcec
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-height-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-result-attr-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-result-attr-expected.png
new file mode 100644
index 0000000..ffcdcec
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-result-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-width-attr-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-width-attr-expected.png
new file mode 100644
index 0000000..ffcdcec
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-width-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-x-attr-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-x-attr-expected.png
new file mode 100644
index 0000000..ffcdcec
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-x-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-y-attr-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-y-attr-expected.png
new file mode 100644
index 0000000..ffcdcec
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-dom-y-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-height-prop-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-height-prop-expected.png
new file mode 100644
index 0000000..ffcdcec
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-height-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-result-prop-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-result-prop-expected.png
new file mode 100644
index 0000000..ffcdcec
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-result-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-width-prop-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-width-prop-expected.png
new file mode 100644
index 0000000..ffcdcec
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-width-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-x-prop-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-x-prop-expected.png
new file mode 100644
index 0000000..ffcdcec
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-x-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-y-prop-expected.png b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-y-prop-expected.png
new file mode 100644
index 0000000..ffcdcec
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/synchronous_html_parser/svg/dynamic-updates/SVGFilterPrimitiveStandardAttributes-svgdom-y-prop-expected.png
Binary files differ
diff --git a/third_party/expat/README.chromium b/third_party/expat/README.chromium
index e10862a..79d7ccb 100644
--- a/third_party/expat/README.chromium
+++ b/third_party/expat/README.chromium
@@ -1,10 +1,10 @@
 Name: Expat XML Parser
 Short Name: expat
 URL: https://github.com/libexpat/libexpat
-Version: R_2_2_9-91-ge976867
-CPEPrefix: cpe:/a:libexpat:expat:2.2.9
-Date: 20200420
-Revision: e976867fb57a0cd87e3b0fe05d59e0ed63c6febb
+Version: R_2_4_1-0-ga28238bd
+CPEPrefix: cpe:/a:libexpat:expat:2.4.1
+Date: 20210524
+Revision: a28238bdeebc087071777001245df1876a11f5ee
 Security Critical: yes
 License: MIT
 License File: src/expat/COPYING
diff --git a/third_party/expat/include/expat_config/expat_config.h b/third_party/expat/include/expat_config/expat_config.h
index b1fe309..61834da 100644
--- a/third_party/expat/include/expat_config/expat_config.h
+++ b/third_party/expat/include/expat_config/expat_config.h
@@ -77,7 +77,7 @@
 #define PACKAGE_NAME "expat"
 
 /* Define to the full name and version of this package. */
-#define PACKAGE_STRING "expat 2.2.9"
+#define PACKAGE_STRING "expat 2.4.1"
 
 /* Define to the one symbol short name of this package. */
 #define PACKAGE_TARNAME "expat"
@@ -86,13 +86,13 @@
 #define PACKAGE_URL ""
 
 /* Define to the version of this package. */
-#define PACKAGE_VERSION "2.2.9"
+#define PACKAGE_VERSION "2.4.1"
 
 /* Define to 1 if you have the ANSI C header files. */
 #define STDC_HEADERS 1
 
 /* Version number of package */
-#define VERSION "2.2.9"
+#define VERSION "2.4.1"
 
 /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
    significant byte first (like Motorola and SPARC, unlike Intel). */
diff --git a/third_party/expat/roll-expat.sh b/third_party/expat/roll-expat.sh
index 18d1737..4545871 100755
--- a/third_party/expat/roll-expat.sh
+++ b/third_party/expat/roll-expat.sh
@@ -10,10 +10,13 @@
   STEP="update README.chromium" &&
   EXPAT_VERSION=$(git -C third_party/expat/src/ describe --long) &&
   EXPAT_COMMIT=$(git -C third_party/expat/src/ rev-parse HEAD) &&
-  EXPAT_DATE=$(date "+%Y%m%d")
+  EXPAT_DATE=$(date "+%Y%m%d") &&
+  EXPAT_CPE_VERSION=$(echo ${EXPAT_VERSION} | sed -r -e's/^R_([0-9]+)_([0-9]+)_([0-9]+)-[0-9]+-g[0-9a-f]+$/\1.\2.\3/') &&
+  [ ${EXPAT_VERSION} != ${EXPAT_CPE_VERSION} ] &&
   sed -i'' -e "s/^Version: .*\$/Version: ${EXPAT_VERSION}/" third_party/expat/README.chromium &&
-  sed -i'' -e "s/^Revision: .*\$/Revision: ${EXPAT_COMMIT}/" third_party/expat/README.chromium &&
+  sed -i'' -e "s@^CPEPrefix: cpe:/a:libexpat:expat:.*\$@CPEPrefix: cpe:/a:libexpat:expat:${EXPAT_CPE_VERSION}@" third_party/expat/README.chromium &&
   sed -i'' -e "s/^Date: .*\$/Date: ${EXPAT_DATE}/" third_party/expat/README.chromium &&
+  sed -i'' -e "s/^Revision: .*\$/Revision: ${EXPAT_COMMIT}/" third_party/expat/README.chromium &&
   git add third_party/expat/README.chromium
 }
 
diff --git a/third_party/freetype/README.chromium b/third_party/freetype/README.chromium
index 583ab965..3fc6cdd5 100644
--- a/third_party/freetype/README.chromium
+++ b/third_party/freetype/README.chromium
@@ -1,7 +1,7 @@
 Name: FreeType
 URL: http://www.freetype.org/
-Version: VER-2-10-4-255-g5f485339b
-Revision: 5f485339be5b2dab5dc0a7ee6c80c6ea1bd407c8
+Version: VER-2-10-4-256-g0d1c306e5
+Revision: 0d1c306e51aeda3e51bc54fcaa1e41f34c387a4b
 CPEPrefix: cpe:/a:freetype:freetype:2.10.4
 License: Custom license "inspired by the BSD, Artistic, and IJG (Independent
          JPEG Group) licenses"
diff --git a/third_party/libxml/README.chromium b/third_party/libxml/README.chromium
index df76eb4..73f68bed 100644
--- a/third_party/libxml/README.chromium
+++ b/third_party/libxml/README.chromium
@@ -1,7 +1,7 @@
 Name: libxml
 URL: http://xmlsoft.org
-Version: bfd2f4300fb348a0fb8265a17546a0eb8bdec719
-CPEPrefix: cpe:/a:xmlsoft:libxml2:2.9.9
+Version: a46e85f6698af712dc8bee683431c70d35e456ff
+CPEPrefix: cpe:/a:xmlsoft:libxml2:2.9.12
 License: MIT
 License File: src/Copyright
 Security Critical: yes
diff --git a/third_party/libxml/linux/config.h b/third_party/libxml/linux/config.h
index b6ae433e..25172b5 100644
--- a/third_party/libxml/linux/config.h
+++ b/third_party/libxml/linux/config.h
@@ -249,7 +249,7 @@
 #define PACKAGE_NAME "libxml2"
 
 /* Define to the full name and version of this package. */
-#define PACKAGE_STRING "libxml2 2.9.10"
+#define PACKAGE_STRING "libxml2 2.9.12"
 
 /* Define to the one symbol short name of this package. */
 #define PACKAGE_TARNAME "libxml2"
@@ -258,7 +258,7 @@
 #define PACKAGE_URL ""
 
 /* Define to the version of this package. */
-#define PACKAGE_VERSION "2.9.10"
+#define PACKAGE_VERSION "2.9.12"
 
 /* Type cast for the send() function 2nd arg */
 #define SEND_ARG2_CAST /**/
@@ -273,7 +273,7 @@
 #define VA_LIST_IS_ARRAY 1
 
 /* Version number of package */
-#define VERSION "2.9.10"
+#define VERSION "2.9.12"
 
 /* Determine what socket length (socklen_t) data type is */
 #define XML_SOCKLEN_T socklen_t
diff --git a/third_party/libxml/linux/include/libxml/xmlversion.h b/third_party/libxml/linux/include/libxml/xmlversion.h
index 37f673e..4c364e640 100644
--- a/third_party/libxml/linux/include/libxml/xmlversion.h
+++ b/third_party/libxml/linux/include/libxml/xmlversion.h
@@ -29,21 +29,21 @@
  *
  * the version string like "1.2.3"
  */
-#define LIBXML_DOTTED_VERSION "2.9.10"
+#define LIBXML_DOTTED_VERSION "2.9.12"
 
 /**
  * LIBXML_VERSION:
  *
  * the version number: 1.2.3 value is 10203
  */
-#define LIBXML_VERSION 20910
+#define LIBXML_VERSION 20912
 
 /**
  * LIBXML_VERSION_STRING:
  *
  * the version number string, 1.2.3 value is "10203"
  */
-#define LIBXML_VERSION_STRING "20910"
+#define LIBXML_VERSION_STRING "20912"
 
 /**
  * LIBXML_VERSION_EXTRA:
@@ -58,7 +58,7 @@
  * Macro to check that the libxml version in use is compatible with
  * the version the software has been compiled against
  */
-#define LIBXML_TEST_VERSION xmlCheckVersion(20910);
+#define LIBXML_TEST_VERSION xmlCheckVersion(20912);
 
 #ifndef VMS
 #if 0
diff --git a/third_party/libxml/linux/xml2-config b/third_party/libxml/linux/xml2-config
index 7a271d4..3717ff9 100755
--- a/third_party/libxml/linux/xml2-config
+++ b/third_party/libxml/linux/xml2-config
@@ -58,7 +58,7 @@
       ;;
 
     --version)
-	echo 2.9.10
+	echo 2.9.12
 	exit 0
 	;;
 
diff --git a/third_party/libxml/mac/config.h b/third_party/libxml/mac/config.h
index ac184956..27a79ec 100644
--- a/third_party/libxml/mac/config.h
+++ b/third_party/libxml/mac/config.h
@@ -249,7 +249,7 @@
 #define PACKAGE_NAME "libxml2"
 
 /* Define to the full name and version of this package. */
-#define PACKAGE_STRING "libxml2 2.9.10"
+#define PACKAGE_STRING "libxml2 2.9.12"
 
 /* Define to the one symbol short name of this package. */
 #define PACKAGE_TARNAME "libxml2"
@@ -258,7 +258,7 @@
 #define PACKAGE_URL ""
 
 /* Define to the version of this package. */
-#define PACKAGE_VERSION "2.9.10"
+#define PACKAGE_VERSION "2.9.12"
 
 /* Type cast for the send() function 2nd arg */
 #define SEND_ARG2_CAST /**/
@@ -275,7 +275,7 @@
 #define VA_LIST_IS_ARRAY 1
 
 /* Version number of package */
-#define VERSION "2.9.10"
+#define VERSION "2.9.12"
 
 /* Determine what socket length (socklen_t) data type is */
 #define XML_SOCKLEN_T socklen_t
diff --git a/third_party/libxml/mac/include/libxml/xmlversion.h b/third_party/libxml/mac/include/libxml/xmlversion.h
index 37f673e..4c364e640 100644
--- a/third_party/libxml/mac/include/libxml/xmlversion.h
+++ b/third_party/libxml/mac/include/libxml/xmlversion.h
@@ -29,21 +29,21 @@
  *
  * the version string like "1.2.3"
  */
-#define LIBXML_DOTTED_VERSION "2.9.10"
+#define LIBXML_DOTTED_VERSION "2.9.12"
 
 /**
  * LIBXML_VERSION:
  *
  * the version number: 1.2.3 value is 10203
  */
-#define LIBXML_VERSION 20910
+#define LIBXML_VERSION 20912
 
 /**
  * LIBXML_VERSION_STRING:
  *
  * the version number string, 1.2.3 value is "10203"
  */
-#define LIBXML_VERSION_STRING "20910"
+#define LIBXML_VERSION_STRING "20912"
 
 /**
  * LIBXML_VERSION_EXTRA:
@@ -58,7 +58,7 @@
  * Macro to check that the libxml version in use is compatible with
  * the version the software has been compiled against
  */
-#define LIBXML_TEST_VERSION xmlCheckVersion(20910);
+#define LIBXML_TEST_VERSION xmlCheckVersion(20912);
 
 #ifndef VMS
 #if 0
diff --git a/third_party/libxml/src/CMakeLists.txt b/third_party/libxml/src/CMakeLists.txt
index a437717b..b4c0c79 100644
--- a/third_party/libxml/src/CMakeLists.txt
+++ b/third_party/libxml/src/CMakeLists.txt
@@ -1,6 +1,6 @@
 cmake_minimum_required(VERSION 3.15)
 
-project(libxml2 VERSION 2.9.10 LANGUAGES C)
+project(libxml2 VERSION 2.9.12 LANGUAGES C)
 
 include(CheckCSourceCompiles)
 include(CheckFunctionExists)
@@ -414,6 +414,7 @@
 endif()
 
 add_library(LibXml2 ${LIBXML2_HDRS} ${LIBXML2_SRCS})
+add_library(LibXml2::LibXml2 ALIAS LibXml2)
 
 if(NOT BUILD_SHARED_LIBS)
 	target_compile_definitions(LibXml2 INTERFACE LIBXML_STATIC)
@@ -537,6 +538,7 @@
 	)
 	foreach(PROGRAM ${PROGRAMS})
 		add_executable(${PROGRAM} ${PROGRAM}.c)
+		add_executable(LibXml2::${PROGRAM} ALIAS ${PROGRAM})
 		target_link_libraries(${PROGRAM} LibXml2)
 		if(HAVE_LIBHISTORY)
 			target_link_libraries(${PROGRAM} history)
diff --git a/third_party/libxml/src/HTMLtree.c b/third_party/libxml/src/HTMLtree.c
index 24434d45..bdd639c 100644
--- a/third_party/libxml/src/HTMLtree.c
+++ b/third_party/libxml/src/HTMLtree.c
@@ -744,7 +744,7 @@
 htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc,
 	                 xmlNodePtr cur, const char *encoding ATTRIBUTE_UNUSED,
                          int format) {
-    xmlNodePtr root;
+    xmlNodePtr root, parent;
     xmlAttrPtr attr;
     const htmlElemDesc * info;
 
@@ -755,6 +755,7 @@
     }
 
     root = cur;
+    parent = cur->parent;
     while (1) {
         switch (cur->type) {
         case XML_HTML_DOCUMENT_NODE:
@@ -762,7 +763,9 @@
             if (((xmlDocPtr) cur)->intSubset != NULL) {
                 htmlDtdDumpOutput(buf, (xmlDocPtr) cur, NULL);
             }
-            if (cur->children != NULL) {
+            /* Always validate cur->parent when descending. */
+            if ((cur->parent == parent) && (cur->children != NULL)) {
+                parent = cur;
                 cur = cur->children;
                 continue;
             }
@@ -770,6 +773,16 @@
 
         case XML_ELEMENT_NODE:
             /*
+             * Some users like lxml are known to pass nodes with a corrupted
+             * tree structure. Fall back to a recursive call to handle this
+             * case.
+             */
+            if ((cur->parent != parent) && (cur->children != NULL)) {
+                htmlNodeDumpFormatOutput(buf, doc, cur, encoding, format);
+                break;
+            }
+
+            /*
              * Get specific HTML info for that node.
              */
             if (cur->ns == NULL)
@@ -817,6 +830,7 @@
                     (cur->name != NULL) &&
                     (cur->name[0] != 'p')) /* p, pre, param */
                     xmlOutputBufferWriteString(buf, "\n");
+                parent = cur;
                 cur = cur->children;
                 continue;
             }
@@ -825,9 +839,9 @@
                 (info != NULL) && (!info->isinline)) {
                 if ((cur->next->type != HTML_TEXT_NODE) &&
                     (cur->next->type != HTML_ENTITY_REF_NODE) &&
-                    (cur->parent != NULL) &&
-                    (cur->parent->name != NULL) &&
-                    (cur->parent->name[0] != 'p')) /* p, pre, param */
+                    (parent != NULL) &&
+                    (parent->name != NULL) &&
+                    (parent->name[0] != 'p')) /* p, pre, param */
                     xmlOutputBufferWriteString(buf, "\n");
             }
 
@@ -842,9 +856,9 @@
                 break;
             if (((cur->name == (const xmlChar *)xmlStringText) ||
                  (cur->name != (const xmlChar *)xmlStringTextNoenc)) &&
-                ((cur->parent == NULL) ||
-                 ((xmlStrcasecmp(cur->parent->name, BAD_CAST "script")) &&
-                  (xmlStrcasecmp(cur->parent->name, BAD_CAST "style"))))) {
+                ((parent == NULL) ||
+                 ((xmlStrcasecmp(parent->name, BAD_CAST "script")) &&
+                  (xmlStrcasecmp(parent->name, BAD_CAST "style"))))) {
                 xmlChar *buffer;
 
                 buffer = xmlEncodeEntitiesReentrant(doc, cur->content);
@@ -902,13 +916,9 @@
                 break;
             }
 
-            /*
-             * The parent should never be NULL here but we want to handle
-             * corrupted documents gracefully.
-             */
-            if (cur->parent == NULL)
-                return;
-            cur = cur->parent;
+            cur = parent;
+            /* cur->parent was validated when descending. */
+            parent = cur->parent;
 
             if ((cur->type == XML_HTML_DOCUMENT_NODE) ||
                 (cur->type == XML_DOCUMENT_NODE)) {
@@ -939,9 +949,9 @@
                     (cur->next != NULL)) {
                     if ((cur->next->type != HTML_TEXT_NODE) &&
                         (cur->next->type != HTML_ENTITY_REF_NODE) &&
-                        (cur->parent != NULL) &&
-                        (cur->parent->name != NULL) &&
-                        (cur->parent->name[0] != 'p')) /* p, pre, param */
+                        (parent != NULL) &&
+                        (parent->name != NULL) &&
+                        (parent->name[0] != 'p')) /* p, pre, param */
                         xmlOutputBufferWriteString(buf, "\n");
                 }
             }
diff --git a/third_party/libxml/src/configure.ac b/third_party/libxml/src/configure.ac
index a4c675b..5b161a54 100644
--- a/third_party/libxml/src/configure.ac
+++ b/third_party/libxml/src/configure.ac
@@ -3,7 +3,7 @@
 
 m4_define([MAJOR_VERSION], 2)
 m4_define([MINOR_VERSION], 9)
-m4_define([MICRO_VERSION], 10)
+m4_define([MICRO_VERSION], 12)
 
 AC_INIT([libxml2],[MAJOR_VERSION.MINOR_VERSION.MICRO_VERSION])
 AC_CONFIG_SRCDIR([entities.c])
diff --git a/third_party/libxml/src/encoding.c b/third_party/libxml/src/encoding.c
index cdff6ae7..5e50c15 100644
--- a/third_party/libxml/src/encoding.c
+++ b/third_party/libxml/src/encoding.c
@@ -2629,7 +2629,6 @@
     int written;
     int writtentot = 0;
     int toconv;
-    int output = 0;
 
     if (handler == NULL) return(-1);
     if (out == NULL) return(-1);
@@ -2682,8 +2681,6 @@
         ret = -3;
     }
 
-    if (ret >= 0) output += ret;
-
     /*
      * Attempt to handle error cases
      */
diff --git a/third_party/libxml/src/fuzz/Makefile.am b/third_party/libxml/src/fuzz/Makefile.am
index 7d38347..6f487137 100644
--- a/third_party/libxml/src/fuzz/Makefile.am
+++ b/third_party/libxml/src/fuzz/Makefile.am
@@ -2,7 +2,7 @@
 EXTRA_PROGRAMS = genSeed html regexp schema uri xml xpath
 check_PROGRAMS = testFuzzer
 EXTRA_DIST = html.dict regexp.dict schema.dict xml.dict xpath.dict \
-	     seed/uri
+	     seed/uri seed/regexp fuzz.h
 CLEANFILES = $(EXTRA_PROGRAMS)
 AM_CPPFLAGS = -I$(top_srcdir)/include
 DEPENDENCIES = $(top_builddir)/libxml2.la
diff --git a/third_party/libxml/src/fuzz/Makefile.in b/third_party/libxml/src/fuzz/Makefile.in
index e9de41c..47f1edb3 100644
--- a/third_party/libxml/src/fuzz/Makefile.in
+++ b/third_party/libxml/src/fuzz/Makefile.in
@@ -491,7 +491,7 @@
 top_srcdir = @top_srcdir@
 AUTOMAKE_OPTIONS = -Wno-syntax
 EXTRA_DIST = html.dict regexp.dict schema.dict xml.dict xpath.dict \
-	     seed/uri
+	     seed/uri seed/regexp fuzz.h
 
 CLEANFILES = $(EXTRA_PROGRAMS)
 AM_CPPFLAGS = -I$(top_srcdir)/include
diff --git a/third_party/libxml/src/fuzz/fuzz.h b/third_party/libxml/src/fuzz/fuzz.h
new file mode 100644
index 0000000..a51b398
--- /dev/null
+++ b/third_party/libxml/src/fuzz/fuzz.h
@@ -0,0 +1,91 @@
+/*
+ * fuzz.h: Common functions and macros for fuzzing.
+ *
+ * See Copyright for the status of this software.
+ */
+
+#ifndef __XML_FUZZERCOMMON_H__
+#define __XML_FUZZERCOMMON_H__
+
+#include <stddef.h>
+#include <stdio.h>
+#include <libxml/parser.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+  #define HAVE_HTML_FUZZER
+#endif
+#if defined(LIBXML_REGEXP_ENABLED)
+  #define HAVE_REGEXP_FUZZER
+#endif
+#if defined(LIBXML_SCHEMAS_ENABLED)
+  #define HAVE_SCHEMA_FUZZER
+#endif
+#if 1
+  #define HAVE_URI_FUZZER
+#endif
+#if defined(LIBXML_OUTPUT_ENABLED) && \
+    defined(LIBXML_READER_ENABLED) && \
+    defined(LIBXML_XINCLUDE_ENABLED)
+  #define HAVE_XML_FUZZER
+#endif
+#if defined(LIBXML_XPATH_ENABLED)
+  #define HAVE_XPATH_FUZZER
+#endif
+
+int
+LLVMFuzzerInitialize(int *argc, char ***argv);
+
+int
+LLVMFuzzerTestOneInput(const char *data, size_t size);
+
+void
+xmlFuzzErrorFunc(void *ctx ATTRIBUTE_UNUSED, const char *msg ATTRIBUTE_UNUSED,
+                 ...);
+
+void
+xmlFuzzDataInit(const char *data, size_t size);
+
+void
+xmlFuzzDataCleanup(void);
+
+int
+xmlFuzzReadInt(void);
+
+const char *
+xmlFuzzReadRemaining(size_t *size);
+
+void
+xmlFuzzWriteString(FILE *out, const char *str);
+
+const char *
+xmlFuzzReadString(size_t *size);
+
+void
+xmlFuzzReadEntities(void);
+
+const char *
+xmlFuzzMainUrl(void);
+
+const char *
+xmlFuzzMainEntity(size_t *size);
+
+xmlParserInputPtr
+xmlFuzzEntityLoader(const char *URL, const char *ID, xmlParserCtxtPtr ctxt);
+
+size_t
+xmlFuzzExtractStrings(const char *data, size_t size, char **strings,
+                      size_t numStrings);
+
+char *
+xmlSlurpFile(const char *path, size_t *size);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __XML_FUZZERCOMMON_H__ */
+
diff --git a/third_party/libxml/src/fuzz/seed/regexp/branch-1 b/third_party/libxml/src/fuzz/seed/regexp/branch-1
new file mode 100644
index 0000000..ded775e
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/branch-1
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/branch-10 b/third_party/libxml/src/fuzz/seed/regexp/branch-10
new file mode 100644
index 0000000..6700d775
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/branch-10
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/branch-11 b/third_party/libxml/src/fuzz/seed/regexp/branch-11
new file mode 100644
index 0000000..d83f918
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/branch-11
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/branch-12 b/third_party/libxml/src/fuzz/seed/regexp/branch-12
new file mode 100644
index 0000000..b44dba5
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/branch-12
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/branch-13 b/third_party/libxml/src/fuzz/seed/regexp/branch-13
new file mode 100644
index 0000000..64e50a0
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/branch-13
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/branch-2 b/third_party/libxml/src/fuzz/seed/regexp/branch-2
new file mode 100644
index 0000000..8293d81
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/branch-2
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/branch-3 b/third_party/libxml/src/fuzz/seed/regexp/branch-3
new file mode 100644
index 0000000..696af9b
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/branch-3
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/branch-4 b/third_party/libxml/src/fuzz/seed/regexp/branch-4
new file mode 100644
index 0000000..8317998
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/branch-4
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/branch-5 b/third_party/libxml/src/fuzz/seed/regexp/branch-5
new file mode 100644
index 0000000..6b6db8b
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/branch-5
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/branch-6 b/third_party/libxml/src/fuzz/seed/regexp/branch-6
new file mode 100644
index 0000000..4f477902
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/branch-6
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/branch-7 b/third_party/libxml/src/fuzz/seed/regexp/branch-7
new file mode 100644
index 0000000..6334f72
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/branch-7
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/branch-8 b/third_party/libxml/src/fuzz/seed/regexp/branch-8
new file mode 100644
index 0000000..f77a8f4d
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/branch-8
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/branch-9 b/third_party/libxml/src/fuzz/seed/regexp/branch-9
new file mode 100644
index 0000000..acd0eec
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/branch-9
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/bug316338-1 b/third_party/libxml/src/fuzz/seed/regexp/bug316338-1
new file mode 100644
index 0000000..9f0a504
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/bug316338-1
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/bug316338-10 b/third_party/libxml/src/fuzz/seed/regexp/bug316338-10
new file mode 100644
index 0000000..60685bbe
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/bug316338-10
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/bug316338-11 b/third_party/libxml/src/fuzz/seed/regexp/bug316338-11
new file mode 100644
index 0000000..72a7956
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/bug316338-11
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/bug316338-12 b/third_party/libxml/src/fuzz/seed/regexp/bug316338-12
new file mode 100644
index 0000000..85416ee
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/bug316338-12
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/bug316338-13 b/third_party/libxml/src/fuzz/seed/regexp/bug316338-13
new file mode 100644
index 0000000..c91d4fe
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/bug316338-13
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/bug316338-14 b/third_party/libxml/src/fuzz/seed/regexp/bug316338-14
new file mode 100644
index 0000000..a164b42
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/bug316338-14
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/bug316338-15 b/third_party/libxml/src/fuzz/seed/regexp/bug316338-15
new file mode 100644
index 0000000..750c76de
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/bug316338-15
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/bug316338-16 b/third_party/libxml/src/fuzz/seed/regexp/bug316338-16
new file mode 100644
index 0000000..23c5d23
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/bug316338-16
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/bug316338-2 b/third_party/libxml/src/fuzz/seed/regexp/bug316338-2
new file mode 100644
index 0000000..5468d06
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/bug316338-2
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/bug316338-3 b/third_party/libxml/src/fuzz/seed/regexp/bug316338-3
new file mode 100644
index 0000000..76e1e0bc
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/bug316338-3
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/bug316338-4 b/third_party/libxml/src/fuzz/seed/regexp/bug316338-4
new file mode 100644
index 0000000..e0f65a4
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/bug316338-4
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/bug316338-5 b/third_party/libxml/src/fuzz/seed/regexp/bug316338-5
new file mode 100644
index 0000000..fcfaa97
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/bug316338-5
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/bug316338-6 b/third_party/libxml/src/fuzz/seed/regexp/bug316338-6
new file mode 100644
index 0000000..ce00a15
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/bug316338-6
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/bug316338-7 b/third_party/libxml/src/fuzz/seed/regexp/bug316338-7
new file mode 100644
index 0000000..127fe1f
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/bug316338-7
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/bug316338-8 b/third_party/libxml/src/fuzz/seed/regexp/bug316338-8
new file mode 100644
index 0000000..fe8bb8b
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/bug316338-8
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/bug316338-9 b/third_party/libxml/src/fuzz/seed/regexp/bug316338-9
new file mode 100644
index 0000000..3d56e5d
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/bug316338-9
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/bug420596-1 b/third_party/libxml/src/fuzz/seed/regexp/bug420596-1
new file mode 100644
index 0000000..4426933e
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/bug420596-1
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/bug420596-2 b/third_party/libxml/src/fuzz/seed/regexp/bug420596-2
new file mode 100644
index 0000000..474d2b6
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/bug420596-2
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/bug420596-3 b/third_party/libxml/src/fuzz/seed/regexp/bug420596-3
new file mode 100644
index 0000000..09c75cb
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/bug420596-3
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/bug420596-4 b/third_party/libxml/src/fuzz/seed/regexp/bug420596-4
new file mode 100644
index 0000000..65d561e
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/bug420596-4
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/bug420596-5 b/third_party/libxml/src/fuzz/seed/regexp/bug420596-5
new file mode 100644
index 0000000..b678580
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/bug420596-5
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/bug420596-6 b/third_party/libxml/src/fuzz/seed/regexp/bug420596-6
new file mode 100644
index 0000000..3a05d82f
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/bug420596-6
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/bug420596-7 b/third_party/libxml/src/fuzz/seed/regexp/bug420596-7
new file mode 100644
index 0000000..88e1660
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/bug420596-7
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/bug420596-8 b/third_party/libxml/src/fuzz/seed/regexp/bug420596-8
new file mode 100644
index 0000000..4575a92
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/bug420596-8
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/content-1 b/third_party/libxml/src/fuzz/seed/regexp/content-1
new file mode 100644
index 0000000..5acbf86
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/content-1
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/content-10 b/third_party/libxml/src/fuzz/seed/regexp/content-10
new file mode 100644
index 0000000..f131454
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/content-10
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/content-2 b/third_party/libxml/src/fuzz/seed/regexp/content-2
new file mode 100644
index 0000000..4e6b663e
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/content-2
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/content-3 b/third_party/libxml/src/fuzz/seed/regexp/content-3
new file mode 100644
index 0000000..b13fc8d
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/content-3
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/content-4 b/third_party/libxml/src/fuzz/seed/regexp/content-4
new file mode 100644
index 0000000..47c5d6d
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/content-4
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/content-5 b/third_party/libxml/src/fuzz/seed/regexp/content-5
new file mode 100644
index 0000000..f93860e
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/content-5
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/content-6 b/third_party/libxml/src/fuzz/seed/regexp/content-6
new file mode 100644
index 0000000..e5c6e14
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/content-6
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/content-7 b/third_party/libxml/src/fuzz/seed/regexp/content-7
new file mode 100644
index 0000000..4868dd2
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/content-7
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/content-8 b/third_party/libxml/src/fuzz/seed/regexp/content-8
new file mode 100644
index 0000000..a3a87d0bd
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/content-8
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/content-9 b/third_party/libxml/src/fuzz/seed/regexp/content-9
new file mode 100644
index 0000000..91f0d9e
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/content-9
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/hard-1 b/third_party/libxml/src/fuzz/seed/regexp/hard-1
new file mode 100644
index 0000000..ba00382
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/hard-1
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/hard-10 b/third_party/libxml/src/fuzz/seed/regexp/hard-10
new file mode 100644
index 0000000..7db28fa
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/hard-10
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/hard-2 b/third_party/libxml/src/fuzz/seed/regexp/hard-2
new file mode 100644
index 0000000..ed38b91
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/hard-2
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/hard-3 b/third_party/libxml/src/fuzz/seed/regexp/hard-3
new file mode 100644
index 0000000..7b16da0
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/hard-3
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/hard-4 b/third_party/libxml/src/fuzz/seed/regexp/hard-4
new file mode 100644
index 0000000..2ece886
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/hard-4
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/hard-5 b/third_party/libxml/src/fuzz/seed/regexp/hard-5
new file mode 100644
index 0000000..870a3ec5
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/hard-5
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/hard-6 b/third_party/libxml/src/fuzz/seed/regexp/hard-6
new file mode 100644
index 0000000..06aa7d0
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/hard-6
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/hard-7 b/third_party/libxml/src/fuzz/seed/regexp/hard-7
new file mode 100644
index 0000000..50a9ec39
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/hard-7
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/hard-8 b/third_party/libxml/src/fuzz/seed/regexp/hard-8
new file mode 100644
index 0000000..0991129
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/hard-8
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/hard-9 b/third_party/libxml/src/fuzz/seed/regexp/hard-9
new file mode 100644
index 0000000..5bd1d89
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/hard-9
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/ncname-1 b/third_party/libxml/src/fuzz/seed/regexp/ncname-1
new file mode 100644
index 0000000..608eb9a
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/ncname-1
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/ncname-2 b/third_party/libxml/src/fuzz/seed/regexp/ncname-2
new file mode 100644
index 0000000..cfb9b96
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/ncname-2
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/ncname-3 b/third_party/libxml/src/fuzz/seed/regexp/ncname-3
new file mode 100644
index 0000000..07a6a081
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/ncname-3
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/ncname-4 b/third_party/libxml/src/fuzz/seed/regexp/ncname-4
new file mode 100644
index 0000000..87e937f
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/ncname-4
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/ncname-5 b/third_party/libxml/src/fuzz/seed/regexp/ncname-5
new file mode 100644
index 0000000..ad294560
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/ncname-5
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/ranges-1 b/third_party/libxml/src/fuzz/seed/regexp/ranges-1
new file mode 100644
index 0000000..71448f23
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/ranges-1
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/ranges-10 b/third_party/libxml/src/fuzz/seed/regexp/ranges-10
new file mode 100644
index 0000000..91aed3c
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/ranges-10
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/ranges-11 b/third_party/libxml/src/fuzz/seed/regexp/ranges-11
new file mode 100644
index 0000000..76eb5de
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/ranges-11
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/ranges-12 b/third_party/libxml/src/fuzz/seed/regexp/ranges-12
new file mode 100644
index 0000000..9c3bc66
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/ranges-12
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/ranges-2 b/third_party/libxml/src/fuzz/seed/regexp/ranges-2
new file mode 100644
index 0000000..9369f7a5
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/ranges-2
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/ranges-3 b/third_party/libxml/src/fuzz/seed/regexp/ranges-3
new file mode 100644
index 0000000..58a3a081
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/ranges-3
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/ranges-4 b/third_party/libxml/src/fuzz/seed/regexp/ranges-4
new file mode 100644
index 0000000..da7e9dab
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/ranges-4
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/ranges-5 b/third_party/libxml/src/fuzz/seed/regexp/ranges-5
new file mode 100644
index 0000000..83ad4a82
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/ranges-5
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/ranges-6 b/third_party/libxml/src/fuzz/seed/regexp/ranges-6
new file mode 100644
index 0000000..3bc9758f9
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/ranges-6
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/ranges-7 b/third_party/libxml/src/fuzz/seed/regexp/ranges-7
new file mode 100644
index 0000000..fa89038
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/ranges-7
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/ranges-8 b/third_party/libxml/src/fuzz/seed/regexp/ranges-8
new file mode 100644
index 0000000..96f0bb6
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/ranges-8
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/ranges-9 b/third_party/libxml/src/fuzz/seed/regexp/ranges-9
new file mode 100644
index 0000000..8e3fc43
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/ranges-9
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/ranges2-1 b/third_party/libxml/src/fuzz/seed/regexp/ranges2-1
new file mode 100644
index 0000000..044a8eb
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/ranges2-1
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/ranges2-10 b/third_party/libxml/src/fuzz/seed/regexp/ranges2-10
new file mode 100644
index 0000000..19e2aa2
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/ranges2-10
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/ranges2-11 b/third_party/libxml/src/fuzz/seed/regexp/ranges2-11
new file mode 100644
index 0000000..89be181d
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/ranges2-11
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/ranges2-12 b/third_party/libxml/src/fuzz/seed/regexp/ranges2-12
new file mode 100644
index 0000000..42ebdd3
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/ranges2-12
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/ranges2-2 b/third_party/libxml/src/fuzz/seed/regexp/ranges2-2
new file mode 100644
index 0000000..026f7b8
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/ranges2-2
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/ranges2-3 b/third_party/libxml/src/fuzz/seed/regexp/ranges2-3
new file mode 100644
index 0000000..83e78a9
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/ranges2-3
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/ranges2-4 b/third_party/libxml/src/fuzz/seed/regexp/ranges2-4
new file mode 100644
index 0000000..847b4e84
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/ranges2-4
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/ranges2-5 b/third_party/libxml/src/fuzz/seed/regexp/ranges2-5
new file mode 100644
index 0000000..349168d3
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/ranges2-5
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/ranges2-6 b/third_party/libxml/src/fuzz/seed/regexp/ranges2-6
new file mode 100644
index 0000000..5d2a407
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/ranges2-6
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/ranges2-7 b/third_party/libxml/src/fuzz/seed/regexp/ranges2-7
new file mode 100644
index 0000000..74fbafb
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/ranges2-7
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/ranges2-8 b/third_party/libxml/src/fuzz/seed/regexp/ranges2-8
new file mode 100644
index 0000000..125bfa91
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/ranges2-8
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/ranges2-9 b/third_party/libxml/src/fuzz/seed/regexp/ranges2-9
new file mode 100644
index 0000000..f2cf12883
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/ranges2-9
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/xpath-1 b/third_party/libxml/src/fuzz/seed/regexp/xpath-1
new file mode 100644
index 0000000..3bc17926
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/xpath-1
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/xpath-10 b/third_party/libxml/src/fuzz/seed/regexp/xpath-10
new file mode 100644
index 0000000..e4f4b0cd
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/xpath-10
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/xpath-11 b/third_party/libxml/src/fuzz/seed/regexp/xpath-11
new file mode 100644
index 0000000..318e0cc
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/xpath-11
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/xpath-12 b/third_party/libxml/src/fuzz/seed/regexp/xpath-12
new file mode 100644
index 0000000..f204295
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/xpath-12
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/xpath-13 b/third_party/libxml/src/fuzz/seed/regexp/xpath-13
new file mode 100644
index 0000000..70fccd5
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/xpath-13
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/xpath-14 b/third_party/libxml/src/fuzz/seed/regexp/xpath-14
new file mode 100644
index 0000000..357ce2b
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/xpath-14
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/xpath-15 b/third_party/libxml/src/fuzz/seed/regexp/xpath-15
new file mode 100644
index 0000000..2a10a837
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/xpath-15
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/xpath-16 b/third_party/libxml/src/fuzz/seed/regexp/xpath-16
new file mode 100644
index 0000000..1f3089fb
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/xpath-16
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/xpath-17 b/third_party/libxml/src/fuzz/seed/regexp/xpath-17
new file mode 100644
index 0000000..a9d542fb
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/xpath-17
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/xpath-18 b/third_party/libxml/src/fuzz/seed/regexp/xpath-18
new file mode 100644
index 0000000..651eb9d4
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/xpath-18
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/xpath-19 b/third_party/libxml/src/fuzz/seed/regexp/xpath-19
new file mode 100644
index 0000000..fefea8f
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/xpath-19
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/xpath-2 b/third_party/libxml/src/fuzz/seed/regexp/xpath-2
new file mode 100644
index 0000000..81e5fba0
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/xpath-2
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/xpath-20 b/third_party/libxml/src/fuzz/seed/regexp/xpath-20
new file mode 100644
index 0000000..1f3089fb
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/xpath-20
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/xpath-21 b/third_party/libxml/src/fuzz/seed/regexp/xpath-21
new file mode 100644
index 0000000..706a702
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/xpath-21
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/xpath-22 b/third_party/libxml/src/fuzz/seed/regexp/xpath-22
new file mode 100644
index 0000000..a246f84
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/xpath-22
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/xpath-23 b/third_party/libxml/src/fuzz/seed/regexp/xpath-23
new file mode 100644
index 0000000..02753be
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/xpath-23
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/xpath-24 b/third_party/libxml/src/fuzz/seed/regexp/xpath-24
new file mode 100644
index 0000000..331105c
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/xpath-24
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/xpath-25 b/third_party/libxml/src/fuzz/seed/regexp/xpath-25
new file mode 100644
index 0000000..ce3da443
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/xpath-25
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/xpath-26 b/third_party/libxml/src/fuzz/seed/regexp/xpath-26
new file mode 100644
index 0000000..b3bf8c23
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/xpath-26
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/xpath-27 b/third_party/libxml/src/fuzz/seed/regexp/xpath-27
new file mode 100644
index 0000000..74bbe46
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/xpath-27
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/xpath-28 b/third_party/libxml/src/fuzz/seed/regexp/xpath-28
new file mode 100644
index 0000000..b38a709
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/xpath-28
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/xpath-29 b/third_party/libxml/src/fuzz/seed/regexp/xpath-29
new file mode 100644
index 0000000..104d4e5
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/xpath-29
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/xpath-3 b/third_party/libxml/src/fuzz/seed/regexp/xpath-3
new file mode 100644
index 0000000..6d7be85
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/xpath-3
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/xpath-30 b/third_party/libxml/src/fuzz/seed/regexp/xpath-30
new file mode 100644
index 0000000..b681ff1
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/xpath-30
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/xpath-31 b/third_party/libxml/src/fuzz/seed/regexp/xpath-31
new file mode 100644
index 0000000..cd87b0e8
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/xpath-31
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/xpath-32 b/third_party/libxml/src/fuzz/seed/regexp/xpath-32
new file mode 100644
index 0000000..c5cac32
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/xpath-32
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/xpath-33 b/third_party/libxml/src/fuzz/seed/regexp/xpath-33
new file mode 100644
index 0000000..89e3fcd
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/xpath-33
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/xpath-34 b/third_party/libxml/src/fuzz/seed/regexp/xpath-34
new file mode 100644
index 0000000..b65a3d6f
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/xpath-34
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/xpath-35 b/third_party/libxml/src/fuzz/seed/regexp/xpath-35
new file mode 100644
index 0000000..252a70c2
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/xpath-35
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/xpath-4 b/third_party/libxml/src/fuzz/seed/regexp/xpath-4
new file mode 100644
index 0000000..30718c5
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/xpath-4
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/xpath-5 b/third_party/libxml/src/fuzz/seed/regexp/xpath-5
new file mode 100644
index 0000000..06ad88e
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/xpath-5
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/xpath-6 b/third_party/libxml/src/fuzz/seed/regexp/xpath-6
new file mode 100644
index 0000000..6678772
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/xpath-6
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/xpath-7 b/third_party/libxml/src/fuzz/seed/regexp/xpath-7
new file mode 100644
index 0000000..e69ad856
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/xpath-7
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/xpath-8 b/third_party/libxml/src/fuzz/seed/regexp/xpath-8
new file mode 100644
index 0000000..a8120ccd
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/xpath-8
Binary files differ
diff --git a/third_party/libxml/src/fuzz/seed/regexp/xpath-9 b/third_party/libxml/src/fuzz/seed/regexp/xpath-9
new file mode 100644
index 0000000..c037ce7
--- /dev/null
+++ b/third_party/libxml/src/fuzz/seed/regexp/xpath-9
Binary files differ
diff --git a/third_party/libxml/src/include/libxml/Makefile.am b/third_party/libxml/src/include/libxml/Makefile.am
index cf9297a..328c1800 100644
--- a/third_party/libxml/src/include/libxml/Makefile.am
+++ b/third_party/libxml/src/include/libxml/Makefile.am
@@ -51,4 +51,4 @@
 		xmlsave.h \
 		schematron.h
 
-EXTRA_DIST = xmlversion.h.in
+EXTRA_DIST = xmlversion.h.in xmlwin32version.h.in
diff --git a/third_party/libxml/src/libxml2.spec b/third_party/libxml/src/libxml2.spec
index 1cd4855..682dff2 100644
--- a/third_party/libxml/src/libxml2.spec
+++ b/third_party/libxml/src/libxml2.spec
@@ -2,7 +2,7 @@
 
 Summary: Library providing XML and HTML support
 Name: libxml2
-Version: 2.9.10
+Version: 2.9.12
 Release: 1%{?dist}%{?extra_release}
 License: MIT
 Group: Development/Libraries
@@ -204,6 +204,6 @@
 %endif # with_python3
 
 %changelog
-* Mon May 10 2021 Daniel Veillard <veillard@redhat.com>
-- upstream release 2.9.10 see http://xmlsoft.org/news.html
+* Mon May 24 2021 Daniel Veillard <veillard@redhat.com>
+- upstream release 2.9.12 see http://xmlsoft.org/news.html
 
diff --git a/third_party/libxml/src/parser.c b/third_party/libxml/src/parser.c
index eba5f617..d5b72e4f 100644
--- a/third_party/libxml/src/parser.c
+++ b/third_party/libxml/src/parser.c
@@ -140,6 +140,7 @@
                      xmlEntityPtr ent, size_t replacement)
 {
     size_t consumed = 0;
+    int i;
 
     if ((ctxt == NULL) || (ctxt->options & XML_PARSE_HUGE))
         return (0);
@@ -184,6 +185,28 @@
 	    rep = NULL;
 	}
     }
+
+    /*
+     * Prevent entity exponential check, not just replacement while
+     * parsing the DTD
+     * The check is potentially costly so do that only once in a thousand
+     */
+    if ((ctxt->instate == XML_PARSER_DTD) && (ctxt->nbentities > 10000) &&
+        (ctxt->nbentities % 1024 == 0)) {
+	for (i = 0;i < ctxt->inputNr;i++) {
+	    consumed += ctxt->inputTab[i]->consumed +
+	               (ctxt->inputTab[i]->cur - ctxt->inputTab[i]->base);
+	}
+	if (ctxt->nbentities > consumed * XML_PARSER_NON_LINEAR) {
+	    xmlFatalErr(ctxt, XML_ERR_ENTITY_LOOP, NULL);
+	    ctxt->instate = XML_PARSER_EOF;
+	    return (1);
+	}
+	consumed = 0;
+    }
+
+
+
     if (replacement != 0) {
 	if (replacement < XML_MAX_TEXT_LENGTH)
 	    return(0);
@@ -7981,6 +8004,9 @@
             xmlChar start[4];
             xmlCharEncoding enc;
 
+	    if (xmlParserEntityCheck(ctxt, 0, entity, 0))
+	        return;
+
 	    if ((entity->etype == XML_EXTERNAL_PARAMETER_ENTITY) &&
 	        ((ctxt->options & XML_PARSE_NOENT) == 0) &&
 		((ctxt->options & XML_PARSE_DTDVALID) == 0) &&
@@ -14664,7 +14690,8 @@
 	return;
 
 #if defined(_WIN32) && (!defined(LIBXML_STATIC) || defined(LIBXML_STATIC_FOR_DLL))
-	atexit(xmlCleanupParser);
+    if (xmlFree == free)
+        atexit(xmlCleanupParser);
 #endif
 
 #ifdef LIBXML_THREAD_ENABLED
diff --git a/third_party/libxml/src/testapi.c b/third_party/libxml/src/testapi.c
index 8a4e23e..6f19c6fc 100644
--- a/third_party/libxml/src/testapi.c
+++ b/third_party/libxml/src/testapi.c
@@ -2843,7 +2843,7 @@
     int n_buf;
     xmlDocPtr cur; /* the document */
     int n_cur;
-    char * encoding; /* the encoding string */
+    char * encoding; /* the encoding string (unused) */
     int n_encoding;
     int format; /* should formatting spaces been added */
     int n_format;
@@ -2896,7 +2896,7 @@
     int n_buf;
     xmlDocPtr cur; /* the document */
     int n_cur;
-    char * encoding; /* the encoding string */
+    char * encoding; /* the encoding string (unused) */
     int n_encoding;
 
     for (n_buf = 0;n_buf < gen_nb_xmlOutputBufferPtr;n_buf++) {
@@ -3397,7 +3397,7 @@
     int n_doc;
     xmlNodePtr cur; /* the current node */
     int n_cur;
-    char * encoding; /* the encoding string */
+    char * encoding; /* the encoding string (unused) */
     int n_encoding;
     int format; /* should formatting spaces been added */
     int n_format;
@@ -3457,7 +3457,7 @@
     int n_doc;
     xmlNodePtr cur; /* the current node */
     int n_cur;
-    char * encoding; /* the encoding string */
+    char * encoding; /* the encoding string (unused) */
     int n_encoding;
 
     for (n_buf = 0;n_buf < gen_nb_xmlOutputBufferPtr;n_buf++) {
@@ -13611,7 +13611,7 @@
 #ifdef LIBXML_SAX1_ENABLED
     int mem_base;
     int ret_val;
-    xmlDocPtr doc; /* the document the chunk pertains to */
+    xmlDocPtr doc; /* the document the chunk pertains to (must not be NULL) */
     int n_doc;
     xmlSAXHandlerPtr sax; /* the SAX handler block (possibly NULL) */
     int n_sax;
@@ -13687,7 +13687,7 @@
 #ifdef LIBXML_SAX1_ENABLED
     int mem_base;
     int ret_val;
-    xmlDocPtr doc; /* the document the chunk pertains to */
+    xmlDocPtr doc; /* the document the chunk pertains to (must not be NULL) */
     int n_doc;
     xmlSAXHandlerPtr sax; /* the SAX handler block (possibly NULL) */
     int n_sax;
@@ -29238,6 +29238,33 @@
 
 
 static int
+test_xmlPopOutputCallbacks(void) {
+    int test_ret = 0;
+
+#if defined(LIBXML_OUTPUT_ENABLED)
+    int mem_base;
+    int ret_val;
+
+        mem_base = xmlMemBlocks();
+
+        ret_val = xmlPopOutputCallbacks();
+        desret_int(ret_val);
+        call_tests++;
+        xmlResetLastError();
+        if (mem_base != xmlMemBlocks()) {
+            printf("Leak of %d blocks found in xmlPopOutputCallbacks",
+	           xmlMemBlocks() - mem_base);
+	    test_ret++;
+            printf("\n");
+        }
+    function_tests++;
+#endif
+
+    return(test_ret);
+}
+
+
+static int
 test_xmlRegisterDefaultInputCallbacks(void) {
     int test_ret = 0;
 
@@ -29313,7 +29340,7 @@
 test_xmlIO(void) {
     int test_ret = 0;
 
-    if (quiet == 0) printf("Testing xmlIO : 40 of 50 functions ...\n");
+    if (quiet == 0) printf("Testing xmlIO : 41 of 51 functions ...\n");
     test_ret += test_xmlAllocOutputBuffer();
     test_ret += test_xmlAllocParserInputBuffer();
     test_ret += test_xmlCheckFilename();
@@ -29354,6 +29381,7 @@
     test_ret += test_xmlParserInputBufferPush();
     test_ret += test_xmlParserInputBufferRead();
     test_ret += test_xmlPopInputCallbacks();
+    test_ret += test_xmlPopOutputCallbacks();
     test_ret += test_xmlRegisterDefaultInputCallbacks();
     test_ret += test_xmlRegisterDefaultOutputCallbacks();
     test_ret += test_xmlRegisterHTTPPostCallbacks();
@@ -34240,27 +34268,27 @@
     long ret_val;
     xmlSaveCtxtPtr ctxt; /* a document saving context */
     int n_ctxt;
-    xmlNodePtr node; /* the top node of the subtree to save */
-    int n_node;
+    xmlNodePtr cur; /*  */
+    int n_cur;
 
     for (n_ctxt = 0;n_ctxt < gen_nb_xmlSaveCtxtPtr;n_ctxt++) {
-    for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
+    for (n_cur = 0;n_cur < gen_nb_xmlNodePtr;n_cur++) {
         mem_base = xmlMemBlocks();
         ctxt = gen_xmlSaveCtxtPtr(n_ctxt, 0);
-        node = gen_xmlNodePtr(n_node, 1);
+        cur = gen_xmlNodePtr(n_cur, 1);
 
-        ret_val = xmlSaveTree(ctxt, node);
+        ret_val = xmlSaveTree(ctxt, cur);
         desret_long(ret_val);
         call_tests++;
         des_xmlSaveCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlNodePtr(n_node, node, 1);
+        des_xmlNodePtr(n_cur, cur, 1);
         xmlResetLastError();
         if (mem_base != xmlMemBlocks()) {
             printf("Leak of %d blocks found in xmlSaveTree",
 	           xmlMemBlocks() - mem_base);
 	    test_ret++;
             printf(" %d", n_ctxt);
-            printf(" %d", n_node);
+            printf(" %d", n_cur);
             printf("\n");
         }
     }
diff --git a/third_party/libxml/src/xmlsave.c b/third_party/libxml/src/xmlsave.c
index 61a4045..aedbd5e7 100644
--- a/third_party/libxml/src/xmlsave.c
+++ b/third_party/libxml/src/xmlsave.c
@@ -847,7 +847,7 @@
 static void
 xmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
     int format = ctxt->format;
-    xmlNodePtr tmp, root, unformattedNode = NULL;
+    xmlNodePtr tmp, root, unformattedNode = NULL, parent;
     xmlAttrPtr attr;
     xmlChar *start, *end;
     xmlOutputBufferPtr buf;
@@ -856,6 +856,7 @@
     buf = ctxt->buf;
 
     root = cur;
+    parent = cur->parent;
     while (1) {
         switch (cur->type) {
         case XML_DOCUMENT_NODE:
@@ -868,7 +869,9 @@
             break;
 
         case XML_DOCUMENT_FRAG_NODE:
-            if (cur->children != NULL) {
+            /* Always validate cur->parent when descending. */
+            if ((cur->parent == parent) && (cur->children != NULL)) {
+                parent = cur;
                 cur = cur->children;
                 continue;
             }
@@ -887,7 +890,18 @@
             break;
 
         case XML_ELEMENT_NODE:
-	    if ((cur != root) && (ctxt->format == 1) && (xmlIndentTreeOutput))
+            /*
+             * Some users like lxml are known to pass nodes with a corrupted
+             * tree structure. Fall back to a recursive call to handle this
+             * case.
+             */
+            if ((cur->parent != parent) && (cur->children != NULL)) {
+                xmlNodeDumpOutputInternal(ctxt, cur);
+                break;
+            }
+
+	    if ((ctxt->level > 0) && (ctxt->format == 1) &&
+                (xmlIndentTreeOutput))
 		xmlOutputBufferWrite(buf, ctxt->indent_size *
 				     (ctxt->level > ctxt->indent_nr ?
 				      ctxt->indent_nr : ctxt->level),
@@ -942,6 +956,7 @@
                 xmlOutputBufferWrite(buf, 1, ">");
                 if (ctxt->format == 1) xmlOutputBufferWrite(buf, 1, "\n");
                 if (ctxt->level >= 0) ctxt->level++;
+                parent = cur;
                 cur = cur->children;
                 continue;
             }
@@ -1058,13 +1073,9 @@
                 break;
             }
 
-            /*
-             * The parent should never be NULL here but we want to handle
-             * corrupted documents gracefully.
-             */
-            if (cur->parent == NULL)
-                return;
-            cur = cur->parent;
+            cur = parent;
+            /* cur->parent was validated when descending. */
+            parent = cur->parent;
 
             if (cur->type == XML_ELEMENT_NODE) {
                 if (ctxt->level > 0) ctxt->level--;
diff --git a/third_party/libxml/win32/include/libxml/xmlversion.h b/third_party/libxml/win32/include/libxml/xmlversion.h
index 28ecf08..31593ed 100644
--- a/third_party/libxml/win32/include/libxml/xmlversion.h
+++ b/third_party/libxml/win32/include/libxml/xmlversion.h
@@ -29,21 +29,21 @@
  *
  * the version string like "1.2.3"
  */
-#define LIBXML_DOTTED_VERSION "2.9.10"
+#define LIBXML_DOTTED_VERSION "2.9.12"
 
 /**
  * LIBXML_VERSION:
  *
  * the version number: 1.2.3 value is 10203
  */
-#define LIBXML_VERSION 20910
+#define LIBXML_VERSION 20912
 
 /**
  * LIBXML_VERSION_STRING:
  *
  * the version number string, 1.2.3 value is "10203"
  */
-#define LIBXML_VERSION_STRING "20910"
+#define LIBXML_VERSION_STRING "20912"
 
 /**
  * LIBXML_VERSION_EXTRA:
@@ -58,7 +58,7 @@
  * Macro to check that the libxml version in use is compatible with
  * the version the software has been compiled against
  */
-#define LIBXML_TEST_VERSION xmlCheckVersion(20910);
+#define LIBXML_TEST_VERSION xmlCheckVersion(20912);
 
 #ifndef VMS
 #if 0
diff --git a/third_party/sqlite/BUILD.gn b/third_party/sqlite/BUILD.gn
index d1869c6..6994028 100644
--- a/third_party/sqlite/BUILD.gn
+++ b/third_party/sqlite/BUILD.gn
@@ -56,26 +56,12 @@
     defines += [ "SQLITE_ENABLE_LOCKING_STYLE=0" ]
   }
 
-  # The width and precision fields in SQLite's printf() function may easily lead
-  # to accidental OOMs.
-  #
-  # In production builds, we limit the fields to the value recommended at
-  # https://www.sqlite.org/compile.html#printf_precision_limit. Fuzzing builds
-  # use a larger limit, because our fuzzers use printf()'s ability to create
-  # large buffers to test edge cases in SQLite's buffer handling code.
-  #
-  # See also https://sqlite.org/printf.html
-  if (use_fuzzing_engine) {
-    defines += [ "SQLITE_PRINTF_PRECISION_LIMIT=128000000" ]  # 128 MB
-  } else {
-    defines += [ "SQLITE_PRINTF_PRECISION_LIMIT=1000" ]
-  }
-
-  if (use_fuzzing_engine) {
-    # Limit max length of data blobs and queries to 128 MB for fuzzing builds.
+  if (using_sanitizer) {
     defines += [
+      # Limit max length of data blobs and queries to 128 MB for fuzzing builds.
       "SQLITE_MAX_LENGTH=128000000",
       "SQLITE_MAX_SQL_LENGTH=128000000",
+      "SQLITE_PRINTF_PRECISION_LIMIT=1280000",
     ]
 
     # During fuzz testing, valid SQL queries generated by fuzzing engine may
@@ -83,17 +69,20 @@
     # out-of-memory error. However, such errors are not valid bugs.
     # To avoid hitting those irrelevant OOMs, we limit max number of memory
     # pages, so fuzzer will not crash when reaching the limit.
-    defines += [
-      "SQLITE_MAX_PAGE_COUNT=16384",
+    # Apply this for fuzzing builds only, not for all builds with sanitizers.
+    if (use_fuzzing_engine) {
+      defines += [
+        "SQLITE_MAX_PAGE_COUNT=16384",
 
-      # Used to deserialize a database from a libfuzzer-provided data blob.
-      # This is to fuzz SQLite's resilience to database corruption.
-      "SQLITE_ENABLE_DESERIALIZE",
-    ]
+        # Used to deserialize a database from a libfuzzer-provided data blob.
+        # This is to fuzz SQLite's resilience to database corruption.
+        "SQLITE_ENABLE_DESERIALIZE",
+      ]
 
-    # The progress callback is used in fuzzing to cancel long-running queries
-    # so we don't spend too much time on them.
-    defines -= [ "SQLITE_OMIT_PROGRESS_CALLBACK" ]
+      # The progress callback is used in fuzzing to cancel long-running queries
+      # so we don't spend too much time on them.
+      defines -= [ "SQLITE_OMIT_PROGRESS_CALLBACK" ]
+    }
   }
 
   if (is_debug || dcheck_always_on) {
diff --git a/third_party/zlib/google/zip.h b/third_party/zlib/google/zip.h
index 382eba1..ae08a24 100644
--- a/third_party/zlib/google/zip.h
+++ b/third_party/zlib/google/zip.h
@@ -84,9 +84,13 @@
 
 // ZIP creation parameters and options.
 struct ZipParams {
-  // Source directory.
+  // Source directory. Ignored if |file_accessor| is set.
   base::FilePath src_dir;
 
+  // Abstraction around file system access used to read files.
+  // If left null, an implementation that accesses files directly is used.
+  FileAccessor* file_accessor = nullptr;  // Not owned
+
   // Destination file path.
   // Either dest_file or dest_fd should be set, but not both.
   base::FilePath dest_file;
@@ -126,10 +130,6 @@
 
   // Should recursively add subdirectory contents?
   bool recursive = false;
-
-  // Abstraction around file system access used to read files. If left null, an
-  // implementation that accesses files directly is used.
-  FileAccessor* file_accessor = nullptr;  // Not owned
 };
 
 // Zip files specified into a ZIP archives. The source files and ZIP destination
diff --git a/third_party/zlib/google/zip_unittest.cc b/third_party/zlib/google/zip_unittest.cc
index 558fedd..2d2e66a 100644
--- a/third_party/zlib/google/zip_unittest.cc
+++ b/third_party/zlib/google/zip_unittest.cc
@@ -567,10 +567,8 @@
   base::FilePath zip_file;
   ASSERT_TRUE(base::CreateTemporaryFile(&zip_file));
   VirtualFileSystem file_accessor;
-  const zip::ZipParams params{
-      .src_dir = base::FilePath(FILE_PATH_LITERAL("/test")),
-      .dest_file = zip_file,
-      .file_accessor = &file_accessor};
+  const zip::ZipParams params{.file_accessor = &file_accessor,
+                              .dest_file = zip_file};
   ASSERT_TRUE(zip::Zip(params));
 
   base::ScopedTempDir scoped_temp_dir;
diff --git a/tools/mb/mb_config.pyl b/tools/mb/mb_config.pyl
index 919dbf7..3b5a348d 100644
--- a/tools/mb/mb_config.pyl
+++ b/tools/mb/mb_config.pyl
@@ -2612,7 +2612,13 @@
     ],
 
     'release_bot_enable_v8_oilpan_dcheck_always_on': [
-      'release_bot_blink', 'enable_v8_oilpan', 'dcheck_always_on',
+      'release_bot_blink',
+      'enable_v8_oilpan',
+      'dcheck_always_on',
+      # Assignment checks during prefinalizers is currently only enabled in DCHECK builds.
+      'enable_v8_oilpan_check_assignments_in_prefinalizers',
+      # Live byte verification is currently only enabled in DCHECK builds.
+      'enable_v8_oilpan_live_byte_verification',
     ],
 
     'release_bot_extended_tracing': [
@@ -3118,6 +3124,14 @@
       'gn_args': 'enable_blink_heap_use_v8_oilpan=true',
     },
 
+    'enable_v8_oilpan_check_assignments_in_prefinalizers': {
+      'gn_args': 'cppgc_enable_check_assignments_in_prefinalizers=true',
+    },
+
+    'enable_v8_oilpan_live_byte_verification': {
+      'gn_args': 'cppgc_enable_verify_live_bytes=true',
+    },
+
     'enable_vulkan': {
       'gn_args': 'enable_vulkan=true',
     },
diff --git a/tools/mb/mb_config_expectations/chromium.fyi.json b/tools/mb/mb_config_expectations/chromium.fyi.json
index 7ea12d5..ffc92af1 100644
--- a/tools/mb/mb_config_expectations/chromium.fyi.json
+++ b/tools/mb/mb_config_expectations/chromium.fyi.json
@@ -769,6 +769,8 @@
   },
   "linux-blink-v8-oilpan": {
     "gn_args": {
+      "cppgc_enable_check_assignments_in_prefinalizers": true,
+      "cppgc_enable_verify_live_bytes": true,
       "dcheck_always_on": true,
       "enable_blink_heap_use_v8_oilpan": true,
       "ffmpeg_branding": "Chrome",
diff --git a/tools/metrics/histograms/histograms_xml/histogram_suffixes_list.xml b/tools/metrics/histograms/histograms_xml/histogram_suffixes_list.xml
index e5bd3a0..d27c80c 100644
--- a/tools/metrics/histograms/histograms_xml/histogram_suffixes_list.xml
+++ b/tools/metrics/histograms/histograms_xml/histogram_suffixes_list.xml
@@ -11620,7 +11620,11 @@
   <suffix name="popular_baked_in" label="Baked-in, popular suggestions."/>
   <suffix name="popular_fetched"
       label="Non-personalized, popular suggestions (fetched from the server)."/>
-  <suffix name="repeatable_query" label="Repeatable Query suggestion."/>
+  <suffix name="repeatable_query" label="Repeatable Query suggestion.">
+    <obsolete>
+      Removed in 05 2021.
+    </obsolete>
+  </suffix>
   <suffix name="search_page" label="Google Search page">
     <obsolete>
       Used for experiment but was never launched, as of 2019-07.
diff --git a/tools/metrics/histograms/histograms_xml/ios/histograms.xml b/tools/metrics/histograms/histograms_xml/ios/histograms.xml
index f1e9b22..37fa6cc98 100644
--- a/tools/metrics/histograms/histograms_xml/ios/histograms.xml
+++ b/tools/metrics/histograms/histograms_xml/ios/histograms.xml
@@ -573,6 +573,18 @@
   </summary>
 </histogram>
 
+<histogram name="IOS.MainThreadFreezeDetection.HangWithCleanExit"
+    enum="Boolean" expires_after="2021-12-11">
+  <owner>justincohen@chromium.org</owner>
+  <owner>olivierrobin@chromium.org</owner>
+  <summary>
+    Recorded when the MainThreadFreezeDetector initializes. If a hang was
+    detected on a previous run, it's expected the app will be killed and not
+    exit cleanly. Set to `true` if the app exited cleanly and a hang was
+    detected, indicating no watchdog kill and an error in freeze detection.
+  </summary>
+</histogram>
+
 <histogram name="IOS.MainThreadFreezeDetection.NotRunningAfterReport"
     enum="IOSMainThreadFreezeDetectionNotRunningAfterReportBlock"
     expires_after="2021-09-12">
diff --git a/tools/metrics/histograms/histograms_xml/media/histograms.xml b/tools/metrics/histograms/histograms_xml/media/histograms.xml
index ffd5239b..128b2e9 100644
--- a/tools/metrics/histograms/histograms_xml/media/histograms.xml
+++ b/tools/metrics/histograms/histograms_xml/media/histograms.xml
@@ -3256,15 +3256,13 @@
 
 <histogram name="Media.Remoting.AllowedByPage" enum="BooleanEnabled"
     expires_after="2021-11-07">
-  <owner>miu@chromium.org</owner>
   <owner>jophba@chromium.org</owner>
   <owner>openscreen-eng@google.com</owner>
   <summary>Tracks whether a web page allows content to be remoted.</summary>
 </histogram>
 
 <histogram name="Media.Remoting.AudioBitrate" units="kbps"
-    expires_after="2021-07-01">
-  <owner>miu@chromium.org</owner>
+    expires_after="2022-07-01">
   <owner>jophba@chromium.org</owner>
   <owner>openscreen-eng@google.com</owner>
   <summary>
@@ -3273,8 +3271,7 @@
 </histogram>
 
 <histogram name="Media.Remoting.AudioChannelLayout" enum="ChannelLayout"
-    expires_after="2021-07-01">
-  <owner>miu@chromium.org</owner>
+    expires_after="2022-07-01">
   <owner>jophba@chromium.org</owner>
   <owner>openscreen-eng@google.com</owner>
   <summary>Audio channel layout used while remoting content.</summary>
@@ -3282,23 +3279,20 @@
 
 <histogram name="Media.Remoting.AudioCodec" enum="AudioCodec"
     expires_after="2021-11-07">
-  <owner>miu@chromium.org</owner>
   <owner>jophba@chromium.org</owner>
   <owner>openscreen-eng@google.com</owner>
   <summary>Audio codec used while remoting content.</summary>
 </histogram>
 
 <histogram name="Media.Remoting.AudioSamplesPerSecond" enum="AudioSampleRate"
-    expires_after="2021-07-01">
-  <owner>miu@chromium.org</owner>
+    expires_after="2022-07-01">
   <owner>jophba@chromium.org</owner>
   <owner>openscreen-eng@google.com</owner>
   <summary>Audio sampling rate while remoting audio content.</summary>
 </histogram>
 
 <histogram name="Media.Remoting.AudioSamplesPerSecondUnexpected" units="Hz"
-    expires_after="2021-07-01">
-  <owner>miu@chromium.org</owner>
+    expires_after="2022-07-01">
   <owner>jophba@chromium.org</owner>
   <owner>openscreen-eng@google.com</owner>
   <summary>
@@ -3319,7 +3313,6 @@
 
 <histogram name="Media.Remoting.SessionDuration" units="ms"
     expires_after="2021-11-07">
-  <owner>miu@chromium.org</owner>
   <owner>jophba@chromium.org</owner>
   <owner>openscreen-eng@google.com</owner>
   <summary>Measures the duration of each remoting session.</summary>
@@ -3327,7 +3320,6 @@
 
 <histogram name="Media.Remoting.SessionStartTrigger"
     enum="RemotingStartTrigger" expires_after="2021-11-07">
-  <owner>miu@chromium.org</owner>
   <owner>jophba@chromium.org</owner>
   <owner>openscreen-eng@google.com</owner>
   <summary>Tracks the trigger for starting a remoting session.</summary>
@@ -3337,7 +3329,6 @@
     expires_after="2021-11-07">
 <!-- Name completed by histogram_suffixes name="RemotingSessionDuration" -->
 
-  <owner>miu@chromium.org</owner>
   <owner>jophba@chromium.org</owner>
   <owner>openscreen-eng@google.com</owner>
   <summary>Tracks the trigger for stopping a remoting session.</summary>
@@ -3345,7 +3336,6 @@
 
 <histogram name="Media.Remoting.ShortSessionDuration" units="ms"
     expires_after="2021-11-07">
-  <owner>miu@chromium.org</owner>
   <owner>jophba@chromium.org</owner>
   <owner>openscreen-eng@google.com</owner>
   <summary>
@@ -3354,8 +3344,7 @@
 </histogram>
 
 <histogram name="Media.Remoting.TimeUntilFirstPlayout" units="ms"
-    expires_after="2021-07-01">
-  <owner>miu@chromium.org</owner>
+    expires_after="2022-07-01">
   <owner>jophba@chromium.org</owner>
   <owner>openscreen-eng@google.com</owner>
   <summary>
@@ -3366,7 +3355,6 @@
 
 <histogram name="Media.Remoting.TimeUntilRemoteInitialized" units="ms"
     expires_after="2021-11-07">
-  <owner>miu@chromium.org</owner>
   <owner>jophba@chromium.org</owner>
   <owner>openscreen-eng@google.com</owner>
   <summary>
@@ -3377,7 +3365,6 @@
 
 <histogram name="Media.Remoting.TrackConfiguration"
     enum="RemotingTrackConfiguration" expires_after="2021-11-07">
-  <owner>miu@chromium.org</owner>
   <owner>jophba@chromium.org</owner>
   <owner>openscreen-eng@google.com</owner>
   <summary>Tracks whether audio or video or both are remoted.</summary>
@@ -3385,15 +3372,13 @@
 
 <histogram name="Media.Remoting.VideoAspectRatio" units="%"
     expires_after="2021-11-07">
-  <owner>miu@chromium.org</owner>
   <owner>jophba@chromium.org</owner>
   <owner>openscreen-eng@google.com</owner>
   <summary>Aspect ratio of video while remoting content.</summary>
 </histogram>
 
 <histogram name="Media.Remoting.VideoBitrate" units="kbps"
-    expires_after="2021-07-01">
-  <owner>miu@chromium.org</owner>
+    expires_after="2022-07-01">
   <owner>jophba@chromium.org</owner>
   <owner>openscreen-eng@google.com</owner>
   <summary>
@@ -3403,7 +3388,6 @@
 
 <histogram name="Media.Remoting.VideoCodec" enum="VideoCodec"
     expires_after="2021-11-07">
-  <owner>miu@chromium.org</owner>
   <owner>jophba@chromium.org</owner>
   <owner>openscreen-eng@google.com</owner>
   <summary>Video codec used while remoting content.</summary>
@@ -3411,7 +3395,6 @@
 
 <histogram name="Media.Remoting.VideoCodecProfile" enum="VideoCodecProfile"
     expires_after="2021-11-07">
-  <owner>miu@chromium.org</owner>
   <owner>jophba@chromium.org</owner>
   <owner>openscreen-eng@google.com</owner>
   <summary>Video codec profile used while remoting content.</summary>
@@ -3419,7 +3402,6 @@
 
 <histogram name="Media.Remoting.VideoNaturalWidth" units="pixels"
     expires_after="2021-11-07">
-  <owner>miu@chromium.org</owner>
   <owner>jophba@chromium.org</owner>
   <owner>openscreen-eng@google.com</owner>
   <summary>Video width while remoting content.</summary>
@@ -5004,7 +4986,7 @@
 </histogram>
 
 <histogram name="MediaRouter.Cast.Mdns.Channel.Open_Failure" units="ms"
-    expires_after="2021-07-01">
+    expires_after="2022-07-01">
   <owner>mfoltz@chromium.org</owner>
   <owner>openscreen-eng@google.com</owner>
   <summary>
@@ -5014,7 +4996,7 @@
 </histogram>
 
 <histogram name="MediaRouter.Cast.Mdns.Channel.Open_Success" units="ms"
-    expires_after="2021-07-01">
+    expires_after="2022-07-01">
   <owner>mfoltz@chromium.org</owner>
   <owner>openscreen-eng@google.com</owner>
   <summary>
diff --git a/tools/metrics/histograms/histograms_xml/new_tab_page/histograms.xml b/tools/metrics/histograms/histograms_xml/new_tab_page/histograms.xml
index fb1ea8f..68636a6 100644
--- a/tools/metrics/histograms/histograms_xml/new_tab_page/histograms.xml
+++ b/tools/metrics/histograms/histograms_xml/new_tab_page/histograms.xml
@@ -1325,6 +1325,9 @@
 
 <histogram name="NewTabPage.RepeatableQueries.ExtractedCount" units="count"
     expires_after="2021-10-25">
+  <obsolete>
+    Removed in 05 2021.
+  </obsolete>
   <owner>mahmadi@chromium.org</owner>
   <owner>chrome-desktop-ntp@google.com</owner>
   <summary>
@@ -1337,6 +1340,9 @@
 
 <histogram name="NewTabPage.RepeatableQueries.ExtractionDuration" units="ms"
     expires_after="2021-10-25">
+  <obsolete>
+    Removed in 05 2021.
+  </obsolete>
   <owner>mahmadi@chromium.org</owner>
   <owner>chrome-desktop-ntp@google.com</owner>
   <summary>
diff --git a/tools/metrics/histograms/histograms_xml/others/histograms.xml b/tools/metrics/histograms/histograms_xml/others/histograms.xml
index 74103e60..698aa7c9 100644
--- a/tools/metrics/histograms/histograms_xml/others/histograms.xml
+++ b/tools/metrics/histograms/histograms_xml/others/histograms.xml
@@ -8016,7 +8016,7 @@
 </histogram>
 
 <histogram base="true" name="JSDialogs.OriginRelationship"
-    enum="DialogOriginRelationship" expires_after="2021-06-01">
+    enum="DialogOriginRelationship" expires_after="2022-06-01">
   <owner>avi@chromium.org</owner>
   <owner>carlosil@chromium.org</owner>
   <owner>ericmill@google.com</owner>
@@ -8028,7 +8028,7 @@
 </histogram>
 
 <histogram base="true" name="JSDialogs.Scheme" enum="NavigationScheme"
-    expires_after="2021-06-01">
+    expires_after="2022-06-01">
   <owner>avi@chromium.org</owner>
   <owner>carlosil@chromium.org</owner>
   <owner>ericmill@google.com</owner>
@@ -17165,7 +17165,7 @@
 </histogram>
 
 <histogram name="TrustedWebActivity.LocationDelegationEnrolled" enum="Boolean"
-    expires_after="2021-06-30">
+    expires_after="2021-12-31">
   <owner>eirage@chromium.org</owner>
   <owner>peconn@chromium.org</owner>
   <summary>
@@ -17176,7 +17176,7 @@
 </histogram>
 
 <histogram name="TrustedWebActivity.LocationPermissionChanged"
-    enum="TrustedWebActivityPermissionChanged" expires_after="2021-06-30">
+    enum="TrustedWebActivityPermissionChanged" expires_after="2021-12-31">
   <owner>eirage@chromium.org</owner>
   <owner>peconn@chromium.org</owner>
   <summary>
@@ -17186,7 +17186,7 @@
 </histogram>
 
 <histogram name="TrustedWebActivity.LocationPermissionRequestIsGranted"
-    enum="Boolean" expires_after="2021-06-30">
+    enum="Boolean" expires_after="2021-12-31">
   <owner>eirage@chromium.org</owner>
   <owner>peconn@chromium.org</owner>
   <summary>
@@ -17196,7 +17196,7 @@
 </histogram>
 
 <histogram name="TrustedWebActivity.LocationUpdateErrorCode"
-    enum="TrustedWebActivityLocationErrorCode" expires_after="2021-06-30">
+    enum="TrustedWebActivityLocationErrorCode" expires_after="2021-12-31">
   <owner>eirage@chromium.org</owner>
   <owner>peconn@chromium.org</owner>
   <summary>
diff --git a/tools/metrics/histograms/histograms_xml/web_rtc/OWNER b/tools/metrics/histograms/histograms_xml/web_rtc/OWNERS
similarity index 100%
rename from tools/metrics/histograms/histograms_xml/web_rtc/OWNER
rename to tools/metrics/histograms/histograms_xml/web_rtc/OWNERS
diff --git a/tools/metrics/histograms/histograms_xml/web_rtc/histograms.xml b/tools/metrics/histograms/histograms_xml/web_rtc/histograms.xml
index b1127e7..6dba1828 100644
--- a/tools/metrics/histograms/histograms_xml/web_rtc/histograms.xml
+++ b/tools/metrics/histograms/histograms_xml/web_rtc/histograms.xml
@@ -1334,6 +1334,54 @@
   </summary>
 </histogram>
 
+<histogram name="WebRTC.PeerConnection.Duration.Network" units="microseconds"
+    expires_after="2022-05-24">
+  <owner>handellm@chromium.org</owner>
+  <owner>webrtc-dev@chromium.org</owner>
+  <summary>
+    Duration between the moment the WebRTC network thread's JingleThreadWrapper
+    begins running a task and the moment it ends executing it. It only measures
+    durations of tasks posted to rtc::Thread. Samples are acquired periodically
+    every several seconds by JingleThreadWrapper.
+
+    Warning: This metric does not include reports from clients with
+    low-resolution clocks (i.e. on Windows, ref.
+    |TimeTicks::IsHighResolution()|).
+  </summary>
+</histogram>
+
+<histogram name="WebRTC.PeerConnection.Duration.Signaling" units="microseconds"
+    expires_after="2022-05-24">
+  <owner>handellm@chromium.org</owner>
+  <owner>webrtc-dev@chromium.org</owner>
+  <summary>
+    Duration between the moment the WebRTC signaling thread's
+    JingleThreadWrapper begins running a task and the moment it ends executing
+    it. It only measures durations of tasks posted to rtc::Thread. Samples are
+    acquired periodically every several seconds by JingleThreadWrapper.
+
+    Warning: This metric does not include reports from clients with
+    low-resolution clocks (i.e. on Windows, ref.
+    |TimeTicks::IsHighResolution()|). solution.
+  </summary>
+</histogram>
+
+<histogram name="WebRTC.PeerConnection.Duration.Worker" units="microseconds"
+    expires_after="2022-05-24">
+  <owner>handellm@chromium.org</owner>
+  <owner>webrtc-dev@chromium.org</owner>
+  <summary>
+    Duration between the moment the WebRTC worker thread's JingleThreadWrapper
+    begins running a task and the moment it ends executing it. It only measures
+    durations of tasks posted to rtc::Thread. Samples are acquired periodically
+    every several seconds by JingleThreadWrapper.
+
+    Warning: This metric does not include reports from clients with
+    low-resolution clocks (i.e. on Windows, ref.
+    |TimeTicks::IsHighResolution()|).
+  </summary>
+</histogram>
+
 <histogram name="WebRTC.PeerConnection.IceRegatheringReason"
     enum="IceRegatheringReason" expires_after="M77">
   <owner>honghaiz@chromium.org</owner>
@@ -1432,6 +1480,54 @@
   </summary>
 </histogram>
 
+<histogram name="WebRTC.PeerConnection.Latency.Network" units="microseconds"
+    expires_after="2022-05-24">
+  <owner>handellm@chromium.org</owner>
+  <owner>webrtc-dev@chromium.org</owner>
+  <summary>
+    Latency defined as the duration between the moment a task is scheduled from
+    the WebRTC network thread's JingleThreadWrapper's task runner, and the
+    moment it begins running. Samples are acquired periodically every several
+    seconds by JingleThreadWrapper.
+
+    Warning: This metric does not include reports from clients with
+    low-resolution clocks (i.e. on Windows, ref.
+    |TimeTicks::IsHighResolution()|).
+  </summary>
+</histogram>
+
+<histogram name="WebRTC.PeerConnection.Latency.Signaling" units="microseconds"
+    expires_after="2022-05-24">
+  <owner>handellm@chromium.org</owner>
+  <owner>webrtc-dev@chromium.org</owner>
+  <summary>
+    Latency defined as the duration between the moment a task is scheduled from
+    the WebRTC signaling thread's JingleThreadWrapper's task runner, and the
+    moment it begins running. Samples are acquired periodically every several
+    seconds by JingleThreadWrapper.
+
+    Warning: This metric does not include reports from clients with
+    low-resolution clocks (i.e. on Windows, ref.
+    |TimeTicks::IsHighResolution()|).
+  </summary>
+</histogram>
+
+<histogram name="WebRTC.PeerConnection.Latency.Worker" units="microseconds"
+    expires_after="2022-05-24">
+  <owner>handellm@chromium.org</owner>
+  <owner>webrtc-dev@chromium.org</owner>
+  <summary>
+    Latency defined as the duration between the moment a task is scheduled from
+    the WebRTC worker thread's JingleThreadWrapper's task runner, and the moment
+    it begins running. Samples are acquired periodically every several seconds
+    by JingleThreadWrapper.
+
+    Warning: This metric does not include reports from clients with
+    low-resolution clocks (i.e. on Windows, ref.
+    |TimeTicks::IsHighResolution()|).
+  </summary>
+</histogram>
+
 <histogram name="WebRTC.PeerConnection.OfferExtmapAllowMixed"
     enum="PeerConnectionOfferExtmapAllowMixed" expires_after="2021-10-31">
   <owner>kron@chromium.org</owner>
diff --git a/tools/perf/core/perfetto_binary_roller/binary_deps.json b/tools/perf/core/perfetto_binary_roller/binary_deps.json
index f7a300c..7a4d33e 100644
--- a/tools/perf/core/perfetto_binary_roller/binary_deps.json
+++ b/tools/perf/core/perfetto_binary_roller/binary_deps.json
@@ -1,8 +1,8 @@
 {
     "trace_processor_shell": {
         "win": {
-            "hash": "049d18b9eeb01ade32054c7fc6396577623ec662",
-            "remote_path": "perfetto_binaries/trace_processor_shell/win/09ac375b1cd018988ad890c78b44f6731bf301dc/trace_processor_shell.exe"
+            "hash": "52184a61a6a75016c89d220de7d5a1507772dd07",
+            "remote_path": "perfetto_binaries/trace_processor_shell/win/00537760e451a2441306f4deca264a16022683b7/trace_processor_shell.exe"
         },
         "mac": {
             "hash": "4c0a11b9cc0ec3747addb5882ac42664a1cbe90e",
diff --git a/tools/traffic_annotation/summary/annotations.xml b/tools/traffic_annotation/summary/annotations.xml
index c412300..618872d 100644
--- a/tools/traffic_annotation/summary/annotations.xml
+++ b/tools/traffic_annotation/summary/annotations.xml
@@ -285,8 +285,6 @@
  <item id="remoting_telemetry_log_writer" added_in_milestone="86" hash_code="107268760" type="0" content_hash_code="81741595" os_list="linux,windows" file_path="remoting/base/telemetry_log_writer.cc"/>
  <item id="render_view_context_menu" added_in_milestone="62" hash_code="25844439" type="0" content_hash_code="69471170" os_list="linux,windows" file_path="chrome/browser/renderer_context_menu/render_view_context_menu.cc"/>
  <item id="renderer_initiated_download" added_in_milestone="62" hash_code="116443055" type="0" content_hash_code="37846436" os_list="linux,windows" file_path="content/browser/renderer_host/render_frame_host_impl.cc"/>
- <item id="repeatable_queries_deletion" added_in_milestone="88" hash_code="59980744" type="0" content_hash_code="9022058" os_list="linux,windows" file_path="components/search/repeatable_queries/repeatable_queries_service.cc"/>
- <item id="repeatable_queries_service" added_in_milestone="88" hash_code="5394442" type="0" content_hash_code="115294794" os_list="linux,windows" file_path="components/search/repeatable_queries/repeatable_queries_service.cc"/>
  <item id="reporting" added_in_milestone="62" hash_code="109891200" type="0" content_hash_code="125758928" os_list="linux,windows" file_path="net/reporting/reporting_uploader.cc"/>
  <item id="resource_dispatcher_host" added_in_milestone="62" hash_code="81157007" type="0" deprecated="2019-07-30" content_hash_code="35725167" file_path=""/>
  <item id="resource_prefetch" added_in_milestone="62" hash_code="110815970" type="0" deprecated="2018-02-28" content_hash_code="39251261" file_path=""/>
diff --git a/tools/traffic_annotation/summary/grouping.xml b/tools/traffic_annotation/summary/grouping.xml
index 897e332..78fab98 100644
--- a/tools/traffic_annotation/summary/grouping.xml
+++ b/tools/traffic_annotation/summary/grouping.xml
@@ -409,8 +409,6 @@
       <traffic_annotation unique_id="popular_sites_fetch"/>
       <traffic_annotation unique_id="search_suggest_service"/>
       <traffic_annotation unique_id="remote_suggestions_provider"/>
-      <traffic_annotation unique_id="repeatable_queries_deletion"/>
-      <traffic_annotation unique_id="repeatable_queries_service"/>
       <traffic_annotation unique_id="promo_service"/>
       <traffic_annotation unique_id="task_module_service"/>
     </sender>
diff --git a/ui/accessibility/PRESUBMIT.py b/ui/accessibility/PRESUBMIT.py
index e61f4cb..5f5d0be 100644
--- a/ui/accessibility/PRESUBMIT.py
+++ b/ui/accessibility/PRESUBMIT.py
@@ -6,6 +6,8 @@
 
 import os, re, json
 
+USE_PYTHON3 = True
+
 AX_MOJOM = 'ui/accessibility/ax_enums.mojom'
 AUTOMATION_IDL = 'extensions/common/api/automation.idl'
 
diff --git a/ui/accessibility/ax_generated_tree_unittest.cc b/ui/accessibility/ax_generated_tree_unittest.cc
index d099a095..14f7684 100644
--- a/ui/accessibility/ax_generated_tree_unittest.cc
+++ b/ui/accessibility/ax_generated_tree_unittest.cc
@@ -5,7 +5,7 @@
 #include <memory>
 #include <numeric>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "base/strings/string_number_conversions.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/accessibility/ax_event_generator.h"
diff --git a/ui/accessibility/platform/inspect/ax_inspect_utils_auralinux.cc b/ui/accessibility/platform/inspect/ax_inspect_utils_auralinux.cc
index 95576e9..882ef04e 100644
--- a/ui/accessibility/platform/inspect/ax_inspect_utils_auralinux.cc
+++ b/ui/accessibility/platform/inspect/ax_inspect_utils_auralinux.cc
@@ -4,8 +4,8 @@
 
 #include "ui/accessibility/platform/inspect/ax_inspect_utils_auralinux.h"
 
+#include "base/cxx17_backports.h"
 #include "base/logging.h"
-#include "base/stl_util.h"
 #include "base/strings/pattern.h"
 #include "ui/accessibility/platform/inspect/ax_inspect.h"
 
diff --git a/ui/accessibility/platform/inspect/ax_inspect_utils_win.cc b/ui/accessibility/platform/inspect/ax_inspect_utils_win.cc
index c98ad27..0e047965 100644
--- a/ui/accessibility/platform/inspect/ax_inspect_utils_win.cc
+++ b/ui/accessibility/platform/inspect/ax_inspect_utils_win.cc
@@ -9,9 +9,9 @@
 #include <map>
 #include <string>
 
+#include "base/cxx17_backports.h"
 #include "base/logging.h"
 #include "base/memory/singleton.h"
-#include "base/stl_util.h"
 #include "base/strings/pattern.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
diff --git a/ui/aura/BUILD.gn b/ui/aura/BUILD.gn
index 92de86a..052ce8b 100644
--- a/ui/aura/BUILD.gn
+++ b/ui/aura/BUILD.gn
@@ -138,6 +138,7 @@
     "//ui/base/dragdrop:types",
     "//ui/base/dragdrop/mojom:mojom_headers",
     "//ui/base/ime",
+    "//ui/base/metadata",
     "//ui/compositor",
   ]
 
diff --git a/ui/base/BUILD.gn b/ui/base/BUILD.gn
index 2939b20..a6b72124 100644
--- a/ui/base/BUILD.gn
+++ b/ui/base/BUILD.gn
@@ -119,16 +119,6 @@
     "l10n/time_format.h",
     "layout.cc",
     "layout.h",
-    "metadata/base_type_conversion.cc",
-    "metadata/base_type_conversion.h",
-    "metadata/metadata_cache.cc",
-    "metadata/metadata_cache.h",
-    "metadata/metadata_header_macros.h",
-    "metadata/metadata_impl_macros.h",
-    "metadata/metadata_macros_internal.h",
-    "metadata/metadata_types.cc",
-    "metadata/metadata_types.h",
-    "metadata/property_metadata.h",
     "models/button_menu_item_model.cc",
     "models/button_menu_item_model.h",
     "models/combobox_model.cc",
@@ -899,8 +889,6 @@
     "l10n/l10n_util_unittest.cc",
     "l10n/time_format_unittest.cc",
     "layout_unittest.cc",
-    "metadata/base_type_conversion_unittest.cc",
-    "metadata/metadata_unittest.cc",
     "models/image_model_unittest.cc",
     "models/simple_combobox_model_unittest.cc",
     "models/simple_menu_model_unittest.cc",
@@ -972,6 +960,7 @@
     "//ui/base/clipboard:file_info",
     "//ui/base/cursor:unittests",
     "//ui/base/data_transfer_policy:unittests",
+    "//ui/base/metadata:metadata_tests",
     "//ui/base/prediction:prediction",
     "//ui/display",
     "//ui/events:events_base",
diff --git a/ui/base/accelerators/accelerator_manager_unittest.cc b/ui/base/accelerators/accelerator_manager_unittest.cc
index 701c651..99b8194 100644
--- a/ui/base/accelerators/accelerator_manager_unittest.cc
+++ b/ui/base/accelerators/accelerator_manager_unittest.cc
@@ -4,7 +4,7 @@
 
 #include "ui/base/accelerators/accelerator_manager.h"
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "base/test/scoped_feature_list.h"
 #include "build/chromeos_buildflags.h"
 #include "testing/gtest/include/gtest/gtest.h"
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 3b9a42f..83ab48f 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,7 @@
 
 #include <stddef.h>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace ui {
diff --git a/ui/base/clipboard/clipboard_util_win.cc b/ui/base/clipboard/clipboard_util_win.cc
index 747923c..8deef065 100644
--- a/ui/base/clipboard/clipboard_util_win.cc
+++ b/ui/base/clipboard/clipboard_util_win.cc
@@ -11,9 +11,9 @@
 #include <limits>
 #include <utility>
 
+#include "base/cxx17_backports.h"
 #include "base/files/file_util.h"
 #include "base/logging.h"
-#include "base/stl_util.h"
 #include "base/strings/string_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/strings/sys_string_conversions.h"
diff --git a/ui/base/cursor/cursors_aura.cc b/ui/base/cursor/cursors_aura.cc
index 3633161e..815e5a0 100644
--- a/ui/base/cursor/cursors_aura.cc
+++ b/ui/base/cursor/cursors_aura.cc
@@ -6,7 +6,7 @@
 
 #include <stddef.h>
 
-#include "base/stl_util.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"
diff --git a/ui/base/dragdrop/os_exchange_data_provider_win.cc b/ui/base/dragdrop/os_exchange_data_provider_win.cc
index e6d06aa..38dab99 100644
--- a/ui/base/dragdrop/os_exchange_data_provider_win.cc
+++ b/ui/base/dragdrop/os_exchange_data_provider_win.cc
@@ -18,12 +18,12 @@
 #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"
 #include "base/notreached.h"
 #include "base/pickle.h"
-#include "base/stl_util.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/win/scoped_hdc.h"
diff --git a/ui/base/ime/PRESUBMIT.py b/ui/base/ime/PRESUBMIT.py
index e9f33bbe..9bfd2f3 100644
--- a/ui/base/ime/PRESUBMIT.py
+++ b/ui/base/ime/PRESUBMIT.py
@@ -11,6 +11,8 @@
 import filecmp
 import os
 
+USE_PYTHON3 = True
+
 CHARACTER_COMPOSER_DATA_SOURCES=['character_composer_sequences.txt']
 CHARACTER_COMPOSER_DATA_HEADER='character_composer_data.h'
 CHARACTER_COMPOSER_DATA_GENERATOR='generate_character_composer_data.py'
@@ -18,10 +20,9 @@
 def CheckCharacterComposerData(input_api, output_api):
   results = []
   whereami = input_api.PresubmitLocalPath()
-  files = map(lambda x: input_api.os_path.join(whereami, x),
-              (CHARACTER_COMPOSER_DATA_SOURCES +
-               [CHARACTER_COMPOSER_DATA_HEADER,
-                CHARACTER_COMPOSER_DATA_GENERATOR]))
+  files = [input_api.os_path.join(whereami, x) for x in
+           CHARACTER_COMPOSER_DATA_SOURCES +
+           [CHARACTER_COMPOSER_DATA_HEADER, CHARACTER_COMPOSER_DATA_GENERATOR]]
 
   if not input_api.AffectedFiles(
     file_filter=lambda x: x.AbsoluteLocalPath() in files):
diff --git a/ui/base/ime/chromeos/input_method_util.cc b/ui/base/ime/chromeos/input_method_util.cc
index 4f60fce9..d016cc18 100644
--- a/ui/base/ime/chromeos/input_method_util.cc
+++ b/ui/base/ime/chromeos/input_method_util.cc
@@ -13,8 +13,8 @@
 #include <unordered_set>
 #include <utility>
 
+#include "base/cxx17_backports.h"
 #include "base/logging.h"
-#include "base/stl_util.h"
 #include "base/strings/string_split.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
diff --git a/ui/base/ime/chromeos/input_method_util_unittest.cc b/ui/base/ime/chromeos/input_method_util_unittest.cc
index 09b4113..ea8dfcb 100644
--- a/ui/base/ime/chromeos/input_method_util_unittest.cc
+++ b/ui/base/ime/chromeos/input_method_util_unittest.cc
@@ -10,7 +10,7 @@
 #include <string>
 
 #include "base/bind.h"
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "base/strings/utf_string_conversions.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/base/ime/chromeos/extension_ime_util.h"
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 3d37d710..a4ecf86 100644
--- a/ui/base/ime/linux/composition_text_util_pango_unittest.cc
+++ b/ui/base/ime/linux/composition_text_util_pango_unittest.cc
@@ -11,8 +11,8 @@
 #include <string>
 #include <utility>
 
+#include "base/cxx17_backports.h"
 #include "base/notreached.h"
-#include "base/stl_util.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/base/ime/composition_text.h"
 
diff --git a/ui/base/ime/mojom/ime_mojom_traits_unittest.cc b/ui/base/ime/mojom/ime_mojom_traits_unittest.cc
index d20b916..3b1f587 100644
--- a/ui/base/ime/mojom/ime_mojom_traits_unittest.cc
+++ b/ui/base/ime/mojom/ime_mojom_traits_unittest.cc
@@ -6,7 +6,7 @@
 
 #include <utility>
 
-#include "base/stl_util.h"
+#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"
diff --git a/ui/base/ime/win/tsf_bridge.cc b/ui/base/ime/win/tsf_bridge.cc
index a4d9ab0..a4fa3df 100644
--- a/ui/base/ime/win/tsf_bridge.cc
+++ b/ui/base/ime/win/tsf_bridge.cc
@@ -6,10 +6,10 @@
 
 #include <map>
 
+#include "base/cxx17_backports.h"
 #include "base/logging.h"
 #include "base/memory/ref_counted.h"
 #include "base/no_destructor.h"
-#include "base/stl_util.h"
 #include "base/task/current_thread.h"
 #include "base/threading/thread_local_storage.h"
 #include "base/trace_event/trace_event.h"
diff --git a/ui/base/ime/win/tsf_text_store_unittest.cc b/ui/base/ime/win/tsf_text_store_unittest.cc
index 77132609..96480da1 100644
--- a/ui/base/ime/win/tsf_text_store_unittest.cc
+++ b/ui/base/ime/win/tsf_text_store_unittest.cc
@@ -12,8 +12,8 @@
 
 #include <vector>
 
+#include "base/cxx17_backports.h"
 #include "base/memory/ref_counted.h"
-#include "base/stl_util.h"
 #include "base/win/scoped_com_initializer.h"
 #include "base/win/scoped_variant.h"
 #include "build/build_config.h"
diff --git a/ui/base/l10n/l10n_util.cc b/ui/base/l10n/l10n_util.cc
index 897c5b8..07d38591e 100644
--- a/ui/base/l10n/l10n_util.cc
+++ b/ui/base/l10n/l10n_util.cc
@@ -13,6 +13,7 @@
 #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"
@@ -23,7 +24,6 @@
 #include "base/logging.h"
 #include "base/no_destructor.h"
 #include "base/notreached.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_split.h"
 #include "base/strings/string_util.h"
diff --git a/ui/base/l10n/l10n_util_unittest.cc b/ui/base/l10n/l10n_util_unittest.cc
index 100e40fe..172ac07 100644
--- a/ui/base/l10n/l10n_util_unittest.cc
+++ b/ui/base/l10n/l10n_util_unittest.cc
@@ -8,13 +8,13 @@
 #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"
 #include "base/i18n/rtl.h"
 #include "base/i18n/time_formatting.h"
 #include "base/path_service.h"
-#include "base/stl_util.h"
 #include "base/strings/pattern.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
diff --git a/ui/base/metadata/BUILD.gn b/ui/base/metadata/BUILD.gn
new file mode 100644
index 0000000..642cf00d
--- /dev/null
+++ b/ui/base/metadata/BUILD.gn
@@ -0,0 +1,61 @@
+# Copyright 2021 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//build/buildflag_header.gni")
+import("//testing/test.gni")
+
+source_set("metadata_headers") {
+  sources = [
+    "base_type_conversion.h",
+    "metadata_cache.h",
+    "metadata_header_macros.h",
+    "metadata_impl_macros.h",
+    "metadata_macros_internal.h",
+    "metadata_types.h",
+    "property_metadata.h",
+  ]
+
+  public_deps = [
+    "//base:base",
+    "//skia:skia",
+    "//ui/base",
+    "//ui/gfx",
+    "//url",
+  ]
+}
+
+component("metadata") {
+  sources = [
+    "base_type_conversion.cc",
+    "metadata_cache.cc",
+    "metadata_types.cc",
+  ]
+
+  defines = [ "IS_UI_BASE_METADATA_IMPL" ]
+
+  deps = [
+    "//skia:skia",
+    "//ui/gfx:color_utils",
+  ]
+
+  public_deps = [ ":metadata_headers" ]
+}
+
+source_set("metadata_tests") {
+  testonly = true
+
+  sources = [
+    "base_type_conversion_unittest.cc",
+    "metadata_unittest.cc",
+  ]
+
+  deps = [
+    ":metadata",
+    "//base/test:test_support",
+    "//skia:skia",
+    "//testing/gtest",
+    "//ui/gfx:color_utils",
+    "//ui/gfx:test_support",
+  ]
+}
diff --git a/ui/base/metadata/base_type_conversion.h b/ui/base/metadata/base_type_conversion.h
index 3262802f..6bf3db2 100644
--- a/ui/base/metadata/base_type_conversion.h
+++ b/ui/base/metadata/base_type_conversion.h
@@ -62,8 +62,8 @@
                               T,
                               const T&>::type;
 
-COMPONENT_EXPORT(UI_BASE) extern const char kNoPrefix[];
-COMPONENT_EXPORT(UI_BASE) extern const char kSkColorPrefix[];
+COMPONENT_EXPORT(UI_BASE_METADATA) extern const char kNoPrefix[];
+COMPONENT_EXPORT(UI_BASE_METADATA) extern const char kSkColorPrefix[];
 
 // General Type Conversion Template Functions ---------------------------------
 template <bool serializable,
@@ -184,12 +184,12 @@
 
 // String Conversions ---------------------------------------------------------
 
-COMPONENT_EXPORT(UI_BASE)
+COMPONENT_EXPORT(UI_BASE_METADATA)
 std::u16string PointerToString(const void* pointer_val);
 
 #define DECLARE_CONVERSIONS(T)                                               \
   template <>                                                                \
-  struct COMPONENT_EXPORT(UI_BASE)                                           \
+  struct COMPONENT_EXPORT(UI_BASE_METADATA)                                  \
       TypeConverter<T> : BaseTypeConverter<true> {                           \
     static std::u16string ToString(ArgType<T> source_value);                 \
     static absl::optional<T> FromString(const std::u16string& source_value); \
@@ -225,7 +225,8 @@
 #undef DECLARE_CONVERSIONS
 
 template <>
-struct COMPONENT_EXPORT(UI_BASE) TypeConverter<bool> : BaseTypeConverter<true> {
+struct COMPONENT_EXPORT(UI_BASE_METADATA) TypeConverter<bool>
+    : BaseTypeConverter<true> {
   static std::u16string ToString(bool source_value);
   static absl::optional<bool> FromString(const std::u16string& source_value);
   static ValidStrings GetValidStrings();
@@ -233,7 +234,7 @@
 
 // Special conversions for wrapper types --------------------------------------
 
-COMPONENT_EXPORT(UI_BASE) const std::u16string& GetNullOptStr();
+COMPONENT_EXPORT(UI_BASE_METADATA) const std::u16string& GetNullOptStr();
 
 template <typename T>
 struct TypeConverter<absl::optional<T>>
@@ -316,7 +317,8 @@
 MAKE_TYPE_UNIQUE(SkColor);
 
 template <>
-struct COMPONENT_EXPORT(UI_BASE) TypeConverter<UNIQUE_TYPE_NAME(SkColor)>
+struct COMPONENT_EXPORT(UI_BASE_METADATA)
+    TypeConverter<UNIQUE_TYPE_NAME(SkColor)>
     : BaseTypeConverter<true, false, kSkColorPrefix> {
   static std::u16string ToString(SkColor source_value);
   static absl::optional<SkColor> FromString(const std::u16string& source_value);
@@ -370,9 +372,12 @@
 }  // namespace metadata
 }  // namespace ui
 
-EXPORT_ENUM_CONVERTERS(gfx::HorizontalAlignment, COMPONENT_EXPORT(UI_BASE))
-EXPORT_ENUM_CONVERTERS(gfx::VerticalAlignment, COMPONENT_EXPORT(UI_BASE))
-EXPORT_ENUM_CONVERTERS(gfx::ElideBehavior, COMPONENT_EXPORT(UI_BASE))
-EXPORT_ENUM_CONVERTERS(ui::MenuSeparatorType, COMPONENT_EXPORT(UI_BASE))
+EXPORT_ENUM_CONVERTERS(gfx::HorizontalAlignment,
+                       COMPONENT_EXPORT(UI_BASE_METADATA))
+EXPORT_ENUM_CONVERTERS(gfx::VerticalAlignment,
+                       COMPONENT_EXPORT(UI_BASE_METADATA))
+EXPORT_ENUM_CONVERTERS(gfx::ElideBehavior, COMPONENT_EXPORT(UI_BASE_METADATA))
+EXPORT_ENUM_CONVERTERS(ui::MenuSeparatorType,
+                       COMPONENT_EXPORT(UI_BASE_METADATA))
 
 #endif  // UI_BASE_METDATA_BASE_TYPE_CONVERSION_H_
\ No newline at end of file
diff --git a/ui/base/metadata/base_type_conversion_unittest.cc b/ui/base/metadata/base_type_conversion_unittest.cc
index d4d1288..287d085 100644
--- a/ui/base/metadata/base_type_conversion_unittest.cc
+++ b/ui/base/metadata/base_type_conversion_unittest.cc
@@ -11,7 +11,6 @@
 #include "testing/platform_test.h"
 #include "ui/gfx/geometry/insets.h"
 #include "ui/gfx/geometry/rect.h"
-//#include "ui/views/controls/button/button.h"
 
 using TypeConversionTest = PlatformTest;
 
diff --git a/ui/base/metadata/metadata_cache.h b/ui/base/metadata/metadata_cache.h
index 70ceaa6e..24fe0c79 100644
--- a/ui/base/metadata/metadata_cache.h
+++ b/ui/base/metadata/metadata_cache.h
@@ -23,7 +23,7 @@
 // MetaDataCache is implemented as a singleton. This also implies that each
 // instance of ClassMetaData registered into the cache represents one and only
 // one class type.
-class COMPONENT_EXPORT(UI_BASE) MetaDataCache {
+class COMPONENT_EXPORT(UI_BASE_METADATA) MetaDataCache {
  public:
   MetaDataCache();
 
@@ -46,7 +46,7 @@
 //
 // Registers the class metadata into the global cache. Will DCHECK if the
 // metadata for a class is already registered.
-COMPONENT_EXPORT(UI_BASE)
+COMPONENT_EXPORT(UI_BASE_METADATA)
 void RegisterClassInfo(std::unique_ptr<ClassMetaData> meta_data);
 
 // Help function for creating and registering the metadata container into the
diff --git a/ui/base/metadata/metadata_types.h b/ui/base/metadata/metadata_types.h
index db631ee0..850993c 100644
--- a/ui/base/metadata/metadata_types.h
+++ b/ui/base/metadata/metadata_types.h
@@ -35,13 +35,13 @@
   kSerializable = 0x100,
 };
 
-COMPONENT_EXPORT(UI_BASE)
+COMPONENT_EXPORT(UI_BASE_METADATA)
 extern PropertyFlags operator|(PropertyFlags op1, PropertyFlags op2);
-COMPONENT_EXPORT(UI_BASE)
+COMPONENT_EXPORT(UI_BASE_METADATA)
 extern PropertyFlags operator&(PropertyFlags op1, PropertyFlags op2);
-COMPONENT_EXPORT(UI_BASE)
+COMPONENT_EXPORT(UI_BASE_METADATA)
 extern PropertyFlags operator^(PropertyFlags op1, PropertyFlags op2);
-COMPONENT_EXPORT(UI_BASE) extern bool operator!(PropertyFlags op);
+COMPONENT_EXPORT(UI_BASE_METADATA) extern bool operator!(PropertyFlags op);
 
 // Used to identify the CallbackList<> within the PropertyChangedVectors map.
 using PropertyKey = const void*;
@@ -53,7 +53,7 @@
 // metadata_header_macros.h). GetClassMetaData() is automatically overridden and
 // implemented in the relevant macros, so a class must merely have
 // MetaDataProvider somewhere in its ancestry.
-class COMPONENT_EXPORT(UI_BASE) MetaDataProvider {
+class COMPONENT_EXPORT(UI_BASE_METADATA) MetaDataProvider {
  public:
   MetaDataProvider();
   virtual ~MetaDataProvider();
@@ -79,7 +79,7 @@
 // macros in ui/base/metadata/metadata_impl_macros.h, a descendant of this
 // class is declared within the scope of the containing class. See information
 // about using the macros in the comment for the views::View class.
-class COMPONENT_EXPORT(UI_BASE) ClassMetaData {
+class COMPONENT_EXPORT(UI_BASE_METADATA) ClassMetaData {
  public:
   ClassMetaData();
   ClassMetaData(std::string file, int line);
@@ -111,7 +111,7 @@
   //    for(views::MemberMetaDataBase* member : class_meta_data) {
   //      OperateOn(member);
   //    }
-  class COMPONENT_EXPORT(UI_BASE) ClassMemberIterator
+  class COMPONENT_EXPORT(UI_BASE_METADATA) ClassMemberIterator
       : public std::iterator<std::forward_iterator_tag, MemberMetaDataBase*> {
    public:
     ClassMemberIterator(const ClassMemberIterator& other);
@@ -165,7 +165,7 @@
 // Abstract base class to represent meta data about class members.
 // Provides basic information (such as the name of the member), and templated
 // accessors to get/set the value of the member on an object.
-class COMPONENT_EXPORT(UI_BASE) MemberMetaDataBase {
+class COMPONENT_EXPORT(UI_BASE_METADATA) MemberMetaDataBase {
  public:
   using ValueStrings = std::vector<std::u16string>;
   MemberMetaDataBase(const std::string& member_name,
diff --git a/ui/base/resource/resource_bundle_unittest.cc b/ui/base/resource/resource_bundle_unittest.cc
index 3bc0488..bf5818d 100644
--- a/ui/base/resource/resource_bundle_unittest.cc
+++ b/ui/base/resource/resource_bundle_unittest.cc
@@ -11,11 +11,11 @@
 #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"
 #include "base/memory/ref_counted_memory.h"
-#include "base/stl_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "build/build_config.h"
 #include "build/chromeos_buildflags.h"
diff --git a/ui/base/resource/scale_factor.cc b/ui/base/resource/scale_factor.cc
index aa52f48..9be5c96 100644
--- a/ui/base/resource/scale_factor.cc
+++ b/ui/base/resource/scale_factor.cc
@@ -4,7 +4,7 @@
 
 #include "ui/base/resource/scale_factor.h"
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 
 namespace ui {
 
diff --git a/ui/base/template_expressions.cc b/ui/base/template_expressions.cc
index c28d58d..48630ab1 100644
--- a/ui/base/template_expressions.cc
+++ b/ui/base/template_expressions.cc
@@ -9,7 +9,7 @@
 #include <ostream>
 
 #include "base/check_op.h"
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "base/strings/string_piece.h"
 #include "base/values.h"
 #include "build/chromeos_buildflags.h"
diff --git a/ui/base/text/bytes_formatting.cc b/ui/base/text/bytes_formatting.cc
index 69380ebe..7cceda67 100644
--- a/ui/base/text/bytes_formatting.cc
+++ b/ui/base/text/bytes_formatting.cc
@@ -5,9 +5,9 @@
 #include "ui/base/text/bytes_formatting.h"
 
 #include "base/check.h"
+#include "base/cxx17_backports.h"
 #include "base/i18n/number_formatting.h"
 #include "base/notreached.h"
-#include "base/stl_util.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "ui/base/l10n/l10n_util.h"
diff --git a/ui/base/text/bytes_formatting_unittest.cc b/ui/base/text/bytes_formatting_unittest.cc
index eba17547..5bb2c46d 100644
--- a/ui/base/text/bytes_formatting_unittest.cc
+++ b/ui/base/text/bytes_formatting_unittest.cc
@@ -5,7 +5,7 @@
 #include <stddef.h>
 #include <stdint.h>
 
-#include "base/stl_util.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"
diff --git a/ui/base/x/visual_picker_glx.cc b/ui/base/x/visual_picker_glx.cc
index 349598fd..99c23af 100644
--- a/ui/base/x/visual_picker_glx.cc
+++ b/ui/base/x/visual_picker_glx.cc
@@ -10,8 +10,8 @@
 #include <numeric>
 #include <vector>
 
+#include "base/cxx17_backports.h"
 #include "base/memory/singleton.h"
-#include "base/stl_util.h"
 #include "ui/gfx/x/future.h"
 
 // These constants are obtained from GL/glx.h and GL/glxext.h.
diff --git a/ui/base/x/x11_cursor_loader.cc b/ui/base/x/x11_cursor_loader.cc
index 90a486cd..b45ee03d 100644
--- a/ui/base/x/x11_cursor_loader.cc
+++ b/ui/base/x/x11_cursor_loader.cc
@@ -11,6 +11,7 @@
 
 #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"
@@ -18,7 +19,6 @@
 #include "base/memory/scoped_refptr.h"
 #include "base/no_destructor.h"
 #include "base/sequence_checker.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_piece_forward.h"
 #include "base/strings/string_split.h"
diff --git a/ui/base/x/x11_global_shortcut_listener.cc b/ui/base/x/x11_global_shortcut_listener.cc
index 658c04c..a7726661 100644
--- a/ui/base/x/x11_global_shortcut_listener.cc
+++ b/ui/base/x/x11_global_shortcut_listener.cc
@@ -7,7 +7,7 @@
 #include <stddef.h>
 
 #include "base/containers/contains.h"
-#include "base/stl_util.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"
diff --git a/ui/chromeos/events/event_rewriter_chromeos.cc b/ui/chromeos/events/event_rewriter_chromeos.cc
index 20c9911..4d44676 100644
--- a/ui/chromeos/events/event_rewriter_chromeos.cc
+++ b/ui/chromeos/events/event_rewriter_chromeos.cc
@@ -8,12 +8,12 @@
 #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"
 #include "base/logging.h"
 #include "base/metrics/user_metrics.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_split.h"
 #include "base/strings/string_util.h"
diff --git a/ui/display/manager/configure_displays_task.cc b/ui/display/manager/configure_displays_task.cc
index b679a30..4cc919d 100644
--- a/ui/display/manager/configure_displays_task.cc
+++ b/ui/display/manager/configure_displays_task.cc
@@ -10,11 +10,11 @@
 #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"
 #include "base/numerics/safe_conversions.h"
-#include "base/stl_util.h"
 #include "ui/display/manager/display_util.h"
 #include "ui/display/types/display_configuration_params.h"
 #include "ui/display/types/display_constants.h"
diff --git a/ui/display/manager/display_change_observer.cc b/ui/display/manager/display_change_observer.cc
index 6d9812b..cc411b2d 100644
--- a/ui/display/manager/display_change_observer.cc
+++ b/ui/display/manager/display_change_observer.cc
@@ -14,7 +14,7 @@
 
 #include "base/check_op.h"
 #include "base/command_line.h"
-#include "base/stl_util.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"
diff --git a/ui/display/manager/display_configurator_unittest.cc b/ui/display/manager/display_configurator_unittest.cc
index 2d6436d39..424b37d 100644
--- a/ui/display/manager/display_configurator_unittest.cc
+++ b/ui/display/manager/display_configurator_unittest.cc
@@ -10,8 +10,8 @@
 #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/stl_util.h"
 #include "base/test/scoped_feature_list.h"
 #include "base/test/task_environment.h"
 #include "testing/gtest/include/gtest/gtest.h"
diff --git a/ui/display/util/edid_parser_unittest.cc b/ui/display/util/edid_parser_unittest.cc
index 3cd32dd9..26f61e58 100644
--- a/ui/display/util/edid_parser_unittest.cc
+++ b/ui/display/util/edid_parser_unittest.cc
@@ -9,8 +9,8 @@
 #include <memory>
 
 #include "base/containers/flat_set.h"
+#include "base/cxx17_backports.h"
 #include "base/numerics/ranges.h"
-#include "base/stl_util.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/skia/include/core/SkColorSpace.h"
 #include "ui/display/types/display_constants.h"
diff --git a/ui/events/blink/blink_event_util_unittest.cc b/ui/events/blink/blink_event_util_unittest.cc
index 4f77db75..499d404 100644
--- a/ui/events/blink/blink_event_util_unittest.cc
+++ b/ui/events/blink/blink_event_util_unittest.cc
@@ -4,7 +4,7 @@
 
 #include "ui/events/blink/blink_event_util.h"
 
-#include "base/stl_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"
diff --git a/ui/events/blink/web_input_event_unittest.cc b/ui/events/blink/web_input_event_unittest.cc
index e655f2d..20e5cf97 100644
--- a/ui/events/blink/web_input_event_unittest.cc
+++ b/ui/events/blink/web_input_event_unittest.cc
@@ -7,7 +7,7 @@
 #include <cstddef>
 #include <cstdint>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "base/test/scoped_feature_list.h"
 #include "build/build_config.h"
 #include "testing/gtest/include/gtest/gtest.h"
diff --git a/ui/events/devices/x11/device_data_manager_x11.cc b/ui/events/devices/x11/device_data_manager_x11.cc
index 7862486..fbdd298 100644
--- a/ui/events/devices/x11/device_data_manager_x11.cc
+++ b/ui/events/devices/x11/device_data_manager_x11.cc
@@ -11,9 +11,9 @@
 #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/stl_util.h"
 #include "base/system/sys_info.h"
 #include "base/version.h"
 #include "build/build_config.h"
diff --git a/ui/events/event_processor_unittest.cc b/ui/events/event_processor_unittest.cc
index db597f93..6054a92 100644
--- a/ui/events/event_processor_unittest.cc
+++ b/ui/events/event_processor_unittest.cc
@@ -5,8 +5,8 @@
 #include <utility>
 #include <vector>
 
+#include "base/cxx17_backports.h"
 #include "base/memory/ptr_util.h"
-#include "base/stl_util.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/events/event.h"
 #include "ui/events/event_target_iterator.h"
diff --git a/ui/events/event_unittest.cc b/ui/events/event_unittest.cc
index ade042b..86f4ac1 100644
--- a/ui/events/event_unittest.cc
+++ b/ui/events/event_unittest.cc
@@ -11,7 +11,7 @@
 #include <memory>
 #include <string>
 
-#include "base/stl_util.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"
diff --git a/ui/events/keycodes/dom/dom_keyboard_layout.cc b/ui/events/keycodes/dom/dom_keyboard_layout.cc
index 4ddac90e..753372a 100644
--- a/ui/events/keycodes/dom/dom_keyboard_layout.cc
+++ b/ui/events/keycodes/dom/dom_keyboard_layout.cc
@@ -4,7 +4,7 @@
 
 #include "ui/events/keycodes/dom/dom_keyboard_layout.h"
 
-#include "base/stl_util.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"
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 0e7592c1..950c9c9e 100644
--- a/ui/events/keycodes/dom/dom_keyboard_layout_map_unittest.cc
+++ b/ui/events/keycodes/dom/dom_keyboard_layout_map_unittest.cc
@@ -7,9 +7,9 @@
 
 #include "base/check_op.h"
 #include "base/containers/flat_map.h"
+#include "base/cxx17_backports.h"
 #include "base/macros.h"
 #include "base/notreached.h"
-#include "base/stl_util.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/events/keycodes/dom/dom_key.h"
 #include "ui/events/keycodes/dom/dom_keyboard_layout.h"
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 2df81649..a6bfb9f9 100644
--- a/ui/events/keycodes/dom/dom_keyboard_layout_map_win.cc
+++ b/ui/events/keycodes/dom/dom_keyboard_layout_map_win.cc
@@ -11,9 +11,9 @@
 
 #include "base/check_op.h"
 #include "base/containers/flat_map.h"
+#include "base/cxx17_backports.h"
 #include "base/logging.h"
 #include "base/macros.h"
-#include "base/stl_util.h"
 #include "ui/events/keycodes/dom/dom_code.h"
 #include "ui/events/keycodes/dom/dom_key.h"
 #include "ui/events/keycodes/dom/dom_keyboard_layout_map_base.h"
diff --git a/ui/events/keycodes/dom/keycode_converter.cc b/ui/events/keycodes/dom/keycode_converter.cc
index 4c3881b..0ee71ce 100644
--- a/ui/events/keycodes/dom/keycode_converter.cc
+++ b/ui/events/keycodes/dom/keycode_converter.cc
@@ -4,8 +4,8 @@
 
 #include "ui/events/keycodes/dom/keycode_converter.h"
 
+#include "base/cxx17_backports.h"
 #include "base/logging.h"
-#include "base/stl_util.h"
 #include "base/strings/utf_string_conversion_utils.h"
 #include "build/build_config.h"
 #include "ui/events/keycodes/dom/dom_code.h"
diff --git a/ui/events/keycodes/dom/keycode_converter_unittest.cc b/ui/events/keycodes/dom/keycode_converter_unittest.cc
index 8080b18..3d939e57 100644
--- a/ui/events/keycodes/dom/keycode_converter_unittest.cc
+++ b/ui/events/keycodes/dom/keycode_converter_unittest.cc
@@ -10,7 +10,7 @@
 #include <map>
 #include <set>
 
-#include "base/stl_util.h"
+#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"
diff --git a/ui/events/keycodes/keyboard_code_conversion.cc b/ui/events/keycodes/keyboard_code_conversion.cc
index dad614b..204414ae4 100644
--- a/ui/events/keycodes/keyboard_code_conversion.cc
+++ b/ui/events/keycodes/keyboard_code_conversion.cc
@@ -6,7 +6,7 @@
 
 #include <algorithm>
 
-#include "base/stl_util.h"
+#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"
diff --git a/ui/events/keycodes/keyboard_code_conversion_x.cc b/ui/events/keycodes/keyboard_code_conversion_x.cc
index 4bd961d..67e5579 100644
--- a/ui/events/keycodes/keyboard_code_conversion_x.cc
+++ b/ui/events/keycodes/keyboard_code_conversion_x.cc
@@ -8,8 +8,8 @@
 
 #include <algorithm>
 
+#include "base/cxx17_backports.h"
 #include "base/logging.h"
-#include "base/stl_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/strings/sys_string_conversions.h"
 #include "base/strings/utf_string_conversions.h"
diff --git a/ui/events/keycodes/keysym_to_unicode.cc b/ui/events/keycodes/keysym_to_unicode.cc
index 320ed5e..7d21e40 100644
--- a/ui/events/keycodes/keysym_to_unicode.cc
+++ b/ui/events/keycodes/keysym_to_unicode.cc
@@ -6,8 +6,8 @@
 
 #include <stddef.h>
 
+#include "base/cxx17_backports.h"
 #include "base/lazy_instance.h"
-#include "base/stl_util.h"
 #include "ui/gfx/x/keysyms/keysyms.h"
 
 namespace ui {
diff --git a/ui/events/keycodes/platform_key_map_win.cc b/ui/events/keycodes/platform_key_map_win.cc
index ecc42cbe..254c98d 100644
--- a/ui/events/keycodes/platform_key_map_win.cc
+++ b/ui/events/keycodes/platform_key_map_win.cc
@@ -8,10 +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/stl_util.h"
 #include "base/threading/thread_local.h"
 
 #include "ui/events/event_constants.h"
diff --git a/ui/events/mojom/mojom_traits_unittest.cc b/ui/events/mojom/mojom_traits_unittest.cc
index d147efb..ca2b1d3 100644
--- a/ui/events/mojom/mojom_traits_unittest.cc
+++ b/ui/events/mojom/mojom_traits_unittest.cc
@@ -4,7 +4,7 @@
 
 #include <utility>
 
-#include "base/stl_util.h"
+#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"
diff --git a/ui/events/ozone/device/udev/device_manager_udev.cc b/ui/events/ozone/device/udev/device_manager_udev.cc
index 9473353..1b64e54 100644
--- a/ui/events/ozone/device/udev/device_manager_udev.cc
+++ b/ui/events/ozone/device/udev/device_manager_udev.cc
@@ -6,8 +6,8 @@
 
 #include <stddef.h>
 
+#include "base/cxx17_backports.h"
 #include "base/logging.h"
-#include "base/stl_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/task/current_thread.h"
 #include "base/trace_event/trace_event.h"
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 1e268e8..815e2ba 100644
--- a/ui/events/ozone/evdev/event_converter_evdev_impl_unittest.cc
+++ b/ui/events/ozone/evdev/event_converter_evdev_impl_unittest.cc
@@ -10,8 +10,8 @@
 #include <utility>
 
 #include "base/bind.h"
+#include "base/cxx17_backports.h"
 #include "base/files/scoped_file.h"
-#include "base/stl_util.h"
 #include "base/test/task_environment.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/events/event.h"
diff --git a/ui/events/ozone/evdev/event_device_info.cc b/ui/events/ozone/evdev/event_device_info.cc
index b7862856..067929d 100644
--- a/ui/events/ozone/evdev/event_device_info.cc
+++ b/ui/events/ozone/evdev/event_device_info.cc
@@ -8,9 +8,9 @@
 
 #include <cstring>
 
+#include "base/cxx17_backports.h"
 #include "base/files/file_path.h"
 #include "base/notreached.h"
-#include "base/stl_util.h"
 #include "base/threading/thread_restrictions.h"
 #include "ui/events/devices/device_util_linux.h"
 
diff --git a/ui/events/ozone/evdev/event_device_test_util.cc b/ui/events/ozone/evdev/event_device_test_util.cc
index e445d0e..dc8352d4 100644
--- a/ui/events/ozone/evdev/event_device_test_util.cc
+++ b/ui/events/ozone/evdev/event_device_test_util.cc
@@ -6,8 +6,8 @@
 
 #include <stdint.h>
 
+#include "base/cxx17_backports.h"
 #include "base/format_macros.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_split.h"
 #include "base/strings/string_util.h"
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 56dd97d..50905d1 100644
--- a/ui/events/ozone/evdev/gamepad_event_converter_evdev_unittest.cc
+++ b/ui/events/ozone/evdev/gamepad_event_converter_evdev_unittest.cc
@@ -15,11 +15,11 @@
 #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"
 #include "base/run_loop.h"
-#include "base/stl_util.h"
 #include "base/time/time.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
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 f16a1e52..3bc71b51 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,8 +8,8 @@
 #include <libevdev/libevdev.h>
 #include <linux/input.h>
 
+#include "base/cxx17_backports.h"
 #include "base/logging.h"
-#include "base/stl_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/timer/timer.h"
 #include "ui/events/base_event_utils.h"
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 9882306..92120868 100644
--- a/ui/events/ozone/evdev/libgestures_glue/gesture_property_provider.cc
+++ b/ui/events/ozone/evdev/libgestures_glue/gesture_property_provider.cc
@@ -13,11 +13,11 @@
 #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"
 #include "base/memory/ptr_util.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_split.h"
 #include "base/strings/string_tokenizer.h"
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 50e2684..301fc2d2 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,12 +14,12 @@
 #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"
 #include "base/posix/eintr_wrapper.h"
 #include "base/run_loop.h"
-#include "base/stl_util.h"
 #include "base/time/time.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/events/event.h"
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 b548a20..d3f03c4a 100644
--- a/ui/events/ozone/evdev/tablet_event_converter_evdev_unittest.cc
+++ b/ui/events/ozone/evdev/tablet_event_converter_evdev_unittest.cc
@@ -14,12 +14,12 @@
 #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"
 #include "base/posix/eintr_wrapper.h"
 #include "base/run_loop.h"
-#include "base/stl_util.h"
 #include "base/time/time.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/events/event.h"
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 2c3f6b575..d59c797 100644
--- a/ui/events/ozone/evdev/touch_event_converter_evdev_unittest.cc
+++ b/ui/events/ozone/evdev/touch_event_converter_evdev_unittest.cc
@@ -15,11 +15,11 @@
 #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"
 #include "base/run_loop.h"
-#include "base/stl_util.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/scoped_feature_list.h"
 #include "base/test/task_environment.h"
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 3b0993de..1d47d61f 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,8 +10,8 @@
 #include <memory>
 
 #include "base/command_line.h"
+#include "base/cxx17_backports.h"
 #include "base/logging.h"
-#include "base/stl_util.h"
 #include "base/strings/stringprintf.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/events/event_switches.h"
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 2e2d6791..fd81a25 100644
--- a/ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine.cc
+++ b/ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine.cc
@@ -11,11 +11,11 @@
 #include <utility>
 
 #include "base/bind.h"
+#include "base/cxx17_backports.h"
 #include "base/location.h"
 #include "base/logging.h"
 #include "base/memory/free_deleter.h"
 #include "base/single_thread_task_runner.h"
-#include "base/stl_util.h"
 #include "base/task/post_task.h"
 #include "base/task/thread_pool.h"
 #include "base/task_runner.h"
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 4090eff3..d3abf38 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
@@ -7,7 +7,7 @@
 #include <stddef.h>
 #include <stdint.h>
 
-#include "base/stl_util.h"
+#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"
diff --git a/ui/events/platform/platform_event_source_unittest.cc b/ui/events/platform/platform_event_source_unittest.cc
index 65f936a8..6738e8b 100644
--- a/ui/events/platform/platform_event_source_unittest.cc
+++ b/ui/events/platform/platform_event_source_unittest.cc
@@ -12,9 +12,9 @@
 #include <vector>
 
 #include "base/bind.h"
+#include "base/cxx17_backports.h"
 #include "base/run_loop.h"
 #include "base/single_thread_task_runner.h"
-#include "base/stl_util.h"
 #include "base/test/task_environment.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "testing/gtest/include/gtest/gtest.h"
diff --git a/ui/events/platform/x11/x11_event_source.cc b/ui/events/platform/x11/x11_event_source.cc
index 88c0018..723a101 100644
--- a/ui/events/platform/x11/x11_event_source.cc
+++ b/ui/events/platform/x11/x11_event_source.cc
@@ -148,12 +148,6 @@
 ////////////////////////////////////////////////////////////////////////////////
 // X11EventSource, public
 
-void X11EventSource::DispatchXEvent() {
-  connection_->Flush();
-  connection_->ReadResponses();
-  connection_->Dispatch();
-}
-
 x11::Time X11EventSource::GetCurrentServerTime() {
   DCHECK(connection_);
 
diff --git a/ui/events/platform/x11/x11_event_source.h b/ui/events/platform/x11/x11_event_source.h
index 7be16611..30eb759 100644
--- a/ui/events/platform/x11/x11_event_source.h
+++ b/ui/events/platform/x11/x11_event_source.h
@@ -61,9 +61,6 @@
   static bool HasInstance();
   static X11EventSource* GetInstance();
 
-  // Called when there is a new XEvent available. Processes a single X event.
-  void DispatchXEvent();
-
   x11::Connection* connection() { return connection_; }
 
   // Returns the timestamp of the event currently being dispatched.  Falls back
diff --git a/ui/events/platform/x11/x11_event_watcher_fdwatch.cc b/ui/events/platform/x11/x11_event_watcher_fdwatch.cc
index 75bb61d..8cbba218 100644
--- a/ui/events/platform/x11/x11_event_watcher_fdwatch.cc
+++ b/ui/events/platform/x11/x11_event_watcher_fdwatch.cc
@@ -36,7 +36,9 @@
 }
 
 void X11EventWatcherFdWatch::OnFileCanReadWithoutBlocking(int fd) {
-  event_source_->DispatchXEvent();
+  // We must dispatch all events, otherwise we may deadlock polling for new
+  // events when we already have events queued.
+  event_source_->connection()->DispatchAll();
 }
 
 void X11EventWatcherFdWatch::OnFileCanWriteWithoutBlocking(int fd) {
diff --git a/ui/events/platform/x11/x11_event_watcher_glib.cc b/ui/events/platform/x11/x11_event_watcher_glib.cc
index ff576bb..e4099f72 100644
--- a/ui/events/platform/x11/x11_event_watcher_glib.cc
+++ b/ui/events/platform/x11/x11_event_watcher_glib.cc
@@ -6,7 +6,6 @@
 
 #include <glib.h>
 
-
 namespace ui {
 
 namespace {
@@ -19,28 +18,50 @@
 };
 
 gboolean XSourcePrepare(GSource* source, gint* timeout_ms) {
-  GLibX11Source* gxsource = static_cast<GLibX11Source*>(source);
-  gxsource->connection->Flush();
-  gxsource->connection->ReadResponses();
-  if (gxsource->connection->HasPendingResponses())
-    return TRUE;
+  // Set an infinite timeout.
   *timeout_ms = -1;
-  return FALSE;
+
+  // This function is called before polling the FD, so a flush is mandatory
+  // in case:
+  //   1. This is the first message loop iteration and we have unflushed
+  //      requests.
+  //   2. A request was made after XSourceDispatch() when running tasks from
+  //      the task queue.
+  auto* connection = static_cast<GLibX11Source*>(source)->connection;
+  connection->Flush();
+
+  // Read a pre-buffered response if available to prevent a deadlock where we
+  // poll() for data that will never arrive since we already have data in our
+  // read buffer.
+  connection->ReadResponse(true);
+
+  // Return true if we can determine that event processing is necessary without
+  // polling the FD.
+  return connection->HasPendingResponses();
 }
 
 gboolean XSourceCheck(GSource* source) {
+  // Only read a response if poll() determined the FD is readable.
   GLibX11Source* gxsource = static_cast<GLibX11Source*>(source);
-  gxsource->connection->Flush();
-  gxsource->connection->ReadResponses();
+  if (gxsource->poll_fd->revents & G_IO_IN)
+    gxsource->connection->ReadResponse(false);
   return gxsource->connection->HasPendingResponses();
 }
 
 gboolean XSourceDispatch(GSource* source,
                          GSourceFunc unused_func,
                          gpointer data) {
-  X11EventSource* x11_source = static_cast<X11EventSource*>(data);
-  x11_source->DispatchXEvent();
-  return TRUE;
+  auto* connection = static_cast<GLibX11Source*>(source)->connection;
+  connection->Dispatch();
+
+  // Flushing here is not strictly required, but when this function returns,
+  // tasks from the task queue will be run, which may take some time.  Flushing
+  // now will ensure screen updates occur right away.  Fortunately, this won't
+  // do any syscalls if it's not necessary.
+  connection->Flush();
+
+  // Don't remove the GLibX11Source from the main loop.
+  return G_SOURCE_CONTINUE;
 }
 
 GSourceFuncs XSourceFuncs = {XSourcePrepare, XSourceCheck, XSourceDispatch,
diff --git a/ui/events/test/events_test_utils_x11.cc b/ui/events/test/events_test_utils_x11.cc
index 0bc24d2b..7c758da8 100644
--- a/ui/events/test/events_test_utils_x11.cc
+++ b/ui/events/test/events_test_utils_x11.cc
@@ -7,8 +7,8 @@
 #include <stddef.h>
 
 #include "base/check_op.h"
+#include "base/cxx17_backports.h"
 #include "base/notreached.h"
-#include "base/stl_util.h"
 #include "ui/events/devices/x11/touch_factory_x11.h"
 #include "ui/events/devices/x11/xinput_util.h"
 #include "ui/events/event_constants.h"
diff --git a/ui/file_manager/file_manager/background/js/file_operation_manager_unittest.m.js b/ui/file_manager/file_manager/background/js/file_operation_manager_unittest.m.js
index d4b5932..38013584 100644
--- a/ui/file_manager/file_manager/background/js/file_operation_manager_unittest.m.js
+++ b/ui/file_manager/file_manager/background/js/file_operation_manager_unittest.m.js
@@ -995,8 +995,8 @@
         const lastEvent = events[events.length - 1];
         assertEquals('copy-progress', lastEvent.type);
         assertEquals('SUCCESS', lastEvent.reason);
-        assertEquals(10, lastEvent.status.totalBytes);
-        assertEquals(10, lastEvent.status.processedBytes);
+        assertEquals(1, lastEvent.status.totalBytes);
+        assertEquals(1, lastEvent.status.processedBytes);
 
         assertFalse(events.some(event => {
           return event.type === 'delete';
diff --git a/ui/file_manager/file_manager/background/js/file_operation_util.js b/ui/file_manager/file_manager/background/js/file_operation_util.js
index 57453ee..367af96 100644
--- a/ui/file_manager/file_manager/background/js/file_operation_util.js
+++ b/ui/file_manager/file_manager/background/js/file_operation_util.js
@@ -1168,28 +1168,8 @@
    * @param {function()} callback Called when the initialize is completed.
    */
   initialize(callback) {
-    this.initialize_().finally(callback);
-  }
-
-  /**
-   * @private
-   */
-  async initialize_() {
-    this.totalBytes = 0;
-    const resolvedEntryMap = {};
-
-    for (const sourceEntry of assert(this.sourceEntries)) {
-      const resolvedEntries = await new Promise(
-          (resolve, reject) => fileOperationUtil.resolveRecursively_(
-              sourceEntry, resolve, reject));
-      for (const resolvedEntry of resolvedEntries) {
-        this.totalBytes += resolvedEntry.size;
-        resolvedEntryMap[resolvedEntry.toURL()] = resolvedEntry;
-      }
-    }
-
-    // For ZIP archiving, all the entries are processed at once.
-    this.processingEntries = [resolvedEntryMap];
+    this.totalBytes = this.sourceEntries.length;
+    callback();
   }
 
   /**
@@ -1243,16 +1223,10 @@
     const destPath = await fileOperationUtil.deduplicatePath(
         this.targetDirEntry, destName + '.zip');
 
-    // The number of elements in processingEntries is 1. See also
-    // initialize().
-    const entries = [];
-    for (const url in this.processingEntries[0]) {
-      entries.push(this.processingEntries[0][url]);
-    }
-
     const success = await new Promise(
         resolve => chrome.fileManagerPrivate.zipSelection(
-            entries, this.zipBaseDirEntry, destPath, resolve));
+            assert(this.sourceEntries), this.zipBaseDirEntry, destPath,
+            resolve));
 
     if (!success) {
       // Cannot create ZIP archive.
diff --git a/ui/gfx/animation/keyframe/keyframe_model.cc b/ui/gfx/animation/keyframe/keyframe_model.cc
index e395eb41..eaa8a86ae 100644
--- a/ui/gfx/animation/keyframe/keyframe_model.cc
+++ b/ui/gfx/animation/keyframe/keyframe_model.cc
@@ -4,9 +4,9 @@
 
 #include "ui/gfx/animation/keyframe/keyframe_model.h"
 
+#include "base/cxx17_backports.h"
 #include "base/memory/ptr_util.h"
 #include "base/notreached.h"
-#include "base/stl_util.h"
 
 namespace gfx {
 namespace {
diff --git a/ui/gfx/break_list_unittest.cc b/ui/gfx/break_list_unittest.cc
index 84aec179..81a66210 100644
--- a/ui/gfx/break_list_unittest.cc
+++ b/ui/gfx/break_list_unittest.cc
@@ -6,7 +6,7 @@
 
 #include <stddef.h>
 
-#include "base/stl_util.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"
diff --git a/ui/gfx/buffer_format_util.cc b/ui/gfx/buffer_format_util.cc
index 17bc87e..43bb0a4 100644
--- a/ui/gfx/buffer_format_util.cc
+++ b/ui/gfx/buffer_format_util.cc
@@ -5,9 +5,9 @@
 #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 "base/stl_util.h"
 
 namespace gfx {
 namespace {
diff --git a/ui/gfx/codec/jpeg_codec_unittest.cc b/ui/gfx/codec/jpeg_codec_unittest.cc
index 54c57a1b..2d0748e8 100644
--- a/ui/gfx/codec/jpeg_codec_unittest.cc
+++ b/ui/gfx/codec/jpeg_codec_unittest.cc
@@ -7,8 +7,8 @@
 #include <stdint.h>
 
 #include "base/barrier_closure.h"
+#include "base/cxx17_backports.h"
 #include "base/run_loop.h"
-#include "base/stl_util.h"
 #include "base/task/thread_pool.h"
 #include "base/test/bind.h"
 #include "base/test/task_environment.h"
diff --git a/ui/gfx/codec/png_codec_unittest.cc b/ui/gfx/codec/png_codec_unittest.cc
index 260f7c9..083c6a8 100644
--- a/ui/gfx/codec/png_codec_unittest.cc
+++ b/ui/gfx/codec/png_codec_unittest.cc
@@ -8,8 +8,8 @@
 #include <algorithm>
 #include <cmath>
 
+#include "base/cxx17_backports.h"
 #include "base/logging.h"
-#include "base/stl_util.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/libpng/png.h"
 #include "third_party/skia/include/core/SkBitmap.h"
diff --git a/ui/gfx/font_fallback_unittest.cc b/ui/gfx/font_fallback_unittest.cc
index 4673642..2d16b025 100644
--- a/ui/gfx/font_fallback_unittest.cc
+++ b/ui/gfx/font_fallback_unittest.cc
@@ -6,7 +6,7 @@
 
 #include <tuple>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "base/strings/string_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/test/task_environment.h"
diff --git a/ui/gfx/font_fallback_win_unittest.cc b/ui/gfx/font_fallback_win_unittest.cc
index d73a3549..4d522c4 100644
--- a/ui/gfx/font_fallback_win_unittest.cc
+++ b/ui/gfx/font_fallback_win_unittest.cc
@@ -4,8 +4,8 @@
 
 #include "ui/gfx/font_fallback_win.h"
 
+#include "base/cxx17_backports.h"
 #include "base/macros.h"
-#include "base/stl_util.h"
 #include "base/test/task_environment.h"
 #include "base/win/windows_version.h"
 #include "testing/gtest/include/gtest/gtest.h"
diff --git a/ui/gfx/geometry/point3_unittest.cc b/ui/gfx/geometry/point3_unittest.cc
index 76b41ef..e1926ef 100644
--- a/ui/gfx/geometry/point3_unittest.cc
+++ b/ui/gfx/geometry/point3_unittest.cc
@@ -4,7 +4,7 @@
 
 #include <stddef.h>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/gfx/geometry/point3_f.h"
 
diff --git a/ui/gfx/geometry/point_unittest.cc b/ui/gfx/geometry/point_unittest.cc
index 33f7f3b..75c1c03aec 100644
--- a/ui/gfx/geometry/point_unittest.cc
+++ b/ui/gfx/geometry/point_unittest.cc
@@ -4,7 +4,7 @@
 
 #include <stddef.h>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/gfx/geometry/point.h"
 #include "ui/gfx/geometry/point_conversions.h"
diff --git a/ui/gfx/geometry/quad_unittest.cc b/ui/gfx/geometry/quad_unittest.cc
index cf57bdcc..87849b0c 100644
--- a/ui/gfx/geometry/quad_unittest.cc
+++ b/ui/gfx/geometry/quad_unittest.cc
@@ -4,7 +4,7 @@
 
 #include <stddef.h>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "build/build_config.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/gfx/geometry/quad_f.h"
diff --git a/ui/gfx/geometry/quaternion_unittest.cc b/ui/gfx/geometry/quaternion_unittest.cc
index ecacaf1..3c9fd2b7 100644
--- a/ui/gfx/geometry/quaternion_unittest.cc
+++ b/ui/gfx/geometry/quaternion_unittest.cc
@@ -4,8 +4,8 @@
 
 #include <cmath>
 
+#include "base/cxx17_backports.h"
 #include "base/numerics/math_constants.h"
-#include "base/stl_util.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/gfx/geometry/quaternion.h"
 #include "ui/gfx/geometry/vector3d_f.h"
diff --git a/ui/gfx/geometry/rect_unittest.cc b/ui/gfx/geometry/rect_unittest.cc
index 1f6d576..5ca36f4f 100644
--- a/ui/gfx/geometry/rect_unittest.cc
+++ b/ui/gfx/geometry/rect_unittest.cc
@@ -6,7 +6,7 @@
 
 #include <stddef.h>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "build/build_config.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/gfx/geometry/rect.h"
diff --git a/ui/gfx/geometry/scroll_offset_unittest.cc b/ui/gfx/geometry/scroll_offset_unittest.cc
index 4ad3460..1aca07f 100644
--- a/ui/gfx/geometry/scroll_offset_unittest.cc
+++ b/ui/gfx/geometry/scroll_offset_unittest.cc
@@ -7,7 +7,7 @@
 #include <cmath>
 #include <limits>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/gfx/geometry/scroll_offset.h"
 
diff --git a/ui/gfx/geometry/vector2d_unittest.cc b/ui/gfx/geometry/vector2d_unittest.cc
index 8f49a8b5..f4e754b 100644
--- a/ui/gfx/geometry/vector2d_unittest.cc
+++ b/ui/gfx/geometry/vector2d_unittest.cc
@@ -7,7 +7,7 @@
 #include <cmath>
 #include <limits>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/gfx/geometry/vector2d.h"
 #include "ui/gfx/geometry/vector2d_f.h"
diff --git a/ui/gfx/geometry/vector3d_unittest.cc b/ui/gfx/geometry/vector3d_unittest.cc
index 9a7e8b6..1eab6a6 100644
--- a/ui/gfx/geometry/vector3d_unittest.cc
+++ b/ui/gfx/geometry/vector3d_unittest.cc
@@ -7,7 +7,7 @@
 #include <cmath>
 #include <limits>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "build/build_config.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/gfx/geometry/vector3d_f.h"
diff --git a/ui/gfx/half_float_unittest.cc b/ui/gfx/half_float_unittest.cc
index db693ff..d6a1965 100644
--- a/ui/gfx/half_float_unittest.cc
+++ b/ui/gfx/half_float_unittest.cc
@@ -4,7 +4,7 @@
 
 #include <math.h>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/gfx/half_float.h"
 
diff --git a/ui/gfx/icon_util.cc b/ui/gfx/icon_util.cc
index b9702dde..7da3e2b 100644
--- a/ui/gfx/icon_util.cc
+++ b/ui/gfx/icon_util.cc
@@ -5,10 +5,10 @@
 #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/notreached.h"
-#include "base/stl_util.h"
 #include "base/trace_event/trace_event.h"
 #include "base/win/resource_util.h"
 #include "base/win/scoped_gdi_object.h"
diff --git a/ui/gfx/mac/io_surface.cc b/ui/gfx/mac/io_surface.cc
index e5fd0a3..4e22b4c 100644
--- a/ui/gfx/mac/io_surface.cc
+++ b/ui/gfx/mac/io_surface.cc
@@ -10,12 +10,12 @@
 #include <stdint.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"
 #include "base/mac/mach_logging.h"
 #include "base/metrics/histogram_macros.h"
-#include "base/stl_util.h"
 #include "base/trace_event/trace_event.h"
 #include "ui/gfx/buffer_format_util.h"
 #include "ui/gfx/color_space.h"
diff --git a/ui/gfx/nine_image_painter.cc b/ui/gfx/nine_image_painter.cc
index 8e9e99e..6a99863 100644
--- a/ui/gfx/nine_image_painter.cc
+++ b/ui/gfx/nine_image_painter.cc
@@ -8,8 +8,8 @@
 
 #include <limits>
 
+#include "base/cxx17_backports.h"
 #include "base/numerics/safe_conversions.h"
-#include "base/stl_util.h"
 #include "cc/paint/paint_flags.h"
 #include "third_party/skia/include/core/SkRect.h"
 #include "third_party/skia/include/core/SkScalar.h"
diff --git a/ui/gfx/paint_vector_icon_unittest.cc b/ui/gfx/paint_vector_icon_unittest.cc
index 54aad19..773d960 100644
--- a/ui/gfx/paint_vector_icon_unittest.cc
+++ b/ui/gfx/paint_vector_icon_unittest.cc
@@ -7,8 +7,8 @@
 #include <gtest/gtest.h>
 #include <vector>
 
+#include "base/cxx17_backports.h"
 #include "base/i18n/rtl.h"
-#include "base/stl_util.h"
 #include "cc/paint/paint_record.h"
 #include "cc/paint/paint_recorder.h"
 #include "third_party/skia/include/core/SkCanvas.h"
diff --git a/ui/gfx/path_win_unittest.cc b/ui/gfx/path_win_unittest.cc
index 4ebbf27..c001370 100644
--- a/ui/gfx/path_win_unittest.cc
+++ b/ui/gfx/path_win_unittest.cc
@@ -10,7 +10,7 @@
 #include <vector>
 
 #include "base/check_op.h"
-#include "base/stl_util.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"
diff --git a/ui/gfx/render_text_unittest.cc b/ui/gfx/render_text_unittest.cc
index 140cd7a..7b639e6 100644
--- a/ui/gfx/render_text_unittest.cc
+++ b/ui/gfx/render_text_unittest.cc
@@ -12,12 +12,12 @@
 #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"
 #include "base/logging.h"
 #include "base/run_loop.h"
-#include "base/stl_util.h"
 #include "base/strings/string_split.h"
 #include "base/strings/string_util.h"
 #include "base/strings/stringprintf.h"
diff --git a/ui/gfx/rrect_f_unittest.cc b/ui/gfx/rrect_f_unittest.cc
index 6338797..81c282bd9 100644
--- a/ui/gfx/rrect_f_unittest.cc
+++ b/ui/gfx/rrect_f_unittest.cc
@@ -3,7 +3,7 @@
 // found in the LICENSE file.
 
 #include "ui/gfx/rrect_f.h"
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/gfx/rrect_f_builder.h"
 
diff --git a/ui/gfx/shadow_value_unittest.cc b/ui/gfx/shadow_value_unittest.cc
index 4cc191c..713b473 100644
--- a/ui/gfx/shadow_value_unittest.cc
+++ b/ui/gfx/shadow_value_unittest.cc
@@ -4,7 +4,7 @@
 
 #include <stddef.h>
 
-#include "base/stl_util.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"
diff --git a/ui/gfx/test/icc_profiles.cc b/ui/gfx/test/icc_profiles.cc
index e38bcf8..4ec059f 100644
--- a/ui/gfx/test/icc_profiles.cc
+++ b/ui/gfx/test/icc_profiles.cc
@@ -4,7 +4,7 @@
 
 #include "ui/gfx/test/icc_profiles.h"
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 
 namespace gfx {
 
diff --git a/ui/gfx/text_elider_unittest.cc b/ui/gfx/text_elider_unittest.cc
index 4df7150..579f73b 100644
--- a/ui/gfx/text_elider_unittest.cc
+++ b/ui/gfx/text_elider_unittest.cc
@@ -11,11 +11,11 @@
 #include <memory>
 #include <vector>
 
+#include "base/cxx17_backports.h"
 #include "base/files/file_path.h"
 #include "base/i18n/rtl.h"
 #include "base/logging.h"
 #include "base/run_loop.h"
-#include "base/stl_util.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/task_environment.h"
diff --git a/ui/gfx/transform_operations_unittest.cc b/ui/gfx/transform_operations_unittest.cc
index 5a432b6..2261754 100644
--- a/ui/gfx/transform_operations_unittest.cc
+++ b/ui/gfx/transform_operations_unittest.cc
@@ -10,7 +10,7 @@
 #include <utility>
 #include <vector>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/gfx/animation/tween.h"
 #include "ui/gfx/geometry/box_f.h"
diff --git a/ui/gfx/transform_unittest.cc b/ui/gfx/transform_unittest.cc
index 35a3fca6..5429711 100644
--- a/ui/gfx/transform_unittest.cc
+++ b/ui/gfx/transform_unittest.cc
@@ -9,7 +9,7 @@
 #include <limits>
 #include <ostream>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "build/build_config.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/gfx/geometry/angle_conversions.h"
diff --git a/ui/gfx/win/window_impl.cc b/ui/gfx/win/window_impl.cc
index dd3ea76..8682614 100644
--- a/ui/gfx/win/window_impl.cc
+++ b/ui/gfx/win/window_impl.cc
@@ -7,11 +7,11 @@
 #include <list>
 
 #include "base/bind.h"
+#include "base/cxx17_backports.h"
 #include "base/debug/alias.h"
 #include "base/logging.h"
 #include "base/macros.h"
 #include "base/memory/singleton.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_util.h"
 #include "base/synchronization/lock.h"
diff --git a/ui/gfx/x/connection.cc b/ui/gfx/x/connection.cc
index b305576e..cf033f9 100644
--- a/ui/gfx/x/connection.cc
+++ b/ui/gfx/x/connection.cc
@@ -362,10 +362,19 @@
 
 void Connection::ReadResponses() {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-  while (auto* event = xcb_poll_for_event(XcbConnection())) {
+  while (ReadResponse(false)) {
+  }
+}
+
+bool Connection::ReadResponse(bool queued) {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+  auto* event = queued ? xcb_poll_for_queued_event(XcbConnection())
+                       : xcb_poll_for_event(XcbConnection());
+  if (event) {
     events_.emplace_back(base::MakeRefCounted<MallocedRefCountedMemory>(event),
                          this);
   }
+  return event;
 }
 
 Event Connection::WaitForNextEvent() {
diff --git a/ui/gfx/x/connection.h b/ui/gfx/x/connection.h
index 6910396..4281481 100644
--- a/ui/gfx/x/connection.h
+++ b/ui/gfx/x/connection.h
@@ -140,9 +140,16 @@
   // If |synchronous| is true, this makes all requests Sync().
   void SynchronizeForTest(bool synchronous);
 
-  // Read all responses from the socket without blocking.
+  // Read all responses from the socket without blocking.  This function will
+  // make non-blocking read() syscalls.
   void ReadResponses();
 
+  // Read a single response.  If |queued| is true, no read() will be done; a
+  // response may only be translated from buffered socket data.  If |queued| is
+  // false, a non-blocking read() will only be done if no response is buffered.
+  // Returns true if an event was read.
+  bool ReadResponse(bool queued);
+
   Event WaitForNextEvent();
 
   // Are there any events, errors, or replies already buffered?
diff --git a/ui/gfx/x/x11_atom_cache.cc b/ui/gfx/x/x11_atom_cache.cc
index 31397f5..094f7ae 100644
--- a/ui/gfx/x/x11_atom_cache.cc
+++ b/ui/gfx/x/x11_atom_cache.cc
@@ -8,9 +8,9 @@
 #include <vector>
 
 #include "base/check.h"
+#include "base/cxx17_backports.h"
 #include "base/memory/singleton.h"
 #include "base/metrics/histogram_functions.h"
-#include "base/stl_util.h"
 #include "ui/gfx/x/connection.h"
 #include "ui/gfx/x/future.h"
 
diff --git a/ui/gl/gl_api_unittest.cc b/ui/gl/gl_api_unittest.cc
index ab033c2..2ef3057 100644
--- a/ui/gl/gl_api_unittest.cc
+++ b/ui/gl/gl_api_unittest.cc
@@ -7,7 +7,7 @@
 #include <memory>
 
 #include "base/command_line.h"
-#include "base/stl_util.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"
diff --git a/ui/gl/gl_image_io_surface_unittest.cc b/ui/gl/gl_image_io_surface_unittest.cc
index c1e0e57..56488a60 100644
--- a/ui/gl/gl_image_io_surface_unittest.cc
+++ b/ui/gl/gl_image_io_surface_unittest.cc
@@ -5,7 +5,7 @@
 #include <stddef.h>
 #include <stdint.h>
 
-#include "base/stl_util.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"
diff --git a/ui/gl/gl_image_native_pixmap.cc b/ui/gl/gl_image_native_pixmap.cc
index c768647..82b33d9 100644
--- a/ui/gl/gl_image_native_pixmap.cc
+++ b/ui/gl/gl_image_native_pixmap.cc
@@ -6,8 +6,8 @@
 
 #include <vector>
 
+#include "base/cxx17_backports.h"
 #include "base/files/scoped_file.h"
-#include "base/stl_util.h"
 #include "build/build_config.h"
 #include "ui/gfx/buffer_format_util.h"
 #include "ui/gfx/gpu_fence.h"
diff --git a/ui/gl/gl_switches.cc b/ui/gl/gl_switches.cc
index 7341e37..e32ad70e 100644
--- a/ui/gl/gl_switches.cc
+++ b/ui/gl/gl_switches.cc
@@ -4,7 +4,7 @@
 
 #include "ui/gl/gl_switches.h"
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "build/build_config.h"
 
 #if defined(OS_ANDROID)
diff --git a/ui/gl/gl_version_info_unittest.cc b/ui/gl/gl_version_info_unittest.cc
index 2378c34..bfc2777 100644
--- a/ui/gl/gl_version_info_unittest.cc
+++ b/ui/gl/gl_version_info_unittest.cc
@@ -4,7 +4,7 @@
 
 #include <memory>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/gl/gl_version_info.h"
 
diff --git a/ui/gtk/gtk_ui.cc b/ui/gtk/gtk_ui.cc
index 38f049c..3706fca8 100644
--- a/ui/gtk/gtk_ui.cc
+++ b/ui/gtk/gtk_ui.cc
@@ -14,12 +14,12 @@
 
 #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"
 #include "base/nix/mime_util_xdg.h"
 #include "base/nix/xdg_util.h"
-#include "base/stl_util.h"
 #include "base/strings/string_split.h"
 #include "chrome/browser/themes/theme_properties.h"  // nogncheck
 #include "printing/buildflags/buildflags.h"          // nogncheck
diff --git a/ui/message_center/views/relative_time_formatter.cc b/ui/message_center/views/relative_time_formatter.cc
index 46eba0b1..29c8ee3 100644
--- a/ui/message_center/views/relative_time_formatter.cc
+++ b/ui/message_center/views/relative_time_formatter.cc
@@ -4,8 +4,8 @@
 
 #include "ui/message_center/views/relative_time_formatter.h"
 
+#include "base/cxx17_backports.h"
 #include "base/numerics/safe_conversions.h"
-#include "base/stl_util.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/strings/grit/ui_strings.h"
 
diff --git a/ui/ozone/demo/skia/skia_surfaceless_gl_renderer.cc b/ui/ozone/demo/skia/skia_surfaceless_gl_renderer.cc
index d784615..49d848cb 100644
--- a/ui/ozone/demo/skia/skia_surfaceless_gl_renderer.cc
+++ b/ui/ozone/demo/skia/skia_surfaceless_gl_renderer.cc
@@ -11,7 +11,7 @@
 #include "base/bind.h"
 #include "base/callback_helpers.h"
 #include "base/command_line.h"
-#include "base/stl_util.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"
diff --git a/ui/ozone/platform/drm/gpu/drm_display.cc b/ui/ozone/platform/drm/gpu/drm_display.cc
index 2ff0772..208e106 100644
--- a/ui/ozone/platform/drm/gpu/drm_display.cc
+++ b/ui/ozone/platform/drm/gpu/drm_display.cc
@@ -7,8 +7,8 @@
 #include <xf86drmMode.h>
 #include <memory>
 
+#include "base/cxx17_backports.h"
 #include "base/logging.h"
-#include "base/stl_util.h"
 #include "base/trace_event/trace_event.h"
 #include "build/chromeos_buildflags.h"
 #include "ui/display/display_features.h"
diff --git a/ui/ozone/platform/wayland/host/wayland_window_drag_controller_unittest.cc b/ui/ozone/platform/wayland/host/wayland_window_drag_controller_unittest.cc
index e4e59a92..5cb7017 100644
--- a/ui/ozone/platform/wayland/host/wayland_window_drag_controller_unittest.cc
+++ b/ui/ozone/platform/wayland/host/wayland_window_drag_controller_unittest.cc
@@ -643,7 +643,9 @@
 }
 
 // Regression test for https://crbug.com/1169446.
-TEST_P(WaylandWindowDragControllerTest, MotionEventsSkippedWhileReattaching) {
+// TODO(crbug.com/1206937): Test is flaky.
+TEST_P(WaylandWindowDragControllerTest,
+       DISABLED_MotionEventsSkippedWhileReattaching) {
   auto* dragged_window = window_.get();
   EXPECT_TRUE(dragged_window);
 
diff --git a/ui/shell_dialogs/execute_select_file_win_unittest.cc b/ui/shell_dialogs/execute_select_file_win_unittest.cc
index d7c915b9..20562a1 100644
--- a/ui/shell_dialogs/execute_select_file_win_unittest.cc
+++ b/ui/shell_dialogs/execute_select_file_win_unittest.cc
@@ -6,8 +6,8 @@
 
 #include <stddef.h>
 
+#include "base/cxx17_backports.h"
 #include "base/macros.h"
-#include "base/stl_util.h"
 #include "base/strings/stringprintf.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/shell_dialogs/select_file_dialog.h"
diff --git a/ui/shell_dialogs/select_file_dialog_unittest.cc b/ui/shell_dialogs/select_file_dialog_unittest.cc
index 57d5f5f..285f40d 100644
--- a/ui/shell_dialogs/select_file_dialog_unittest.cc
+++ b/ui/shell_dialogs/select_file_dialog_unittest.cc
@@ -4,7 +4,7 @@
 
 #include <stddef.h>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/shell_dialogs/select_file_dialog.h"
 
diff --git a/ui/shell_dialogs/select_file_dialog_win_unittest.cc b/ui/shell_dialogs/select_file_dialog_win_unittest.cc
index 991af9f..bf66be5 100644
--- a/ui/shell_dialogs/select_file_dialog_win_unittest.cc
+++ b/ui/shell_dialogs/select_file_dialog_win_unittest.cc
@@ -8,12 +8,12 @@
 #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"
 #include "base/macros.h"
 #include "base/memory/scoped_refptr.h"
-#include "base/stl_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/task_environment.h"
diff --git a/ui/views/BUILD.gn b/ui/views/BUILD.gn
index bc83b44f..fef9866b 100644
--- a/ui/views/BUILD.gn
+++ b/ui/views/BUILD.gn
@@ -527,6 +527,7 @@
     "//ui/base/dragdrop:types",
     "//ui/base/dragdrop/mojom:mojom_headers",
     "//ui/base/ime/init",
+    "//ui/base/metadata",
     "//ui/compositor",
     "//ui/display",
     "//ui/events",
@@ -1393,8 +1394,8 @@
 
   if (use_ozone) {
     deps += [
-      "//ui/ozone",
       "//ui/events/ozone/layout:test_support",
+      "//ui/ozone",
     ]
   }
 
diff --git a/ui/views/bubble/bubble_border_unittest.cc b/ui/views/bubble/bubble_border_unittest.cc
index c7f6b16..e8a7389 100644
--- a/ui/views/bubble/bubble_border_unittest.cc
+++ b/ui/views/bubble/bubble_border_unittest.cc
@@ -8,7 +8,7 @@
 
 #include <memory>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "base/strings/stringprintf.h"
 #include "ui/gfx/canvas.h"
 #include "ui/gfx/geometry/rect.h"
diff --git a/ui/views/controls/textfield/textfield_model_unittest.cc b/ui/views/controls/textfield/textfield_model_unittest.cc
index e6c504e..ab12368 100644
--- a/ui/views/controls/textfield/textfield_model_unittest.cc
+++ b/ui/views/controls/textfield/textfield_model_unittest.cc
@@ -11,7 +11,7 @@
 #include <vector>
 
 #include "base/auto_reset.h"
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "build/build_config.h"
 #include "build/chromeos_buildflags.h"
 #include "testing/gtest/include/gtest/gtest.h"
diff --git a/ui/views/controls/textfield/textfield_unittest.cc b/ui/views/controls/textfield/textfield_unittest.cc
index 788e8538..077327c8 100644
--- a/ui/views/controls/textfield/textfield_unittest.cc
+++ b/ui/views/controls/textfield/textfield_unittest.cc
@@ -12,10 +12,10 @@
 #include <vector>
 
 #include "base/command_line.h"
+#include "base/cxx17_backports.h"
 #include "base/format_macros.h"
 #include "base/i18n/rtl.h"
 #include "base/pickle.h"
-#include "base/stl_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "build/build_config.h"
diff --git a/ui/views/examples/bubble_example.cc b/ui/views/examples/bubble_example.cc
index d58c82b..2af8602 100644
--- a/ui/views/examples/bubble_example.cc
+++ b/ui/views/examples/bubble_example.cc
@@ -6,7 +6,7 @@
 
 #include <memory>
 
-#include "base/stl_util.h"
+#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"
diff --git a/ui/views/examples/label_example.cc b/ui/views/examples/label_example.cc
index 7ddbc9bc..8a9ec5e 100644
--- a/ui/views/examples/label_example.cc
+++ b/ui/views/examples/label_example.cc
@@ -7,8 +7,8 @@
 #include <memory>
 #include <utility>
 
+#include "base/cxx17_backports.h"
 #include "base/memory/ptr_util.h"
-#include "base/stl_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "ui/gfx/geometry/insets.h"
 #include "ui/gfx/geometry/vector2d.h"
diff --git a/ui/views/examples/text_example.cc b/ui/views/examples/text_example.cc
index f3438f59..48d4820 100644
--- a/ui/views/examples/text_example.cc
+++ b/ui/views/examples/text_example.cc
@@ -7,7 +7,7 @@
 #include <memory>
 #include <utility>
 
-#include "base/stl_util.h"
+#include "base/cxx17_backports.h"
 #include "base/strings/utf_string_conversions.h"
 #include "ui/gfx/canvas.h"
 #include "ui/gfx/font_list.h"
diff --git a/ui/views/focus/focus_traversal_unittest.cc b/ui/views/focus/focus_traversal_unittest.cc
index c8c18a14..68231710 100644
--- a/ui/views/focus/focus_traversal_unittest.cc
+++ b/ui/views/focus/focus_traversal_unittest.cc
@@ -4,8 +4,8 @@
 
 #include <stddef.h>
 
+#include "base/cxx17_backports.h"
 #include "base/run_loop.h"
-#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/utf_string_conversions.h"
 #include "build/build_config.h"