diff --git a/DEPS b/DEPS
index 050b3c5a..de18e02 100644
--- a/DEPS
+++ b/DEPS
@@ -297,15 +297,15 @@
   # 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': '41cb8f2f9d128a67e2782dfb89732477a223cff9',
+  'skia_revision': '7acdbfc5ae97776c6f2502cfd4949bef67feae42',
   # 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': '93defd9910e47e23cc4fdcac88d3169afd7fa147',
+  'v8_revision': 'babfba7408534bbc5b214b0898aa5c19634d50e7',
   # 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': '6c9530690cd672ea0c07dd0fc7ac1d715481804b',
+  'angle_revision': '87ed2c9d1eaf918d38ceb6c4f210ce27f8efa9cb',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling SwiftShader
   # and whatever else without interference from each other.
@@ -324,7 +324,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling Fuchsia sdk
   # and whatever else without interference from each other.
-  'fuchsia_version': 'version:9.20220810.1.1',
+  'fuchsia_version': 'version:9.20220811.0.1',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling google-toolbox-for-mac
   # and whatever else without interference from each other.
@@ -376,7 +376,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': 'f62cac79e0c23253eeb328cb5c1322b026b9eac5',
+  'devtools_frontend_revision': '73e0b22136d49fb160117916edb829c6a606931d',
   # 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.
@@ -412,7 +412,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
-  'dawn_revision': '0d3a7bbd7ed9b46cba1c4dc16edf8f2796867592',
+  'dawn_revision': 'bf0707d1389bc80a9cf0666f67224d258650a6a8',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
@@ -773,7 +773,7 @@
     Var('chromium_git') + '/external/github.com/toji/webvr.info.git' + '@' + 'c58ae99b9ff9e2aa4c524633519570bf33536248',
 
   'src/docs/website': {
-    'url': Var('chromium_git') + '/website.git' + '@' + 'e1675f6b5f878818b9ecc355be8186061867c170',
+    'url': Var('chromium_git') + '/website.git' + '@' + '90a3527c1503cd3f260a88bb487e6861f2f37724',
   },
 
   'src/ios/third_party/earl_grey2/src': {
@@ -862,7 +862,7 @@
       'packages': [
         {
           'package': 'chromium/rts/model/linux-amd64',
-          'version': '_yR7MK2HfnQFhulBg9AExMwzwt6SMSzXpP6C62pE7mIC',
+          'version': 'TkDDiu4byTvUZ76oFHCKypWsXZ-AtiKVvT8Ma4E2e1YC',
         },
       ],
       'dep_type': 'cipd',
@@ -884,7 +884,7 @@
       'packages': [
         {
           'package': 'chromium/rts/model/windows-amd64',
-          'version': 'hemMkRPPVNHEI4x2pKeBOVbzhyOTRwgcYO316uCowNcC',
+          'version': '-c_y5EwlBtcXnUPTSUNco2EAboFvb4a1djS6MxeuNk8C',
         },
       ],
       'dep_type': 'cipd',
@@ -1732,7 +1732,7 @@
     Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + '2fe73f07ac85b224b717d653a8f0070e8c692dab',
 
   'src/third_party/webrtc':
-    Var('webrtc_git') + '/src.git' + '@' + '1e688612ccd86cfe42d129118d90ae567502bdd3',
+    Var('webrtc_git') + '/src.git' + '@' + 'b787e26369eb8ed417e7a80a4fbe82847980f32a',
 
   'src/third_party/libgifcodec':
      Var('skia_git') + '/libgifcodec' + '@'+  Var('libgifcodec_revision'),
@@ -1805,7 +1805,7 @@
     Var('chromium_git') + '/v8/v8.git' + '@' +  Var('v8_revision'),
 
   'src-internal': {
-    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@3b5fafb36f7c5a624ea9595487720cc05e5edf97',
+    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@8057e5e76dec5b64f99c4c19f748d20c892822c7',
     'condition': 'checkout_src_internal',
   },
 
@@ -1835,7 +1835,7 @@
     'packages': [
       {
         'package': 'chromeos_internal/apps/help_app/app',
-        'version': 'J-x-HYftzK0qOhuJ4v1_0Eb1a7-Fg34gJI7gH8sPRI8C',
+        'version': 'Zu3tXOR70J9281UTDVc4vlihreQsBaS3TzwyGDsMePUC',
       },
     ],
     'condition': 'checkout_chromeos and checkout_src_internal',
@@ -1846,7 +1846,7 @@
     'packages': [
       {
         'package': 'chromeos_internal/apps/media_app/app',
-        'version': 'dA48w5G7nLWAWVOLzymvPGLwPiZPcusZjYpvB9hgrj0C',
+        'version': 'bAPQB4uga7IANwJKxF7MpHYTuOtkjc-Oa2Ugg2FlebgC',
       },
     ],
     'condition': 'checkout_chromeos and checkout_src_internal',
diff --git a/android_webview/tools/cts_utils.py b/android_webview/tools/cts_utils.py
index 486e9fc..8a956466 100644
--- a/android_webview/tools/cts_utils.py
+++ b/android_webview/tools/cts_utils.py
@@ -48,11 +48,6 @@
 
 TEST_SUITES_FILE = os.path.join('testing', 'buildbot', 'test_suites.pyl')
 
-# Android desserts that are no longer receiving CTS updates at
-# https://source.android.com/compatibility/cts/downloads
-# Please update this list as more versions reach end-of-service.
-END_OF_SERVICE_DESSERTS = ['M']
-
 CTS_DEP_NAME = 'src/android_webview/tools/cts_archive'
 CTS_DEP_PACKAGE = 'chromium/android_webview/tools/cts_archive'
 
diff --git a/android_webview/tools/update_cts.py b/android_webview/tools/update_cts.py
index ed58ff2..ba9df3565 100755
--- a/android_webview/tools/update_cts.py
+++ b/android_webview/tools/update_cts.py
@@ -194,9 +194,8 @@
   def download_cts_cmd(self, platforms=None):
     """Performs the download sub-command."""
     if platforms is None:
-      all_platforms = self._CTSConfig.get_platforms()
-      platforms = list(
-          set(all_platforms) - set(cts_utils.END_OF_SERVICE_DESSERTS))
+      platforms = self._CTSConfig.get_platforms()
+
     print('Downloading CTS tests for %d platforms, could take a few'
           ' minutes ...' % len(platforms))
     self.download_cts(platforms)
diff --git a/ash/BUILD.gn b/ash/BUILD.gn
index 0040452..2d39d94 100644
--- a/ash/BUILD.gn
+++ b/ash/BUILD.gn
@@ -3240,6 +3240,7 @@
 test("ash_pixeltests") {
   sources = [
     "shelf/login_shelf_view_pixeltest.cc",
+    "shelf/scrollable_shelf_view_pixeltest.cc",
     "test/ash_pixel_diff_test_helper.cc",
     "test/ash_pixel_diff_test_helper.h",
     "test/demo_ash_pixel_diff_test.cc",
@@ -3404,6 +3405,8 @@
     "shelf/shelf_test_util.h",
     "shelf/shelf_view_test_api.cc",
     "shelf/shelf_view_test_api.h",
+    "shelf/test/scrollable_shelf_test_base.cc",
+    "shelf/test/scrollable_shelf_test_base.h",
     "shell_test_api.cc",
     "system/holding_space/holding_space_test_api.cc",
     "system/message_center/test_notifier_settings_controller.cc",
diff --git a/ash/constants/notifier_catalogs.h b/ash/constants/notifier_catalogs.h
index ded6937..d57e7cc 100644
--- a/ash/constants/notifier_catalogs.h
+++ b/ash/constants/notifier_catalogs.h
@@ -163,7 +163,9 @@
   kTailoredSecurityDisabled = 148,
   kTailoredSecurityEnabled = 149,
   kTailoredSecurityPromotion = 150,
-  kMaxValue = kTailoredSecurityPromotion
+  kArcLowDiskSpacePreStop = 151,
+  kArcLowDiskSpacePostStop = 152,
+  kMaxValue = kArcLowDiskSpacePostStop
 };
 
 // A living catalog that registers toasts.
diff --git a/ash/projector/projector_controller_impl.cc b/ash/projector/projector_controller_impl.cc
index aa1eef9..70fff70d 100644
--- a/ash/projector/projector_controller_impl.cc
+++ b/ash/projector/projector_controller_impl.cc
@@ -240,10 +240,15 @@
         result.reasons = {
             NewScreencastPreconditionReason::kSodaDownloadInProgress};
         return result;
-      case SpeechRecognitionAvailability::kSodaInstallationError:
+      case SpeechRecognitionAvailability::kSodaInstallationErrorUnspecified:
         result.state = NewScreencastPreconditionState::kDisabled;
         result.reasons = {
-            NewScreencastPreconditionReason::kSodaInstallationError};
+            NewScreencastPreconditionReason::kSodaInstallationErrorUnspecified};
+        return result;
+      case SpeechRecognitionAvailability::kSodaInstallationErrorNeedsReboot:
+        result.state = NewScreencastPreconditionState::kDisabled;
+        result.reasons = {
+            NewScreencastPreconditionReason::kSodaInstallationErrorNeedsReboot};
         return result;
       case SpeechRecognitionAvailability::kAvailable:
         break;
diff --git a/ash/public/cpp/projector/projector_controller.h b/ash/public/cpp/projector/projector_controller.h
index 19c2f3e..90edc2d 100644
--- a/ash/public/cpp/projector/projector_controller.h
+++ b/ash/public/cpp/projector/projector_controller.h
@@ -27,7 +27,9 @@
   // SODA binary and language packs are downloading.
   kSodaInstalling,
   // SODA installation failed.
-  kSodaInstallationError,
+  kSodaInstallationErrorUnspecified,
+  // SODA installation error needs reboot
+  kSodaInstallationErrorNeedsReboot,
   // SODA is available to be used.
   kAvailable
 };
diff --git a/ash/public/cpp/projector/projector_new_screencast_precondition.h b/ash/public/cpp/projector/projector_new_screencast_precondition.h
index e5434b55..7fa0185 100644
--- a/ash/public/cpp/projector/projector_new_screencast_precondition.h
+++ b/ash/public/cpp/projector/projector_new_screencast_precondition.h
@@ -31,7 +31,6 @@
 // NewScreencastPreconditionReason enum in
 // //ash/webui/projector_app/resources/communication/message_types.js.
 enum class ASH_PUBLIC_EXPORT NewScreencastPreconditionReason {
-  kSodaInstallationError = 0,
   kOnDeviceSpeechRecognitionNotSupported = 1,
   kUserLocaleNotSupported = 2,
   kInProjectorSession = 3,
@@ -42,6 +41,10 @@
   kDriveFsUnmounted = 8,    // Drive could be re-enabled from the Setting.
   kDriveFsMountFailed = 9,  // Drive will not be automatically retried to mount.
   kOthers = 10,
+
+  // Soda installation errors.
+  kSodaInstallationErrorUnspecified = 0,
+  kSodaInstallationErrorNeedsReboot = 1
 };
 
 // Struct used to provide the new screen cast precondition state and the reasons
diff --git a/ash/quick_pair/repository/fast_pair_repository_impl.cc b/ash/quick_pair/repository/fast_pair_repository_impl.cc
index 2e6ab4b..2adf196 100644
--- a/ash/quick_pair/repository/fast_pair_repository_impl.cc
+++ b/ash/quick_pair/repository/fast_pair_repository_impl.cc
@@ -400,8 +400,7 @@
       base::HexEncode(account_key),
       base::BindOnce(
           &FastPairRepositoryImpl::OnDeleteAssociatedDeviceByAccountKey,
-          weak_ptr_factory_.GetWeakPtr(), std::move(account_key),
-          std::move(callback)));
+          weak_ptr_factory_.GetWeakPtr(), account_key, std::move(callback)));
 }
 
 void FastPairRepositoryImpl::OnDeleteAssociatedDeviceByAccountKey(
diff --git a/ash/shelf/scrollable_shelf_view_pixeltest.cc b/ash/shelf/scrollable_shelf_view_pixeltest.cc
new file mode 100644
index 0000000..66c2c3ae
--- /dev/null
+++ b/ash/shelf/scrollable_shelf_view_pixeltest.cc
@@ -0,0 +1,48 @@
+// Copyright (c) 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ash/shelf/test/scrollable_shelf_test_base.h"
+#include "ash/test/ash_pixel_diff_test_helper.h"
+#include "ash/test/ash_pixel_test_init_params.h"
+
+namespace ash {
+
+class ScrollableShelfViewPixelRTLTest
+    : public ScrollableShelfTestBase,
+      public testing::WithParamInterface<bool /*is_rtl=*/> {
+ public:
+  ScrollableShelfViewPixelRTLTest() {
+    PrepareForPixelDiffTest();
+    if (GetParam()) {
+      pixel_test::InitParams init_params;
+      init_params.under_rtl = true;
+      SetPixelTestInitParam(init_params);
+    }
+  }
+  ScrollableShelfViewPixelRTLTest(const ScrollableShelfViewPixelRTLTest&) =
+      delete;
+  ScrollableShelfViewPixelRTLTest& operator=(
+      const ScrollableShelfViewPixelRTLTest&) = delete;
+  ~ScrollableShelfViewPixelRTLTest() override = default;
+
+  // ScrollableShelfTestBase:
+  void SetUp() override {
+    ScrollableShelfTestBase::SetUp();
+    pixel_test_helper_.InitSkiaGoldPixelDiff("scrollable_shelf_view_pixel");
+    AddAppShortcutsUntilOverflow(/*use_alternative_color=*/true);
+  }
+
+  AshPixelDiffTestHelper pixel_test_helper_;
+};
+
+INSTANTIATE_TEST_SUITE_P(RTL, ScrollableShelfViewPixelRTLTest, testing::Bool());
+
+// Verifies the scrollable shelf under overflow.
+TEST_P(ScrollableShelfViewPixelRTLTest, Basics) {
+  EXPECT_TRUE(pixel_test_helper_.CompareUiComponentScreenshot(
+      GetParam() ? "overflow_rtl" : "overflow",
+      AshPixelDiffTestHelper::UiComponent::kShelfWidget));
+}
+
+}  // namespace ash
diff --git a/ash/shelf/scrollable_shelf_view_unittest.cc b/ash/shelf/scrollable_shelf_view_unittest.cc
index 10df04c..f92e974 100644
--- a/ash/shelf/scrollable_shelf_view_unittest.cc
+++ b/ash/shelf/scrollable_shelf_view_unittest.cc
@@ -17,6 +17,7 @@
 #include "ash/shelf/shelf_tooltip_manager.h"
 #include "ash/shelf/shelf_view_test_api.h"
 #include "ash/shelf/shelf_widget.h"
+#include "ash/shelf/test/scrollable_shelf_test_base.h"
 #include "ash/shell.h"
 #include "ash/test/ash_test_base.h"
 #include "ash/wm/overview/overview_controller.h"
@@ -118,52 +119,14 @@
   void Close() override {}
 };
 
-class ScrollableShelfViewTest : public AshTestBase {
+class ScrollableShelfViewTest : public ScrollableShelfTestBase {
  public:
   ScrollableShelfViewTest() = default;
   ~ScrollableShelfViewTest() override = default;
 
-  void SetUp() override {
-    AshTestBase::SetUp();
-    scrollable_shelf_view_ = GetPrimaryShelf()
-                                 ->shelf_widget()
-                                 ->hotseat_widget()
-                                 ->scrollable_shelf_view();
-    shelf_view_ = scrollable_shelf_view_->shelf_view();
-    test_api_ = std::make_unique<ShelfViewTestAPI>(
-        scrollable_shelf_view_->shelf_view());
-    test_api_->SetAnimationDuration(base::Milliseconds(1));
-  }
-
-  void TearDown() override {
-    // When the test is completed, the page flip timer should be idle.
-    EXPECT_FALSE(scrollable_shelf_view_->IsPageFlipTimerBusyForTest());
-
-    AshTestBase::TearDown();
-  }
-
  protected:
-  void PopulateAppShortcut(int number) {
-    for (int i = 0; i < number; i++)
-      AddAppShortcut();
-  }
-
   ShelfID AddAppShortcut(ShelfItemType item_type = TYPE_PINNED_APP) {
-    ShelfItem item =
-        ShelfTestUtil::AddAppShortcut(base::NumberToString(id_++), item_type);
-
-    // Wait for shelf view's bounds animation to end. Otherwise the scrollable
-    // shelf's bounds are not updated yet.
-    test_api_->RunMessageLoopUntilAnimationsDone();
-
-    return item.id;
-  }
-
-  void AddAppShortcutsUntilOverflow() {
-    while (scrollable_shelf_view_->layout_strategy_for_test() ==
-           ScrollableShelfView::kNotShowArrowButtons) {
-      AddAppShortcut();
-    }
+    return AddAppShortcutWithIconColor(item_type, SK_ColorRED);
   }
 
   // Verifies that a tappable app icon should have the correct button state when
@@ -263,11 +226,6 @@
 
     return has_rounded_corners;
   }
-
-  ScrollableShelfView* scrollable_shelf_view_ = nullptr;
-  ShelfView* shelf_view_ = nullptr;
-  std::unique_ptr<ShelfViewTestAPI> test_api_;
-  int id_ = 0;
 };
 
 // Tests scrollable shelf's features under both LTR and RTL.
diff --git a/ash/shelf/test/scrollable_shelf_test_base.cc b/ash/shelf/test/scrollable_shelf_test_base.cc
new file mode 100644
index 0000000..f93ffb9
--- /dev/null
+++ b/ash/shelf/test/scrollable_shelf_test_base.cc
@@ -0,0 +1,89 @@
+// Copyright (c) 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ash/shelf/test/scrollable_shelf_test_base.h"
+
+#include "ash/shelf/scrollable_shelf_view.h"
+#include "ash/shelf/shelf.h"
+#include "ash/shelf/shelf_test_util.h"
+#include "ash/shelf/shelf_view_test_api.h"
+#include "ash/shelf/shelf_widget.h"
+
+namespace ash {
+namespace {
+
+// The array of the candidate colors for app icons.
+constexpr std::array<SkColor, 7> kColorArray = {
+    SK_ColorWHITE,  SK_ColorRED,  SK_ColorGREEN,  SK_ColorBLUE,
+    SK_ColorYELLOW, SK_ColorCYAN, SK_ColorMAGENTA};
+
+// Create a test 1x1 icon image with a given |color|.
+gfx::ImageSkia CreateImageSkiaIcon(SkColor color) {
+  SkBitmap bitmap;
+  bitmap.allocN32Pixels(1, 1);
+  bitmap.eraseColor(color);
+  return gfx::ImageSkia::CreateFrom1xBitmap(bitmap);
+}
+
+}  // namespace
+
+ScrollableShelfTestBase::ScrollableShelfTestBase() = default;
+
+ScrollableShelfTestBase::~ScrollableShelfTestBase() = default;
+
+void ScrollableShelfTestBase::SetUp() {
+  AshTestBase::SetUp();
+  scrollable_shelf_view_ = GetPrimaryShelf()
+                               ->shelf_widget()
+                               ->hotseat_widget()
+                               ->scrollable_shelf_view();
+  shelf_view_ = scrollable_shelf_view_->shelf_view();
+  test_api_ =
+      std::make_unique<ShelfViewTestAPI>(scrollable_shelf_view_->shelf_view());
+  test_api_->SetAnimationDuration(base::Milliseconds(1));
+}
+
+void ScrollableShelfTestBase::TearDown() {
+  // When the test is completed, the page flip timer should be idle.
+  EXPECT_FALSE(scrollable_shelf_view_->IsPageFlipTimerBusyForTest());
+
+  AshTestBase::TearDown();
+}
+
+void ScrollableShelfTestBase::PopulateAppShortcut(int number,
+                                                  bool use_alternative_color) {
+  for (int i = 0; i < number; i++)
+    AddAppShortcutWithIconColor(
+        TYPE_PINNED_APP, use_alternative_color ? GetNextColor() : SK_ColorRED);
+}
+
+void ScrollableShelfTestBase::AddAppShortcutsUntilOverflow(
+    bool use_alternative_color) {
+  while (scrollable_shelf_view_->layout_strategy_for_test() ==
+         ScrollableShelfView::kNotShowArrowButtons) {
+    AddAppShortcutWithIconColor(
+        TYPE_PINNED_APP, use_alternative_color ? GetNextColor() : SK_ColorRED);
+  }
+}
+
+ShelfID ScrollableShelfTestBase::AddAppShortcutWithIconColor(
+    ShelfItemType item_type,
+    SkColor color) {
+  ShelfItem item = ShelfTestUtil::AddAppShortcutWithIcon(
+      base::NumberToString(id_++), item_type, CreateImageSkiaIcon(color));
+
+  // Wait for shelf view's bounds animation to end. Otherwise the scrollable
+  // shelf's bounds are not updated yet.
+  test_api_->RunMessageLoopUntilAnimationsDone();
+
+  return item.id;
+}
+
+SkColor ScrollableShelfTestBase::GetNextColor() {
+  const SkColor color = kColorArray[next_color_index_];
+  next_color_index_ = (next_color_index_ + 1) % kColorArray.size();
+  return color;
+}
+
+}  // namespace ash
diff --git a/ash/shelf/test/scrollable_shelf_test_base.h b/ash/shelf/test/scrollable_shelf_test_base.h
new file mode 100644
index 0000000..e36ce89
--- /dev/null
+++ b/ash/shelf/test/scrollable_shelf_test_base.h
@@ -0,0 +1,59 @@
+// Copyright (c) 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef ASH_SHELF_TEST_SCROLLABLE_SHELF_TEST_BASE_H_
+#define ASH_SHELF_TEST_SCROLLABLE_SHELF_TEST_BASE_H_
+
+#include "ash/public/cpp/shelf_types.h"
+#include "ash/test/ash_test_base.h"
+
+namespace ash {
+class ScrollableShelfView;
+class ShelfView;
+class ShelfViewTestAPI;
+
+// Shared by the scrollable shelf pixel and non-pixel tests.
+class ScrollableShelfTestBase : public AshTestBase {
+ public:
+  ScrollableShelfTestBase();
+  ScrollableShelfTestBase(const ScrollableShelfTestBase&) = delete;
+  ScrollableShelfTestBase& operator=(const ScrollableShelfTestBase&) = delete;
+  ~ScrollableShelfTestBase() override;
+
+  // AshTestBase:
+  void SetUp() override;
+  void TearDown() override;
+
+ protected:
+  // Pins some app icons to shelf. If `use_alternative_color` is true, the
+  // neighboring shelf app icons are of different colors.
+  void PopulateAppShortcut(int number, bool use_alternative_color = false);
+
+  // Keeps pinning app icons to shelf until the shelf arrow button shows.
+  // If `use_alternative_color` is true, the neighboring shelf app icons are of
+  // different colors.
+  void AddAppShortcutsUntilOverflow(bool use_alternative_color = false);
+
+  // Adds a shelf item of the specified type and color.
+  ShelfID AddAppShortcutWithIconColor(ShelfItemType item_type, SkColor color);
+
+  // Returns a color used to paint an icon. Called when neighboring pinned
+  // apps should have different icon colors.
+  SkColor GetNextColor();
+
+  ScrollableShelfView* scrollable_shelf_view_ = nullptr;
+  ShelfView* shelf_view_ = nullptr;
+  std::unique_ptr<ShelfViewTestAPI> test_api_;
+
+  // Used as the id of the next pinned app. Updates when an app is pinned.
+  int id_ = 0;
+
+  // Indicates the color to be returned by `GetNextColor()`. Updates when
+  // `GetNextColor()` is called.
+  size_t next_color_index_ = 0;
+};
+
+}  // namespace ash
+
+#endif  // ASH_SHELF_TEST_SCROLLABLE_SHELF_TEST_BASE_H_
diff --git a/ash/webui/projector_app/resources/communication/message_types.js b/ash/webui/projector_app/resources/communication/message_types.js
index 441ed6cb..59fe9f8 100644
--- a/ash/webui/projector_app/resources/communication/message_types.js
+++ b/ash/webui/projector_app/resources/communication/message_types.js
@@ -52,7 +52,6 @@
  * @enum {number}
  */
 export const NewScreencastPreconditionReason = {
-  SODA_INSTALLATION_ERROR: 0,
   ON_DEVICE_RECOGNITION_NOT_SUPPORTED: 1,
   USER_LOCALE_NOT_SUPPORTED: 2,
   IN_PROJECTOR_SESSION: 3,
@@ -63,4 +62,8 @@
   DRIVE_FS_UNMOUNTED: 8,
   DRIVE_FS_MOUNT_FAILED: 9,
   OTHERS: 10,
+
+  // Soda installation errors:
+  SODA_INSTALLATION_ERROR_UNSPECIFIED_ERROR: 0,
+  SODA_INSTALLATION_ERROR_NEEDS_REBOOT: 11,
 };
diff --git a/ash/wm/desks/desk_action_view.cc b/ash/wm/desks/desk_action_view.cc
index fa353544..4c310ae96 100644
--- a/ash/wm/desks/desk_action_view.cc
+++ b/ash/wm/desks/desk_action_view.cc
@@ -17,7 +17,6 @@
 
 namespace {
 
-constexpr int kButtonMargin = 4;
 constexpr int kButtonSpacing = 4;
 constexpr int kCornerRadius = 20;
 
@@ -34,7 +33,6 @@
           std::make_unique<CloseButton>(std::move(close_all_callback),
                                         CloseButton::Type::kMediumFloating))) {
   SetOrientation(views::BoxLayout::Orientation::kHorizontal);
-  SetInsideBorderInsets(gfx::Insets(kButtonMargin));
   SetBetweenChildSpacing(kButtonSpacing);
   SetBackground(
       views::CreateSolidBackground(AshColorProvider::Get()->GetBaseLayerColor(
@@ -59,6 +57,9 @@
 }
 
 void DeskActionView::SetCombineDesksButtonVisibility(bool visible) {
+  if (combine_desks_button_->GetVisible() == visible)
+    return;
+
   combine_desks_button_->SetVisible(visible);
 
   // When `combine_desks_button_` is invisible, we want to make sure that there
@@ -66,11 +67,6 @@
   // `close_all_button_`. Otherwise, the desk action view will appear lopsided
   // when the `combine_desks_button_` isn't visible.
   SetBetweenChildSpacing(visible ? kButtonSpacing : 0);
-
-  // We also want to make sure that the background is only showing when
-  // `combine_desks_button_` is visible. Otherwise, it should have no inside
-  // border insets so that it is only behind the `close_desk_button_`.
-  SetInsideBorderInsets(gfx::Insets(visible ? kButtonMargin : 0));
 }
 
 void DeskActionView::OnThemeChanged() {
diff --git a/ash/wm/desks/desks_unittests.cc b/ash/wm/desks/desks_unittests.cc
index dfb0503..2914c4e93 100644
--- a/ash/wm/desks/desks_unittests.cc
+++ b/ash/wm/desks/desks_unittests.cc
@@ -7847,23 +7847,6 @@
 
   const std::u16string tooltip_prefix = u"Combine with ";
   auto* event_generator = GetEventGenerator();
-
-  // Because the `DeskActionView` covers the centerpoint of the
-  // `DeskPreviewView`, we need a new function to click and drag from a part of
-  // the `DeskPreviewView` that isn't covered by the `DeskActionView`. We would
-  // not be able to simply modify `StartDragDeskPreview` because it takes a
-  // const `DeskMiniView`, which doesn't have access to its `DeskActionView`.
-  auto start_drag_on_desk_preview_for_mini_view = [event_generator](
-                                                      DeskMiniView* mini_view) {
-    gfx::Point clickable_desk_preview_point =
-        mini_view->GetPreviewBoundsInScreen().top_center();
-    clickable_desk_preview_point.set_y(
-        mini_view->desk_action_view()->GetBoundsInScreen().bottom() + 1);
-    event_generator->set_current_screen_location(clickable_desk_preview_point);
-    event_generator->PressLeftButton();
-    event_generator->MoveMouseBy(0, 50);
-  };
-
   for (const auto& test_case : kTestCases) {
     SCOPED_TRACE(test_case.scope_trace);
 
@@ -7883,7 +7866,7 @@
         break;
       case UpdateSource::kMoveActiveDesk:
         ASSERT_TRUE(controller->desks()[0]->is_active());
-        start_drag_on_desk_preview_for_mini_view(mini_view_1);
+        StartDragDeskPreview(mini_view_1, event_generator);
         ASSERT_TRUE(desks_bar_view->IsDraggingDesk());
         event_generator->MoveMouseTo(
             mini_view_2->GetPreviewBoundsInScreen().CenterPoint());
@@ -7891,7 +7874,7 @@
         break;
       case UpdateSource::kMoveNonActiveDesk:
         ASSERT_FALSE(controller->desks()[0]->is_active());
-        start_drag_on_desk_preview_for_mini_view(mini_view_2);
+        StartDragDeskPreview(mini_view_2, event_generator);
         EXPECT_TRUE(desks_bar_view->IsDraggingDesk());
         event_generator->MoveMouseTo(
             mini_view_1->GetPreviewBoundsInScreen().CenterPoint());
diff --git a/base/trace_event/trace_log.cc b/base/trace_event/trace_log.cc
index 35b1185..bccb1ca1 100644
--- a/base/trace_event/trace_log.cc
+++ b/base/trace_event/trace_log.cc
@@ -1669,8 +1669,6 @@
   if (thread_is_in_trace_event_.Get())
     return false;
 
-  DCHECK(name);
-
   // Check and update the current thread name only if the event is for the
   // current thread to avoid locks in most cases.
   if (thread_id == PlatformThread::CurrentId()) {
@@ -1709,6 +1707,8 @@
   // This is done sooner rather than later, to avoid creating the event and
   // acquiring the lock, which is not needed for ETW as it's already threadsafe.
   if (*category_group_enabled & TraceCategory::ENABLED_FOR_ETW_EXPORT) {
+    // ETW export expects non-null event names.
+    name = name ? name : "";
     TraceEventETWExport::AddEvent(phase, category_group_enabled, name, id,
                                   args);
   }
diff --git a/build/fuchsia/linux_internal.sdk.sha1 b/build/fuchsia/linux_internal.sdk.sha1
index 8ef90c7..80123154 100644
--- a/build/fuchsia/linux_internal.sdk.sha1
+++ b/build/fuchsia/linux_internal.sdk.sha1
@@ -1 +1 @@
-9.20220811.0.1
+9.20220811.1.1
diff --git a/cc/paint/oop_pixeltest.cc b/cc/paint/oop_pixeltest.cc
index c98c868b..be15de4 100644
--- a/cc/paint/oop_pixeltest.cc
+++ b/cc/paint/oop_pixeltest.cc
@@ -11,54 +11,41 @@
 #include "base/files/file_path.h"
 #include "base/memory/raw_ptr.h"
 #include "base/path_service.h"
-#include "base/strings/stringprintf.h"
 #include "base/test/test_switches.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "build/build_config.h"
 #include "cc/base/completion_event.h"
-#include "cc/base/region.h"
-#include "cc/layers/recording_source.h"
 #include "cc/paint/display_item_list.h"
 #include "cc/paint/paint_filter.h"
 #include "cc/paint/paint_flags.h"
 #include "cc/paint/paint_image_builder.h"
 #include "cc/raster/playback_image_provider.h"
-#include "cc/raster/raster_source.h"
 #include "cc/test/pixel_comparator.h"
 #include "cc/test/pixel_test_utils.h"
 #include "cc/tiles/gpu_image_decode_cache.h"
 #include "components/viz/service/gl/gpu_service_impl.h"
+#include "components/viz/test/buildflags.h"
 #include "components/viz/test/paths.h"
 #include "components/viz/test/test_gpu_service_holder.h"
 #include "components/viz/test/test_in_process_context_provider.h"
-#include "gpu/GLES2/gl2extchromium.h"
-#include "gpu/command_buffer/client/gles2_implementation.h"
-#include "gpu/command_buffer/client/gles2_interface.h"
 #include "gpu/command_buffer/client/raster_implementation.h"
-#include "gpu/command_buffer/client/raster_implementation_gles.h"
 #include "gpu/command_buffer/client/shared_image_interface.h"
-#include "gpu/command_buffer/client/shared_memory_limits.h"
-#include "gpu/command_buffer/common/context_creation_attribs.h"
 #include "gpu/command_buffer/common/shared_image_usage.h"
 #include "gpu/command_buffer/service/gr_shader_cache.h"
-#include "gpu/config/gpu_switches.h"
-#include "gpu/ipc/gl_in_process_context.h"
-#include "gpu/skia_bindings/grcontext_for_gles2_interface.h"
 #include "ipc/common/gpu_client_ids.h"
 #include "skia/ext/legacy_display_globals.h"
 #include "testing/gtest/include/gtest/gtest.h"
-#include "third_party/khronos/GLES2/gl2ext.h"
+#include "third_party/skia/include/core/SkAlphaType.h"
 #include "third_party/skia/include/core/SkColor.h"
+#include "third_party/skia/include/core/SkColorSpace.h"
+#include "third_party/skia/include/core/SkColorType.h"
 #include "third_party/skia/include/core/SkGraphics.h"
 #include "third_party/skia/include/core/SkPictureRecorder.h"
 #include "third_party/skia/include/core/SkRect.h"
 #include "third_party/skia/include/core/SkSurface.h"
 #include "third_party/skia/include/core/SkTextBlob.h"
 #include "third_party/skia/include/core/SkYUVAInfo.h"
-#include "third_party/skia/include/gpu/GrBackendSurface.h"
 #include "third_party/skia/include/gpu/GrDirectContext.h"
-#include "third_party/skia/include/gpu/GrYUVABackendTextures.h"
-#include "ui/gfx/geometry/axis_transform2d.h"
 #include "ui/gfx/geometry/rect_conversions.h"
 #include "ui/gfx/geometry/skia_conversions.h"
 #include "ui/gl/gl_implementation.h"
@@ -113,14 +100,7 @@
  public:
   OopPixelTest() : gr_shader_cache_(kCacheLimitBytes, this) {}
 
-  void SetUp() override {
-    InitializeOOPContext();
-    gles2_context_provider_ =
-        base::MakeRefCounted<viz::TestInProcessContextProvider>(
-            viz::TestContextType::kGLES2, /*support_locking=*/true);
-    gpu::ContextResult result = gles2_context_provider_->BindToCurrentThread();
-    DCHECK_EQ(result, gpu::ContextResult::kSuccess);
-  }
+  void SetUp() override { InitializeOOPContext(); }
 
   // gpu::raster::GrShaderCache::Client implementation.
   void StoreShader(const std::string& key, const std::string& shader) override {
@@ -197,18 +177,16 @@
     int height = options.resource_size.height();
 
     // Create and allocate a shared image on the raster interface.
-    auto* raster_implementation = raster_context_provider_->RasterInterface();
+    auto* ri = raster_context_provider_->RasterInterface();
     auto* sii = raster_context_provider_->SharedImageInterface();
     uint32_t flags = gpu::SHARED_IMAGE_USAGE_RASTER |
-                     gpu::SHARED_IMAGE_USAGE_OOP_RASTERIZATION |
-                     gpu::SHARED_IMAGE_USAGE_GLES2;
+                     gpu::SHARED_IMAGE_USAGE_OOP_RASTERIZATION;
     gpu::Mailbox mailbox = sii->CreateSharedImage(
         viz::ResourceFormat::RGBA_8888, gfx::Size(width, height),
         options.target_color_params.color_space, kTopLeft_GrSurfaceOrigin,
         kPremul_SkAlphaType, flags, gpu::kNullSurfaceHandle);
     EXPECT_TRUE(mailbox.Verify());
-    raster_implementation->WaitSyncTokenCHROMIUM(
-        sii->GenUnverifiedSyncToken().GetConstData());
+    ri->WaitSyncTokenCHROMIUM(sii->GenUnverifiedSyncToken().GetConstData());
 
     // Assume legacy MSAA if sample count is positive.
     gpu::raster::MsaaMode msaa_mode = options.msaa_sample_count > 0
@@ -216,20 +194,20 @@
                                           : gpu::raster::kNoMSAA;
 
     if (options.preclear) {
-      raster_implementation->BeginRasterCHROMIUM(
+      ri->BeginRasterCHROMIUM(
           options.preclear_color,
           /*needs_clear=*/options.preclear, options.msaa_sample_count,
           msaa_mode, options.use_lcd_text,
           /*visible=*/true, options.target_color_params.color_space,
           mailbox.name);
-      raster_implementation->EndRasterCHROMIUM();
+      ri->EndRasterCHROMIUM();
     }
 
     // "Out of process" raster! \o/
     // If |options.preclear| is true, the mailbox has already been cleared by
     // the BeginRasterCHROMIUM call above, and we want to test that it is indeed
     // cleared, so set |needs_clear| to false here.
-    raster_implementation->BeginRasterCHROMIUM(
+    ri->BeginRasterCHROMIUM(
         options.background_color,
         /*needs_clear=*/!options.preclear, options.msaa_sample_count, msaa_mode,
         options.use_lcd_text,
@@ -237,76 +215,40 @@
         mailbox.name);
     size_t max_op_size_limit =
         gpu::raster::RasterInterface::kDefaultMaxOpSizeHint;
-    raster_implementation->RasterCHROMIUM(
-        display_item_list.get(), &image_provider, options.content_size,
-        options.full_raster_rect, options.playback_rect, options.post_translate,
-        gfx::Vector2dF(options.post_scale, options.post_scale),
-        options.requires_clear, &max_op_size_limit);
+    ri->RasterCHROMIUM(display_item_list.get(), &image_provider,
+                       options.content_size, options.full_raster_rect,
+                       options.playback_rect, options.post_translate,
+                       gfx::Vector2dF(options.post_scale, options.post_scale),
+                       options.requires_clear, &max_op_size_limit);
     for (const auto& list : options.additional_lists) {
-      raster_implementation->RasterCHROMIUM(
-          list.get(), &image_provider, options.content_size,
-          options.full_raster_rect, options.playback_rect,
-          options.post_translate,
-          gfx::Vector2dF(options.post_scale, options.post_scale),
-          options.requires_clear, &max_op_size_limit);
+      ri->RasterCHROMIUM(list.get(), &image_provider, options.content_size,
+                         options.full_raster_rect, options.playback_rect,
+                         options.post_translate,
+                         gfx::Vector2dF(options.post_scale, options.post_scale),
+                         options.requires_clear, &max_op_size_limit);
     }
-    raster_implementation->EndRasterCHROMIUM();
-    raster_implementation->OrderingBarrierCHROMIUM();
+    ri->EndRasterCHROMIUM();
+    ri->OrderingBarrierCHROMIUM();
 
-    EXPECT_EQ(raster_implementation->GetError(),
-              static_cast<unsigned>(GL_NO_ERROR));
+    EXPECT_EQ(ri->GetError(), static_cast<unsigned>(GL_NO_ERROR));
 
-    gpu::gles2::GLES2Interface* gl = gles2_context_provider_->ContextGL();
-    SkBitmap result = ReadbackMailbox(gl, mailbox, options);
+    SkBitmap result = ReadbackMailbox(ri, mailbox, options.resource_size);
     gpu::SyncToken sync_token;
-    gl->GenUnverifiedSyncTokenCHROMIUM(sync_token.GetData());
+    ri->GenUnverifiedSyncTokenCHROMIUM(sync_token.GetData());
     sii->DestroySharedImage(sync_token, mailbox);
     return result;
   }
 
-  SkBitmap ReadbackMailbox(gpu::gles2::GLES2Interface* gl,
+  SkBitmap ReadbackMailbox(gpu::raster::RasterInterface* ri,
                            const gpu::Mailbox& mailbox,
-                           const RasterOptions& options) {
-    // Import the texture in gl, create an fbo and bind the texture to it.
-    GLuint gl_texture_id =
-        gl->CreateAndTexStorage2DSharedImageCHROMIUM(mailbox.name);
-    gl->BeginSharedImageAccessDirectCHROMIUM(
-        gl_texture_id, GL_SHARED_IMAGE_ACCESS_MODE_READ_CHROMIUM);
-    GLuint fbo_id;
-    gl->GenFramebuffers(1, &fbo_id);
-    gl->BindFramebuffer(GL_FRAMEBUFFER, fbo_id);
-    gl->FramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
-                             GL_TEXTURE_2D, gl_texture_id, 0);
-
-    // Read the data back.
-    int width = options.resource_size.width();
-    int height = options.resource_size.height();
-    std::unique_ptr<unsigned char[]> data(
-        new unsigned char[width * height * 4]);
-    gl->ReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, data.get());
-
-    gl->DeleteFramebuffers(1, &fbo_id);
-
-    gl->EndSharedImageAccessDirectCHROMIUM(gl_texture_id);
-    gl->DeleteTextures(1, &gl_texture_id);
-
-    // Swizzle rgba->bgra
-    std::vector<SkPMColor> colors;
-    colors.reserve(width * height);
-    for (int h = 0; h < height; ++h) {
-      for (int w = 0; w < width; ++w) {
-        int i = (h * width + w) * 4;
-        colors.push_back(SkPreMultiplyARGB(data[i + 3], data[i + 0],
-                                           data[i + 1], data[i + 2]));
-      }
-    }
-
-    SkBitmap bitmap;
-    bitmap.allocN32Pixels(width, height);
-    SkPixmap pixmap(SkImageInfo::MakeN32Premul(width, height), colors.data(),
-                    width * sizeof(SkColor));
-    bitmap.writePixels(pixmap);
-    return bitmap;
+                           const gfx::Size& image_size) {
+    SkImageInfo image_info =
+        SkImageInfo::MakeN32Premul(image_size.width(), image_size.height());
+    SkBitmap result;
+    result.allocPixels(image_info);
+    ri->ReadbackImagePixels(mailbox, image_info, image_info.minRowBytes(), 0, 0,
+                            result.getPixels());
+    return result;
   }
 
   gpu::Mailbox CreateMailboxSharedImage(gpu::raster::RasterInterface* ri,
@@ -314,8 +256,7 @@
                                         const RasterOptions& options,
                                         viz::ResourceFormat image_format) {
     uint32_t flags = gpu::SHARED_IMAGE_USAGE_RASTER |
-                     gpu::SHARED_IMAGE_USAGE_OOP_RASTERIZATION |
-                     gpu::SHARED_IMAGE_USAGE_GLES2;
+                     gpu::SHARED_IMAGE_USAGE_OOP_RASTERIZATION;
     gpu::Mailbox mailbox = sii->CreateSharedImage(
         image_format, options.resource_size,
         options.target_color_params.color_space, kTopLeft_GrSurfaceOrigin,
@@ -326,23 +267,14 @@
     return mailbox;
   }
 
-  void UploadPixels(gpu::gles2::GLES2Interface* gl,
+  void UploadPixels(gpu::raster::RasterInterface* ri,
                     const gpu::Mailbox& mailbox,
-                    const gfx::Size& size,
-                    GLenum format,
-                    GLenum type,
-                    const void* data) {
-    GLuint texture = gl->CreateAndTexStorage2DSharedImageCHROMIUM(mailbox.name);
-    gl->BeginSharedImageAccessDirectCHROMIUM(
-        texture, GL_SHARED_IMAGE_ACCESS_MODE_READWRITE_CHROMIUM);
-    gl->BindTexture(GL_TEXTURE_2D, texture);
-    gl->TexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, size.width(), size.height(),
-                      format, type, data);
-
-    gl->BindTexture(GL_TEXTURE_2D, 0);
-    gl->EndSharedImageAccessDirectCHROMIUM(texture);
-
-    gl->DeleteTextures(1, &texture);
+                    const SkImageInfo& info,
+                    const SkBitmap& bitmap) {
+    ri->WritePixels(mailbox, 0, 0, 0, info.minRowBytes(), info,
+                    bitmap.getPixels());
+    ri->OrderingBarrierCHROMIUM();
+    EXPECT_EQ(ri->GetError(), static_cast<unsigned>(GL_NO_ERROR));
   }
 
   // Verifies |actual| matches the expected PNG image.
@@ -374,7 +306,6 @@
  protected:
   static constexpr size_t kWorkingSetSize = 64 * 1024 * 1024;
   scoped_refptr<viz::TestInProcessContextProvider> raster_context_provider_;
-  scoped_refptr<viz::TestInProcessContextProvider> gles2_context_provider_;
   std::unique_ptr<GpuImageDecodeCache> oop_image_cache_;
   gl::DisableNullDrawGLBindings enable_pixel_output_;
   std::unique_ptr<ImageProvider> image_provider_;
@@ -843,10 +774,7 @@
       ri, sii, options, viz::ResourceFormat::RGBA_8888);
   ri->OrderingBarrierCHROMIUM();
 
-  auto* gl = gles2_context_provider_->ContextGL();
-  UploadPixels(gl, src_mailbox, options.resource_size, GL_RGBA,
-               GL_UNSIGNED_BYTE, expected_bitmap.getPixels());
-  gl->OrderingBarrierCHROMIUM();
+  UploadPixels(ri, src_mailbox, expected_bitmap.info(), expected_bitmap);
 
   auto src_paint_image =
       PaintImageBuilder::WithDefault()
@@ -1505,7 +1433,8 @@
   options.post_scale = 2.f;
 
   auto actual = Raster(display_item_list, options);
-  ExpectEquals(actual, FILE_PATH_LITERAL("oop_draw_rect_query.png"));
+  ExpectEquals(actual, FILE_PATH_LITERAL("oop_draw_rect_query.png"),
+               FuzzyPixelOffByOneComparator(/*discard_alpha=*/false));
 }
 
 TEST_F(OopPixelTest, DrawRectColorSpace) {
@@ -2147,32 +2076,15 @@
       SkImageInfo::MakeN32Premul(dest_size.width(), dest_size.height()),
       expected_pixels.data(), dest_size.width() * sizeof(SkColor));
 
-  ri->WritePixels(dest_mailbox, 0, 0, 0, expected.info().minRowBytes(),
-                  expected.info(), expected.getPixels());
-  ri->OrderingBarrierCHROMIUM();
-  EXPECT_EQ(ri->GetError(), static_cast<unsigned>(GL_NO_ERROR));
+  UploadPixels(ri, dest_mailbox, expected.info(), expected);
 
-  gpu::gles2::GLES2Interface* gl = gles2_context_provider_->ContextGL();
-  SkBitmap actual = ReadbackMailbox(gl, dest_mailbox, options);
+  SkBitmap actual = ReadbackMailbox(ri, dest_mailbox, options.resource_size);
   gpu::SyncToken sync_token;
-  gl->GenUnverifiedSyncTokenCHROMIUM(sync_token.GetData());
+  ri->GenUnverifiedSyncTokenCHROMIUM(sync_token.GetData());
   sii->DestroySharedImage(sync_token, dest_mailbox);
   ExpectEquals(actual, expected);
 }
 
-namespace {
-GrBackendTexture MakeBackendTexture(gpu::gles2::GLES2Interface* gl,
-                                    const gpu::Mailbox& mailbox,
-                                    gfx::Size size,
-                                    GLenum type) {
-  GrGLTextureInfo tex_info = {
-      GL_TEXTURE_2D, gl->CreateAndTexStorage2DSharedImageCHROMIUM(mailbox.name),
-      type};
-  return GrBackendTexture(size.width(), size.height(), GrMipMapped::kNo,
-                          tex_info);
-}
-}  // namespace
-
 TEST_F(OopPixelTest, CopySubTexture) {
   const gfx::Size size(16, 16);
   auto* ri = raster_context_provider_->RasterInterface();
@@ -2238,145 +2150,73 @@
   EXPECT_EQ(*upload_bitmap.getAddr32(0, 0), *readback_bitmap.getAddr32(0, 0));
 }
 
+// The Android emulator does not support RED_8 or RG_88 texture formats.
+#if !BUILDFLAG(IS_ANDROID_EMULATOR)
 TEST_F(OopPixelTest, ConvertYUVToRGB) {
   RasterOptions options(gfx::Size(16, 16));
   RasterOptions uv_options(gfx::Size(options.resource_size.width() / 2,
                                      options.resource_size.height() / 2));
   auto* ri = raster_context_provider_->RasterInterface();
   auto* sii = raster_context_provider_->SharedImageInterface();
+
   gpu::Mailbox dest_mailbox = CreateMailboxSharedImage(
       ri, sii, options, viz::ResourceFormat::RGBA_8888);
+
+  constexpr viz::ResourceFormat format = viz::ResourceFormat::RED_8;
   gpu::Mailbox yuv_mailboxes[3]{
-      CreateMailboxSharedImage(ri, sii, options,
-                               viz::ResourceFormat::LUMINANCE_8),
-      CreateMailboxSharedImage(ri, sii, uv_options,
-                               viz::ResourceFormat::LUMINANCE_8),
-      CreateMailboxSharedImage(ri, sii, uv_options,
-                               viz::ResourceFormat::LUMINANCE_8)};
+      CreateMailboxSharedImage(ri, sii, options, format),
+      CreateMailboxSharedImage(ri, sii, uv_options, format),
+      CreateMailboxSharedImage(ri, sii, uv_options, format)};
 
-  size_t y_pixels_size = options.resource_size.GetArea();
-  size_t uv_pixels_size = uv_options.resource_size.GetArea();
-  auto y_pix = std::make_unique<uint8_t[]>(y_pixels_size);
-  auto u_pix = std::make_unique<uint8_t[]>(uv_pixels_size);
-  auto v_pix = std::make_unique<uint8_t[]>(uv_pixels_size);
+  SkImageInfo y_info = SkImageInfo::Make(
+      options.resource_size.width(), options.resource_size.height(),
+      kGray_8_SkColorType, kPremul_SkAlphaType,
+      options.target_color_params.color_space.ToSkColorSpace());
 
-  // Create a blue image
-  memset(y_pix.get(), 0x1d, y_pixels_size);
-  memset(u_pix.get(), 0xff, uv_pixels_size);
-  memset(v_pix.get(), 0x6b, uv_pixels_size);
+  SkImageInfo uv_info = SkImageInfo::Make(
+      uv_options.resource_size.width(), uv_options.resource_size.height(),
+      kGray_8_SkColorType, kPremul_SkAlphaType,
+      uv_options.target_color_params.color_space.ToSkColorSpace());
 
-  // Upload initial yuv image data
-  gpu::gles2::GLES2Interface* gl = gles2_context_provider_->ContextGL();
-  UploadPixels(gl, yuv_mailboxes[0], options.resource_size, GL_LUMINANCE,
-               GL_UNSIGNED_BYTE, y_pix.get());
-  UploadPixels(gl, yuv_mailboxes[1], uv_options.resource_size, GL_LUMINANCE,
-               GL_UNSIGNED_BYTE, u_pix.get());
-  UploadPixels(gl, yuv_mailboxes[2], uv_options.resource_size, GL_LUMINANCE,
-               GL_UNSIGNED_BYTE, v_pix.get());
-  gl->OrderingBarrierCHROMIUM();
+  // Create Y+U+V image planes for a solid blue image.
+  SkBitmap y_bitmap;
+  y_bitmap.allocPixels(y_info);
+  memset(y_bitmap.getPixels(), 0x1d, y_bitmap.computeByteSize());
+
+  SkBitmap u_bitmap;
+  u_bitmap.allocPixels(uv_info);
+  memset(u_bitmap.getPixels(), 0xff, u_bitmap.computeByteSize());
+
+  SkBitmap v_bitmap;
+  v_bitmap.allocPixels(uv_info);
+  memset(v_bitmap.getPixels(), 0x6b, v_bitmap.computeByteSize());
+
+  // Upload initial Y+U+V planes and convert to RGB.
+  UploadPixels(ri, yuv_mailboxes[0], y_info, y_bitmap);
+  UploadPixels(ri, yuv_mailboxes[1], uv_info, u_bitmap);
+  UploadPixels(ri, yuv_mailboxes[2], uv_info, v_bitmap);
 
   ri->ConvertYUVAMailboxesToRGB(dest_mailbox, kJPEG_SkYUVColorSpace,
                                 SkColorSpace::MakeSRGB().get(),
                                 SkYUVAInfo::PlaneConfig::kY_U_V,
                                 SkYUVAInfo::Subsampling::k420, yuv_mailboxes);
   ri->OrderingBarrierCHROMIUM();
-  SkBitmap actual_bitmap = ReadbackMailbox(gl, dest_mailbox, options);
+  SkBitmap actual_bitmap =
+      ReadbackMailbox(ri, dest_mailbox, options.resource_size);
 
-  // Create the expected result using SkImage::MakeFromYUVTextures
-  GrBackendTexture backend_textures[3];
-  backend_textures[0] = MakeBackendTexture(
-      gl, yuv_mailboxes[0], options.resource_size, GL_LUMINANCE8_EXT);
-  backend_textures[1] = MakeBackendTexture(
-      gl, yuv_mailboxes[1], uv_options.resource_size, GL_LUMINANCE8_EXT);
-  backend_textures[2] = MakeBackendTexture(
-      gl, yuv_mailboxes[2], uv_options.resource_size, GL_LUMINANCE8_EXT);
+  SkBitmap expected_bitmap = MakeSolidColorBitmap(
+      options.resource_size,
+      SkColor4f::FromColor(SkColorSetARGB(255, 0, 0, 254)));
 
-  SkYUVAInfo yuva_info(
-      {options.resource_size.width(), options.resource_size.height()},
-      SkYUVAInfo::PlaneConfig::kY_U_V, SkYUVAInfo::Subsampling::k420,
-      kJPEG_Full_SkYUVColorSpace);
-  GrYUVABackendTextures yuva_textures(yuva_info, backend_textures,
-                                      kTopLeft_GrSurfaceOrigin);
-
-  auto expected_image = SkImage::MakeFromYUVATextures(
-      gles2_context_provider_->GrContext(), yuva_textures);
-
-  SkBitmap expected_bitmap;
-  expected_bitmap.allocN32Pixels(options.resource_size.width(),
-                                 options.resource_size.height());
-
-  for (auto& backend : backend_textures) {
-    GrGLTextureInfo info;
-    if (backend.getGLTextureInfo(&info)) {
-      gl->BeginSharedImageAccessDirectCHROMIUM(
-          info.fID, GL_SHARED_IMAGE_ACCESS_MODE_READ_CHROMIUM);
-    }
-  }
-
-  expected_image->readPixels(expected_bitmap.pixmap(), 0, 0);
   ExpectEquals(actual_bitmap, expected_bitmap);
 
-  for (auto& backend : backend_textures) {
-    GrGLTextureInfo info;
-    if (backend.getGLTextureInfo(&info)) {
-      gl->EndSharedImageAccessDirectCHROMIUM(info.fID);
-      gl->DeleteTextures(1, &info.fID);
-    }
-  }
-
   gpu::SyncToken sync_token;
-  gl->GenUnverifiedSyncTokenCHROMIUM(sync_token.GetData());
   sii->DestroySharedImage(sync_token, dest_mailbox);
   sii->DestroySharedImage(sync_token, yuv_mailboxes[0]);
   sii->DestroySharedImage(sync_token, yuv_mailboxes[1]);
   sii->DestroySharedImage(sync_token, yuv_mailboxes[2]);
 }
 
-TEST_F(OopPixelTest, ReadbackImagePixels) {
-  RasterOptions options(gfx::Size(16, 16));
-  SkImageInfo dest_info = SkImageInfo::MakeN32Premul(
-      options.resource_size.width(), options.resource_size.height(),
-      gfx::ColorSpace::CreateSRGB().ToSkColorSpace());
-
-  SkBitmap expected_bitmap;
-  expected_bitmap.allocPixels(dest_info);
-
-  SkCanvas canvas(expected_bitmap, SkSurfaceProps{});
-  canvas.drawColor(SkColors::kMagenta);
-  SkPaint green;
-  green.setColor(SkColors::kGreen);
-  canvas.drawRect(SkRect::MakeXYWH(1, 2, 3, 4), green);
-
-  auto* ri = raster_context_provider_->RasterInterface();
-  auto* sii = raster_context_provider_->SharedImageInterface();
-  gpu::Mailbox mailbox = CreateMailboxSharedImage(
-      ri, sii, options, viz::ResourceFormat::RGBA_8888);
-  ri->OrderingBarrierCHROMIUM();
-
-  gpu::gles2::GLES2Interface* gl = gles2_context_provider_->ContextGL();
-  UploadPixels(gl, mailbox, options.resource_size, GL_RGBA, GL_UNSIGNED_BYTE,
-               expected_bitmap.getPixels());
-  gl->OrderingBarrierCHROMIUM();
-
-  SkBitmap actual_bitmap;
-  actual_bitmap.allocPixels(dest_info);
-
-  ri->ReadbackImagePixels(mailbox, dest_info, dest_info.minRowBytes(), 0, 0,
-                          actual_bitmap.getPixels());
-  EXPECT_EQ(ri->GetError(), static_cast<unsigned>(GL_NO_ERROR));
-  ri->OrderingBarrierCHROMIUM();
-
-  ExpectEquals(actual_bitmap, expected_bitmap);
-
-  gpu::SyncToken sync_token;
-  gl->GenUnverifiedSyncTokenCHROMIUM(sync_token.GetData());
-  sii->DestroySharedImage(sync_token, mailbox);
-}
-
-// A workaround on Android that forces the use of GLES 2.0 instead of 3.0
-// prevents the use of the GL_RG textures required for NV12 format. This
-// test will be reactiviated on Android once the workaround is removed.
-#if !BUILDFLAG(IS_ANDROID)
 TEST_F(OopPixelTest, ConvertNV12ToRGB) {
   RasterOptions options(gfx::Size(16, 16));
   RasterOptions uv_options(gfx::Size(options.resource_size.width() / 2,
@@ -2387,82 +2227,57 @@
   gpu::Mailbox dest_mailbox = CreateMailboxSharedImage(
       ri, sii, options, viz::ResourceFormat::RGBA_8888);
   gpu::Mailbox y_uv_mailboxes[2]{
-      CreateMailboxSharedImage(ri, sii, options,
-                               viz::ResourceFormat::LUMINANCE_8),
+      CreateMailboxSharedImage(ri, sii, options, viz::ResourceFormat::RED_8),
       CreateMailboxSharedImage(ri, sii, uv_options, viz::ResourceFormat::RG_88),
   };
 
-  size_t y_pixels_size = options.resource_size.GetArea();
-  size_t uv_pixels_size = uv_options.resource_size.GetArea() * 2;
-  auto y_pix = std::make_unique<uint8_t[]>(y_pixels_size);
-  auto uv_pix = std::make_unique<uint8_t[]>(uv_pixels_size);
+  SkImageInfo y_info = SkImageInfo::Make(
+      options.resource_size.width(), options.resource_size.height(),
+      kGray_8_SkColorType, kPremul_SkAlphaType,
+      options.target_color_params.color_space.ToSkColorSpace());
 
-  memset(y_pix.get(), 0x1d, y_pixels_size);
-  for (size_t i = 0; i < uv_pixels_size; i += 2) {
+  SkImageInfo uv_info = SkImageInfo::Make(
+      uv_options.resource_size.width(), uv_options.resource_size.height(),
+      kR8G8_unorm_SkColorType, kPremul_SkAlphaType,
+      uv_options.target_color_params.color_space.ToSkColorSpace());
+
+  // Create Y+UV image planes for a solid blue image.
+  SkBitmap y_bitmap;
+  y_bitmap.allocPixels(y_info);
+  memset(y_bitmap.getPixels(), 0x1d, y_bitmap.computeByteSize());
+
+  SkBitmap uv_bitmap;
+  uv_bitmap.allocPixels(uv_info);
+  uint8_t* uv_pix = static_cast<uint8_t*>(uv_bitmap.getPixels());
+  for (size_t i = 0; i < uv_bitmap.computeByteSize(); i += 2) {
     uv_pix[i] = 0xff;
     uv_pix[i + 1] = 0x6d;
   }
 
-  gpu::gles2::GLES2Interface* gl = gles2_context_provider_->ContextGL();
-  UploadPixels(gl, y_uv_mailboxes[0], options.resource_size, GL_LUMINANCE,
-               GL_UNSIGNED_BYTE, y_pix.get());
-  UploadPixels(gl, y_uv_mailboxes[1], uv_options.resource_size, GL_RG,
-               GL_UNSIGNED_BYTE, uv_pix.get());
-  gl->OrderingBarrierCHROMIUM();
+  // Upload initial Y+UV planes and convert to RGB.
+  UploadPixels(ri, y_uv_mailboxes[0], y_info, y_bitmap);
+  UploadPixels(ri, y_uv_mailboxes[1], uv_info, uv_bitmap);
 
   ri->ConvertYUVAMailboxesToRGB(dest_mailbox, kJPEG_SkYUVColorSpace,
                                 SkColorSpace::MakeSRGB().get(),
                                 SkYUVAInfo::PlaneConfig::kY_UV,
                                 SkYUVAInfo::Subsampling::k420, y_uv_mailboxes);
   ri->OrderingBarrierCHROMIUM();
-  SkBitmap actual_bitmap = ReadbackMailbox(gl, dest_mailbox, options);
+  SkBitmap actual_bitmap =
+      ReadbackMailbox(ri, dest_mailbox, options.resource_size);
 
-  // Create the expected result using SkImage::MakeFromYUVTextures
-  GrBackendTexture backend_textures[2];
-  backend_textures[0] = MakeBackendTexture(
-      gl, y_uv_mailboxes[0], options.resource_size, GL_LUMINANCE8_EXT);
-  backend_textures[1] = MakeBackendTexture(gl, y_uv_mailboxes[1],
-                                           uv_options.resource_size, GL_RG8);
+  SkBitmap expected_bitmap = MakeSolidColorBitmap(
+      options.resource_size,
+      SkColor4f::FromColor(SkColorSetARGB(255, 2, 0, 254)));
 
-  SkYUVAInfo yuva_info(
-      {options.resource_size.width(), options.resource_size.height()},
-      SkYUVAInfo::PlaneConfig::kY_UV, SkYUVAInfo::Subsampling::k420,
-      kJPEG_Full_SkYUVColorSpace);
-  GrYUVABackendTextures yuva_textures(yuva_info, backend_textures,
-                                      kTopLeft_GrSurfaceOrigin);
-  auto expected_image = SkImage::MakeFromYUVATextures(
-      gles2_context_provider_->GrContext(), yuva_textures);
-
-  SkBitmap expected_bitmap;
-  expected_bitmap.allocN32Pixels(options.resource_size.width(),
-                                 options.resource_size.height());
-
-  for (auto& backend : backend_textures) {
-    GrGLTextureInfo info;
-    if (backend.getGLTextureInfo(&info)) {
-      gl->BeginSharedImageAccessDirectCHROMIUM(
-          info.fID, GL_SHARED_IMAGE_ACCESS_MODE_READ_CHROMIUM);
-    }
-  }
-
-  expected_image->readPixels(expected_bitmap.pixmap(), 0, 0);
   ExpectEquals(actual_bitmap, expected_bitmap);
 
-  for (auto& backend : backend_textures) {
-    GrGLTextureInfo info;
-    if (backend.getGLTextureInfo(&info)) {
-      gl->EndSharedImageAccessDirectCHROMIUM(info.fID);
-      gl->DeleteTextures(1, &info.fID);
-    }
-  }
-
   gpu::SyncToken sync_token;
-  gl->GenUnverifiedSyncTokenCHROMIUM(sync_token.GetData());
   sii->DestroySharedImage(sync_token, dest_mailbox);
   sii->DestroySharedImage(sync_token, y_uv_mailboxes[0]);
   sii->DestroySharedImage(sync_token, y_uv_mailboxes[1]);
 }
-#endif  // !BUILDFLAG(IS_ANDROID)
+#endif  // !BUILDFLAG(IS_ANDROID_EMULATOR)
 
 class OopPathPixelTest : public OopPixelTest,
                          public ::testing::WithParamInterface<bool> {
diff --git a/chrome/VERSION b/chrome/VERSION
index 2560fa2..3462af25 100644
--- a/chrome/VERSION
+++ b/chrome/VERSION
@@ -1,4 +1,4 @@
 MAJOR=106
 MINOR=0
-BUILD=5233
+BUILD=5234
 PATCH=0
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediator.java
index 8052cc0f..83fdef03 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediator.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediator.java
@@ -128,6 +128,17 @@
     private boolean mIsOnHomepage;
 
     /**
+     * A custom view that can be supplied by clients to be shown inside the tab grid.
+     * Only one client at a time is supported. The custom view is set to null when the client
+     * signals the mediator for removal.
+     */
+    private @Nullable View mCustomView;
+    /**
+     * A back press {@link Runnable} that can be supplied by clients when adding a custom view.
+     */
+    private @Nullable Runnable mCustomViewBackPressRunnable;
+
+    /**
      * In cases where a didSelectTab was due to switching models with a toggle,
      * we don't change tab grid visibility.
      */
@@ -791,6 +802,11 @@
             return true;
         }
 
+        if (mCustomViewBackPressRunnable != null) {
+            mCustomViewBackPressRunnable.run();
+            return true;
+        }
+
         if (!mContainerViewModel.get(IS_VISIBLE)) return false;
 
         if (mTabGridDialogController != null && mTabGridDialogController.handleBackPressed()) {
@@ -886,10 +902,17 @@
      * view inside the tab switcher.
      *
      * @param customView A {@link View} view that needs to be shown.
+     * @param backPressRunnable A {@link Runnable} which can be supplied if clients also wish to
+     *         handle back presses while the custom view is shown. A null value can be passed to not
+     *         intercept back presses.
      */
     @Override
-    public void addCustomView(@NonNull View customView) {
+    public void addCustomView(@NonNull View customView, @Nullable Runnable backPressRunnable) {
+        assert mCustomView == null : "Only one client at a time is supported to add a custom view.";
         mContainerView.addView(customView);
+        mCustomView = customView;
+        mCustomViewBackPressRunnable = backPressRunnable;
+        notifyBackPressStateChangedInternal();
     }
 
     /**
@@ -903,7 +926,12 @@
      */
     @Override
     public void removeCustomView(@NonNull View customView) {
+        assert mCustomView
+                != null : "No client previously passed a custom view that needs removal.";
         mContainerView.removeView(customView);
+        mCustomView = null;
+        mCustomViewBackPressRunnable = null;
+        notifyBackPressStateChangedInternal();
     }
 
     /**
@@ -1040,9 +1068,17 @@
         mBackPressChangedSupplier.set(shouldInterceptBackPress());
     }
 
+    /**
+     * A method to indicate whether back press should be intercepted. The respective interceptors
+     * should also take care of invoking #notifyBackPressStateChangedInternal each time their
+     * decision to intercept back press has changed.
+     *
+     * @return A boolean to indicate if back press should be intercepted or not.
+     */
     @VisibleForTesting
     boolean shouldInterceptBackPress() {
         if (isDialogVisible()) return true;
+        if (mCustomViewBackPressRunnable != null) return true;
 
         if (!mContainerViewModel.get(IS_VISIBLE)) return false;
 
diff --git a/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherCustomViewManagerUnitTest.java b/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherCustomViewManagerUnitTest.java
index d32f264f..c31faa8 100644
--- a/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherCustomViewManagerUnitTest.java
+++ b/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherCustomViewManagerUnitTest.java
@@ -32,6 +32,8 @@
     private TabSwitcherCustomViewManager.Delegate mDelegate;
     @Mock
     private View mView;
+    @Mock
+    private Runnable mBackPressRunnableMock;
 
     private TabSwitcherCustomViewManager mTabSwitcherCustomViewManager;
 
@@ -49,18 +51,18 @@
     @Test
     @SmallTest
     public void testRequestView_InvokesDelegateAddingView() {
-        doNothing().when(mDelegate).addCustomView(mView);
-        mTabSwitcherCustomViewManager.requestView(mView);
-        verify(mDelegate).addCustomView(mView);
+        doNothing().when(mDelegate).addCustomView(mView, mBackPressRunnableMock);
+        mTabSwitcherCustomViewManager.requestView(mView, mBackPressRunnableMock);
+        verify(mDelegate).addCustomView(mView, mBackPressRunnableMock);
     }
 
     @Test
     @SmallTest
     public void testReleaseView_InvokesDelegateRemoveView() {
         // Add the view.
-        doNothing().when(mDelegate).addCustomView(mView);
-        mTabSwitcherCustomViewManager.requestView(mView);
-        verify(mDelegate).addCustomView(mView);
+        doNothing().when(mDelegate).addCustomView(mView, mBackPressRunnableMock);
+        mTabSwitcherCustomViewManager.requestView(mView, mBackPressRunnableMock);
+        verify(mDelegate).addCustomView(mView, mBackPressRunnableMock);
 
         // Release the view.
         doNothing().when(mDelegate).removeCustomView(mView);
@@ -71,12 +73,12 @@
     @Test(expected = AssertionError.class)
     @SmallTest
     public void testMultipleRequestView_withoutRelease_throwsError() {
-        doNothing().when(mDelegate).addCustomView(mView);
-        mTabSwitcherCustomViewManager.requestView(mView);
-        verify(mDelegate).addCustomView(mView);
+        doNothing().when(mDelegate).addCustomView(mView, mBackPressRunnableMock);
+        mTabSwitcherCustomViewManager.requestView(mView, mBackPressRunnableMock);
+        verify(mDelegate).addCustomView(mView, mBackPressRunnableMock);
 
         // This should throw an error because we have not release the view yet.
-        mTabSwitcherCustomViewManager.requestView(mView);
+        mTabSwitcherCustomViewManager.requestView(mView, mBackPressRunnableMock);
     }
 
     @Test(expected = AssertionError.class)
diff --git a/chrome/android/features/tab_ui/public/android/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherCustomViewManager.java b/chrome/android/features/tab_ui/public/android/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherCustomViewManager.java
index e902fee..e622d89c 100644
--- a/chrome/android/features/tab_ui/public/android/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherCustomViewManager.java
+++ b/chrome/android/features/tab_ui/public/android/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherCustomViewManager.java
@@ -7,6 +7,7 @@
 import android.view.View;
 
 import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
 
 /**
  * A class that supplies custom view to TabSwitcher from other non tab switcher clients.
@@ -21,8 +22,11 @@
          * This is fired when a client has requested a view to be shown.
          *
          * @param customView The {@link View} that is requested to be added.
+         * @param backPressRunnable A {@link Runnable} which can be supplied if clients also wish to
+         *         handle back presses while the custom view is shown. A null value can be passed to
+         *         not intercept back presses.
          */
-        void addCustomView(@NonNull View customView);
+        void addCustomView(@NonNull View customView, @Nullable Runnable backPressRunnable);
         /**
          * This is fired when the same client has made the view unavailable for it to be shown
          * any longer.
@@ -53,9 +57,13 @@
      * A method to request showing a custom view.
      *
      * @param customView The {@link View} that is being requested by the client to be shown.
+     * @param backPressRunnable A {@link Runnable} which can be supplied if clients also wish to
+     *         handle back presses while the custom view is shown. A null value can be passed to not
+     *         intercept back presses.
+     *
      * @return true, if the request to show custom view was relayed successfully, false otherwise.
      */
-    public boolean requestView(@NonNull View customView) {
+    public boolean requestView(@NonNull View customView, @Nullable Runnable backPressRunnable) {
         if (mIsCustomViewRequested) {
             assert false : "Previous request view is in-flight.";
             // assert statements are removed in release builds.
@@ -63,7 +71,7 @@
         }
         mIsCustomViewRequested = true;
         mCustomView = customView;
-        mDelegate.addCustomView(mCustomView);
+        mDelegate.addCustomView(mCustomView, backPressRunnable);
         return true;
     }
 
diff --git a/chrome/app/chromeos_strings.grdp b/chrome/app/chromeos_strings.grdp
index fc71302..434d8d93 100644
--- a/chrome/app/chromeos_strings.grdp
+++ b/chrome/app/chromeos_strings.grdp
@@ -3678,6 +3678,18 @@
   <message name="IDS_ARC_LOW_DISK_SPACE_ERROR" desc="Android sign-in failed due to low disk space">
     Disk space is critically low. Please free up disk space.
   </message>
+  <message name="IDS_ARC_LOW_DISK_SPACE_PRE_STOP_NOTIFICATION_TITLE" desc="Title of the notification warning Android users that they are critically low on disk space">
+    Device disk space critically low
+  </message>
+  <message name="IDS_ARC_LOW_DISK_SPACE_PRE_STOP_NOTIFICATION_MESSAGE" desc="Message in the notification warning Android users that they are critically low on disk space">
+    Free up space to avoid losing access to Android.
+  </message>
+  <message name="IDS_ARC_LOW_DISK_SPACE_POST_STOP_NOTIFICATION_TITLE" desc="Title of the notification shown when Android is stopped due to low disk space">
+    Android apps were stopped
+  </message>
+  <message name="IDS_ARC_LOW_DISK_SPACE_POST_STOP_NOTIFICATION_MESSAGE" desc="Message in the notification shown when Android is stopped due to low disk space">
+    Free up disk space to launch Android apps.
+  </message>
   <message name="IDS_ARC_SIGN_IN_UNKNOWN_ERROR" desc="Android sign-in error because of unknown error">
     Something went wrong. Error code: <ph name="ERROR_CODE">$1<ex>7</ex></ph>.
   </message>
diff --git a/chrome/app/chromeos_strings_grdp/IDS_ARC_LOW_DISK_SPACE_POST_STOP_NOTIFICATION_MESSAGE.png.sha1 b/chrome/app/chromeos_strings_grdp/IDS_ARC_LOW_DISK_SPACE_POST_STOP_NOTIFICATION_MESSAGE.png.sha1
new file mode 100644
index 0000000..2928522
--- /dev/null
+++ b/chrome/app/chromeos_strings_grdp/IDS_ARC_LOW_DISK_SPACE_POST_STOP_NOTIFICATION_MESSAGE.png.sha1
@@ -0,0 +1 @@
+bd42c7d0d28c1d66fc57c7fbb3b5ecd947f44d12
\ No newline at end of file
diff --git a/chrome/app/chromeos_strings_grdp/IDS_ARC_LOW_DISK_SPACE_POST_STOP_NOTIFICATION_TITLE.png.sha1 b/chrome/app/chromeos_strings_grdp/IDS_ARC_LOW_DISK_SPACE_POST_STOP_NOTIFICATION_TITLE.png.sha1
new file mode 100644
index 0000000..2928522
--- /dev/null
+++ b/chrome/app/chromeos_strings_grdp/IDS_ARC_LOW_DISK_SPACE_POST_STOP_NOTIFICATION_TITLE.png.sha1
@@ -0,0 +1 @@
+bd42c7d0d28c1d66fc57c7fbb3b5ecd947f44d12
\ No newline at end of file
diff --git a/chrome/app/chromeos_strings_grdp/IDS_ARC_LOW_DISK_SPACE_PRE_STOP_NOTIFICATION_MESSAGE.png.sha1 b/chrome/app/chromeos_strings_grdp/IDS_ARC_LOW_DISK_SPACE_PRE_STOP_NOTIFICATION_MESSAGE.png.sha1
new file mode 100644
index 0000000..2d76e56
--- /dev/null
+++ b/chrome/app/chromeos_strings_grdp/IDS_ARC_LOW_DISK_SPACE_PRE_STOP_NOTIFICATION_MESSAGE.png.sha1
@@ -0,0 +1 @@
+add9eca90fe52a3af073cfba3e92a196b16614ec
\ No newline at end of file
diff --git a/chrome/app/chromeos_strings_grdp/IDS_ARC_LOW_DISK_SPACE_PRE_STOP_NOTIFICATION_TITLE.png.sha1 b/chrome/app/chromeos_strings_grdp/IDS_ARC_LOW_DISK_SPACE_PRE_STOP_NOTIFICATION_TITLE.png.sha1
new file mode 100644
index 0000000..2d76e56
--- /dev/null
+++ b/chrome/app/chromeos_strings_grdp/IDS_ARC_LOW_DISK_SPACE_PRE_STOP_NOTIFICATION_TITLE.png.sha1
@@ -0,0 +1 @@
+add9eca90fe52a3af073cfba3e92a196b16614ec
\ No newline at end of file
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
index 27e4654..5223c1c 100644
--- a/chrome/app/generated_resources.grd
+++ b/chrome/app/generated_resources.grd
@@ -7062,6 +7062,9 @@
       <message name="IDS_ACCNAME_SIDE_PANEL_RESIZE" is_accessibility_with_no_ui="true" desc="Screen reader announcement when the side panel resize handle is focused.">
         Side Panel Resize Handle
       </message>
+      <message name="IDS_SIDE_PANEL_CUSTOMIZE_CHROME_TITLE" desc="The name of the Customize Chrome feature in the side panel combo box.">
+        Customize Chrome
+      </message>
 
       <!-- Read Anything strings -->
       <!-- TODO(crbug.com/1266555): Add final strings and make them translateable. -->
diff --git a/chrome/app/generated_resources_grd/IDS_SIDE_PANEL_CUSTOMIZE_CHROME_TITLE.png.sha1 b/chrome/app/generated_resources_grd/IDS_SIDE_PANEL_CUSTOMIZE_CHROME_TITLE.png.sha1
new file mode 100644
index 0000000..a7dcd40f
--- /dev/null
+++ b/chrome/app/generated_resources_grd/IDS_SIDE_PANEL_CUSTOMIZE_CHROME_TITLE.png.sha1
@@ -0,0 +1 @@
+9b6e2f21db794747e0a7052282b9e9abb972505d
\ No newline at end of file
diff --git a/chrome/app/vector_icons/BUILD.gn b/chrome/app/vector_icons/BUILD.gn
index 8ea81462..8bf4bd3 100644
--- a/chrome/app/vector_icons/BUILD.gn
+++ b/chrome/app/vector_icons/BUILD.gn
@@ -73,6 +73,7 @@
     "keyboard_arrow_right.icon",
     "keyboard_arrow_up.icon",
     "laptop.icon",
+    "laptop_and_smartphone.icon",
     "leading_scroll.icon",
     "media_controls_arrow_drop_down.icon",
     "media_controls_arrow_drop_up.icon",
@@ -109,7 +110,6 @@
     "save_group.icon",
     "save_page.icon",
     "security.icon",
-    "send_tab_to_self.icon",
     "sharing_hub_screenshot.icon",
     "side_panel.icon",
     "side_panel_touch.icon",
diff --git a/chrome/app/vector_icons/send_tab_to_self.icon b/chrome/app/vector_icons/laptop_and_smartphone.icon
similarity index 100%
rename from chrome/app/vector_icons/send_tab_to_self.icon
rename to chrome/app/vector_icons/laptop_and_smartphone.icon
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index d573494b..0d9e9d2 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -4499,6 +4499,7 @@
       "//third_party/sqlite",
       "//third_party/zxcvbn-cpp",
       "//ui/webui/resources/cr_components/app_management:mojo_bindings",
+      "//ui/webui/resources/cr_components/help_bubble:mojo_bindings",
       "//ui/webui/resources/cr_components/history_clusters:mojo_bindings",
     ]
     public_deps += [
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index 56aec8b..697f743 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -5505,6 +5505,13 @@
      FEATURE_VALUE_TYPE(
          features::kPrivateNetworkAccessRespectPreflightResults)},
 
+    {"private-network-access-preflight-short-timeout",
+     flag_descriptions::kPrivateNetworkAccessPreflightShortTimeoutName,
+     flag_descriptions::kPrivateNetworkAccessPreflightShortTimeoutDescription,
+     kOsAll,
+     FEATURE_VALUE_TYPE(
+         network::features::kPrivateNetworkAccessPreflightShortTimeout)},
+
     {"mbi-mode", flag_descriptions::kMBIModeName,
      flag_descriptions::kMBIModeDescription, kOsAll,
      FEATURE_WITH_PARAMS_VALUE_TYPE(features::kMBIMode,
@@ -5596,6 +5603,10 @@
      FEATURE_VALUE_TYPE(chrome::android::kReaderModeInCCT)},
 #endif  // BUILDFLAG(IS_ANDROID)
 
+    {"shopping-list", commerce::flag_descriptions::kShoppingListName,
+     commerce::flag_descriptions::kShoppingListDescription,
+     kOsAndroid | kOsDesktop, FEATURE_VALUE_TYPE(commerce::kShoppingList)},
+
 #if !BUILDFLAG(IS_ANDROID)
     {"enable-retail-coupons", flag_descriptions::kRetailCouponsName,
      flag_descriptions::kRetailCouponsDescription, kOsDesktop,
@@ -6009,10 +6020,6 @@
          chrome::android::kConditionalTabStripAndroid,
          kConditionalTabStripAndroidVariations,
          "ConditioanlTabStrip")},
-
-    {"shopping-list", flag_descriptions::kShoppingListName,
-     flag_descriptions::kShoppingListDescription, kOsAndroid,
-     FEATURE_VALUE_TYPE(commerce::kShoppingList)},
 #endif  // BUILDFLAG(IS_ANDROID)
 
     {"unsafely-treat-insecure-origin-as-secure",
diff --git a/chrome/browser/ash/arc/screen_capture/arc_screen_capture_session.cc b/chrome/browser/ash/arc/screen_capture/arc_screen_capture_session.cc
index 5214888..ca9496c 100644
--- a/chrome/browser/ash/arc/screen_capture/arc_screen_capture_session.cc
+++ b/chrome/browser/ash/arc/screen_capture/arc_screen_capture_session.cc
@@ -320,7 +320,8 @@
   // if the CopyOutputRequest succeeded:
   const gpu::MailboxHolder& plane = result->GetTextureResult()->planes[0];
   gl->WaitSyncTokenCHROMIUM(plane.sync_token.GetConstData());
-  GLuint src_texture = gl->CreateAndConsumeTextureCHROMIUM(plane.mailbox.name);
+  GLuint src_texture =
+      gl->CreateAndTexStorage2DSharedImageCHROMIUM(plane.mailbox.name);
   viz::CopyOutputResult::ReleaseCallbacks release_callbacks =
       result->TakeTextureOwnership();
 
@@ -354,16 +355,19 @@
   GLuint query_id;
   gl->GenQueriesEXT(1, &query_id);
   gl->BeginQueryEXT(GL_COMMANDS_COMPLETED_CHROMIUM, query_id);
+  gl->BeginSharedImageAccessDirectCHROMIUM(
+      desktop_texture->texture_, GL_SHARED_IMAGE_ACCESS_MODE_READ_CHROMIUM);
   scaler_->Scale(desktop_texture->texture_, desktop_texture->size_,
                  gfx::Vector2dF(), pending_buffer->texture_,
                  gfx::Rect(0, 0, size_.width(), size_.height()));
+  gl->EndSharedImageAccessDirectCHROMIUM(desktop_texture->texture_);
   gl->EndQueryEXT(GL_COMMANDS_COMPLETED_CHROMIUM);
 
   context_provider->ContextSupport()->SignalQuery(
-      query_id, base::BindOnce(&ArcScreenCaptureSession::QueryCompleted,
-                               weak_ptr_factory_.GetWeakPtr(), query_id,
-                               std::move(desktop_texture),
-                               std::move(pending_buffer)));
+      query_id,
+      base::BindOnce(&ArcScreenCaptureSession::QueryCompleted,
+                     weak_ptr_factory_.GetWeakPtr(), query_id,
+                     std::move(desktop_texture), std::move(pending_buffer)));
 }
 
 void ArcScreenCaptureSession::OnAnimationStep(base::TimeTicks timestamp) {
diff --git a/chrome/browser/ash/arc/session/arc_disk_space_monitor.cc b/chrome/browser/ash/arc/session/arc_disk_space_monitor.cc
index 6576a6e..fdfb39a 100644
--- a/chrome/browser/ash/arc/session/arc_disk_space_monitor.cc
+++ b/chrome/browser/ash/arc/session/arc_disk_space_monitor.cc
@@ -4,10 +4,21 @@
 
 #include "chrome/browser/ash/arc/session/arc_disk_space_monitor.h"
 
+#include "ash/public/cpp/notification_utils.h"
 #include "base/logging.h"
+#include "chrome/app/vector_icons/vector_icons.h"
 #include "chrome/browser/ash/arc/arc_util.h"
 #include "chrome/browser/ash/arc/session/arc_session_manager.h"
+#include "chrome/browser/notifications/notification_display_service.h"
+#include "chrome/browser/notifications/notification_display_service_factory.h"
+#include "chrome/grit/generated_resources.h"
 #include "chromeos/ash/components/dbus/spaced/spaced_client.h"
+#include "ui/base/l10n/l10n_util.h"
+#include "ui/base/resource/resource_bundle.h"
+#include "ui/chromeos/resources/grit/ui_chromeos_resources.h"
+#include "ui/message_center/public/cpp/notification.h"
+#include "ui/message_center/public/cpp/notification_types.h"
+#include "ui/message_center/public/cpp/notifier_id.h"
 
 namespace arc {
 
@@ -71,16 +82,68 @@
     LOG(WARNING) << "Stopping ARC due to low disk space. free_disk_space:"
                  << free_disk_space;
     arc_session_manager->RequestStopOnLowDiskSpace();
-    // TODO(b/233030867): Show a final warning notification.
+
+    // Show a post-stop warning notification.
+    MaybeShowNotification(/*is_pre_stop=*/false);
+
+    // ArcDiskSpaceMonitor will be deactivated after ARC is stopeed.
     return;
-  } else if (free_disk_space < kDiskSpaceThresholdForPreWarning) {
-    // TODO(b/233030867): Show a pre-warning notification.
   }
 
-  if (free_disk_space < kDiskSpaceThresholdForPreWarning)
+  if (free_disk_space < kDiskSpaceThresholdForPreStopNotification) {
+    // Show a pre-stop warning notification.
+    MaybeShowNotification(/*is_pre_stop=*/true);
+
     ScheduleCheckDiskSpace(kDiskSpaceCheckIntervalShort);
-  else
+  } else {
     ScheduleCheckDiskSpace(kDiskSpaceCheckIntervalLong);
+  }
+}
+
+void ArcDiskSpaceMonitor::MaybeShowNotification(bool is_pre_stop) {
+  if (is_pre_stop) {
+    if (!pre_stop_notification_last_shown_time_.is_null() &&
+        base::Time::Now() - pre_stop_notification_last_shown_time_ <
+            kPreStopNotificationReshowInterval) {
+      // Don't reshow a pre-stop warning notification yet.
+      return;
+    }
+    pre_stop_notification_last_shown_time_ = base::Time::Now();
+  }
+
+  const std::string notification_id = is_pre_stop
+                                          ? kLowDiskSpacePreStopNotificationId
+                                          : kLowDiskSpacePostStopNotificationId;
+  const ash::NotificationCatalogName catalog_name =
+      is_pre_stop ? ash::NotificationCatalogName::kArcLowDiskSpacePreStop
+                  : ash::NotificationCatalogName::kArcLowDiskSpacePostStop;
+  const int title_id =
+      is_pre_stop ? IDS_ARC_LOW_DISK_SPACE_PRE_STOP_NOTIFICATION_TITLE
+                  : IDS_ARC_LOW_DISK_SPACE_POST_STOP_NOTIFICATION_TITLE;
+  const int message_id =
+      is_pre_stop ? IDS_ARC_LOW_DISK_SPACE_PRE_STOP_NOTIFICATION_MESSAGE
+                  : IDS_ARC_LOW_DISK_SPACE_POST_STOP_NOTIFICATION_MESSAGE;
+
+  std::unique_ptr<message_center::Notification> notification =
+      ash::CreateSystemNotification(
+          message_center::NOTIFICATION_TYPE_SIMPLE, notification_id,
+          l10n_util::GetStringUTF16(title_id),
+          l10n_util::GetStringUTF16(message_id),
+          l10n_util::GetStringUTF16(IDS_ARC_NOTIFICATION_DISPLAY_SOURCE),
+          /*origin_url=*/GURL(),
+          message_center::NotifierId(
+              message_center::NotifierType::SYSTEM_COMPONENT,
+              kDiskSpaceMonitorNotifierId, catalog_name),
+          /*optional_fields=*/message_center::RichNotificationData(),
+          base::MakeRefCounted<message_center::HandleNotificationClickDelegate>(
+              base::BindRepeating([](absl::optional<int> button_index) {})),
+          kNotificationStorageFullIcon,
+          message_center::SystemNotificationWarningLevel::CRITICAL_WARNING);
+
+  Profile* profile = arc::ArcSessionManager::Get()->profile();
+  NotificationDisplayService::GetForProfile(profile)->Display(
+      NotificationHandler::Type::TRANSIENT, *notification,
+      /*metadata=*/nullptr);
 }
 
 }  // namespace arc
diff --git a/chrome/browser/ash/arc/session/arc_disk_space_monitor.h b/chrome/browser/ash/arc/session/arc_disk_space_monitor.h
index 32968ce0..9d9ac15 100644
--- a/chrome/browser/ash/arc/session/arc_disk_space_monitor.h
+++ b/chrome/browser/ash/arc/session/arc_disk_space_monitor.h
@@ -14,23 +14,38 @@
 namespace arc {
 
 // These thresholds are chosen based on UMA stats. (go/arcvm-virtio-blk-sparse)
-// Show a pre-warning notification if free disk space is lower than this.
-constexpr int64_t kDiskSpaceThresholdForPreWarning = 1LL << 30;  // 1GB
+// Show a pre-stop warning notification if free disk space is lower than this.
+constexpr int64_t kDiskSpaceThresholdForPreStopNotification = 1LL << 30;  // 1GB
 
-// Stop ARC and show a final warning notification if free disk space is
+// Stop ARC and show a post-stop warning notification if free disk space is
 // lower than this.
 constexpr int64_t kDiskSpaceThresholdForStoppingArc = 256LL << 20;  // 256MB
 
 // TODO(b/233030867): Choose these values based on some logic
 //                    instead of deciding them on a hunch.
 // Disk space check interval used when free disk space is lower than
-// kDiskSpaceThresholdForPreWarning.
+// kDiskSpaceThresholdForPreStopNotification.
 constexpr base::TimeDelta kDiskSpaceCheckIntervalShort = base::Seconds(1);
 
 // Disk space check interval used when free disk space is higher than
-// kDiskSpaceThresholdForPreWarning.
+// kDiskSpaceThresholdForPreStopNotification.
 constexpr base::TimeDelta kDiskSpaceCheckIntervalLong = base::Seconds(10);
 
+// A pre-stop warning notification should not be shown more than once within
+// this interval.
+// TODO(b/237040345): Finalize the value.
+constexpr base::TimeDelta kPreStopNotificationReshowInterval = base::Minutes(2);
+
+// Notifier ID of ArcDiskSpaceMonitor.
+const char kDiskSpaceMonitorNotifierId[] = "arc_disk_space_monitor";
+
+// Notification ID of the pre-stop warning notification.
+const char kLowDiskSpacePreStopNotificationId[] = "arc_low_disk_space_pre_stop";
+
+// Notification ID of the post-stop warning notification.
+const char kLowDiskSpacePostStopNotificationId[] =
+    "arc_low_disk_space_post_stop";
+
 // Monitors disk usage. Requests stopping ARC and/or shows a warning
 // notification when device's free disk space becomes lower than a threshold.
 // Used when arcvm_virtio_blk_data is enabled. (go/arcvm-virtio-blk-sparse)
@@ -64,6 +79,14 @@
   // Used as a callback function.
   void OnGetFreeDiskSpace(absl::optional<int64_t> reply);
 
+  // Shows a pre-stop warning notification if |is_pre_stop| is true and the
+  // same notification was not shown within kPreStopNotificationReshowInterval.
+  // Always shows a post-stop warning notification if |is_pre_stop| is false.
+  void MaybeShowNotification(bool is_pre_stop);
+
+  // The last time when a pre-stop warning notification was shown.
+  base::Time pre_stop_notification_last_shown_time_;
+
   // Used for periodically calling CheckDiskSpace().
   base::OneShotTimer timer_;
 
diff --git a/chrome/browser/ash/arc/session/arc_disk_space_monitor_unittest.cc b/chrome/browser/ash/arc/session/arc_disk_space_monitor_unittest.cc
index c07a3b9..2676f6a5 100644
--- a/chrome/browser/ash/arc/session/arc_disk_space_monitor_unittest.cc
+++ b/chrome/browser/ash/arc/session/arc_disk_space_monitor_unittest.cc
@@ -10,6 +10,7 @@
 #include "chrome/browser/ash/arc/session/arc_session_manager.h"
 #include "chrome/browser/ash/arc/test/test_arc_session_manager.h"
 #include "chrome/browser/ash/login/users/fake_chrome_user_manager.h"
+#include "chrome/browser/notifications/notification_display_service_tester.h"
 #include "chrome/test/base/testing_profile.h"
 #include "chromeos/ash/components/dbus/concierge/concierge_client.h"
 #include "chromeos/ash/components/dbus/spaced/fake_spaced_client.h"
@@ -51,6 +52,9 @@
     user_manager->AddUser(account_id);
     user_manager->LoginUser(account_id);
 
+    notification_tester_ = std::make_unique<NotificationDisplayServiceTester>(
+        testing_profile_.get());
+
     // Initialize a session manager with a fake ARC session.
     arc_session_manager_ =
         CreateTestArcSessionManager(std::make_unique<ArcSessionRunner>(
@@ -71,11 +75,20 @@
   void TearDown() override {
     arc_disk_space_monitor_.reset();
     arc_session_manager_.reset();
+    notification_tester_.reset();
     testing_profile_.reset();
     ash::SpacedClient::Shutdown();
     ash::ConciergeClient::Shutdown();
   }
 
+  void FastForwardBy(base::TimeDelta delta) {
+    task_environment_.FastForwardBy(delta);
+  }
+
+  NotificationDisplayServiceTester* notification_tester() const {
+    return notification_tester_.get();
+  }
+
   ArcSessionManager* arc_session_manager() const {
     return arc_session_manager_.get();
   }
@@ -88,6 +101,7 @@
   content::BrowserTaskEnvironment task_environment_{
       base::test::TaskEnvironment::TimeSource::MOCK_TIME};
   std::unique_ptr<TestingProfile> testing_profile_;
+  std::unique_ptr<NotificationDisplayServiceTester> notification_tester_;
   std::unique_ptr<ArcSessionManager> arc_session_manager_;
   std::unique_ptr<ArcDiskSpaceMonitor> arc_disk_space_monitor_;
 };
@@ -105,12 +119,18 @@
   // ARC should keep running but the timer should be stopped.
   EXPECT_EQ(ArcSessionManager::State::ACTIVE, arc_session_manager()->state());
   EXPECT_FALSE(arc_disk_space_monitor()->IsTimerRunningForTesting());
+
+  // No notification should be shown.
+  EXPECT_FALSE(notification_tester()->GetNotification(
+      kLowDiskSpacePreStopNotificationId));
+  EXPECT_FALSE(notification_tester()->GetNotification(
+      kLowDiskSpacePostStopNotificationId));
 }
 
-TEST_F(ArcDiskSpaceMonitorTest, FreeSpaceIsHigherThanThresholdForPreWarning) {
-  // ThresholdForStoppingArc < ThresholdForPreWarning < free_disk_space
+TEST_F(ArcDiskSpaceMonitorTest, FreeSpaceIsHigherThanPreStopNotification) {
+  // ThresholdForStoppingArc < ThresholdForPreStopNotification < free_disk_space
   ash::FakeSpacedClient::Get()->set_free_disk_space(
-      absl::make_optional(kDiskSpaceThresholdForPreWarning + 1));
+      absl::make_optional(kDiskSpaceThresholdForPreStopNotification + 1));
 
   arc_session_manager()->StartArcForTesting();
   EXPECT_EQ(ArcSessionManager::State::ACTIVE, arc_session_manager()->state());
@@ -125,12 +145,19 @@
   EXPECT_TRUE(arc_disk_space_monitor()->IsTimerRunningForTesting());
   EXPECT_EQ(kDiskSpaceCheckIntervalLong,
             arc_disk_space_monitor()->GetTimerCurrentDelayForTesting());
+
+  // No notification should be shown.
+  EXPECT_FALSE(notification_tester()->GetNotification(
+      kLowDiskSpacePreStopNotificationId));
+  EXPECT_FALSE(notification_tester()->GetNotification(
+      kLowDiskSpacePostStopNotificationId));
 }
 
-TEST_F(ArcDiskSpaceMonitorTest, FreeSpaceIsLowerThanThresholdForPreWarning) {
-  // ThresholdForStoppingArc < free_disk_space < ThresholdForPreWarning
+TEST_F(ArcDiskSpaceMonitorTest,
+       FreeSpaceIsLowerThanThresholdForPreStopNotification) {
+  // ThresholdForStoppingArc < free_disk_space < ThresholdForPreStopNotification
   ash::FakeSpacedClient::Get()->set_free_disk_space(
-      absl::make_optional(kDiskSpaceThresholdForPreWarning - 1));
+      absl::make_optional(kDiskSpaceThresholdForPreStopNotification - 1));
 
   arc_session_manager()->StartArcForTesting();
   EXPECT_EQ(ArcSessionManager::State::ACTIVE, arc_session_manager()->state());
@@ -145,10 +172,29 @@
   // The timer should be running with the short check interval.
   EXPECT_EQ(kDiskSpaceCheckIntervalShort,
             arc_disk_space_monitor()->GetTimerCurrentDelayForTesting());
+
+  // A pre-stop warning notification should be shown.
+  EXPECT_TRUE(notification_tester()->GetNotification(
+      kLowDiskSpacePreStopNotificationId));
+  EXPECT_FALSE(notification_tester()->GetNotification(
+      kLowDiskSpacePostStopNotificationId));
+
+  // Remove the notification.
+  notification_tester()->RemoveAllNotifications(
+      NotificationHandler::Type::TRANSIENT, /*by_user=*/false);
+
+  // Ensure that the warning notification is reshown only after
+  // kPreStopNotificationReshowInterval elapses.
+  FastForwardBy(kPreStopNotificationReshowInterval - base::Seconds(1));
+  EXPECT_FALSE(notification_tester()->GetNotification(
+      kLowDiskSpacePreStopNotificationId));
+  FastForwardBy(base::Seconds(2));
+  EXPECT_TRUE(notification_tester()->GetNotification(
+      kLowDiskSpacePreStopNotificationId));
 }
 
 TEST_F(ArcDiskSpaceMonitorTest, FreeSpaceIsLowerThanThresholdForStoppingArc) {
-  // free_disk_space < ThresholdForStoppingArc < ThresholdForPreWarning
+  // free_disk_space < ThresholdForStoppingArc < ThresholdForPreStopNotification
   ash::FakeSpacedClient::Get()->set_free_disk_space(
       absl::make_optional(kDiskSpaceThresholdForStoppingArc - 1));
 
@@ -161,6 +207,12 @@
   // Both ARC and the timer should be stopped.
   EXPECT_EQ(ArcSessionManager::State::STOPPED, arc_session_manager()->state());
   EXPECT_FALSE(arc_disk_space_monitor()->IsTimerRunningForTesting());
+
+  // A post-stop warning notification should be shown.
+  EXPECT_FALSE(notification_tester()->GetNotification(
+      kLowDiskSpacePreStopNotificationId));
+  EXPECT_TRUE(notification_tester()->GetNotification(
+      kLowDiskSpacePostStopNotificationId));
 }
 
 }  // namespace
diff --git a/chrome/browser/ash/login/demo_mode/demo_session.cc b/chrome/browser/ash/login/demo_mode/demo_session.cc
index ca05fd87..4fcf6809 100644
--- a/chrome/browser/ash/login/demo_mode/demo_session.cc
+++ b/chrome/browser/ash/login/demo_mode/demo_session.cc
@@ -542,8 +542,9 @@
 void DemoSession::OnSessionStateChanged() {
   switch (session_manager::SessionManager::Get()->session_state()) {
     case session_manager::SessionState::LOGIN_PRIMARY:
-      EnsureResourcesLoaded(base::BindOnce(&DemoSession::ShowSplashScreen,
-                                           weak_ptr_factory_.GetWeakPtr()));
+      EnsureResourcesLoaded(
+          base::BindOnce(&DemoSession::ConfigureAndStartSplashScreen,
+                         weak_ptr_factory_.GetWeakPtr()));
       break;
     case session_manager::SessionState::ACTIVE:
       if (ShouldRemoveSplashScreen())
@@ -607,15 +608,13 @@
       FROM_HERE, base::BindOnce(&LaunchDemoSystemWebApp));
 }
 
-void DemoSession::ShowSplashScreen() {
-  const std::string current_locale = g_browser_process->GetApplicationLocale();
-  base::FilePath image_path = demo_resources_->path()
-                                  .Append(kSplashScreensPath)
-                                  .Append(current_locale + ".jpg");
-  if (!base::PathExists(image_path)) {
-    image_path =
-        demo_resources_->path().Append(kSplashScreensPath).Append("en-US.jpg");
-  }
+base::FilePath GetSplashScreenImagePath(base::FilePath localized_image_path,
+                                        base::FilePath fallback_path) {
+  return base::PathExists(localized_image_path) ? localized_image_path
+                                                : fallback_path;
+}
+
+void DemoSession::ShowSplashScreen(base::FilePath image_path) {
   WallpaperControllerClientImpl::Get()->ShowAlwaysOnTopWallpaper(image_path);
   remove_splash_screen_fallback_timer_->Start(
       FROM_HERE, kRemoveSplashScreenTimeout,
@@ -623,6 +622,21 @@
                      weak_ptr_factory_.GetWeakPtr()));
 }
 
+void DemoSession::ConfigureAndStartSplashScreen() {
+  const std::string current_locale = g_browser_process->GetApplicationLocale();
+  base::FilePath localized_image_path = demo_resources_->path()
+                                            .Append(kSplashScreensPath)
+                                            .Append(current_locale + ".jpg");
+  base::FilePath fallback_path =
+      demo_resources_->path().Append(kSplashScreensPath).Append("en-US.jpg");
+  base::ThreadPool::PostTaskAndReplyWithResult(
+      FROM_HERE, {base::MayBlock()},
+      base::BindOnce(&GetSplashScreenImagePath, localized_image_path,
+                     fallback_path),
+      base::BindOnce(&DemoSession::ShowSplashScreen,
+                     weak_ptr_factory_.GetWeakPtr()));
+}
+
 void DemoSession::RemoveSplashScreen() {
   if (splash_screen_removed_)
     return;
diff --git a/chrome/browser/ash/login/demo_mode/demo_session.h b/chrome/browser/ash/login/demo_mode/demo_session.h
index 2c6c3d5..4d488ded 100644
--- a/chrome/browser/ash/login/demo_mode/demo_session.h
+++ b/chrome/browser/ash/login/demo_mode/demo_session.h
@@ -202,8 +202,11 @@
   // launch the app upon installation.
   void InstallAppFromUpdateUrl(const std::string& id);
 
-  // Shows the splash screen after demo mode resources are installed.
-  void ShowSplashScreen();
+  // Find image path then show the splash screen.
+  void ConfigureAndStartSplashScreen();
+
+  // Show, and set the fallback timeout to remove, the splash screen.
+  void ShowSplashScreen(base::FilePath image_path);
 
   // Removes the splash screen.
   void RemoveSplashScreen();
diff --git a/chrome/browser/ash/login/demo_mode/demo_session_unittest.cc b/chrome/browser/ash/login/demo_mode/demo_session_unittest.cc
index 1027620..bbc46569e 100644
--- a/chrome/browser/ash/login/demo_mode/demo_session_unittest.cc
+++ b/chrome/browser/ash/login/demo_mode/demo_session_unittest.cc
@@ -13,6 +13,7 @@
 #include "base/bind.h"
 #include "base/files/file_path.h"
 #include "base/strings/utf_string_conversions.h"
+#include "base/task/thread_pool/thread_pool_instance.h"
 #include "base/timer/mock_timer.h"
 #include "chrome/browser/ash/login/demo_mode/demo_resources.h"
 #include "chrome/browser/ash/login/users/fake_chrome_user_manager.h"
@@ -191,6 +192,8 @@
 
   ASSERT_TRUE(FinishResourcesComponentLoad(
       base::FilePath(kTestDemoModeResourcesMountPoint)));
+  // Wait for splash screen image to load and timer to be set
+  task_environment_.RunUntilIdle();
   EXPECT_EQ(1, test_wallpaper_controller_.show_always_on_top_wallpaper_count());
   EXPECT_EQ(0,
             test_wallpaper_controller_.remove_always_on_top_wallpaper_count());
@@ -243,6 +246,8 @@
 
   ASSERT_TRUE(FinishResourcesComponentLoad(
       base::FilePath(kTestDemoModeResourcesMountPoint)));
+  // Wait for splash screen image to load and timer to be set
+  task_environment_.RunUntilIdle();
   EXPECT_EQ(1, test_wallpaper_controller_.show_always_on_top_wallpaper_count());
   EXPECT_EQ(0,
             test_wallpaper_controller_.remove_always_on_top_wallpaper_count());
diff --git a/chrome/browser/ash/login/wizard_controller.cc b/chrome/browser/ash/login/wizard_controller.cc
index 361282f..e921bbc 100644
--- a/chrome/browser/ash/login/wizard_controller.cc
+++ b/chrome/browser/ash/login/wizard_controller.cc
@@ -1671,7 +1671,7 @@
   switch (result) {
     case DemoSetupScreen::Result::COMPLETED:
       PerformOOBECompletedActions();
-      ShowLoginScreen();
+      SwitchWebUItoMojo();
       break;
     case DemoSetupScreen::Result::CANCELED:
       ShowWelcomeScreen();
diff --git a/chrome/browser/ash/login/wizard_controller_browsertest.cc b/chrome/browser/ash/login/wizard_controller_browsertest.cc
index eecc348..9583176 100644
--- a/chrome/browser/ash/login/wizard_controller_browsertest.cc
+++ b/chrome/browser/ash/login/wizard_controller_browsertest.cc
@@ -67,12 +67,14 @@
 #include "chrome/browser/ash/net/network_portal_detector_test_impl.h"
 #include "chrome/browser/ash/net/rollback_network_config/fake_rollback_network_config.h"
 #include "chrome/browser/ash/net/rollback_network_config/rollback_network_config_service.h"
+#include "chrome/browser/ash/policy/core/browser_policy_connector_ash.h"
 #include "chrome/browser/ash/policy/enrollment/auto_enrollment_client.h"
 #include "chrome/browser/ash/policy/enrollment/auto_enrollment_type_checker.h"
 #include "chrome/browser/ash/policy/enrollment/enrollment_config.h"
 #include "chrome/browser/ash/policy/enrollment/fake_auto_enrollment_client.h"
 #include "chrome/browser/ash/policy/server_backed_state/server_backed_device_state.h"
 #include "chrome/browser/browser_process.h"
+#include "chrome/browser/browser_process_platform_part.h"
 #include "chrome/browser/chrome_notification_types.h"
 #include "chrome/browser/lifetime/browser_shutdown.h"
 #include "chrome/browser/lifetime/termination_notification.h"
@@ -2523,6 +2525,25 @@
   }
 };
 
+// Helper InstallAttributes::LockResultCallback implementation.
+void OnEnterpriseDeviceLock(base::OnceClosure runner_quit_task,
+                            InstallAttributes::LockResult in_locked) {
+  LOG(INFO) << "Enterprise lock  = " << in_locked;
+  std::move(runner_quit_task).Run();
+}
+
+void LockDeviceForEnterprise() {
+  base::RunLoop run_loop;
+  policy::BrowserPolicyConnectorAsh* connector =
+      g_browser_process->platform_part()->browser_policy_connector_ash();
+  connector->GetInstallAttributes()->LockDevice(
+      policy::DEVICE_MODE_ENTERPRISE, "domain.com",
+      std::string(),  // realm
+      "device-id",
+      base::BindOnce(&OnEnterpriseDeviceLock, run_loop.QuitClosure()));
+  run_loop.Run();
+}
+
 IN_PROC_BROWSER_TEST_F(WizardControllerDemoSetupTest,
                        OnlineDemoSetupFlowFinished) {
   CheckCurrentScreen(WelcomeView::kScreenId);
@@ -2610,6 +2631,9 @@
   CheckCurrentScreen(DemoSetupScreenView::kScreenId);
   EXPECT_TRUE(DemoSetupController::IsOobeDemoSetupFlowInProgress());
 
+  // Set Install Attributes for device so it is considered enterprise managed
+  // to properly switch to Mojo LoginDisplayHost
+  LockDeviceForEnterprise();
   mock_demo_setup_screen_->ExitScreen(DemoSetupScreen::Result::COMPLETED);
 
   EXPECT_TRUE(StartupUtils::IsOobeCompleted());
diff --git a/chrome/browser/ash/policy/core/device_cloud_policy_browsertest.cc b/chrome/browser/ash/policy/core/device_cloud_policy_browsertest.cc
index ffa8518..ae59863 100644
--- a/chrome/browser/ash/policy/core/device_cloud_policy_browsertest.cc
+++ b/chrome/browser/ash/policy/core/device_cloud_policy_browsertest.cc
@@ -47,6 +47,7 @@
 #include "crypto/sha2.h"
 #include "extensions/browser/extension_registry.h"
 #include "extensions/browser/extension_system.h"
+#include "extensions/browser/updater/extension_downloader_test_helper.h"
 #include "extensions/common/constants.h"
 #include "extensions/common/extension.h"
 #include "extensions/common/switches.h"
@@ -244,12 +245,6 @@
       "extensions/signin_screen_managed_storage/extension.crx";
   static constexpr const char* kTestExtensionUpdateManifestPath =
       "/extensions/signin_screen_managed_storage/update_manifest.xml";
-  static constexpr const char* kTestExtensionUpdateManifest =
-      R"(<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
-           <app appid='$1'>
-             <updatecheck codebase='http://$2/$3' version='1.0' />
-           </app>
-         </gupdate>)";
   static constexpr const char* kFakePolicyPath = "/test-policy.json";
   static constexpr const char* kFakePolicy =
       "{\"string-policy\": {\"Value\": \"value\"}}";
@@ -322,11 +317,14 @@
     // Create update manifest for the test extension, setting the extension URL
     // with a test server URL pointing to the extension under the test data
     // path.
-    std::string manifest_response = base::ReplaceStringPlaceholders(
-        kTestExtensionUpdateManifest,
-        {kTestExtensionId, embedded_test_server()->host_port_pair().ToString(),
-         kTestExtensionPath},
-        nullptr);
+    std::string manifest_response = extensions::CreateUpdateManifest(
+        {extensions::UpdateManifestItem(kTestExtensionId)
+             .version("1.0")
+             .codebase(base::ReplaceStringPlaceholders(
+                 "http://$1/$2",
+                 {embedded_test_server()->host_port_pair().ToString(),
+                  kTestExtensionPath},
+                 nullptr))});
 
     auto response = std::make_unique<net::test_server::BasicHttpResponse>();
     response->set_content_type("text/xml");
diff --git a/chrome/browser/ash/policy/core/device_local_account_browsertest.cc b/chrome/browser/ash/policy/core/device_local_account_browsertest.cc
index 6f5f87c0..c0facb8 100644
--- a/chrome/browser/ash/policy/core/device_local_account_browsertest.cc
+++ b/chrome/browser/ash/policy/core/device_local_account_browsertest.cc
@@ -131,6 +131,7 @@
 #include "extensions/browser/management_policy.h"
 #include "extensions/browser/notification_types.h"
 #include "extensions/browser/sandboxed_unpacker.h"
+#include "extensions/browser/updater/extension_downloader_test_helper.h"
 #include "extensions/common/extension.h"
 #include "net/base/url_util.h"
 #include "net/http/http_status_code.h"
@@ -170,14 +171,6 @@
 const char kExistentTermsOfServicePath[] = "chromeos/enterprise/tos.txt";
 const char kNonexistentTermsOfServicePath[] = "chromeos/enterprise/tos404.txt";
 const char kRelativeUpdateURL[] = "/service/update2/crx";
-const char kUpdateManifestHeader[] =
-    "<?xml version='1.0' encoding='UTF-8'?>\n"
-    "<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>\n";
-const char kUpdateManifestTemplate[] =
-    "  <app appid='%s'>\n"
-    "    <updatecheck codebase='%s' version='%s' />\n"
-    "  </app>\n";
-const char kUpdateManifestFooter[] = "</gupdate>\n";
 const char kHostedAppID[] = "kbmnembihfiondgfjekmnmcbddelicoi";
 const char kHostedAppCRXPath[] = "extensions/hosted_app.crx";
 const char kHostedAppVersion[] = "1.0.0.0";
@@ -317,7 +310,7 @@
   if (url.path() != relative_update_url_)
     return nullptr;
 
-  std::string content = kUpdateManifestHeader;
+  std::vector<extensions::UpdateManifestItem> update_manifest;
   for (net::QueryIterator it(url); !it.IsAtEnd(); it.Advance()) {
     if (it.GetKey() != "x")
       continue;
@@ -328,12 +321,15 @@
                                "id", &id);
     UpdateMap::const_iterator entry = updates_.find(id);
     if (entry != updates_.end()) {
-      content += base::StringPrintf(kUpdateManifestTemplate, id.c_str(),
-                                    entry->second.crx_url.spec().c_str(),
-                                    entry->second.version.c_str());
+      update_manifest.emplace_back(extensions::UpdateManifestItem(id)
+                                       .version(entry->second.version)
+                                       .codebase(entry->second.crx_url.spec()));
     }
   }
-  content += kUpdateManifestFooter;
+
+  std::string content =
+      extensions::CreateUpdateManifest(std::move(update_manifest));
+
   std::unique_ptr<net::test_server::BasicHttpResponse> http_response(
       new net::test_server::BasicHttpResponse);
   http_response->set_code(net::HTTP_OK);
diff --git a/chrome/browser/chrome_browser_interface_binders.cc b/chrome/browser/chrome_browser_interface_binders.cc
index 4c2bf4d..1c17560 100644
--- a/chrome/browser/chrome_browser_interface_binders.cc
+++ b/chrome/browser/chrome_browser_interface_binders.cc
@@ -179,6 +179,7 @@
 #include "mojo/public/cpp/bindings/self_owned_receiver.h"
 #include "ui/webui/resources/cr_components/color_change_listener/color_change_listener.mojom.h"
 #include "ui/webui/resources/cr_components/customize_themes/customize_themes.mojom.h"
+#include "ui/webui/resources/cr_components/help_bubble/help_bubble.mojom.h"
 #include "ui/webui/resources/cr_components/history_clusters/history_clusters.mojom.h"
 #include "ui/webui/resources/cr_components/most_visited/most_visited.mojom.h"
 #include "ui/webui/resources/js/browser_command/browser_command.mojom.h"
@@ -896,6 +897,9 @@
 #endif  // !BUILDFLAG(IS_CHROMEOS_ASH)
       >(map);
 
+  RegisterWebUIControllerInterfaceBinder<
+      help_bubble::mojom::HelpBubbleHandlerFactory, InternalsUI>(map);
+
 #if !defined(OFFICIAL_BUILD)
   RegisterWebUIControllerInterfaceBinder<foo::mojom::FooHandler, NewTabPageUI>(
       map);
diff --git a/chrome/browser/devtools/serialize_host_descriptions_unittest.cc b/chrome/browser/devtools/serialize_host_descriptions_unittest.cc
index 45f75b9..4873ff4 100644
--- a/chrome/browser/devtools/serialize_host_descriptions_unittest.cc
+++ b/chrome/browser/devtools/serialize_host_descriptions_unittest.cc
@@ -10,7 +10,9 @@
 #include "base/values.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 ::testing::Optional;
 using ::testing::UnorderedElementsAre;
 
 namespace {
@@ -23,22 +25,22 @@
 }
 
 // Returns the list of children of |arg|.
-const base::Value* GetChildren(const base::Value& arg) {
-  const base::DictionaryValue* dict = nullptr;
-  EXPECT_TRUE(arg.GetAsDictionary(&dict));
+absl::optional<base::Value::List> GetChildren(const base::Value& arg) {
+  EXPECT_TRUE(arg.is_dict());
+  const base::Value::Dict& dict = arg.GetDict();
 
-  const base::Value* children = nullptr;
-  if (!dict->Get("children", &children))
-    return nullptr;
+  const base::Value* children = dict.Find("children");
+  if (!children)
+    return absl::nullopt;
   EXPECT_EQ(base::Value::Type::LIST, children->type());
-  return children;
+  return children->GetList().Clone();
 }
 
 // Checks that |arg| is a description of a node with label |l|.
 bool CheckLabel(const base::Value& arg, int l) {
-  const base::DictionaryValue* dict = nullptr;
-  EXPECT_TRUE(arg.GetAsDictionary(&dict));
-  absl::optional<int> result = dict->FindIntKey("label");
+  EXPECT_TRUE(arg.is_dict());
+  const base::Value::Dict& dict = arg.GetDict();
+  absl::optional<int> result = dict.FindInt("label");
   if (!result)
     return false;
   return l == *result;
@@ -48,7 +50,7 @@
 MATCHER_P(EmptyNode, label, "") {
   if (!CheckLabel(arg, label))
     return false;
-  EXPECT_FALSE(GetChildren(arg));
+  EXPECT_EQ(GetChildren(arg), absl::nullopt);
   return true;
 }
 
@@ -102,24 +104,22 @@
 MATCHER(Node2, "") {
   if (!CheckLabel(arg, 2))
     return false;
-  EXPECT_THAT(GetChildren(arg)->GetListDeprecated(),
-              UnorderedElementsAre(EmptyNode(4)));
+  EXPECT_THAT(GetChildren(arg), Optional(UnorderedElementsAre(EmptyNode(4))));
   return true;
 }
 
 MATCHER(Node5, "") {
   if (!CheckLabel(arg, 5))
     return false;
-  EXPECT_THAT(GetChildren(arg)->GetListDeprecated(),
-              UnorderedElementsAre(Node2()));
+  EXPECT_THAT(GetChildren(arg), Optional(UnorderedElementsAre(Node2())));
   return true;
 }
 
 MATCHER(Node0, "") {
   if (!CheckLabel(arg, 0))
     return false;
-  EXPECT_THAT(GetChildren(arg)->GetListDeprecated(),
-              UnorderedElementsAre(EmptyNode(1), EmptyNode(3), EmptyNode(6)));
+  EXPECT_THAT(GetChildren(arg), Optional(UnorderedElementsAre(
+                                    EmptyNode(1), EmptyNode(3), EmptyNode(6))));
   return true;
 }
 
diff --git a/chrome/browser/dips/dips_helper.cc b/chrome/browser/dips/dips_helper.cc
index 6e587ed..b4b4936 100644
--- a/chrome/browser/dips/dips_helper.cc
+++ b/chrome/browser/dips/dips_helper.cc
@@ -6,11 +6,9 @@
 
 #include <utility>
 
-#include "base/metrics/histogram_functions.h"
-#include "base/strings/strcat.h"
 #include "base/time/default_clock.h"
 #include "chrome/browser/dips/dips_service.h"
-#include "chrome/browser/dips/dips_storage.h"
+#include "chrome/browser/dips/dips_utils.h"
 #include "content/public/browser/browser_context.h"
 #include "content/public/browser/cookie_access_details.h"
 #include "content/public/browser/navigation_handle.h"
@@ -18,26 +16,6 @@
 
 namespace {
 
-inline void UmaHistogramTimeToInteraction(base::TimeDelta sample,
-                                          DIPSCookieMode mode) {
-  const std::string name = base::StrCat(
-      {"Privacy.DIPS.TimeFromStorageToInteraction", GetHistogramSuffix(mode)});
-
-  base::UmaHistogramCustomTimes(name, sample,
-                                /*min=*/base::TimeDelta(),
-                                /*max=*/base::Days(7), 100);
-}
-
-inline void UmaHistogramTimeToStorage(base::TimeDelta sample,
-                                      DIPSCookieMode mode) {
-  const std::string name = base::StrCat(
-      {"Privacy.DIPS.TimeFromInteractionToStorage", GetHistogramSuffix(mode)});
-
-  base::UmaHistogramCustomTimes(name, sample,
-                                /*min=*/base::TimeDelta(),
-                                /*max=*/base::Days(7), 100);
-}
-
 // The Clock that a new DIPSTabHelper will use internally. Exposed as a global
 // so that browser tests (which don't call the DIPSTabHelper constructor
 // directly) can inject a fake clock.
@@ -60,8 +38,18 @@
       service_->ShouldBlockThirdPartyCookies());
 }
 
-DIPSState DIPSTabHelper::StateForURL(const GURL& url) {
-  return service_->storage()->Read(url);
+void DIPSTabHelper::FlushForTesting(base::OnceClosure flushed) {
+  service_->storage()
+      ->AsyncCall(&DIPSStorage::DoNothing)
+      .Then(std::move(flushed));
+}
+
+void DIPSTabHelper::StateForURLForTesting(const GURL& url,
+                                          StateForURLCallback callback) {
+  service_->storage()
+      ->AsyncCall(&DIPSStorage::Read)
+      .WithArgs(url)
+      .Then(std::move(callback));
 }
 
 /* static */
@@ -69,29 +57,29 @@
   return std::exchange(g_clock, clock);
 }
 
-void DIPSTabHelper::MaybeRecordStorage(const GURL& url) {
-  DIPSState state = StateForURL(url);
-  if (state.site_storage_time()) {
-    // We want the time that storage was first written, so don't overwrite the
-    // existing timestamp.
-    return;
-  }
-
+void DIPSTabHelper::RecordStorage(const GURL& url) {
   base::Time now = clock_->Now();
-  if (state.user_interaction_time()) {
-    // First storage, but previous interaction.
-    UmaHistogramTimeToStorage(now - state.user_interaction_time().value(),
-                              GetCookieMode());
-  }
+  DIPSCookieMode mode = GetCookieMode();
 
-  state.set_site_storage_time(now);
+  service_->storage()
+      ->AsyncCall(&DIPSStorage::RecordStorage)
+      .WithArgs(url, now, mode);
+}
+
+void DIPSTabHelper::RecordInteraction(const GURL& url) {
+  base::Time now = clock_->Now();
+  DIPSCookieMode mode = GetCookieMode();
+
+  service_->storage()
+      ->AsyncCall(&DIPSStorage::RecordInteraction)
+      .WithArgs(url, now, mode);
 }
 
 void DIPSTabHelper::OnCookiesAccessed(
     content::RenderFrameHost* render_frame_host,
     const content::CookieAccessDetails& details) {
   if (details.type == content::CookieAccessDetails::Type::kChange) {
-    MaybeRecordStorage(details.url);
+    RecordStorage(details.url);
   }
 }
 
@@ -99,7 +87,7 @@
     content::NavigationHandle* handle,
     const content::CookieAccessDetails& details) {
   if (details.type == content::CookieAccessDetails::Type::kChange) {
-    MaybeRecordStorage(details.url);
+    RecordStorage(details.url);
   }
 }
 
@@ -113,24 +101,4 @@
   RecordInteraction(url);
 }
 
-void DIPSTabHelper::RecordInteraction(const GURL& url) {
-  DIPSState state = StateForURL(url);
-
-  base::Time now = clock_->Now();
-  if (!state.user_interaction_time()) {
-    // First interaction on site.
-    if (state.site_storage_time()) {
-      // Site previously wrote to storage. Record metric for the time delay
-      // between storage and interaction.
-      UmaHistogramTimeToInteraction(now - state.site_storage_time().value(),
-                                    GetCookieMode());
-    }
-  }
-
-  // Unlike for storage, we want to know the time of the most recent user
-  // interaction, so overwrite any existing timestamp. (If interaction happened
-  // a long time ago, it may no longer be relevant.)
-  state.set_user_interaction_time(now);
-}
-
 WEB_CONTENTS_USER_DATA_KEY_IMPL(DIPSTabHelper);
diff --git a/chrome/browser/dips/dips_helper.h b/chrome/browser/dips/dips_helper.h
index 42a54772..8250849b 100644
--- a/chrome/browser/dips/dips_helper.h
+++ b/chrome/browser/dips/dips_helper.h
@@ -26,12 +26,14 @@
 
   // Record that |url| wrote to storage, if it was the first such time (we
   // currently don't care about later writes to storage.)
-  void MaybeRecordStorage(const GURL& url);
+  void RecordStorage(const GURL& url);
   // Record that the user interacted on |url| .
   void RecordInteraction(const GURL& url);
 
-  DIPSState StateForURL(const GURL& url);
+  void FlushForTesting(base::OnceClosure flushed);
 
+  using StateForURLCallback = base::OnceCallback<void(DIPSState)>;
+  void StateForURLForTesting(const GURL& url, StateForURLCallback callback);
   static base::Clock* SetClockForTesting(base::Clock* clock);
 
  private:
diff --git a/chrome/browser/dips/dips_helper_browsertest.cc b/chrome/browser/dips/dips_helper_browsertest.cc
index 0011ab9f..341738c3 100644
--- a/chrome/browser/dips/dips_helper_browsertest.cc
+++ b/chrome/browser/dips/dips_helper_browsertest.cc
@@ -5,6 +5,7 @@
 #include "chrome/browser/dips/dips_helper.h"
 
 #include "base/memory/raw_ptr.h"
+#include "base/test/bind.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/simple_test_clock.h"
 #include "base/time/time.h"
@@ -102,8 +103,32 @@
 
   DIPSTabHelper* dips_helper() { return helper_; }
 
+  void BlockUntilHelperProcessesPendingRequests() {
+    base::RunLoop run_loop;
+    helper_->FlushForTesting(run_loop.QuitClosure());
+    run_loop.Run();
+  }
+
   void SetDIPSTime(base::Time time) { test_clock_.SetNow(time); }
 
+  void CopyDIPSState(DIPSState* a, DIPSState* b) {
+    a->set_site_storage_time_on_load(b->site_storage_time());
+    a->set_user_interaction_time_on_load(b->user_interaction_time());
+    a->set_was_loaded_for_testing(b->was_loaded());
+  }
+
+  DIPSState GetDIPSState(const GURL& url) {
+    DIPSState state;
+
+    helper_->StateForURLForTesting(
+        url, base::BindLambdaForTesting([&](DIPSState loaded_state) {
+          CopyDIPSState(&state, &loaded_state);
+        }));
+    BlockUntilHelperProcessesPendingRequests();
+
+    return state;
+  }
+
  private:
   base::SimpleTestClock test_clock_;
   raw_ptr<DIPSTabHelper> helper_ = nullptr;
@@ -128,8 +153,8 @@
   content::WaitForHitTestData(iframe);
 
   // Before clicking, no DIPS state for either site.
-  EXPECT_FALSE(dips_helper()->StateForURL(url_a).was_loaded());
-  EXPECT_FALSE(dips_helper()->StateForURL(url_b).was_loaded());
+  EXPECT_FALSE(GetDIPSState(url_a).was_loaded());
+  EXPECT_FALSE(GetDIPSState(url_b).was_loaded());
 
   // Click on the b.test iframe.
   SetDIPSTime(time);
@@ -138,12 +163,12 @@
   observer.Wait();
 
   // User interaction is recorded for a.test (the top-level frame).
-  DIPSState state_a = dips_helper()->StateForURL(url_a);
+  DIPSState state_a = GetDIPSState(url_a);
   EXPECT_TRUE(state_a.was_loaded());
   EXPECT_FALSE(state_a.site_storage_time().has_value());
   EXPECT_EQ(time, state_a.user_interaction_time().value());
   // User interaction is also recorded for b.test (the iframe).
-  DIPSState state_b = dips_helper()->StateForURL(url_b);
+  DIPSState state_b = GetDIPSState(url_b);
   EXPECT_TRUE(state_b.was_loaded());
   EXPECT_FALSE(state_b.site_storage_time().has_value());
   EXPECT_EQ(time, state_b.user_interaction_time().value());
@@ -172,8 +197,8 @@
       base::BindRepeating(&content::FrameIsChildOfMainFrame));
 
   // Initially, no DIPS state for either site.
-  EXPECT_FALSE(dips_helper()->StateForURL(url_a).was_loaded());
-  EXPECT_FALSE(dips_helper()->StateForURL(url_b).was_loaded());
+  EXPECT_FALSE(GetDIPSState(url_a).was_loaded());
+  EXPECT_FALSE(GetDIPSState(url_b).was_loaded());
 
   // Write a cookie in the b.test iframe.
   SetDIPSTime(time);
@@ -184,10 +209,10 @@
   observer.Wait();
 
   // Nothing recorded for a.test (the top-level frame).
-  DIPSState state_a = dips_helper()->StateForURL(url_a);
+  DIPSState state_a = GetDIPSState(url_a);
   EXPECT_FALSE(state_a.was_loaded());
   // Site storage was recorded for b.test (the iframe).
-  DIPSState state_b = dips_helper()->StateForURL(url_b);
+  DIPSState state_b = GetDIPSState(url_b);
   EXPECT_TRUE(state_b.was_loaded());
   EXPECT_EQ(time, state_b.site_storage_time().value());
   EXPECT_FALSE(state_b.user_interaction_time().has_value());
diff --git a/chrome/browser/dips/dips_service.cc b/chrome/browser/dips/dips_service.cc
index 68af45328..50f7b15 100644
--- a/chrome/browser/dips/dips_service.cc
+++ b/chrome/browser/dips/dips_service.cc
@@ -4,6 +4,7 @@
 
 #include "chrome/browser/dips/dips_service.h"
 
+#include "base/task/thread_pool.h"
 #include "chrome/browser/content_settings/cookie_settings_factory.h"
 #include "chrome/browser/dips/dips_service_factory.h"
 #include "chrome/browser/profiles/profile.h"
@@ -12,7 +13,8 @@
 DIPSService::DIPSService(content::BrowserContext* context)
     : browser_context_(context),
       cookie_settings_(CookieSettingsFactory::GetForProfile(
-          Profile::FromBrowserContext(context))) {}
+          Profile::FromBrowserContext(context))),
+      storage_(base::SequenceBound<DIPSStorage>(CreateTaskRunner())) {}
 
 DIPSService::~DIPSService() = default;
 
@@ -25,6 +27,12 @@
   cookie_settings_.reset();
 }
 
+scoped_refptr<base::SequencedTaskRunner> DIPSService::CreateTaskRunner() {
+  return base::ThreadPool::CreateSequencedTaskRunner(
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
+       base::ThreadPolicy::PREFER_BACKGROUND});
+}
+
 bool DIPSService::ShouldBlockThirdPartyCookies() const {
   return cookie_settings_->ShouldBlockThirdPartyCookies();
 }
diff --git a/chrome/browser/dips/dips_service.h b/chrome/browser/dips/dips_service.h
index 45fa818e..046d971 100644
--- a/chrome/browser/dips/dips_service.h
+++ b/chrome/browser/dips/dips_service.h
@@ -7,6 +7,7 @@
 
 #include "base/memory/raw_ptr.h"
 #include "base/memory/scoped_refptr.h"
+#include "base/threading/sequence_bound.h"
 #include "chrome/browser/dips/dips_storage.h"
 #include "components/keyed_service/core/keyed_service.h"
 
@@ -24,7 +25,8 @@
 
   static DIPSService* Get(content::BrowserContext* context);
 
-  DIPSStorage* storage() { return &storage_; }
+  base::SequenceBound<DIPSStorage>* storage() { return &storage_; }
+
   bool ShouldBlockThirdPartyCookies() const;
 
  private:
@@ -33,9 +35,11 @@
   explicit DIPSService(content::BrowserContext* context);
   void Shutdown() override;
 
+  scoped_refptr<base::SequencedTaskRunner> CreateTaskRunner();
+
   raw_ptr<content::BrowserContext> browser_context_;
   scoped_refptr<content_settings::CookieSettings> cookie_settings_;
-  DIPSStorage storage_;
+  base::SequenceBound<DIPSStorage> storage_;
 };
 
 #endif  // CHROME_BROWSER_DIPS_DIPS_SERVICE_H_
diff --git a/chrome/browser/dips/dips_state.cc b/chrome/browser/dips/dips_state.cc
index 5546154..3c6257db 100644
--- a/chrome/browser/dips/dips_state.cc
+++ b/chrome/browser/dips/dips_state.cc
@@ -28,6 +28,10 @@
   dirty_ = true;
 }
 
+void DIPSState::set_site_storage_time_on_load(absl::optional<base::Time> time) {
+  site_storage_time_ = time;
+}
+
 void DIPSState::set_user_interaction_time(absl::optional<base::Time> time) {
   if (time == user_interaction_time_) {
     return;
@@ -36,3 +40,12 @@
   user_interaction_time_ = time;
   dirty_ = true;
 }
+
+void DIPSState::set_user_interaction_time_on_load(
+    absl::optional<base::Time> time) {
+  user_interaction_time_ = time;
+}
+
+void DIPSState::set_was_loaded_for_testing(bool loaded) {
+  was_loaded_ = loaded;
+}
diff --git a/chrome/browser/dips/dips_state.h b/chrome/browser/dips/dips_state.h
index b138357..ae11d1b2 100644
--- a/chrome/browser/dips/dips_state.h
+++ b/chrome/browser/dips/dips_state.h
@@ -34,6 +34,7 @@
 // DIPSState represents the state recorded by DIPSService itself.
 class DIPSState {
  public:
+  DIPSState() = default;
   DIPSState(DIPSStorage* storage, std::string site, bool was_loaded);
   DIPSState(DIPSState&&);
   // Flushes changes to storage_.
@@ -43,16 +44,22 @@
   // True iff this DIPSState was loaded from DIPSStorage (as opposed to being
   // default-initialized for a new site).
   bool was_loaded() const { return was_loaded_; }
+  // For testing only.
+  void set_was_loaded_for_testing(bool loaded);
 
   absl::optional<base::Time> site_storage_time() const {
     return site_storage_time_;
   }
   void set_site_storage_time(absl::optional<base::Time> time);
+  // For loading/copying DIPSState objects only.
+  void set_site_storage_time_on_load(absl::optional<base::Time> time);
 
   absl::optional<base::Time> user_interaction_time() const {
     return user_interaction_time_;
   }
   void set_user_interaction_time(absl::optional<base::Time> time);
+  // For loading/copying DIPSState objects only.
+  void set_user_interaction_time_on_load(absl::optional<base::Time> time);
 
  private:
   raw_ptr<DIPSStorage> storage_;
diff --git a/chrome/browser/dips/dips_storage.cc b/chrome/browser/dips/dips_storage.cc
index 364e053..23ca184 100644
--- a/chrome/browser/dips/dips_storage.cc
+++ b/chrome/browser/dips/dips_storage.cc
@@ -4,14 +4,42 @@
 
 #include "chrome/browser/dips/dips_storage.h"
 
+#include "base/metrics/histogram_functions.h"
+#include "base/strings/strcat.h"
 #include "net/base/registry_controlled_domains/registry_controlled_domain.h"
 #include "url/gurl.h"
 
-DIPSStorage::DIPSStorage() {
-  DETACH_FROM_SEQUENCE(sequence_checker_);
+namespace {
+
+inline void UmaHistogramTimeToInteraction(base::TimeDelta sample,
+                                          DIPSCookieMode mode) {
+  const std::string name = base::StrCat(
+      {"Privacy.DIPS.TimeFromStorageToInteraction", GetHistogramSuffix(mode)});
+
+  base::UmaHistogramCustomTimes(name, sample,
+                                /*min=*/base::TimeDelta(),
+                                /*max=*/base::Days(7), 100);
 }
 
-DIPSStorage::~DIPSStorage() = default;
+inline void UmaHistogramTimeToStorage(base::TimeDelta sample,
+                                      DIPSCookieMode mode) {
+  const std::string name = base::StrCat(
+      {"Privacy.DIPS.TimeFromInteractionToStorage", GetHistogramSuffix(mode)});
+
+  base::UmaHistogramCustomTimes(name, sample,
+                                /*min=*/base::TimeDelta(),
+                                /*max=*/base::Days(7), 100);
+}
+
+}  // namespace
+
+DIPSStorage::DIPSStorage() {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+}
+
+DIPSStorage::~DIPSStorage() {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+}
 
 DIPSState DIPSStorage::Read(const GURL& url) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
@@ -22,8 +50,8 @@
   }
   const StateValue& value = iter->second;
   DIPSState state(this, std::move(site), /*was_loaded=*/true);
-  state.set_site_storage_time(value.site_storage_time);
-  state.set_user_interaction_time(value.user_interaction_time);
+  state.set_site_storage_time_on_load(value.site_storage_time);
+  state.set_user_interaction_time_on_load(value.user_interaction_time);
   return state;
 }
 
@@ -34,6 +62,47 @@
   value.user_interaction_time = state.user_interaction_time();
 }
 
+void DIPSStorage::RecordStorage(const GURL& url,
+                                base::Time time,
+                                DIPSCookieMode mode) {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+  DIPSState state = Read(url);
+  if (state.site_storage_time()) {
+    // We want the time that storage was first written, so don't overwrite the
+    // existing timestamp.
+    return;
+  }
+
+  if (state.user_interaction_time()) {
+    // First storage, but previous interaction.
+    UmaHistogramTimeToStorage(time - state.user_interaction_time().value(),
+                              mode);
+  }
+
+  state.set_site_storage_time(time);
+}
+
+void DIPSStorage::RecordInteraction(const GURL& url,
+                                    base::Time time,
+                                    DIPSCookieMode mode) {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+  DIPSState state = Read(url);
+  if (!state.user_interaction_time()) {
+    // First interaction on site.
+    if (state.site_storage_time()) {
+      // Site previously wrote to storage. Record metric for the time delay
+      // between storage and interaction.
+      UmaHistogramTimeToInteraction(time - state.site_storage_time().value(),
+                                    mode);
+    }
+  }
+
+  // Unlike for storage, we want to know the time of the most recent user
+  // interaction, so overwrite any existing timestamp. (If interaction happened
+  // a long time ago, it may no longer be relevant.)
+  state.set_user_interaction_time(time);
+}
+
 /* static */
 std::string DIPSStorage::GetSite(const GURL& url) {
   // TODO(crbug.com/1306935): use privacy boundary instead of eTLD+1
diff --git a/chrome/browser/dips/dips_storage.h b/chrome/browser/dips/dips_storage.h
index ccf53a2..b26f5a6 100644
--- a/chrome/browser/dips/dips_storage.h
+++ b/chrome/browser/dips/dips_storage.h
@@ -11,6 +11,7 @@
 #include "base/sequence_checker.h"
 #include "base/time/time.h"
 #include "chrome/browser/dips/dips_state.h"
+#include "chrome/browser/dips/dips_utils.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
 
 class GURL;
@@ -26,11 +27,23 @@
 
   DIPSState Read(const GURL& url);
 
+  // DIPS Helper Method Impls --------------------------------------------------
+
+  // Record that |url| wrote to storage, if it was the first such time (we
+  // currently don't care about later writes to storage.)
+  void RecordStorage(const GURL& url, base::Time time, DIPSCookieMode mode);
+  // Record that the user interacted on |url|.
+  void RecordInteraction(const GURL& url, base::Time time, DIPSCookieMode mode);
+
+  /* static */
   // Returns an opaque value representing the "privacy boundary" that the URL
   // belongs to. Currently returns eTLD+1, but this is an implementation detail
   // and will change (e.g. after adding support for First-Party Sets).
   static std::string GetSite(const GURL& url);
 
+  // Empty method intended for testing use only.
+  void DoNothing() {}
+
  private:
   friend class DIPSState;
   void Write(const DIPSState& state);
diff --git a/chrome/browser/dips/dips_storage_unittest.cc b/chrome/browser/dips/dips_storage_unittest.cc
index 7bc25a6..2c6a824 100644
--- a/chrome/browser/dips/dips_storage_unittest.cc
+++ b/chrome/browser/dips/dips_storage_unittest.cc
@@ -4,7 +4,6 @@
 
 #include "chrome/browser/dips/dips_storage.h"
 
-#include "base/test/simple_test_clock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "url/gurl.h"
 
diff --git a/chrome/browser/enterprise/connectors/device_trust/key_management/browser/BUILD.gn b/chrome/browser/enterprise/connectors/device_trust/key_management/browser/BUILD.gn
index 7d8ffcd6..8b67ecf 100644
--- a/chrome/browser/enterprise/connectors/device_trust/key_management/browser/BUILD.gn
+++ b/chrome/browser/enterprise/connectors/device_trust/key_management/browser/BUILD.gn
@@ -26,6 +26,8 @@
 
   deps = [
     "//chrome/browser/enterprise/connectors/device_trust/key_management/core",
+    "//chrome/browser/enterprise/connectors/device_trust/key_management/core:util",
+    "//chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence",
     "//components/policy/core/common",
     "//crypto",
     "//services/network/public/cpp",
@@ -67,6 +69,7 @@
     "//chrome/browser/enterprise/connectors/device_trust/key_management/browser/commands",
     "//chrome/browser/enterprise/connectors/device_trust/key_management/browser/commands:test_support",
     "//chrome/browser/enterprise/connectors/device_trust/key_management/core",
+    "//chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence",
     "//chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence:test_support",
     "//components/enterprise",
     "//components/enterprise:test_support",
diff --git a/chrome/browser/enterprise/connectors/device_trust/key_management/browser/device_trust_key_manager_impl.cc b/chrome/browser/enterprise/connectors/device_trust/key_management/browser/device_trust_key_manager_impl.cc
index d578c6b..dcc6996 100644
--- a/chrome/browser/enterprise/connectors/device_trust/key_management/browser/device_trust_key_manager_impl.cc
+++ b/chrome/browser/enterprise/connectors/device_trust/key_management/browser/device_trust_key_manager_impl.cc
@@ -15,6 +15,7 @@
 #include "chrome/browser/enterprise/connectors/device_trust/key_management/browser/key_rotation_launcher.h"
 #include "chrome/browser/enterprise/connectors/device_trust/key_management/browser/metrics_utils.h"
 #include "chrome/browser/enterprise/connectors/device_trust/key_management/core/signing_key_pair.h"
+#include "chrome/browser/enterprise/connectors/device_trust/key_management/core/signing_key_util.h"
 #include "crypto/unexportable_key.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
 
@@ -149,7 +150,7 @@
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   state_ = InitializationState::kLoadingKey;
   background_task_runner_->PostTaskAndReplyWithResult(
-      FROM_HERE, base::BindOnce(&SigningKeyPair::LoadPersistedKey),
+      FROM_HERE, base::BindOnce(&LoadPersistedKey),
       base::BindOnce(&DeviceTrustKeyManagerImpl::OnKeyLoaded,
                      weak_factory_.GetWeakPtr(), create_on_fail));
 }
diff --git a/chrome/browser/enterprise/connectors/device_trust/key_management/browser/device_trust_key_manager_impl_unittest.cc b/chrome/browser/enterprise/connectors/device_trust/key_management/browser/device_trust_key_manager_impl_unittest.cc
index 6504b17..a562e6d3 100644
--- a/chrome/browser/enterprise/connectors/device_trust/key_management/browser/device_trust_key_manager_impl_unittest.cc
+++ b/chrome/browser/enterprise/connectors/device_trust/key_management/browser/device_trust_key_manager_impl_unittest.cc
@@ -48,13 +48,6 @@
 constexpr char kKeyRotationResultHistogram[] =
     "Enterprise.DeviceTrust.Key.RotationResult";
 
-enterprise_connectors::test::MockKeyPersistenceDelegate::KeyInfo
-CreateEmptyKey() {
-  return {enterprise_management::BrowserPublicKeyUploadRequest::
-              KEY_TRUST_LEVEL_UNSPECIFIED,
-          std::vector<uint8_t>()};
-}
-
 }  // namespace
 
 class DeviceTrustKeyManagerImplTest : public testing::Test {
@@ -75,7 +68,6 @@
     auto mock_persistence_delegate =
         persistence_delegate_factory_.CreateMockedHardwareDelegate();
     EXPECT_CALL(*mock_persistence_delegate, LoadKeyPair());
-    EXPECT_CALL(*mock_persistence_delegate, GetUnexportableKeyProvider());
 
     persistence_delegate_factory_.set_next_instance(
         std::move(mock_persistence_delegate));
@@ -85,7 +77,7 @@
     auto mock_persistence_delegate =
         std::make_unique<test::MockKeyPersistenceDelegate>();
     EXPECT_CALL(*mock_persistence_delegate, LoadKeyPair())
-        .WillOnce(testing::Return(CreateEmptyKey()));
+        .WillOnce(Invoke([]() { return nullptr; }));
 
     persistence_delegate_factory_.set_next_instance(
         std::move(mock_persistence_delegate));
@@ -698,7 +690,6 @@
   auto mock_persistence_delegate =
       persistence_delegate_factory_
           .CreateMockedHardwareDelegateWithLoadingSideEffect(start_rotate);
-  EXPECT_CALL(*mock_persistence_delegate, GetUnexportableKeyProvider());
   EXPECT_CALL(*mock_persistence_delegate, LoadKeyPair());
 
   persistence_delegate_factory_.set_next_instance(
@@ -756,7 +747,6 @@
   auto mock_persistence_delegate =
       persistence_delegate_factory_
           .CreateMockedHardwareDelegateWithLoadingSideEffect(start_rotate);
-  EXPECT_CALL(*mock_persistence_delegate, GetUnexportableKeyProvider());
   EXPECT_CALL(*mock_persistence_delegate, LoadKeyPair());
 
   persistence_delegate_factory_.set_next_instance(
diff --git a/chrome/browser/enterprise/connectors/device_trust/key_management/core/BUILD.gn b/chrome/browser/enterprise/connectors/device_trust/key_management/core/BUILD.gn
index e0d694fb..a711b3e7 100644
--- a/chrome/browser/enterprise/connectors/device_trust/key_management/core/BUILD.gn
+++ b/chrome/browser/enterprise/connectors/device_trust/key_management/core/BUILD.gn
@@ -16,7 +16,6 @@
   deps = [ "//base" ]
 
   public_deps = [
-    "//chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence",
     "//components/policy/proto",
     "//crypto",
   ]
@@ -27,18 +26,31 @@
   sources = [ "shared_command_constants.cc" ]
 }
 
+source_set("util") {
+  public = [ "signing_key_util.h" ]
+  sources = [ "signing_key_util.cc" ]
+  deps = [
+    ":core",
+    "//base",
+    "//chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence",
+  ]
+}
+
 source_set("unit_tests") {
   testonly = true
   sources = [
     "ec_signing_key_unittest.cc",
     "signing_key_pair_unittest.cc",
+    "signing_key_util_unittest.cc",
   ]
 
   deps = [
     ":core",
+    ":util",
     "//base",
     "//chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence:test_support",
     "//crypto",
+    "//crypto:test_support",
     "//testing/gmock",
     "//testing/gtest",
   ]
diff --git a/chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/BUILD.gn b/chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/BUILD.gn
index 401ec1b..a9f706a 100644
--- a/chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/BUILD.gn
+++ b/chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/BUILD.gn
@@ -13,8 +13,10 @@
   deps = [ "//base" ]
 
   public_deps = [
+    "//chrome/browser/enterprise/connectors/device_trust/key_management/core",
     "//components/policy/proto",
     "//crypto",
+    "//third_party/abseil-cpp:absl",
   ]
 
   if (is_win) {
@@ -40,7 +42,6 @@
     deps += [
       "//build:branding_buildflags",
       "//chrome/browser/enterprise/connectors/device_trust/key_management/core:constants",
-      "//third_party/abseil-cpp:absl",
     ]
 
     friend = [ ":unit_tests" ]
@@ -81,6 +82,7 @@
     deps = [
       ":persistence",
       "//base",
+      "//chrome/browser/enterprise/connectors/device_trust/key_management/core",
       "//components/policy/proto",
       "//testing/gtest",
     ]
diff --git a/chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/key_persistence_delegate.h b/chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/key_persistence_delegate.h
index 9968476bd..997b583 100644
--- a/chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/key_persistence_delegate.h
+++ b/chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/key_persistence_delegate.h
@@ -8,8 +8,9 @@
 #include <memory>
 #include <vector>
 
+#include "chrome/browser/enterprise/connectors/device_trust/key_management/core/signing_key_pair.h"
 #include "components/policy/proto/device_management_backend.pb.h"
-#include "crypto/unexportable_key.h"
+#include "third_party/abseil-cpp/absl/types/optional.h"
 
 namespace enterprise_connectors {
 
@@ -19,7 +20,6 @@
  public:
   using KeyTrustLevel =
       enterprise_management::BrowserPublicKeyUploadRequest::KeyTrustLevel;
-  using KeyInfo = std::pair<KeyTrustLevel, std::vector<uint8_t>>;
   virtual ~KeyPersistenceDelegate() = default;
 
   // Validates that the current context has sufficient permissions to perform a
@@ -32,23 +32,20 @@
   virtual bool StoreKeyPair(KeyTrustLevel trust_level,
                             std::vector<uint8_t> wrapped) = 0;
 
-  // Loads the key from a platform specific location.  Returns
-  // BPKUR::KEY_TRUST_LEVEL_UNSPECIFIED and an empty vector if the trust level
-  // or wrapped bits could not be loaded.
-  virtual KeyInfo LoadKeyPair() = 0;
+  // Loads the key from a platform specific location and uses this key to
+  // create a key pair. Returns a nullptr if the trust level or wrapped bits
+  // could not be loaded. Otherwise returns a new hardware
+  // generated signing key with a trust level of BPKUR::CHROME_BROWSER_HW_KEY
+  // if available, or a new EC signing key pair with
+  // BPKUR::CHROME_BROWSER_OS_KEY trust level is returned if available.
+  virtual std::unique_ptr<SigningKeyPair> LoadKeyPair() = 0;
 
-  // Returns the hardware-backed signing key provider for the platform if
-  // available.
-  virtual std::unique_ptr<crypto::UnexportableKeyProvider>
-  GetUnexportableKeyProvider() = 0;
-
- protected:
-  // Returns an invalid key info.
-  KeyInfo invalid_key_info() {
-    return {enterprise_management::BrowserPublicKeyUploadRequest::
-                KEY_TRUST_LEVEL_UNSPECIFIED,
-            std::vector<uint8_t>()};
-  }
+  // Creates a key pair composed of a hardware-backed signing key and trust
+  // level BPKUR::CHROME_BROWSER_HW_KEY pair if available,
+  // Otherwise an EC signing key pair with a and trust level
+  // BPKUR::CHROME_BROWSER_OS_KEY is created if available. If neither are
+  // available, a nullptr is returned.
+  virtual std::unique_ptr<SigningKeyPair> CreateKeyPair() = 0;
 };
 
 }  // namespace enterprise_connectors
diff --git a/chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/linux_key_persistence_delegate.cc b/chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/linux_key_persistence_delegate.cc
index 2246a4f..f0eafd8 100644
--- a/chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/linux_key_persistence_delegate.cc
+++ b/chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/linux_key_persistence_delegate.cc
@@ -10,7 +10,7 @@
 #include <sys/stat.h>
 
 #include <string>
-#include <vector>
+#include <utility>
 
 #include "base/base64.h"
 #include "base/files/file.h"
@@ -24,8 +24,11 @@
 #include "base/syslog_logging.h"
 #include "base/values.h"
 #include "build/branding_buildflags.h"
+#include "chrome/browser/enterprise/connectors/device_trust/key_management/core/ec_signing_key.h"
 #include "chrome/browser/enterprise/connectors/device_trust/key_management/core/shared_command_constants.h"
+#include "chrome/browser/enterprise/connectors/device_trust/key_management/core/signing_key_pair.h"
 #include "components/policy/proto/device_management_backend.pb.h"
+#include "crypto/unexportable_key.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
 
 using BPKUR = enterprise_management::BrowserPublicKeyUploadRequest;
@@ -150,28 +153,23 @@
   return write_result;
 }
 
-KeyPersistenceDelegate::KeyInfo LinuxKeyPersistenceDelegate::LoadKeyPair() {
+std::unique_ptr<SigningKeyPair> LinuxKeyPersistenceDelegate::LoadKeyPair() {
   std::string file_content;
   if (!base::ReadFileToStringWithMaxSize(GetSigningKeyFilePath(), &file_content,
                                          kMaxBufferSize)) {
-    return invalid_key_info();
+    return nullptr;
   }
 
   // Get dictionary key info.
   auto keyinfo = base::JSONReader::Read(file_content);
   if (!keyinfo || !keyinfo->is_dict()) {
-    return invalid_key_info();
+    return nullptr;
   }
 
   // Get the trust level.
   auto stored_trust_level = keyinfo->FindIntKey(kSigningKeyTrustLevel);
-  KeyTrustLevel trust_level = BPKUR::KEY_TRUST_LEVEL_UNSPECIFIED;
-  if (stored_trust_level == BPKUR::CHROME_BROWSER_HW_KEY) {
-    trust_level = BPKUR::CHROME_BROWSER_HW_KEY;
-  } else if (stored_trust_level == BPKUR::CHROME_BROWSER_OS_KEY) {
-    trust_level = BPKUR::CHROME_BROWSER_OS_KEY;
-  } else {
-    return invalid_key_info();
+  if (stored_trust_level != BPKUR::CHROME_BROWSER_OS_KEY) {
+    return nullptr;
   }
 
   // Get the key.
@@ -179,21 +177,37 @@
   std::string decoded_key;
 
   if (!encoded_key) {
-    return invalid_key_info();
+    return nullptr;
   }
 
   if (!base::Base64Decode(*encoded_key, &decoded_key)) {
-    return invalid_key_info();
+    return nullptr;
+  }
+  std::vector<uint8_t> wrapped =
+      std::vector<uint8_t>(decoded_key.begin(), decoded_key.end());
+
+  auto provider = std::make_unique<ECSigningKeyProvider>();
+  auto signing_key = provider->FromWrappedSigningKeySlowly(wrapped);
+  if (!signing_key) {
+    return nullptr;
   }
 
-  std::vector<uint8_t> key(decoded_key.begin(), decoded_key.end());
-  return std::make_pair(trust_level, key);
+  return std::make_unique<SigningKeyPair>(std::move(signing_key),
+                                          BPKUR::CHROME_BROWSER_OS_KEY);
 }
 
-std::unique_ptr<crypto::UnexportableKeyProvider>
-LinuxKeyPersistenceDelegate::GetUnexportableKeyProvider() {
-  // TODO (http://b/210343211)
-  return nullptr;
+std::unique_ptr<SigningKeyPair> LinuxKeyPersistenceDelegate::CreateKeyPair() {
+  // TODO (http://b/210343211): TPM support for linux.
+  auto provider = std::make_unique<ECSigningKeyProvider>();
+  auto algorithm = {crypto::SignatureVerifier::ECDSA_SHA256};
+  auto signing_key = provider->GenerateSigningKeySlowly(algorithm);
+
+  if (!signing_key) {
+    return nullptr;
+  }
+
+  return std::make_unique<SigningKeyPair>(std::move(signing_key),
+                                          BPKUR::CHROME_BROWSER_OS_KEY);
 }
 
 // static
diff --git a/chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/linux_key_persistence_delegate.h b/chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/linux_key_persistence_delegate.h
index f9f5f56..4fb5165 100644
--- a/chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/linux_key_persistence_delegate.h
+++ b/chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/linux_key_persistence_delegate.h
@@ -5,6 +5,9 @@
 #ifndef CHROME_BROWSER_ENTERPRISE_CONNECTORS_DEVICE_TRUST_KEY_MANAGEMENT_CORE_PERSISTENCE_LINUX_KEY_PERSISTENCE_DELEGATE_H_
 #define CHROME_BROWSER_ENTERPRISE_CONNECTORS_DEVICE_TRUST_KEY_MANAGEMENT_CORE_PERSISTENCE_LINUX_KEY_PERSISTENCE_DELEGATE_H_
 
+#include <memory>
+#include <vector>
+
 #include "base/files/file.h"
 #include "chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/key_persistence_delegate.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
@@ -15,6 +18,8 @@
 
 namespace enterprise_connectors {
 
+class SigningKeyPair;
+
 // Linux implementation of the KeyPersistenceDelegate interface.
 class LinuxKeyPersistenceDelegate : public KeyPersistenceDelegate {
  public:
@@ -25,9 +30,8 @@
   bool CheckRotationPermissions() override;
   bool StoreKeyPair(KeyPersistenceDelegate::KeyTrustLevel trust_level,
                     std::vector<uint8_t> wrapped) override;
-  KeyPersistenceDelegate::KeyInfo LoadKeyPair() override;
-  std::unique_ptr<crypto::UnexportableKeyProvider> GetUnexportableKeyProvider()
-      override;
+  std::unique_ptr<SigningKeyPair> LoadKeyPair() override;
+  std::unique_ptr<SigningKeyPair> CreateKeyPair() override;
 
  private:
   friend class LinuxKeyPersistenceDelegateTest;
diff --git a/chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/linux_key_persistence_delegate_unittest.cc b/chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/linux_key_persistence_delegate_unittest.cc
index 1591fe0..edc314c 100644
--- a/chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/linux_key_persistence_delegate_unittest.cc
+++ b/chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/linux_key_persistence_delegate_unittest.cc
@@ -4,14 +4,20 @@
 
 #include "chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/linux_key_persistence_delegate.h"
 
+#include <string>
+
 #include "base/base64.h"
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
 #include "base/files/scoped_temp_dir.h"
 #include "base/strings/stringprintf.h"
+#include "chrome/browser/enterprise/connectors/device_trust/key_management/core/ec_signing_key.h"
+#include "chrome/browser/enterprise/connectors/device_trust/key_management/core/signing_key_pair.h"
 #include "components/policy/proto/device_management_backend.pb.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
+using BPKUR = enterprise_management::BrowserPublicKeyUploadRequest;
+
 namespace {
 
 base::FilePath::CharType kFileName[] = FILE_PATH_LITERAL("test_file");
@@ -56,12 +62,35 @@
   return std::vector<uint8_t>(decoded_key.begin(), decoded_key.end());
 }
 
+void ValidateSigningKey(enterprise_connectors::SigningKeyPair* key_pair,
+                        BPKUR::KeyTrustLevel trust_level) {
+  ASSERT_TRUE(key_pair);
+
+  EXPECT_EQ(trust_level, key_pair->trust_level());
+
+  if (trust_level == BPKUR::KEY_TRUST_LEVEL_UNSPECIFIED) {
+    ASSERT_TRUE(!key_pair->key());
+    return;
+  }
+
+  EXPECT_EQ(BPKUR::CHROME_BROWSER_OS_KEY, trust_level);
+  ASSERT_TRUE(key_pair->key());
+
+  // Extract a pubkey should work.
+  std::vector<uint8_t> pubkey = key_pair->key()->GetSubjectPublicKeyInfo();
+  ASSERT_GT(pubkey.size(), 0u);
+
+  // Signing should work.
+  auto signed_data = key_pair->key()->SignSlowly(
+      base::as_bytes(base::make_span("data to sign")));
+  ASSERT_TRUE(signed_data.has_value());
+  ASSERT_GT(signed_data->size(), 0u);
+}
+
 }  // namespace
 
 namespace enterprise_connectors {
 
-using BPKUR = enterprise_management::BrowserPublicKeyUploadRequest;
-
 class LinuxKeyPersistenceDelegateTest : public testing::Test {
  public:
   LinuxKeyPersistenceDelegateTest() {
@@ -145,107 +174,103 @@
   EXPECT_EQ(kValidHWKeyFileContent, GetFileContents());
 }
 
-// Tests trying to load a key when there is no file.
+// Tests trying to load a signing key pair when there is no file.
 TEST_F(LinuxKeyPersistenceDelegateTest, LoadKeyPair_NoKeyFile) {
-  auto [trust_level, wrapped] = persistence_delegate_.LoadKeyPair();
-  EXPECT_EQ(trust_level, BPKUR::KEY_TRUST_LEVEL_UNSPECIFIED);
-  EXPECT_TRUE(wrapped.empty());
+  auto key_pair = persistence_delegate_.LoadKeyPair();
+  EXPECT_FALSE(key_pair);
 }
 
-// Tests loading a valid OS key from a key file.
+// Tests loading a valid OS signing key pair from a file.
 TEST_F(LinuxKeyPersistenceDelegateTest, LoadKeyPair_ValidOSKeyFile) {
   ASSERT_TRUE(CreateFile(kValidOSKeyFileContent));
-  auto [trust_level, wrapped] = persistence_delegate_.LoadKeyPair();
-  EXPECT_EQ(trust_level, BPKUR::CHROME_BROWSER_OS_KEY);
-  EXPECT_FALSE(wrapped.empty());
-  EXPECT_EQ(wrapped, ParseKeyWrapped(kValidKeyWrappedBase64));
+  auto key_pair = persistence_delegate_.LoadKeyPair();
+  ValidateSigningKey(key_pair.get(), BPKUR::CHROME_BROWSER_OS_KEY);
 }
 
-// Tests loading a valid hardware key from a key file.
+// Tests that loading a Hardware key pair fails since hardware keys
+// are not supported on linux.
 TEST_F(LinuxKeyPersistenceDelegateTest, LoadKeyPair_ValidHWKeyFile) {
   ASSERT_TRUE(CreateFile(kValidHWKeyFileContent));
-  auto [trust_level, wrapped] = persistence_delegate_.LoadKeyPair();
-  EXPECT_EQ(trust_level, BPKUR::CHROME_BROWSER_HW_KEY);
-  EXPECT_FALSE(wrapped.empty());
-  EXPECT_EQ(wrapped, ParseKeyWrapped(kValidKeyWrappedBase64));
+  auto key_pair = persistence_delegate_.LoadKeyPair();
+  EXPECT_FALSE(key_pair);
 }
 
-// Tests loading a key from a key file with an invalid trust level.
+// Tests loading a key pair from a key file with an invalid trust level.
 TEST_F(LinuxKeyPersistenceDelegateTest, LoadKeyPair_InvalidTrustLevel) {
   ASSERT_TRUE(CreateFile(kInvalidTrustLevelKeyFileContent));
-  auto [trust_level, wrapped] = persistence_delegate_.LoadKeyPair();
-  EXPECT_EQ(trust_level, BPKUR::KEY_TRUST_LEVEL_UNSPECIFIED);
-  EXPECT_TRUE(wrapped.empty());
+  auto key_pair = persistence_delegate_.LoadKeyPair();
+  EXPECT_FALSE(key_pair);
 }
 
-// Tests loading a key from a key file when the signing key property is missing.
+// Tests loading a key pair from a key file when the signing key property is
+// missing.
 TEST_F(LinuxKeyPersistenceDelegateTest, LoadKeyPair_MissingSigningKey) {
   const char file_content[] = "{\"trustLevel\":\"2\"}";
 
   ASSERT_TRUE(CreateFile(file_content));
-  auto [trust_level, wrapped] = persistence_delegate_.LoadKeyPair();
-  EXPECT_EQ(trust_level, BPKUR::KEY_TRUST_LEVEL_UNSPECIFIED);
-  EXPECT_TRUE(wrapped.empty());
+  auto key_pair = persistence_delegate_.LoadKeyPair();
+  EXPECT_FALSE(key_pair);
 }
 
-// Tests loading a key from a key file when the trust level property is missing.
+// Tests loading a key pair from a key file when the trust level property is
+// missing.
 TEST_F(LinuxKeyPersistenceDelegateTest, LoadKeyPair_MissingTrustLevel) {
   const std::string file_content =
       base::StringPrintf("{\"signingKey\":\"%s\"}", kValidKeyWrappedBase64);
 
   ASSERT_TRUE(CreateFile(file_content));
-  auto [trust_level, wrapped] = persistence_delegate_.LoadKeyPair();
-  EXPECT_EQ(trust_level, BPKUR::KEY_TRUST_LEVEL_UNSPECIFIED);
-  EXPECT_TRUE(wrapped.empty());
+  auto key_pair = persistence_delegate_.LoadKeyPair();
+  EXPECT_FALSE(key_pair);
 }
 
-// Tests loading a key from a key file when the file content is invalid (not a
-// JSON dictionary).
+// Tests loading a key pair from a key file when the file content is invalid
+// (not a JSON dictionary).
 TEST_F(LinuxKeyPersistenceDelegateTest, LoadKeyPair_InvalidContent) {
   const char file_content[] = "just some text";
 
   ASSERT_TRUE(CreateFile(file_content));
-  auto [trust_level, wrapped] = persistence_delegate_.LoadKeyPair();
-  EXPECT_EQ(trust_level, BPKUR::KEY_TRUST_LEVEL_UNSPECIFIED);
-  EXPECT_TRUE(wrapped.empty());
+  auto key_pair = persistence_delegate_.LoadKeyPair();
+  EXPECT_FALSE(key_pair);
 }
 
-// Tests loading a key from a key file when there is a valid key, but the key
-// file contains random trailing values.
+// Tests loading a key pair from a key file when there is a valid key, but the
+// key file contains random trailing values.
 TEST_F(LinuxKeyPersistenceDelegateTest, LoadKeyPair_TrailingGibberish) {
   const std::string file_content = base::StringPrintf(
       "{\"signingKey\":\"%s\",\"trustLevel\":\"2\"}someother random content",
       kValidKeyWrappedBase64);
 
   ASSERT_TRUE(CreateFile(file_content));
-  auto [trust_level, wrapped] = persistence_delegate_.LoadKeyPair();
-  EXPECT_EQ(trust_level, BPKUR::KEY_TRUST_LEVEL_UNSPECIFIED);
-  EXPECT_TRUE(wrapped.empty());
+  auto key_pair = persistence_delegate_.LoadKeyPair();
+  EXPECT_FALSE(key_pair);
 }
 
-// Tests loading a key from a key file when the key value is not a valid
+// Tests loading a key pair from a key file when the key value is not a valid
 // base64 encoded string.
 TEST_F(LinuxKeyPersistenceDelegateTest, LoadKeyPair_KeyNotBase64) {
   const std::string file_content = base::StringPrintf(
       "{\"signingKey\":\"%s\",\"trustLevel\":\"2\"}", kInvalidBase64String);
 
   ASSERT_TRUE(CreateFile(file_content));
-  auto [trust_level, wrapped] = persistence_delegate_.LoadKeyPair();
-  EXPECT_EQ(trust_level, BPKUR::KEY_TRUST_LEVEL_UNSPECIFIED);
-  EXPECT_TRUE(wrapped.empty());
+  auto key_pair = persistence_delegate_.LoadKeyPair();
+  EXPECT_FALSE(key_pair);
 }
 
 // Tests the flow of both storing and loading a key.
 TEST_F(LinuxKeyPersistenceDelegateTest, StoreAndLoadKeyPair) {
   ASSERT_TRUE(CreateFile(""));
-  auto trust_level = BPKUR::CHROME_BROWSER_HW_KEY;
+  auto trust_level = BPKUR::CHROME_BROWSER_OS_KEY;
   auto wrapped = ParseKeyWrapped(kValidKeyWrappedBase64);
   EXPECT_TRUE(persistence_delegate_.StoreKeyPair(trust_level, wrapped));
 
-  auto [loaded_trust_level, loaded_wrapped] =
-      persistence_delegate_.LoadKeyPair();
-  EXPECT_EQ(trust_level, loaded_trust_level);
-  EXPECT_EQ(wrapped, loaded_wrapped);
+  auto key_pair = persistence_delegate_.LoadKeyPair();
+  ValidateSigningKey(key_pair.get(), trust_level);
+}
+
+// Test creating a key pair returns the correct trust level and a signing key.
+TEST_F(LinuxKeyPersistenceDelegateTest, CreateKeyPair) {
+  auto key_pair = persistence_delegate_.CreateKeyPair();
+  ValidateSigningKey(key_pair.get(), key_pair->trust_level());
 }
 
 }  // namespace enterprise_connectors
diff --git a/chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/mac_key_persistence_delegate.cc b/chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/mac_key_persistence_delegate.cc
index a7a5e81f..d5d0517 100644
--- a/chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/mac_key_persistence_delegate.cc
+++ b/chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/mac_key_persistence_delegate.cc
@@ -5,9 +5,13 @@
 #include "chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/mac_key_persistence_delegate.h"
 
 #include "base/notreached.h"
+#include "chrome/browser/enterprise/connectors/device_trust/key_management/core/signing_key_pair.h"
+#include "components/policy/proto/device_management_backend.pb.h"
 
 namespace enterprise_connectors {
 
+using BPKUR = enterprise_management::BrowserPublicKeyUploadRequest;
+
 MacKeyPersistenceDelegate::~MacKeyPersistenceDelegate() = default;
 
 bool MacKeyPersistenceDelegate::CheckRotationPermissions() {
@@ -21,14 +25,13 @@
   return false;
 }
 
-KeyPersistenceDelegate::KeyInfo MacKeyPersistenceDelegate::LoadKeyPair() {
+std::unique_ptr<SigningKeyPair> MacKeyPersistenceDelegate::LoadKeyPair() {
   NOTIMPLEMENTED();
-  return invalid_key_info();
+  return nullptr;
 }
 
-std::unique_ptr<crypto::UnexportableKeyProvider>
-MacKeyPersistenceDelegate::GetUnexportableKeyProvider() {
-  // Mac OS does not expose TPM support.
+std::unique_ptr<SigningKeyPair> MacKeyPersistenceDelegate::CreateKeyPair() {
+  NOTIMPLEMENTED();
   return nullptr;
 }
 
diff --git a/chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/mac_key_persistence_delegate.h b/chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/mac_key_persistence_delegate.h
index 7a1b6b8..1ada540 100644
--- a/chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/mac_key_persistence_delegate.h
+++ b/chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/mac_key_persistence_delegate.h
@@ -5,10 +5,15 @@
 #ifndef CHROME_BROWSER_ENTERPRISE_CONNECTORS_DEVICE_TRUST_KEY_MANAGEMENT_CORE_PERSISTENCE_MAC_KEY_PERSISTENCE_DELEGATE_H_
 #define CHROME_BROWSER_ENTERPRISE_CONNECTORS_DEVICE_TRUST_KEY_MANAGEMENT_CORE_PERSISTENCE_MAC_KEY_PERSISTENCE_DELEGATE_H_
 
+#include <memory>
+#include <vector>
+
 #include "chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/key_persistence_delegate.h"
 
 namespace enterprise_connectors {
 
+class SigningKeyPair;
+
 // Mac implementation of the KeyPersistenceDelegate interface.
 class MacKeyPersistenceDelegate : public KeyPersistenceDelegate {
  public:
@@ -18,9 +23,8 @@
   bool CheckRotationPermissions() override;
   bool StoreKeyPair(KeyPersistenceDelegate::KeyTrustLevel trust_level,
                     std::vector<uint8_t> wrapped) override;
-  KeyPersistenceDelegate::KeyInfo LoadKeyPair() override;
-  std::unique_ptr<crypto::UnexportableKeyProvider> GetUnexportableKeyProvider()
-      override;
+  std::unique_ptr<SigningKeyPair> LoadKeyPair() override;
+  std::unique_ptr<SigningKeyPair> CreateKeyPair() override;
 };
 
 }  // namespace enterprise_connectors
diff --git a/chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/mock_key_persistence_delegate.h b/chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/mock_key_persistence_delegate.h
index 5c3a9f7..f8f76d2 100644
--- a/chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/mock_key_persistence_delegate.h
+++ b/chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/mock_key_persistence_delegate.h
@@ -6,6 +6,7 @@
 #define CHROME_BROWSER_ENTERPRISE_CONNECTORS_DEVICE_TRUST_KEY_MANAGEMENT_CORE_PERSISTENCE_MOCK_KEY_PERSISTENCE_DELEGATE_H_
 
 #include "chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/key_persistence_delegate.h"
+#include "chrome/browser/enterprise/connectors/device_trust/key_management/core/signing_key_pair.h"
 #include "testing/gmock/include/gmock/gmock.h"
 
 namespace enterprise_connectors {
@@ -23,9 +24,12 @@
               StoreKeyPair,
               (KeyPersistenceDelegate::KeyTrustLevel, std::vector<uint8_t>),
               (override));
-  MOCK_METHOD(KeyPersistenceDelegate::KeyInfo, LoadKeyPair, (), (override));
-  MOCK_METHOD(std::unique_ptr<crypto::UnexportableKeyProvider>,
-              GetUnexportableKeyProvider,
+  MOCK_METHOD(std::unique_ptr<enterprise_connectors::SigningKeyPair>,
+              LoadKeyPair,
+              (),
+              (override));
+  MOCK_METHOD(std::unique_ptr<enterprise_connectors::SigningKeyPair>,
+              CreateKeyPair,
               (),
               (override));
 };
diff --git a/chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/scoped_key_persistence_delegate_factory.cc b/chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/scoped_key_persistence_delegate_factory.cc
index e0f9d00..590b486 100644
--- a/chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/scoped_key_persistence_delegate_factory.cc
+++ b/chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/scoped_key_persistence_delegate_factory.cc
@@ -7,6 +7,7 @@
 #include "base/check.h"
 #include "chrome/browser/enterprise/connectors/device_trust/key_management/core/ec_signing_key.h"
 #include "chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/mock_key_persistence_delegate.h"
+#include "chrome/browser/enterprise/connectors/device_trust/key_management/core/signing_key_pair.h"
 #include "crypto/signature_verifier.h"
 #include "crypto/unexportable_key.h"
 #include "testing/gmock/include/gmock/gmock.h"
@@ -19,21 +20,19 @@
 
 namespace {
 
-std::vector<uint8_t> GenerateHardwareWrapped() {
+std::unique_ptr<crypto::UnexportableSigningKey> GenerateHardwareSigningKey() {
   auto provider = crypto::GetUnexportableKeyProvider();
   DCHECK(provider);
   auto acceptable_algorithms = {crypto::SignatureVerifier::ECDSA_SHA256};
   auto signing_key = provider->GenerateSigningKeySlowly(acceptable_algorithms);
   DCHECK(signing_key);
-  return signing_key->GetWrappedKey();
+  return signing_key;
 }
 
-std::vector<uint8_t> GenerateECWrapped() {
-  ECSigningKeyProvider ec_key_provider;
+std::unique_ptr<crypto::UnexportableSigningKey> GenerateECSigningKey() {
+  auto ec_key_provider = std::make_unique<ECSigningKeyProvider>();
   auto acceptable_algorithms = {crypto::SignatureVerifier::ECDSA_SHA256};
-  auto signing_key =
-      ec_key_provider.GenerateSigningKeySlowly(acceptable_algorithms);
-  return signing_key->GetWrappedKey();
+  return ec_key_provider->GenerateSigningKeySlowly(acceptable_algorithms);
 }
 
 }  // namespace
@@ -56,19 +55,21 @@
     CreateMockedHardwareDelegateWithLoadingSideEffect(
         base::RepeatingClosure& side_effect) {
   if (hw_wrapped_key_.empty()) {
-    hw_wrapped_key_ = GenerateHardwareWrapped();
+    hw_wrapped_key_ = GenerateHardwareSigningKey()->GetWrappedKey();
   }
 
   auto mocked_delegate = std::make_unique<MockKeyPersistenceDelegate>();
   ON_CALL(*mocked_delegate.get(), LoadKeyPair)
       .WillByDefault(testing::DoAll(
           testing::Invoke([&side_effect]() { side_effect.Run(); }),
-          testing::Return(KeyPersistenceDelegate::KeyInfo(
-              BPKUR::CHROME_BROWSER_HW_KEY, hw_wrapped_key_))));
-  ON_CALL(*mocked_delegate.get(), GetUnexportableKeyProvider)
+          testing::Invoke([]() {
+            return std::make_unique<SigningKeyPair>(
+                GenerateHardwareSigningKey(), BPKUR::CHROME_BROWSER_HW_KEY);
+          })));
+  ON_CALL(*mocked_delegate.get(), CreateKeyPair)
       .WillByDefault(testing::Invoke([]() {
-        // This is mocked via crypto::ScopedMockUnexportableKeyProvider.
-        return crypto::GetUnexportableKeyProvider();
+        return std::make_unique<SigningKeyPair>(GenerateHardwareSigningKey(),
+                                                BPKUR::CHROME_BROWSER_HW_KEY);
       }));
   return mocked_delegate;
 }
@@ -76,15 +77,20 @@
 std::unique_ptr<MockKeyPersistenceDelegate>
 ScopedKeyPersistenceDelegateFactory::CreateMockedECDelegate() {
   if (ec_wrapped_key_.empty()) {
-    ec_wrapped_key_ = GenerateECWrapped();
+    ec_wrapped_key_ = GenerateECSigningKey()->GetWrappedKey();
   }
 
   auto mocked_delegate = std::make_unique<MockKeyPersistenceDelegate>();
   ON_CALL(*mocked_delegate.get(), LoadKeyPair)
-      .WillByDefault(testing::Return(KeyPersistenceDelegate::KeyInfo(
-          BPKUR::CHROME_BROWSER_OS_KEY, ec_wrapped_key_)));
-  ON_CALL(*mocked_delegate.get(), GetUnexportableKeyProvider)
-      .WillByDefault(testing::Invoke([]() { return nullptr; }));
+      .WillByDefault(testing::Invoke([]() {
+        return std::make_unique<SigningKeyPair>(GenerateECSigningKey(),
+                                                BPKUR::CHROME_BROWSER_OS_KEY);
+      }));
+  ON_CALL(*mocked_delegate.get(), CreateKeyPair)
+      .WillByDefault(testing::Invoke([]() {
+        return std::make_unique<SigningKeyPair>(GenerateECSigningKey(),
+                                                BPKUR::CHROME_BROWSER_OS_KEY);
+      }));
   return mocked_delegate;
 }
 
diff --git a/chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/win_key_persistence_delegate.cc b/chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/win_key_persistence_delegate.cc
index 4a574a3..c5e9e5e 100644
--- a/chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/win_key_persistence_delegate.cc
+++ b/chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/win_key_persistence_delegate.cc
@@ -4,8 +4,13 @@
 
 #include "chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/win_key_persistence_delegate.h"
 
+#include <string>
+#include <utility>
+
 #include "base/win/registry.h"
+#include "chrome/browser/enterprise/connectors/device_trust/key_management/core/ec_signing_key.h"
 #include "chrome/installer/util/install_util.h"
+#include "crypto/unexportable_key.h"
 
 using BPKUR = enterprise_management::BrowserPublicKeyUploadRequest;
 using BPKUP = enterprise_management::BrowserPublicKeyUploadResponse;
@@ -41,7 +46,7 @@
          key.WriteValue(trustlevel_name.c_str(), trust_level) == ERROR_SUCCESS;
 }
 
-KeyPersistenceDelegate::KeyInfo WinKeyPersistenceDelegate::LoadKeyPair() {
+std::unique_ptr<SigningKeyPair> WinKeyPersistenceDelegate::LoadKeyPair() {
   base::win::RegKey key;
   std::wstring signingkey_name;
   std::wstring trustlevel_name;
@@ -49,20 +54,23 @@
       InstallUtil::GetDeviceTrustSigningKeyLocation(
           InstallUtil::ReadOnly(true));
   if (!key.Valid())
-    return invalid_key_info();
+    return nullptr;
 
   DWORD trust_level_dw;
   auto res = key.ReadValueDW(trustlevel_name.c_str(), &trust_level_dw);
   if (res != ERROR_SUCCESS)
-    return invalid_key_info();
+    return nullptr;
 
+  std::unique_ptr<crypto::UnexportableKeyProvider> provider;
   KeyTrustLevel trust_level = BPKUR::KEY_TRUST_LEVEL_UNSPECIFIED;
   if (trust_level_dw == BPKUR::CHROME_BROWSER_HW_KEY) {
     trust_level = BPKUR::CHROME_BROWSER_HW_KEY;
+    provider = crypto::GetUnexportableKeyProvider();
   } else if (trust_level_dw == BPKUR::CHROME_BROWSER_OS_KEY) {
     trust_level = BPKUR::CHROME_BROWSER_OS_KEY;
+    provider = std::make_unique<ECSigningKeyProvider>();
   } else {
-    return invalid_key_info();
+    return nullptr;
   }
 
   std::vector<uint8_t> wrapped;
@@ -74,14 +82,36 @@
     res = key.ReadValue(signingkey_name.c_str(), wrapped.data(), &size, &type);
   }
   if (res != ERROR_SUCCESS || type != REG_BINARY)
-    return invalid_key_info();
+    return nullptr;
 
-  return {trust_level, wrapped};
+  auto signing_key = provider->FromWrappedSigningKeySlowly(wrapped);
+  if (!signing_key) {
+    return nullptr;
+  }
+
+  return std::make_unique<SigningKeyPair>(std::move(signing_key), trust_level);
 }
 
-std::unique_ptr<crypto::UnexportableKeyProvider>
-WinKeyPersistenceDelegate::GetUnexportableKeyProvider() {
-  return crypto::GetUnexportableKeyProvider();
+std::unique_ptr<SigningKeyPair> WinKeyPersistenceDelegate::CreateKeyPair() {
+  auto acceptable_algorithms = {
+      crypto::SignatureVerifier::ECDSA_SHA256,
+      crypto::SignatureVerifier::RSA_PKCS1_SHA256,
+  };
+
+  auto provider = crypto::GetUnexportableKeyProvider();
+  KeyPersistenceDelegate::KeyTrustLevel trust_level =
+      BPKUR::CHROME_BROWSER_HW_KEY;
+  if (!provider) {
+    provider = std::make_unique<ECSigningKeyProvider>();
+    trust_level = BPKUR::CHROME_BROWSER_OS_KEY;
+  }
+
+  auto signing_key = provider->GenerateSigningKeySlowly(acceptable_algorithms);
+  if (!signing_key) {
+    return nullptr;
+  }
+
+  return std::make_unique<SigningKeyPair>(std::move(signing_key), trust_level);
 }
 
 }  // namespace enterprise_connectors
diff --git a/chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/win_key_persistence_delegate.h b/chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/win_key_persistence_delegate.h
index 519f92c..6d3aa8b 100644
--- a/chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/win_key_persistence_delegate.h
+++ b/chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/win_key_persistence_delegate.h
@@ -7,8 +7,13 @@
 
 #include "chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/key_persistence_delegate.h"
 
+#include <memory>
+#include <vector>
+
 namespace enterprise_connectors {
 
+class SigningKeyPair;
+
 // Windows implementation of the KeyPersistenceDelegate interface.
 class WinKeyPersistenceDelegate : public KeyPersistenceDelegate {
  public:
@@ -18,9 +23,8 @@
   bool CheckRotationPermissions() override;
   bool StoreKeyPair(KeyPersistenceDelegate::KeyTrustLevel trust_level,
                     std::vector<uint8_t> wrapped) override;
-  KeyPersistenceDelegate::KeyInfo LoadKeyPair() override;
-  std::unique_ptr<crypto::UnexportableKeyProvider> GetUnexportableKeyProvider()
-      override;
+  std::unique_ptr<SigningKeyPair> LoadKeyPair() override;
+  std::unique_ptr<SigningKeyPair> CreateKeyPair() override;
 };
 
 }  // namespace enterprise_connectors
diff --git a/chrome/browser/enterprise/connectors/device_trust/key_management/core/signing_key_pair.cc b/chrome/browser/enterprise/connectors/device_trust/key_management/core/signing_key_pair.cc
index b3cfa339..1b43c8d 100644
--- a/chrome/browser/enterprise/connectors/device_trust/key_management/core/signing_key_pair.cc
+++ b/chrome/browser/enterprise/connectors/device_trust/key_management/core/signing_key_pair.cc
@@ -5,67 +5,16 @@
 #include "chrome/browser/enterprise/connectors/device_trust/key_management/core/signing_key_pair.h"
 
 #include "base/check.h"
-#include "base/notreached.h"
-#include "chrome/browser/enterprise/connectors/device_trust/key_management/core/ec_signing_key.h"
-#include "chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/key_persistence_delegate.h"
-#include "chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/key_persistence_delegate_factory.h"
-#include "crypto/unexportable_key.h"
 
 using BPKUR = enterprise_management::BrowserPublicKeyUploadRequest;
 
 namespace enterprise_connectors {
 
-// static
-std::unique_ptr<SigningKeyPair> SigningKeyPair::Create(
-    KeyPersistenceDelegate* persistence_delegate) {
-  DCHECK(persistence_delegate);
-
-  auto [trust_level, wrapped] = persistence_delegate->LoadKeyPair();
-
-  if (wrapped.empty()) {
-    // No persisted key pair with a known trust level found.  This is not an
-    // error, it could be that no key has been created yet.
-    return nullptr;
-  }
-
-  std::unique_ptr<crypto::UnexportableSigningKey> key_pair;
-  switch (trust_level) {
-    case BPKUR::CHROME_BROWSER_HW_KEY: {
-      auto provider = persistence_delegate->GetUnexportableKeyProvider();
-      if (provider) {
-        key_pair = provider->FromWrappedSigningKeySlowly(wrapped);
-      }
-      break;
-    }
-    case BPKUR::CHROME_BROWSER_OS_KEY: {
-      ECSigningKeyProvider provider;
-      key_pair = provider.FromWrappedSigningKeySlowly(wrapped);
-      break;
-    }
-    case BPKUR::KEY_TRUST_LEVEL_UNSPECIFIED:
-      NOTREACHED();
-      return nullptr;
-  }
-
-  if (key_pair) {
-    return std::make_unique<SigningKeyPair>(std::move(key_pair), trust_level);
-  }
-  return nullptr;
-}
-
-// static
-std::unique_ptr<SigningKeyPair> SigningKeyPair::LoadPersistedKey() {
-  auto* factory = KeyPersistenceDelegateFactory::GetInstance();
-  DCHECK(factory);
-  auto persistence_delegate = factory->CreateKeyPersistenceDelegate();
-  return Create(persistence_delegate.get());
-}
-
 SigningKeyPair::SigningKeyPair(
-    std::unique_ptr<crypto::UnexportableSigningKey> key_pair,
+    std::unique_ptr<crypto::UnexportableSigningKey> signing_key,
     KeyTrustLevel trust_level)
-    : key_pair_(std::move(key_pair)), trust_level_(trust_level) {
-  DCHECK(key_pair_);
+    : signing_key_(std::move(signing_key)), trust_level_(trust_level) {
+  DCHECK(signing_key_);
 }
 
 SigningKeyPair::~SigningKeyPair() = default;
diff --git a/chrome/browser/enterprise/connectors/device_trust/key_management/core/signing_key_pair.h b/chrome/browser/enterprise/connectors/device_trust/key_management/core/signing_key_pair.h
index 9286990..c9103d3 100644
--- a/chrome/browser/enterprise/connectors/device_trust/key_management/core/signing_key_pair.h
+++ b/chrome/browser/enterprise/connectors/device_trust/key_management/core/signing_key_pair.h
@@ -6,10 +6,9 @@
 #define CHROME_BROWSER_ENTERPRISE_CONNECTORS_DEVICE_TRUST_KEY_MANAGEMENT_CORE_SIGNING_KEY_PAIR_H_
 
 #include <memory>
-#include <string>
-#include <vector>
 
 #include "components/policy/proto/device_management_backend.pb.h"
+#include "crypto/unexportable_key.h"
 
 namespace crypto {
 class UnexportableSigningKey;
@@ -17,29 +16,13 @@
 
 namespace enterprise_connectors {
 
-class KeyPersistenceDelegate;
-
-// Class in charge of using a stored signing key and providing cryptographic
-// functionality.
+// Class in charge of storing a signing key and its trust level.
 class SigningKeyPair {
  public:
   using KeyTrustLevel =
       enterprise_management::BrowserPublicKeyUploadRequest::KeyTrustLevel;
 
-  // Uses `persistence_delegate` to create a SigningKeyPair instance based on
-  // a key that has already been persisted on the system. Returns nullptr
-  // if no key was found.
-  static std::unique_ptr<SigningKeyPair> Create(
-      KeyPersistenceDelegate* persistence_delegate);
-
-  // Loads the signing key pair from disk and initializes it. Returns nullptr if
-  // no key was found. Uses the KeyPersistenceDelegateFactory's default delegate
-  // to load the key from persistence.
-  // This function does IO and heavy cryptographic calculations, do not call
-  // on the main thread.
-  static std::unique_ptr<SigningKeyPair> LoadPersistedKey();
-
-  SigningKeyPair(std::unique_ptr<crypto::UnexportableSigningKey> key_pair,
+  SigningKeyPair(std::unique_ptr<crypto::UnexportableSigningKey> signing_key,
                  KeyTrustLevel trust_level);
 
   SigningKeyPair(const SigningKeyPair&) = delete;
@@ -55,15 +38,14 @@
   }
 
   crypto::UnexportableSigningKey* key() const {
-    return key_pair_ ? key_pair_.get() : nullptr;
+    return signing_key_ ? signing_key_.get() : nullptr;
   }
 
   KeyTrustLevel trust_level() const { return trust_level_; }
 
  private:
-  std::unique_ptr<crypto::UnexportableSigningKey> key_pair_;
-  KeyTrustLevel trust_level_ = enterprise_management::
-      BrowserPublicKeyUploadRequest::KEY_TRUST_LEVEL_UNSPECIFIED;
+  std::unique_ptr<crypto::UnexportableSigningKey> signing_key_;
+  KeyTrustLevel trust_level_;
 };
 
 }  // namespace enterprise_connectors
diff --git a/chrome/browser/enterprise/connectors/device_trust/key_management/core/signing_key_pair_unittest.cc b/chrome/browser/enterprise/connectors/device_trust/key_management/core/signing_key_pair_unittest.cc
index 1b22e90c..c55d0920 100644
--- a/chrome/browser/enterprise/connectors/device_trust/key_management/core/signing_key_pair_unittest.cc
+++ b/chrome/browser/enterprise/connectors/device_trust/key_management/core/signing_key_pair_unittest.cc
@@ -8,16 +8,13 @@
 #include <vector>
 
 #include "chrome/browser/enterprise/connectors/device_trust/key_management/core/ec_signing_key.h"
-#include "chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/key_persistence_delegate.h"
-#include "chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/mock_key_persistence_delegate.h"
-#include "chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/scoped_key_persistence_delegate_factory.h"
-#include "crypto/unexportable_key.h"
+#include "crypto/scoped_mock_unexportable_key_provider.h"
+#include "crypto/signature_verifier.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 using BPKUP = enterprise_management::BrowserPublicKeyUploadResponse;
 using BPKUR = enterprise_management::BrowserPublicKeyUploadRequest;
-using testing::Return;
 
 namespace enterprise_connectors {
 
@@ -41,47 +38,41 @@
   ASSERT_GT(signed_data->size(), 0u);
 }
 
+std::unique_ptr<crypto::UnexportableSigningKey> GenerateSigningKey(
+    BPKUR::KeyTrustLevel trust_level) {
+  std::unique_ptr<crypto::UnexportableKeyProvider> provider;
+  if (trust_level == BPKUR::CHROME_BROWSER_HW_KEY) {
+    provider = crypto::GetUnexportableKeyProvider();
+  } else {
+    provider = std::make_unique<ECSigningKeyProvider>();
+  }
+  DCHECK(provider);
+  auto acceptable_algorithms = {crypto::SignatureVerifier::ECDSA_SHA256};
+  return provider->GenerateSigningKeySlowly(acceptable_algorithms);
+}
+
 }  // namespace
 
 class SigningKeyPairTest : public testing::Test {
  protected:
-  test::ScopedKeyPersistenceDelegateFactory factory_;
+  crypto::ScopedMockUnexportableKeyProvider scoped_key_provider_;
 };
 
-// Tests that the SigningKeyPair::Create factory function returns nothing if no
-// key was persisted.
-TEST_F(SigningKeyPairTest, Create_NoKey) {
-  testing::StrictMock<test::MockKeyPersistenceDelegate>
-      mock_persistence_delegate;
-  EXPECT_CALL(mock_persistence_delegate, LoadKeyPair())
-      .WillOnce(Return(KeyPersistenceDelegate::KeyInfo(
-          BPKUR::KEY_TRUST_LEVEL_UNSPECIFIED, std::vector<uint8_t>())));
-  EXPECT_FALSE(SigningKeyPair::Create(&mock_persistence_delegate));
-}
-
-// Tests that the SigningKeyPair::Create factory function returns a properly
-// initialized hardware-backed SigningKeyPair if a hardware-backed key was
-// available.
-TEST_F(SigningKeyPairTest, Create_WithHwKey) {
-  auto mocked_delegate = factory_.CreateMockedHardwareDelegate();
-
-  EXPECT_CALL(*mocked_delegate, LoadKeyPair());
-  EXPECT_CALL(*mocked_delegate, GetUnexportableKeyProvider());
-
-  auto key_pair = SigningKeyPair::Create(mocked_delegate.get());
-
+// Tests that the SigningKeyPair instance is correctly initialized with a
+// hardware-backed SigningKeyPair if it was available.
+TEST_F(SigningKeyPairTest, SigningKeyPairInstance_WithHwKey) {
+  auto key_pair = std::make_unique<SigningKeyPair>(
+      GenerateSigningKey(BPKUR::CHROME_BROWSER_HW_KEY),
+      BPKUR::CHROME_BROWSER_HW_KEY);
   ValidateSigningKey(key_pair.get(), BPKUR::CHROME_BROWSER_HW_KEY);
 }
 
-// Tests that the SigningKeyPair::Create factory function returns a properly
-// initialized crypto::ECPrivateKey-backed SigningKeyPair if that is what was
-// available.
+// Tests that the SigningKeyPair instance is correctly initialized with a
+// crypto::ECPrivateKey-backed SigningKeyPair if it was available.
 TEST_F(SigningKeyPairTest, Create_WithECPrivateKey) {
-  auto mocked_delegate = factory_.CreateMockedECDelegate();
-  EXPECT_CALL(*mocked_delegate, LoadKeyPair);
-
-  auto key_pair = SigningKeyPair::Create(mocked_delegate.get());
-
+  auto key_pair = std::make_unique<SigningKeyPair>(
+      GenerateSigningKey(BPKUR::CHROME_BROWSER_OS_KEY),
+      BPKUR::CHROME_BROWSER_OS_KEY);
   ValidateSigningKey(key_pair.get(), BPKUR::CHROME_BROWSER_OS_KEY);
 }
 
diff --git a/chrome/browser/enterprise/connectors/device_trust/key_management/core/signing_key_util.cc b/chrome/browser/enterprise/connectors/device_trust/key_management/core/signing_key_util.cc
new file mode 100644
index 0000000..6998c170
--- /dev/null
+++ b/chrome/browser/enterprise/connectors/device_trust/key_management/core/signing_key_util.cc
@@ -0,0 +1,19 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/enterprise/connectors/device_trust/key_management/core/signing_key_util.h"
+
+#include "base/check.h"
+#include "chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/key_persistence_delegate.h"
+#include "chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/key_persistence_delegate_factory.h"
+
+namespace enterprise_connectors {
+
+std::unique_ptr<SigningKeyPair> LoadPersistedKey() {
+  auto* factory = KeyPersistenceDelegateFactory::GetInstance();
+  DCHECK(factory);
+  return factory->CreateKeyPersistenceDelegate()->LoadKeyPair();
+}
+
+}  // namespace enterprise_connectors
diff --git a/chrome/browser/enterprise/connectors/device_trust/key_management/core/signing_key_util.h b/chrome/browser/enterprise/connectors/device_trust/key_management/core/signing_key_util.h
new file mode 100644
index 0000000..aa6cfa1
--- /dev/null
+++ b/chrome/browser/enterprise/connectors/device_trust/key_management/core/signing_key_util.h
@@ -0,0 +1,24 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_ENTERPRISE_CONNECTORS_DEVICE_TRUST_KEY_MANAGEMENT_CORE_SIGNING_KEY_UTIL_H_
+#define CHROME_BROWSER_ENTERPRISE_CONNECTORS_DEVICE_TRUST_KEY_MANAGEMENT_CORE_SIGNING_KEY_UTIL_H_
+
+#include <memory>
+
+#include "chrome/browser/enterprise/connectors/device_trust/key_management/core/signing_key_pair.h"
+
+namespace enterprise_connectors {
+
+// Loads the signing key pair from disk and initializes it. Returns nullptr if
+// no key was found. Uses the KeyPersistenceDelegateFactory's default delegate
+// to load the key from persistence.
+//
+// This function does IO and heavy cryptographic calculations, do not call
+// on the main thread.
+std::unique_ptr<SigningKeyPair> LoadPersistedKey();
+
+}  // namespace enterprise_connectors
+
+#endif  // CHROME_BROWSER_ENTERPRISE_CONNECTORS_DEVICE_TRUST_KEY_MANAGEMENT_CORE_SIGNING_KEY_UTIL_H_
diff --git a/chrome/browser/enterprise/connectors/device_trust/key_management/core/signing_key_util_unittest.cc b/chrome/browser/enterprise/connectors/device_trust/key_management/core/signing_key_util_unittest.cc
new file mode 100644
index 0000000..24732a62
--- /dev/null
+++ b/chrome/browser/enterprise/connectors/device_trust/key_management/core/signing_key_util_unittest.cc
@@ -0,0 +1,78 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/enterprise/connectors/device_trust/key_management/core/signing_key_util.h"
+
+#include <vector>
+
+#include "base/containers/span.h"
+#include "chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/mock_key_persistence_delegate.h"
+#include "chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/scoped_key_persistence_delegate_factory.h"
+#include "crypto/unexportable_key.h"
+#include "testing/gmock/include/gmock/gmock.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+using BPKUR = enterprise_management::BrowserPublicKeyUploadRequest;
+
+namespace enterprise_connectors {
+
+using test::MockKeyPersistenceDelegate;
+
+namespace {
+
+void ValidateSigningKey(SigningKeyPair* key_pair,
+                        BPKUR::KeyTrustLevel expected_trust_level) {
+  ASSERT_TRUE(key_pair);
+
+  EXPECT_EQ(expected_trust_level, key_pair->trust_level());
+  ASSERT_TRUE(key_pair->key());
+
+  // Extract a pubkey should work.
+  std::vector<uint8_t> pubkey = key_pair->key()->GetSubjectPublicKeyInfo();
+  ASSERT_GT(pubkey.size(), 0u);
+
+  // Signing should work.
+  auto signed_data = key_pair->key()->SignSlowly(
+      base::as_bytes(base::make_span("data to sign")));
+  ASSERT_TRUE(signed_data.has_value());
+  ASSERT_GT(signed_data->size(), 0u);
+}
+
+}  // namespace
+
+class SigningKeyUtilTest : public testing::Test {
+ protected:
+  void StartTest(BPKUR::KeyTrustLevel trust_level) {
+    std::unique_ptr<MockKeyPersistenceDelegate> mocked_delegate;
+    if (trust_level == BPKUR::CHROME_BROWSER_HW_KEY) {
+      mocked_delegate = factory_.CreateMockedHardwareDelegate();
+    } else {
+      mocked_delegate = factory_.CreateMockedECDelegate();
+    }
+
+    auto* mock_delegate_ptr = mocked_delegate.get();
+    factory_.set_next_instance(std::move(mocked_delegate));
+    EXPECT_CALL(*mock_delegate_ptr, LoadKeyPair());
+
+    auto key_pair = LoadPersistedKey();
+    ValidateSigningKey(key_pair.get(), trust_level);
+  }
+
+  test::ScopedKeyPersistenceDelegateFactory factory_;
+};
+
+// Tests that the LoadPersistedKey method correctly loads a hardware-backed
+// SigningKeyPair when the persistence delegate is a hardware delegate.
+TEST_F(SigningKeyUtilTest, LoadPersistedKey_WithHWPrivateKey) {
+  StartTest(BPKUR::CHROME_BROWSER_HW_KEY);
+}
+
+// Tests that the LoadPersistedKey method correctly loads a
+// crypto::ECPrivateKeySigningKeyPair when the persistence delegate is an EC
+// delegate.
+TEST_F(SigningKeyUtilTest, LoadPersistedKey_WithECPrivateKey) {
+  StartTest(BPKUR::CHROME_BROWSER_OS_KEY);
+}
+
+}  // namespace enterprise_connectors
diff --git a/chrome/browser/enterprise/connectors/device_trust/key_management/installer/key_rotation_manager_impl.cc b/chrome/browser/enterprise/connectors/device_trust/key_management/installer/key_rotation_manager_impl.cc
index 085cc253..189c710 100644
--- a/chrome/browser/enterprise/connectors/device_trust/key_management/installer/key_rotation_manager_impl.cc
+++ b/chrome/browser/enterprise/connectors/device_trust/key_management/installer/key_rotation_manager_impl.cc
@@ -12,7 +12,6 @@
 #include "base/check.h"
 #include "base/syslog_logging.h"
 #include "base/threading/platform_thread.h"
-#include "chrome/browser/enterprise/connectors/device_trust/key_management/core/ec_signing_key.h"
 #include "chrome/browser/enterprise/connectors/device_trust/key_management/core/network/key_network_delegate.h"
 #include "chrome/browser/enterprise/connectors/device_trust/key_management/core/network/util.h"
 #include "chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/key_persistence_delegate.h"
@@ -50,7 +49,7 @@
   DCHECK(network_delegate_);
   DCHECK(persistence_delegate_);
 
-  key_pair_ = SigningKeyPair::Create(persistence_delegate_.get());
+  key_pair_ = persistence_delegate_->LoadKeyPair();
 }
 
 KeyRotationManagerImpl::~KeyRotationManagerImpl() = default;
@@ -73,28 +72,8 @@
     return;
   }
 
-  // Create a new key pair.  First try creating a hardware-backed key. If that
-  // does not work, try a less secure type.
-  KeyTrustLevel new_trust_level = BPKUR::KEY_TRUST_LEVEL_UNSPECIFIED;
-  auto acceptable_algorithms = {
-      crypto::SignatureVerifier::ECDSA_SHA256,
-      crypto::SignatureVerifier::RSA_PKCS1_SHA256,
-  };
-
-  std::unique_ptr<crypto::UnexportableKeyProvider> provider =
-      persistence_delegate_->GetUnexportableKeyProvider();
-  auto new_key_pair =
-      provider ? provider->GenerateSigningKeySlowly(acceptable_algorithms)
-               : nullptr;
-  if (new_key_pair) {
-    new_trust_level = BPKUR::CHROME_BROWSER_HW_KEY;
-  } else {
-    new_trust_level = BPKUR::CHROME_BROWSER_OS_KEY;
-    ECSigningKeyProvider ec_signing_provider;
-    new_key_pair =
-        ec_signing_provider.GenerateSigningKeySlowly(acceptable_algorithms);
-  }
-  if (!new_key_pair) {
+  auto new_key_pair = persistence_delegate_->CreateKeyPair();
+  if (!new_key_pair || new_key_pair->is_empty()) {
     RecordRotationStatus(nonce,
                          RotationStatus::FAILURE_CANNOT_GENERATE_NEW_KEY);
     SYSLOG(ERROR) << "Device trust key rotation failed. Could not generate a "
@@ -103,8 +82,8 @@
     return;
   }
 
-  if (!persistence_delegate_->StoreKeyPair(new_trust_level,
-                                           new_key_pair->GetWrappedKey())) {
+  if (!persistence_delegate_->StoreKeyPair(
+          new_key_pair->trust_level(), new_key_pair->key()->GetWrappedKey())) {
     RecordRotationStatus(nonce, RotationStatus::FAILURE_CANNOT_STORE_KEY);
     SYSLOG(ERROR) << "Device trust key rotation failed. Could not write to "
                      "signing key storage.";
@@ -114,7 +93,7 @@
 
   enterprise_management::DeviceManagementRequest request;
   if (!BuildUploadPublicKeyRequest(
-          new_trust_level, new_key_pair, nonce,
+          *new_key_pair, nonce,
           request.mutable_browser_public_key_upload_request())) {
     RecordRotationStatus(nonce, RotationStatus::FAILURE_CANNOT_BUILD_REQUEST);
     SYSLOG(ERROR) << "Device trust key rotation failed. Could not build the "
@@ -128,20 +107,18 @@
 
   // Any attempt to reuse a nonce will result in an INVALID_SIGNATURE error
   // being returned by the server.
-  auto upload_key_callback =
-      base::BindOnce(&KeyRotationManagerImpl::OnDmServerResponse,
-                     weak_factory_.GetWeakPtr(), nonce, new_trust_level,
-                     std::move(new_key_pair), std::move(result_callback));
+  auto upload_key_callback = base::BindOnce(
+      &KeyRotationManagerImpl::OnDmServerResponse, weak_factory_.GetWeakPtr(),
+      nonce, std::move(new_key_pair), std::move(result_callback));
   network_delegate_->SendPublicKeyToDmServer(
       dm_server_url, dm_token, request_str, std::move(upload_key_callback));
 }
 
 bool KeyRotationManagerImpl::BuildUploadPublicKeyRequest(
-    KeyTrustLevel new_trust_level,
-    const std::unique_ptr<crypto::UnexportableSigningKey>& new_key_pair,
+    const SigningKeyPair& new_key_pair,
     const std::string& nonce,
     enterprise_management::BrowserPublicKeyUploadRequest* request) {
-  std::vector<uint8_t> pubkey = new_key_pair->GetSubjectPublicKeyInfo();
+  std::vector<uint8_t> pubkey = new_key_pair.key()->GetSubjectPublicKeyInfo();
 
   // Build the buffer to sign.  It consists of the public key of the new key
   // pair followed by the nonce.  The nonce vector may be empty.
@@ -158,22 +135,21 @@
   absl::optional<std::vector<uint8_t>> signature =
       key_pair_ && key_pair_->key() && !nonce.empty()
           ? key_pair_->key()->SignSlowly(buffer)
-          : new_key_pair->SignSlowly(buffer);
+          : new_key_pair.key()->SignSlowly(buffer);
   if (!signature.has_value())
     return false;
 
   request->set_public_key(pubkey.data(), pubkey.size());
   request->set_signature(signature->data(), signature->size());
-  request->set_key_trust_level(new_trust_level);
-  request->set_key_type(AlgorithmToType(new_key_pair->Algorithm()));
+  request->set_key_trust_level(new_key_pair.trust_level());
+  request->set_key_type(AlgorithmToType(new_key_pair.key()->Algorithm()));
 
   return true;
 }
 
 void KeyRotationManagerImpl::OnDmServerResponse(
     const std::string& nonce,
-    KeyTrustLevel trust_level,
-    std::unique_ptr<crypto::UnexportableSigningKey> new_key_pair,
+    std::unique_ptr<SigningKeyPair> new_key_pair,
     base::OnceCallback<void(bool)> result_callback,
     KeyNetworkDelegate::HttpResponseCode response_code) {
   RecordUploadCode(nonce, response_code);
@@ -205,9 +181,7 @@
     std::move(result_callback).Run(false);
     return;
   }
-
-  key_pair_ =
-      std::make_unique<SigningKeyPair>(std::move(new_key_pair), trust_level);
+  key_pair_ = std::move(new_key_pair);
   RecordRotationStatus(nonce, RotationStatus::SUCCESS);
   std::move(result_callback).Run(true);
 }
diff --git a/chrome/browser/enterprise/connectors/device_trust/key_management/installer/key_rotation_manager_impl.h b/chrome/browser/enterprise/connectors/device_trust/key_management/installer/key_rotation_manager_impl.h
index 9bf95432..7b40034 100644
--- a/chrome/browser/enterprise/connectors/device_trust/key_management/installer/key_rotation_manager_impl.h
+++ b/chrome/browser/enterprise/connectors/device_trust/key_management/installer/key_rotation_manager_impl.h
@@ -15,10 +15,6 @@
 #include "chrome/browser/enterprise/connectors/device_trust/key_management/installer/key_rotation_manager.h"
 #include "components/policy/proto/device_management_backend.pb.h"
 
-namespace crypto {
-class UnexportableSigningKey;
-}  // namespace crypto
-
 namespace enterprise_connectors {
 
 class KeyPersistenceDelegate;
@@ -44,23 +40,19 @@
   // for this device. `nonce` is an opaque binary blob and should not be
   // treated as an ASCII or UTF-8 string.
   bool BuildUploadPublicKeyRequest(
-      KeyTrustLevel new_trust_level,
-      const std::unique_ptr<crypto::UnexportableSigningKey>& new_key_pair,
+      const SigningKeyPair& new_key_pair,
       const std::string& nonce,
       enterprise_management::BrowserPublicKeyUploadRequest* request);
 
   // Gets the `response_code` from the upload key request and continues
   // the key rotation process. `rotate_callback` returns the rotation result.
   // The `nonce` is an opaque binary blob and should not be treated as an
-  // ASCII or UTF-8 string. The `trust_level` is the trust level of the
-  // key_pair, and the `new_key_pair`refers to the key pair that is created
-  // during the rotation process.
-  void OnDmServerResponse(
-      const std::string& nonce,
-      KeyTrustLevel trust_level,
-      std::unique_ptr<crypto::UnexportableSigningKey> new_key_pair,
-      base::OnceCallback<void(bool)> result_callback,
-      KeyNetworkDelegate::HttpResponseCode response_code);
+  // ASCII or UTF-8 string. The `new_key_pair` refers to the key pair that is
+  // created during the rotation process.
+  void OnDmServerResponse(const std::string& nonce,
+                          std::unique_ptr<SigningKeyPair> new_key_pair,
+                          base::OnceCallback<void(bool)> result_callback,
+                          KeyNetworkDelegate::HttpResponseCode response_code);
 
   std::unique_ptr<KeyNetworkDelegate> network_delegate_;
   std::unique_ptr<KeyPersistenceDelegate> persistence_delegate_;
diff --git a/chrome/browser/enterprise/connectors/device_trust/key_management/installer/key_rotation_manager_unittest.cc b/chrome/browser/enterprise/connectors/device_trust/key_management/installer/key_rotation_manager_unittest.cc
index 840d9f7..ec43a00 100644
--- a/chrome/browser/enterprise/connectors/device_trust/key_management/installer/key_rotation_manager_unittest.cc
+++ b/chrome/browser/enterprise/connectors/device_trust/key_management/installer/key_rotation_manager_unittest.cc
@@ -11,12 +11,12 @@
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/task_environment.h"
 #include "base/test/test_future.h"
-#include "chrome/browser/enterprise/connectors/device_trust/key_management/core/ec_signing_key.h"
 #include "chrome/browser/enterprise/connectors/device_trust/key_management/core/network/key_network_delegate.h"
 #include "chrome/browser/enterprise/connectors/device_trust/key_management/core/network/mock_key_network_delegate.h"
 #include "chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/key_persistence_delegate.h"
 #include "chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/mock_key_persistence_delegate.h"
 #include "chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/scoped_key_persistence_delegate_factory.h"
+#include "chrome/browser/enterprise/connectors/device_trust/key_management/core/signing_key_pair.h"
 #include "chrome/browser/enterprise/connectors/device_trust/key_management/installer/metrics_util.h"
 #include "components/policy/proto/device_management_backend.pb.h"
 #include "crypto/unexportable_key.h"
@@ -50,10 +50,6 @@
 constexpr HttpResponseCode kHardFailureCode = 400;
 constexpr HttpResponseCode kTransientFailureCode = 500;
 
-KeyPersistenceDelegate::KeyInfo CreateEmptyKeyPair() {
-  return {BPKUR::KEY_TRUST_LEVEL_UNSPECIFIED, std::vector<uint8_t>()};
-}
-
 }  // namespace
 
 // Tests KeyRotationManager with and without a nonce. The most significant
@@ -102,8 +98,7 @@
   EXPECT_CALL(*mock_persistence_delegate, LoadKeyPair());
   EXPECT_CALL(*mock_persistence_delegate, CheckRotationPermissions())
       .WillOnce(Return(true));
-  EXPECT_CALL(*mock_persistence_delegate, GetUnexportableKeyProvider())
-      .Times(2);
+  EXPECT_CALL(*mock_persistence_delegate, CreateKeyPair()).Times(1);
   EXPECT_CALL(
       *mock_persistence_delegate,
       StoreKeyPair(BPKUR::CHROME_BROWSER_HW_KEY, Not(original_key_wrapped)))
@@ -157,11 +152,12 @@
 
   // The mocked delegate is already set-up to return a working hardware key
   // and provider. Force it to not return a key.
-  EXPECT_CALL(*mock_persistence_delegate, LoadKeyPair())
-      .WillOnce(Return(CreateEmptyKeyPair()));
+  EXPECT_CALL(*mock_persistence_delegate, LoadKeyPair()).WillOnce(Invoke([]() {
+    return nullptr;
+  }));
   EXPECT_CALL(*mock_persistence_delegate, CheckRotationPermissions())
       .WillOnce(Return(true));
-  EXPECT_CALL(*mock_persistence_delegate, GetUnexportableKeyProvider());
+  EXPECT_CALL(*mock_persistence_delegate, CreateKeyPair());
   EXPECT_CALL(*mock_persistence_delegate,
               StoreKeyPair(BPKUR::CHROME_BROWSER_HW_KEY, _))
       .WillOnce(Return(true));
@@ -194,13 +190,16 @@
 TEST_P(KeyRotationManagerTest, Rotate_NoHw_NoKey) {
   base::HistogramTester histogram_tester;
 
-  auto mock_persistence_delegate =
-      std::make_unique<MockKeyPersistenceDelegate>();
-  EXPECT_CALL(*mock_persistence_delegate, LoadKeyPair())
-      .WillOnce(Return(CreateEmptyKeyPair()));
+  // The factory creates instances backed by fake EC keys.
+  auto mock_persistence_delegate = scoped_factory_.CreateMockedECDelegate();
+
+  EXPECT_CALL(*mock_persistence_delegate, LoadKeyPair()).WillOnce(Invoke([]() {
+    return nullptr;
+  }));
   EXPECT_CALL(*mock_persistence_delegate, CheckRotationPermissions())
       .WillOnce(Return(true));
-  EXPECT_CALL(*mock_persistence_delegate, GetUnexportableKeyProvider());
+  EXPECT_CALL(*mock_persistence_delegate, CreateKeyPair());
+
   EXPECT_CALL(*mock_persistence_delegate,
               StoreKeyPair(BPKUR::CHROME_BROWSER_OS_KEY, _))
       .WillOnce(Return(true));
@@ -228,6 +227,86 @@
   histogram_tester.ExpectTotalCount(opposite_status_histogram_name(), 0);
 }
 
+// Tests a failed key rotation flow when no key previously existed and creating
+// a new key pair fails.
+TEST_P(KeyRotationManagerTest, Rotate_NoKey_CreateKeyPairFails) {
+  base::HistogramTester histogram_tester;
+
+  // The factory creates instances backed by fake EC keys.
+  auto mock_persistence_delegate = scoped_factory_.CreateMockedECDelegate();
+
+  EXPECT_CALL(*mock_persistence_delegate, LoadKeyPair()).WillOnce(Invoke([]() {
+    return nullptr;
+  }));
+  EXPECT_CALL(*mock_persistence_delegate, CheckRotationPermissions())
+      .WillOnce(Return(true));
+
+  EXPECT_CALL(*mock_persistence_delegate, CreateKeyPair())
+      .WillOnce(Invoke([]() { return nullptr; }));
+
+  EXPECT_CALL(*mock_persistence_delegate,
+              StoreKeyPair(BPKUR::CHROME_BROWSER_OS_KEY, _))
+      .Times(0);
+
+  GURL dm_server_url(kDmServerUrl);
+  auto mock_network_delegate = std::make_unique<MockKeyNetworkDelegate>();
+  EXPECT_CALL(*mock_network_delegate,
+              SendPublicKeyToDmServer(dm_server_url, kDmToken, _, _))
+      .Times(0);
+
+  auto manager = KeyRotationManager::CreateForTesting(
+      std::move(mock_network_delegate), std::move(mock_persistence_delegate));
+
+  base::test::TestFuture<bool> future;
+  manager->Rotate(dm_server_url, kDmToken, nonce(), future.GetCallback());
+  EXPECT_FALSE(future.Get());
+
+  // Should expect one failed attempt to rotate a key on first try.
+  histogram_tester.ExpectUniqueSample(
+      status_histogram_name(), RotationStatus::FAILURE_CANNOT_GENERATE_NEW_KEY,
+      1);
+  histogram_tester.ExpectTotalCount(opposite_status_histogram_name(), 0);
+}
+
+// Tests a failed key rotation flow when a key previously existed and creating a
+// new key pair fails.
+TEST_P(KeyRotationManagerTest, Rotate_Key_CreateKeyPairFails) {
+  base::HistogramTester histogram_tester;
+
+  // The factory creates instances backed by fake EC keys.
+  auto mock_persistence_delegate = scoped_factory_.CreateMockedECDelegate();
+
+  EXPECT_CALL(*mock_persistence_delegate, LoadKeyPair());
+  EXPECT_CALL(*mock_persistence_delegate, CheckRotationPermissions())
+      .WillOnce(Return(true));
+
+  EXPECT_CALL(*mock_persistence_delegate, CreateKeyPair())
+      .WillOnce(Invoke([]() { return nullptr; }));
+
+  EXPECT_CALL(*mock_persistence_delegate,
+              StoreKeyPair(BPKUR::CHROME_BROWSER_OS_KEY, _))
+      .Times(0);
+
+  GURL dm_server_url(kDmServerUrl);
+  auto mock_network_delegate = std::make_unique<MockKeyNetworkDelegate>();
+  EXPECT_CALL(*mock_network_delegate,
+              SendPublicKeyToDmServer(dm_server_url, kDmToken, _, _))
+      .Times(0);
+
+  auto manager = KeyRotationManager::CreateForTesting(
+      std::move(mock_network_delegate), std::move(mock_persistence_delegate));
+
+  base::test::TestFuture<bool> future;
+  manager->Rotate(dm_server_url, kDmToken, nonce(), future.GetCallback());
+  EXPECT_FALSE(future.Get());
+
+  // Should expect one failed attempt to rotate a key on first try.
+  histogram_tester.ExpectUniqueSample(
+      status_histogram_name(), RotationStatus::FAILURE_CANNOT_GENERATE_NEW_KEY,
+      1);
+  histogram_tester.ExpectTotalCount(opposite_status_histogram_name(), 0);
+}
+
 // Tests a failed key rotation flow when a hardware key provider is available
 // and no key previously existed and the network request permanetly failed.
 // Also, in this case the registry should be cleared.
@@ -243,13 +322,14 @@
 
   // The mocked delegate is already set-up to return a working hardware key
   // and provider. Force it to not return a key.
-  EXPECT_CALL(*mock_persistence_delegate, LoadKeyPair())
-      .WillOnce(Return(CreateEmptyKeyPair()));
+  EXPECT_CALL(*mock_persistence_delegate, LoadKeyPair()).WillOnce(Invoke([]() {
+    return nullptr;
+  }));
 
   EXPECT_CALL(*mock_persistence_delegate, CheckRotationPermissions())
       .WillOnce(Return(true));
 
-  EXPECT_CALL(*mock_persistence_delegate, GetUnexportableKeyProvider());
+  EXPECT_CALL(*mock_persistence_delegate, CreateKeyPair());
   EXPECT_CALL(*mock_persistence_delegate,
               StoreKeyPair(BPKUR::CHROME_BROWSER_HW_KEY, _))
       .WillOnce(Return(true));
@@ -276,7 +356,7 @@
   manager->Rotate(dm_server_url, kDmToken, nonce(), future.GetCallback());
   EXPECT_FALSE(future.Get());
 
-  //   Should expect one failed attempt to rotate a key on first try.
+  // Should expect one failed attempt to rotate a key on first try.
   histogram_tester.ExpectUniqueSample(
       status_histogram_name(), RotationStatus::FAILURE_CANNOT_UPLOAD_KEY, 1);
   histogram_tester.ExpectTotalCount(opposite_status_histogram_name(), 0);
@@ -299,13 +379,13 @@
 
   // The mocked delegate is already set-up to return a working hardware key
   // and provider. Force it to not return a key.
-  EXPECT_CALL(*mock_persistence_delegate, LoadKeyPair())
-      .WillOnce(Return(CreateEmptyKeyPair()));
+  EXPECT_CALL(*mock_persistence_delegate, LoadKeyPair()).WillOnce(Invoke([]() {
+    return nullptr;
+  }));
 
   EXPECT_CALL(*mock_persistence_delegate, CheckRotationPermissions())
       .WillOnce(Return(true));
-
-  EXPECT_CALL(*mock_persistence_delegate, GetUnexportableKeyProvider());
+  EXPECT_CALL(*mock_persistence_delegate, CreateKeyPair());
   EXPECT_CALL(*mock_persistence_delegate,
               StoreKeyPair(BPKUR::CHROME_BROWSER_HW_KEY, _))
       .WillOnce(Return(true));
@@ -351,7 +431,7 @@
   EXPECT_CALL(*mock_persistence_delegate, LoadKeyPair());
   EXPECT_CALL(*mock_persistence_delegate, CheckRotationPermissions())
       .WillOnce(Return(true));
-  EXPECT_CALL(*mock_persistence_delegate, GetUnexportableKeyProvider());
+  EXPECT_CALL(*mock_persistence_delegate, CreateKeyPair());
   EXPECT_CALL(*mock_persistence_delegate,
               StoreKeyPair(BPKUR::CHROME_BROWSER_OS_KEY, _))
       .WillOnce(Return(true));
@@ -391,7 +471,7 @@
   EXPECT_CALL(*mock_persistence_delegate, LoadKeyPair());
   EXPECT_CALL(*mock_persistence_delegate, CheckRotationPermissions())
       .WillOnce(Return(true));
-  EXPECT_CALL(*mock_persistence_delegate, GetUnexportableKeyProvider());
+  EXPECT_CALL(*mock_persistence_delegate, CreateKeyPair());
   EXPECT_CALL(
       *mock_persistence_delegate,
       StoreKeyPair(BPKUR::CHROME_BROWSER_OS_KEY, Not(original_key_wrapped)))
@@ -422,19 +502,16 @@
 
   auto mock_persistence_delegate = scoped_factory_.CreateMockedECDelegate();
   auto original_key_wrapped = scoped_factory_.ec_wrapped_key();
+  InSequence s;
 
   EXPECT_CALL(*mock_persistence_delegate, LoadKeyPair());
   EXPECT_CALL(*mock_persistence_delegate, CheckRotationPermissions())
       .WillOnce(Return(true));
-  EXPECT_CALL(*mock_persistence_delegate, GetUnexportableKeyProvider());
+  EXPECT_CALL(*mock_persistence_delegate, CreateKeyPair());
   EXPECT_CALL(
       *mock_persistence_delegate,
       StoreKeyPair(BPKUR::CHROME_BROWSER_OS_KEY, Not(original_key_wrapped)))
       .WillOnce(Return(true));  // Store of new key fails.
-  EXPECT_CALL(*mock_persistence_delegate,
-              StoreKeyPair(BPKUR::CHROME_BROWSER_OS_KEY,
-                           original_key_wrapped))
-      .WillOnce(Return(false));  // Restore of old key fails.
 
   GURL dm_server_url(kDmServerUrl);
   auto mock_network_delegate = std::make_unique<MockKeyNetworkDelegate>();
@@ -446,6 +523,10 @@
         std::move(callback).Run(kHardFailureCode);
       }));
 
+  EXPECT_CALL(*mock_persistence_delegate,
+              StoreKeyPair(BPKUR::CHROME_BROWSER_OS_KEY,
+                           Not(original_key_wrapped)))
+      .WillOnce(Return(false));  // Restore of old key fails.
   auto manager = KeyRotationManager::CreateForTesting(
       std::move(mock_network_delegate), std::move(mock_persistence_delegate));
 
@@ -474,7 +555,7 @@
   EXPECT_CALL(*mock_persistence_delegate, LoadKeyPair());
   EXPECT_CALL(*mock_persistence_delegate, CheckRotationPermissions())
       .WillOnce(Return(true));
-  EXPECT_CALL(*mock_persistence_delegate, GetUnexportableKeyProvider());
+  EXPECT_CALL(*mock_persistence_delegate, CreateKeyPair());
   EXPECT_CALL(
       *mock_persistence_delegate,
       StoreKeyPair(BPKUR::CHROME_BROWSER_OS_KEY, Not(original_key_wrapped)))
@@ -490,8 +571,9 @@
         std::move(callback).Run(kTransientFailureCode);
       }));
 
-  EXPECT_CALL(*mock_persistence_delegate,
-              StoreKeyPair(BPKUR::CHROME_BROWSER_OS_KEY, original_key_wrapped))
+  EXPECT_CALL(
+      *mock_persistence_delegate,
+      StoreKeyPair(BPKUR::CHROME_BROWSER_OS_KEY, Not(original_key_wrapped)))
       .WillOnce(Return(true));
 
   auto manager = KeyRotationManager::CreateForTesting(
@@ -518,8 +600,7 @@
   EXPECT_CALL(*mock_persistence_delegate, CheckRotationPermissions())
       .WillOnce(Return(false));
   EXPECT_CALL(*mock_persistence_delegate, LoadKeyPair());
-  EXPECT_CALL(*mock_persistence_delegate, GetUnexportableKeyProvider())
-      .Times(0);
+  EXPECT_CALL(*mock_persistence_delegate, CreateKeyPair()).Times(0);
   EXPECT_CALL(*mock_persistence_delegate,
               StoreKeyPair(BPKUR::CHROME_BROWSER_OS_KEY, _))
       .Times(0);
diff --git a/chrome/browser/extensions/api/bookmarks/bookmarks_api.cc b/chrome/browser/extensions/api/bookmarks/bookmarks_api.cc
index e752032..33287dd0 100644
--- a/chrome/browser/extensions/api/bookmarks/bookmarks_api.cc
+++ b/chrome/browser/extensions/api/bookmarks/bookmarks_api.cc
@@ -129,7 +129,6 @@
 const BookmarkNode* BookmarksFunction::CreateBookmarkNode(
     BookmarkModel* model,
     const CreateDetails& details,
-    const BookmarkNode::MetaInfoMap* meta_info,
     std::string* error) {
   int64_t parent_id;
 
@@ -172,9 +171,9 @@
 
   const BookmarkNode* node;
   if (url_string.length()) {
-    node = model->AddNewURL(parent, index, title, url, meta_info);
+    node = model->AddNewURL(parent, index, title, url);
   } else {
-    node = model->AddFolder(parent, index, title, meta_info);
+    node = model->AddFolder(parent, index, title);
     model->SetDateFolderModified(parent, base::Time::Now());
   }
 
@@ -598,7 +597,7 @@
   BookmarkModel* model =
       BookmarkModelFactory::GetForBrowserContext(GetProfile());
   const BookmarkNode* node =
-      CreateBookmarkNode(model, params->bookmark, nullptr, &error);
+      CreateBookmarkNode(model, params->bookmark, &error);
   if (!node)
     return Error(error);
 
diff --git a/chrome/browser/extensions/api/bookmarks/bookmarks_api.h b/chrome/browser/extensions/api/bookmarks/bookmarks_api.h
index a34d19f8..9912ca1 100644
--- a/chrome/browser/extensions/api/bookmarks/bookmarks_api.h
+++ b/chrome/browser/extensions/api/bookmarks/bookmarks_api.h
@@ -158,7 +158,6 @@
   const bookmarks::BookmarkNode* CreateBookmarkNode(
       bookmarks::BookmarkModel* model,
       const api::bookmarks::CreateDetails& details,
-      const bookmarks::BookmarkNode::MetaInfoMap* meta_info,
       std::string* error);
 
   // Helper that checks if bookmark editing is enabled.
diff --git a/chrome/browser/extensions/external_provider_impl_unittest.cc b/chrome/browser/extensions/external_provider_impl_unittest.cc
index 0746403b..0d32860 100644
--- a/chrome/browser/extensions/external_provider_impl_unittest.cc
+++ b/chrome/browser/extensions/external_provider_impl_unittest.cc
@@ -36,6 +36,7 @@
 #include "content/public/test/test_utils.h"
 #include "extensions/browser/pref_names.h"
 #include "extensions/browser/updater/extension_cache_fake.h"
+#include "extensions/browser/updater/extension_downloader_test_helper.h"
 #include "net/test/embedded_test_server/embedded_test_server.h"
 #include "net/test/embedded_test_server/http_request.h"
 #include "net/test/embedded_test_server/http_response.h"
@@ -207,17 +208,11 @@
       if (url.path() == test_extension.update_path) {
         auto response = std::make_unique<net::test_server::BasicHttpResponse>();
         response->set_code(net::HTTP_OK);
-        response->set_content(base::StringPrintf(
-            "<?xml version='1.0' encoding='UTF-8'?>\n"
-            "<gupdate xmlns='http://www.google.com/update2/response' "
-            "protocol='2.0'>\n"
-            "  <app appid='%s'>\n"
-            "    <updatecheck codebase='%s' version='%s' />\n"
-            "  </app>\n"
-            "</gupdate>",
-            test_extension.app_id,
-            test_server_->GetURL(test_extension.app_path).spec().c_str(),
-            test_extension.version));
+        response->set_content(CreateUpdateManifest(
+            {UpdateManifestItem(test_extension.app_id)
+                 .version(test_extension.version)
+                 .codebase(
+                     test_server_->GetURL(test_extension.app_path).spec())}));
         response->set_content_type("text/xml");
         return std::move(response);
       }
diff --git a/chrome/browser/feature_engagement/java/src/org/chromium/chrome/browser/feature_engagement/TrackerFactory.java b/chrome/browser/feature_engagement/java/src/org/chromium/chrome/browser/feature_engagement/TrackerFactory.java
index 6cd1962..16e2902 100644
--- a/chrome/browser/feature_engagement/java/src/org/chromium/chrome/browser/feature_engagement/TrackerFactory.java
+++ b/chrome/browser/feature_engagement/java/src/org/chromium/chrome/browser/feature_engagement/TrackerFactory.java
@@ -32,6 +32,10 @@
         if (profile == null) {
             throw new IllegalArgumentException("Profile is required for retrieving tracker.");
         }
+        if (!profile.isNativeInitialized()) {
+            // Temporary to debug https://crbug.com/1346710.
+            throw new IllegalArgumentException("Profile must have a valid native pointer.");
+        }
 
         return TrackerFactoryJni.get().getTrackerForProfile(profile);
     }
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
index 03c8302..1a70ed48 100644
--- a/chrome/browser/flag-metadata.json
+++ b/chrome/browser/flag-metadata.json
@@ -5279,6 +5279,11 @@
     "expiry_milestone": 108
   },
   {
+    "name": "private-network-access-preflight-short-timeout",
+    "owners": [ "lyf", "chrome-security-owp-team@google.com" ],
+    "expiry_milestone": 107
+  },
+  {
     "name": "private-network-access-respect-preflight-results",
     "owners": [ "titouan", "chrome-security-owp-team@google.com" ],
     "expiry_milestone": 107
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
index da3fe20e..db30769 100644
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -1191,6 +1191,14 @@
     "for the request to proceed. See also: "
     "https://developer.chrome.com/blog/private-network-access-preflight/";
 
+const char kPrivateNetworkAccessPreflightShortTimeoutName[] =
+    "Reduce waiting time for Private Network Access preflights response";
+const char kPrivateNetworkAccessPreflightShortTimeoutDescription[] =
+    "Reduce the waiting time for Private Network Access preflights to 200 "
+    "milliseconds. The default timeout period for requests is 5 minutes."
+    "See also: "
+    "https://developer.chrome.com/blog/private-network-access-preflight/";
+
 const char kDeprecateAltClickName[] =
     "Enable Alt+Click deprecation notifications";
 const char kDeprecateAltClickDescription[] =
@@ -2477,9 +2485,6 @@
     "Enables a sign-in promo if the user attempts to share a tab while being "
     "signed out";
 
-const char kShoppingListName[] = "Shopping List";
-const char kShoppingListDescription[] = "Enable shopping list in bookmarks.";
-
 const char kSidePanelImprovedClobberingName[] =
     "Side panel improved clobbering";
 const char kSidePanelImprovedClobberingDescription[] =
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
index 30772c21..9ecb665 100644
--- a/chrome/browser/flag_descriptions.h
+++ b/chrome/browser/flag_descriptions.h
@@ -626,6 +626,9 @@
 extern const char kPrivateNetworkAccessRespectPreflightResultsName[];
 extern const char kPrivateNetworkAccessRespectPreflightResultsDescription[];
 
+extern const char kPrivateNetworkAccessPreflightShortTimeoutName[];
+extern const char kPrivateNetworkAccessPreflightShortTimeoutDescription[];
+
 extern const char kDeprecateAltClickName[];
 extern const char kDeprecateAltClickDescription[];
 
@@ -1390,9 +1393,6 @@
 extern const char kSendTabToSelfSigninPromoName[];
 extern const char kSendTabToSelfSigninPromoDescription[];
 
-extern const char kShoppingListName[];
-extern const char kShoppingListDescription[];
-
 extern const char kSidePanelImprovedClobberingName[];
 extern const char kSidePanelImprovedClobberingDescription[];
 
diff --git a/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/IncognitoReauthCoordinatorFactory.java b/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/IncognitoReauthCoordinatorFactory.java
index c4189031..5970c8fd 100644
--- a/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/IncognitoReauthCoordinatorFactory.java
+++ b/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/IncognitoReauthCoordinatorFactory.java
@@ -200,7 +200,7 @@
                         incognitoReauthCallback, getSeeOtherTabsRunnable(), mModalDialogManager,
                         getIncognitoReauthMenuDelegate(), backPressedCallback)
                 : new TabSwitcherIncognitoReauthCoordinator(mContext, mIncognitoReauthManager,
-                        incognitoReauthCallback, getSeeOtherTabsRunnable(),
+                        incognitoReauthCallback, getSeeOtherTabsRunnable(), getBackPressRunnable(),
                         mTabSwitcherCustomViewManager, mIncognitoReauthTopToolbarDelegate);
     }
 }
diff --git a/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/TabSwitcherIncognitoReauthCoordinator.java b/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/TabSwitcherIncognitoReauthCoordinator.java
index f2f578b..cb03555 100644
--- a/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/TabSwitcherIncognitoReauthCoordinator.java
+++ b/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/TabSwitcherIncognitoReauthCoordinator.java
@@ -24,6 +24,8 @@
     private final @NonNull IncognitoReauthTopToolbarDelegate mIncognitoReauthTopToolbarDelegate;
     /** The {@link Context} to use for fetching Incognito re-auth resources. */
     private final @NonNull Context mContext;
+    /** A runnable to handle back presses which shows the regular overview mode. */
+    private final @NonNull Runnable mBackPressRunnable;
     /**
      * A token returned by {@link IncognitoReauthTopToolbarDelegate} that needs to be used to
      * re-enable the new tab button control state.
@@ -38,21 +40,23 @@
      *                               after an authentication attempt.
      * @param seeOtherTabsRunnable A {@link Runnable} which is run when the user clicks on
      *                            "See other tabs" option.
+     * @param backPressRunnable A {@link Runnable} which is run when the user presses back while the
+     *         re-auth view is shown.
      * @param tabSwitcherCustomViewManager A {@link TabSwitcherCustomViewManager} which allows to
      *         pass the re-auth view to the tab switcher
      * @param incognitoReauthTopToolbarDelegate A {@link IncognitoReauthTopToolbarDelegate} which
-     *         allows to disable/enable top toolbar elements when re-auth is shown.
      */
     public TabSwitcherIncognitoReauthCoordinator(@NonNull Context context,
             @NonNull IncognitoReauthManager incognitoReauthManager,
             @NonNull IncognitoReauthCallback incognitoReauthCallback,
-            @NonNull Runnable seeOtherTabsRunnable,
+            @NonNull Runnable seeOtherTabsRunnable, @NonNull Runnable backPressRunnable,
             @NonNull TabSwitcherCustomViewManager tabSwitcherCustomViewManager,
             @NonNull IncognitoReauthTopToolbarDelegate incognitoReauthTopToolbarDelegate) {
         super(context, incognitoReauthManager, incognitoReauthCallback, seeOtherTabsRunnable);
         mContext = context;
         mTabSwitcherCustomViewManager = tabSwitcherCustomViewManager;
         mIncognitoReauthTopToolbarDelegate = incognitoReauthTopToolbarDelegate;
+        mBackPressRunnable = backPressRunnable;
     }
 
     /**
@@ -61,7 +65,8 @@
     @Override
     public void show() {
         prepareToshow(/*menuButtonDelegate= */ null, /*fullscreen= */ false);
-        boolean success = mTabSwitcherCustomViewManager.requestView(getIncognitoReauthView());
+        boolean success = mTabSwitcherCustomViewManager.requestView(
+                getIncognitoReauthView(), mBackPressRunnable);
         assert success : "Unable to signal showing the re-auth screen to tab switcher.";
         mNewTabInteractabilityToken = mIncognitoReauthTopToolbarDelegate.disableNewTabButton();
     }
diff --git a/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/TabSwitcherIncognitoReauthCoordinatorTest.java b/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/TabSwitcherIncognitoReauthCoordinatorTest.java
index b21fd44..21251d1 100644
--- a/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/TabSwitcherIncognitoReauthCoordinatorTest.java
+++ b/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/TabSwitcherIncognitoReauthCoordinatorTest.java
@@ -49,6 +49,8 @@
     @Mock
     private Runnable mSeeOtherTabsRunnableMock;
     @Mock
+    private Runnable mBackPressRunnableMock;
+    @Mock
     private TabSwitcherCustomViewManager mTabSwitcherCustomViewManagerMock;
     @Mock
     private IncognitoReauthTopToolbarDelegate mIncognitoReauthTopToolbarDelegateMock;
@@ -62,10 +64,10 @@
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
-        mTabSwitcherIncognitoReauthCoordinator =
-                new TabSwitcherIncognitoReauthCoordinator(mContextMock, mIncognitoReauthManagerMock,
-                        mIncognitoReauthCallbackMock, mSeeOtherTabsRunnableMock,
-                        mTabSwitcherCustomViewManagerMock, mIncognitoReauthTopToolbarDelegateMock);
+        mTabSwitcherIncognitoReauthCoordinator = new TabSwitcherIncognitoReauthCoordinator(
+                mContextMock, mIncognitoReauthManagerMock, mIncognitoReauthCallbackMock,
+                mSeeOtherTabsRunnableMock, mBackPressRunnableMock,
+                mTabSwitcherCustomViewManagerMock, mIncognitoReauthTopToolbarDelegateMock);
     }
 
     @After
@@ -82,14 +84,16 @@
         mTabSwitcherIncognitoReauthCoordinator.setIncognitoReauthViewForTesting(
                 mIncognitoReauthViewMock);
 
-        when(mTabSwitcherCustomViewManagerMock.requestView(mIncognitoReauthViewMock))
+        when(mTabSwitcherCustomViewManagerMock.requestView(
+                     mIncognitoReauthViewMock, mBackPressRunnableMock))
                 .thenReturn(true);
         when(mIncognitoReauthTopToolbarDelegateMock.disableNewTabButton())
                 .thenReturn(/*token= */ 1);
 
         mTabSwitcherIncognitoReauthCoordinator.show();
 
-        verify(mTabSwitcherCustomViewManagerMock, times(1)).requestView(mIncognitoReauthViewMock);
+        verify(mTabSwitcherCustomViewManagerMock, times(1))
+                .requestView(mIncognitoReauthViewMock, mBackPressRunnableMock);
         verify(mIncognitoReauthTopToolbarDelegateMock, times(1)).disableNewTabButton();
     }
 
diff --git a/chrome/browser/login_detection/login_detection_prefs.cc b/chrome/browser/login_detection/login_detection_prefs.cc
index 0dee0b67..2dd99e9 100644
--- a/chrome/browser/login_detection/login_detection_prefs.cc
+++ b/chrome/browser/login_detection/login_detection_prefs.cc
@@ -72,17 +72,15 @@
 }
 
 bool IsSiteInOAuthSignedInList(PrefService* pref_service, const GURL& url) {
-  if (auto* dict = pref_service->GetDictionary(kOAuthSignedInSitesPref))
-    return dict->FindKey(GetSiteNameForURL(url));
-  return false;
+  return pref_service->GetValueDict(kOAuthSignedInSitesPref)
+      .contains(GetSiteNameForURL(url));
 }
 
 std::vector<url::Origin> GetOAuthSignedInSites(PrefService* pref_service) {
   std::vector<url::Origin> sites;
-  if (auto* dict = pref_service->GetDictionary(kOAuthSignedInSitesPref)) {
-    for (auto site_entry : dict->DictItems()) {
-      sites.push_back(url::Origin::Create(GURL(site_entry.first)));
-    }
+  for (const auto site_entry :
+       pref_service->GetValueDict(kOAuthSignedInSitesPref)) {
+    sites.push_back(url::Origin::Create(GURL(site_entry.first)));
   }
   return sites;
 }
diff --git a/chrome/browser/media/webrtc/webrtc_browsertest_perf.cc b/chrome/browser/media/webrtc/webrtc_browsertest_perf.cc
index 90a355f7..48e850bd 100644
--- a/chrome/browser/media/webrtc/webrtc_browsertest_perf.cc
+++ b/chrome/browser/media/webrtc/webrtc_browsertest_perf.cc
@@ -25,62 +25,71 @@
                             statistic.c_str());
 }
 
-static void MaybePrintResultsForAudioReceive(
-    const std::string& ssrc, const base::DictionaryValue& pc_dict,
-    const std::string& modifier) {
-  std::string value;
-  if (!pc_dict.GetString(Statistic("audioOutputLevel", ssrc), &value)) {
+static void MaybePrintResultsForAudioReceive(const std::string& ssrc,
+                                             const base::Value::Dict& pc_dict,
+                                             const std::string& modifier) {
+  const std::string* value =
+      pc_dict.FindStringByDottedPath(Statistic("audioOutputLevel", ssrc));
+  if (!value) {
     // Not an audio receive stream.
     return;
   }
 
-  EXPECT_TRUE(pc_dict.GetString(Statistic("packetsLost", ssrc), &value));
-  perf_test::PrintResult(
-      "audio_misc", modifier, "packets_lost", value, "frames", false);
-  EXPECT_TRUE(pc_dict.GetString(Statistic("googJitterReceived", ssrc), &value));
-  perf_test::PrintResult(
-      "audio_rx", modifier, "goog_jitter_recv", value, "ms", false);
+  value = pc_dict.FindStringByDottedPath(Statistic("packetsLost", ssrc));
+  ASSERT_TRUE(value);
+  perf_test::PrintResult("audio_misc", modifier, "packets_lost", *value,
+                         "frames", false);
+  value = pc_dict.FindStringByDottedPath(Statistic("googJitterReceived", ssrc));
+  ASSERT_TRUE(value);
+  perf_test::PrintResult("audio_rx", modifier, "goog_jitter_recv", *value, "ms",
+                         false);
 
-  EXPECT_TRUE(pc_dict.GetString(Statistic("googExpandRate", ssrc), &value));
-  perf_test::PrintResult(
-      "audio_rates", modifier, "goog_expand_rate", value, "%", false);
-  EXPECT_TRUE(
-      pc_dict.GetString(Statistic("googSpeechExpandRate", ssrc), &value));
-  perf_test::PrintResult(
-      "audio_rates", modifier, "goog_speech_expand_rate", value, "%", false);
-  EXPECT_TRUE(
-      pc_dict.GetString(Statistic("googSecondaryDecodedRate", ssrc), &value));
-  perf_test::PrintResult(
-      "audio_rates", modifier, "goog_secondary_decoded_rate", value, "%",
-      false);
+  value = pc_dict.FindStringByDottedPath(Statistic("googExpandRate", ssrc));
+  ASSERT_TRUE(value);
+  perf_test::PrintResult("audio_rates", modifier, "goog_expand_rate", *value,
+                         "%", false);
+  value =
+      pc_dict.FindStringByDottedPath(Statistic("googSpeechExpandRate", ssrc));
+  ASSERT_TRUE(value);
+  perf_test::PrintResult("audio_rates", modifier, "goog_speech_expand_rate",
+                         *value, "%", false);
+  value = pc_dict.FindStringByDottedPath(
+      Statistic("googSecondaryDecodedRate", ssrc));
+  ASSERT_TRUE(value);
+  perf_test::PrintResult("audio_rates", modifier, "goog_secondary_decoded_rate",
+                         *value, "%", false);
 }
 
-static void MaybePrintResultsForAudioSend(
-    const std::string& ssrc, const base::DictionaryValue& pc_dict,
-    const std::string& modifier) {
-  std::string value;
-  if (!pc_dict.GetString(Statistic("audioInputLevel", ssrc), &value)) {
+static void MaybePrintResultsForAudioSend(const std::string& ssrc,
+                                          const base::Value::Dict& pc_dict,
+                                          const std::string& modifier) {
+  const std::string* value =
+      pc_dict.FindStringByDottedPath(Statistic("audioInputLevel", ssrc));
+  if (!value) {
     // Not an audio send stream.
     return;
   }
 
-  EXPECT_TRUE(pc_dict.GetString(Statistic("googJitterReceived", ssrc), &value));
-  perf_test::PrintResult(
-      "audio_tx", modifier, "goog_jitter_recv", value, "ms", false);
-  EXPECT_TRUE(pc_dict.GetString(Statistic("googRtt", ssrc), &value));
-  perf_test::PrintResult(
-      "audio_tx", modifier, "goog_rtt", value, "ms", false);
-  EXPECT_TRUE(
-      pc_dict.GetString(Statistic("packetsSentPerSecond", ssrc), &value));
-  perf_test::PrintResult("audio_tx", modifier, "packets_sent_per_second", value,
-                         "packets", false);
+  value = pc_dict.FindStringByDottedPath(Statistic("googJitterReceived", ssrc));
+  ASSERT_TRUE(value);
+  perf_test::PrintResult("audio_tx", modifier, "goog_jitter_recv", *value, "ms",
+                         false);
+  value = pc_dict.FindStringByDottedPath(Statistic("googRtt", ssrc));
+  ASSERT_TRUE(value);
+  perf_test::PrintResult("audio_tx", modifier, "goog_rtt", *value, "ms", false);
+  value =
+      pc_dict.FindStringByDottedPath(Statistic("packetsSentPerSecond", ssrc));
+  ASSERT_TRUE(value);
+  perf_test::PrintResult("audio_tx", modifier, "packets_sent_per_second",
+                         *value, "packets", false);
 }
 
-static void MaybePrintResultsForVideoSend(
-    const std::string& ssrc, const base::DictionaryValue& pc_dict,
-    const std::string& modifier) {
-  std::string value;
-  if (!pc_dict.GetString(Statistic("googFrameRateSent", ssrc), &value)) {
+static void MaybePrintResultsForVideoSend(const std::string& ssrc,
+                                          const base::Value::Dict& pc_dict,
+                                          const std::string& modifier) {
+  const std::string* value =
+      pc_dict.FindStringByDottedPath(Statistic("googFrameRateSent", ssrc));
+  if (!value) {
     // Not a video send stream.
     return;
   }
@@ -88,86 +97,105 @@
   // Graph these by unit: the dashboard expects all stats in one graph to have
   // the same unit (e.g. ms, fps, etc). Most graphs, like video_fps, will also
   // be populated by the counterparts on the video receiving side.
-  perf_test::PrintResult(
-      "video_fps", modifier, "goog_frame_rate_sent", value, "fps", false);
-  EXPECT_TRUE(pc_dict.GetString(Statistic("googFrameRateInput", ssrc), &value));
-  perf_test::PrintResult(
-      "video_fps", modifier, "goog_frame_rate_input", value, "fps", false);
+  perf_test::PrintResult("video_fps", modifier, "goog_frame_rate_sent", *value,
+                         "fps", false);
+  value = pc_dict.FindStringByDottedPath(Statistic("googFrameRateInput", ssrc));
+  ASSERT_TRUE(value);
+  perf_test::PrintResult("video_fps", modifier, "goog_frame_rate_input", *value,
+                         "fps", false);
 
-  EXPECT_TRUE(pc_dict.GetString(Statistic("googFirsReceived", ssrc), &value));
-  perf_test::PrintResult(
-      "video_misc", modifier, "goog_firs_recv", value, "", false);
-  EXPECT_TRUE(pc_dict.GetString(Statistic("googNacksReceived", ssrc), &value));
-  perf_test::PrintResult(
-      "video_misc", modifier, "goog_nacks_recv", value, "", false);
+  value = pc_dict.FindStringByDottedPath(Statistic("googFirsReceived", ssrc));
+  ASSERT_TRUE(value);
+  perf_test::PrintResult("video_misc", modifier, "goog_firs_recv", *value, "",
+                         false);
+  value = pc_dict.FindStringByDottedPath(Statistic("googNacksReceived", ssrc));
+  ASSERT_TRUE(value);
+  perf_test::PrintResult("video_misc", modifier, "goog_nacks_recv", *value, "",
+                         false);
 
-  EXPECT_TRUE(pc_dict.GetString(Statistic("googFrameWidthSent", ssrc), &value));
+  value = pc_dict.FindStringByDottedPath(Statistic("googFrameWidthSent", ssrc));
+  ASSERT_TRUE(value);
   perf_test::PrintResult("video_resolution", modifier, "goog_frame_width_sent",
-                         value, "pixels", false);
-  EXPECT_TRUE(
-      pc_dict.GetString(Statistic("googFrameHeightSent", ssrc), &value));
+                         *value, "pixels", false);
+  value =
+      pc_dict.FindStringByDottedPath(Statistic("googFrameHeightSent", ssrc));
+  ASSERT_TRUE(value);
   perf_test::PrintResult("video_resolution", modifier, "goog_frame_height_sent",
-                         value, "pixels", false);
+                         *value, "pixels", false);
 
-  EXPECT_TRUE(pc_dict.GetString(Statistic("googAvgEncodeMs", ssrc), &value));
-  perf_test::PrintResult(
-      "video_tx", modifier, "goog_avg_encode_ms", value, "ms", false);
-  EXPECT_TRUE(pc_dict.GetString(Statistic("googRtt", ssrc), &value));
-  perf_test::PrintResult("video_tx", modifier, "goog_rtt", value, "ms", false);
+  value = pc_dict.FindStringByDottedPath(Statistic("googAvgEncodeMs", ssrc));
+  ASSERT_TRUE(value);
+  perf_test::PrintResult("video_tx", modifier, "goog_avg_encode_ms", *value,
+                         "ms", false);
+  value = pc_dict.FindStringByDottedPath(Statistic("googRtt", ssrc));
+  ASSERT_TRUE(value);
+  perf_test::PrintResult("video_tx", modifier, "goog_rtt", *value, "ms", false);
 
-  EXPECT_TRUE(pc_dict.GetString(
-      Statistic("googEncodeUsagePercent", ssrc), &value));
+  value =
+      pc_dict.FindStringByDottedPath(Statistic("googEncodeUsagePercent", ssrc));
+  ASSERT_TRUE(value);
   perf_test::PrintResult("video_cpu_usage", modifier,
-                         "goog_encode_usage_percent", value, "%", false);
+                         "goog_encode_usage_percent", *value, "%", false);
 }
 
-static void MaybePrintResultsForVideoReceive(
-    const std::string& ssrc, const base::DictionaryValue& pc_dict,
-    const std::string& modifier) {
-  std::string value;
-  if (!pc_dict.GetString(Statistic("googFrameRateReceived", ssrc), &value)) {
+static void MaybePrintResultsForVideoReceive(const std::string& ssrc,
+                                             const base::Value::Dict& pc_dict,
+                                             const std::string& modifier) {
+  const std::string* value =
+      pc_dict.FindStringByDottedPath(Statistic("googFrameRateReceived", ssrc));
+  if (!value) {
     // Not a video receive stream.
     return;
   }
 
-  perf_test::PrintResult(
-      "video_fps", modifier, "goog_frame_rate_recv", value, "fps", false);
-  EXPECT_TRUE(
-      pc_dict.GetString(Statistic("googFrameRateOutput", ssrc), &value));
-  perf_test::PrintResult(
-      "video_fps", modifier, "goog_frame_rate_output", value, "fps", false);
+  perf_test::PrintResult("video_fps", modifier, "goog_frame_rate_recv", *value,
+                         "fps", false);
+  value =
+      pc_dict.FindStringByDottedPath(Statistic("googFrameRateOutput", ssrc));
+  ASSERT_TRUE(value);
+  perf_test::PrintResult("video_fps", modifier, "goog_frame_rate_output",
+                         *value, "fps", false);
 
-  EXPECT_TRUE(pc_dict.GetString(Statistic("packetsLost", ssrc), &value));
-  perf_test::PrintResult("video_misc", modifier, "packets_lost", value,
+  value = pc_dict.FindStringByDottedPath(Statistic("packetsLost", ssrc));
+  ASSERT_TRUE(value);
+  perf_test::PrintResult("video_misc", modifier, "packets_lost", *value,
                          "frames", false);
 
-  EXPECT_TRUE(
-      pc_dict.GetString(Statistic("googFrameWidthReceived", ssrc), &value));
+  value =
+      pc_dict.FindStringByDottedPath(Statistic("googFrameWidthReceived", ssrc));
+  ASSERT_TRUE(value);
   perf_test::PrintResult("video_resolution", modifier, "goog_frame_width_recv",
-                         value, "pixels", false);
-  EXPECT_TRUE(
-      pc_dict.GetString(Statistic("googFrameHeightReceived", ssrc), &value));
+                         *value, "pixels", false);
+  value = pc_dict.FindStringByDottedPath(
+      Statistic("googFrameHeightReceived", ssrc));
+  ASSERT_TRUE(value);
   perf_test::PrintResult("video_resolution", modifier, "goog_frame_height_recv",
-                         value, "pixels", false);
+                         *value, "pixels", false);
 
-  EXPECT_TRUE(pc_dict.GetString(Statistic("googCurrentDelayMs", ssrc), &value));
-  perf_test::PrintResult(
-      "video_rx", modifier, "goog_current_delay_ms", value, "ms", false);
-  EXPECT_TRUE(pc_dict.GetString(Statistic("googTargetDelayMs", ssrc), &value));
-  perf_test::PrintResult(
-      "video_rx", modifier, "goog_target_delay_ms", value, "ms", false);
-  EXPECT_TRUE(pc_dict.GetString(Statistic("googDecodeMs", ssrc), &value));
-  perf_test::PrintResult("video_rx", modifier, "goog_decode_ms", value, "ms",
+  value = pc_dict.FindStringByDottedPath(Statistic("googCurrentDelayMs", ssrc));
+  ASSERT_TRUE(value);
+  perf_test::PrintResult("video_rx", modifier, "goog_current_delay_ms", *value,
+                         "ms", false);
+  value = pc_dict.FindStringByDottedPath(Statistic("googTargetDelayMs", ssrc));
+  ASSERT_TRUE(value);
+  perf_test::PrintResult("video_rx", modifier, "goog_target_delay_ms", *value,
+                         "ms", false);
+  value = pc_dict.FindStringByDottedPath(Statistic("googDecodeMs", ssrc));
+  ASSERT_TRUE(value);
+  perf_test::PrintResult("video_rx", modifier, "goog_decode_ms", *value, "ms",
                          false);
-  EXPECT_TRUE(pc_dict.GetString(Statistic("googMaxDecodeMs", ssrc), &value));
-  perf_test::PrintResult(
-      "video_rx", modifier, "goog_max_decode_ms", value, "ms", false);
-  EXPECT_TRUE(pc_dict.GetString(Statistic("googJitterBufferMs", ssrc), &value));
-  perf_test::PrintResult(
-      "video_rx", modifier, "goog_jitter_buffer_ms", value, "ms", false);
-  EXPECT_TRUE(pc_dict.GetString(Statistic("googRenderDelayMs", ssrc), &value));
-  perf_test::PrintResult(
-      "video_rx", modifier, "goog_render_delay_ms", value, "ms", false);
+  value = pc_dict.FindStringByDottedPath(Statistic("googMaxDecodeMs", ssrc));
+  ASSERT_TRUE(value);
+  perf_test::PrintResult("video_rx", modifier, "goog_max_decode_ms", *value,
+                         "ms", false);
+  value = pc_dict.FindStringByDottedPath(Statistic("googJitterBufferMs", ssrc));
+  ASSERT_TRUE(value);
+  perf_test::PrintResult("video_rx", modifier, "goog_jitter_buffer_ms", *value,
+                         "ms", false);
+  value = pc_dict.FindStringByDottedPath(Statistic("googRenderDelayMs", ssrc));
+  ASSERT_TRUE(value);
+  perf_test::PrintResult("video_rx", modifier, "goog_render_delay_ms", *value,
+                         "ms", false);
 }
 
 static std::string ExtractSsrcIdentifier(const std::string& key) {
@@ -181,63 +209,64 @@
 // Returns the set of unique ssrc identifiers in the call (e.g. ssrc_1234,
 // ssrc_12356, etc). |stats_dict| is the .stats dict from one peer connection.
 static std::set<std::string> FindAllSsrcIdentifiers(
-    const base::DictionaryValue& stats_dict) {
+    const base::Value::Dict& stats_dict) {
   std::set<std::string> result;
-  base::DictionaryValue::Iterator stats_iterator(stats_dict);
-
-  while (!stats_iterator.IsAtEnd()) {
-    if (stats_iterator.key().find("ssrc_") != std::string::npos)
-      result.insert(ExtractSsrcIdentifier(stats_iterator.key()));
-    stats_iterator.Advance();
+  for (auto kv : stats_dict) {
+    if (kv.first.find("ssrc_") != std::string::npos)
+      result.insert(ExtractSsrcIdentifier(kv.first));
   }
   return result;
 }
 
 namespace test {
 
-void PrintBweForVideoMetrics(const base::DictionaryValue& pc_dict,
+void PrintBweForVideoMetrics(const base::Value::Dict& pc_dict,
                              const std::string& modifier,
                              const std::string& video_codec) {
   std::string video_modifier =
       video_codec.empty() ? modifier : modifier + "_" + video_codec;
   const std::string kBweStatsKey = "bweforvideo";
-  std::string value;
-  ASSERT_TRUE(pc_dict.GetString(
-      Statistic("googAvailableSendBandwidth", kBweStatsKey), &value));
+  const std::string* value = pc_dict.FindStringByDottedPath(
+      Statistic("googAvailableSendBandwidth", kBweStatsKey));
+  ASSERT_TRUE(value);
   perf_test::PrintResult("bwe_stats", video_modifier, "available_send_bw",
-                         value, "bit/s", false);
-  ASSERT_TRUE(pc_dict.GetString(
-      Statistic("googAvailableReceiveBandwidth", kBweStatsKey), &value));
+                         *value, "bit/s", false);
+  value = pc_dict.FindStringByDottedPath(
+      Statistic("googAvailableReceiveBandwidth", kBweStatsKey));
+  ASSERT_TRUE(value);
   perf_test::PrintResult("bwe_stats", video_modifier, "available_recv_bw",
-                         value, "bit/s", false);
-  ASSERT_TRUE(pc_dict.GetString(
-      Statistic("googTargetEncBitrate", kBweStatsKey), &value));
+                         *value, "bit/s", false);
+  value = pc_dict.FindStringByDottedPath(
+      Statistic("googTargetEncBitrate", kBweStatsKey));
+  ASSERT_TRUE(value);
   perf_test::PrintResult("bwe_stats", video_modifier, "target_enc_bitrate",
-                         value, "bit/s", false);
-  ASSERT_TRUE(pc_dict.GetString(
-      Statistic("googActualEncBitrate", kBweStatsKey), &value));
+                         *value, "bit/s", false);
+  value = pc_dict.FindStringByDottedPath(
+      Statistic("googActualEncBitrate", kBweStatsKey));
+  ASSERT_TRUE(value);
   perf_test::PrintResult("bwe_stats", video_modifier, "actual_enc_bitrate",
-                         value, "bit/s", false);
-  ASSERT_TRUE(pc_dict.GetString(
-      Statistic("googTransmitBitrate", kBweStatsKey), &value));
-  perf_test::PrintResult("bwe_stats", video_modifier, "transmit_bitrate", value,
-                         "bit/s", false);
+                         *value, "bit/s", false);
+  value = pc_dict.FindStringByDottedPath(
+      Statistic("googTransmitBitrate", kBweStatsKey));
+  ASSERT_TRUE(value);
+  perf_test::PrintResult("bwe_stats", video_modifier, "transmit_bitrate",
+                         *value, "bit/s", false);
 }
 
-void PrintMetricsForAllStreams(const base::DictionaryValue& pc_dict,
+void PrintMetricsForAllStreams(const base::Value::Dict& pc_dict,
                                const std::string& modifier,
                                const std::string& video_codec) {
   PrintMetricsForSendStreams(pc_dict, modifier, video_codec);
   PrintMetricsForRecvStreams(pc_dict, modifier, video_codec);
 }
 
-void PrintMetricsForSendStreams(const base::DictionaryValue& pc_dict,
+void PrintMetricsForSendStreams(const base::Value::Dict& pc_dict,
                                 const std::string& modifier,
                                 const std::string& video_codec) {
   std::string video_modifier =
       video_codec.empty() ? modifier : modifier + "_" + video_codec;
-  const base::DictionaryValue* stats_dict;
-  ASSERT_TRUE(pc_dict.GetDictionary("stats", &stats_dict));
+  const base::Value::Dict* stats_dict = pc_dict.FindDict("stats");
+  ASSERT_TRUE(stats_dict);
   std::set<std::string> ssrc_identifiers = FindAllSsrcIdentifiers(*stats_dict);
 
   auto ssrc_iterator = ssrc_identifiers.begin();
@@ -248,13 +277,13 @@
   }
 }
 
-void PrintMetricsForRecvStreams(const base::DictionaryValue& pc_dict,
+void PrintMetricsForRecvStreams(const base::Value::Dict& pc_dict,
                                 const std::string& modifier,
                                 const std::string& video_codec) {
   std::string video_modifier =
       video_codec.empty() ? modifier : modifier + "_" + video_codec;
-  const base::DictionaryValue* stats_dict;
-  ASSERT_TRUE(pc_dict.GetDictionary("stats", &stats_dict));
+  const base::Value::Dict* stats_dict = pc_dict.FindDict("stats");
+  ASSERT_TRUE(stats_dict);
   std::set<std::string> ssrc_identifiers = FindAllSsrcIdentifiers(*stats_dict);
 
   auto ssrc_iterator = ssrc_identifiers.begin();
diff --git a/chrome/browser/media/webrtc/webrtc_browsertest_perf.h b/chrome/browser/media/webrtc/webrtc_browsertest_perf.h
index b7b197bc..b528b02a 100644
--- a/chrome/browser/media/webrtc/webrtc_browsertest_perf.h
+++ b/chrome/browser/media/webrtc/webrtc_browsertest_perf.h
@@ -7,9 +7,7 @@
 
 #include <string>
 
-namespace base {
-class DictionaryValue;
-}
+#include "base/values.h"
 
 namespace test {
 
@@ -26,16 +24,16 @@
 // the video_tx_oneway bucket.
 // If |video_codec| is a non-empty string, the codec name is appended last for
 // video metrics, e.g. 'video_tx_oneway_VP9'.
-void PrintBweForVideoMetrics(const base::DictionaryValue& pc_dict,
+void PrintBweForVideoMetrics(const base::Value::Dict& pc_dict,
                              const std::string& modifier,
                              const std::string& video_codec);
-void PrintMetricsForAllStreams(const base::DictionaryValue& pc_dict,
+void PrintMetricsForAllStreams(const base::Value::Dict& pc_dict,
                                const std::string& modifier,
                                const std::string& video_codec);
-void PrintMetricsForSendStreams(const base::DictionaryValue& pc_dict,
+void PrintMetricsForSendStreams(const base::Value::Dict& pc_dict,
                                 const std::string& modifier,
                                 const std::string& video_codec);
-void PrintMetricsForRecvStreams(const base::DictionaryValue& pc_dict,
+void PrintMetricsForRecvStreams(const base::Value::Dict& pc_dict,
                                 const std::string& modifier,
                                 const std::string& video_codec);
 
diff --git a/chrome/browser/media/webrtc/webrtc_desktop_capture_browsertest.cc b/chrome/browser/media/webrtc/webrtc_desktop_capture_browsertest.cc
index cbd20511..d1698dfa 100644
--- a/chrome/browser/media/webrtc/webrtc_desktop_capture_browsertest.cc
+++ b/chrome/browser/media/webrtc/webrtc_desktop_capture_browsertest.cc
@@ -351,6 +351,30 @@
   ASSERT_GE(average_fps, kFps / 3);
 }
 
+IN_PROC_BROWSER_TEST_F(
+    WebRtcDesktopCaptureBrowserTest,
+    TabCaptureProvides0HzWith0MinFpsConstraintAndStaticContent) {
+  constexpr base::TimeDelta kTestTime = base::Seconds(2);
+  InitializeTabSharingForFirstTab(
+      base::BindOnce(GetDesktopMediaIDForTab, base::Unretained(browser()), 1),
+      nullptr, base::StrCat({"minFrameRate: 0, maxFrameRate: 30"}));
+  content::WebContents* first_tab =
+      browser()->tab_strip_model()->GetWebContentsAt(1);
+  EnableVideoFrameCallbacks(first_tab, "local-view");
+
+  // Sample received frame counts during the test time.
+  int frame_counter = 0;
+  base::TimeTicks initial_timestamp = base::TimeTicks::Now();
+  ASSERT_TRUE(test::PollingWaitUntilClosureEvaluatesTrue(
+      base::BindLambdaForTesting([&]() -> bool {
+        frame_counter = GetNumVideoFrameCallbacks(first_tab);
+        return base::TimeTicks::Now() - initial_timestamp >= kTestTime;
+      }),
+      first_tab, base::Milliseconds(50)));
+  // Expect only a few initial frames.
+  ASSERT_LE(frame_counter, 3);
+}
+
 // TODO(crbug.com/796889): Enable on Mac when thread check crash is fixed.
 // TODO(sprang): Figure out why test times out on Win 10 and ChromeOS.
 // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
diff --git a/chrome/browser/media/webrtc/webrtc_internals_perf_browsertest.cc b/chrome/browser/media/webrtc/webrtc_internals_perf_browsertest.cc
index 9169c9a7..2a5341c 100644
--- a/chrome/browser/media/webrtc/webrtc_internals_perf_browsertest.cc
+++ b/chrome/browser/media/webrtc/webrtc_internals_perf_browsertest.cc
@@ -64,43 +64,39 @@
   }
 
   // Tries to extract data from peerConnectionDataStore in the webrtc-internals
-  // tab. The caller owns the parsed data. Returns NULL on failure.
-  base::DictionaryValue* GetWebrtcInternalsData(
+  // tab. The caller owns the parsed data. Returns nullopt on failure.
+  absl::optional<base::Value::Dict> GetWebrtcInternalsData(
       content::WebContents* webrtc_internals_tab) {
     std::string all_stats_json = ExecuteJavascript(
         "window.domAutomationController.send("
         "    JSON.stringify(peerConnectionDataStore));",
         webrtc_internals_tab);
 
-    std::unique_ptr<base::Value> parsed_json =
-        base::JSONReader::ReadDeprecated(all_stats_json);
-    base::DictionaryValue* result;
-    if (parsed_json.get() && parsed_json->GetAsDictionary(&result)) {
-      std::ignore = parsed_json.release();
-      return result;
+    absl::optional<base::Value> parsed_json =
+        base::JSONReader::Read(all_stats_json);
+    if (parsed_json.has_value() && parsed_json->is_dict()) {
+      return absl::make_optional(std::move(parsed_json->GetDict()));
     }
 
-    return NULL;
+    return absl::nullopt;
   }
 
-  const base::DictionaryValue* GetDataOnPeerConnection(
-      const base::DictionaryValue* all_data,
+  const base::Value::Dict* GetDataOnPeerConnection(
+      const base::Value::Dict& all_data,
       int peer_connection_index) {
-    base::DictionaryValue::Iterator iterator(*all_data);
-
-    for (int i = 0; i < peer_connection_index && !iterator.IsAtEnd();
-        --peer_connection_index) {
-      iterator.Advance();
+    for (auto kv : all_data) {
+      if (peer_connection_index == 0) {
+        if (kv.second.is_dict())
+          return &kv.second.GetDict();
+        break;
+      }
+      --peer_connection_index;
     }
 
-    const base::DictionaryValue* result;
-    if (!iterator.IsAtEnd() && iterator.value().GetAsDictionary(&result))
-      return result;
-
-    return NULL;
+    return nullptr;
   }
 
-  std::unique_ptr<base::DictionaryValue> MeasureWebRtcInternalsData(
+  absl::optional<base::Value::Dict> MeasureWebRtcInternalsData(
       int duration_msec) {
     chrome::AddTabAt(browser(), GURL(url::kAboutBlankURL), -1, true);
     EXPECT_TRUE(ui_test_utils::NavigateToURL(
@@ -113,8 +109,7 @@
     ChangeToLegacyGetStats(webrtc_internals_tab);
     test::SleepInJavascript(webrtc_internals_tab, duration_msec);
 
-    return std::unique_ptr<base::DictionaryValue>(
-        GetWebrtcInternalsData(webrtc_internals_tab));
+    return GetWebrtcInternalsData(webrtc_internals_tab);
   }
 
   void RunsAudioVideoCall60SecsAndLogsInternalMetrics(
@@ -162,12 +157,12 @@
     test::SleepInJavascript(left_tab, 60000);
 
     // Start measurements.
-    std::unique_ptr<base::DictionaryValue> all_data =
+    absl::optional<base::Value::Dict> all_data =
         MeasureWebRtcInternalsData(10000);
-    ASSERT_TRUE(all_data.get() != NULL);
+    ASSERT_TRUE(all_data);
 
-    const base::DictionaryValue* first_pc_dict =
-        GetDataOnPeerConnection(all_data.get(), 0);
+    const base::Value::Dict* first_pc_dict =
+        GetDataOnPeerConnection(all_data.value(), 0);
     ASSERT_TRUE(first_pc_dict != NULL);
     const std::string print_modifier = video_codec_print_modifier.empty()
                                            ? video_codec
@@ -221,22 +216,22 @@
     // Let values stabilize, bandwidth ramp up, etc.
     test::SleepInJavascript(left_tab, 60000);
 
-    std::unique_ptr<base::DictionaryValue> all_data =
+    absl::optional<base::Value::Dict> all_data =
         MeasureWebRtcInternalsData(10000);
-    ASSERT_TRUE(all_data.get() != NULL);
+    ASSERT_TRUE(all_data);
 
     // This assumes the sending peer connection is always listed first in the
     // data store, and the receiving second.
-    const base::DictionaryValue* first_pc_dict =
-        GetDataOnPeerConnection(all_data.get(), 0);
+    const base::Value::Dict* first_pc_dict =
+        GetDataOnPeerConnection(all_data.value(), 0);
     ASSERT_TRUE(first_pc_dict != NULL);
     test::PrintBweForVideoMetrics(
         *first_pc_dict, MakePerfTestLabel("_sendonly", opus_dtx), video_codec);
     test::PrintMetricsForSendStreams(
         *first_pc_dict, MakePerfTestLabel("_sendonly", opus_dtx), video_codec);
 
-    const base::DictionaryValue* second_pc_dict =
-        GetDataOnPeerConnection(all_data.get(), 1);
+    const base::Value::Dict* second_pc_dict =
+        GetDataOnPeerConnection(all_data.value(), 1);
     ASSERT_TRUE(second_pc_dict != NULL);
     test::PrintBweForVideoMetrics(
         *second_pc_dict, MakePerfTestLabel("_recvonly", opus_dtx), video_codec);
diff --git a/chrome/browser/net/cert_verify_proc_browsertest.cc b/chrome/browser/net/cert_verify_proc_browsertest.cc
index 27d15e6..99a056e5 100644
--- a/chrome/browser/net/cert_verify_proc_browsertest.cc
+++ b/chrome/browser/net/cert_verify_proc_browsertest.cc
@@ -96,27 +96,29 @@
   }
 
   void VerifyNetLog(base::Value* parsed_net_log) override {
-    base::DictionaryValue* main;
-    ASSERT_TRUE(parsed_net_log->GetAsDictionary(&main));
+    base::Value::Dict* main = parsed_net_log->GetIfDict();
+    ASSERT_TRUE(main);
 
-    base::Value* events = main->FindListKey("events");
+    base::Value::List* events = main->FindList("events");
     ASSERT_TRUE(events);
 
     bool found_cert_verify_proc_event = false;
-    for (const auto& event : events->GetListDeprecated()) {
-      absl::optional<int> event_type = event.FindIntKey("type");
+    for (const auto& event_val : *events) {
+      ASSERT_TRUE(event_val.is_dict());
+      const base::Value::Dict& event = event_val.GetDict();
+      absl::optional<int> event_type = event.FindInt("type");
       ASSERT_TRUE(event_type.has_value());
       if (event_type ==
           static_cast<int>(net::NetLogEventType::CERT_VERIFY_PROC)) {
-        absl::optional<int> phase = event.FindIntKey("phase");
+        absl::optional<int> phase = event.FindInt("phase");
         if (!phase.has_value() ||
             *phase != static_cast<int>(net::NetLogEventPhase::BEGIN)) {
           continue;
         }
-        const base::Value* params = event.FindDictKey("params");
+        const base::Value::Dict* params = event.FindDict("params");
         if (!params)
           continue;
-        const std::string* host = params->FindStringKey("host");
+        const std::string* host = params->FindString("host");
         if (host && *host == kTestHost) {
           found_cert_verify_proc_event = true;
           break;
diff --git a/chrome/browser/net/convert_explicitly_allowed_network_ports_pref.cc b/chrome/browser/net/convert_explicitly_allowed_network_ports_pref.cc
index 3104398..9e3f3de 100644
--- a/chrome/browser/net/convert_explicitly_allowed_network_ports_pref.cc
+++ b/chrome/browser/net/convert_explicitly_allowed_network_ports_pref.cc
@@ -15,16 +15,14 @@
 std::vector<uint16_t> ConvertExplicitlyAllowedNetworkPortsPref(
     PrefService* local_state) {
   std::vector<uint16_t> explicitly_allowed_network_ports;
-  const base::Value* explicitly_allowed_network_ports_list_value =
-      local_state->GetList(prefs::kExplicitlyAllowedNetworkPorts);
-  DCHECK(explicitly_allowed_network_ports_list_value);
-  auto list_view =
-      explicitly_allowed_network_ports_list_value->GetListDeprecated();
-  if (list_view.empty()) {
+  const base::Value::List& explicitly_allowed_network_ports_list =
+      local_state->GetValueList(prefs::kExplicitlyAllowedNetworkPorts);
+  if (explicitly_allowed_network_ports_list.empty()) {
     return explicitly_allowed_network_ports;
   }
-  explicitly_allowed_network_ports.reserve(list_view.size());
-  for (const base::Value& value : list_view) {
+  explicitly_allowed_network_ports.reserve(
+      explicitly_allowed_network_ports_list.size());
+  for (const base::Value& value : explicitly_allowed_network_ports_list) {
     const absl::optional<int> optional_int = value.GetIfInt();
     if (!optional_int) {
       // We handle this case because prefs can be corrupt, but it shouldn't
diff --git a/chrome/browser/net/profile_network_context_service.cc b/chrome/browser/net/profile_network_context_service.cc
index 77f1b262..3c9de8d 100644
--- a/chrome/browser/net/profile_network_context_service.cc
+++ b/chrome/browser/net/profile_network_context_service.cc
@@ -129,12 +129,9 @@
 const char kHttpCacheFinchExperimentGroups[] =
     "profile_network_context_service.http_cache_finch_experiment_groups";
 
-std::vector<std::string> TranslateStringArray(const base::Value* list) {
-  if (!list->is_list())
-    return std::vector<std::string>();
-
+std::vector<std::string> TranslateStringArray(const base::Value::List& list) {
   std::vector<std::string> strings;
-  for (const base::Value& value : list->GetListDeprecated()) {
+  for (const base::Value& value : list) {
     DCHECK(value.is_string());
     strings.push_back(value.GetString());
   }
@@ -432,14 +429,14 @@
 
 network::mojom::CTPolicyPtr ProfileNetworkContextService::GetCTPolicy() {
   auto* prefs = profile_->GetPrefs();
-  const base::Value* ct_required =
-      prefs->GetList(certificate_transparency::prefs::kCTRequiredHosts);
-  const base::Value* ct_excluded =
-      prefs->GetList(certificate_transparency::prefs::kCTExcludedHosts);
-  const base::Value* ct_excluded_spkis =
-      prefs->GetList(certificate_transparency::prefs::kCTExcludedSPKIs);
-  const base::Value* ct_excluded_legacy_spkis =
-      prefs->GetList(certificate_transparency::prefs::kCTExcludedLegacySPKIs);
+  const base::Value::List& ct_required =
+      prefs->GetValueList(certificate_transparency::prefs::kCTRequiredHosts);
+  const base::Value::List& ct_excluded =
+      prefs->GetValueList(certificate_transparency::prefs::kCTExcludedHosts);
+  const base::Value::List& ct_excluded_spkis =
+      prefs->GetValueList(certificate_transparency::prefs::kCTExcludedSPKIs);
+  const base::Value::List& ct_excluded_legacy_spkis = prefs->GetValueList(
+      certificate_transparency::prefs::kCTExcludedLegacySPKIs);
 
   std::vector<std::string> required(TranslateStringArray(ct_required));
   std::vector<std::string> excluded(TranslateStringArray(ct_excluded));
diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/browser/net/system_network_context_manager.cc
index a8b9d949..2ece070 100644
--- a/chrome/browser/net/system_network_context_manager.cc
+++ b/chrome/browser/net/system_network_context_manager.cc
@@ -158,8 +158,7 @@
                         base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY);
 
   for (const base::Value& item :
-       local_state->GetList(prefs::kAllHttpAuthSchemesAllowedForOrigins)
-           ->GetListDeprecated()) {
+       local_state->GetValueList(prefs::kAllHttpAuthSchemesAllowedForOrigins)) {
     auth_dynamic_params->patterns_allowed_to_use_all_schemes.push_back(
         item.GetString());
   }
diff --git a/chrome/browser/offline_pages/prefetch/prefetch_background_task_handler_impl.cc b/chrome/browser/offline_pages/prefetch/prefetch_background_task_handler_impl.cc
index 21bdc0e..cf08efd 100644
--- a/chrome/browser/offline_pages/prefetch/prefetch_background_task_handler_impl.cc
+++ b/chrome/browser/offline_pages/prefetch/prefetch_background_task_handler_impl.cc
@@ -56,12 +56,11 @@
 
 std::unique_ptr<net::BackoffEntry>
 PrefetchBackgroundTaskHandlerImpl::GetCurrentBackoff() const {
-  const base::Value* value = prefs_->GetList(prefetch_prefs::kBackoff);
-  std::unique_ptr<net::BackoffEntry> result;
-  if (value) {
-    result = net::BackoffEntrySerializer::DeserializeFromValue(
-        *value, &kPrefetchBackoffPolicy, tick_clock_, OfflineTimeNow());
-  }
+  const base::Value::List& value =
+      prefs_->GetValueList(prefetch_prefs::kBackoff);
+  std::unique_ptr<net::BackoffEntry> result =
+      net::BackoffEntrySerializer::DeserializeFromList(
+          value, &kPrefetchBackoffPolicy, tick_clock_, OfflineTimeNow());
   if (!result)
     return std::make_unique<net::BackoffEntry>(&kPrefetchBackoffPolicy,
                                                tick_clock_);
diff --git a/chrome/browser/page_info/about_this_site_side_panel_throttle.cc b/chrome/browser/page_info/about_this_site_side_panel_throttle.cc
index 1bca4ecd..c0b583e7 100644
--- a/chrome/browser/page_info/about_this_site_side_panel_throttle.cc
+++ b/chrome/browser/page_info/about_this_site_side_panel_throttle.cc
@@ -5,18 +5,21 @@
 #include "chrome/browser/page_info/about_this_site_side_panel_throttle.h"
 
 #include "components/navigation_interception/intercept_navigation_throttle.h"
+#include "components/page_info/core/about_this_site_service.h"
+#include "content/public/browser/browser_thread.h"
 #include "content/public/browser/navigation_handle.h"
 #include "content/public/browser/navigation_throttle.h"
 #include "content/public/browser/page_navigator.h"
 #include "content/public/browser/web_contents.h"
+#include "net/base/url_util.h"
 #include "ui/base/window_open_disposition.h"
 
 const char kAboutThisSiteWebContentsUserDataKey[] =
     "about_this_site_web_contents_user_data";
 
 AboutThisSiteWebContentsUserData::AboutThisSiteWebContentsUserData(
-    base::RepeatingCallback<void(const content::OpenURLParams&)> handler)
-    : open_in_new_tab_handler(handler) {}
+    base::WeakPtr<Delegate> delegate)
+    : delegate_(delegate) {}
 
 AboutThisSiteWebContentsUserData::~AboutThisSiteWebContentsUserData() = default;
 
@@ -30,21 +33,23 @@
   }
   return std::make_unique<navigation_interception::InterceptNavigationThrottle>(
       handle, base::BindRepeating([](content::NavigationHandle* handle) {
-        if (url::IsSameOriginWith(handle->GetURL(),
-                                  handle->GetWebContents()->GetURL()))
+        DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+        auto* data = static_cast<AboutThisSiteWebContentsUserData*>(
+            handle->GetWebContents()->GetUserData(
+                kAboutThisSiteWebContentsUserDataKey));
+        // The delegate is stored in a WeakPtr. Check if it is still there.
+        if (!data->delegate())
+          return true;
+        if (data->delegate()->IsNavigationAllowed(
+                handle->GetURL(), handle->GetWebContents()->GetURL()))
           return false;
-        // Cross-origin navigations should be moved to a regular tab and can't
-        // be handled in the side-panel.
+
         content::OpenURLParams params(
             handle->GetURL(), content::Referrer(handle->GetReferrer()),
             WindowOpenDisposition::NEW_FOREGROUND_TAB,
             handle->GetPageTransition(), handle->IsRendererInitiated());
         params.initiator_origin = handle->GetInitiatorOrigin();
-
-        auto* data = static_cast<AboutThisSiteWebContentsUserData*>(
-            handle->GetWebContents()->GetUserData(
-                kAboutThisSiteWebContentsUserDataKey));
-        data->open_in_new_tab_handler.Run(params);
+        data->delegate()->OpenUrlInBrowser(params);
         return true;
       }),
       navigation_interception::SynchronyMode::kSync);
diff --git a/chrome/browser/page_info/about_this_site_side_panel_throttle.h b/chrome/browser/page_info/about_this_site_side_panel_throttle.h
index c93c9d3..d7e931a 100644
--- a/chrome/browser/page_info/about_this_site_side_panel_throttle.h
+++ b/chrome/browser/page_info/about_this_site_side_panel_throttle.h
@@ -5,9 +5,11 @@
 #ifndef CHROME_BROWSER_PAGE_INFO_ABOUT_THIS_SITE_SIDE_PANEL_THROTTLE_H_
 #define CHROME_BROWSER_PAGE_INFO_ABOUT_THIS_SITE_SIDE_PANEL_THROTTLE_H_
 
-#include "base/callback.h"
+#include "base/memory/weak_ptr.h"
 #include "base/supports_user_data.h"
 
+class GURL;
+
 namespace content {
 struct OpenURLParams;
 class NavigationHandle;
@@ -19,15 +21,23 @@
 // Holds a handler to open a URL in a new tab in the browser that the sidepanel
 // of this webcontents is associated with. The NavigationThrottle from
 // |MaybeCreateAboutThisSiteThrottleFor| will check if this UserData is present
-// and if it is present intercept cross-origin navigations and open them using
-// the handler.
+// and if it is present, intercepts navigations if |IsNavigationAllowed|
+// and opens them using |OpenUrlInBrowser| instead.
 struct AboutThisSiteWebContentsUserData : public base::SupportsUserData::Data {
-  explicit AboutThisSiteWebContentsUserData(
-      base::RepeatingCallback<void(const content::OpenURLParams&)> handler);
+  class Delegate {
+   public:
+    virtual void OpenUrlInBrowser(const content::OpenURLParams& params) = 0;
+    virtual bool IsNavigationAllowed(const GURL& new_url,
+                                     const GURL& old_url) = 0;
+  };
+
+  explicit AboutThisSiteWebContentsUserData(base::WeakPtr<Delegate> delegate);
   ~AboutThisSiteWebContentsUserData() override;
 
-  base::RepeatingCallback<void(const content::OpenURLParams&)>
-      open_in_new_tab_handler;
+  Delegate* delegate() { return delegate_.get(); }
+
+ private:
+  base::WeakPtr<Delegate> delegate_;
 };
 
 // Installs a NavigationThrottle if an AboutThisSiteWebContentsUserData is
diff --git a/chrome/browser/password_manager/chrome_webauthn_credentials_delegate.cc b/chrome/browser/password_manager/chrome_webauthn_credentials_delegate.cc
index 3ca1f94..6d4b81e 100644
--- a/chrome/browser/password_manager/chrome_webauthn_credentials_delegate.cc
+++ b/chrome/browser/password_manager/chrome_webauthn_credentials_delegate.cc
@@ -9,6 +9,8 @@
 #include "base/feature_list.h"
 #include "build/build_config.h"
 #include "chrome/browser/password_manager/chrome_password_manager_client.h"
+#include "components/password_manager/core/browser/password_ui_utils.h"
+#include "components/strings/grit/components_strings.h"
 #include "content/public/common/content_features.h"
 #include "device/fido/discoverable_credential_metadata.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
@@ -113,18 +115,15 @@
   std::vector<autofill::Suggestion> suggestions;
   for (const auto& credential : credentials) {
     std::u16string name;
-    if (credential.user.display_name &&
-        !credential.user.display_name->empty()) {
-      name = base::UTF8ToUTF16(*credential.user.display_name);
+    if (credential.user.name && !credential.user.name->empty()) {
+      name = base::UTF8ToUTF16(*credential.user.name);
     } else {
-      // TODO(crbug.com/1329958): i18n this string.
-      name = u"Unknown account";
+      name = l10n_util::GetStringUTF16(IDS_PASSWORD_MANAGER_EMPTY_LOGIN);
     }
     autofill::Suggestion suggestion(std::move(name));
-    if (credential.user.name) {
-      suggestion.label = base::UTF8ToUTF16(*credential.user.name);
-    }
-    suggestion.icon = "fingerprint";
+    suggestion.label = l10n_util::GetStringUTF16(
+        password_manager::GetPlatformAuthenticatorLabel());
+    suggestion.icon = "globeIcon";
     suggestion.frontend_id = autofill::POPUP_ITEM_ID_WEBAUTHN_CREDENTIAL;
     suggestion.payload = base::Base64Encode(credential.cred_id);
     suggestions.push_back(std::move(suggestion));
diff --git a/chrome/browser/password_manager/chrome_webauthn_credentials_delegate.h b/chrome/browser/password_manager/chrome_webauthn_credentials_delegate.h
index 0aebf864..3cb5fe17 100644
--- a/chrome/browser/password_manager/chrome_webauthn_credentials_delegate.h
+++ b/chrome/browser/password_manager/chrome_webauthn_credentials_delegate.h
@@ -27,8 +27,6 @@
       delete;
   ChromeWebAuthnCredentialsDelegate operator=(
       const ChromeWebAuthnCredentialsDelegate&) = delete;
-  ChromeWebAuthnCredentialsDelegate(ChromeWebAuthnCredentialsDelegate&&) =
-      delete;
 
   // password_manager::WebAuthnCredentialsDelegate:
   bool IsWebAuthnAutofillEnabled() const override;
diff --git a/chrome/browser/password_manager/chrome_webauthn_credentials_delegate_unittest.cc b/chrome/browser/password_manager/chrome_webauthn_credentials_delegate_unittest.cc
index e2a52ef..b139b44a 100644
--- a/chrome/browser/password_manager/chrome_webauthn_credentials_delegate_unittest.cc
+++ b/chrome/browser/password_manager/chrome_webauthn_credentials_delegate_unittest.cc
@@ -17,6 +17,7 @@
 #include "chrome/browser/password_manager/chrome_password_manager_client.h"
 #include "chrome/browser/webauthn/authenticator_request_dialog_model.h"
 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
+#include "components/password_manager/core/browser/password_ui_utils.h"
 #include "device/fido/discoverable_credential_metadata.h"
 #include "device/fido/public_key_credential_user_entity.h"
 #include "testing/gmock/include/gmock/gmock.h"
@@ -112,7 +113,7 @@
 #if !BUILDFLAG(IS_ANDROID)
     dialog_model()->StartFlow(
         AuthenticatorRequestDialogModel::TransportAvailabilityInfo(),
-        /*use_location_bar_bubble=*/true, /*prefer_native_api=*/false);
+        /*is_conditional_mediation=*/true, /*prefer_native_api=*/false);
     dialog_model()->ReplaceCredListForTesting(std::move(creds));
 #else
     delegate_->OnWebAuthnRequestPending(
@@ -152,6 +153,8 @@
 // Testing retrieving suggestions when there are 2 public key credentials
 // present.
 TEST_F(ChromeWebAuthnCredentialsDelegateTest, RetrieveCredentials) {
+  const std::u16string kPlatformAuthenticatorLabel = l10n_util::GetStringUTF16(
+      password_manager::GetPlatformAuthenticatorLabel());
   std::vector<device::DiscoverableCredentialMetadata> users;
   users.emplace_back(
       kRpId, CredId1(),
@@ -169,10 +172,10 @@
 
   auto suggestions = credentials_delegate_->GetWebAuthnSuggestions();
   EXPECT_EQ(suggestions.size(), 2u);
-  EXPECT_EQ(suggestions[0].main_text.value, base::UTF8ToUTF16(DisplayName1()));
-  EXPECT_EQ(suggestions[0].label, base::UTF8ToUTF16(UserName1()));
-  EXPECT_EQ(suggestions[1].main_text.value, base::UTF8ToUTF16(DisplayName2()));
-  EXPECT_EQ(suggestions[1].label, base::UTF8ToUTF16(UserName2()));
+  EXPECT_EQ(suggestions[0].main_text.value, base::UTF8ToUTF16(UserName1()));
+  EXPECT_EQ(suggestions[0].label, kPlatformAuthenticatorLabel);
+  EXPECT_EQ(suggestions[1].main_text.value, base::UTF8ToUTF16(UserName2()));
+  EXPECT_EQ(suggestions[1].label, kPlatformAuthenticatorLabel);
 }
 
 // Testing retrieving suggestions when there are no public key credentials
@@ -187,45 +190,26 @@
 }
 
 // Testing retrieving suggestions when there is a public key credential present
-// with no display name.
-TEST_F(ChromeWebAuthnCredentialsDelegateTest,
-       RetrieveCredentialsWithEmptyDisplayName) {
-  std::vector<device::DiscoverableCredentialMetadata> users;
-  users.emplace_back(kRpId, CredId1(),
-                     device::PublicKeyCredentialUserEntity(
-                         UserId1(), UserName1(), std::string(), absl::nullopt));
-
-  SetCredList(users);
-
-  credentials_delegate_->RetrieveWebAuthnSuggestions(base::BindOnce([]() {}));
-  task_environment()->RunUntilIdle();
-
-  auto suggestions = credentials_delegate_->GetWebAuthnSuggestions();
-  std::u16string error_string = u"Unknown account";
-  EXPECT_EQ(suggestions.size(), 1u);
-  EXPECT_EQ(suggestions[0].main_text.value, error_string);
-  EXPECT_EQ(suggestions[0].label, base::UTF8ToUTF16(UserName1()));
-}
-
-// Testing retrieving suggestions when there is a public key credential present
 // with missing user name.
 TEST_F(ChromeWebAuthnCredentialsDelegateTest,
        RetrieveCredentialWithNoUserName) {
+  const std::u16string kErrorLabel =
+      l10n_util::GetStringUTF16(IDS_PASSWORD_MANAGER_EMPTY_LOGIN);
+  const std::u16string kPlatformAuthenticatorLabel = l10n_util::GetStringUTF16(
+      password_manager::GetPlatformAuthenticatorLabel());
   std::vector<device::DiscoverableCredentialMetadata> users;
   users.emplace_back(
       kRpId, CredId1(),
       device::PublicKeyCredentialUserEntity(UserId1(), absl::nullopt,
                                             DisplayName1(), absl::nullopt));
-
   SetCredList(users);
-
   credentials_delegate_->RetrieveWebAuthnSuggestions(base::BindOnce([]() {}));
   task_environment()->RunUntilIdle();
 
   auto suggestions = credentials_delegate_->GetWebAuthnSuggestions();
   EXPECT_EQ(suggestions.size(), 1u);
-  EXPECT_EQ(suggestions[0].main_text.value, base::UTF8ToUTF16(DisplayName1()));
-  EXPECT_EQ(suggestions[0].label, std::u16string());
+  EXPECT_EQ(suggestions[0].main_text.value, kErrorLabel);
+  EXPECT_EQ(suggestions[0].label, kPlatformAuthenticatorLabel);
 }
 
 // Testing selection of a credential.
diff --git a/chrome/browser/policy/extension_policy_browsertest.cc b/chrome/browser/policy/extension_policy_browsertest.cc
index 183eb01..3cd83f8 100644
--- a/chrome/browser/policy/extension_policy_browsertest.cc
+++ b/chrome/browser/policy/extension_policy_browsertest.cc
@@ -69,6 +69,7 @@
 #include "extensions/browser/scoped_ignore_content_verifier_for_test.h"
 #include "extensions/browser/test_extension_registry_observer.h"
 #include "extensions/browser/updater/extension_cache_fake.h"
+#include "extensions/browser/updater/extension_downloader_test_helper.h"
 #include "extensions/common/constants.h"
 #include "extensions/common/feature_switch.h"
 #include "extensions/common/features/feature_channel.h"
@@ -701,17 +702,10 @@
   // "example.com" is a  placeholder that gets substituted with the test
   // server address at runtime.
   std::string crx_path = "http://example.com/" + crx_name;
-  return "<?xml version='1.0' encoding='UTF-8'?>"
-         "<gupdate xmlns='http://www.google.com/update2/response' "
-         "protocol='2.0'>"
-         " <app appid='" +
-         id +
-         "'>"
-         "  <updatecheck status='ok' codebase='" +
-         crx_path + "' version='" + version +
-         "' />"
-         " </app>"
-         "</gupdate>";
+  return extensions::CreateUpdateManifest({extensions::UpdateManifestItem(id)
+                                               .version(version)
+                                               .status("ok")
+                                               .codebase(crx_path)});
 }
 
 std::string GetUpdateManifestHeader() {
diff --git a/chrome/browser/profiles/android/java/src/org/chromium/chrome/browser/profiles/Profile.java b/chrome/browser/profiles/android/java/src/org/chromium/chrome/browser/profiles/Profile.java
index 8df72e91e..a8a5b1b7 100644
--- a/chrome/browser/profiles/android/java/src/org/chromium/chrome/browser/profiles/Profile.java
+++ b/chrome/browser/profiles/android/java/src/org/chromium/chrome/browser/profiles/Profile.java
@@ -184,7 +184,7 @@
     /**
      * @return Whether or not the native side profile exists.
      */
-    @VisibleForTesting
+    // @VisibleForTesting (Temporarily allow calling this to debug https://crbug.com/1346710).
     public boolean isNativeInitialized() {
         return mNativeProfileAndroid != 0;
     }
diff --git a/chrome/browser/profiles/profile_browsertest.cc b/chrome/browser/profiles/profile_browsertest.cc
index 49d491c8..a86c5832 100644
--- a/chrome/browser/profiles/profile_browsertest.cc
+++ b/chrome/browser/profiles/profile_browsertest.cc
@@ -538,19 +538,20 @@
   if (!base::ReadFileToString(prefs_path, &prefs))
     return std::string();
 
-  std::unique_ptr<base::Value> value = base::JSONReader::ReadDeprecated(prefs);
+  absl::optional<base::Value> value = base::JSONReader::Read(prefs);
   if (!value)
     return std::string();
 
-  base::DictionaryValue* dict = NULL;
-  if (!value->GetAsDictionary(&dict) || !dict)
+  base::Value::Dict* dict = value->GetIfDict();
+  if (!dict)
     return std::string();
 
-  std::string exit_type;
-  if (!dict->GetString("profile.exit_type", &exit_type))
+  const std::string* exit_type =
+      dict->FindStringByDottedPath("profile.exit_type");
+  if (!exit_type)
     return std::string();
 
-  return exit_type;
+  return *exit_type;
 }
 
 }  // namespace
diff --git a/chrome/browser/renderer_context_menu/render_view_context_menu.cc b/chrome/browser/renderer_context_menu/render_view_context_menu.cc
index bc85a37..48833e05 100644
--- a/chrome/browser/renderer_context_menu/render_view_context_menu.cc
+++ b/chrome/browser/renderer_context_menu/render_view_context_menu.cc
@@ -3239,12 +3239,16 @@
   if (!service)
     return false;
 
+  if (!base::FeatureList::IsEnabled(
+          lens::features::kEnableRegionSearchOnPdfViewer) &&
+      IsFrameInPdfViewer(GetRenderFrameHost()))
+    return false;
+
   const TemplateURL* provider = service->GetDefaultSearchProvider();
   const bool provider_supports_image_search =
       provider && !provider->image_url().empty() &&
       provider->image_url_ref().IsValid(service->search_terms_data());
   return base::FeatureList::IsEnabled(lens::features::kLensStandalone) &&
-         !IsFrameInPdfViewer(GetRenderFrameHost()) &&
          provider_supports_image_search &&
          !GetDocumentURL(params_).SchemeIs(content::kChromeUIScheme) &&
          !in_app &&
@@ -3307,7 +3311,7 @@
   menu_model_.AddItemWithIcon(
       IDC_SEND_TAB_TO_SELF,
       l10n_util::GetStringUTF16(IDS_CONTEXT_MENU_SEND_TAB_TO_SELF),
-      ui::ImageModel::FromVectorIcon(kSendTabToSelfIcon));
+      ui::ImageModel::FromVectorIcon(kLaptopAndSmartphoneIcon));
 #endif
 }
 
@@ -3581,10 +3585,21 @@
     int event_flags,
     bool is_google_default_search_provider) {
 #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
-  if (!lens_region_search_controller_)
+  if (!lens_region_search_controller_) {
+    Browser* browser = GetBrowser();
+    WebContents* web_contents;
+    if (base::FeatureList::IsEnabled(
+            lens::features::kEnableRegionSearchOnPdfViewer)) {
+      // We don't use |source_web_contents_| here because it doesn't work with
+      // the PDF reader.
+      web_contents = browser->tab_strip_model()->GetActiveWebContents();
+    } else {
+      web_contents = source_web_contents_;
+    }
     lens_region_search_controller_ =
-        std::make_unique<lens::LensRegionSearchController>(source_web_contents_,
-                                                           GetBrowser());
+        std::make_unique<lens::LensRegionSearchController>(web_contents,
+                                                           browser);
+  }
   // If Lens fullscreen search is enabled, we want to send every region search
   // as a fullscreen capture.
   bool use_fullscreen_capture =
diff --git a/chrome/browser/renderer_context_menu/render_view_context_menu_unittest.cc b/chrome/browser/renderer_context_menu/render_view_context_menu_unittest.cc
index 06459f77..a51f5be 100644
--- a/chrome/browser/renderer_context_menu/render_view_context_menu_unittest.cc
+++ b/chrome/browser/renderer_context_menu/render_view_context_menu_unittest.cc
@@ -50,6 +50,7 @@
 #include "content/public/browser/render_process_host.h"
 #include "content/public/browser/web_contents.h"
 #include "content/public/browser/web_contents_delegate.h"
+#include "content/public/test/browser_test_utils.h"
 #include "content/public/test/test_renderer_host.h"
 #include "content/public/test/web_contents_tester.h"
 #include "extensions/browser/extension_prefs.h"
@@ -1048,6 +1049,45 @@
   EXPECT_TRUE(menu.IsItemPresent(IDC_CONTENT_CONTEXT_LENS_REGION_SEARCH));
 }
 
+TEST_F(RenderViewContextMenuPrefsTest, LensRegionSearchPdfDisabled) {
+  base::test::ScopedFeatureList features;
+  features.InitWithFeatures({lens::features::kLensStandalone},
+                            {lens::features::kEnableRegionSearchOnPdfViewer});
+  SetUserSelectedDefaultSearchProvider("https://www.google.com",
+                                       /*supports_image_search=*/true);
+  content::RenderFrameHost* render_frame_host =
+      web_contents()->GetPrimaryMainFrame();
+  OverrideLastCommittedOrigin(
+      render_frame_host,
+      url::Origin::Create(
+          GURL("chrome-extension://mhjfbmdgcfjbbpaeojofohoefgiehjai")));
+  content::ContextMenuParams params = CreateParams(MenuItem::PAGE);
+  TestRenderViewContextMenu menu(*render_frame_host, params);
+  menu.Init();
+
+  EXPECT_FALSE(menu.IsItemPresent(IDC_CONTENT_CONTEXT_LENS_REGION_SEARCH));
+}
+
+TEST_F(RenderViewContextMenuPrefsTest, LensRegionSearchPdfEnabled) {
+  base::test::ScopedFeatureList features;
+  features.InitWithFeatures({lens::features::kLensStandalone,
+                             lens::features::kEnableRegionSearchOnPdfViewer},
+                            {});
+  SetUserSelectedDefaultSearchProvider("https://www.google.com",
+                                       /*supports_image_search=*/true);
+  content::RenderFrameHost* render_frame_host =
+      web_contents()->GetPrimaryMainFrame();
+  OverrideLastCommittedOrigin(
+      render_frame_host,
+      url::Origin::Create(
+          GURL("chrome-extension://mhjfbmdgcfjbbpaeojofohoefgiehjai")));
+  content::ContextMenuParams params = CreateParams(MenuItem::PAGE);
+  TestRenderViewContextMenu menu(*render_frame_host, params);
+  menu.Init();
+
+  EXPECT_TRUE(menu.IsItemPresent(IDC_CONTENT_CONTEXT_LENS_REGION_SEARCH));
+}
+
 // Verify that the Lens Region Search menu item is disabled when the user's
 // enterprise policy for Lens Region Search is disabled.
 TEST_F(RenderViewContextMenuPrefsTest,
diff --git a/chrome/browser/resources/chromeos/login/md_login.html b/chrome/browser/resources/chromeos/login/md_login.html
deleted file mode 100644
index 9d5dda96..0000000
--- a/chrome/browser/resources/chromeos/login/md_login.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!doctype html>
-<html build="$i18n{buildType}" cros>
-<head>
-<meta charset="utf-8">
-<meta name="google" value="notranslate">
-<title>$i18n{title}</title>
-<script src="chrome://resources/polymer/v1_0/html-imports/html-imports.min.js"></script>
-<!-- This must be the first import in all login pages. -->
-<link rel="import" href="chrome://resources/html/polymer.html">
-
-<link rel="stylesheet" href="chrome://resources/chromeos/colors/cros_styles.css">
-<link rel="stylesheet" href="chrome://resources/css/butter_bar.css">
-<link rel="stylesheet" href="chrome://resources/css/list.css">
-<link rel="stylesheet" href="chrome://resources/css/menu_button.css">
-<link rel="stylesheet" href="chrome://resources/css/menu.css">
-<link rel="stylesheet" href="chrome://resources/css/spinner.css">
-<link rel="stylesheet" href="chrome://resources/css/throbber.css">
-<link rel="stylesheet" href="chrome://resources/css/widgets.css">
-<link rel="stylesheet" href="oobe.css">
-<link rel="stylesheet" href="oobe_popup_overlay.css">
-<link rel="stylesheet" href="oobe_screen.css">
-<link rel="import" href="components/common_styles/oobe_flex_layout_styles.html">
-<!--
-  TODO(crbug.com/1229130) - Refactor styles so that there is a clear separation
-  between the styles used in the top level document and oobe-common-styles.
--->
-<custom-style>
-  <style include="oobe-flex-layout-styles"></style>
-</custom-style>
-<script src="chrome://resources/js/cr.js"></script>
-<script src="chrome://resources/js/event_tracker.js"></script>
-<script src="chrome://resources/js/cr/event_target.js"></script>
-<script src="chrome://resources/js/cr/ui.js"></script>
-<script src="chrome://resources/js/assert.js"></script>
-<script src="chrome://resources/js/cr/ui/array_data_model.js"></script>
-<script src="chrome://resources/js/cr/ui/list_selection_controller.js"></script>
-<script src="chrome://resources/js/cr/ui/list_selection_model.js"></script>
-<script src="chrome://resources/js/cr/ui/list_single_selection_model.js"></script>
-<script src="chrome://resources/js/cr/ui/list_item.js"></script>
-<script src="chrome://resources/js/cr/ui/list.js"></script>
-<script src="chrome://resources/js/cr/ui/grid.js"></script>
-<script src="chrome://resources/js/promise_resolver.js"></script>
-<script src="chrome://resources/js/util.js"></script>
-<script src="chrome://oobe/debug/debug_util.js"></script>
-<script defer src="chrome://oobe/debug/debug.js"></script>
-<script defer src="chrome://oobe/test_api.js"></script>
-
-<script src="chrome://oobe/keyboard_utils.js"></script>
-
-<link rel="import" href="./i18n_setup.html">
-<link rel="import" href="chrome://oobe/custom_elements.html">
-<script src="chrome://oobe/components/test_util.js"></script>
-<script src="chrome://oobe/login.js"></script>
-</head>
-<body style="font-family:$i18n{fontfamily}" class="chromeos">
-  <include src="md_screen_container.html">
-</body>
-</html>
diff --git a/chrome/browser/resources/chromeos/login/md_screen_container.html b/chrome/browser/resources/chromeos/login/md_screen_container.html
deleted file mode 100644
index 07c592b0..0000000
--- a/chrome/browser/resources/chromeos/login/md_screen_container.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<div id="api-keys-notice-container" hidden>
-  <div id="api-keys-notice"></div>
-</div>
-<div id="scroll-container">
-  <div id="outer-container" class="layout vertical">
-    <div class="oobe-vertical-margin"></div>
-    <div id="oobe" class="faded">
-      <div id="inner-container" class="down">
-        <include src="structure/screens_[OOBE].html">
-        <include src="structure/screens_common.html">
-        <include src="structure/screens_[OS_INSTALL].html">
-      </div>
-    </div>
-    <div class="oobe-vertical-margin"></div>
-  </div>
-</div>
-<div id="top-header-bar">
-  <div class="top-header-bar-strip">
-    <div id="version-labels" hidden>
-      <div id="version"></div>
-      <div id="asset-id"></div>
-      <div id="bluetooth-name" hidden></div>
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/chrome/browser/resources/chromeos/login/oobe.html b/chrome/browser/resources/chromeos/login/oobe.html
deleted file mode 100644
index 0e3f2b2..0000000
--- a/chrome/browser/resources/chromeos/login/oobe.html
+++ /dev/null
@@ -1,62 +0,0 @@
-<!doctype html>
-<html build="$i18n{buildType}" cros>
-<head>
-<meta charset="utf-8">
-<meta name="google" value="notranslate">
-<title>$i18n{title}</title>
-<script src="chrome://resources/polymer/v1_0/html-imports/html-imports.min.js"></script>
-<!-- This must be the first import in all login pages. -->
-<link rel="import" href="chrome://resources/html/polymer.html">
-
-<link rel="stylesheet" href="chrome://resources/chromeos/colors/cros_styles.css">
-<link rel="stylesheet" href="chrome://resources/css/butter_bar.css">
-<link rel="stylesheet" href="chrome://resources/css/list.css">
-<link rel="stylesheet" href="chrome://resources/css/menu_button.css">
-<link rel="stylesheet" href="chrome://resources/css/menu.css">
-<link rel="stylesheet" href="chrome://resources/css/spinner.css">
-<link rel="stylesheet" href="chrome://resources/css/throbber.css">
-<link rel="stylesheet" href="chrome://resources/css/widgets.css">
-
-<link rel="stylesheet" href="oobe.css">
-<link rel="stylesheet" href="oobe_popup_overlay.css">
-<link rel="stylesheet" href="oobe_screen.css">
-
-<!--
-  TODO(crbug.com/1229130) - Refactor styles so that there is a clear separation
-  between the styles used in the top level document and oobe-common-styles.
--->
-<link rel="import" href="components/common_styles/oobe_flex_layout_styles.html">
-<custom-style>
-  <style include="oobe-flex-layout-styles"></style>
-</custom-style>
-
-<script src="chrome://resources/js/cr.js"></script>
-<script src="chrome://resources/js/event_tracker.js"></script>
-<script src="chrome://resources/js/cr/event_target.js"></script>
-<script src="chrome://resources/js/cr/ui.js"></script>
-<script src="chrome://resources/js/assert.js"></script>
-<script src="chrome://resources/js/cr/ui/array_data_model.js"></script>
-<script src="chrome://resources/js/cr/ui/list_selection_controller.js"></script>
-<script src="chrome://resources/js/cr/ui/list_selection_model.js"></script>
-<script src="chrome://resources/js/cr/ui/list_single_selection_model.js"></script>
-<script src="chrome://resources/js/cr/ui/list_item.js"></script>
-<script src="chrome://resources/js/cr/ui/list.js"></script>
-<script src="chrome://resources/js/cr/ui/grid.js"></script>
-<script src="chrome://resources/js/promise_resolver.js"></script>
-<script src="chrome://resources/js/util.js"></script>
-<script src="chrome://oobe/debug/debug_util.js"></script>
-<script defer src="chrome://oobe/debug/debug.js"></script>
-<script defer src="chrome://oobe/test_api.js"></script>
-
-<script src="chrome://oobe/keyboard_utils.js"></script>
-<script src="chrome://oobe/components/keyboard_utils_for_injection.js"></script>
-
-<link rel="import" href="./i18n_setup.html">
-<link rel="import" href="chrome://oobe/custom_elements.html">
-<script src="chrome://oobe/components/test_util.js"></script>
-<script src="chrome://oobe/oobe.js"></script>
-</head>
-<body class="oobe-display chromeos" style="font-family:$i18n{fontfamily}">
-  <include src="md_screen_container.html">
-</body>
-</html>
diff --git a/chrome/browser/resources/chromeos/login/oobe.js b/chrome/browser/resources/chromeos/login/oobe.js
deleted file mode 100644
index 56cdd46..0000000
--- a/chrome/browser/resources/chromeos/login/oobe.js
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-/**
- * @fileoverview Out of the box experience flow (OOBE).
- * This is the main code for the OOBE WebUI implementation.
- */
-
-// <include src="components/display_manager_types.js">
-// <include src="components/oobe_types.js">
-// <include src="display_manager.js">
-// <include src="demo_mode_test_helper.js">
-
-// <include src="login_ui_tools.js">
-// <include src="cr_ui.js">
-
-// This variable and function call was moved here from cr_ui.js during a
-// cleanup for the Polymer3 migration. It remains functionally equivalent
-// to what we had before and it will be irrelevant once the migration is
-// over since this entry point (default WebUI resource) will be removed.
-var Oobe = cr.ui.Oobe;
-
-// Allow selection events on components with editable text (password field)
-// bug (http://code.google.com/p/chromium/issues/detail?id=125863)
-disableTextSelectAndDrag(function(e) {
-  var src = e.target;
-  return src instanceof HTMLTextAreaElement ||
-      src instanceof HTMLInputElement && /text|password|search/.test(src.type);
-});
-
-// <include src="components/oobe_select.js">
-
-// <include src="../../gaia_auth_host/authenticator.js">
-// <include src="multi_tap_detector.js">
-// <include src="components/web_view_helper.js">
-// <include src="components/web_view_loader.js">
-
-HTMLImports.whenReady(() => {
-  // Update localized strings at the document level.
-  Oobe.updateDocumentLocalizedStrings();
-
-  // <include src="oobe_initialization.js">
-});
diff --git a/chrome/browser/resources/chromeos/login/oobe_conditional_resources.grd b/chrome/browser/resources/chromeos/login/oobe_conditional_resources.grd
index c810b8e..e31f915 100644
--- a/chrome/browser/resources/chromeos/login/oobe_conditional_resources.grd
+++ b/chrome/browser/resources/chromeos/login/oobe_conditional_resources.grd
@@ -9,20 +9,7 @@
   <release seq="1">
     <structures>
       <!-- Resources in this section still depend on flattenhtml -->
-      <structure name="IDR_MD_LOGIN_HTML" file="md_login.html" flattenhtml="true" type="chrome_html" variables="OOBE=login,OS_INSTALL=stub" expand_variables="true" />
-      <structure name="IDR_OOBE_HTML" file="oobe.html" flattenhtml="true" type="chrome_html" variables="OOBE=oobe,OS_INSTALL=stub" expand_variables="true" />
-      <structure name="IDR_OS_INSTALL_LOGIN_HTML" file="md_login.html" flattenhtml="true" type="chrome_html" variables="OOBE=login,OS_INSTALL=os_install" expand_variables="true" />
-      <structure name="IDR_OS_INSTALL_OOBE_HTML" file="oobe.html" flattenhtml="true" type="chrome_html" variables="OOBE=oobe,OS_INSTALL=os_install" expand_variables="true" />
-      <structure name="IDR_OOBE_JS" file="oobe.js" flattenhtml="true" type="chrome_html" />
-
-      <structure name="IDR_CUSTOM_ELEMENTS_OOBE_HTML" file="structure\components_common.html" flattenhtml="true" type="chrome_html" variables="OOBE=oobe,OS_INSTALL=stub" expand_variables="true" />
-      <structure name="IDR_CUSTOM_ELEMENTS_LOGIN_HTML" file="structure\components_common.html" flattenhtml="true" type="chrome_html" variables="OOBE=login,OS_INSTALL=stub" expand_variables="true" />
-      <structure name="IDR_CUSTOM_ELEMENTS_OS_INSTALL_OOBE_HTML" file="structure\components_common.html" flattenhtml="true" type="chrome_html" variables="OOBE=oobe,OS_INSTALL=os_install" expand_variables="true" />
-      <structure name="IDR_CUSTOM_ELEMENTS_OS_INSTALL_LOGIN_HTML" file="structure\components_common.html" flattenhtml="true" type="chrome_html" variables="OOBE=login,OS_INSTALL=os_install" expand_variables="true" />
-
       <structure name="IDR_OOBE_DEBUGGER_UTIL_JS" file="debug\debug_util.js" type="chrome_html" flattenhtml="true" />
-
-      <structure name="IDR_KEYBOARD_UTILS_FOR_INJECTION_JS" file="components/keyboard_utils_for_injection.js" flattenhtml="true" type="chrome_html" />
       <structure name="IDR_KEYBOARD_UTILS_FOR_INJECTION_M_JS" file="components/keyboard_utils_for_injection.m.js" flattenhtml="true" type="chrome_html" />
 
     </structures>
@@ -35,23 +22,18 @@
 
       <!-- Resources that are dynamically chosen to be served in runtime -->
       <!-- OOBE Custom CSS Variables -->
-      <include name="IDR_OOBE_COMPONENTS_OOBE_CUSTOM_VARS_CSS_HTML" file="components/oobe_vars/oobe_custom_vars_css.html" type="chrome_html" />
-      <include name="IDR_OOBE_COMPONENTS_OOBE_CUSTOM_VARS_REMORA_CSS_HTML" file="components/oobe_vars/oobe_custom_vars_remora_css.html" type="chrome_html" />
       <include name="IDR_OOBE_COMPONENTS_OOBE_CUSTOM_VARS_CSS_M_JS" use_base_dir="false" type="chrome_html"
                file="${root_gen_dir}/chrome/browser/resources/chromeos/login/oobe_preprocessed/components/oobe_vars/oobe_custom_vars_css.m.js" />
       <include name="IDR_OOBE_COMPONENTS_OOBE_CUSTOM_VARS_REMORA_CSS_M_JS" use_base_dir="false" type="chrome_html"
                file="${root_gen_dir}/chrome/browser/resources/chromeos/login/oobe_preprocessed/components/oobe_vars/oobe_custom_vars_remora_css.m.js" />
 
       <!-- OOBE Test API -->
-      <include name="IDR_OOBE_TEST_API_JS" file="test_api\test_api.js" type="chrome_html" />
-      <include name="IDR_OOBE_TEST_API_STUB_JS" file="test_api\no_test_api.js" type="chrome_html" />
       <include name="IDR_OOBE_TEST_API_M_JS" use_base_dir="false" type="chrome_html"
                file="${root_gen_dir}/chrome/browser/resources/chromeos/login/oobe_preprocessed/test_api/test_api.m.js" />
       <include name="IDR_OOBE_TEST_API_STUB_M_JS" use_base_dir="false" type="chrome_html"
                file="${root_gen_dir}/chrome/browser/resources/chromeos/login/oobe_preprocessed/test_api/no_test_api.m.js" />
 
       <!-- OOBE Debugger -->
-      <include name="IDR_OOBE_DEBUGGER_JS" file="debug\debug.js" type="chrome_html" />
       <include name="IDR_OOBE_DEBUGGER_M_JS" use_base_dir="false" type="chrome_html"
                file="${root_gen_dir}/chrome/browser/resources/chromeos/login/oobe_preprocessed/debug/debug.m.js" />
       <include name="IDR_OOBE_DEBUGGER_STUB_JS" file="debug\no_debug.js" type="chrome_html" />
diff --git a/chrome/browser/resources/chromeos/login/oobe_initialization.js b/chrome/browser/resources/chromeos/login/oobe_initialization.js
deleted file mode 100644
index a0184eb..0000000
--- a/chrome/browser/resources/chromeos/login/oobe_initialization.js
+++ /dev/null
@@ -1,68 +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.
-
-/**
- * @fileoverview Initializes OOBE when the DOM is loaded.
- */
-
-(function() {
-'use strict';
-
-function initializeOobe() {
-  if (document.readyState === 'loading') {
-    return;
-  }
-  document.removeEventListener('DOMContentLoaded', initializeOobe);
-
-  // TODO(crbug.com/1082670): Remove excessive logging after investigation.
-  console.warn('1082670 : initializing OOBE');
-
-  // Initialize the on-screen debugger if present.
-  if (cr.ui.login.debug) {
-    cr.ui.login.debug.DebuggerUI.getInstance().register(document.body);
-  }
-
-  try {
-    cr.ui.Oobe.initialize();
-  } finally {
-    // TODO(crbug.com/712078): Do not set readyForTesting in case of that
-    // initialize() is failed. Currently, in some situation, initialize()
-    // raises an exception unexpectedly. It means testing APIs should not
-    // be called then. However, checking it here now causes bots failures
-    // unfortunately. So, as a short term workaround, here set
-    // readyForTesting even on failures, just to make test bots happy.
-    Oobe.readyForTesting = true;
-  }
-
-  // Mark initialization complete and wake any callers that might be waiting
-  // for OOBE to load.
-  cr.ui.Oobe.initializationComplete = true;
-  cr.ui.Oobe.initCallbacks.forEach(resolvePromise => resolvePromise());
-}
-
-// Install a global error handler so stack traces are included in logs.
-window.onerror = function(message, file, line, column, error) {
-  if (error && error.stack) {
-    console.error(error.stack);
-  }
-};
-
-// TODO(crbug.com/1082670): Remove excessive logging after investigation.
-console.warn('1082670 : cr_ui loaded');
-
-/**
- * Final initialization performed after HTML imports are loaded. Loads
- * common elements used in OOBE (Custom Elements).
- */
-HTMLImports.whenReady(() => {
-  // TODO(crbug.com/1111387) - Remove excessive logging.
-  console.warn('HTMLImports ready.');
-
-  if (document.readyState === 'loading') {
-    document.addEventListener('DOMContentLoaded', initializeOobe);
-  } else {
-    initializeOobe();
-  }
-});
-})();
diff --git a/chrome/browser/resources/chromeos/login/structure/components_common.html b/chrome/browser/resources/chromeos/login/structure/components_common.html
deleted file mode 100644
index de76373..0000000
--- a/chrome/browser/resources/chromeos/login/structure/components_common.html
+++ /dev/null
@@ -1,48 +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. -->
-
-<!-- Common components -->
-<link rel="import" href="/components/behaviors/oobe_dialog_host_behavior.html">
-<link rel="import" href="/components/behaviors/oobe_i18n_behavior.html">
-<link rel="import" href="/components/common_styles/common_styles.html">
-<link rel="import" href="/components/hd_iron_icon.html">
-
-<link rel="import" href="/components/oobe_a11y_option.html">
-<link rel="import" href="/screens/common/app_downloading.html">
-<link rel="import" href="/screens/common/app_launch_splash.html">
-<link rel="import" href="/screens/common/arc_terms_of_service.html">
-<link rel="import" href="/screens/common/assistant_optin.html">
-<link rel="import" href="/screens/common/consolidated_consent.html">
-<link rel="import" href="/screens/common/device_disabled.html">
-<link rel="import" href="/screens/common/enable_kiosk.html">
-<link rel="import" href="/screens/common/error_message.html">
-<link rel="import" href="/screens/common/family_link_notice.html">
-<link rel="import" href="/screens/common/fingerprint_setup.html">
-<link rel="import" href="/screens/common/gaia_signin.html">
-<link rel="import" href="/screens/common/guest_tos.html">
-<link rel="import" href="/screens/common/gesture_navigation.html">
-<link rel="import" href="/screens/common/hw_data_collection.html">
-<link rel="import" href="/screens/common/managed_terms_of_service.html">
-<link rel="import" href="/screens/common/marketing_opt_in.html">
-<link rel="import" href="/screens/common/multidevice_setup.html">
-<link rel="import" href="/screens/common/offline_ad_login.html">
-<link rel="import" href="/screens/common/oobe_eula.html">
-<link rel="import" href="/screens/common/oobe_reset.html">
-<link rel="import" href="/screens/common/parental_handoff.html">
-<link rel="import" href="/screens/common/pin_setup.html">
-<link rel="import" href="/screens/common/recommend_apps.html">
-<link rel="import" href="/screens/common/saml_confirm_password.html">
-<link rel="import" href="/screens/common/signin_fatal_error.html">
-<link rel="import" href="/screens/common/smart_privacy_protection.html">
-<link rel="import" href="/screens/common/sync_consent.html">
-<link rel="import" href="/screens/common/theme_selection.html">
-<link rel="import" href="/screens/common/tpm_error.html">
-<link rel="import" href="/screens/common/user_creation.html">
-<link rel="import" href="/screens/common/autolaunch.html">
-<link rel="import" href="/screens/common/wrong_hwid.html">
-
-<!-- Common screen components -->
-
-<include src="components_[OOBE].html">
-<include src="components_[OS_INSTALL].html">
diff --git a/chrome/browser/resources/chromeos/login/structure/components_login.html b/chrome/browser/resources/chromeos/login/structure/components_login.html
deleted file mode 100644
index ad70a70..0000000
--- a/chrome/browser/resources/chromeos/login/structure/components_login.html
+++ /dev/null
@@ -1,12 +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. -->
-
-<!-- Components that appear as a part of Login screen only -->
-<link rel="import" href="/screens/login/active_directory_password_change.html">
-<link rel="import" href="/screens/login/encryption_migration.html">
-<link rel="import" href="/screens/login/gaia_password_changed.html">
-<link rel="import" href="/screens/login/lacros_data_migration.html">
-<link rel="import" href="/screens/login/management_transition.html">
-<link rel="import" href="/screens/login/offline_login.html">
-<link rel="import" href="/screens/login/update_required_card.html">
diff --git a/chrome/browser/resources/chromeos/login/structure/components_oobe.html b/chrome/browser/resources/chromeos/login/structure/components_oobe.html
deleted file mode 100644
index 28c39ba0..0000000
--- a/chrome/browser/resources/chromeos/login/structure/components_oobe.html
+++ /dev/null
@@ -1,16 +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. -->
-
-<!-- Components that appear as a part of OOBE screen only -->
-<link rel="import" href="/screens/oobe/auto_enrollment_check.html">
-<link rel="import" href="/screens/oobe/demo_preferences.html">
-<link rel="import" href="/screens/oobe/demo_setup.html">
-<link rel="import" href="/screens/oobe/enable_debugging.html">
-<link rel="import" href="/screens/oobe/enterprise_enrollment.html">
-<link rel="import" href="/screens/oobe/hid_detection.html">
-<link rel="import" href="/screens/oobe/oobe_network.html">
-<link rel="import" href="/screens/oobe/packaged_license.html">
-<link rel="import" href="/screens/oobe/quick_start.html">
-<link rel="import" href="/screens/oobe/update.html">
-<link rel="import" href="/screens/oobe/welcome.html">
diff --git a/chrome/browser/resources/chromeos/login/structure/components_os_install.html b/chrome/browser/resources/chromeos/login/structure/components_os_install.html
deleted file mode 100644
index 1794f16..0000000
--- a/chrome/browser/resources/chromeos/login/structure/components_os_install.html
+++ /dev/null
@@ -1,8 +0,0 @@
-<!-- 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. -->
-
-<!-- Components that appear as a part of os install flow only -->
-
-<link rel="import" href="/screens/common/os_install.html">
-<link rel="import" href="/screens/common/os_trial.html">
diff --git a/chrome/browser/resources/chromeos/login/structure/components_stub.html b/chrome/browser/resources/chromeos/login/structure/components_stub.html
deleted file mode 100644
index e69de29..0000000
--- a/chrome/browser/resources/chromeos/login/structure/components_stub.html
+++ /dev/null
diff --git a/chrome/browser/resources/chromeos/login/structure/screens_common.html b/chrome/browser/resources/chromeos/login/structure/screens_common.html
deleted file mode 100644
index 5fd4cbb..0000000
--- a/chrome/browser/resources/chromeos/login/structure/screens_common.html
+++ /dev/null
@@ -1,76 +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. -->
-
-<!-- Screens that can appear both in OOBE and Login modes. -->
-<oobe-reset-element id="reset" class="step" hidden></oobe-reset-element>
-<autolaunch-element id="autolaunch" class="step hidden" hidden>
-</autolaunch-element>
-<adb-sideloading-element id="adb-sideloading" class="step hidden" hidden>
-</adb-sideloading-element>
-<enable-kiosk-element id="kiosk-enable" class="step hidden" hidden>
-</enable-kiosk-element>
-<assistant-optin-element id="assistant-optin-flow" class="step hidden" hidden>
-</assistant-optin-element>
-<error-message-element id="error-message" class="step hidden" hidden>
-</error-message-element>
-<arc-tos-element id="arc-tos" class="step right hidden arc-tos-loading" hidden>
-</arc-tos-element>
-<gaia-signin-element id="gaia-signin" class="step hidden" hidden>
-</gaia-signin-element>
-<offline-ad-login-element id="offline-ad-login" class="step hidden" hidden>
-</offline-ad-login-element>
-<tpm-error-message-element id="tpm-error-message" class="step hidden" hidden>
-</tpm-error-message-element>
-<wrong-hwid-element id="wrong-hwid" class="step hidden" hidden>
-</wrong-hwid-element>
-<!-- TODO(osamafathy): move `app-launch-splash` to screens_login.html -->
-<app-launch-splash-element id="app-launch-splash" class="step hidden"
-    hidden>
-</app-launch-splash-element>
-<saml-confirm-password-element id="saml-confirm-password" class="step hidden" hidden>
-</saml-confirm-password-element>
-<signin-fatal-error-element id="signin-fatal-error" class="step faded hidden"
-    hidden>
-</signin-fatal-error-element>
-<device-disabled-element id="device-disabled" class="step hidden" hidden>
-</device-disabled-element>
-<sync-consent-element id="sync-consent" class="step hidden" hidden>
-</sync-consent-element>
-<fingerprint-setup-element id="fingerprint-setup" class="step hidden" hidden>
-</fingerprint-setup-element>
-<recommend-apps-element id="recommend-apps" class="step hidden" hidden>
-</recommend-apps-element>
-<app-downloading-element id="app-downloading" class="step hidden" hidden>
-</app-downloading-element>
-<pin-setup-element id="pin-setup" class="step hidden" hidden>
-</pin-setup-element>
-<multidevice-setup-element id="multidevice-setup-screen" class="step hidden"
-    hidden>
-</multidevice-setup-element>
-<gesture-navigation-element id="gesture-navigation" class="step hidden" hidden>
-</gesture-navigation-element>
-<marketing-opt-in-element id="marketing-opt-in" class="step hidden" hidden>
-</marketing-opt-in-element>
-<family-link-notice-element id="family-link-notice" class="step hidden" hidden>
-</family-link-notice-element>
-<user-creation-element id="user-creation" class="step hidden" hidden>
-</user-creation-element>
-<parental-handoff-element id="parental-handoff" class="step hidden" hidden>
-</parental-handoff-element>
-<managed-terms-of-service-element id="terms-of-service" class="step hidden"
-    hidden>
-</managed-terms-of-service-element>
-<consolidated-consent-element id="consolidated-consent" class="step hidden"
-    hidden>
-</consolidated-consent-element>
-<guest-tos-element id="guest-tos" class="step hidden" hidden>
-</guest-tos-element>
-<hw-data-collection-element id="hw-data-collection" class="step hidden" hidden>
-</hw-data-collection-element>
-<smart-privacy-protection-element id="smart-privacy-protection" class="step hidden" hidden>
-</smart-privacy-protection-element>
-<theme-selection-element id="theme-selection" class="step hidden" hidden>
-</theme-selection-element>
-<oobe-eula-element id="oobe-eula-md" class="step hidden" hidden>
-</oobe-eula-element>
diff --git a/chrome/browser/resources/chromeos/login/structure/screens_login.html b/chrome/browser/resources/chromeos/login/structure/screens_login.html
deleted file mode 100644
index 9016ef9..0000000
--- a/chrome/browser/resources/chromeos/login/structure/screens_login.html
+++ /dev/null
@@ -1,25 +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. -->
-
-<!-- Login-specific screens -->
-<!-- Renamed from "supervision-transition" -->
-<management-transition-element id="management-transition" class="step hidden"
-    hidden>
-</management-transition-element>
-<gaia-password-changed-element id="gaia-password-changed"
-    class="step hidden" hidden>
-</gaia-password-changed-element>
-<active-directory-password-change-element id="ad-password-change"
-    class="step hidden migrate" hidden>
-</active-directory-password-change-element>
-<encryption-migration-element id="encryption-migration" class="step hidden"
-    hidden>
-</encryption-migration-element>
-<update-required-card-element id="update-required" class="step hidden" hidden>
-</update-required-card-element>
-<offline-login-element id="offline-login" class="step hidden" hidden>
-</offline-login-element>
-<lacros-data-migration-element id="lacros-data-migration" class="step hidden"
-    hidden>
-</lacros-data-migration-element>
diff --git a/chrome/browser/resources/chromeos/login/structure/screens_oobe.html b/chrome/browser/resources/chromeos/login/structure/screens_oobe.html
deleted file mode 100644
index 8c8582e..0000000
--- a/chrome/browser/resources/chromeos/login/structure/screens_oobe.html
+++ /dev/null
@@ -1,30 +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. -->
-
-<!-- OOBE-specific screens roughly in order of appearance -->
-
-<!-- Due to implementation details Welcome screen have to be first -->
-<oobe-welcome-element id="connect" class="step hidden" hidden>
-</oobe-welcome-element>
-<hid-detection-element id="hid-detection" class="step hidden" hidden>
-</hid-detection-element>
-<enable-debugging-element id="debugging" class="step hidden" hidden>
-</enable-debugging-element>
-<demo-setup-element id="demo-setup" class="step hidden" hidden>
-</demo-setup-element>
-<oobe-network-element id="network-selection" class="step hidden" hidden>
-</oobe-network-element>
-<update-element id="oobe-update" class="step hidden" hidden>
-</update-element>
-<auto-enrollment-check-element id="auto-enrollment-check" class="step hidden" hidden>
-</auto-enrollment-check-element>
-<demo-preferences-element id="demo-preferences" class="step hidden" hidden>
-</demo-preferences-element>
-<enterprise-enrollment-element id="enterprise-enrollment" class="step hidden"
-    hidden>
-</enterprise-enrollment-element>
-<packaged-license-element id="packaged-license" class="step hidden" hidden>
-</packaged-license-element>
-<quick-start-element id="quick-start" class="step hidden" hidden>
-</quick-start-element>
diff --git a/chrome/browser/resources/chromeos/login/structure/screens_os_install.html b/chrome/browser/resources/chromeos/login/structure/screens_os_install.html
deleted file mode 100644
index 53deb39..0000000
--- a/chrome/browser/resources/chromeos/login/structure/screens_os_install.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<!-- 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. -->
-
-<!-- Screens that can appear in OS install mode -->
-<os-install-element id="os-install" class="step hidden" hidden>
-</os-install-element>
-<os-trial-element id="os-trial" class="step hidden" hidden>
-</os-trial-element>
diff --git a/chrome/browser/resources/chromeos/login/structure/screens_stub.html b/chrome/browser/resources/chromeos/login/structure/screens_stub.html
deleted file mode 100644
index e69de29..0000000
--- a/chrome/browser/resources/chromeos/login/structure/screens_stub.html
+++ /dev/null
diff --git a/chrome/browser/resources/internals/user_education/BUILD.gn b/chrome/browser/resources/internals/user_education/BUILD.gn
index 72e6873..644618ff 100644
--- a/chrome/browser/resources/internals/user_education/BUILD.gn
+++ b/chrome/browser/resources/internals/user_education/BUILD.gn
@@ -44,7 +44,10 @@
     "user_education_internals.html.ts",
     "user_education_internals.mojom-webui.js",
   ]
-  deps = [ "//ui/webui/resources:library" ]
+  deps = [
+    "//ui/webui/resources:library",
+    "//ui/webui/resources/cr_components/help_bubble:build_ts",
+  ]
   extra_deps = [
     ":copy_mojo",
     ":preprocess_gen",
diff --git a/chrome/browser/resources/internals/user_education/user_education_internals.html b/chrome/browser/resources/internals/user_education/user_education_internals.html
index 703cd1bd..0c6a2bb 100644
--- a/chrome/browser/resources/internals/user_education/user_education_internals.html
+++ b/chrome/browser/resources/internals/user_education/user_education_internals.html
@@ -10,7 +10,7 @@
   </ul>
   <h2>Show an IPH</h2>
   <ul>
-    <template is="dom-repeat" items="[[featurePromos_]]">
+    <template is="dom-repeat" id="promos" items="[[featurePromos_]]">
       <li>
         <h3>[[item.displayTitle]]</h3>
         <h4>[[item.displayDescription]]</h4>
diff --git a/chrome/browser/resources/internals/user_education/user_education_internals.ts b/chrome/browser/resources/internals/user_education/user_education_internals.ts
index 15901b4..7acec01 100644
--- a/chrome/browser/resources/internals/user_education/user_education_internals.ts
+++ b/chrome/browser/resources/internals/user_education/user_education_internals.ts
@@ -2,12 +2,25 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-import {DomRepeatEvent, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import 'chrome://resources/cr_components/help_bubble/help_bubble.js';
+
+import {HelpBubbleMixin, HelpBubbleMixinInterface} from 'chrome://resources/cr_components/help_bubble/help_bubble_mixin.js';
+import {DomRepeat, DomRepeatEvent, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
 import {getTemplate} from './user_education_internals.html.js';
 import {FeaturePromoDemoPageInfo, UserEducationInternalsPageHandler, UserEducationInternalsPageHandlerInterface} from './user_education_internals.mojom-webui.js';
 
-class UserEducationInternalsElement extends PolymerElement {
+const UserEducationInternalsElementBase = HelpBubbleMixin(PolymerElement) as {
+  new (): PolymerElement & HelpBubbleMixinInterface,
+};
+
+interface UserEducationInternalsElement {
+  $: {
+    promos: DomRepeat,
+  };
+}
+
+class UserEducationInternalsElement extends UserEducationInternalsElementBase {
   static get is() {
     return 'user-education-internals';
   }
@@ -46,6 +59,21 @@
       this.tutorials_ = tutorialIds;
     });
 
+    // There is a self-referential demo IPH for showing a help bubble in a
+    // WebUI (specifically, this WebUI). Because of that, the target anchor for
+    // the help bubble needs to be registered.
+    //
+    // However, because we want to attach the help bubble to an element created
+    // by a dom-repeat, we have to wait until after the dom-repeat populates to
+    // register the anchor element.
+    this.$.promos.addEventListener(
+        'rendered-item-count-changed', (_: Event) => {
+          this.registerHelpBubbleIdentifier(
+              'kWebUIIPHDemoElementIdentifier', 'IPH_WebUiHelpBubbleTest');
+        }, {
+          once: true,
+        });
+
     this.handler_.getFeaturePromos().then(({featurePromos}) => {
       this.featurePromos_ = featurePromos;
     });
diff --git a/chrome/browser/resources/settings/chromeos/internet_page/internet_detail_page.js b/chrome/browser/resources/settings/chromeos/internet_page/internet_detail_page.js
index d5296ad8..7cfceff 100644
--- a/chrome/browser/resources/settings/chromeos/internet_page/internet_detail_page.js
+++ b/chrome/browser/resources/settings/chromeos/internet_page/internet_detail_page.js
@@ -33,6 +33,7 @@
 import './internet_shared_css.js';
 import './network_proxy_section.js';
 import './settings_traffic_counters.js';
+import './tether_connection_dialog.js';
 
 import {isActiveSim} from 'chrome://resources/cr_components/chromeos/network/cellular_utils.m.js';
 import {CrPolicyNetworkBehaviorMojo, CrPolicyNetworkBehaviorMojoInterface} from 'chrome://resources/cr_components/chromeos/network/cr_policy_network_behavior_mojo.m.js';
diff --git a/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_feature_item.js b/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_feature_item.js
index 6de0fc9..4ded7ad 100644
--- a/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_feature_item.js
+++ b/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_feature_item.js
@@ -11,11 +11,12 @@
  * feature's autonomous page if there is one.
  */
 
+import 'chrome://resources/cr_components/localized_link/localized_link.js';
 import 'chrome://resources/cr_elements/cr_icon_button/cr_icon_button.js';
 import 'chrome://resources/cr_elements/shared_vars_css.m.js';
 import 'chrome://resources/polymer/v3_0/iron-icon/iron-icon.js';
 import '../../settings_shared.css.js';
-import 'chrome://resources/cr_components/localized_link/localized_link.js';
+import './multidevice_feature_toggle.js';
 
 import {assert} from 'chrome://resources/js/assert.m.js';
 import {html, mixinBehaviors, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
diff --git a/chrome/browser/resources/settings/chromeos/os_about_page/channel_switcher_dialog.ts b/chrome/browser/resources/settings/chromeos/os_about_page/channel_switcher_dialog.ts
index f0f56093..533f5c53 100644
--- a/chrome/browser/resources/settings/chromeos/os_about_page/channel_switcher_dialog.ts
+++ b/chrome/browser/resources/settings/chromeos/os_about_page/channel_switcher_dialog.ts
@@ -10,8 +10,10 @@
  */
 
 import 'chrome://resources/cr_elements/cr_button/cr_button.m.js';
+import 'chrome://resources/cr_elements/cr_dialog/cr_dialog.m.js';
 import 'chrome://resources/cr_elements/cr_radio_button/cr_radio_button.m.js';
 import 'chrome://resources/cr_elements/cr_radio_group/cr_radio_group.m.js';
+import 'chrome://resources/polymer/v3_0/iron-selector/iron-selector.js';
 import '../../settings_shared.css.js';
 
 import {CrDialogElement} from 'chrome://resources/cr_elements/cr_dialog/cr_dialog.m.js';
diff --git a/chrome/browser/resources/settings/chromeos/os_about_page/consumer_auto_update_toggle_dialog.ts b/chrome/browser/resources/settings/chromeos/os_about_page/consumer_auto_update_toggle_dialog.ts
index 8c5d441..85a729b 100644
--- a/chrome/browser/resources/settings/chromeos/os_about_page/consumer_auto_update_toggle_dialog.ts
+++ b/chrome/browser/resources/settings/chromeos/os_about_page/consumer_auto_update_toggle_dialog.ts
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+import 'chrome://resources/cr_elements/cr_dialog/cr_dialog.m.js';
+
 import {CrDialogElement} from 'chrome://resources/cr_elements/cr_dialog/cr_dialog.m.js';
 import {PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
diff --git a/chrome/browser/resources/settings/chromeos/os_about_page/detailed_build_info.ts b/chrome/browser/resources/settings/chromeos/os_about_page/detailed_build_info.ts
index 8e2b9de..28c1763 100644
--- a/chrome/browser/resources/settings/chromeos/os_about_page/detailed_build_info.ts
+++ b/chrome/browser/resources/settings/chromeos/os_about_page/detailed_build_info.ts
@@ -7,12 +7,12 @@
  * information for ChromeOS.
  */
 
+import 'chrome://resources/cr_components/localized_link/localized_link.js';
 import 'chrome://resources/cr_elements/cr_button/cr_button.m.js';
 import 'chrome://resources/cr_elements/policy/cr_policy_indicator.m.js';
 import 'chrome://resources/cr_elements/policy/cr_tooltip_icon.m.js';
 import '../../prefs/prefs.js';
 import '../../settings_shared.css.js';
-import 'chrome://resources/cr_components/localized_link/localized_link.js';
 import './channel_switcher_dialog.js';
 import './consumer_auto_update_toggle_dialog.js';
 import './edit_hostname_dialog.js';
diff --git a/chrome/browser/resources/settings/chromeos/os_about_page/edit_hostname_dialog.ts b/chrome/browser/resources/settings/chromeos/os_about_page/edit_hostname_dialog.ts
index 7312520..fd7d408f 100644
--- a/chrome/browser/resources/settings/chromeos/os_about_page/edit_hostname_dialog.ts
+++ b/chrome/browser/resources/settings/chromeos/os_about_page/edit_hostname_dialog.ts
@@ -7,6 +7,7 @@
  * user to edit the device hostname.
  */
 import 'chrome://resources/cr_elements/cr_button/cr_button.m.js';
+import 'chrome://resources/cr_elements/cr_dialog/cr_dialog.m.js';
 import 'chrome://resources/cr_elements/cr_input/cr_input.m.js';
 import 'chrome://resources/cr_elements/cr_radio_button/cr_radio_button.m.js';
 import 'chrome://resources/cr_elements/cr_radio_group/cr_radio_group.m.js';
diff --git a/chrome/browser/resources/settings/chromeos/os_about_page/os_about_page.ts b/chrome/browser/resources/settings/chromeos/os_about_page/os_about_page.ts
index ded44ffd..735659ac 100644
--- a/chrome/browser/resources/settings/chromeos/os_about_page/os_about_page.ts
+++ b/chrome/browser/resources/settings/chromeos/os_about_page/os_about_page.ts
@@ -7,6 +7,13 @@
  * information.
  */
 
+import 'chrome://resources/cr_components/localized_link/localized_link.js';
+import 'chrome://resources/cr_elements/cr_button/cr_button.m.js';
+import 'chrome://resources/cr_elements/cr_icon_button/cr_icon_button.js';
+import 'chrome://resources/cr_elements/cr_link_row/cr_link_row.js';
+import 'chrome://resources/cr_elements/icons.m.js';
+import 'chrome://resources/polymer/v3_0/iron-icon/iron-icon.js';
+import 'chrome://resources/polymer/v3_0/iron-media-query/iron-media-query.js';
 import '../../icons.html.js';
 import '../../prefs/prefs.js';
 import '../../settings_page/settings_animated_pages.js';
@@ -16,15 +23,8 @@
 import '../../settings_shared.css.js';
 import '../os_icons.js';
 import '../os_reset_page/os_powerwash_dialog.js';
-import 'chrome://resources/cr_components/localized_link/localized_link.js';
 import './detailed_build_info.js';
 import './update_warning_dialog.js';
-import 'chrome://resources/cr_elements/cr_button/cr_button.m.js';
-import 'chrome://resources/cr_elements/cr_icon_button/cr_icon_button.js';
-import 'chrome://resources/cr_elements/cr_link_row/cr_link_row.js';
-import 'chrome://resources/cr_elements/icons.m.js';
-import 'chrome://resources/polymer/v3_0/iron-icon/iron-icon.js';
-import 'chrome://resources/polymer/v3_0/iron-media-query/iron-media-query.js';
 
 import {assert} from 'chrome://resources/js/assert.m.js';
 import {I18nMixin, I18nMixinInterface} from 'chrome://resources/js/i18n_mixin.js';
diff --git a/chrome/browser/resources/settings/chromeos/os_about_page/update_warning_dialog.ts b/chrome/browser/resources/settings/chromeos/os_about_page/update_warning_dialog.ts
index d3b44f3e..c2fe99ab 100644
--- a/chrome/browser/resources/settings/chromeos/os_about_page/update_warning_dialog.ts
+++ b/chrome/browser/resources/settings/chromeos/os_about_page/update_warning_dialog.ts
@@ -8,6 +8,7 @@
  * agrees to download update using mobile data.
  */
 import 'chrome://resources/cr_elements/cr_button/cr_button.m.js';
+import 'chrome://resources/cr_elements/cr_dialog/cr_dialog.m.js';
 import '../../settings_shared.css.js';
 
 import {CrDialogElement} from 'chrome://resources/cr_elements/cr_dialog/cr_dialog.m.js';
diff --git a/chrome/browser/resources/settings/chromeos/os_languages_page/add_input_methods_dialog.js b/chrome/browser/resources/settings/chromeos/os_languages_page/add_input_methods_dialog.js
index c446d6c..b263d0b 100644
--- a/chrome/browser/resources/settings/chromeos/os_languages_page/add_input_methods_dialog.js
+++ b/chrome/browser/resources/settings/chromeos/os_languages_page/add_input_methods_dialog.js
@@ -7,6 +7,8 @@
  * adding input methods.
  */
 
+import './add_items_dialog.js';
+
 import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
 import {recordSettingChange} from '../metrics_recorder.js';
diff --git a/chrome/browser/resources/settings/chromeos/os_languages_page/add_spellcheck_languages_dialog.js b/chrome/browser/resources/settings/chromeos/os_languages_page/add_spellcheck_languages_dialog.js
index 6d45e3c..e68e4c82 100644
--- a/chrome/browser/resources/settings/chromeos/os_languages_page/add_spellcheck_languages_dialog.js
+++ b/chrome/browser/resources/settings/chromeos/os_languages_page/add_spellcheck_languages_dialog.js
@@ -7,6 +7,8 @@
  * adding spell check languages.
  */
 
+import './add_items_dialog.js';
+
 import {html, mixinBehaviors, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
 import {recordSettingChange} from '../metrics_recorder.js';
diff --git a/chrome/browser/resources/settings/chromeos/os_languages_page/os_add_languages_dialog.js b/chrome/browser/resources/settings/chromeos/os_languages_page/os_add_languages_dialog.js
index d167254..85ca84f 100644
--- a/chrome/browser/resources/settings/chromeos/os_languages_page/os_add_languages_dialog.js
+++ b/chrome/browser/resources/settings/chromeos/os_languages_page/os_add_languages_dialog.js
@@ -7,6 +7,8 @@
  * languages.
  */
 
+import './add_items_dialog.js';
+
 import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
 import {Item} from './add_items_dialog.js';
diff --git a/chrome/browser/resources/settings/chromeos/os_people_page/os_people_page.js b/chrome/browser/resources/settings/chromeos/os_people_page/os_people_page.js
index b362cb1..05fe9d2 100644
--- a/chrome/browser/resources/settings/chromeos/os_people_page/os_people_page.js
+++ b/chrome/browser/resources/settings/chromeos/os_people_page/os_people_page.js
@@ -19,6 +19,7 @@
 import '../../settings_page/settings_animated_pages.js';
 import '../../settings_page/settings_subpage.js';
 import '../../settings_shared.css.js';
+import '../parental_controls_page/parental_controls_page.js';
 import './account_manager.js';
 import './fingerprint_list.js';
 import './lock_screen.js';
diff --git a/chrome/browser/resources/settings/chromeos/os_settings_search_box/os_settings_search_box.js b/chrome/browser/resources/settings/chromeos/os_settings_search_box/os_settings_search_box.js
index c447c310..0c519bc 100644
--- a/chrome/browser/resources/settings/chromeos/os_settings_search_box/os_settings_search_box.js
+++ b/chrome/browser/resources/settings/chromeos/os_settings_search_box/os_settings_search_box.js
@@ -11,6 +11,7 @@
 import 'chrome://resources/polymer/v3_0/iron-dropdown/iron-dropdown.js';
 import 'chrome://resources/polymer/v3_0/iron-list/iron-list.js';
 import '../../settings_shared.css.js';
+import './os_search_result_row.js';
 
 import {getInstance as getAnnouncerInstance} from 'chrome://resources/cr_elements/cr_a11y_announcer/cr_a11y_announcer.js';
 import {assert} from 'chrome://resources/js/assert.m.js';
diff --git a/chrome/browser/resources/settings/chromeos/tsconfig_base.json b/chrome/browser/resources/settings/chromeos/tsconfig_base.json
index a099193..3f69ccee 100644
--- a/chrome/browser/resources/settings/chromeos/tsconfig_base.json
+++ b/chrome/browser/resources/settings/chromeos/tsconfig_base.json
@@ -4,7 +4,6 @@
     "allowJs": true,
     "noUncheckedIndexedAccess": false,
     "noUnusedLocals": false,
-    "strictPropertyInitialization": false,
-    "preserveValueImports": true
+    "strictPropertyInitialization": false
   }
 }
diff --git a/chrome/browser/resources/side_panel/bookmarks/bookmark_folder.ts b/chrome/browser/resources/side_panel/bookmarks/bookmark_folder.ts
index 7c61f5f..3ed19ad 100644
--- a/chrome/browser/resources/side_panel/bookmarks/bookmark_folder.ts
+++ b/chrome/browser/resources/side_panel/bookmarks/bookmark_folder.ts
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 import 'chrome://resources/cr_elements/cr_icon_button/cr_icon_button.js';
+import 'chrome://resources/cr_elements/icons.m.js';
 import 'chrome://resources/cr_elements/shared_vars_css.m.js';
 import 'chrome://resources/cr_elements/mwb_element_shared_style.css.js';
 
diff --git a/chrome/browser/resources/side_panel/bookmarks/bookmarks_api_proxy.ts b/chrome/browser/resources/side_panel/bookmarks/bookmarks_api_proxy.ts
index 2f498019..b40fc7d 100644
--- a/chrome/browser/resources/side_panel/bookmarks/bookmarks_api_proxy.ts
+++ b/chrome/browser/resources/side_panel/bookmarks/bookmarks_api_proxy.ts
@@ -5,7 +5,7 @@
 import {ChromeEvent} from '/tools/typescript/definitions/chrome_event.js';
 import {ClickModifiers} from 'chrome://resources/mojo/ui/base/mojom/window_open_disposition.mojom-webui.js';
 
-import {BookmarksPageHandlerFactory, BookmarksPageHandlerRemote} from './bookmarks.mojom-webui.js';
+import {BookmarksPageHandlerFactory, BookmarksPageHandlerRemote, ContextMenuSource} from './bookmarks.mojom-webui.js';
 
 let instance: BookmarksApiProxy|null = null;
 
@@ -73,7 +73,7 @@
   }
 
   showContextMenu(id: string, x: number, y: number) {
-    this.handler.showContextMenu(id, {x, y});
+    this.handler.showContextMenu(id, {x, y}, ContextMenuSource.kBookmark);
   }
 
   showUI() {
diff --git a/chrome/browser/sharing/shared_clipboard/remote_copy_message_handler.cc b/chrome/browser/sharing/shared_clipboard/remote_copy_message_handler.cc
index 9c59f29..22ebcc7 100644
--- a/chrome/browser/sharing/shared_clipboard/remote_copy_message_handler.cc
+++ b/chrome/browser/sharing/shared_clipboard/remote_copy_message_handler.cc
@@ -277,7 +277,7 @@
   TRACE_EVENT0("sharing", "RemoteCopyMessageHandler::ShowNotification");
 
   message_center::RichNotificationData rich_notification_data;
-  rich_notification_data.vector_small_image = &kSendTabToSelfIcon;
+  rich_notification_data.vector_small_image = &kLaptopAndSmartphoneIcon;
   rich_notification_data.renotify = true;
 
   ui::Accelerator paste_accelerator(ui::VKEY_V, ui::EF_PLATFORM_ACCELERATOR);
diff --git a/chrome/browser/sharing_hub/sharing_hub_model.cc b/chrome/browser/sharing_hub/sharing_hub_model.cc
index ef013fc..b727f9c 100644
--- a/chrome/browser/sharing_hub/sharing_hub_model.cc
+++ b/chrome/browser/sharing_hub/sharing_hub_model.cc
@@ -208,7 +208,7 @@
   first_party_action_list_.emplace_back(
       IDC_SEND_TAB_TO_SELF,
       l10n_util::GetStringUTF16(IDS_CONTEXT_MENU_SEND_TAB_TO_SELF),
-      &kSendTabToSelfIcon, true, gfx::ImageSkia(),
+      &kLaptopAndSmartphoneIcon, true, gfx::ImageSkia(),
       "SharingHubDesktop.SendTabToSelfSelected");
 
   first_party_action_list_.emplace_back(
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
index b51fb54f..94a4a6a 100644
--- a/chrome/browser/ui/BUILD.gn
+++ b/chrome/browser/ui/BUILD.gn
@@ -1817,6 +1817,7 @@
       "//components/url_formatter",
       "//components/url_param_filter/content",
       "//components/user_education/common",
+      "//components/user_education/webui",
       "//components/user_notes:features",
       "//components/vector_icons",
       "//components/web_modal",
@@ -1835,6 +1836,7 @@
       "//ui/base/dragdrop/mojom",
       "//ui/events",
       "//ui/webui/resources/cr_components/app_management:mojo_bindings",
+      "//ui/webui/resources/cr_components/help_bubble:mojo_bindings",
       "//ui/webui/resources/cr_components/history_clusters:mojo_bindings",
       "//ui/webui/resources/js/browser_command:mojo_bindings",
       "//ui/webui/resources/js/metrics_reporter:mojo_bindings",
@@ -4097,6 +4099,9 @@
       "sharing_hub/screenshot/screenshot_captured_bubble_controller.h",
       "sharing_hub/sharing_hub_bubble_controller.h",
       "sharing_hub/sharing_hub_bubble_view.h",
+      "side_panel/customize_chrome/customize_chrome_side_panel_controller_utils.h",
+      "side_panel/customize_chrome/customize_chrome_tab_helper.cc",
+      "side_panel/customize_chrome/customize_chrome_tab_helper.h",
       "views/send_tab_to_self/send_tab_to_self_bubble.cc",
       "views/send_tab_to_self/send_tab_to_self_bubble_controller.cc",
       "views/send_tab_to_self/send_tab_to_self_bubble_controller.h",
@@ -4840,6 +4845,9 @@
       "views/shopping_bubble/shopping_prompt_impl.h",
       "views/side_panel/bookmarks/bookmarks_side_panel_coordinator.cc",
       "views/side_panel/bookmarks/bookmarks_side_panel_coordinator.h",
+      "views/side_panel/customize_chrome/customize_chrome_side_panel_controller.cc",
+      "views/side_panel/customize_chrome/customize_chrome_side_panel_controller.h",
+      "views/side_panel/customize_chrome/customize_chrome_side_panel_controller_utils.cc",
       "views/side_panel/feed/feed_side_panel_coordinator.cc",
       "views/side_panel/feed/feed_side_panel_coordinator.h",
       "views/side_panel/history_clusters/history_clusters_side_panel_coordinator.cc",
diff --git a/chrome/browser/ui/DEPS b/chrome/browser/ui/DEPS
index 6a1fa12..9154ea77 100644
--- a/chrome/browser/ui/DEPS
+++ b/chrome/browser/ui/DEPS
@@ -19,6 +19,7 @@
   "+components/translate/content/android",
   "+components/user_education/common",
   "+components/user_education/test",
+  "+components/user_education/webui",
   "+services/content/public",
   "+services/device/public/mojom",
   "+components/user_notes",
diff --git a/chrome/browser/ui/ash/projector/projector_soda_installation_controller.cc b/chrome/browser/ui/ash/projector/projector_soda_installation_controller.cc
index efa9434..45e4addc 100644
--- a/chrome/browser/ui/ash/projector/projector_soda_installation_controller.cc
+++ b/chrome/browser/ui/ash/projector/projector_soda_installation_controller.cc
@@ -101,8 +101,19 @@
     return;
   }
 
-  projector_controller_->OnSpeechRecognitionAvailabilityChanged(
-      ash::SpeechRecognitionAvailability::kSodaInstallationError);
+  switch (error_code) {
+    case speech::SodaInstaller::ErrorCode::kUnspecifiedError:
+      projector_controller_->OnSpeechRecognitionAvailabilityChanged(
+          ash::SpeechRecognitionAvailability::
+              kSodaInstallationErrorUnspecified);
+      break;
+    case speech::SodaInstaller::ErrorCode::kNeedsReboot:
+      projector_controller_->OnSpeechRecognitionAvailabilityChanged(
+          ash::SpeechRecognitionAvailability::
+              kSodaInstallationErrorNeedsReboot);
+      break;
+  }
+
   app_client_->OnSodaInstallError();
 }
 
diff --git a/chrome/browser/ui/ash/projector/projector_soda_installation_controller_unittest.cc b/chrome/browser/ui/ash/projector/projector_soda_installation_controller_unittest.cc
index 4ab3e9c..fa0eacc7 100644
--- a/chrome/browser/ui/ash/projector/projector_soda_installation_controller_unittest.cc
+++ b/chrome/browser/ui/ash/projector/projector_soda_installation_controller_unittest.cc
@@ -165,26 +165,40 @@
   speech::SodaInstaller::GetInstance()->NotifySodaProgressForTesting(50);
 }
 
-TEST_F(ProjectorSodaInstallationControllerTest, OnSodaInstallError) {
-  NewScreencastPrecondition sodaInstallError(
+TEST_F(ProjectorSodaInstallationControllerTest, OnSodaInstallErrorUnspecified) {
+  NewScreencastPrecondition soda_install_error(
       NewScreencastPreconditionState::kDisabled,
-      {NewScreencastPreconditionReason::kSodaInstallationError});
+      {NewScreencastPreconditionReason::kSodaInstallationErrorUnspecified});
   EXPECT_CALL(app_client(), OnSodaInstallError());
   EXPECT_CALL(projector_client(),
-              OnNewScreencastPreconditionChanged(sodaInstallError));
-  speech::SodaInstaller::GetInstance()->NotifySodaErrorForTesting();
+              OnNewScreencastPreconditionChanged(soda_install_error));
+  speech::SodaInstaller::GetInstance()->NotifySodaErrorForTesting(
+      en_us(), speech::SodaInstaller::ErrorCode::kUnspecifiedError);
   EXPECT_EQ(projector_controller().GetNewScreencastPrecondition(),
-            sodaInstallError);
+            soda_install_error);
+}
+
+TEST_F(ProjectorSodaInstallationControllerTest, OnSodaInstallErrorNeedsReboot) {
+  NewScreencastPrecondition soda_install_error(
+      NewScreencastPreconditionState::kDisabled,
+      {NewScreencastPreconditionReason::kSodaInstallationErrorNeedsReboot});
+  EXPECT_CALL(app_client(), OnSodaInstallError());
+  EXPECT_CALL(projector_client(),
+              OnNewScreencastPreconditionChanged(soda_install_error));
+  speech::SodaInstaller::GetInstance()->NotifySodaErrorForTesting(
+      en_us(), speech::SodaInstaller::ErrorCode::kNeedsReboot);
+  EXPECT_EQ(projector_controller().GetNewScreencastPrecondition(),
+            soda_install_error);
 }
 
 // Prevents a regression to b/228899579.
 TEST_F(ProjectorSodaInstallationControllerTest,
        OnLocaleChangedBeforeSodaInstall) {
-  NewScreencastPrecondition localeNotSupported(
+  NewScreencastPrecondition locale_not_supported(
       NewScreencastPreconditionState::kDisabled,
       {NewScreencastPreconditionReason::kUserLocaleNotSupported});
   EXPECT_CALL(projector_client(),
-              OnNewScreencastPreconditionChanged(localeNotSupported));
+              OnNewScreencastPreconditionChanged(locale_not_supported));
 
   // The locale changes to the user's preferences after sign in but before SODA
   // finishes installing.
@@ -195,7 +209,7 @@
   EXPECT_FALSE(soda_installation_controller()->IsSodaAvailable(fr_fr()));
 
   EXPECT_EQ(projector_controller().GetNewScreencastPrecondition(),
-            localeNotSupported);
+            locale_not_supported);
 }
 
 // Prevents a regression to b/227626179.
@@ -212,19 +226,19 @@
   EXPECT_TRUE(soda_installation_controller()->IsSodaAvailable(en_us()));
   EXPECT_FALSE(soda_installation_controller()->IsSodaAvailable(fr_fr()));
 
-  NewScreencastPrecondition localeNotSupported(
+  NewScreencastPrecondition locale_not_supported(
       NewScreencastPreconditionState::kDisabled,
       {NewScreencastPreconditionReason::kUserLocaleNotSupported});
 
   EXPECT_CALL(projector_client(),
-              OnNewScreencastPreconditionChanged(localeNotSupported));
+              OnNewScreencastPreconditionChanged(locale_not_supported));
 
   // The locale changes to the user's preferences after sign in but after SODA
   // finishes installing.
   SetLocale(kNonEnglishLocale);
 
   EXPECT_EQ(projector_controller().GetNewScreencastPrecondition(),
-            localeNotSupported);
+            locale_not_supported);
 }
 
 }  // namespace ash
diff --git a/chrome/browser/ui/autofill/autofill_popup_controller_impl.cc b/chrome/browser/ui/autofill/autofill_popup_controller_impl.cc
index 2dac331..0424a9d 100644
--- a/chrome/browser/ui/autofill/autofill_popup_controller_impl.cc
+++ b/chrome/browser/ui/autofill/autofill_popup_controller_impl.cc
@@ -98,10 +98,6 @@
     const std::vector<Suggestion>& suggestions,
     bool autoselect_first_suggestion,
     PopupType popup_type) {
-  // TODO(crbug.com/1341374, crbug.com/1277218): Why can `this` be deleted
-  // synchronously?
-  WeakPtr<AutofillPopupControllerImpl> weak_this = GetWeakPtr();
-
   if (IsMouseLocked()) {
     Hide(PopupHidingReason::kMouseLocked);
     return;
@@ -129,26 +125,16 @@
         ->UpdateSourceAvailability(FillingSource::AUTOFILL,
                                    !suggestions.empty());
 #endif
-    view_->Show();
-    // TODO(crbug.com/1055981): `this` can be destroyed synchronously at this
-    // point.
-    if (!weak_this || !view_)
+    if (!view_.Call(&AutofillPopupView::Show))
       return;
 
     // We only fire the event when a new popup shows. We do not fire the
     // event when suggestions changed.
     FireControlsChangedEvent(true);
 
-    if (autoselect_first_suggestion) {
-      // TODO(crbug.com/1276850, crbug.com/1277218): Replace with
-      // SetSelectedLine().
-      SetSelectedLineHelper(0);
-    }
+    if (autoselect_first_suggestion)
+      SetSelectedLine(0);
   }
-  // TODO(crbug.com/1200766, crbug.com/1276850, crbug.com/1277218): `this` can
-  // be destroyed synchronously at this point.
-  if (!weak_this)
-    return;
 
   absl::visit(
       [&](auto* driver) {
@@ -159,7 +145,7 @@
                const content::NativeWebKeyboardEvent& event) {
               return weak_this && weak_this->HandleKeyPressEvent(event);
             },
-            weak_this));
+            GetWeakPtr()));
       },
       GetDriver());
 
@@ -244,17 +230,12 @@
   }
   AutofillMetrics::LogAutofillPopupHidingReason(reason);
   HideViewAndDie();
-  // No code below this line!
-  // |HideViewAndDie()| destroys |this|, so it should be the last line.
 }
 
 void AutofillPopupControllerImpl::ViewDestroyed() {
   // The view has already been destroyed so clear the reference to it.
   view_ = nullptr;
-
   Hide(PopupHidingReason::kViewDestroyed);
-  // No code below this line!
-  // |Hide()| destroys |this|, so it should be the last line.
 }
 
 bool AutofillPopupControllerImpl::HandleKeyPressEvent(
@@ -274,10 +255,7 @@
     case ui::VKEY_PRIOR:  // Page up.
       // Set no line and then select the next line in case the first line is not
       // selectable.
-      // TODO(crbug.com/1276850,crbug.com/1277218): Replace with
-      // SetSelectedLine().
-      if (SetSelectedLineHelper(absl::nullopt) != SelfStatus::kAlive)
-        return true;
+      SetSelectedLine(absl::nullopt);
       SelectNextLine();
       return true;
     case ui::VKEY_NEXT:  // Page down.
@@ -319,7 +297,7 @@
 #endif
 
   // Platform-specific draw call.
-  view_->OnSuggestionsChanged();
+  std::ignore = view_.Call(&AutofillPopupView::OnSuggestionsChanged);
 }
 
 void AutofillPopupControllerImpl::SelectionCleared() {
@@ -452,21 +430,13 @@
 
 void AutofillPopupControllerImpl::SetSelectedLine(
     absl::optional<int> selected_line) {
-  SetSelectedLineHelper(selected_line);
-}
-
-// TODO(crbug.com/1276850,crbug.com/1277218): Remove function in favour of
-// SetSelectedLine().
-AutofillPopupControllerImpl::SelfStatus
-AutofillPopupControllerImpl::SetSelectedLineHelper(
-    absl::optional<int> selected_line) {
   if (IsMouseLocked()) {
     Hide(PopupHidingReason::kMouseLocked);
-    return SelfStatus::kDestroyed;
+    return;
   }
 
   if (selected_line_ == selected_line)
-    return SelfStatus::kAlive;
+    return;
 
   if (selected_line) {
     DCHECK_LT(*selected_line, GetLineCount());
@@ -474,9 +444,10 @@
       selected_line = absl::nullopt;
   }
 
-  auto previous_selected_line(selected_line_);
+  absl::optional<int> previous_selected_line = selected_line_;
   selected_line_ = selected_line;
-  view_->OnSelectedRowChanged(previous_selected_line, selected_line_);
+  std::ignore = view_.Call(&AutofillPopupView::OnSelectedRowChanged,
+                           previous_selected_line, selected_line_);
 
   if (selected_line_) {
     const Suggestion& suggestion = suggestions_[*selected_line_];
@@ -486,7 +457,6 @@
   } else {
     delegate_->ClearPreviewedForm();
   }
-  return SelfStatus::kAlive;
 }
 
 void AutofillPopupControllerImpl::SelectNextLine() {
@@ -501,8 +471,7 @@
   if (new_selected_line >= GetLineCount())
     new_selected_line = 0;
 
-  // TODO(crbug.com/1276850,crbug.com/1277218): Replace with SetSelectedLine().
-  SetSelectedLineHelper(new_selected_line);
+  SetSelectedLine(new_selected_line);
 }
 
 void AutofillPopupControllerImpl::SelectPreviousLine() {
@@ -517,8 +486,7 @@
   if (new_selected_line < 0)
     new_selected_line = GetLineCount() - 1;
 
-  // TODO(crbug.com/1276850,crbug.com/1277218): Replace with SetSelectedLine().
-  SetSelectedLineHelper(new_selected_line);
+  SetSelectedLine(new_selected_line);
 }
 
 bool AutofillPopupControllerImpl::RemoveSelectedLine() {
@@ -598,7 +566,8 @@
   if (view_) {
     // We need to fire the event while view is not deleted yet.
     FireControlsChangedEvent(false);
-    view_->Hide();  // Deletes |view_|.
+    // Deletes the pointer wrapped in `view_`.
+    std::ignore = view_.Call(&AutofillPopupView::Hide);
     view_ = nullptr;
   }
 
@@ -643,7 +612,6 @@
 void AutofillPopupControllerImpl::FireControlsChangedEvent(bool is_show) {
   if (!accessibility_state_utils::IsScreenReaderEnabled())
     return;
-  DCHECK(view_);
 
   // Retrieve the ax tree id associated with the current web contents.
   ui::AXTreeID tree_id = absl::visit(
@@ -668,14 +636,15 @@
   // Now get the target node from its tree ID and node ID.
   ui::AXPlatformNode* target_node =
       root_platform_node_delegate->GetFromTreeIDAndNodeID(tree_id, node_id);
-  absl::optional<int32_t> popup_ax_id = view_->GetAxUniqueId();
-  if (!target_node || !popup_ax_id)
+  absl::optional<absl::optional<int32_t>> popup_ax_id =
+      view_.Call(&AutofillPopupView::GetAxUniqueId);
+  if (!target_node || !popup_ax_id || !*popup_ax_id)
     return;
 
   // All the conditions are valid, raise the accessibility event and set global
   // popup ax unique id.
   if (is_show)
-    ui::SetActivePopupAxUniqueId(popup_ax_id);
+    ui::SetActivePopupAxUniqueId(*popup_ax_id);
   else
     ui::ClearActivePopupAxUniqueId();
 
diff --git a/chrome/browser/ui/autofill/autofill_popup_controller_impl.h b/chrome/browser/ui/autofill/autofill_popup_controller_impl.h
index b86dd56..295a104 100644
--- a/chrome/browser/ui/autofill/autofill_popup_controller_impl.h
+++ b/chrome/browser/ui/autofill/autofill_popup_controller_impl.h
@@ -8,9 +8,11 @@
 #include <stddef.h>
 
 #include <string>
+#include <type_traits>
 #include <vector>
 
 #include "base/containers/span.h"
+#include "base/functional/invoke.h"
 #include "base/gtest_prod_util.h"
 #include "base/i18n/rtl.h"
 #include "base/memory/raw_ptr.h"
@@ -153,8 +155,6 @@
   // without showing the popup.
   void SetValues(const std::vector<Suggestion>& suggestions);
 
-  AutofillPopupView* view() { return view_; }
-
   base::WeakPtr<AutofillPopupControllerImpl> GetWeakPtr();
 
   // Raise an accessibility event to indicate the controls relation of the
@@ -170,8 +170,38 @@
   virtual void HideViewAndDie();
 
  private:
-  // TODO(crbug.com/1276850, crbug.com/1277218): Remove.
-  enum class SelfStatus { kDestroyed, kAlive };
+  // Wraps a raw AutofillPopupView pointer and checks for nullptr before any
+  // dereference. This is useful because AutofillPopupView may be synchronously
+  // deleted and set to nullptr by many calls in AutofillPopupControllerImpl,
+  // which easily leads to segfaults. See crbug.com/1277218 for the lifecycle
+  // management issue in AutofillPopupView.
+  class AutofillPopupViewPtr {
+   public:
+    AutofillPopupViewPtr() = default;
+    AutofillPopupViewPtr(nullptr_t) : ptr_(nullptr) {}
+    AutofillPopupViewPtr(AutofillPopupView* ptr) : ptr_(ptr) {}
+
+    explicit operator bool() const { return ptr_; }
+
+    // If `ptr_ == nullptr`, returns something that converts to false.
+    // If `ptr_ != nullptr`, calls `ptr_->func(args...)` and, if that returns a
+    // value, returns this value wrapped in an `absl::optional`, otherwise
+    // returns true.
+    template <typename Func, typename... Args>
+    [[nodiscard]] auto Call(Func&& func, Args... args) {
+      using ReturnType = decltype(base::invoke(func, *ptr_, args...));
+      if constexpr (!std::is_void_v<ReturnType>) {
+        return ptr_ ? absl::optional<ReturnType>(
+                          base::invoke(func, *ptr_, args...))
+                    : absl::optional<ReturnType>();
+      } else {
+        return ptr_ ? base::invoke(func, *ptr_, args...), true : false;
+      }
+    }
+
+   private:
+    raw_ptr<AutofillPopupView> ptr_ = nullptr;
+  };
 
   // The user has accepted the currently selected line. Returns whether there
   // was a selection to accept.
@@ -192,19 +222,13 @@
                 password_manager::ContentPasswordManagerDriver*>
   GetDriver();
 
-  // Conceptually an override of AutofillPopupController::SetSelectedLine(), but
-  // additionally returns a `SelfStatus` to indicate if |this| was destroyed by
-  // this call.
-  // TODO(crbug.com/1276850, crbug.com/1277218): Replace with SetSelectedLine().
-  SelfStatus SetSelectedLineHelper(absl::optional<int> selected_line);
-
   friend class AutofillPopupControllerUnitTest;
   friend class AutofillPopupControllerAccessibilityUnitTest;
   void SetViewForTesting(AutofillPopupView* view) { view_ = view; }
 
   PopupControllerCommon controller_common_;
   raw_ptr<content::WebContents> web_contents_;
-  raw_ptr<AutofillPopupView> view_ = nullptr;  // Weak reference.
+  AutofillPopupViewPtr view_ = nullptr;  // Weak reference.
   base::WeakPtr<AutofillPopupDelegate> delegate_;
 
   // If set to true, the popup will never be hidden because of stale data or if
diff --git a/chrome/browser/ui/autofill/payments/save_card_bubble_controller_impl_browsertest.cc b/chrome/browser/ui/autofill/payments/save_card_bubble_controller_impl_browsertest.cc
index 7944ed2..e6f926cca 100644
--- a/chrome/browser/ui/autofill/payments/save_card_bubble_controller_impl_browsertest.cc
+++ b/chrome/browser/ui/autofill/payments/save_card_bubble_controller_impl_browsertest.cc
@@ -50,10 +50,9 @@
         "     } ]"
         "  } ]"
         "}"));
-    base::DictionaryValue* dictionary;
-    value->GetAsDictionary(&dictionary);
+    EXPECT_TRUE(value->is_dict());
     LegalMessageLines legal_message_lines;
-    LegalMessageLine::Parse(*dictionary, &legal_message_lines,
+    LegalMessageLine::Parse(*value, &legal_message_lines,
                             /*escape_apostrophes=*/true);
     return legal_message_lines;
   }
diff --git a/chrome/browser/ui/autofill/payments/save_card_bubble_controller_impl_unittest.cc b/chrome/browser/ui/autofill/payments/save_card_bubble_controller_impl_unittest.cc
index ce10412..167b86c8 100644
--- a/chrome/browser/ui/autofill/payments/save_card_bubble_controller_impl_unittest.cc
+++ b/chrome/browser/ui/autofill/payments/save_card_bubble_controller_impl_unittest.cc
@@ -110,10 +110,9 @@
           AutofillClient::SaveCreditCardOptions().with_show_prompt()) {
     absl::optional<base::Value> value(base::JSONReader::Read(message_json));
     ASSERT_TRUE(value);
-    base::DictionaryValue* dictionary;
-    ASSERT_TRUE(value->GetAsDictionary(&dictionary));
+    ASSERT_TRUE(value->is_dict());
     LegalMessageLines legal_message_lines;
-    LegalMessageLine::Parse(*dictionary, &legal_message_lines,
+    LegalMessageLine::Parse(*value, &legal_message_lines,
                             /*escape_apostrophes=*/true);
     controller()->OfferUploadSave(CreditCard(), legal_message_lines, options,
                                   base::BindOnce(&UploadSaveCardCallback));
diff --git a/chrome/browser/ui/browser_element_identifiers.cc b/chrome/browser/ui/browser_element_identifiers.cc
index 798cc53..759cf58 100644
--- a/chrome/browser/ui/browser_element_identifiers.cc
+++ b/chrome/browser/ui/browser_element_identifiers.cc
@@ -7,12 +7,14 @@
 #include "ui/base/interaction/element_identifier.h"
 #include "ui/base/interaction/element_tracker.h"
 
+// Please keep this list alphabetized.
 DEFINE_ELEMENT_IDENTIFIER_VALUE(kAppMenuButtonElementId);
 DEFINE_ELEMENT_IDENTIFIER_VALUE(kAppUninstallDialogOkButtonId);
 DEFINE_ELEMENT_IDENTIFIER_VALUE(kAutofillCreditCardSuggestionEntryElementId);
 DEFINE_ELEMENT_IDENTIFIER_VALUE(kAvatarButtonElementId);
 DEFINE_ELEMENT_IDENTIFIER_VALUE(kBookmarkStarViewElementId);
 DEFINE_ELEMENT_IDENTIFIER_VALUE(kInstallPwaElementId);
+DEFINE_ELEMENT_IDENTIFIER_VALUE(kIntentChipElementId);
 DEFINE_ELEMENT_IDENTIFIER_VALUE(kLocationIconElementId);
 DEFINE_ELEMENT_IDENTIFIER_VALUE(kMediaButtonElementId);
 DEFINE_ELEMENT_IDENTIFIER_VALUE(kOmniboxElementId);
@@ -31,6 +33,6 @@
 DEFINE_ELEMENT_IDENTIFIER_VALUE(kTabStripElementId);
 DEFINE_ELEMENT_IDENTIFIER_VALUE(kTabStripRegionElementId);
 DEFINE_ELEMENT_IDENTIFIER_VALUE(kTopContainerElementId);
-DEFINE_ELEMENT_IDENTIFIER_VALUE(kIntentChipElementId);
+DEFINE_ELEMENT_IDENTIFIER_VALUE(kWebUIIPHDemoElementIdentifier);
 
 DEFINE_CUSTOM_ELEMENT_EVENT_TYPE(kTabGroupedCustomEventId);
diff --git a/chrome/browser/ui/browser_element_identifiers.h b/chrome/browser/ui/browser_element_identifiers.h
index 6a8d99a5..7b814ae 100644
--- a/chrome/browser/ui/browser_element_identifiers.h
+++ b/chrome/browser/ui/browser_element_identifiers.h
@@ -16,12 +16,14 @@
 #include "ui/base/interaction/element_tracker.h"
 
 // These should gradually replace values in view_ids.h.
+// Please keep this list alphabetized.
 DECLARE_ELEMENT_IDENTIFIER_VALUE(kAppMenuButtonElementId);
 DECLARE_ELEMENT_IDENTIFIER_VALUE(kAppUninstallDialogOkButtonId);
 DECLARE_ELEMENT_IDENTIFIER_VALUE(kAutofillCreditCardSuggestionEntryElementId);
 DECLARE_ELEMENT_IDENTIFIER_VALUE(kAvatarButtonElementId);
 DECLARE_ELEMENT_IDENTIFIER_VALUE(kBookmarkStarViewElementId);
 DECLARE_ELEMENT_IDENTIFIER_VALUE(kInstallPwaElementId);
+DECLARE_ELEMENT_IDENTIFIER_VALUE(kIntentChipElementId);
 DECLARE_ELEMENT_IDENTIFIER_VALUE(kLocationIconElementId);
 DECLARE_ELEMENT_IDENTIFIER_VALUE(kMediaButtonElementId);
 DECLARE_ELEMENT_IDENTIFIER_VALUE(kOmniboxElementId);
@@ -40,7 +42,7 @@
 DECLARE_ELEMENT_IDENTIFIER_VALUE(kTabStripElementId);
 DECLARE_ELEMENT_IDENTIFIER_VALUE(kTabStripRegionElementId);
 DECLARE_ELEMENT_IDENTIFIER_VALUE(kTopContainerElementId);
-DECLARE_ELEMENT_IDENTIFIER_VALUE(kIntentChipElementId);
+DECLARE_ELEMENT_IDENTIFIER_VALUE(kWebUIIPHDemoElementIdentifier);
 
 DECLARE_CUSTOM_ELEMENT_EVENT_TYPE(kTabGroupedCustomEventId);
 
diff --git a/chrome/browser/ui/side_panel/customize_chrome/customize_chrome_side_panel_controller_utils.h b/chrome/browser/ui/side_panel/customize_chrome/customize_chrome_side_panel_controller_utils.h
new file mode 100644
index 0000000..2d0678a
--- /dev/null
+++ b/chrome/browser/ui/side_panel/customize_chrome/customize_chrome_side_panel_controller_utils.h
@@ -0,0 +1,14 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_UI_SIDE_PANEL_CUSTOMIZE_CHROME_CUSTOMIZE_CHROME_SIDE_PANEL_CONTROLLER_UTILS_H_
+#define CHROME_BROWSER_UI_SIDE_PANEL_CUSTOMIZE_CHROME_CUSTOMIZE_CHROME_SIDE_PANEL_CONTROLLER_UTILS_H_
+
+#include "chrome/browser/ui/side_panel/customize_chrome/customize_chrome_tab_helper.h"
+
+namespace customize_chrome {
+std::unique_ptr<CustomizeChromeTabHelper::Delegate> CreateDelegate();
+}  // namespace customize_chrome
+
+#endif  // CHROME_BROWSER_UI_SIDE_PANEL_CUSTOMIZE_CHROME_CUSTOMIZE_CHROME_SIDE_PANEL_CONTROLLER_UTLS_H_
diff --git a/chrome/browser/ui/side_panel/customize_chrome/customize_chrome_tab_helper.cc b/chrome/browser/ui/side_panel/customize_chrome/customize_chrome_tab_helper.cc
new file mode 100644
index 0000000..2952863
--- /dev/null
+++ b/chrome/browser/ui/side_panel/customize_chrome/customize_chrome_tab_helper.cc
@@ -0,0 +1,26 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/ui/side_panel/customize_chrome/customize_chrome_tab_helper.h"
+
+#include "chrome/browser/ui/side_panel/customize_chrome/customize_chrome_side_panel_controller_utils.h"
+
+CustomizeChromeTabHelper::~CustomizeChromeTabHelper() = default;
+
+void CustomizeChromeTabHelper::CreateAndRegisterEntry() {
+  DCHECK(delegate_);
+  delegate_->CreateAndRegisterEntry(&WebContentsUserData::GetWebContents());
+}
+
+void CustomizeChromeTabHelper::DeregisterEntry() {
+  DCHECK(delegate_);
+  delegate_->DeregisterEntry(&WebContentsUserData::GetWebContents());
+}
+
+CustomizeChromeTabHelper::CustomizeChromeTabHelper(
+    content::WebContents* web_contents)
+    : content::WebContentsUserData<CustomizeChromeTabHelper>(*web_contents),
+      delegate_(customize_chrome::CreateDelegate()) {}
+
+WEB_CONTENTS_USER_DATA_KEY_IMPL(CustomizeChromeTabHelper);
diff --git a/chrome/browser/ui/side_panel/customize_chrome/customize_chrome_tab_helper.h b/chrome/browser/ui/side_panel/customize_chrome/customize_chrome_tab_helper.h
new file mode 100644
index 0000000..328b567
--- /dev/null
+++ b/chrome/browser/ui/side_panel/customize_chrome/customize_chrome_tab_helper.h
@@ -0,0 +1,49 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_UI_SIDE_PANEL_CUSTOMIZE_CHROME_CUSTOMIZE_CHROME_TAB_HELPER_H_
+#define CHROME_BROWSER_UI_SIDE_PANEL_CUSTOMIZE_CHROME_CUSTOMIZE_CHROME_TAB_HELPER_H_
+
+#include "content/public/browser/web_contents_user_data.h"
+
+namespace content {
+class WebContents;
+}  // namespace content
+
+// An observer of WebContents that facilitates the logic for the customize
+// chrome side panel. This per-tab class also owns the
+// CustomizeChromeSidePanelController.
+class CustomizeChromeTabHelper
+    : public content::WebContentsUserData<CustomizeChromeTabHelper> {
+ public:
+  // This class delegates the responsibility for registering and deregistering
+  // the Customize Chrome side panel.
+  class Delegate {
+   public:
+    virtual void CreateAndRegisterEntry(content::WebContents* web_contents) = 0;
+    virtual void DeregisterEntry(content::WebContents* web_contents) = 0;
+    virtual ~Delegate() = default;
+  };
+
+  CustomizeChromeTabHelper(const CustomizeChromeTabHelper&) = delete;
+  CustomizeChromeTabHelper& operator=(const CustomizeChromeTabHelper&) = delete;
+  ~CustomizeChromeTabHelper() override;
+
+  // Creates a WebUISidePanelView for Customize Chrome and registers
+  // the customize chrome side panel entry.
+  void CreateAndRegisterEntry();
+
+  // Deregisters the customize chrome side panel entry.
+  void DeregisterEntry();
+
+ private:
+  friend class content::WebContentsUserData<CustomizeChromeTabHelper>;
+  explicit CustomizeChromeTabHelper(content::WebContents* web_contents);
+
+  std::unique_ptr<Delegate> delegate_;
+
+  WEB_CONTENTS_USER_DATA_KEY_DECL();
+};
+
+#endif  // CHROME_BROWSER_UI_SIDE_PANEL_CUSTOMIZE_CHROME_CUSTOMIZE_CHROME_TAB_HELPER_H_
diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc
index 7dee9f6..fdcb0eb 100644
--- a/chrome/browser/ui/tab_helpers.cc
+++ b/chrome/browser/ui/tab_helpers.cc
@@ -133,6 +133,7 @@
 #include "components/safe_browsing/content/browser/safe_browsing_navigation_observer.h"
 #include "components/safe_browsing/content/browser/safe_browsing_tab_observer.h"
 #include "components/safe_browsing/core/common/features.h"
+#include "components/search/ntp_features.h"
 #include "components/segmentation_platform/content/segmentation_platform_tab_helper.h"
 #include "components/site_engagement/content/site_engagement_helper.h"
 #include "components/site_engagement/content/site_engagement_service.h"
@@ -177,6 +178,10 @@
 #include "components/zoom/zoom_controller.h"
 #endif  // BUILDFLAG(IS_ANDROID)
 
+#if !BUILDFLAG(IS_ANDROID)
+#include "chrome/browser/ui/side_panel/customize_chrome/customize_chrome_tab_helper.h"
+#endif
+
 #if defined(TOOLKIT_VIEWS)
 #include "chrome/browser/ui/side_search/side_search_tab_contents_helper.h"
 #include "chrome/browser/ui/side_search/side_search_utils.h"
@@ -567,6 +572,11 @@
     SideSearchTabContentsHelper::CreateForWebContents(web_contents);
 #endif
 
+#if !BUILDFLAG(IS_ANDROID)
+  if (base::FeatureList::IsEnabled(ntp_features::kCustomizeChromeSidePanel))
+    CustomizeChromeTabHelper::CreateForWebContents(web_contents);
+#endif
+
     // --- Section 3: Feature tab helpers behind BUILDFLAGs ---
     // NOT for "if enabled"; put those in section 1.
 
diff --git a/chrome/browser/ui/tabs/tab_menu_model.cc b/chrome/browser/ui/tabs/tab_menu_model.cc
index b78207a..8d55755 100644
--- a/chrome/browser/ui/tabs/tab_menu_model.cc
+++ b/chrome/browser/ui/tabs/tab_menu_model.cc
@@ -136,7 +136,7 @@
     AddItemWithIcon(
         TabStripModel::CommandSendTabToSelf,
         l10n_util::GetStringUTF16(IDS_CONTEXT_MENU_SEND_TAB_TO_SELF),
-        ui::ImageModel::FromVectorIcon(kSendTabToSelfIcon));
+        ui::ImageModel::FromVectorIcon(kLaptopAndSmartphoneIcon));
 #endif
   }
 
diff --git a/chrome/browser/ui/views/autofill/autofill_popup_view_native_views.cc b/chrome/browser/ui/views/autofill/autofill_popup_view_native_views.cc
index 6cd4e211..7144aff 100644
--- a/chrome/browser/ui/views/autofill/autofill_popup_view_native_views.cc
+++ b/chrome/browser/ui/views/autofill/autofill_popup_view_native_views.cc
@@ -209,8 +209,8 @@
   if (icon_str == "empty")
     return ImageViewFromVectorIcon(omnibox::kHttpIcon);
 
-  if (icon_str == "fingerprint")
-    return ImageViewFromVectorIcon(kFingerprintIcon);
+  if (icon_str == "device")
+    return ImageViewFromVectorIcon(kLaptopAndSmartphoneIcon);
 
   if (icon_str == "google") {
 #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
diff --git a/chrome/browser/ui/views/frame/webui_tab_strip_interactive_uitest.cc b/chrome/browser/ui/views/frame/webui_tab_strip_interactive_uitest.cc
index f47c2f1..66aa6342 100644
--- a/chrome/browser/ui/views/frame/webui_tab_strip_interactive_uitest.cc
+++ b/chrome/browser/ui/views/frame/webui_tab_strip_interactive_uitest.cc
@@ -231,8 +231,9 @@
 // This sequence of events would crash without the associated bugfix. More
 // detail is provided in the actual test sequence.
 // TODO(crbug.com/1352040): Fix consistent failures.
-#if BUILDFLAG(IS_LINUX) && \
-    (defined(THREAD_SANITIZER) || defined(THREAD_SANITIZER))
+#if BUILDFLAG(IS_LINUX) &&                                      \
+    (defined(ADDRESS_SANITIZER) || defined(MEMORY_SANITIZER) || \
+     defined(THREAD_SANITIZER))
 #define MAYBE_CloseTabDuringDrag DISABLED_CloseTabDuringDrag
 #else
 #define MAYBE_CloseTabDuringDrag CloseTabDuringDrag
diff --git a/chrome/browser/ui/views/omnibox/omnibox_view_views.cc b/chrome/browser/ui/views/omnibox/omnibox_view_views.cc
index 6966e21..dbdac4e 100644
--- a/chrome/browser/ui/views/omnibox/omnibox_view_views.cc
+++ b/chrome/browser/ui/views/omnibox/omnibox_view_views.cc
@@ -1929,8 +1929,8 @@
       index, IDC_SEND_TAB_TO_SELF,
       l10n_util::GetStringUTF16(IDS_CONTEXT_MENU_SEND_TAB_TO_SELF));
 #if !BUILDFLAG(IS_MAC)
-  menu_contents->SetIcon(index,
-                         ui::ImageModel::FromVectorIcon(kSendTabToSelfIcon));
+  menu_contents->SetIcon(
+      index, ui::ImageModel::FromVectorIcon(kLaptopAndSmartphoneIcon));
 #endif
   menu_contents->InsertSeparatorAt(++index, ui::NORMAL_SEPARATOR);
 }
diff --git a/chrome/browser/ui/views/page_info/about_this_site_side_panel_view.cc b/chrome/browser/ui/views/page_info/about_this_site_side_panel_view.cc
index 29b4be5..3caf100 100644
--- a/chrome/browser/ui/views/page_info/about_this_site_side_panel_view.cc
+++ b/chrome/browser/ui/views/page_info/about_this_site_side_panel_view.cc
@@ -4,19 +4,25 @@
 
 #include "chrome/browser/ui/views/page_info/about_this_site_side_panel_view.h"
 
+#include "base/strings/string_piece_forward.h"
+#include "base/threading/thread_task_runner_handle.h"
 #include "chrome/browser/page_info/about_this_site_side_panel_throttle.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/color/chrome_color_id.h"
 #include "chrome/browser/ui/page_info/about_this_site_side_panel.h"
 #include "chrome/browser/ui/views/frame/browser_view.h"
+#include "components/page_info/core/about_this_site_service.h"
 #include "content/public/browser/browser_context.h"
+#include "content/public/browser/browser_thread.h"
 #include "content/public/browser/navigation_handle.h"
 #include "content/public/browser/page_navigator.h"
 #include "content/public/browser/web_contents.h"
 #include "content/public/common/referrer.h"
+#include "net/base/url_util.h"
 #include "ui/base/window_open_disposition.h"
 #include "ui/views/layout/flex_layout_types.h"
 #include "ui/views/layout/flex_layout_view.h"
+#include "url/origin.h"
 
 namespace {
 std::unique_ptr<views::WebView> CreateWebView(
@@ -64,8 +70,7 @@
   web_contents->SetDelegate(this);
   web_contents->SetUserData(
       kAboutThisSiteWebContentsUserDataKey,
-      std::make_unique<AboutThisSiteWebContentsUserData>(base::BindRepeating(
-          &AboutThisSiteSidePanelView::OpenUrlInBrowser, AsWeakPtr())));
+      std::make_unique<AboutThisSiteWebContentsUserData>(AsWeakPtr()));
   Observe(web_contents);
 }
 
@@ -74,31 +79,51 @@
 }
 
 void AboutThisSiteSidePanelView::OpenUrl(const content::OpenURLParams& params) {
+  last_url_ = params.url;
   web_view_->GetWebContents()->GetController().LoadURLWithParams(
       content::NavigationController::LoadURLParams(params));
 }
 
+// This method is called when the WebContents wants to open a link in a new
+// tab. This delegate does not override AddNewContents(), so the webcontents
+// is not actually created. Instead it forwards the parameters to the real
+// browser.
+void AboutThisSiteSidePanelView::DidOpenRequestedURL(
+    content::WebContents* new_contents,
+    content::RenderFrameHost* source_render_frame_host,
+    const GURL& url,
+    const content::Referrer& referrer,
+    WindowOpenDisposition disposition,
+    ui::PageTransition transition,
+    bool started_from_context_menu,
+    bool renderer_initiated) {
+  content::OpenURLParams params(url, referrer, disposition, transition,
+                                renderer_initiated);
+  // If the navigation is initiated by the renderer process, we must set an
+  // initiator origin.
+  if (renderer_initiated)
+    params.initiator_origin = url::Origin::Create(url);
+
+  // We can't open a new tab while the observer is running because it might
+  // destroy this WebContents. Post as task instead.
+  base::ThreadTaskRunnerHandle::Get()->PostTask(
+      FROM_HERE, base::BindOnce(&AboutThisSiteSidePanelView::OpenUrlInBrowser,
+                                AsWeakPtr(), std::move(params)));
+}
+
+// This function is called when the user opens a link in a new tab or window
+// e.g. from the context menu or by middle-clicking on it. It forwards the
+// params to the main browser and does not create a WebContents in the
+// SidePanel.
 content::WebContents* AboutThisSiteSidePanelView::OpenURLFromTab(
     content::WebContents* source,
     const content::OpenURLParams& params) {
   // Redirect requests to open a new tab to the main browser. These come e.g.
   // from the context menu.
-  return outer_delegate()->OpenURLFromTab(source, params);
-}
-
-void AboutThisSiteSidePanelView::AddNewContents(
-    content::WebContents* source,
-    std::unique_ptr<content::WebContents> new_contents,
-    const GURL& target_url,
-    WindowOpenDisposition disposition,
-    const gfx::Rect& initial_rect,
-    bool user_gesture,
-    bool* was_blocked) {
-  // Redirect requests to add a webcontents to the main browser. These come e.g.
-  // from middle clicks on links.
-  outer_delegate()->AddNewContents(source, std::move(new_contents), target_url,
-                                   disposition, initial_rect, user_gesture,
-                                   was_blocked);
+  content::OpenURLParams new_params(params);
+  new_params.url = CleanUpQueryParams(params.url);
+  outer_delegate()->OpenURLFromTab(source, new_params);
+  return nullptr;
 }
 
 bool AboutThisSiteSidePanelView::HandleKeyboardEvent(
@@ -114,7 +139,28 @@
 
 void AboutThisSiteSidePanelView::OpenUrlInBrowser(
     const content::OpenURLParams& params) {
-  browser_view_->browser()->OpenURL(params);
+  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+  content::OpenURLParams new_params(params);
+  new_params.url = CleanUpQueryParams(params.url);
+  browser_view_->browser()->OpenURL(new_params);
+}
+
+bool AboutThisSiteSidePanelView::IsNavigationAllowed(const GURL& new_url,
+                                                     const GURL& old_url) {
+  // Only allow the initial navigation of the SidePanel to stay in the
+  // SidePanel. Other navigations will be moved to the main browser.
+  return new_url == last_url_;
+}
+
+GURL AboutThisSiteSidePanelView::CleanUpQueryParams(const GURL& url) {
+  // Override the ilrm=minimal parameter for navigations to a real tab.
+  if (url::IsSameOriginWith(url, last_url_) &&
+      url.query_piece().find(page_info::AboutThisSiteRenderModeParameterName) !=
+          base::StringPiece::npos) {
+    return net::AppendOrReplaceQueryParameter(
+        url, page_info::AboutThisSiteRenderModeParameterName, std::string());
+  }
+  return url;
 }
 
 void AboutThisSiteSidePanelView::SetContentVisible(bool visible) {
diff --git a/chrome/browser/ui/views/page_info/about_this_site_side_panel_view.h b/chrome/browser/ui/views/page_info/about_this_site_side_panel_view.h
index 2a33b81..ae9e2988 100644
--- a/chrome/browser/ui/views/page_info/about_this_site_side_panel_view.h
+++ b/chrome/browser/ui/views/page_info/about_this_site_side_panel_view.h
@@ -7,6 +7,7 @@
 
 #include "base/memory/raw_ptr.h"
 #include "base/memory/weak_ptr.h"
+#include "chrome/browser/page_info/about_this_site_side_panel_throttle.h"
 #include "content/public/browser/web_contents_delegate.h"
 #include "content/public/browser/web_contents_observer.h"
 #include "ui/views/layout/flex_layout_view.h"
@@ -27,6 +28,7 @@
     : public views::FlexLayoutView,
       public content::WebContentsObserver,
       public content::WebContentsDelegate,
+      public AboutThisSiteWebContentsUserData::Delegate,
       public base::SupportsWeakPtr<AboutThisSiteSidePanelView> {
  public:
   explicit AboutThisSiteSidePanelView(BrowserView* browser_view);
@@ -38,24 +40,29 @@
   void OpenUrl(const content::OpenURLParams& params);
 
  private:
-  // Opens a URL in a regular tab.
-  void OpenUrlInBrowser(const content::OpenURLParams& params);
+  // Remove parameters that shouldn't be passed to the main browser.
+  GURL CleanUpQueryParams(const GURL& url);
 
   // Shows / hides the page and the loading view to avoid showing
   // loading artifacts.
   void SetContentVisible(bool visible);
 
+  // AboutThisSiteWebContentsUserData::Delegate
+  void OpenUrlInBrowser(const content::OpenURLParams& params) override;
+  bool IsNavigationAllowed(const GURL& new_url, const GURL& old_url) override;
+
   // content::WebContentsObserver:
   void LoadProgressChanged(double progress) override;
+  void DidOpenRequestedURL(content::WebContents* new_contents,
+                           content::RenderFrameHost* source_render_frame_host,
+                           const GURL& url,
+                           const content::Referrer& referrer,
+                           WindowOpenDisposition disposition,
+                           ui::PageTransition transition,
+                           bool started_from_context_menu,
+                           bool renderer_initiated) override;
 
   // content::WebContentsDelegate:
-  void AddNewContents(content::WebContents* source,
-                      std::unique_ptr<content::WebContents> new_contents,
-                      const GURL& target_url,
-                      WindowOpenDisposition disposition,
-                      const gfx::Rect& initial_rect,
-                      bool user_gesture,
-                      bool* was_blocked) override;
   content::WebContents* OpenURLFromTab(
       content::WebContents* source,
       const content::OpenURLParams& params) override;
@@ -65,6 +72,7 @@
 
   content::WebContentsDelegate* outer_delegate();
 
+  GURL last_url_;
   raw_ptr<BrowserView> browser_view_;
   raw_ptr<views::WebView> loading_indicator_web_view_;
   raw_ptr<views::WebView> web_view_;
diff --git a/chrome/browser/ui/views/send_tab_to_self/send_tab_to_self_icon_view.cc b/chrome/browser/ui/views/send_tab_to_self/send_tab_to_self_icon_view.cc
index 6d55877..669f2f58 100644
--- a/chrome/browser/ui/views/send_tab_to_self/send_tab_to_self_icon_view.cc
+++ b/chrome/browser/ui/views/send_tab_to_self/send_tab_to_self_icon_view.cc
@@ -106,7 +106,7 @@
     PageActionIconView::ExecuteSource execute_source) {}
 
 const gfx::VectorIcon& SendTabToSelfIconView::GetVectorIcon() const {
-  return kSendTabToSelfIcon;
+  return kLaptopAndSmartphoneIcon;
 }
 
 std::u16string SendTabToSelfIconView::GetTextForTooltipAndAccessibleName()
diff --git a/chrome/browser/ui/views/send_tab_to_self/send_tab_to_self_toolbar_icon_view.cc b/chrome/browser/ui/views/send_tab_to_self/send_tab_to_self_toolbar_icon_view.cc
index dc25e3d..833dc67 100644
--- a/chrome/browser/ui/views/send_tab_to_self/send_tab_to_self_toolbar_icon_view.cc
+++ b/chrome/browser/ui/views/send_tab_to_self/send_tab_to_self_toolbar_icon_view.cc
@@ -25,7 +25,7 @@
 
 SendTabToSelfToolbarIconView::SendTabToSelfToolbarIconView(
     BrowserView* browser_view)
-    : ImageView(ui::ImageModel::FromVectorIcon(kSendTabToSelfIcon,
+    : ImageView(ui::ImageModel::FromVectorIcon(kLaptopAndSmartphoneIcon,
                                                ui::kColorIcon,
                                                gfx::kFaviconSize)),
       browser_(browser_view->browser()),
diff --git a/chrome/browser/ui/views/side_panel/customize_chrome/customize_chrome_side_panel_controller.cc b/chrome/browser/ui/views/side_panel/customize_chrome/customize_chrome_side_panel_controller.cc
new file mode 100644
index 0000000..513866b
--- /dev/null
+++ b/chrome/browser/ui/views/side_panel/customize_chrome/customize_chrome_side_panel_controller.cc
@@ -0,0 +1,65 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/ui/views/side_panel/customize_chrome/customize_chrome_side_panel_controller.h"
+
+#include "base/bind.h"
+#include "base/callback.h"
+#include "chrome/app/vector_icons/vector_icons.h"
+#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/ui/side_panel/customize_chrome/customize_chrome_tab_helper.h"
+#include "chrome/browser/ui/views/side_panel/side_panel_coordinator.h"
+#include "chrome/browser/ui/views/side_panel/side_panel_registry_observer.h"
+#include "chrome/browser/ui/views/side_panel/side_panel_web_ui_view.h"
+#include "chrome/browser/ui/webui/side_panel/customize_chrome/customize_chrome_ui.h"
+#include "chrome/common/webui_url_constants.h"
+#include "chrome/grit/generated_resources.h"
+#include "components/omnibox/browser/vector_icons.h"
+#include "ui/base/l10n/l10n_util.h"
+
+CustomizeChromeSidePanelController::CustomizeChromeSidePanelController() =
+    default;
+
+CustomizeChromeSidePanelController::~CustomizeChromeSidePanelController() =
+    default;
+
+void CustomizeChromeSidePanelController::CreateAndRegisterEntry(
+    content::WebContents* web_contents) {
+  auto* registry = SidePanelRegistry::Get(web_contents);
+
+  if (!registry)
+    return;
+
+  auto entry = std::make_unique<SidePanelEntry>(
+      SidePanelEntry::Id::kCustomizeChrome,
+      l10n_util::GetStringUTF16(IDS_SIDE_PANEL_CUSTOMIZE_CHROME_TITLE),
+      // Icon needs to be changed to customize chrome icon.
+      ui::ImageModel::FromVectorIcon(omnibox::kStarIcon, ui::kColorIcon),
+      base::BindRepeating(
+          &CustomizeChromeSidePanelController::CreateCustomizeChromeWebView,
+          base::Unretained(this), web_contents));
+  registry->Register(std::move(entry));
+}
+
+void CustomizeChromeSidePanelController::DeregisterEntry(
+    content::WebContents* web_contents) {
+  if (auto* registry = SidePanelRegistry::Get(web_contents))
+    registry->Deregister(SidePanelEntry::Id::kCustomizeChrome);
+}
+
+std::unique_ptr<views::View>
+CustomizeChromeSidePanelController::CreateCustomizeChromeWebView(
+    content::WebContents* web_contents) {
+  auto customize_chrome_web_view =
+      std::make_unique<SidePanelWebUIViewT<CustomizeChromeUI>>(
+          base::RepeatingClosure(), base::RepeatingClosure(),
+          std::make_unique<BubbleContentsWrapperT<CustomizeChromeUI>>(
+              GURL(chrome::kChromeUICustomizeChromeSidePanelURL),
+              Profile::FromBrowserContext(web_contents->GetBrowserContext()),
+              IDS_SIDE_PANEL_CUSTOMIZE_CHROME_TITLE,
+              /*webui_resizes_host=*/false,
+              /*esc_closes_ui=*/false));
+  customize_chrome_web_view->ShowUI();
+  return customize_chrome_web_view;
+}
diff --git a/chrome/browser/ui/views/side_panel/customize_chrome/customize_chrome_side_panel_controller.h b/chrome/browser/ui/views/side_panel/customize_chrome/customize_chrome_side_panel_controller.h
new file mode 100644
index 0000000..c9a97e3
--- /dev/null
+++ b/chrome/browser/ui/views/side_panel/customize_chrome/customize_chrome_side_panel_controller.h
@@ -0,0 +1,37 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_UI_VIEWS_SIDE_PANEL_CUSTOMIZE_CHROME_CUSTOMIZE_CHROME_SIDE_PANEL_CONTROLLER_H_
+#define CHROME_BROWSER_UI_VIEWS_SIDE_PANEL_CUSTOMIZE_CHROME_CUSTOMIZE_CHROME_SIDE_PANEL_CONTROLLER_H_
+
+#include "chrome/browser/ui/side_panel/customize_chrome/customize_chrome_tab_helper.h"
+#include "chrome/browser/ui/views/side_panel/side_panel_entry_observer.h"
+
+namespace content {
+class WebContents;
+}  // namespace content
+
+// Responsible for implementing logic to create and register/deregister
+// the side panel.
+class CustomizeChromeSidePanelController
+    : public CustomizeChromeTabHelper::Delegate {
+ public:
+  CustomizeChromeSidePanelController();
+  CustomizeChromeSidePanelController(
+      const CustomizeChromeSidePanelController&) = delete;
+  CustomizeChromeSidePanelController& operator=(
+      const CustomizeChromeSidePanelController&) = delete;
+  ~CustomizeChromeSidePanelController() override;
+
+  // CustomizeChromeTabHelper::Delegate
+  void CreateAndRegisterEntry(content::WebContents* web_contents) override;
+  void DeregisterEntry(content::WebContents* web_contents) override;
+
+ private:
+  // Creates view for side panel entry.
+  std::unique_ptr<views::View> CreateCustomizeChromeWebView(
+      content::WebContents* web_contents);
+};
+
+#endif  // CHROME_BROWSER_UI_VIEWS_SIDE_PANEL_CUSTOMIZE_CHROME_CUSTOMIZE_CHROME_SIDE_PANEL_CONTROLLER_H_
diff --git a/chrome/browser/ui/views/side_panel/customize_chrome/customize_chrome_side_panel_controller_unittest.cc b/chrome/browser/ui/views/side_panel/customize_chrome/customize_chrome_side_panel_controller_unittest.cc
new file mode 100644
index 0000000..d0e76c65
--- /dev/null
+++ b/chrome/browser/ui/views/side_panel/customize_chrome/customize_chrome_side_panel_controller_unittest.cc
@@ -0,0 +1,89 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/ui/views/side_panel/customize_chrome/customize_chrome_side_panel_controller.h"
+
+#include "base/test/scoped_feature_list.h"
+#include "chrome/browser/ui/ui_features.h"
+#include "chrome/browser/ui/views/side_panel/side_panel_registry.h"
+#include "chrome/test/base/testing_profile.h"
+#include "components/search/ntp_features.h"
+#include "content/public/test/browser_task_environment.h"
+#include "content/public/test/test_renderer_host.h"
+#include "content/public/test/web_contents_tester.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+class CustomizeChromeSidePanelControllerTest : public testing::Test {
+ public:
+  // testing::Test:
+  void SetUp() override {
+    testing::Test::SetUp();
+    scoped_feature_list_.InitWithFeatures(
+        {ntp_features::kCustomizeChromeSidePanel, features::kUnifiedSidePanel},
+        {});
+    web_contents_ =
+        content::WebContentsTester::CreateTestWebContents(&profile_, nullptr);
+  }
+
+ protected:
+  content::WebContents* get_web_contents() { return web_contents_.get(); }
+
+ private:
+  content::BrowserTaskEnvironment task_environment_;
+  content::RenderViewHostTestEnabler rvh_enabler_;
+  TestingProfile profile_;
+  std::unique_ptr<content::WebContents> web_contents_;
+  base::test::ScopedFeatureList scoped_feature_list_;
+};
+
+TEST_F(CustomizeChromeSidePanelControllerTest, RegisterCustomizeChromeEntry) {
+  // When CreateAndRegisterEntry() is called, the current tabs side
+  // panel registry should contain a kCustomizeChromeEntry.
+  CustomizeChromeSidePanelController side_panel_controller;
+  content::WebContents* web_contents = get_web_contents();
+  side_panel_controller.CreateAndRegisterEntry(web_contents);
+  auto* registry = SidePanelRegistry::Get(web_contents);
+  EXPECT_EQ(registry->GetEntryForId(SidePanelEntry::Id::kCustomizeChrome)->id(),
+            SidePanelEntry::Id::kCustomizeChrome);
+}
+
+TEST_F(CustomizeChromeSidePanelControllerTest, DeregisterCustomizeChromeEntry) {
+  // When Deregister() is called, there should be no side panel entry
+  // in the registry.
+  CustomizeChromeSidePanelController side_panel_controller;
+  content::WebContents* web_contents = get_web_contents();
+  side_panel_controller.CreateAndRegisterEntry(web_contents);
+  auto* registry = SidePanelRegistry::Get(web_contents);
+  EXPECT_EQ(registry->GetEntryForId(SidePanelEntry::Id::kCustomizeChrome)->id(),
+            SidePanelEntry::Id::kCustomizeChrome);
+  side_panel_controller.DeregisterEntry(web_contents);
+  EXPECT_EQ(registry->GetEntryForId(SidePanelEntry::Id::kCustomizeChrome),
+            nullptr);
+}
+
+TEST_F(CustomizeChromeSidePanelControllerTest, CreateAndRegisterMultipleTimes) {
+  // When CreateAndRegisterEntry() is called multiple times, only
+  // one entry should be added to the registry.
+  CustomizeChromeSidePanelController side_panel_controller;
+  content::WebContents* web_contents = get_web_contents();
+  side_panel_controller.CreateAndRegisterEntry(web_contents);
+  auto* registry = SidePanelRegistry::Get(web_contents);
+  EXPECT_EQ(registry->GetEntryForId(SidePanelEntry::Id::kCustomizeChrome)->id(),
+            SidePanelEntry::Id::kCustomizeChrome);
+  side_panel_controller.CreateAndRegisterEntry(web_contents);
+  EXPECT_EQ(registry->GetEntryForId(SidePanelEntry::Id::kCustomizeChrome)->id(),
+            SidePanelEntry::Id::kCustomizeChrome);
+  side_panel_controller.DeregisterEntry(web_contents);
+  EXPECT_EQ(registry->GetEntryForId(SidePanelEntry::Id::kCustomizeChrome),
+            nullptr);
+}
+
+TEST_F(CustomizeChromeSidePanelControllerTest,
+       DeregisterEmptyCustomizeChromeEntry) {
+  // When there is no customize chrome entry, calling deregister should
+  // not crash.
+  CustomizeChromeSidePanelController side_panel_controller;
+  content::WebContents* web_contents = get_web_contents();
+  side_panel_controller.DeregisterEntry(web_contents);
+}
diff --git a/chrome/browser/ui/views/side_panel/customize_chrome/customize_chrome_side_panel_controller_utils.cc b/chrome/browser/ui/views/side_panel/customize_chrome/customize_chrome_side_panel_controller_utils.cc
new file mode 100644
index 0000000..c1328126
--- /dev/null
+++ b/chrome/browser/ui/views/side_panel/customize_chrome/customize_chrome_side_panel_controller_utils.cc
@@ -0,0 +1,15 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/ui/side_panel/customize_chrome/customize_chrome_side_panel_controller_utils.h"
+
+#include "chrome/browser/ui/views/side_panel/customize_chrome/customize_chrome_side_panel_controller.h"
+
+namespace customize_chrome {
+
+std::unique_ptr<CustomizeChromeTabHelper::Delegate> CreateDelegate() {
+  return std::make_unique<CustomizeChromeSidePanelController>();
+}
+
+}  // namespace customize_chrome
diff --git a/chrome/browser/ui/views/side_panel/lens/lens_side_panel_coordinator_browsertest.cc b/chrome/browser/ui/views/side_panel/lens/lens_side_panel_coordinator_browsertest.cc
index 9cdecaaf..6b39dac 100644
--- a/chrome/browser/ui/views/side_panel/lens/lens_side_panel_coordinator_browsertest.cc
+++ b/chrome/browser/ui/views/side_panel/lens/lens_side_panel_coordinator_browsertest.cc
@@ -242,4 +242,39 @@
   EXPECT_FALSE(GetRightAlignedSidePanel()->GetVisible());
 }
 
+class SearchImageWithUnifiedSidePanelFooterDisabled
+    : public SearchImageWithUnifiedSidePanel {
+ protected:
+  void SetUp() override {
+    base::test::ScopedFeatureList features;
+    features.InitWithFeaturesAndParameters(
+        {{lens::features::kLensStandalone,
+          {{lens::features::kEnableSidePanelForLens.name, "true"}}},
+         {features::kUnifiedSidePanel, {{}}}},
+        {lens::features::kLensUnifiedSidePanelFooter});
+    InProcessBrowserTest::SetUp();
+  }
+};
+
+IN_PROC_BROWSER_TEST_F(SearchImageWithUnifiedSidePanelFooterDisabled,
+                       ImageSearchWithValidImageOpensUnifiedSidePanel) {
+  SetupUnifiedSidePanel();
+  EXPECT_TRUE(GetRightAlignedSidePanel()->GetVisible());
+
+  content::WebContents* contents =
+      lens::GetLensUnifiedSidePanelWebContentsForTesting(browser());
+
+  std::string expected_content = GetLensImageSearchURL().GetContent();
+  std::string side_panel_content = contents->GetLastCommittedURL().GetContent();
+  // Match strings up to the query.
+  std::size_t query_start_pos = side_panel_content.find("?");
+  EXPECT_EQ(expected_content.substr(0, query_start_pos),
+            side_panel_content.substr(0, query_start_pos));
+  EXPECT_FALSE(
+      GetLensSidePanelCoordinator()->IsLaunchButtonEnabledForTesting());
+  // Match the query parameters, without the value of start_time.
+  EXPECT_THAT(side_panel_content,
+              testing::MatchesRegex(".*ep=ccm&s=csp&st=\\d+&p=somepayload"));
+}
+
 }  // namespace
diff --git a/chrome/browser/ui/views/side_panel/lens/lens_unified_side_panel_view.cc b/chrome/browser/ui/views/side_panel/lens/lens_unified_side_panel_view.cc
index 5f320394..6403005 100644
--- a/chrome/browser/ui/views/side_panel/lens/lens_unified_side_panel_view.cc
+++ b/chrome/browser/ui/views/side_panel/lens/lens_unified_side_panel_view.cc
@@ -108,7 +108,7 @@
 void LensUnifiedSidePanelView::LoadProgressChanged(double progress) {
   bool is_content_visible = progress == 1.0;
   SetContentVisible(is_content_visible);
-  if (is_content_visible) {
+  if (launch_button_ != nullptr && is_content_visible) {
     auto last_committed_url =
         web_view_->GetWebContents()->GetLastCommittedURL();
     launch_button_->SetEnabled(lens::IsValidLensResultUrl(last_committed_url));
@@ -116,7 +116,7 @@
 }
 
 bool LensUnifiedSidePanelView::IsLaunchButtonEnabledForTesting() {
-  return launch_button_->GetEnabled();
+  return launch_button_ != nullptr && launch_button_->GetEnabled();
 }
 
 bool LensUnifiedSidePanelView::HandleContextMenu(
diff --git a/chrome/browser/ui/views/side_panel/side_panel_entry.h b/chrome/browser/ui/views/side_panel/side_panel_entry.h
index 5acd302..07da634 100644
--- a/chrome/browser/ui/views/side_panel/side_panel_entry.h
+++ b/chrome/browser/ui/views/side_panel/side_panel_entry.h
@@ -37,6 +37,7 @@
     kLens,
     kAssistant,
     kAboutThisSite,
+    kCustomizeChrome
   };
 
   SidePanelEntry(Id id,
diff --git a/chrome/browser/ui/views/side_panel/side_panel_util.cc b/chrome/browser/ui/views/side_panel/side_panel_util.cc
index c0b2ca0..aa34d2e 100644
--- a/chrome/browser/ui/views/side_panel/side_panel_util.cc
+++ b/chrome/browser/ui/views/side_panel/side_panel_util.cc
@@ -38,7 +38,8 @@
            {SidePanelEntry::Id::kSideSearch, "SideSearch"},
            {SidePanelEntry::Id::kLens, "Lens"},
            {SidePanelEntry::Id::kAssistant, "Assistant"},
-           {SidePanelEntry::Id::kAboutThisSite, "AboutThisSite"}});
+           {SidePanelEntry::Id::kAboutThisSite, "AboutThisSite"},
+           {SidePanelEntry::Id::kCustomizeChrome, "CustomizeChrome"}});
 
   auto* i = id_to_histogram_name_map.find(id);
   DCHECK(i != id_to_histogram_name_map.cend());
diff --git a/chrome/browser/ui/views/user_education/browser_user_education_service.cc b/chrome/browser/ui/views/user_education/browser_user_education_service.cc
index c2d2a6f63..ba970c3 100644
--- a/chrome/browser/ui/views/user_education/browser_user_education_service.cc
+++ b/chrome/browser/ui/views/user_education/browser_user_education_service.cc
@@ -27,6 +27,7 @@
 #include "components/user_education/common/tutorial_registry.h"
 #include "components/user_education/views/help_bubble_delegate.h"
 #include "components/user_education/views/help_bubble_factory_views.h"
+#include "components/user_education/webui/help_bubble_webui.h"
 #include "components/vector_icons/vector_icons.h"
 #include "ui/base/interaction/element_identifier.h"
 #include "ui/base/interaction/element_tracker.h"
@@ -127,6 +128,7 @@
   const user_education::HelpBubbleDelegate* const delegate =
       GetHelpBubbleDelegate();
   registry.MaybeRegister<user_education::HelpBubbleFactoryViews>(delegate);
+  registry.MaybeRegister<user_education::HelpBubbleFactoryWebUI>();
 #if BUILDFLAG(IS_MAC)
   registry.MaybeRegister<user_education::HelpBubbleFactoryMac>(delegate);
 #endif
@@ -259,6 +261,16 @@
                     &feature_engagement::kIPHDesktopSharedHighlightingFeature,
                     kTopContainerElementId, IDS_SHARED_HIGHLIGHTING_PROMO)
                     .SetBubbleArrow(HelpBubbleArrow::kNone)));
+
+  // kIPHWebUiHelpBubbleTestFeature
+  registry.RegisterFeature(std::move(
+      FeaturePromoSpecification::CreateForSnoozePromo(
+          feature_engagement::kIPHWebUiHelpBubbleTestFeature,
+          kWebUIIPHDemoElementIdentifier,
+          IDS_PASSWORD_MANAGER_IPH_BODY_SAVE_TO_ACCOUNT)
+          .SetBubbleTitleText(IDS_PASSWORD_MANAGER_IPH_TITLE_SAVE_TO_ACCOUNT)
+          .SetInAnyContext(true)
+          .SetBubbleArrow(HelpBubbleArrow::kBottomLeft)));
 }
 
 void MaybeRegisterChromeTutorials(
diff --git a/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc b/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc
index c978bb6..8d243dd1 100644
--- a/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc
+++ b/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc
@@ -161,8 +161,6 @@
 constexpr char kDebuggerMJSPath[] = "debug/debug.m.js";
 constexpr char kDebuggerUtilJSPath[] = "debug/debug_util.js";
 constexpr char kKeyboardUtilsJSPath[] = "keyboard_utils.js";
-constexpr char kKeyboardUtilsForInjectionPath[] =
-    "components/keyboard_utils_for_injection.js";
 constexpr char kKeyboardUtilsForInjectionModulePath[] =
     "components/keyboard_utils_for_injection.m.js";
 
@@ -174,8 +172,6 @@
 constexpr char kWebviewSamlInjectedJSPath[] = "webview_saml_injected.js";
 
 // Components
-constexpr char kOobeCustomVarsCssHTML[] =
-    "components/oobe_vars/oobe_custom_vars_css.html";
 constexpr char kOobeCustomVarsCssJsM[] =
     "components/oobe_vars/oobe_custom_vars_css.m.js";
 
@@ -313,8 +309,6 @@
   source->AddResourcePath(kWebviewSamlInjectedJSPath,
                           IDR_GAIA_AUTH_WEBVIEW_SAML_INJECTED_JS);
   source->AddResourcePath(kKeyboardUtilsJSPath, IDR_KEYBOARD_UTILS_JS);
-  source->AddResourcePath(kKeyboardUtilsForInjectionPath,
-                          IDR_KEYBOARD_UTILS_FOR_INJECTION_JS);
   source->AddResourcePath(kKeyboardUtilsForInjectionModulePath,
                           IDR_KEYBOARD_UTILS_FOR_INJECTION_M_JS);
   source->OverrideContentSecurityPolicy(
@@ -589,14 +583,9 @@
 
   if (policy::EnrollmentRequisitionManager::IsRemoraRequisition()) {
     source->AddResourcePath(
-        kOobeCustomVarsCssHTML,
-        IDR_OOBE_COMPONENTS_OOBE_CUSTOM_VARS_REMORA_CSS_HTML);
-    source->AddResourcePath(
         kOobeCustomVarsCssJsM,
         IDR_OOBE_COMPONENTS_OOBE_CUSTOM_VARS_REMORA_CSS_M_JS);
   } else {
-    source->AddResourcePath(kOobeCustomVarsCssHTML,
-                            IDR_OOBE_COMPONENTS_OOBE_CUSTOM_VARS_CSS_HTML);
     source->AddResourcePath(kOobeCustomVarsCssJsM,
                             IDR_OOBE_COMPONENTS_OOBE_CUSTOM_VARS_CSS_M_JS);
   }
diff --git a/chrome/browser/ui/webui/internals/internals_ui.cc b/chrome/browser/ui/webui/internals/internals_ui.cc
index 287a16e..90e4b7e 100644
--- a/chrome/browser/ui/webui/internals/internals_ui.cc
+++ b/chrome/browser/ui/webui/internals/internals_ui.cc
@@ -4,6 +4,8 @@
 
 #include "chrome/browser/ui/webui/internals/internals_ui.h"
 
+#include <vector>
+
 #include "build/build_config.h"
 #include "chrome/common/url_constants.h"
 #include "chrome/grit/dev_ui_browser_resources.h"
@@ -18,8 +20,10 @@
 #include "chrome/browser/ui/webui/internals/notifications/notifications_internals_ui_message_handler.h"
 #include "chrome/browser/ui/webui/internals/query_tiles/query_tiles_internals_ui_message_handler.h"
 #else
+#include "chrome/browser/ui/browser_element_identifiers.h"
 #include "chrome/browser/ui/webui/internals/user_education/user_education_internals_page_handler_impl.h"
 #include "mojo/public/cpp/bindings/self_owned_receiver.h"
+#include "ui/base/interaction/element_identifier.h"
 #endif  // BUILDFLAG(IS_ANDROID)
 
 #if BUILDFLAG(ENABLE_SESSION_SERVICE)
@@ -52,7 +56,12 @@
 }  // namespace
 
 InternalsUI::InternalsUI(content::WebUI* web_ui)
-    : ui::MojoWebUIController(web_ui, /*enable_chrome_send=*/true) {
+    : ui::MojoWebUIController(web_ui, /*enable_chrome_send=*/true)
+#if !BUILDFLAG(IS_ANDROID)
+      ,
+      help_bubble_handler_factory_receiver_(this)
+#endif
+{
   profile_ = Profile::FromWebUI(web_ui);
   source_ = content::WebUIDataSource::Create(chrome::kChromeUIInternalsHost);
   source_->AddResourcePaths(
@@ -116,7 +125,9 @@
   web_ui->AddMessageHandler(
       std::make_unique<QueryTilesInternalsUIMessageHandler>(profile_));
 }
+
 #else   // BUILDFLAG(IS_ANDROID)
+
 void InternalsUI::BindInterface(
     mojo::PendingReceiver<
         mojom::user_education_internals::UserEducationInternalsPageHandler>
@@ -125,6 +136,25 @@
       std::make_unique<UserEducationInternalsPageHandlerImpl>(
           web_ui(), profile_, std::move(receiver));
 }
+
+void InternalsUI::BindInterface(
+    mojo::PendingReceiver<help_bubble::mojom::HelpBubbleHandlerFactory>
+        pending_receiver) {
+  if (help_bubble_handler_factory_receiver_.is_bound())
+    help_bubble_handler_factory_receiver_.reset();
+  help_bubble_handler_factory_receiver_.Bind(std::move(pending_receiver));
+}
+
+void InternalsUI::CreateHelpBubbleHandler(
+    mojo::PendingRemote<help_bubble::mojom::HelpBubbleClient> pending_client,
+    mojo::PendingReceiver<help_bubble::mojom::HelpBubbleHandler>
+        pending_handler) {
+  help_bubble_handler_ = std::make_unique<user_education::HelpBubbleHandler>(
+      std::move(pending_handler), std::move(pending_client),
+      web_ui()->GetWebContents(),
+      std::vector<ui::ElementIdentifier>{kWebUIIPHDemoElementIdentifier});
+}
+
 #endif  // BUILDFLAG(IS_ANDROID)
 
 WEB_UI_CONTROLLER_TYPE_IMPL(InternalsUI)
diff --git a/chrome/browser/ui/webui/internals/internals_ui.h b/chrome/browser/ui/webui/internals/internals_ui.h
index e065282..50c5b0e1 100644
--- a/chrome/browser/ui/webui/internals/internals_ui.h
+++ b/chrome/browser/ui/webui/internals/internals_ui.h
@@ -15,6 +15,8 @@
 // gn check doesn't understand "#if !BUILDFLAG(IS_ANDROID)" and fails this
 // non-Android include on Android.
 #include "chrome/browser/ui/webui/internals/user_education/user_education_internals.mojom.h"  // nogncheck
+#include "components/user_education/webui/help_bubble_handler.h"
+#include "ui/webui/resources/cr_components/help_bubble/help_bubble.mojom.h"
 #endif
 
 namespace content {
@@ -23,7 +25,12 @@
 
 // Client could put debug WebUI as sub-URL under chrome://internals/.
 // e.g. chrome://internals/your-feature.
-class InternalsUI : public ui::MojoWebUIController {
+class InternalsUI : public ui::MojoWebUIController
+#if !BUILDFLAG(IS_ANDROID)
+    ,
+                    public help_bubble::mojom::HelpBubbleHandlerFactory
+#endif  // !BUILDFLAG(IS_ANDROID)
+{
  public:
   explicit InternalsUI(content::WebUI* web_ui);
   ~InternalsUI() override;
@@ -33,6 +40,18 @@
       mojo::PendingReceiver<
           mojom::user_education_internals::UserEducationInternalsPageHandler>
           receiver);
+
+  // The HelpBubbleHandlerFactory provides support for help bubbles in this
+  // WebUI. Also see CreateHelpBubbleHandler() below.
+  void BindInterface(
+      mojo::PendingReceiver<help_bubble::mojom::HelpBubbleHandlerFactory>
+          pending_receiver);
+
+  // help_bubble::mojom::HelpBubbleHandlerFactory:
+  void CreateHelpBubbleHandler(
+      mojo::PendingRemote<help_bubble::mojom::HelpBubbleClient> pending_client,
+      mojo::PendingReceiver<help_bubble::mojom::HelpBubbleHandler>
+          pending_handler) override;
 #endif  // !BUILDFLAG(IS_ANDROID)
 
  private:
@@ -53,6 +72,10 @@
   std::unique_ptr<
       mojom::user_education_internals::UserEducationInternalsPageHandler>
       user_education_handler_;
+
+  std::unique_ptr<user_education::HelpBubbleHandler> help_bubble_handler_;
+  mojo::Receiver<help_bubble::mojom::HelpBubbleHandlerFactory>
+      help_bubble_handler_factory_receiver_;
 #endif  // !BUILDFLAG(IS_ANDROID)
 };
 
diff --git a/chrome/browser/ui/webui/settings/autofill_assistant_handler.cc b/chrome/browser/ui/webui/settings/autofill_assistant_handler.cc
index f8cd83f..cea2906 100644
--- a/chrome/browser/ui/webui/settings/autofill_assistant_handler.cc
+++ b/chrome/browser/ui/webui/settings/autofill_assistant_handler.cc
@@ -65,10 +65,10 @@
   std::vector<int> description_grd_ids;
 
   for (const base::Value& element : args) {
-    DCHECK(element.is_string());
+    CHECK(element.is_string());
 
     auto grd_id = string_to_revoke_grd_id_map_.find(element.GetString());
-    DCHECK(grd_id != string_to_revoke_grd_id_map_.end());
+    CHECK(grd_id != string_to_revoke_grd_id_map_.end());
     description_grd_ids.push_back(grd_id->second);
   }
   GetApcClient()->RevokeConsent(description_grd_ids);
diff --git a/chrome/browser/ui/webui/side_panel/bookmarks/bookmarks.mojom b/chrome/browser/ui/webui/side_panel/bookmarks/bookmarks.mojom
index d7ec968..d83ecda 100644
--- a/chrome/browser/ui/webui/side_panel/bookmarks/bookmarks.mojom
+++ b/chrome/browser/ui/webui/side_panel/bookmarks/bookmarks.mojom
@@ -8,6 +8,12 @@
 import "ui/gfx/geometry/mojom/geometry.mojom";
 import "url/mojom/url.mojom";
 
+// Used to indicate the source item from which the context menu is triggered.
+enum ContextMenuSource {
+  kBookmark,
+  kPriceTracking,
+};
+
 // Used by the Read Later WebUI page (for the side panel) to bootstrap
 // bidirectional communication.
 interface BookmarksPageHandlerFactory {
@@ -24,8 +30,10 @@
 
   // Opens a context menu for a bookmark node. The id parameter is internally
   // an int64 but gets passed as a string from the chrome.bookmarks Extension
-  // API.
-  ShowContextMenu(string id, gfx.mojom.Point point);
+  // API. The point parameter is the location where the context menu is
+  // triggered. The source parameter is the type of source item from which
+  // the context menu is triggered.
+  ShowContextMenu(string id, gfx.mojom.Point point, ContextMenuSource source);
 
   // Notify the backend that the UI is ready to be shown.
   ShowUI();
diff --git a/chrome/browser/ui/webui/side_panel/bookmarks/bookmarks_page_handler.cc b/chrome/browser/ui/webui/side_panel/bookmarks/bookmarks_page_handler.cc
index 938b65d..e712ac0 100644
--- a/chrome/browser/ui/webui/side_panel/bookmarks/bookmarks_page_handler.cc
+++ b/chrome/browser/ui/webui/side_panel/bookmarks/bookmarks_page_handler.cc
@@ -43,7 +43,8 @@
   explicit BookmarkContextMenu(
       Browser* browser,
       base::WeakPtr<ui::MojoBubbleWebUIController::Embedder> embedder,
-      const bookmarks::BookmarkNode* bookmark)
+      const bookmarks::BookmarkNode* bookmark,
+      const side_panel::mojom::ContextMenuSource& source)
       : ui::SimpleMenuModel(this),
         embedder_(embedder),
         controller_(base::WrapUnique(new BookmarkContextMenuController(
@@ -54,6 +55,15 @@
             BookmarkLaunchLocation::kSidePanelContextMenu,
             bookmark->parent(),
             {bookmark}))) {
+    if (source == side_panel::mojom::ContextMenuSource::kPriceTracking) {
+      AddItem(IDC_BOOKMARK_BAR_OPEN_ALL);
+      AddItem(IDC_BOOKMARK_BAR_OPEN_ALL_NEW_WINDOW);
+      AddItem(IDC_BOOKMARK_BAR_OPEN_ALL_INCOGNITO);
+      AddSeparator(ui::NORMAL_SEPARATOR);
+      AddItem(IDC_BOOKMARK_MANAGER);
+      return;
+    }
+
     AddItem(IDC_BOOKMARK_BAR_OPEN_ALL);
     AddItem(IDC_BOOKMARK_BAR_OPEN_ALL_NEW_WINDOW);
     AddItem(IDC_BOOKMARK_BAR_OPEN_ALL_INCOGNITO);
@@ -147,8 +157,10 @@
       profile_metrics::GetBrowserProfileType(browser->profile()));
 }
 
-void BookmarksPageHandler::ShowContextMenu(const std::string& id_string,
-                                           const gfx::Point& point) {
+void BookmarksPageHandler::ShowContextMenu(
+    const std::string& id_string,
+    const gfx::Point& point,
+    side_panel::mojom::ContextMenuSource source) {
   int64_t id;
   if (!base::StringToInt64(id_string, &id))
     return;
@@ -168,7 +180,7 @@
       bookmarks_ui_ ? bookmarks_ui_->embedder() : reading_list_ui_->embedder();
   if (embedder) {
     embedder->ShowContextMenu(point, std::make_unique<BookmarkContextMenu>(
-                                         browser, embedder, bookmark));
+                                         browser, embedder, bookmark, source));
   }
 }
 
diff --git a/chrome/browser/ui/webui/side_panel/bookmarks/bookmarks_page_handler.h b/chrome/browser/ui/webui/side_panel/bookmarks/bookmarks_page_handler.h
index 9587ea85..0618b0c 100644
--- a/chrome/browser/ui/webui/side_panel/bookmarks/bookmarks_page_handler.h
+++ b/chrome/browser/ui/webui/side_panel/bookmarks/bookmarks_page_handler.h
@@ -29,7 +29,9 @@
   void OpenBookmark(int64_t node_id,
                     int32_t parent_folder_depth,
                     ui::mojom::ClickModifiersPtr click_modifiers) override;
-  void ShowContextMenu(const std::string& id, const gfx::Point& point) override;
+  void ShowContextMenu(const std::string& id,
+                       const gfx::Point& point,
+                       side_panel::mojom::ContextMenuSource source) override;
   void ShowUI() override;
 
  private:
diff --git a/chrome/browser/ui/webui/side_panel/customize_chrome/customize_chrome_ui.cc b/chrome/browser/ui/webui/side_panel/customize_chrome/customize_chrome_ui.cc
index 3b3835d..a685018 100644
--- a/chrome/browser/ui/webui/side_panel/customize_chrome/customize_chrome_ui.cc
+++ b/chrome/browser/ui/webui/side_panel/customize_chrome/customize_chrome_ui.cc
@@ -11,10 +11,12 @@
 #include "chrome/browser/ui/webui/side_panel/customize_chrome/customize_chrome_page_handler.h"
 #include "chrome/browser/ui/webui/webui_util.h"
 #include "chrome/common/webui_url_constants.h"
+#include "chrome/grit/generated_resources.h"
 #include "chrome/grit/side_panel_customize_chrome_resources.h"
 #include "chrome/grit/side_panel_customize_chrome_resources_map.h"
 #include "content/public/browser/web_ui.h"
 #include "content/public/browser/web_ui_data_source.h"
+#include "ui/base/webui/web_ui_util.h"
 
 CustomizeChromeUI::CustomizeChromeUI(content::WebUI* web_ui)
     : ui::MojoBubbleWebUIController(web_ui) {
@@ -23,6 +25,11 @@
   content::WebUIDataSource* source = content::WebUIDataSource::Create(
       chrome::kChromeUICustomizeChromeSidePanelHost);
 
+  static constexpr webui::LocalizedString kLocalizedStrings[] = {
+      {"title", IDS_SIDE_PANEL_CUSTOMIZE_CHROME_TITLE},
+  };
+  source->AddLocalizedStrings(kLocalizedStrings);
+
   webui::SetupWebUIDataSource(
       source,
       base::make_span(kSidePanelCustomizeChromeResources,
diff --git a/chrome/browser/web_applications/preinstalled_web_app_migration_browsertest.cc b/chrome/browser/web_applications/preinstalled_web_app_migration_browsertest.cc
index 3b3d5c61..534a2234 100644
--- a/chrome/browser/web_applications/preinstalled_web_app_migration_browsertest.cc
+++ b/chrome/browser/web_applications/preinstalled_web_app_migration_browsertest.cc
@@ -39,6 +39,7 @@
 #include "extensions/browser/extension_system.h"
 #include "extensions/browser/test_extension_registry_observer.h"
 #include "extensions/browser/updater/extension_cache_fake.h"
+#include "extensions/browser/updater/extension_downloader_test_helper.h"
 #include "net/test/embedded_test_server/embedded_test_server.h"
 #include "net/test/embedded_test_server/http_request.h"
 #include "net/test/embedded_test_server/http_response.h"
@@ -118,18 +119,11 @@
     if (request_path == kExtensionUpdatePath) {
       auto response = std::make_unique<net::test_server::BasicHttpResponse>();
       response->set_code(net::HTTP_OK);
-      response->set_content(base::ReplaceStringPlaceholders(
-          R"(<?xml version='1.0' encoding='UTF-8'?>
-            <gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
-              <app appid='$1'>
-                <updatecheck codebase='$2' version='$3' />
-              </app>
-            </gupdate>
-          )",
-          {kExtensionId,
-           embedded_test_server()->GetURL(kExtensionCrxPath).spec(),
-           kExtensionVersion},
-          nullptr));
+      response->set_content(extensions::CreateUpdateManifest(
+          {extensions::UpdateManifestItem(kExtensionId)
+               .version(kExtensionVersion)
+               .codebase(
+                   embedded_test_server()->GetURL(kExtensionCrxPath).spec())}));
       response->set_content_type("text/xml");
       return std::move(response);
     }
diff --git a/chrome/build/win32.pgo.txt b/chrome/build/win32.pgo.txt
index 4b30e928..64c1c351 100644
--- a/chrome/build/win32.pgo.txt
+++ b/chrome/build/win32.pgo.txt
@@ -1 +1 @@
-chrome-win32-main-1660208231-bda3a7165fd2741122c6552bad163d6fa6dda599.profdata
+chrome-win32-main-1660219080-817777645bb5a96bb8c86e7fa2a9003a46078df2.profdata
diff --git a/chrome/build/win64.pgo.txt b/chrome/build/win64.pgo.txt
index 9c59abac..cf6749fe 100644
--- a/chrome/build/win64.pgo.txt
+++ b/chrome/build/win64.pgo.txt
@@ -1 +1 @@
-chrome-win64-main-1660208231-1302a399e8b23f6be0d4ddfc587838d830ea73b6.profdata
+chrome-win64-main-1660229884-63764646f5a984f02a3c0edd8fa1017e1d45b5cf.profdata
diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_constants.cc
index f6862060a..e93d13e7 100644
--- a/chrome/common/webui_url_constants.cc
+++ b/chrome/common/webui_url_constants.cc
@@ -250,6 +250,8 @@
     "chrome://bookmarks-side-panel.top-chrome/";
 const char kChromeUICustomizeChromeSidePanelHost[] =
     "customize-chrome-side-panel.top-chrome";
+const char kChromeUICustomizeChromeSidePanelURL[] =
+    "chrome://customize-chrome-side-panel.top-chrome";
 const char kChromeUIHistoryClustersSidePanelHost[] =
     "history-clusters-side-panel.top-chrome";
 const char kChromeUIHistoryClustersSidePanelURL[] =
diff --git a/chrome/common/webui_url_constants.h b/chrome/common/webui_url_constants.h
index a1a0eff1..9243c8a 100644
--- a/chrome/common/webui_url_constants.h
+++ b/chrome/common/webui_url_constants.h
@@ -236,6 +236,7 @@
 extern const char kChromeUIBookmarksSidePanelHost[];
 extern const char kChromeUIBookmarksSidePanelURL[];
 extern const char kChromeUICustomizeChromeSidePanelHost[];
+extern const char kChromeUICustomizeChromeSidePanelURL[];
 extern const char kChromeUIHistoryClustersSidePanelHost[];
 extern const char kChromeUIHistoryClustersSidePanelURL[];
 extern const char kChromeUIReadAnythingSidePanelHost[];
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index 1b34d3d6..dfcafe6 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -5551,6 +5551,7 @@
       "../browser/page_load_metrics/observers/side_search_page_load_metrics_observer_unittest.cc",
       "../browser/ui/side_search/side_search_side_contents_helper_unittest.cc",
       "../browser/ui/side_search/side_search_tab_contents_helper_unittest.cc",
+      "../browser/ui/views/side_panel/customize_chrome/customize_chrome_side_panel_controller_unittest.cc",
     ]
   }
 
diff --git a/chrome/updater/device_management/dm_client.cc b/chrome/updater/device_management/dm_client.cc
index cb2894d6..1536b32 100644
--- a/chrome/updater/device_management/dm_client.cc
+++ b/chrome/updater/device_management/dm_client.cc
@@ -373,6 +373,14 @@
 void DMClient::FetchPolicy(std::unique_ptr<Configurator> config,
                            scoped_refptr<DMStorage> storage,
                            PolicyFetchCallback callback) {
+  if (!storage->CanPersistPolicies()) {
+    base::SequencedTaskRunnerHandle::Get()->PostTask(
+        FROM_HERE, base::BindOnce(std::move(callback),
+                                  DMClient::RequestResult::kSerializationError,
+                                  std::vector<PolicyValidationResult>()));
+    return;
+  }
+
   auto dm_fetch = base::MakeRefCounted<DMFetch>(std::move(config), storage);
   std::unique_ptr<CachedPolicyInfo> cached_info =
       dm_fetch->storage()->GetCachedPolicyInfo();
diff --git a/chrome/updater/device_management/dm_client_unittest.cc b/chrome/updater/device_management/dm_client_unittest.cc
index 3a2575f..d7d8694 100644
--- a/chrome/updater/device_management/dm_client_unittest.cc
+++ b/chrome/updater/device_management/dm_client_unittest.cc
@@ -139,6 +139,7 @@
                                            init_dm_token ? kDmToken : ""));
 
     if (init_cache_info) {
+      ASSERT_TRUE(storage_->CanPersistPolicies());
       std::unique_ptr<::enterprise_management::DeviceManagementResponse>
           dm_response = GetDefaultTestingPolicyFetchDMResponse(
               /*first_request=*/true, /*rotate_to_new_key=*/false,
diff --git a/chrome/updater/device_management/dm_storage.cc b/chrome/updater/device_management/dm_storage.cc
index 1cfa1f3..0dc0f2f4 100644
--- a/chrome/updater/device_management/dm_storage.cc
+++ b/chrome/updater/device_management/dm_storage.cc
@@ -14,6 +14,7 @@
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
 #include "base/files/important_file_writer.h"
+#include "base/files/scoped_temp_dir.h"
 #include "base/memory/scoped_refptr.h"
 #include "base/notreached.h"
 #include "base/strings/sys_string_conversions.h"
@@ -72,7 +73,8 @@
 #if BUILDFLAG(IS_LINUX)
 // TODO(crbug.com/1276162) - implement.
 DMStorage::DMStorage(const base::FilePath& policy_cache_root)
-    : policy_cache_root_(policy_cache_root) {
+    : policy_cache_root_(policy_cache_root),
+      policy_info_file_(policy_cache_root_.AppendASCII(kPolicyInfoFileName)) {
   NOTIMPLEMENTED();
 }
 #endif  // BUILDFLAG(IS_LINUX)
@@ -80,6 +82,7 @@
 DMStorage::DMStorage(const base::FilePath& policy_cache_root,
                      std::unique_ptr<TokenServiceInterface> token_service)
     : policy_cache_root_(policy_cache_root),
+      policy_info_file_(policy_cache_root_.AppendASCII(kPolicyInfoFileName)),
       token_service_(std::move(token_service)) {
   DCHECK(token_service_);
 }
@@ -109,6 +112,15 @@
   return GetDmToken() == kInvalidTokenValue;
 }
 
+bool DMStorage::CanPersistPolicies() const {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+
+  return base::PathExists(policy_info_file_)
+             ? base::PathIsWritable(policy_info_file_)
+             : base::ScopedTempDir().CreateUniqueTempDirUnderPath(
+                   policy_cache_root_);
+}
+
 bool DMStorage::PersistPolicies(const DMPolicyMap& policy_map) const {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   if (policy_map.empty())
@@ -122,9 +134,7 @@
   CachedPolicyInfo cached_info;
   if (cached_info.Populate(policy_info_data) &&
       !cached_info.public_key().empty()) {
-    base::FilePath policy_info_file =
-        policy_cache_root_.AppendASCII(kPolicyInfoFileName);
-    if (!base::ImportantFileWriter::WriteFileAtomically(policy_info_file,
+    if (!base::ImportantFileWriter::WriteFileAtomically(policy_info_file_,
                                                         policy_info_data)) {
       return false;
     }
@@ -163,11 +173,9 @@
   if (!IsValidDMToken())
     return cached_info;
 
-  base::FilePath policy_info_file =
-      policy_cache_root_.AppendASCII(kPolicyInfoFileName);
   std::string policy_info_data;
-  if (!base::PathExists(policy_info_file) ||
-      !base::ReadFileToString(policy_info_file, &policy_info_data) ||
+  if (!base::PathExists(policy_info_file_) ||
+      !base::ReadFileToString(policy_info_file_, &policy_info_data) ||
       !cached_info->Populate(policy_info_data)) {
     return cached_info;
   }
diff --git a/chrome/updater/device_management/dm_storage.h b/chrome/updater/device_management/dm_storage.h
index f8987d1b..1230c0d 100644
--- a/chrome/updater/device_management/dm_storage.h
+++ b/chrome/updater/device_management/dm_storage.h
@@ -95,6 +95,9 @@
   // Returns true if the device is de-registered.
   bool IsDeviceDeregistered() const;
 
+  // Checks if the caller has permissions to persist the DM policies.
+  bool CanPersistPolicies() const;
+
   // Persists DM policies.
   //
   // If the first policy in the map contains a valid public key, its serialized
@@ -139,6 +142,7 @@
   ~DMStorage();
 
   const base::FilePath policy_cache_root_;
+  const base::FilePath policy_info_file_;
   std::unique_ptr<TokenServiceInterface> token_service_;
 
   SEQUENCE_CHECKER(sequence_checker_);
diff --git a/chrome/updater/device_management/dm_storage_unittest.cc b/chrome/updater/device_management/dm_storage_unittest.cc
index 766017e2..f10db31d 100644
--- a/chrome/updater/device_management/dm_storage_unittest.cc
+++ b/chrome/updater/device_management/dm_storage_unittest.cc
@@ -150,6 +150,7 @@
   EXPECT_TRUE(base::DirectoryExists(stale_poliy));
 
   auto storage = base::MakeRefCounted<DMStorage>(cache_root.GetPath());
+  EXPECT_TRUE(storage->CanPersistPolicies());
   EXPECT_TRUE(storage->PersistPolicies(policies));
   base::FilePath policy_info_file =
       cache_root.GetPath().AppendASCII("CachedPolicyInfo");
@@ -200,6 +201,7 @@
   ASSERT_TRUE(cache_root.CreateUniqueTempDir());
   auto storage = base::MakeRefCounted<DMStorage>(
       cache_root.GetPath(), std::make_unique<TestTokenService>());
+  EXPECT_TRUE(storage->CanPersistPolicies());
   EXPECT_TRUE(storage->PersistPolicies({
       {"sample-policy-type", response.SerializeAsString()},
   }));
@@ -220,6 +222,7 @@
   ASSERT_TRUE(cache_root.CreateUniqueTempDir());
   auto storage = base::MakeRefCounted<DMStorage>(
       cache_root.GetPath(), std::make_unique<TestTokenService>());
+  EXPECT_TRUE(storage->CanPersistPolicies());
   EXPECT_TRUE(storage->PersistPolicies(policies));
 
   std::unique_ptr<
diff --git a/chrome/updater/refresh_dm_policies_task.cc b/chrome/updater/refresh_dm_policies_task.cc
index 02ad764f..536823c 100644
--- a/chrome/updater/refresh_dm_policies_task.cc
+++ b/chrome/updater/refresh_dm_policies_task.cc
@@ -13,6 +13,7 @@
 #include "base/memory/scoped_refptr.h"
 #include "base/sequence_checker.h"
 #include "base/task/bind_post_task.h"
+#include "base/task/single_thread_task_runner.h"
 #include "base/task/thread_pool.h"
 #include "chrome/updater/configurator.h"
 #include "chrome/updater/device_management/dm_client.h"
@@ -20,10 +21,6 @@
 #include "chrome/updater/device_management/dm_storage.h"
 #include "chrome/updater/policy/service.h"
 
-#if BUILDFLAG(IS_WIN)
-#include <shlobj.h>
-#endif  // BUILDFLAG(IS_WIN)
-
 namespace updater {
 
 RefreshDMPoliciesTask::RefreshDMPoliciesTask(
@@ -37,25 +34,12 @@
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   VLOG(1) << __func__;
 
-#if BUILDFLAG(IS_WIN)
-  // Returning early, because we cannot write to the DM cache in Windows under
-  // %ProgramFiles(x86)% without having administrative privileges.
-  if (!::IsUserAnAdmin()) {
-    std::move(callback).Run();
-    return;
-  }
-
-  FetchPolicy(std::move(callback));
-  return;
-
-#else   // BUILDFLAG(IS_WIN)
-
   // `RefreshDMPoliciesTask::FetchPolicy` can block and therefore is running
   // under a task runner with `base::MayBlock()`.
-  base::ThreadPool::CreateSequencedTaskRunner({base::MayBlock()})
+  base::ThreadPool::CreateSingleThreadTaskRunner(
+      {base::MayBlock()}, base::SingleThreadTaskRunnerThreadMode::DEDICATED)
       ->PostTask(FROM_HERE, base::BindOnce(&RefreshDMPoliciesTask::FetchPolicy,
                                            this, std::move(callback)));
-#endif  // BUILDFLAG(IS_WIN)
 }
 
 void RefreshDMPoliciesTask::FetchPolicy(base::OnceClosure callback) {
diff --git a/components/autofill_assistant/browser/starter_heuristic.cc b/components/autofill_assistant/browser/starter_heuristic.cc
index 1166ce0..7af3b31 100644
--- a/components/autofill_assistant/browser/starter_heuristic.cc
+++ b/components/autofill_assistant/browser/starter_heuristic.cc
@@ -62,7 +62,7 @@
               url_matcher_->condition_factory(), url_conditions->GetDict(),
               next_condition_set_id, &error));
       if (!error.empty()) {
-        VLOG(1) << "Error pasing url conditions: " << error;
+        VLOG(1) << "Error parsing url conditions: " << error;
         return;
       }
       mapping.insert(
diff --git a/components/autofill_assistant/browser/starter_heuristic_unittest.cc b/components/autofill_assistant/browser/starter_heuristic_unittest.cc
index 2d6e0ea..b077e6a6 100644
--- a/components/autofill_assistant/browser/starter_heuristic_unittest.cc
+++ b/components/autofill_assistant/browser/starter_heuristic_unittest.cc
@@ -13,6 +13,7 @@
 #include "base/test/task_environment.h"
 #include "components/autofill_assistant/browser/fake_starter_platform_delegate.h"
 #include "components/autofill_assistant/browser/features.h"
+#include "components/autofill_assistant/browser/starter_heuristic_configs/finch_starter_heuristic_config.h"
 #include "components/autofill_assistant/browser/starter_heuristic_configs/legacy_starter_heuristic_config.h"
 #include "testing/gmock/include/gmock/gmock.h"
 
@@ -60,7 +61,7 @@
 
 TEST_F(StarterHeuristicTest, SmokeTest) {
   auto starter_heuristic = base::MakeRefCounted<StarterHeuristic>();
-  InitDefaultHeuristic(*starter_heuristic, R"(
+  InitDefaultHeuristic(*starter_heuristic, R"json(
         {
           "heuristics":[
             {
@@ -71,7 +72,7 @@
             }
           ]
         }
-        )");
+        )json");
 
   EXPECT_THAT(IsHeuristicMatchForTest(*starter_heuristic,
                                       GURL("https://www.example.com/cart")),
@@ -85,7 +86,7 @@
 
 TEST_F(StarterHeuristicTest, RunHeuristicAsync) {
   auto starter_heuristic = base::MakeRefCounted<StarterHeuristic>();
-  InitDefaultHeuristic(*starter_heuristic, R"(
+  InitDefaultHeuristic(*starter_heuristic, R"json(
         {
           "heuristics":[
             {
@@ -96,7 +97,7 @@
             }
           ]
         }
-        )");
+        )json");
 
   base::test::TaskEnvironment task_environment;
   base::MockCallback<
@@ -110,7 +111,7 @@
 
 TEST_F(StarterHeuristicTest, DenylistedDomains) {
   auto starter_heuristic = base::MakeRefCounted<StarterHeuristic>();
-  InitDefaultHeuristic(*starter_heuristic, R"(
+  InitDefaultHeuristic(*starter_heuristic, R"json(
         {
           "denylistedDomains": ["example.com", "other-example.com"],
           "heuristics":[
@@ -122,7 +123,7 @@
             }
           ]
         }
-        )");
+        )json");
 
   // URLs on denylisted domains or subdomains thereof will always fail the
   // heuristic even if they would otherwise match.
@@ -152,7 +153,7 @@
 
 TEST_F(StarterHeuristicTest, MultipleConditionSetsForSameIntent) {
   auto starter_heuristic = base::MakeRefCounted<StarterHeuristic>();
-  InitDefaultHeuristic(*starter_heuristic, R"(
+  InitDefaultHeuristic(*starter_heuristic, R"json(
         {
           "heuristics":[
             {
@@ -169,7 +170,7 @@
             }
           ]
         }
-        )");
+        )json");
 
   EXPECT_THAT(IsHeuristicMatchForTest(*starter_heuristic,
                                       GURL("https://example.com/cart")),
@@ -223,4 +224,113 @@
               IsEmpty());
 }
 
+TEST_F(StarterHeuristicTest, MultipleUrlHeuristicTrials) {
+  auto scoped_feature_list = std::make_unique<base::test::ScopedFeatureList>();
+  scoped_feature_list->InitWithFeaturesAndParameters(
+      {{features::kAutofillAssistantUrlHeuristics, {{"json_parameters", R"json(
+        {
+          "denylistedDomains": ["example.com", "other-example.com"],
+          "heuristics":[
+            {
+              "intent":"LEGACY_INTENT",
+              "conditionSet":{
+                "urlContains":"cart"
+              }
+            },
+            {
+              "intent":"LEGACY_INTENT",
+              "conditionSet":{
+                "urlContains":"trolley"
+              }
+            }
+          ]
+        }
+        )json"}}},
+       {features::kAutofillAssistantUrlHeuristic1, {{"json_parameters", R"json(
+        {
+          "denylistedDomains": ["example.com", "other-example.com"],
+          "intent":"NEW_INTENT_A",
+          "heuristics":[
+              {
+                "conditionSet":{
+                  "urlContains":"cart"
+                }
+              },
+              {
+                "conditionSet":{
+                  "urlContains":"bag"
+                }
+              }
+          ],
+          "enabledInCustomTabs":true
+        }
+        )json"}}},
+       {features::kAutofillAssistantUrlHeuristic2, {{"json_parameters", R"json(
+        {
+          "denylistedDomains": ["example.com"],
+          "intent":"NEW_INTENT_B",
+          "heuristics":[
+              {
+                "conditionSet":{
+                  "urlContains":"cart"
+                }
+              },
+              {
+                "conditionSet":{
+                  "urlContains":"checkout"
+                }
+              }
+          ],
+          "enabledInCustomTabs":true,
+          "enabledInRegularTabs":true
+        }
+        )json"}}},
+       {features::kAutofillAssistantInCCTTriggering, {}}},
+      /* disabled_features = */ {});
+
+  std::vector<std::unique_ptr<StarterHeuristicConfig>> configs;
+  configs.emplace_back(std::make_unique<LegacyStarterHeuristicConfig>());
+  configs.emplace_back(std::make_unique<FinchStarterHeuristicConfig>(
+      base::FeatureParam<std::string>{
+          &features::kAutofillAssistantUrlHeuristic1, "json_parameters", ""}));
+  configs.emplace_back(std::make_unique<FinchStarterHeuristicConfig>(
+      base::FeatureParam<std::string>{
+          &features::kAutofillAssistantUrlHeuristic2, "json_parameters", ""}));
+  auto starter_heuristic = base::MakeRefCounted<StarterHeuristic>();
+  fake_platform_delegate_.is_custom_tab_ = true;
+  fake_platform_delegate_.is_web_layer_ = false;
+  starter_heuristic->InitFromHeuristicConfigs(configs,
+                                              &fake_platform_delegate_);
+
+  // Denylisted in all configs.
+  EXPECT_THAT(IsHeuristicMatchForTest(*starter_heuristic,
+                                      GURL("https://www.example.com/cart")),
+              IsEmpty());
+
+  // Denylisted in all configs except for NEW_INTENT_B.
+  EXPECT_THAT(IsHeuristicMatchForTest(*starter_heuristic,
+                                      GURL("https://other-example.com/cart")),
+              ElementsAre("NEW_INTENT_B"));
+
+  EXPECT_THAT(IsHeuristicMatchForTest(*starter_heuristic,
+                                      GURL("https://different.com/trolley")),
+              ElementsAre("LEGACY_INTENT"));
+  EXPECT_THAT(IsHeuristicMatchForTest(*starter_heuristic,
+                                      GURL("https://different.com/bag")),
+              ElementsAre("NEW_INTENT_A"));
+  EXPECT_THAT(IsHeuristicMatchForTest(*starter_heuristic,
+                                      GURL("https://different.com/checkout")),
+              ElementsAre("NEW_INTENT_B"));
+  EXPECT_THAT(IsHeuristicMatchForTest(*starter_heuristic,
+                                      GURL("https://different.com/cart")),
+              ElementsAre("LEGACY_INTENT", "NEW_INTENT_A", "NEW_INTENT_B"));
+
+  fake_platform_delegate_.is_custom_tab_ = false;
+  starter_heuristic->InitFromHeuristicConfigs(configs,
+                                              &fake_platform_delegate_);
+  EXPECT_THAT(IsHeuristicMatchForTest(*starter_heuristic,
+                                      GURL("https://different.com/cart")),
+              ElementsAre("NEW_INTENT_B"));
+}
+
 }  // namespace autofill_assistant
diff --git a/components/certificate_transparency/data/log_list.json b/components/certificate_transparency/data/log_list.json
index 638bddfd..372640d 100644
--- a/components/certificate_transparency/data/log_list.json
+++ b/components/certificate_transparency/data/log_list.json
@@ -1,6 +1,6 @@
 {
-  "version": "10.69",
-  "log_list_timestamp": "2022-08-10T12:54:27Z",
+  "version": "10.70",
+  "log_list_timestamp": "2022-08-11T12:54:09Z",
   "operators": [
     {
       "name": "Google",
diff --git a/components/commerce/core/flag_descriptions.cc b/components/commerce/core/flag_descriptions.cc
index 2104e0d4..e77cede 100644
--- a/components/commerce/core/flag_descriptions.cc
+++ b/components/commerce/core/flag_descriptions.cc
@@ -10,4 +10,7 @@
 const char kCommercePriceTrackingDescription[] =
     "Allows users to track product prices through Chrome.";
 
+const char kShoppingListName[] = "Shopping List";
+const char kShoppingListDescription[] = "Enable shopping list in bookmarks.";
+
 }  // namespace commerce::flag_descriptions
diff --git a/components/commerce/core/flag_descriptions.h b/components/commerce/core/flag_descriptions.h
index 7fe7513..e9b1678 100644
--- a/components/commerce/core/flag_descriptions.h
+++ b/components/commerce/core/flag_descriptions.h
@@ -13,6 +13,9 @@
 extern const char kCommercePriceTrackingName[];
 extern const char kCommercePriceTrackingDescription[];
 
+extern const char kShoppingListName[];
+extern const char kShoppingListDescription[];
+
 }  // namespace commerce::flag_descriptions
 
 #endif  // COMPONENTS_COMMERCE_CORE_FLAG_DESCRIPTIONS_H_
diff --git a/components/feature_engagement/public/feature_constants.cc b/components/feature_engagement/public/feature_constants.cc
index 9039d85..d6940c6 100644
--- a/components/feature_engagement/public/feature_constants.cc
+++ b/components/feature_engagement/public/feature_constants.cc
@@ -4,6 +4,7 @@
 
 #include "components/feature_engagement/public/feature_constants.h"
 
+#include "base/feature_list.h"
 #include "build/build_config.h"
 
 namespace feature_engagement {
@@ -60,6 +61,9 @@
                                              base::FEATURE_ENABLED_BY_DEFAULT};
 const base::Feature kIPHIntentChipFeature{"IPH_IntentChip",
                                           base::FEATURE_DISABLED_BY_DEFAULT};
+const base::Feature kIPHWebUiHelpBubbleTestFeature(
+    "IPH_WebUiHelpBubbleTest",
+    base::FEATURE_DISABLED_BY_DEFAULT);
 #endif  // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) ||
         // BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA)
 
diff --git a/components/feature_engagement/public/feature_constants.h b/components/feature_engagement/public/feature_constants.h
index 2f4ef020..3671eb1f 100644
--- a/components/feature_engagement/public/feature_constants.h
+++ b/components/feature_engagement/public/feature_constants.h
@@ -51,6 +51,7 @@
 extern const base::Feature kIPHDesktopSnoozeFeature;
 extern const base::Feature kIPHDesktopPwaInstallFeature;
 extern const base::Feature kIPHProfileSwitchFeature;
+extern const base::Feature kIPHWebUiHelpBubbleTestFeature;
 #endif  // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) ||
         // BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA)
 
diff --git a/components/feature_engagement/public/feature_list.cc b/components/feature_engagement/public/feature_list.cc
index 30f13172..75a2e5b 100644
--- a/components/feature_engagement/public/feature_list.cc
+++ b/components/feature_engagement/public/feature_list.cc
@@ -133,6 +133,7 @@
     &kIPHProfileSwitchFeature,
     &kIPHDesktopSharedHighlightingFeature,
     &kIPHIntentChipFeature,
+    &kIPHWebUiHelpBubbleTestFeature,
 #endif  // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) ||
         // BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA)
 
diff --git a/components/feature_engagement/public/feature_list.h b/components/feature_engagement/public/feature_list.h
index c8f365a593..76a38886 100644
--- a/components/feature_engagement/public/feature_list.h
+++ b/components/feature_engagement/public/feature_list.h
@@ -236,6 +236,8 @@
 DEFINE_VARIATION_PARAM(kIPHDesktopSharedHighlightingFeature,
                        "IPH_DesktopSharedHighlighting");
 DEFINE_VARIATION_PARAM(kIPHIntentChipFeature, "IPH_IntentChip");
+DEFINE_VARIATION_PARAM(kIPHWebUiHelpBubbleTestFeature,
+                       "IPH_WebUiHelpBubbleTest");
 #endif  // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) ||
         // BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA)
 
@@ -359,6 +361,7 @@
         VARIATION_ENTRY(kIPHProfileSwitchFeature),
         VARIATION_ENTRY(kIPHDesktopSharedHighlightingFeature),
         VARIATION_ENTRY(kIPHIntentChipFeature),
+        VARIATION_ENTRY(kIPHWebUiHelpBubbleTestFeature),
 #endif  // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ||
         // BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA)
 
diff --git a/components/lens/lens_features.cc b/components/lens/lens_features.cc
index 2dc0280d..0efa36e 100644
--- a/components/lens/lens_features.cc
+++ b/components/lens/lens_features.cc
@@ -28,6 +28,9 @@
 const base::Feature kLensUnifiedSidePanelFooter{
     "LensUnifiedSidePanelFooter", base::FEATURE_ENABLED_BY_DEFAULT};
 
+const base::Feature kEnableRegionSearchOnPdfViewer{
+    "LensEnableRegionSearchOnPdfViewer", base::FEATURE_DISABLED_BY_DEFAULT};
+
 const base::FeatureParam<bool> kEnableUKMLoggingForRegionSearch{
     &kLensStandalone, "region-search-enable-ukm-logging", true};
 
diff --git a/components/lens/lens_features.h b/components/lens/lens_features.h
index a1ebd6e..92110c6 100644
--- a/components/lens/lens_features.h
+++ b/components/lens/lens_features.h
@@ -30,6 +30,9 @@
 // a "Search Image" button.
 extern const base::Feature kLensSearchImageInScreenshotSharing;
 
+// Enable the Lens Region Search feature on the PDF viewer.
+extern const base::Feature kEnableRegionSearchOnPdfViewer;
+
 // Enables using `Google` as the visual search provider instead of `Google
 // Lens`.
 extern const base::FeatureParam<bool> kUseGoogleAsVisualSearchProvider;
diff --git a/components/omnibox/browser/history_url_provider.cc b/components/omnibox/browser/history_url_provider.cc
index af20481e..7f620f4e 100644
--- a/components/omnibox/browser/history_url_provider.cc
+++ b/components/omnibox/browser/history_url_provider.cc
@@ -544,28 +544,6 @@
   return res;
 }
 
-void HistoryURLProvider::ExecuteWithDB(HistoryURLProviderParams* params,
-                                       history::HistoryBackend* backend,
-                                       history::URLDatabase* db) {
-  // We may get called with a null database if it couldn't be properly
-  // initialized.
-  if (!db) {
-    params->failed = true;
-  } else if (!params->cancel_flag.IsSet()) {
-    base::TimeTicks beginning_time = base::TimeTicks::Now();
-
-    DoAutocomplete(backend, db, params);
-
-    UMA_HISTOGRAM_TIMES("Autocomplete.HistoryAsyncQueryTime",
-                        base::TimeTicks::Now() - beginning_time);
-  }
-
-  // Return the results (if any) to the originating sequence.
-  params->origin_task_runner->PostTask(
-      FROM_HERE,
-      base::BindOnce(&HistoryURLProvider::QueryComplete, this, params));
-}
-
 // Note: This object can get leaked on shutdown if there are pending
 // requests on the database (which hold a reference to us). Normally, these
 // messages get flushed for each thread. We do a round trip from main, to
@@ -603,6 +581,28 @@
                              ACMatchClassification::NONE);
 }
 
+void HistoryURLProvider::ExecuteWithDB(HistoryURLProviderParams* params,
+                                       history::HistoryBackend* backend,
+                                       history::URLDatabase* db) {
+  // We may get called with a null database if it couldn't be properly
+  // initialized.
+  if (!db) {
+    params->failed = true;
+  } else if (!params->cancel_flag.IsSet()) {
+    base::TimeTicks beginning_time = base::TimeTicks::Now();
+
+    DoAutocomplete(backend, db, params);
+
+    UMA_HISTOGRAM_TIMES("Autocomplete.HistoryAsyncQueryTime",
+                        base::TimeTicks::Now() - beginning_time);
+  }
+
+  // Return the results (if any) to the originating sequence.
+  params->origin_task_runner->PostTask(
+      FROM_HERE,
+      base::BindOnce(&HistoryURLProvider::QueryComplete, this, params));
+}
+
 void HistoryURLProvider::DoAutocomplete(history::HistoryBackend* backend,
                                         history::URLDatabase* db,
                                         HistoryURLProviderParams* params) {
diff --git a/components/omnibox/browser/history_url_provider.h b/components/omnibox/browser/history_url_provider.h
index e07e3cfd..91251803 100644
--- a/components/omnibox/browser/history_url_provider.h
+++ b/components/omnibox/browser/history_url_provider.h
@@ -214,14 +214,6 @@
   // See base/trace_event/memory_usage_estimator.h for more info.
   size_t EstimateMemoryUsage() const override;
 
-  // Runs the history query on the history thread, called by the history
-  // system. The history database MAY BE NULL in which case it is not
-  // available and we should return no data. Also schedules returning the
-  // results to the main thread
-  void ExecuteWithDB(HistoryURLProviderParams* params,
-                     history::HistoryBackend* backend,
-                     history::URLDatabase* db);
-
  private:
   FRIEND_TEST_ALL_PREFIXES(HistoryURLProviderTest, HUPScoringExperiment);
   FRIEND_TEST_ALL_PREFIXES(HistoryURLProviderTest, DoTrimHttpScheme);
@@ -256,6 +248,14 @@
       const std::u16string& input_text,
       const std::u16string& description);
 
+  // Runs the history query on the history thread, called by the history
+  // system. The history database MAY BE NULL in which case it is not
+  // available and we should return no data. Also schedules returning the
+  // results to the main thread
+  void ExecuteWithDB(HistoryURLProviderParams* params,
+                     history::HistoryBackend* backend,
+                     history::URLDatabase* db);
+
   // Actually runs the autocomplete job on the given database, which is
   // guaranteed not to be NULL.  Used by both autocomplete passes, and therefore
   // called on multiple different threads (though not simultaneously).
diff --git a/components/password_manager/core/browser/password_autofill_manager.cc b/components/password_manager/core/browser/password_autofill_manager.cc
index 37462f9..f6c1162 100644
--- a/components/password_manager/core/browser/password_autofill_manager.cc
+++ b/components/password_manager/core/browser/password_autofill_manager.cc
@@ -13,18 +13,14 @@
 #include <vector>
 
 #include "base/bind.h"
-#include "base/command_line.h"
 #include "base/i18n/case_conversion.h"
 #include "base/logging.h"
-#include "base/metrics/field_trial.h"
-#include "base/metrics/histogram_macros.h"
 #include "base/ranges/algorithm.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "build/build_config.h"
 #include "components/autofill/core/browser/autofill_client.h"
 #include "components/autofill/core/browser/autofill_driver.h"
-#include "components/autofill/core/browser/autofill_experiments.h"
 #include "components/autofill/core/browser/ui/popup_item_ids.h"
 #include "components/autofill/core/browser/ui/suggestion.h"
 #include "components/autofill/core/common/autofill_constants.h"
@@ -44,12 +40,8 @@
 #include "components/password_manager/core/browser/password_manager_util.h"
 #include "components/password_manager/core/browser/webauthn_credentials_delegate.h"
 #include "components/password_manager/core/common/password_manager_features.h"
-#include "components/password_manager/core/common/password_manager_pref_names.h"
-#include "components/prefs/pref_service.h"
-#include "components/security_state/core/security_state.h"
 #include "components/signin/public/base/signin_metrics.h"
 #include "components/strings/grit/components_strings.h"
-#include "components/sync/driver/sync_service.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "url/gurl.h"
 
@@ -211,12 +203,18 @@
                id == autofill::POPUP_ITEM_ID_PASSWORD_ENTRY ||
                id == autofill::POPUP_ITEM_ID_ACCOUNT_STORAGE_USERNAME_ENTRY ||
                id == autofill::POPUP_ITEM_ID_ACCOUNT_STORAGE_PASSWORD_ENTRY ||
-               id == autofill::POPUP_ITEM_ID_GENERATE_PASSWORD_ENTRY;
+               id == autofill::POPUP_ITEM_ID_GENERATE_PASSWORD_ENTRY ||
+               id == autofill::POPUP_ITEM_ID_WEBAUTHN_CREDENTIAL;
       },
       &autofill::Suggestion::frontend_id);
   if (has_no_fillable_suggestions)
     return;
 
+  bool has_webauthn_credential = base::ranges::any_of(
+      *suggestions,
+      [](int id) { return id == autofill::POPUP_ITEM_ID_WEBAUTHN_CREDENTIAL; },
+      &autofill::Suggestion::frontend_id);
+
   // Add a separator before the manage option unless there are no suggestions
   // yet.
   // TODO(crbug.com/1274134): Clean up once improvements are launched.
@@ -227,8 +225,10 @@
     suggestions->back().frontend_id = autofill::POPUP_ITEM_ID_SEPARATOR;
   }
 
-  autofill::Suggestion suggestion(
-      l10n_util::GetStringUTF16(IDS_PASSWORD_MANAGER_MANAGE_PASSWORDS));
+  autofill::Suggestion suggestion(l10n_util::GetStringUTF16(
+      has_webauthn_credential
+          ? IDS_PASSWORD_MANAGER_MANAGE_PASSWORDS_AND_PASSKEYS
+          : IDS_PASSWORD_MANAGER_MANAGE_PASSWORDS));
   suggestion.frontend_id = autofill::POPUP_ITEM_ID_ALL_SAVED_PASSWORDS_ENTRY;
   if (base::FeatureList::IsEnabled(
           password_manager::features::kEnablePasswordsAccountStorage)) {
@@ -245,9 +245,9 @@
 
 #if !BUILDFLAG(IS_ANDROID)
 autofill::Suggestion CreateWebAuthnEntry() {
-  // TODO(crbug.com/1329958): i18n this string.
-  autofill::Suggestion suggestion(u"Sign in with another device…");
-  suggestion.icon = "fingerprint";
+  autofill::Suggestion suggestion(
+      l10n_util::GetStringUTF16(IDS_PASSWORD_MANAGER_USE_DEVICE_PASSKEY));
+  suggestion.icon = "device";
   suggestion.frontend_id =
       autofill::POPUP_ITEM_ID_WEBAUTHN_SIGN_IN_WITH_ANOTHER_DEVICE;
   return suggestion;
@@ -695,6 +695,9 @@
   if (show_webauthn_credentials && delegate->IsWebAuthnAutofillEnabled()) {
     std::vector<autofill::Suggestion> webauthn_suggestions =
         delegate->GetWebAuthnSuggestions();
+    for (auto& suggestion : webauthn_suggestions) {
+      suggestion.custom_icon = page_favicon_;
+    }
     suggestions.insert(suggestions.end(), webauthn_suggestions.begin(),
                        webauthn_suggestions.end());
   }
diff --git a/components/password_manager/core/browser/password_autofill_manager_unittest.cc b/components/password_manager/core/browser/password_autofill_manager_unittest.cc
index e5a65d3b..17b3081 100644
--- a/components/password_manager/core/browser/password_autofill_manager_unittest.cc
+++ b/components/password_manager/core/browser/password_autofill_manager_unittest.cc
@@ -1840,11 +1840,11 @@
   // Return a WebAuthn credential.
   const std::string kId = "abcd";
   const std::u16string kName = u"nadeshiko@example.com";
-  const std::u16string kDisplayName = u"Nadeshiko Kagamihara";
-  autofill::Suggestion webauthn_credential(kDisplayName);
+  const std::u16string kAuthenticator = u"Use device sign-in";
+  autofill::Suggestion webauthn_credential(kName);
   webauthn_credential.frontend_id = autofill::POPUP_ITEM_ID_WEBAUTHN_CREDENTIAL;
   webauthn_credential.payload = kId;
-  webauthn_credential.label = kName;
+  webauthn_credential.label = kAuthenticator;
   ON_CALL(webauthn_credentials_delegate, IsWebAuthnAutofillEnabled)
       .WillByDefault(Return(true));
   EXPECT_CALL(client, GetWebAuthnCredentialsDelegate)
@@ -1874,8 +1874,8 @@
   EXPECT_EQ(absl::get<std::string>(open_args.suggestions[0].payload), kId);
   EXPECT_EQ(open_args.suggestions[0].frontend_id,
             autofill::POPUP_ITEM_ID_WEBAUTHN_CREDENTIAL);
-  EXPECT_EQ(open_args.suggestions[0].main_text.value, kDisplayName);
-  EXPECT_EQ(open_args.suggestions[0].label, kName);
+  EXPECT_EQ(open_args.suggestions[0].main_text.value, kName);
+  EXPECT_EQ(open_args.suggestions[0].label, kAuthenticator);
   testing::Mock::VerifyAndClearExpectations(client.mock_driver());
 
   // Check that preview of the "username" (i.e. the credential name) works.
@@ -1927,9 +1927,8 @@
                   autofill::POPUP_ITEM_ID_ALL_SAVED_PASSWORDS_ENTRY)));
 
   // Check that the button shows the correct text.
-  // TODO(crbug.com/1329958): replace with a resource ID when i18n'd.
   const std::u16string kSignInWithAnotherDeviceText =
-      u"Sign in with another device…";
+      l10n_util::GetStringUTF16(IDS_PASSWORD_MANAGER_USE_DEVICE_PASSKEY);
   EXPECT_EQ(open_args.suggestions[1].main_text.value,
             kSignInWithAnotherDeviceText);
 
diff --git a/components/password_manager/core/browser/password_ui_utils.cc b/components/password_manager/core/browser/password_ui_utils.cc
index 10e6d64..01edb1a6 100644
--- a/components/password_manager/core/browser/password_ui_utils.cc
+++ b/components/password_manager/core/browser/password_ui_utils.cc
@@ -18,6 +18,7 @@
 #include "components/password_manager/core/browser/password_form_manager_for_ui.h"
 #include "components/password_manager/core/browser/password_form_metrics_recorder.h"
 #include "components/password_manager/core/browser/ui/credential_ui_entry.h"
+#include "components/strings/grit/components_strings.h"
 #include "components/url_formatter/elide_url.h"
 
 namespace password_manager {
@@ -148,4 +149,14 @@
   return usernames;
 }
 
+int GetPlatformAuthenticatorLabel() {
+#if BUILDFLAG(IS_WIN)
+  return IDS_PASSWORD_MANAGER_USE_WINDOWS_HELLO;
+#elif BUILDFLAG(IS_MAC)
+  return IDS_PASSWORD_MANAGER_USE_TOUCH_ID;
+#else
+  return IDS_PASSWORD_MANAGER_USE_GENERIC_DEVICE;
+#endif
+}
+
 }  // namespace password_manager
diff --git a/components/password_manager/core/browser/password_ui_utils.h b/components/password_manager/core/browser/password_ui_utils.h
index 7fb165f..44847ded 100644
--- a/components/password_manager/core/browser/password_ui_utils.h
+++ b/components/password_manager/core/browser/password_ui_utils.h
@@ -63,6 +63,10 @@
     const std::string& signon_realm,
     bool is_using_account_store);
 
+// Returns the resource identifier for the label describing the platform
+// authenticator, e.g. "Use TouchID".
+int GetPlatformAuthenticatorLabel();
+
 }  // namespace password_manager
 
 #endif  // COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_PASSWORD_UI_UTILS_H_
diff --git a/components/password_manager_strings.grdp b/components/password_manager_strings.grdp
index 8b9f3c8..22d58da 100644
--- a/components/password_manager_strings.grdp
+++ b/components/password_manager_strings.grdp
@@ -85,6 +85,9 @@
     <message name="IDS_PASSWORD_MANAGER_MANAGE_PASSWORDS" desc="The menu item in the password field drop down that opens the list of saved passwords.">
       Manage passwords…
     </message>
+    <message name="IDS_PASSWORD_MANAGER_MANAGE_PASSWORDS_AND_PASSKEYS" desc="The menu item in the password autofill popup that opens the list of saved passwords and passkeys. Do not translate as “password”, “passkey” is a unique concept.">
+      Manage passwords and passkeys…
+    </message>
     <message name="IDS_PASSWORD_MANAGER_GENERATE_PASSWORD" desc="The menu item in the password field drop down that starts the password generation flow.">
       Suggest strong password…
     </message>
@@ -93,6 +96,9 @@
     <message name="IDS_PASSWORD_MANAGER_MANAGE_PASSWORDS" desc="The menu item in the password field drop down that opens the list of saved passwords.">
       Manage Passwords…
     </message>
+    <message name="IDS_PASSWORD_MANAGER_MANAGE_PASSWORDS_AND_PASSKEYS" desc="The menu item in the password autofill popup that opens the list of saved passwords and passkeys. Do not translate as “password”, “passkey” is a unique concept.">
+      Manage Passwords And Passkeys…
+    </message>
     <message name="IDS_PASSWORD_MANAGER_GENERATE_PASSWORD" desc="The menu item in the password field drop down that starts the password generation flow.">
       Suggest Strong Password…
     </message>
@@ -112,4 +118,29 @@
   <message name="IDS_PASSWORD_MANAGER_PASSWORD_FOR_ACCOUNT" desc="Voice over text read if the user focuses a drop down entry to fill a password for a given account.">
     Password for <ph name="username">$1<ex>chef@google.com</ex></ph>
   </message>
+  <if expr="use_titlecase">
+    <message name="IDS_PASSWORD_MANAGER_USE_DEVICE_PASSKEY" desc="Text that appears in the password autofill popup, for the option to use a different device’s passkey. Passkeys let users use a device like their phone or computer to verify their identity, instead of a password. Do not translate as “password”; “passkey” is a unique concept.">
+      Use A Passkey On A Different Device
+    </message>
+  </if>
+  <if expr="not use_titlecase">
+    <message name="IDS_PASSWORD_MANAGER_USE_DEVICE_PASSKEY" desc="Text that appears in the password autofill popup, for the option to use a different device’s passkey. Passkeys let users use a device like their phone or computer to verify their identity, instead of a password. Do not translate as “password”; “passkey” is a unique concept.">
+      Use a passkey on a different device
+    </message>
+  </if>
+  <if expr="is_win">
+    <message name="IDS_PASSWORD_MANAGER_USE_WINDOWS_HELLO" desc="Text that appears in the password autofill popup, for the Windows Hello passkey option. Windows Hello passkeys let users use their Windows PIN or fingerprint reader to verify their identity, instead of a password. Do not translate as “password”; “passkey” is a unique concept.">
+      Use Windows Hello
+    </message>
+  </if>
+  <if expr="is_macosx">
+    <message name="IDS_PASSWORD_MANAGER_USE_TOUCH_ID" desc="Text that appears in the password autofill popup, for the Mac TouchID passkey option. Touch ID passkeys let users use their local computer password or fingerprint reader to verify their identity, instead of a password. Do not translate as “password”; “passkey” is a unique concept.">
+      Use TouchID
+    </message>
+  </if>
+  <if expr="not is_win and not is_macosx">
+    <message name="IDS_PASSWORD_MANAGER_USE_GENERIC_DEVICE" desc="Text that appears in the password autofill popup, for the ChromeOS or generic passkey option. When the user clicks on this option, Chrome will verify their identity by having them enter a PIN or scan a fingerprint. Do not translate as “password”; “passkey” is a unique concept.">
+      Use device sign-in
+    </message>
+  </if>
 </grit-part>
diff --git a/components/password_manager_strings_grdp/IDS_PASSWORD_MANAGER_MANAGE_PASSWORDS_AND_PASSKEYS.png.sha1 b/components/password_manager_strings_grdp/IDS_PASSWORD_MANAGER_MANAGE_PASSWORDS_AND_PASSKEYS.png.sha1
new file mode 100644
index 0000000..e714672e
--- /dev/null
+++ b/components/password_manager_strings_grdp/IDS_PASSWORD_MANAGER_MANAGE_PASSWORDS_AND_PASSKEYS.png.sha1
@@ -0,0 +1 @@
+b86517e73b72e59c72e22edb147488eaf1b36188
\ No newline at end of file
diff --git a/components/password_manager_strings_grdp/IDS_PASSWORD_MANAGER_USE_DEVICE_PASSKEY.png.sha1 b/components/password_manager_strings_grdp/IDS_PASSWORD_MANAGER_USE_DEVICE_PASSKEY.png.sha1
new file mode 100644
index 0000000..e714672e
--- /dev/null
+++ b/components/password_manager_strings_grdp/IDS_PASSWORD_MANAGER_USE_DEVICE_PASSKEY.png.sha1
@@ -0,0 +1 @@
+b86517e73b72e59c72e22edb147488eaf1b36188
\ No newline at end of file
diff --git a/components/password_manager_strings_grdp/IDS_PASSWORD_MANAGER_USE_GENERIC_DEVICE.png.sha1 b/components/password_manager_strings_grdp/IDS_PASSWORD_MANAGER_USE_GENERIC_DEVICE.png.sha1
new file mode 100644
index 0000000..e714672e
--- /dev/null
+++ b/components/password_manager_strings_grdp/IDS_PASSWORD_MANAGER_USE_GENERIC_DEVICE.png.sha1
@@ -0,0 +1 @@
+b86517e73b72e59c72e22edb147488eaf1b36188
\ No newline at end of file
diff --git a/components/password_manager_strings_grdp/IDS_PASSWORD_MANAGER_USE_TOUCH_ID.png.sha1 b/components/password_manager_strings_grdp/IDS_PASSWORD_MANAGER_USE_TOUCH_ID.png.sha1
new file mode 100644
index 0000000..ca2a2e5
--- /dev/null
+++ b/components/password_manager_strings_grdp/IDS_PASSWORD_MANAGER_USE_TOUCH_ID.png.sha1
@@ -0,0 +1 @@
+44535e324681a2e35cb33d9aae69297c3b795e49
\ No newline at end of file
diff --git a/components/password_manager_strings_grdp/IDS_PASSWORD_MANAGER_USE_WINDOWS_HELLO.png.sha1 b/components/password_manager_strings_grdp/IDS_PASSWORD_MANAGER_USE_WINDOWS_HELLO.png.sha1
new file mode 100644
index 0000000..5f40649
--- /dev/null
+++ b/components/password_manager_strings_grdp/IDS_PASSWORD_MANAGER_USE_WINDOWS_HELLO.png.sha1
@@ -0,0 +1 @@
+3b1ccc61164eb6869f827a4f4ead9ad452958217
\ No newline at end of file
diff --git a/components/payments/content/BUILD.gn b/components/payments/content/BUILD.gn
index c58f4bb..bb36899 100644
--- a/components/payments/content/BUILD.gn
+++ b/components/payments/content/BUILD.gn
@@ -212,6 +212,8 @@
     "android_app_communication_unittest.cc",
     "android_payment_app_factory_unittest.cc",
     "android_payment_app_unittest.cc",
+    "mock_payment_app_factory_delegate.cc",
+    "mock_payment_app_factory_delegate.h",
     "payment_event_response_util_unittest.cc",
     "payment_method_manifest_table_unittest.cc",
     "secure_payment_confirmation_model_unittest.cc",
@@ -227,6 +229,7 @@
       "payment_request_state_unittest.cc",
       "payment_request_web_contents_manager_unittest.cc",
       "payment_response_helper_unittest.cc",
+      "secure_payment_confirmation_app_factory_unittest.cc",
       "secure_payment_confirmation_app_unittest.cc",
       "service_worker_payment_app_unittest.cc",
       "test_content_payment_request_delegate.cc",
diff --git a/components/payments/content/android_payment_app_factory_unittest.cc b/components/payments/content/android_payment_app_factory_unittest.cc
index 56fbc531..921fa79 100644
--- a/components/payments/content/android_payment_app_factory_unittest.cc
+++ b/components/payments/content/android_payment_app_factory_unittest.cc
@@ -11,6 +11,7 @@
 #include "base/memory/weak_ptr.h"
 #include "components/payments/content/android_app_communication.h"
 #include "components/payments/content/android_app_communication_test_support.h"
+#include "components/payments/content/mock_payment_app_factory_delegate.h"
 #include "components/payments/content/payment_app_factory.h"
 #include "components/payments/content/payment_manifest_web_data_service.h"
 #include "components/payments/content/payment_request_spec.h"
@@ -30,92 +31,21 @@
 namespace payments {
 namespace {
 
-// A mock delegate for payment app factories.
-class MockPaymentAppFactoryDelegate : public PaymentAppFactory::Delegate {
- public:
-  explicit MockPaymentAppFactoryDelegate(content::BrowserContext* context)
-      : web_contents_(web_contents_factory_.CreateWebContents(context)),
-        top_origin_("https://top-origin.test"),
-        frame_origin_("https://frame-origin.test") {
-    SetRequestedPaymentMethod("https://play.google.com/billing");
-  }
-
-  ~MockPaymentAppFactoryDelegate() override = default;
-
-  void SetRequestedPaymentMethod(const std::string& method) {
-    auto details = mojom::PaymentDetails::New();
-    details->id = "id";
-
-    std::vector<mojom::PaymentMethodDataPtr> methods;
-    methods.emplace_back(mojom::PaymentMethodData::New());
-    methods.back()->supported_method = method;
-    methods.back()->stringified_data = "{}";
-
-    spec_ = std::make_unique<PaymentRequestSpec>(
-        mojom::PaymentOptions::New(), std::move(details), std::move(methods),
-        /*observer=*/nullptr, /*app_locale=*/"en-US");
-  }
-
-  void set_is_off_the_record() { is_off_the_record_ = true; }
-
-  // PaymentAppFactory::Delegate implementation:
-  content::WebContents* GetWebContents() override { return web_contents_; }
-  const GURL& GetTopOrigin() override { return top_origin_; }
-  const GURL& GetFrameOrigin() override { return frame_origin_; }
-  MOCK_METHOD0(GetFrameSecurityOrigin, const url::Origin&());
-  MOCK_CONST_METHOD0(GetInitiatorRenderFrameHost, content::RenderFrameHost*());
-  MOCK_CONST_METHOD0(GetInitiatorRenderFrameHostId,
-                     content::GlobalRenderFrameHostId());
-  MOCK_CONST_METHOD0(GetMethodData,
-                     const std::vector<mojom::PaymentMethodDataPtr>&());
-  MOCK_CONST_METHOD0(CreateInternalAuthenticator,
-                     std::unique_ptr<webauthn::InternalAuthenticator>());
-  MOCK_CONST_METHOD0(GetPaymentManifestWebDataService,
-                     scoped_refptr<PaymentManifestWebDataService>());
-  MOCK_METHOD0(MayCrawlForInstallablePaymentApps, bool());
-  bool IsOffTheRecord() const override { return is_off_the_record_; }
-  base::WeakPtr<PaymentRequestSpec> GetSpec() const override {
-    return spec_->AsWeakPtr();
-  }
-  MOCK_CONST_METHOD0(GetTwaPackageName, std::string());
-  MOCK_METHOD0(ShowProcessingSpinner, void());
-  MOCK_METHOD0(GetBillingProfiles,
-               const std::vector<autofill::AutofillProfile*>&());
-  MOCK_METHOD0(IsRequestedAutofillDataAvailable, bool());
-  MOCK_CONST_METHOD0(GetPaymentRequestDelegate,
-                     base::WeakPtr<ContentPaymentRequestDelegate>());
-  MOCK_METHOD1(OnPaymentAppCreated, void(std::unique_ptr<PaymentApp> app));
-  MOCK_METHOD2(OnPaymentAppCreationError,
-               void(const std::string& error_message,
-                    AppCreationFailureReason reason));
-  MOCK_CONST_METHOD0(SkipCreatingNativePaymentApps, bool());
-  MOCK_METHOD0(OnDoneCreatingPaymentApps, void());
-  MOCK_METHOD0(SetCanMakePaymentEvenWithoutApps, void());
-
-  base::WeakPtr<PaymentAppFactory::Delegate> GetWeakPtr() {
-    return weak_ptr_factory_.GetWeakPtr();
-  }
-
- private:
-  content::TestWebContentsFactory web_contents_factory_;
-  raw_ptr<content::WebContents> web_contents_;
-  GURL top_origin_;
-  GURL frame_origin_;
-  std::unique_ptr<PaymentRequestSpec> spec_;
-  bool is_off_the_record_ = false;
-  base::WeakPtrFactory<PaymentAppFactory::Delegate> weak_ptr_factory_{this};
-};
-
 // The scaffolding for testing the Android payment app factory.
 class AndroidPaymentAppFactoryTest : public testing::Test {
  public:
   AndroidPaymentAppFactoryTest()
       : support_(AndroidAppCommunicationTestSupport::Create()),
-        delegate_(support_->context()),
-        factory_(GetCommunication(support_->context())) {}
+        factory_(GetCommunication(support_->context())) {
+    auto method_data = mojom::PaymentMethodData::New();
+    method_data->supported_method = "https://play.google.com/billing";
+    method_data->stringified_data = "{}";
+    delegate_ = std::make_unique<MockPaymentAppFactoryDelegate>(
+        std::move(method_data), support_->context());
+  }
 
   std::unique_ptr<AndroidAppCommunicationTestSupport> support_;
-  MockPaymentAppFactoryDelegate delegate_;
+  std::unique_ptr<MockPaymentAppFactoryDelegate> delegate_;
   AndroidPaymentAppFactory factory_;
 
  private:
@@ -133,19 +63,19 @@
 // Aneroid payment apps on a platform that supports such apps, e.g, when ARC is
 // disabled on Chrome OS.
 TEST_F(AndroidPaymentAppFactoryTest, FactoryReturnsErrorWithoutArc) {
-  EXPECT_CALL(delegate_, GetTwaPackageName())
+  EXPECT_CALL(*delegate_, GetTwaPackageName())
       .WillRepeatedly(testing::Return("com.example.app"));
-  EXPECT_CALL(delegate_, OnDoneCreatingPaymentApps());
+  EXPECT_CALL(*delegate_, OnDoneCreatingPaymentApps());
 
-  EXPECT_CALL(delegate_,
+  EXPECT_CALL(*delegate_,
               OnPaymentAppCreationError("Unable to invoke Android apps.",
                                         AppCreationFailureReason::UNKNOWN))
       .Times(support_->AreAndroidAppsSupportedOnThisPlatform() ? 1 : 0);
-  EXPECT_CALL(delegate_, OnPaymentAppCreated(testing::_)).Times(0);
+  EXPECT_CALL(*delegate_, OnPaymentAppCreated(testing::_)).Times(0);
   support_->ExpectNoListOfPaymentAppsQuery();
   support_->ExpectNoIsReadyToPayQuery();
 
-  factory_.Create(delegate_.GetWeakPtr());
+  factory_.Create(delegate_->GetWeakPtr());
 }
 
 // The payment app factory should not return any errors when there're no Android
@@ -154,17 +84,17 @@
   // Enable invoking Android payment apps on those platforms that support it.
   auto scoped_initialization_ = support_->CreateScopedInitialization();
 
-  EXPECT_CALL(delegate_, GetTwaPackageName())
+  EXPECT_CALL(*delegate_, GetTwaPackageName())
       .WillRepeatedly(testing::Return("com.example.app"));
-  EXPECT_CALL(delegate_, OnDoneCreatingPaymentApps());
+  EXPECT_CALL(*delegate_, OnDoneCreatingPaymentApps());
 
-  EXPECT_CALL(delegate_, OnPaymentAppCreationError(testing::_, testing::_))
+  EXPECT_CALL(*delegate_, OnPaymentAppCreationError(testing::_, testing::_))
       .Times(0);
-  EXPECT_CALL(delegate_, OnPaymentAppCreated(testing::_)).Times(0);
+  EXPECT_CALL(*delegate_, OnPaymentAppCreated(testing::_)).Times(0);
   support_->ExpectQueryListOfPaymentAppsAndRespond({});
   support_->ExpectNoIsReadyToPayQuery();
 
-  factory_.Create(delegate_.GetWeakPtr());
+  factory_.Create(delegate_->GetWeakPtr());
 }
 
 // The |arg| is of type std::unique_ptr<PaymentApp>.
@@ -179,17 +109,17 @@
   // Enable invoking Android payment apps on those platforms that support it.
   auto scoped_initialization_ = support_->CreateScopedInitialization();
 
-  EXPECT_CALL(delegate_, GetTwaPackageName())
+  EXPECT_CALL(*delegate_, GetTwaPackageName())
       .WillRepeatedly(testing::Return("com.example.app"));
-  EXPECT_CALL(delegate_, GetInitiatorRenderFrameHost())
+  EXPECT_CALL(*delegate_, GetInitiatorRenderFrameHost())
       .WillRepeatedly(
-          testing::Return(delegate_.GetWebContents()->GetPrimaryMainFrame()));
-  EXPECT_CALL(delegate_, OnDoneCreatingPaymentApps());
+          testing::Return(delegate_->GetWebContents()->GetPrimaryMainFrame()));
+  EXPECT_CALL(*delegate_, OnDoneCreatingPaymentApps());
 
-  EXPECT_CALL(delegate_, OnPaymentAppCreationError(testing::_, testing::_))
+  EXPECT_CALL(*delegate_, OnPaymentAppCreationError(testing::_, testing::_))
       .Times(0);
 
-  EXPECT_CALL(delegate_,
+  EXPECT_CALL(*delegate_,
               OnPaymentAppCreated(PaymentAppMatches(
                   PaymentApp::Type::NATIVE_MOBILE_APP, "com.example.app",
                   "https://play.google.com/billing")))
@@ -209,7 +139,7 @@
   // There is no IS_READY_TO_PAY service to invoke.
   support_->ExpectNoIsReadyToPayQuery();
 
-  factory_.Create(delegate_.GetWeakPtr());
+  factory_.Create(delegate_->GetWeakPtr());
 }
 
 // The payment app factory should return one payment app and should not query
@@ -220,19 +150,19 @@
   auto scoped_initialization_ = support_->CreateScopedInitialization();
 
   // Simulate being off the record.
-  delegate_.set_is_off_the_record();
+  delegate_->set_is_off_the_record();
 
-  EXPECT_CALL(delegate_, GetTwaPackageName())
+  EXPECT_CALL(*delegate_, GetTwaPackageName())
       .WillRepeatedly(testing::Return("com.example.app"));
-  EXPECT_CALL(delegate_, GetInitiatorRenderFrameHost())
+  EXPECT_CALL(*delegate_, GetInitiatorRenderFrameHost())
       .WillRepeatedly(
-          testing::Return(delegate_.GetWebContents()->GetPrimaryMainFrame()));
-  EXPECT_CALL(delegate_, OnDoneCreatingPaymentApps());
+          testing::Return(delegate_->GetWebContents()->GetPrimaryMainFrame()));
+  EXPECT_CALL(*delegate_, OnDoneCreatingPaymentApps());
 
-  EXPECT_CALL(delegate_, OnPaymentAppCreationError(testing::_, testing::_))
+  EXPECT_CALL(*delegate_, OnPaymentAppCreationError(testing::_, testing::_))
       .Times(0);
 
-  EXPECT_CALL(delegate_,
+  EXPECT_CALL(*delegate_,
               OnPaymentAppCreated(PaymentAppMatches(
                   PaymentApp::Type::NATIVE_MOBILE_APP, "com.example.app",
                   "https://play.google.com/billing")))
@@ -252,7 +182,7 @@
   // The IS_READY_TO_PAY service should not be invoked when off the record.
   support_->ExpectNoIsReadyToPayQuery();
 
-  factory_.Create(delegate_.GetWeakPtr());
+  factory_.Create(delegate_->GetWeakPtr());
 }
 
 // The payment app factory should return the TWA payment app that returns true
@@ -262,19 +192,20 @@
   // Enable invoking Android payment apps on those platforms that support it.
   auto scoped_initialization_ = support_->CreateScopedInitialization();
 
-  EXPECT_CALL(delegate_, GetTwaPackageName())
+  EXPECT_CALL(*delegate_, GetTwaPackageName())
       .WillRepeatedly(testing::Return("com.twa.app"));
-  EXPECT_CALL(delegate_, GetInitiatorRenderFrameHost())
+  EXPECT_CALL(*delegate_, GetInitiatorRenderFrameHost())
       .WillRepeatedly(
-          testing::Return(delegate_.GetWebContents()->GetPrimaryMainFrame()));
-  EXPECT_CALL(delegate_, OnDoneCreatingPaymentApps());
+          testing::Return(delegate_->GetWebContents()->GetPrimaryMainFrame()));
+  EXPECT_CALL(*delegate_, OnDoneCreatingPaymentApps());
 
-  EXPECT_CALL(delegate_, OnPaymentAppCreationError(testing::_, testing::_))
+  EXPECT_CALL(*delegate_, OnPaymentAppCreationError(testing::_, testing::_))
       .Times(0);
 
-  EXPECT_CALL(delegate_, OnPaymentAppCreated(PaymentAppMatches(
-                             PaymentApp::Type::NATIVE_MOBILE_APP, "com.twa.app",
-                             "https://play.google.com/billing")))
+  EXPECT_CALL(*delegate_,
+              OnPaymentAppCreated(PaymentAppMatches(
+                  PaymentApp::Type::NATIVE_MOBILE_APP, "com.twa.app",
+                  "https://play.google.com/billing")))
       .Times(support_->AreAndroidAppsSupportedOnThisPlatform() ? 1 : 0);
 
   std::vector<std::unique_ptr<AndroidAppDescription>> apps;
@@ -289,7 +220,7 @@
   support_->ExpectQueryListOfPaymentAppsAndRespond(std::move(apps));
   support_->ExpectQueryIsReadyToPayAndRespond(/*is_ready_to_pay=*/true);
 
-  factory_.Create(delegate_.GetWeakPtr());
+  factory_.Create(delegate_->GetWeakPtr());
 }
 
 // The payment app factory should return no payment apps when IS_READY_TO_PAY
@@ -298,15 +229,15 @@
   // Enable invoking Android payment apps on those platforms that support it.
   auto scoped_initialization_ = support_->CreateScopedInitialization();
 
-  EXPECT_CALL(delegate_, GetTwaPackageName())
+  EXPECT_CALL(*delegate_, GetTwaPackageName())
       .WillRepeatedly(testing::Return("com.example.app"));
-  EXPECT_CALL(delegate_, GetInitiatorRenderFrameHost())
+  EXPECT_CALL(*delegate_, GetInitiatorRenderFrameHost())
       .WillRepeatedly(
-          testing::Return(delegate_.GetWebContents()->GetPrimaryMainFrame()));
-  EXPECT_CALL(delegate_, OnDoneCreatingPaymentApps());
-  EXPECT_CALL(delegate_, OnPaymentAppCreationError(testing::_, testing::_))
+          testing::Return(delegate_->GetWebContents()->GetPrimaryMainFrame()));
+  EXPECT_CALL(*delegate_, OnDoneCreatingPaymentApps());
+  EXPECT_CALL(*delegate_, OnPaymentAppCreationError(testing::_, testing::_))
       .Times(0);
-  EXPECT_CALL(delegate_, OnPaymentAppCreated(testing::_)).Times(0);
+  EXPECT_CALL(*delegate_, OnPaymentAppCreated(testing::_)).Times(0);
 
   std::vector<std::unique_ptr<AndroidAppDescription>> apps;
   apps.emplace_back(std::make_unique<AndroidAppDescription>());
@@ -320,7 +251,7 @@
   support_->ExpectQueryListOfPaymentAppsAndRespond(std::move(apps));
   support_->ExpectQueryIsReadyToPayAndRespond(/*is_ready_to_pay=*/false);
 
-  factory_.Create(delegate_.GetWeakPtr());
+  factory_.Create(delegate_->GetWeakPtr());
 }
 
 // The payment app factory should return the correct TWA payment app out of two
@@ -329,22 +260,22 @@
   // Enable invoking Android payment apps on those platforms that support it.
   auto scoped_initialization_ = support_->CreateScopedInitialization();
 
-  EXPECT_CALL(delegate_, GetTwaPackageName())
+  EXPECT_CALL(*delegate_, GetTwaPackageName())
       .WillRepeatedly(testing::Return("com.correct-twa.app"));
-  EXPECT_CALL(delegate_, GetInitiatorRenderFrameHost())
+  EXPECT_CALL(*delegate_, GetInitiatorRenderFrameHost())
       .WillRepeatedly(
-          testing::Return(delegate_.GetWebContents()->GetPrimaryMainFrame()));
-  EXPECT_CALL(delegate_, OnDoneCreatingPaymentApps());
+          testing::Return(delegate_->GetWebContents()->GetPrimaryMainFrame()));
+  EXPECT_CALL(*delegate_, OnDoneCreatingPaymentApps());
 
-  EXPECT_CALL(delegate_, OnPaymentAppCreationError(testing::_, testing::_))
+  EXPECT_CALL(*delegate_, OnPaymentAppCreationError(testing::_, testing::_))
       .Times(0);
 
-  EXPECT_CALL(delegate_,
+  EXPECT_CALL(*delegate_,
               OnPaymentAppCreated(PaymentAppMatches(
                   PaymentApp::Type::NATIVE_MOBILE_APP, "com.correct-twa.app",
                   "https://play.google.com/billing")))
       .Times(support_->AreAndroidAppsSupportedOnThisPlatform() ? 1 : 0);
-  EXPECT_CALL(delegate_,
+  EXPECT_CALL(*delegate_,
               OnPaymentAppCreated(PaymentAppMatches(
                   PaymentApp::Type::NATIVE_MOBILE_APP, "com.different.app",
                   "https://play.google.com/billing")))
@@ -372,7 +303,7 @@
   support_->ExpectQueryListOfPaymentAppsAndRespond(std::move(apps));
   support_->ExpectQueryIsReadyToPayAndRespond(/*is_ready_to_pay=*/true);
 
-  factory_.Create(delegate_.GetWeakPtr());
+  factory_.Create(delegate_->GetWeakPtr());
 }
 
 // The payment app factory does not return non-TWA payment apps when running in
@@ -381,12 +312,12 @@
   // Enable invoking Android payment apps on those platforms that support it.
   auto scoped_initialization_ = support_->CreateScopedInitialization();
 
-  EXPECT_CALL(delegate_, GetTwaPackageName())
+  EXPECT_CALL(*delegate_, GetTwaPackageName())
       .WillRepeatedly(testing::Return("com.twa.app"));
-  EXPECT_CALL(delegate_, OnDoneCreatingPaymentApps());
-  EXPECT_CALL(delegate_, OnPaymentAppCreationError(testing::_, testing::_))
+  EXPECT_CALL(*delegate_, OnDoneCreatingPaymentApps());
+  EXPECT_CALL(*delegate_, OnPaymentAppCreationError(testing::_, testing::_))
       .Times(0);
-  EXPECT_CALL(delegate_, OnPaymentAppCreated(testing::_)).Times(0);
+  EXPECT_CALL(*delegate_, OnPaymentAppCreated(testing::_)).Times(0);
 
   std::vector<std::unique_ptr<AndroidAppDescription>> apps;
   apps.emplace_back(std::make_unique<AndroidAppDescription>());
@@ -400,7 +331,7 @@
   support_->ExpectQueryListOfPaymentAppsAndRespond(std::move(apps));
   support_->ExpectNoIsReadyToPayQuery();
 
-  factory_.Create(delegate_.GetWeakPtr());
+  factory_.Create(delegate_->GetWeakPtr());
 }
 
 // The payment app factory does not return any payment apps when not running
@@ -409,15 +340,15 @@
   // Enable invoking Android payment apps on those platforms that support it.
   auto scoped_initialization_ = support_->CreateScopedInitialization();
 
-  EXPECT_CALL(delegate_, GetTwaPackageName())
+  EXPECT_CALL(*delegate_, GetTwaPackageName())
       .WillRepeatedly(testing::Return(""));
-  EXPECT_CALL(delegate_, OnDoneCreatingPaymentApps());
-  EXPECT_CALL(delegate_, OnPaymentAppCreationError(testing::_, testing::_))
+  EXPECT_CALL(*delegate_, OnDoneCreatingPaymentApps());
+  EXPECT_CALL(*delegate_, OnPaymentAppCreationError(testing::_, testing::_))
       .Times(0);
-  EXPECT_CALL(delegate_, OnPaymentAppCreated(testing::_)).Times(0);
+  EXPECT_CALL(*delegate_, OnPaymentAppCreated(testing::_)).Times(0);
   support_->ExpectNoListOfPaymentAppsQuery();
 
-  factory_.Create(delegate_.GetWeakPtr());
+  factory_.Create(delegate_->GetWeakPtr());
 }
 
 // The Android payment app factory works only with TWA specific payment methods.
@@ -426,18 +357,21 @@
   auto scoped_initialization_ = support_->CreateScopedInitialization();
 
   // "https://example.test" is not a TWA specific payment method.
-  delegate_.SetRequestedPaymentMethod("https://example.test");
+  auto method_data = mojom::PaymentMethodData::New();
+  method_data->supported_method = "https://example.test";
+  method_data->stringified_data = "{}";
+  delegate_->SetRequestedPaymentMethod(std::move(method_data));
 
-  EXPECT_CALL(delegate_, GetTwaPackageName())
+  EXPECT_CALL(*delegate_, GetTwaPackageName())
       .WillRepeatedly(testing::Return("com.example.app"));
-  EXPECT_CALL(delegate_, OnDoneCreatingPaymentApps());
-  EXPECT_CALL(delegate_, OnPaymentAppCreationError(testing::_, testing::_))
+  EXPECT_CALL(*delegate_, OnDoneCreatingPaymentApps());
+  EXPECT_CALL(*delegate_, OnPaymentAppCreationError(testing::_, testing::_))
       .Times(0);
-  EXPECT_CALL(delegate_, OnPaymentAppCreated(testing::_)).Times(0);
+  EXPECT_CALL(*delegate_, OnPaymentAppCreated(testing::_)).Times(0);
   support_->ExpectNoListOfPaymentAppsQuery();
   support_->ExpectNoIsReadyToPayQuery();
 
-  factory_.Create(delegate_.GetWeakPtr());
+  factory_.Create(delegate_->GetWeakPtr());
 }
 
 // If the TWA supports a non-TWA-specific payment method, then it should be
@@ -446,12 +380,12 @@
   // Enable invoking Android payment apps on those platforms that support it.
   auto scoped_initialization_ = support_->CreateScopedInitialization();
 
-  EXPECT_CALL(delegate_, GetTwaPackageName())
+  EXPECT_CALL(*delegate_, GetTwaPackageName())
       .WillRepeatedly(testing::Return("com.twa.app"));
-  EXPECT_CALL(delegate_, OnDoneCreatingPaymentApps());
-  EXPECT_CALL(delegate_, OnPaymentAppCreationError(testing::_, testing::_))
+  EXPECT_CALL(*delegate_, OnDoneCreatingPaymentApps());
+  EXPECT_CALL(*delegate_, OnPaymentAppCreationError(testing::_, testing::_))
       .Times(0);
-  EXPECT_CALL(delegate_, OnPaymentAppCreated(testing::_)).Times(0);
+  EXPECT_CALL(*delegate_, OnPaymentAppCreated(testing::_)).Times(0);
 
   std::vector<std::unique_ptr<AndroidAppDescription>> apps;
   apps.emplace_back(std::make_unique<AndroidAppDescription>());
@@ -465,7 +399,7 @@
   support_->ExpectQueryListOfPaymentAppsAndRespond(std::move(apps));
   support_->ExpectNoIsReadyToPayQuery();
 
-  factory_.Create(delegate_.GetWeakPtr());
+  factory_.Create(delegate_->GetWeakPtr());
 }
 
 // If the TWA supports both a TWA-specific and a non-TWA-specific payment
@@ -476,21 +410,22 @@
   // Enable invoking Android payment apps on those platforms that support it.
   auto scoped_initialization_ = support_->CreateScopedInitialization();
 
-  EXPECT_CALL(delegate_, GetTwaPackageName())
+  EXPECT_CALL(*delegate_, GetTwaPackageName())
       .WillRepeatedly(testing::Return("com.twa.app"));
-  EXPECT_CALL(delegate_, GetInitiatorRenderFrameHost())
+  EXPECT_CALL(*delegate_, GetInitiatorRenderFrameHost())
       .WillRepeatedly(
-          testing::Return(delegate_.GetWebContents()->GetPrimaryMainFrame()));
-  EXPECT_CALL(delegate_, OnDoneCreatingPaymentApps());
-  EXPECT_CALL(delegate_, OnPaymentAppCreationError(testing::_, testing::_))
+          testing::Return(delegate_->GetWebContents()->GetPrimaryMainFrame()));
+  EXPECT_CALL(*delegate_, OnDoneCreatingPaymentApps());
+  EXPECT_CALL(*delegate_, OnPaymentAppCreationError(testing::_, testing::_))
       .Times(0);
-  EXPECT_CALL(delegate_, OnPaymentAppCreated(PaymentAppMatches(
-                             PaymentApp::Type::NATIVE_MOBILE_APP, "com.twa.app",
-                             "https://play.google.com/billing")))
+  EXPECT_CALL(*delegate_,
+              OnPaymentAppCreated(PaymentAppMatches(
+                  PaymentApp::Type::NATIVE_MOBILE_APP, "com.twa.app",
+                  "https://play.google.com/billing")))
       .Times(support_->AreAndroidAppsSupportedOnThisPlatform() ? 1 : 0);
-  EXPECT_CALL(delegate_, OnPaymentAppCreated(PaymentAppMatches(
-                             PaymentApp::Type::NATIVE_MOBILE_APP, "com.twa.app",
-                             "https://example.test")))
+  EXPECT_CALL(*delegate_, OnPaymentAppCreated(PaymentAppMatches(
+                              PaymentApp::Type::NATIVE_MOBILE_APP,
+                              "com.twa.app", "https://example.test")))
       .Times(0);
 
   std::vector<std::unique_ptr<AndroidAppDescription>> apps;
@@ -513,7 +448,7 @@
   support_->ExpectQueryListOfPaymentAppsAndRespond(std::move(apps));
   support_->ExpectQueryIsReadyToPayAndRespond(/*is_ready_to_pay=*/true);
 
-  factory_.Create(delegate_.GetWeakPtr());
+  factory_.Create(delegate_->GetWeakPtr());
 }
 
 // At most one IS_READY_TO_PAY service is allowed in an Android payment app.
@@ -521,17 +456,18 @@
   // Enable invoking Android payment apps on those platforms that support it.
   auto scoped_initialization_ = support_->CreateScopedInitialization();
 
-  EXPECT_CALL(delegate_, GetTwaPackageName())
+  EXPECT_CALL(*delegate_, GetTwaPackageName())
       .WillRepeatedly(testing::Return("com.example.app"));
-  EXPECT_CALL(delegate_, OnDoneCreatingPaymentApps());
+  EXPECT_CALL(*delegate_, OnDoneCreatingPaymentApps());
 
-  EXPECT_CALL(delegate_, OnPaymentAppCreationError(
-                             "Found more than one IS_READY_TO_PAY service, but "
-                             "at most one service is supported.",
-                             AppCreationFailureReason::UNKNOWN))
+  EXPECT_CALL(*delegate_,
+              OnPaymentAppCreationError(
+                  "Found more than one IS_READY_TO_PAY service, but "
+                  "at most one service is supported.",
+                  AppCreationFailureReason::UNKNOWN))
       .Times(support_->AreAndroidAppsSupportedOnThisPlatform() ? 1 : 0);
 
-  EXPECT_CALL(delegate_, OnPaymentAppCreated(testing::_)).Times(0);
+  EXPECT_CALL(*delegate_, OnPaymentAppCreated(testing::_)).Times(0);
 
   std::vector<std::unique_ptr<AndroidAppDescription>> apps;
   apps.emplace_back(std::make_unique<AndroidAppDescription>());
@@ -549,7 +485,7 @@
   support_->ExpectQueryListOfPaymentAppsAndRespond(std::move(apps));
   support_->ExpectNoIsReadyToPayQuery();
 
-  factory_.Create(delegate_.GetWeakPtr());
+  factory_.Create(delegate_->GetWeakPtr());
 }
 
 }  // namespace
diff --git a/components/payments/content/mock_payment_app_factory_delegate.cc b/components/payments/content/mock_payment_app_factory_delegate.cc
new file mode 100644
index 0000000..f0b98b3
--- /dev/null
+++ b/components/payments/content/mock_payment_app_factory_delegate.cc
@@ -0,0 +1,33 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/payments/content/mock_payment_app_factory_delegate.h"
+
+namespace payments {
+
+MockPaymentAppFactoryDelegate::MockPaymentAppFactoryDelegate(
+    mojom::PaymentMethodDataPtr method_data,
+    content::BrowserContext* context)
+    : web_contents_(web_contents_factory_.CreateWebContents(context)),
+      top_origin_("https://top-origin.test"),
+      frame_origin_("https://frame-origin.test") {
+  SetRequestedPaymentMethod(std::move(method_data));
+}
+
+MockPaymentAppFactoryDelegate::~MockPaymentAppFactoryDelegate() = default;
+
+void MockPaymentAppFactoryDelegate::SetRequestedPaymentMethod(
+    mojom::PaymentMethodDataPtr method_data) {
+  auto details = mojom::PaymentDetails::New();
+  details->id = "id";
+
+  std::vector<mojom::PaymentMethodDataPtr> methods;
+  methods.emplace_back(std::move(method_data));
+
+  spec_ = std::make_unique<PaymentRequestSpec>(
+      mojom::PaymentOptions::New(), std::move(details), std::move(methods),
+      /*observer=*/nullptr, /*app_locale=*/"en-US");
+}
+
+}  // namespace payments
diff --git a/components/payments/content/mock_payment_app_factory_delegate.h b/components/payments/content/mock_payment_app_factory_delegate.h
new file mode 100644
index 0000000..37b863e
--- /dev/null
+++ b/components/payments/content/mock_payment_app_factory_delegate.h
@@ -0,0 +1,86 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMPONENTS_PAYMENTS_CONTENT_MOCK_PAYMENT_APP_FACTORY_DELEGATE_H_
+#define COMPONENTS_PAYMENTS_CONTENT_MOCK_PAYMENT_APP_FACTORY_DELEGATE_H_
+
+#include "base/memory/scoped_refptr.h"
+#include "base/memory/weak_ptr.h"
+#include "components/payments/content/payment_app_factory.h"
+#include "components/payments/content/payment_manifest_web_data_service.h"
+#include "components/payments/content/payment_request_spec.h"
+#include "components/webauthn/core/browser/internal_authenticator.h"
+#include "content/public/browser/global_routing_id.h"
+#include "content/public/browser/render_frame_host.h"
+#include "content/public/browser/web_contents.h"
+#include "content/public/test/test_web_contents_factory.h"
+#include "testing/gmock/include/gmock/gmock.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "third_party/blink/public/mojom/payments/payment_request.mojom.h"
+#include "url/gurl.h"
+#include "url/origin.h"
+
+namespace payments {
+
+class MockPaymentAppFactoryDelegate : public PaymentAppFactory::Delegate {
+ public:
+  MockPaymentAppFactoryDelegate(mojom::PaymentMethodDataPtr method_data,
+                                content::BrowserContext* context);
+  ~MockPaymentAppFactoryDelegate() override;
+
+  void SetRequestedPaymentMethod(mojom::PaymentMethodDataPtr method_data);
+
+  void set_is_off_the_record() { is_off_the_record_ = true; }
+
+  // PaymentAppFactory::Delegate implementation:
+  content::WebContents* GetWebContents() override { return web_contents_; }
+  const GURL& GetTopOrigin() override { return top_origin_; }
+  const GURL& GetFrameOrigin() override { return frame_origin_; }
+  MOCK_METHOD0(GetFrameSecurityOrigin, const url::Origin&());
+  MOCK_CONST_METHOD0(GetInitiatorRenderFrameHost, content::RenderFrameHost*());
+  MOCK_CONST_METHOD0(GetInitiatorRenderFrameHostId,
+                     content::GlobalRenderFrameHostId());
+  MOCK_CONST_METHOD0(GetMethodData,
+                     const std::vector<mojom::PaymentMethodDataPtr>&());
+  MOCK_CONST_METHOD0(CreateInternalAuthenticator,
+                     std::unique_ptr<webauthn::InternalAuthenticator>());
+  MOCK_CONST_METHOD0(GetPaymentManifestWebDataService,
+                     scoped_refptr<PaymentManifestWebDataService>());
+  MOCK_METHOD0(MayCrawlForInstallablePaymentApps, bool());
+  bool IsOffTheRecord() const override { return is_off_the_record_; }
+  base::WeakPtr<PaymentRequestSpec> GetSpec() const override {
+    return spec_->AsWeakPtr();
+  }
+  MOCK_CONST_METHOD0(GetTwaPackageName, std::string());
+  MOCK_METHOD0(ShowProcessingSpinner, void());
+  MOCK_METHOD0(GetBillingProfiles,
+               const std::vector<autofill::AutofillProfile*>&());
+  MOCK_METHOD0(IsRequestedAutofillDataAvailable, bool());
+  MOCK_CONST_METHOD0(GetPaymentRequestDelegate,
+                     base::WeakPtr<ContentPaymentRequestDelegate>());
+  MOCK_METHOD1(OnPaymentAppCreated, void(std::unique_ptr<PaymentApp> app));
+  MOCK_METHOD2(OnPaymentAppCreationError,
+               void(const std::string& error_message,
+                    AppCreationFailureReason reason));
+  MOCK_CONST_METHOD0(SkipCreatingNativePaymentApps, bool());
+  MOCK_METHOD0(OnDoneCreatingPaymentApps, void());
+  MOCK_METHOD0(SetCanMakePaymentEvenWithoutApps, void());
+
+  base::WeakPtr<PaymentAppFactory::Delegate> GetWeakPtr() {
+    return weak_ptr_factory_.GetWeakPtr();
+  }
+
+ private:
+  content::TestWebContentsFactory web_contents_factory_;
+  raw_ptr<content::WebContents> web_contents_;
+  GURL top_origin_;
+  GURL frame_origin_;
+  std::unique_ptr<PaymentRequestSpec> spec_;
+  bool is_off_the_record_ = false;
+  base::WeakPtrFactory<PaymentAppFactory::Delegate> weak_ptr_factory_{this};
+};
+
+}  // namespace payments
+
+#endif  // COMPONENTS_PAYMENTS_CONTENT_MOCK_PAYMENT_APP_FACTORY_DELEGATE_H_
diff --git a/components/payments/content/secure_payment_confirmation_app_factory.cc b/components/payments/content/secure_payment_confirmation_app_factory.cc
index c259111..921e424 100644
--- a/components/payments/content/secure_payment_confirmation_app_factory.cc
+++ b/components/payments/content/secure_payment_confirmation_app_factory.cc
@@ -47,6 +47,10 @@
   if (!request)
     return false;
 
+  // The remaining steps in this method check that the renderer has sent us a
+  // valid SecurePaymentConfirmationRequest, to guard against a compromised
+  // renderer.
+
   if (request->credential_ids.empty()) {
     *error_message = errors::kCredentialIdsRequired;
     return false;
@@ -85,6 +89,24 @@
     return false;
   }
 
+  if (request->rp_id.empty()) {
+    *error_message = errors::kRpIdRequired;
+    return false;
+  }
+
+  if ((!request->payee_origin.has_value() &&
+       !request->payee_name.has_value()) ||
+      (request->payee_name.has_value() && request->payee_name->empty())) {
+    *error_message = errors::kPayeeOriginOrPayeeNameRequired;
+    return false;
+  }
+
+  if (request->payee_origin.has_value() &&
+      request->payee_origin->scheme() != url::kHttpsScheme) {
+    *error_message = errors::kPayeeOriginMustBeHttps;
+    return false;
+  }
+
   return true;
 }
 
diff --git a/components/payments/content/secure_payment_confirmation_app_factory_unittest.cc b/components/payments/content/secure_payment_confirmation_app_factory_unittest.cc
new file mode 100644
index 0000000..f5d7e88b
--- /dev/null
+++ b/components/payments/content/secure_payment_confirmation_app_factory_unittest.cc
@@ -0,0 +1,243 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/payments/content/secure_payment_confirmation_app_factory.h"
+
+#include <vector>
+
+#include "base/base64.h"
+#include "components/payments/content/mock_payment_app_factory_delegate.h"
+#include "content/public/test/browser_task_environment.h"
+#include "content/public/test/test_browser_context.h"
+#include "testing/gmock/include/gmock/gmock.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "third_party/blink/public/mojom/payments/payment_request.mojom.h"
+#include "url/gurl.h"
+#include "url/origin.h"
+
+namespace payments {
+namespace {
+
+using ::testing::_;
+
+static constexpr char kChallengeBase64[] = "aaaa";
+static constexpr char kCredentialIdBase64[] = "cccc";
+
+class SecurePaymentConfirmationAppFactoryTest : public testing::Test {
+ protected:
+  SecurePaymentConfirmationAppFactoryTest() = default;
+
+  void SetUp() override {
+    ASSERT_TRUE(base::Base64Decode(kChallengeBase64, &challenge_bytes_));
+    ASSERT_TRUE(base::Base64Decode(kCredentialIdBase64, &credential_id_bytes_));
+  }
+
+  // Creates and returns a minimal SecurePaymentConfirmationRequest object with
+  // only required fields filled in to pass parsing.
+  //
+  // Note that this method adds a payee_origin but *not* a payee_name, as only
+  // one of the two are required.
+  mojom::SecurePaymentConfirmationRequestPtr
+  CreateSecurePaymentConfirmationRequest() {
+    auto spc_request = mojom::SecurePaymentConfirmationRequest::New();
+
+    spc_request->credential_ids.emplace_back(credential_id_bytes_.begin(),
+                                             credential_id_bytes_.end());
+    spc_request->challenge =
+        std::vector<uint8_t>(challenge_bytes_.begin(), challenge_bytes_.end());
+    spc_request->instrument = blink::mojom::PaymentCredentialInstrument::New();
+    spc_request->instrument->display_name = "1234";
+    spc_request->instrument->icon = GURL("https://site.example/icon.png");
+    spc_request->payee_origin =
+        url::Origin::Create(GURL("https://merchant.example"));
+    spc_request->rp_id = "rp.example";
+
+    return spc_request;
+  }
+
+  content::BrowserTaskEnvironment task_environment_;
+  content::TestBrowserContext context_;
+  SecurePaymentConfirmationAppFactory secure_payment_confirmation_app_factory_;
+  std::string challenge_bytes_;
+  std::string credential_id_bytes_;
+};
+
+// Test that parsing a valid SecureConfirmationPaymentRequest succeeds.
+TEST_F(SecurePaymentConfirmationAppFactoryTest,
+       SecureConfirmationPaymentRequest_IsValid) {
+  auto method_data = mojom::PaymentMethodData::New();
+  method_data->supported_method = "secure-payment-confirmation";
+  method_data->secure_payment_confirmation =
+      CreateSecurePaymentConfirmationRequest();
+  auto mock_delegate = std::make_unique<MockPaymentAppFactoryDelegate>(
+      std::move(method_data), &context_);
+
+  EXPECT_CALL(*mock_delegate, OnPaymentAppCreationError(_, _)).Times(0);
+  secure_payment_confirmation_app_factory_.Create(mock_delegate->GetWeakPtr());
+}
+
+// Test that parsing a SecurePaymentConfirmationRequest with an empty
+// credentialIds field fails.
+TEST_F(SecurePaymentConfirmationAppFactoryTest,
+       SecureConfirmationPaymentRequest_EmptyCredentialIds) {
+  auto method_data = mojom::PaymentMethodData::New();
+  method_data->supported_method = "secure-payment-confirmation";
+  method_data->secure_payment_confirmation =
+      CreateSecurePaymentConfirmationRequest();
+  method_data->secure_payment_confirmation->credential_ids.clear();
+  auto mock_delegate = std::make_unique<MockPaymentAppFactoryDelegate>(
+      std::move(method_data), &context_);
+
+  EXPECT_CALL(*mock_delegate, OnPaymentAppCreationError(_, _));
+  secure_payment_confirmation_app_factory_.Create(mock_delegate->GetWeakPtr());
+}
+
+// Test that parsing a SecurePaymentConfirmationRequest with an empty ID inside
+// the credentialIds field fails.
+TEST_F(SecurePaymentConfirmationAppFactoryTest,
+       SecureConfirmationPaymentRequest_EmptyId) {
+  auto method_data = mojom::PaymentMethodData::New();
+  method_data->supported_method = "secure-payment-confirmation";
+  method_data->secure_payment_confirmation =
+      CreateSecurePaymentConfirmationRequest();
+  method_data->secure_payment_confirmation->credential_ids.emplace_back();
+  auto mock_delegate = std::make_unique<MockPaymentAppFactoryDelegate>(
+      std::move(method_data), &context_);
+
+  EXPECT_CALL(*mock_delegate, OnPaymentAppCreationError(_, _));
+  secure_payment_confirmation_app_factory_.Create(mock_delegate->GetWeakPtr());
+}
+
+// Test that parsing a SecurePaymentConfirmationRequest with an empty challenge
+// fails.
+TEST_F(SecurePaymentConfirmationAppFactoryTest,
+       SecureConfirmationPaymentRequest_EmptyChallenge) {
+  auto method_data = mojom::PaymentMethodData::New();
+  method_data->supported_method = "secure-payment-confirmation";
+  method_data->secure_payment_confirmation =
+      CreateSecurePaymentConfirmationRequest();
+  method_data->secure_payment_confirmation->challenge.clear();
+  auto mock_delegate = std::make_unique<MockPaymentAppFactoryDelegate>(
+      std::move(method_data), &context_);
+
+  EXPECT_CALL(*mock_delegate, OnPaymentAppCreationError(_, _));
+  secure_payment_confirmation_app_factory_.Create(mock_delegate->GetWeakPtr());
+}
+
+// Test that parsing a SecurePaymentConfirmationRequest with an empty
+// displayName fails.
+TEST_F(SecurePaymentConfirmationAppFactoryTest,
+       SecureConfirmationPaymentRequest_EmptyDisplayName) {
+  auto method_data = mojom::PaymentMethodData::New();
+  method_data->supported_method = "secure-payment-confirmation";
+  method_data->secure_payment_confirmation =
+      CreateSecurePaymentConfirmationRequest();
+  method_data->secure_payment_confirmation->instrument->display_name.clear();
+  auto mock_delegate = std::make_unique<MockPaymentAppFactoryDelegate>(
+      std::move(method_data), &context_);
+
+  EXPECT_CALL(*mock_delegate, OnPaymentAppCreationError(_, _));
+  secure_payment_confirmation_app_factory_.Create(mock_delegate->GetWeakPtr());
+}
+
+// Test that parsing a SecurePaymentConfirmationRequest with an empty
+// icon fails.
+TEST_F(SecurePaymentConfirmationAppFactoryTest,
+       SecureConfirmationPaymentRequest_EmptyIcon) {
+  auto method_data = mojom::PaymentMethodData::New();
+  method_data->supported_method = "secure-payment-confirmation";
+  method_data->secure_payment_confirmation =
+      CreateSecurePaymentConfirmationRequest();
+  method_data->secure_payment_confirmation->instrument->icon = GURL();
+  auto mock_delegate = std::make_unique<MockPaymentAppFactoryDelegate>(
+      std::move(method_data), &context_);
+
+  EXPECT_CALL(*mock_delegate, OnPaymentAppCreationError(_, _));
+  secure_payment_confirmation_app_factory_.Create(mock_delegate->GetWeakPtr());
+}
+
+// Test that parsing a SecurePaymentConfirmationRequest with an invalid
+// icon URL fails.
+TEST_F(SecurePaymentConfirmationAppFactoryTest,
+       SecureConfirmationPaymentRequest_InvalidIcon) {
+  auto method_data = mojom::PaymentMethodData::New();
+  method_data->supported_method = "secure-payment-confirmation";
+  method_data->secure_payment_confirmation =
+      CreateSecurePaymentConfirmationRequest();
+  method_data->secure_payment_confirmation->instrument->icon =
+      GURL("not-a-url");
+  auto mock_delegate = std::make_unique<MockPaymentAppFactoryDelegate>(
+      std::move(method_data), &context_);
+
+  EXPECT_CALL(*mock_delegate, OnPaymentAppCreationError(_, _));
+  secure_payment_confirmation_app_factory_.Create(mock_delegate->GetWeakPtr());
+}
+
+// Test that parsing a SecurePaymentConfirmationRequest with an empty
+// RP domain fails.
+TEST_F(SecurePaymentConfirmationAppFactoryTest,
+       SecureConfirmationPaymentRequest_EmptyRpId) {
+  auto method_data = mojom::PaymentMethodData::New();
+  method_data->supported_method = "secure-payment-confirmation";
+  method_data->secure_payment_confirmation =
+      CreateSecurePaymentConfirmationRequest();
+  method_data->secure_payment_confirmation->rp_id.clear();
+  auto mock_delegate = std::make_unique<MockPaymentAppFactoryDelegate>(
+      std::move(method_data), &context_);
+
+  EXPECT_CALL(*mock_delegate, OnPaymentAppCreationError(_, _));
+  secure_payment_confirmation_app_factory_.Create(mock_delegate->GetWeakPtr());
+}
+
+// Test that parsing a SecurePaymentConfirmationRequest with a missing payeeName
+// and payeeOrigin fails.
+TEST_F(SecurePaymentConfirmationAppFactoryTest,
+       SecureConfirmationPaymentRequest_MissingPayeeNameAndPayeeOrigin) {
+  auto method_data = mojom::PaymentMethodData::New();
+  method_data->supported_method = "secure-payment-confirmation";
+  method_data->secure_payment_confirmation =
+      CreateSecurePaymentConfirmationRequest();
+  method_data->secure_payment_confirmation->payee_name.reset();
+  method_data->secure_payment_confirmation->payee_origin.reset();
+  auto mock_delegate = std::make_unique<MockPaymentAppFactoryDelegate>(
+      std::move(method_data), &context_);
+
+  EXPECT_CALL(*mock_delegate, OnPaymentAppCreationError(_, _));
+  secure_payment_confirmation_app_factory_.Create(mock_delegate->GetWeakPtr());
+}
+
+// Test that parsing a SecurePaymentConfirmationRequest with a present but empty
+// payeeName fails.
+TEST_F(SecurePaymentConfirmationAppFactoryTest,
+       SecureConfirmationPaymentRequest_EmptyPayeeName) {
+  auto method_data = mojom::PaymentMethodData::New();
+  method_data->supported_method = "secure-payment-confirmation";
+  method_data->secure_payment_confirmation =
+      CreateSecurePaymentConfirmationRequest();
+  method_data->secure_payment_confirmation->payee_name = "";
+  auto mock_delegate = std::make_unique<MockPaymentAppFactoryDelegate>(
+      std::move(method_data), &context_);
+
+  EXPECT_CALL(*mock_delegate, OnPaymentAppCreationError(_, _));
+  secure_payment_confirmation_app_factory_.Create(mock_delegate->GetWeakPtr());
+}
+
+// Test that parsing a SecurePaymentConfirmationRequest with a non-HTTPS
+// payeeOrigin fails.
+TEST_F(SecurePaymentConfirmationAppFactoryTest,
+       SecureConfirmationPaymentRequest_NonHttpsPayeeOrigin) {
+  auto method_data = mojom::PaymentMethodData::New();
+  method_data->supported_method = "secure-payment-confirmation";
+  method_data->secure_payment_confirmation =
+      CreateSecurePaymentConfirmationRequest();
+  method_data->secure_payment_confirmation->payee_origin =
+      url::Origin::Create(GURL("http://site.example"));
+  auto mock_delegate = std::make_unique<MockPaymentAppFactoryDelegate>(
+      std::move(method_data), &context_);
+
+  EXPECT_CALL(*mock_delegate, OnPaymentAppCreationError(_, _));
+  secure_payment_confirmation_app_factory_.Create(mock_delegate->GetWeakPtr());
+}
+}  // namespace
+}  // namespace payments
diff --git a/components/payments/core/native_error_strings.cc b/components/payments/core/native_error_strings.cc
index e97a07ef..71b81804 100644
--- a/components/payments/core/native_error_strings.cc
+++ b/components/payments/core/native_error_strings.cc
@@ -226,5 +226,17 @@
 const char kInvalidIcon[] =
     "The \"instrument.icon\" either could not be downloaded or decoded.";
 
+const char kRpIdRequired[] =
+    "The \"secure-payment-confirmation\" method requires a non-empty \"rpId\" "
+    "field.";
+
+const char kPayeeOriginOrPayeeNameRequired[] =
+    "The \"secure-payment-confirmation\" method requires a non-empty "
+    "\"payeeOrigin\" or \"payeeName\" field.";
+
+const char kPayeeOriginMustBeHttps[] =
+    "The \"secure-payment-confirmation\" method requires that the "
+    "\"payeeOrigin\" field must be https.";
+
 }  // namespace errors
 }  // namespace payments
diff --git a/components/payments/core/native_error_strings.h b/components/payments/core/native_error_strings.h
index 4a3d85ef..e0e90ce 100644
--- a/components/payments/core/native_error_strings.h
+++ b/components/payments/core/native_error_strings.h
@@ -256,6 +256,18 @@
 // not valid.
 extern const char kInvalidIcon[];
 
+// Used when the rpId field was not specified for the
+// "secure-payment-confirmation" method.
+extern const char kRpIdRequired[];
+
+// Used when neither of the payeeOrigin or payeeName fields were specified for
+// the "secure-payment-confirmation" method.
+extern const char kPayeeOriginOrPayeeNameRequired[];
+
+// Used when the payeeOrigin field was specified but was non-https for the
+// "secure-payment-confirmation" method.
+extern const char kPayeeOriginMustBeHttps[];
+
 }  // namespace errors
 }  // namespace payments
 
diff --git a/components/query_tiles/internal/tile_service_scheduler_impl.cc b/components/query_tiles/internal/tile_service_scheduler_impl.cc
index d8b4477..d49f56e 100644
--- a/components/query_tiles/internal/tile_service_scheduler_impl.cc
+++ b/components/query_tiles/internal/tile_service_scheduler_impl.cc
@@ -145,12 +145,10 @@
 }
 
 std::unique_ptr<net::BackoffEntry> TileServiceSchedulerImpl::GetBackoff() {
-  std::unique_ptr<net::BackoffEntry> result;
-  const base::Value* value = prefs_->GetList(kBackoffEntryKey);
-  if (value) {
-    result = net::BackoffEntrySerializer::DeserializeFromValue(
-        *value, backoff_policy_.get(), tick_clock_, clock_->Now());
-  }
+  const base::Value::List& value = prefs_->GetValueList(kBackoffEntryKey);
+  std::unique_ptr<net::BackoffEntry> result =
+      net::BackoffEntrySerializer::DeserializeFromList(
+          value, backoff_policy_.get(), tick_clock_, clock_->Now());
   if (!result) {
     return std::make_unique<net::BackoffEntry>(backoff_policy_.get(),
                                                tick_clock_);
diff --git a/components/query_tiles/internal/tile_service_scheduler_unittest.cc b/components/query_tiles/internal/tile_service_scheduler_unittest.cc
index ff4dda9..83ebeac7 100644
--- a/components/query_tiles/internal/tile_service_scheduler_unittest.cc
+++ b/components/query_tiles/internal/tile_service_scheduler_unittest.cc
@@ -89,13 +89,9 @@
   base::SimpleTestTickClock* tick_clock() { return &tick_clock_; }
 
   std::unique_ptr<net::BackoffEntry> GetBackoffPolicy() {
-    std::unique_ptr<net::BackoffEntry> result;
-    const base::Value* value = prefs()->GetList(kBackoffEntryKey);
-    if (value) {
-      result = net::BackoffEntrySerializer::DeserializeFromValue(
-          *value, &kTestPolicy, tick_clock(), clock()->Now());
-    }
-    return result;
+    const base::Value::List& value = prefs()->GetValueList(kBackoffEntryKey);
+    return net::BackoffEntrySerializer::DeserializeFromList(
+        value, &kTestPolicy, tick_clock(), clock()->Now());
   }
 
   void ResetTileServiceScheduler() {
diff --git a/components/signin/public/identity_manager/account_capabilities.cc b/components/signin/public/identity_manager/account_capabilities.cc
index a42da3ff2..2e7e5ea 100644
--- a/components/signin/public/identity_manager/account_capabilities.cc
+++ b/components/signin/public/identity_manager/account_capabilities.cc
@@ -43,6 +43,13 @@
 bool AccountCapabilities::AreAllCapabilitiesKnown() const {
   for (const std::string& capability_name :
        GetSupportedAccountCapabilityNames()) {
+    // kIsAllowedForMachineLearningCapabilityName has not been rolled out yet.
+    // It's expected to be unknown for now.
+    // TODO(https://crbug.com/1352081): remove this once the capability is
+    // ready.
+    if (capability_name == kIsAllowedForMachineLearningCapabilityName)
+      continue;
+
     if (GetCapabilityByName(capability_name) == signin::Tribool::kUnknown) {
       return false;
     }
diff --git a/components/user_education/webui/README.md b/components/user_education/webui/README.md
index 0b22f3b..becf217 100644
--- a/components/user_education/webui/README.md
+++ b/components/user_education/webui/README.md
@@ -28,7 +28,16 @@
 
  * Implement the `CreateHelpBubbleHandler()` method to manufacture a
    [HelpBubbleHandler](./help_bubble_handler.h).
-   
+
+   * Create a new `HelpBubbleHandler` and store it in a `unique_ptr` on each
+     call, discarding any previous handler.
+
+     * `CreateHelpBubbleHandler()` should be called exactly once by a WebUI per
+       reload.
+
+     * **Never expose a raw pointer to a `HelpBubbleHandler`** as a reload (or a
+       spurious call from a compromised WebUI) could trigger a discard.
+
    * Assign one or more unique `identifiers` that will correspond to the
      element(s) your bubble(s) will attach to. Each will be mapped to an HTML
      element by your WebUI component.
diff --git a/components/user_education/webui/help_bubble_handler.h b/components/user_education/webui/help_bubble_handler.h
index fda60ba..99d43a3f 100644
--- a/components/user_education/webui/help_bubble_handler.h
+++ b/components/user_education/webui/help_bubble_handler.h
@@ -104,6 +104,16 @@
 //   //ui/webui/resources/cr_components/help_bubble/
 //
 // Full usage recommendations can be found in README.md.
+//
+// SECURITY NOTE: a `HelpBubbleHandler` is typically owned by a
+// `WebUIController` that implements `HelpBubbleHandlerFactory`, and typically
+// has a lifespan limited to a subset of the corresponding WebUI page's
+// lifespan. Reloading the page can cause it to be discarded and recreated (and
+// a common attack vector is triggering a recreate). If a class has a raw_ptr to
+// a HelpBubbleHandler[Base], then a test MUST be added to ensure that the class
+// releases the reference when the HelpBubbleHandler is destroyed. Tests are
+// already provided for `HelpBubbleWebUI` and `TrackedElementWebUI` in
+// help_bubble_handler_unittest.cc.
 class HelpBubbleHandler : public HelpBubbleHandlerBase {
  public:
   // Create a help bubble handler (called from the HelpBubbleHandlerFactory
diff --git a/components/user_education/webui/help_bubble_handler_unittest.cc b/components/user_education/webui/help_bubble_handler_unittest.cc
index f55c2db..f3c6a98 100644
--- a/components/user_education/webui/help_bubble_handler_unittest.cc
+++ b/components/user_education/webui/help_bubble_handler_unittest.cc
@@ -377,6 +377,17 @@
   EXPECT_FALSE(help_bubble->is_open());
 }
 
+TEST_F(HelpBubbleHandlerTest, DestroyHandlerCleansUpElement) {
+  handler()->HelpBubbleAnchorVisibilityChanged(
+      kHelpBubbleHandlerTestElementIdentifier.GetName(), true);
+  const ui::ElementContext context = test_handler_->context();
+  EXPECT_TRUE(ui::ElementTracker::GetElementTracker()->IsElementVisible(
+      kHelpBubbleHandlerTestElementIdentifier, context));
+  test_handler_.reset();
+  EXPECT_FALSE(ui::ElementTracker::GetElementTracker()->IsElementVisible(
+      kHelpBubbleHandlerTestElementIdentifier, context));
+}
+
 TEST_F(HelpBubbleHandlerTest, DestroyHandlerClosesHelpBubble) {
   UNCALLED_MOCK_CALLBACK(HelpBubble::ClosedCallback, closed);
 
diff --git a/components/viz/service/display/skia_readback_pixeltest.cc b/components/viz/service/display/skia_readback_pixeltest.cc
index 0d606ac..a8e8848 100644
--- a/components/viz/service/display/skia_readback_pixeltest.cc
+++ b/components/viz/service/display/skia_readback_pixeltest.cc
@@ -24,6 +24,7 @@
 #include "components/viz/common/gpu/context_provider.h"
 #include "components/viz/service/display_embedder/skia_output_surface_impl.h"
 #include "components/viz/service/gl/gpu_service_impl.h"
+#include "components/viz/test/buildflags.h"
 #include "components/viz/test/gl_scaler_test_util.h"
 #include "components/viz/test/paths.h"
 #include "gpu/command_buffer/client/shared_image_interface.h"
@@ -551,7 +552,7 @@
       cc::MatchesBitmap(actual, expected, GetDefaultFuzzyPixelComparator()));
 }
 
-#if !BUILDFLAG(IS_ANDROID) || !defined(ARCH_CPU_X86_FAMILY)
+#if !BUILDFLAG(IS_ANDROID_EMULATOR)
 INSTANTIATE_TEST_SUITE_P(
     ,
     SkiaReadbackPixelTestNV12,
@@ -748,7 +749,7 @@
       cc::MatchesBitmap(actual, expected, GetDefaultFuzzyPixelComparator()));
 }
 
-#if !BUILDFLAG(IS_ANDROID) || !defined(ARCH_CPU_X86_FAMILY)
+#if !BUILDFLAG(IS_ANDROID_EMULATOR)
 INSTANTIATE_TEST_SUITE_P(
     ,
     SkiaReadbackPixelTestNV12WithBlit,
diff --git a/components/viz/test/BUILD.gn b/components/viz/test/BUILD.gn
index 20a486e..43c42aa 100644
--- a/components/viz/test/BUILD.gn
+++ b/components/viz/test/BUILD.gn
@@ -6,6 +6,10 @@
 import("//build/config/ui.gni")
 import("//components/viz/viz.gni")
 
+# Android on x86 architecture is likely an emulator. Some multiplanar texture
+# types don't work on Android emulator.
+is_android_emulator = is_android && (target_cpu == "x64" || target_cpu == "x86")
+
 # Generate a buildflag header to determine which tests should be enabled.
 buildflag_header("buildflags") {
   header = "buildflags.h"
@@ -14,6 +18,7 @@
     "ENABLE_GL_BACKEND_TESTS=$enable_gl_backend_tests",
     "ENABLE_VULKAN_BACKEND_TESTS=$enable_vulkan_backend_tests",
     "ENABLE_DAWN_BACKEND_TESTS=$enable_dawn_backend_tests",
+    "IS_ANDROID_EMULATOR=$is_android_emulator",
   ]
 }
 
diff --git a/components/webcrypto/algorithms/test_helpers.cc b/components/webcrypto/algorithms/test_helpers.cc
index 2c173a4f..e69cb04 100644
--- a/components/webcrypto/algorithms/test_helpers.cc
+++ b/components/webcrypto/algorithms/test_helpers.cc
@@ -330,48 +330,44 @@
                               usages, key);
 }
 
-absl::optional<base::DictionaryValue> GetJwkDictionary(
+absl::optional<base::Value::Dict> GetJwkDictionary(
     const std::vector<uint8_t>& json) {
   base::StringPiece json_string(reinterpret_cast<const char*>(json.data()),
                                 json.size());
   absl::optional<base::Value> value = base::JSONReader::Read(json_string);
   EXPECT_TRUE(value.has_value());
   EXPECT_TRUE(value.value().is_dict());
-
-  base::DictionaryValue* dict_value = nullptr;
-  if (!value.value().GetAsDictionary(&dict_value))
-    return absl::nullopt;
-
-  return std::move(*dict_value);
+  return absl::make_optional(std::move(value->GetDict()));
 }
 
 // Verifies the input dictionary contains the expected values. Exact matches are
 // required on the fields examined.
 ::testing::AssertionResult VerifyJwk(
-    const base::DictionaryValue& dict,
+    const base::Value::Dict& dict,
     const std::string& kty_expected,
     const std::string& alg_expected,
     blink::WebCryptoKeyUsageMask use_mask_expected) {
   // ---- kty
-  std::string value_string;
-  if (!dict.GetString("kty", &value_string))
+  const std::string* value_string = dict.FindString("kty");
+  if (!value_string)
     return ::testing::AssertionFailure() << "Missing 'kty'";
-  if (value_string != kty_expected)
-    return ::testing::AssertionFailure() << "Expected 'kty' to be "
-                                         << kty_expected << "but found "
-                                         << value_string;
+  if (*value_string != kty_expected)
+    return ::testing::AssertionFailure()
+           << "Expected 'kty' to be " << kty_expected << "but found "
+           << *value_string;
 
   // ---- alg
-  if (!dict.GetString("alg", &value_string))
+  value_string = dict.FindString("alg");
+  if (!value_string)
     return ::testing::AssertionFailure() << "Missing 'alg'";
-  if (value_string != alg_expected)
-    return ::testing::AssertionFailure() << "Expected 'alg' to be "
-                                         << alg_expected << " but found "
-                                         << value_string;
+  if (*value_string != alg_expected)
+    return ::testing::AssertionFailure()
+           << "Expected 'alg' to be " << alg_expected << " but found "
+           << *value_string;
 
   // ---- ext
   // always expect ext == true in this case
-  absl::optional<bool> ext_value = dict.FindBoolKey("ext");
+  absl::optional<bool> ext_value = dict.FindBool("ext");
   if (!ext_value)
     return ::testing::AssertionFailure() << "Missing 'ext'";
   if (!ext_value.value())
@@ -379,12 +375,12 @@
            << "Expected 'ext' to be true but found false";
 
   // ---- key_ops
-  const base::ListValue* key_ops;
-  if (!dict.GetList("key_ops", &key_ops))
+  const base::Value::List* key_ops = dict.FindList("key_ops");
+  if (!key_ops)
     return ::testing::AssertionFailure() << "Missing 'key_ops'";
   blink::WebCryptoKeyUsageMask key_ops_mask = 0;
   Status status =
-      GetWebCryptoUsagesFromJwkKeyOpsForTest(key_ops, &key_ops_mask);
+      GetWebCryptoUsagesFromJwkKeyOpsForTest(*key_ops, &key_ops_mask);
   if (status.IsError())
     return ::testing::AssertionFailure() << "Failure extracting 'key_ops'";
   if (key_ops_mask != use_mask_expected)
@@ -400,16 +396,16 @@
     const std::string& alg_expected,
     const std::string& k_expected_hex,
     blink::WebCryptoKeyUsageMask use_mask_expected) {
-  absl::optional<base::DictionaryValue> dict = GetJwkDictionary(json);
-  if (!dict.has_value() || dict.value().DictEmpty())
+  absl::optional<base::Value::Dict> dict = GetJwkDictionary(json);
+  if (!dict.has_value() || dict.value().empty())
     return ::testing::AssertionFailure() << "JSON parsing failed";
 
   // ---- k
-  std::string value_string;
-  if (!dict.value().GetString("k", &value_string))
+  const std::string* value_string = dict.value().FindString("k");
+  if (!value_string)
     return ::testing::AssertionFailure() << "Missing 'k'";
   std::string k_value;
-  if (!Base64DecodeUrlSafe(value_string, &k_value))
+  if (!Base64DecodeUrlSafe(*value_string, &k_value))
     return ::testing::AssertionFailure() << "Base64DecodeUrlSafe(k) failed";
   if (!base::EqualsCaseInsensitiveASCII(
           base::HexEncode(k_value.data(), k_value.size()), k_expected_hex)) {
@@ -427,16 +423,16 @@
     const std::string& n_expected_hex,
     const std::string& e_expected_hex,
     blink::WebCryptoKeyUsageMask use_mask_expected) {
-  absl::optional<base::DictionaryValue> dict = GetJwkDictionary(json);
-  if (!dict.has_value() || dict.value().DictEmpty())
+  absl::optional<base::Value::Dict> dict = GetJwkDictionary(json);
+  if (!dict.has_value() || dict.value().empty())
     return ::testing::AssertionFailure() << "JSON parsing failed";
 
   // ---- n
-  std::string value_string;
-  if (!dict.value().GetString("n", &value_string))
+  const std::string* value_string = dict.value().FindString("n");
+  if (!value_string)
     return ::testing::AssertionFailure() << "Missing 'n'";
   std::string n_value;
-  if (!Base64DecodeUrlSafe(value_string, &n_value))
+  if (!Base64DecodeUrlSafe(*value_string, &n_value))
     return ::testing::AssertionFailure() << "Base64DecodeUrlSafe(n) failed";
   if (base::HexEncode(n_value.data(), n_value.size()) != n_expected_hex) {
     return ::testing::AssertionFailure() << "'n' does not match the expected "
@@ -445,10 +441,11 @@
   // TODO(padolph): EqualsCaseInsensitiveASCII() does not work for above!
 
   // ---- e
-  if (!dict.value().GetString("e", &value_string))
+  value_string = dict.value().FindString("e");
+  if (!value_string)
     return ::testing::AssertionFailure() << "Missing 'e'";
   std::string e_value;
-  if (!Base64DecodeUrlSafe(value_string, &e_value))
+  if (!Base64DecodeUrlSafe(*value_string, &e_value))
     return ::testing::AssertionFailure() << "Base64DecodeUrlSafe(e) failed";
   if (!base::EqualsCaseInsensitiveASCII(
           base::HexEncode(e_value.data(), e_value.size()), e_expected_hex)) {
diff --git a/components/webcrypto/algorithms/test_helpers.h b/components/webcrypto/algorithms/test_helpers.h
index 77cbac5..1a24da6 100644
--- a/components/webcrypto/algorithms/test_helpers.h
+++ b/components/webcrypto/algorithms/test_helpers.h
@@ -27,11 +27,6 @@
 #define EXPECT_BYTES_EQ_HEX(expected_hex, actual_bytes) \
   EXPECT_BYTES_EQ(HexStringToBytes(expected_hex), actual_bytes)
 
-namespace base {
-class DictionaryValue;
-class Value;
-}
-
 namespace blink {
 class WebCryptoAlgorithm;
 }
@@ -149,13 +144,13 @@
                             blink::WebCryptoKey* key);
 
 // Parses a vector of JSON into a dictionary.
-absl::optional<base::DictionaryValue> GetJwkDictionary(
+absl::optional<base::Value::Dict> GetJwkDictionary(
     const std::vector<uint8_t>& json);
 
 // Verifies the input dictionary contains the expected values. Exact matches are
 // required on the fields examined.
 ::testing::AssertionResult VerifyJwk(
-    const std::unique_ptr<base::DictionaryValue>& dict,
+    const base::Value::Dict& dict,
     const std::string& kty_expected,
     const std::string& alg_expected,
     blink::WebCryptoKeyUsageMask use_mask_expected);
diff --git a/components/webcrypto/jwk.cc b/components/webcrypto/jwk.cc
index 2a6f31e..db31fa2 100644
--- a/components/webcrypto/jwk.cc
+++ b/components/webcrypto/jwk.cc
@@ -107,15 +107,14 @@
 }
 
 // Composes a Web Crypto usage mask from an array of JWK key_ops values.
-Status GetWebCryptoUsagesFromJwkKeyOps(const base::ListValue* key_ops,
+Status GetWebCryptoUsagesFromJwkKeyOps(const base::Value::List& key_ops,
                                        blink::WebCryptoKeyUsageMask* usages) {
   // This set keeps track of all unrecognized key_ops values.
   std::set<std::string> unrecognized_usages;
 
   *usages = 0;
-  base::Value::ConstListView key_ops_list = key_ops->GetListDeprecated();
-  for (size_t i = 0; i < key_ops_list.size(); ++i) {
-    const base::Value& key_op_value = key_ops_list[i];
+  for (size_t i = 0; i < key_ops.size(); ++i) {
+    const base::Value& key_op_value = key_ops[i];
     if (!key_op_value.is_string()) {
       return Status::ErrorJwkMemberWrongType(
           base::StringPrintf("key_ops[%d]", static_cast<int>(i)), "string");
@@ -145,7 +144,7 @@
 Status VerifyUsages(const JwkReader& jwk,
                     blink::WebCryptoKeyUsageMask expected_usages) {
   // JWK "key_ops" (optional) --> usages parameter
-  const base::ListValue* jwk_key_ops_value = nullptr;
+  const base::Value::List* jwk_key_ops_value = nullptr;
   bool has_jwk_key_ops;
   Status status =
       jwk.GetOptionalList("key_ops", &jwk_key_ops_value, &has_jwk_key_ops);
@@ -154,7 +153,7 @@
   blink::WebCryptoKeyUsageMask jwk_key_ops_mask = 0;
   if (has_jwk_key_ops) {
     status =
-        GetWebCryptoUsagesFromJwkKeyOps(jwk_key_ops_value, &jwk_key_ops_mask);
+        GetWebCryptoUsagesFromJwkKeyOps(*jwk_key_ops_value, &jwk_key_ops_mask);
     if (status.IsError())
       return status;
     // The input usages must be a subset of jwk_key_ops_mask.
@@ -276,7 +275,7 @@
 }
 
 Status JwkReader::GetOptionalList(const std::string& member_name,
-                                  const base::ListValue** result,
+                                  const base::Value::List** result,
                                   bool* member_exists) const {
   *member_exists = false;
   const base::Value* value = dict_.FindKey(member_name);
@@ -286,7 +285,7 @@
   if (!value->is_list())
     return Status::ErrorJwkMemberWrongType(member_name, "list");
 
-  *result = &base::Value::AsListValue(*value);
+  *result = &value->GetList();
   *member_exists = true;
   return Status::Success();
 }
@@ -399,7 +398,7 @@
 }
 
 Status GetWebCryptoUsagesFromJwkKeyOpsForTest(
-    const base::ListValue* key_ops,
+    const base::Value::List& key_ops,
     blink::WebCryptoKeyUsageMask* usages) {
   return GetWebCryptoUsagesFromJwkKeyOps(key_ops, usages);
 }
diff --git a/components/webcrypto/jwk.h b/components/webcrypto/jwk.h
index fbc92ea..2ac491a 100644
--- a/components/webcrypto/jwk.h
+++ b/components/webcrypto/jwk.h
@@ -69,7 +69,7 @@
   //
   // NOTE: |*result| is owned by the JwkReader.
   Status GetOptionalList(const std::string& member_name,
-                         const base::ListValue** result,
+                         const base::Value::List** result,
                          bool* member_exists) const;
 
   // Extracts the required string member |member_name| and saves the
@@ -132,7 +132,7 @@
 // Converts a JWK "key_ops" array to the corresponding WebCrypto usages. Used by
 // testing.
 Status GetWebCryptoUsagesFromJwkKeyOpsForTest(
-    const base::ListValue* key_ops,
+    const base::Value::List& key_ops,
     blink::WebCryptoKeyUsageMask* usages);
 
 }  // namespace webcrypto
diff --git a/content/browser/renderer_host/agent_scheduling_group_host.h b/content/browser/renderer_host/agent_scheduling_group_host.h
index be04e8ed..500039d5 100644
--- a/content/browser/renderer_host/agent_scheduling_group_host.h
+++ b/content/browser/renderer_host/agent_scheduling_group_host.h
@@ -71,7 +71,7 @@
       const SiteInstanceGroup& site_instance_group,
       RenderProcessHost& process);
 
-  // Should not be called explicitly. Use `CreateIfNeeded()` instead.
+  // Should not be called explicitly. Use `GetOrCreate()` instead.
   explicit AgentSchedulingGroupHost(RenderProcessHost& process);
   ~AgentSchedulingGroupHost() override;
 
diff --git a/content/browser/renderer_host/input/mouse_latency_browsertest.cc b/content/browser/renderer_host/input/mouse_latency_browsertest.cc
index c4b7f8e..6bc6494 100644
--- a/content/browser/renderer_host/input/mouse_latency_browsertest.cc
+++ b/content/browser/renderer_host/input/mouse_latency_browsertest.cc
@@ -256,20 +256,18 @@
   }
 
   std::string ShowTraceEventsWithId(const std::string& id_to_show,
-                                    const base::ListValue* traceEvents) {
+                                    const base::Value::List* traceEvents) {
     std::stringstream stream;
-    for (const base::Value& traceEvent_value :
-         traceEvents->GetListDeprecated()) {
+    for (const base::Value& traceEvent_value : *traceEvents) {
       if (!traceEvent_value.is_dict())
         continue;
-      const base::DictionaryValue& traceEvent =
-          base::Value::AsDictionaryValue(traceEvent_value);
+      const base::Value::Dict& traceEvent = traceEvent_value.GetDict();
 
-      std::string id;
-      if (!traceEvent.GetString("id", &id))
+      const std::string* id = traceEvent.FindString("id");
+      if (!id)
         continue;
 
-      if (id == id_to_show)
+      if (*id == id_to_show)
         stream << traceEvent;
     }
     return stream.str();
@@ -277,29 +275,28 @@
 
   void AssertTraceIdsBeginAndEnd(const base::Value& trace_data,
                                  const std::string& trace_event_name) {
-    const base::DictionaryValue* trace_data_dict;
-    ASSERT_TRUE(trace_data.GetAsDictionary(&trace_data_dict));
+    const base::Value::Dict* trace_data_dict = trace_data.GetIfDict();
+    ASSERT_TRUE(trace_data_dict);
 
-    const base::ListValue* traceEvents;
-    ASSERT_TRUE(trace_data_dict->GetList("traceEvents", &traceEvents));
+    const base::Value::List* traceEvents =
+        trace_data_dict->FindList("traceEvents");
+    ASSERT_TRUE(traceEvents);
 
     std::map<std::string, int> trace_ids;
 
-    for (const base::Value& traceEvent_value :
-         traceEvents->GetListDeprecated()) {
+    for (const base::Value& traceEvent_value : *traceEvents) {
       ASSERT_TRUE(traceEvent_value.is_dict());
-      const base::DictionaryValue& traceEvent =
-          base::Value::AsDictionaryValue(traceEvent_value);
+      const base::Value::Dict& traceEvent = traceEvent_value.GetDict();
 
-      std::string name;
-      ASSERT_TRUE(traceEvent.GetString("name", &name));
+      const std::string* name = traceEvent.FindString("name");
+      ASSERT_TRUE(name);
 
-      if (name != trace_event_name)
+      if (*name != trace_event_name)
         continue;
 
-      std::string id;
-      if (traceEvent.GetString("id", &id))
-        ++trace_ids[id];
+      const std::string* id = traceEvent.FindString("id");
+      if (id)
+        ++trace_ids[*id];
     }
 
     for (auto i : trace_ids) {
@@ -331,26 +328,25 @@
             filter->GetAckStateWaitIfNecessary());
   const base::Value& trace_data = StopTracing();
 
-  const base::DictionaryValue* trace_data_dict;
-  trace_data.GetAsDictionary(&trace_data_dict);
-  ASSERT_TRUE(trace_data.GetAsDictionary(&trace_data_dict));
+  const base::Value::Dict* trace_data_dict = trace_data.GetIfDict();
+  ASSERT_TRUE(trace_data_dict);
 
-  const base::ListValue* traceEvents;
-  ASSERT_TRUE(trace_data_dict->GetList("traceEvents", &traceEvents));
+  const base::Value::List* traceEvents =
+      trace_data_dict->FindList("traceEvents");
+  ASSERT_TRUE(traceEvents);
 
   std::vector<std::string> trace_event_names;
 
-  for (const base::Value& traceEvent_value : traceEvents->GetListDeprecated()) {
+  for (const base::Value& traceEvent_value : *traceEvents) {
     ASSERT_TRUE(traceEvent_value.is_dict());
-    const base::DictionaryValue& traceEvent =
-        base::Value::AsDictionaryValue(traceEvent_value);
+    const base::Value::Dict& traceEvent = traceEvent_value.GetDict();
 
-    std::string name;
-    ASSERT_TRUE(traceEvent.GetString("name", &name));
+    const std::string* name = traceEvent.FindString("name");
+    ASSERT_TRUE(name);
 
-    if (name != "InputLatency::MouseUp" && name != "InputLatency::MouseDown")
+    if (*name != "InputLatency::MouseUp" && *name != "InputLatency::MouseDown")
       continue;
-    trace_event_names.push_back(name);
+    trace_event_names.push_back(*name);
   }
 
   // We see two events per async slice, a begin and an end.
diff --git a/content/browser/renderer_host/input/touch_selection_controller_client_aura_browsertest.cc b/content/browser/renderer_host/input/touch_selection_controller_client_aura_browsertest.cc
index 77e0b19..97a97ab 100644
--- a/content/browser/renderer_host/input/touch_selection_controller_client_aura_browsertest.cc
+++ b/content/browser/renderer_host/input/touch_selection_controller_client_aura_browsertest.cc
@@ -42,14 +42,14 @@
 namespace {
 
 bool JSONToPoint(const std::string& str, gfx::PointF* point) {
-  std::unique_ptr<base::Value> value = base::JSONReader::ReadDeprecated(str);
+  absl::optional<base::Value> value = base::JSONReader::Read(str);
   if (!value)
     return false;
-  base::DictionaryValue* root;
-  if (!value->GetAsDictionary(&root))
+  base::Value::Dict* root = value->GetIfDict();
+  if (!root)
     return false;
-  absl::optional<double> x = root->FindDoubleKey("x");
-  absl::optional<double> y = root->FindDoubleKey("y");
+  absl::optional<double> x = root->FindDouble("x");
+  absl::optional<double> y = root->FindDouble("y");
   if (!x || !y)
     return false;
   point->set_x(*x);
diff --git a/content/test/data/accessibility/html/contenteditable-descendants-with-selection-expected-auralinux.txt b/content/test/data/accessibility/html/contenteditable-descendants-with-selection-expected-auralinux.txt
index 696762aa..997368c9 100644
--- a/content/test/data/accessibility/html/contenteditable-descendants-with-selection-expected-auralinux.txt
+++ b/content/test/data/accessibility/html/contenteditable-descendants-with-selection-expected-auralinux.txt
@@ -1,19 +1,19 @@
 [document web] caret_offset=1 selection_start=0 selection_end=1
 ++[section] editable multi-line selectable-text caret_offset=3 selection_start=0 selection_end=3
-++++[paragraph] editable selection_start=0 selection_end=3
-++++++[static] name='A contenteditable with a ' editable selection_start=0 selection_end=3
-++++++[link] name='link' editable selection_start=0 selection_end=3
-++++++++[static] name='link' editable selection_start=0 selection_end=3
-++++++[static] name=' and an ' editable selection_start=0 selection_end=3
+++++[paragraph] editable selection_start=0 selection_end=44
+++++++[static] name='A contenteditable with a ' editable selection_start=0 selection_end=25
+++++++[link] name='link' editable selection_start=0 selection_end=4
+++++++++[static] name='link' editable selection_start=0 selection_end=4
+++++++[static] name=' and an ' editable selection_start=0 selection_end=8
 ++++++[image] name='Image' editable
-++++++[static] name=' and a ' editable selection_start=0 selection_end=3
-++++++[push button] name='Button' editable selection_start=0 selection_end=3
-++++++[static] name='.' editable selection_start=0 selection_end=3
-++++[table] editable cols=1 headers=(NONE); rows=1 headers=(NONE); caption=false; spans=(all: 1x1) selection_start=0 selection_end=3
-++++++[table row] editable selection_start=0 selection_end=3
-++++++++[table cell] name='Always expose editable tables as tables.' editable (row=0, col=0, row_span=1, col_span=1, n_row_headers=0, n_col_headers=0) selection_start=0 selection_end=3
-++++++++++[static] name='Always expose editable tables as tables.' editable selection_start=0 selection_end=3
-++++[list] editable selection_start=0 selection_end=3
-++++++[list item] editable selection_start=0 selection_end=3
+++++++[static] name=' and a ' editable selection_start=0 selection_end=7
+++++++[push button] name='Button' editable selection_start=0 selection_end=6
+++++++[static] name='.' editable selection_start=0 selection_end=1
+++++[table] editable cols=1 headers=(NONE); rows=1 headers=(NONE); caption=false; spans=(all: 1x1) selection_start=0 selection_end=1
+++++++[table row] editable selection_start=0 selection_end=1
+++++++++[table cell] name='Always expose editable tables as tables.' editable (row=0, col=0, row_span=1, col_span=1, n_row_headers=0, n_col_headers=0) selection_start=0 selection_end=40
+++++++++++[static] name='Always expose editable tables as tables.' editable selection_start=0 selection_end=40
+++++[list] editable selection_start=0 selection_end=1
+++++++[list item] editable selection_start=0 selection_end=22
 ++++++++[static] name='1. ' selection_start=0 selection_end=3
-++++++++[static] name='Editable list item.' editable selection_start=0 selection_end=3
\ No newline at end of file
+++++++++[static] name='Editable list item.' editable selection_start=0 selection_end=19
diff --git a/content/test/data/accessibility/html/contenteditable-descendants-with-selection-expected-win.txt b/content/test/data/accessibility/html/contenteditable-descendants-with-selection-expected-win.txt
index f5c1324..1369d7e 100644
--- a/content/test/data/accessibility/html/contenteditable-descendants-with-selection-expected-win.txt
+++ b/content/test/data/accessibility/html/contenteditable-descendants-with-selection-expected-win.txt
@@ -1,19 +1,19 @@
 ROLE_SYSTEM_DOCUMENT READONLY FOCUSABLE ia2_hypertext='<obj0>' caret_offset=1 n_selections=1 selection_start=0 selection_end=1
 ++IA2_ROLE_SECTION value='A contenteditable with a link and an <newline><newline> and a Button.<newline>Always expose editable tables as tables.<newline>1. Editable list item.' FOCUSABLE IA2_STATE_EDITABLE IA2_STATE_MULTI_LINE ia2_hypertext='<obj0><obj1><obj2>' caret_offset=3 n_selections=1 selection_start=0 selection_end=3
-++++IA2_ROLE_PARAGRAPH IA2_STATE_EDITABLE ia2_hypertext='A contenteditable with a <obj1> and an <obj3> and a <obj5>.' n_selections=1 selection_start=0 selection_end=3
-++++++ROLE_SYSTEM_STATICTEXT name='A contenteditable with a ' IA2_STATE_EDITABLE ia2_hypertext='A contenteditable with a ' n_selections=1 selection_start=0 selection_end=3
-++++++ROLE_SYSTEM_LINK name='link' LINKED IA2_STATE_EDITABLE ia2_hypertext='link' n_selections=1 selection_start=0 selection_end=3
-++++++++ROLE_SYSTEM_STATICTEXT name='link' LINKED IA2_STATE_EDITABLE ia2_hypertext='link' n_selections=1 selection_start=0 selection_end=3
-++++++ROLE_SYSTEM_STATICTEXT name=' and an ' IA2_STATE_EDITABLE ia2_hypertext=' and an ' n_selections=1 selection_start=0 selection_end=3
+++++IA2_ROLE_PARAGRAPH IA2_STATE_EDITABLE ia2_hypertext='A contenteditable with a <obj1> and an <obj3> and a <obj5>.' n_selections=1 selection_start=0 selection_end=44
+++++++ROLE_SYSTEM_STATICTEXT name='A contenteditable with a ' IA2_STATE_EDITABLE ia2_hypertext='A contenteditable with a ' n_selections=1 selection_start=0 selection_end=25
+++++++ROLE_SYSTEM_LINK name='link' LINKED IA2_STATE_EDITABLE ia2_hypertext='link' n_selections=1 selection_start=0 selection_end=4
+++++++++ROLE_SYSTEM_STATICTEXT name='link' LINKED IA2_STATE_EDITABLE ia2_hypertext='link' n_selections=1 selection_start=0 selection_end=4
+++++++ROLE_SYSTEM_STATICTEXT name=' and an ' IA2_STATE_EDITABLE ia2_hypertext=' and an ' n_selections=1 selection_start=0 selection_end=8
 ++++++ROLE_SYSTEM_GRAPHIC name='Image' READONLY IA2_STATE_EDITABLE
-++++++ROLE_SYSTEM_STATICTEXT name=' and a ' IA2_STATE_EDITABLE ia2_hypertext=' and a ' n_selections=1 selection_start=0 selection_end=3
-++++++ROLE_SYSTEM_PUSHBUTTON name='Button' FOCUSABLE IA2_STATE_EDITABLE ia2_hypertext='Button' n_selections=1 selection_start=0 selection_end=3
-++++++ROLE_SYSTEM_STATICTEXT name='.' IA2_STATE_EDITABLE ia2_hypertext='.' n_selections=1 selection_start=0 selection_end=3
-++++ROLE_SYSTEM_TABLE IA2_STATE_EDITABLE ia2_hypertext='<obj0>' n_selections=1 selection_start=0 selection_end=3
-++++++ROLE_SYSTEM_ROW IA2_STATE_EDITABLE ia2_hypertext='<obj0>' n_selections=1 selection_start=0 selection_end=3
-++++++++ROLE_SYSTEM_CELL name='Always expose editable tables as tables.' IA2_STATE_EDITABLE ia2_hypertext='Always expose editable tables as tables.' n_selections=1 selection_start=0 selection_end=3
-++++++++++ROLE_SYSTEM_STATICTEXT name='Always expose editable tables as tables.' IA2_STATE_EDITABLE ia2_hypertext='Always expose editable tables as tables.' n_selections=1 selection_start=0 selection_end=3
-++++ROLE_SYSTEM_LIST IA2_STATE_EDITABLE ia2_hypertext='<obj0>' n_selections=1 selection_start=0 selection_end=3
-++++++ROLE_SYSTEM_LISTITEM IA2_STATE_EDITABLE ia2_hypertext='1. Editable list item.' n_selections=1 selection_start=0 selection_end=3
+++++++ROLE_SYSTEM_STATICTEXT name=' and a ' IA2_STATE_EDITABLE ia2_hypertext=' and a ' n_selections=1 selection_start=0 selection_end=7
+++++++ROLE_SYSTEM_PUSHBUTTON name='Button' FOCUSABLE IA2_STATE_EDITABLE ia2_hypertext='Button' n_selections=1 selection_start=0 selection_end=6
+++++++ROLE_SYSTEM_STATICTEXT name='.' IA2_STATE_EDITABLE ia2_hypertext='.' n_selections=1 selection_start=0 selection_end=1
+++++ROLE_SYSTEM_TABLE IA2_STATE_EDITABLE ia2_hypertext='<obj0>' n_selections=1 selection_start=0 selection_end=1
+++++++ROLE_SYSTEM_ROW IA2_STATE_EDITABLE ia2_hypertext='<obj0>' n_selections=1 selection_start=0 selection_end=1
+++++++++ROLE_SYSTEM_CELL name='Always expose editable tables as tables.' IA2_STATE_EDITABLE ia2_hypertext='Always expose editable tables as tables.' n_selections=1 selection_start=0 selection_end=40
+++++++++++ROLE_SYSTEM_STATICTEXT name='Always expose editable tables as tables.' IA2_STATE_EDITABLE ia2_hypertext='Always expose editable tables as tables.' n_selections=1 selection_start=0 selection_end=40
+++++ROLE_SYSTEM_LIST IA2_STATE_EDITABLE ia2_hypertext='<obj0>' n_selections=1 selection_start=0 selection_end=1
+++++++ROLE_SYSTEM_LISTITEM IA2_STATE_EDITABLE ia2_hypertext='1. Editable list item.' n_selections=1 selection_start=0 selection_end=22
 ++++++++ROLE_SYSTEM_STATICTEXT name='1. ' ia2_hypertext='1. ' n_selections=1 selection_start=0 selection_end=3
-++++++++ROLE_SYSTEM_STATICTEXT name='Editable list item.' IA2_STATE_EDITABLE ia2_hypertext='Editable list item.' n_selections=1 selection_start=0 selection_end=3
\ No newline at end of file
+++++++++ROLE_SYSTEM_STATICTEXT name='Editable list item.' IA2_STATE_EDITABLE ia2_hypertext='Editable list item.' n_selections=1 selection_start=0 selection_end=19
diff --git a/content/web_test/BUILD.gn b/content/web_test/BUILD.gn
index 99c4aa8c..a2afe1ce 100644
--- a/content/web_test/BUILD.gn
+++ b/content/web_test/BUILD.gn
@@ -169,6 +169,7 @@
     "//components/download/public/background_service:public",
     "//components/download/public/common:public",
     "//components/network_session_configurator/common",
+    "//components/proxy_config",
     "//content/browser:for_content_tests",  # For non-component builds.
     "//content/public/browser",  # For component builds.
     "//content/shell:content_shell_lib",
diff --git a/content/web_test/browser/DEPS b/content/web_test/browser/DEPS
index 2b457cb..69b09c5 100644
--- a/content/web_test/browser/DEPS
+++ b/content/web_test/browser/DEPS
@@ -13,7 +13,9 @@
   "+services/device/public/cpp/test",
   "+services/network/public/cpp",
   "+services/network/public/mojom",
+  "+services/proxy_resolver",
   "+services/service_manager/public/cpp",
+  "+services/service_manager/public/mojom",
   "+third_party/test_fonts",
   "+ui/aura",
   "+ui/base/resource",
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 c4517eb..40b8238 100644
--- a/content/web_test/browser/web_test_content_browser_client.cc
+++ b/content/web_test/browser/web_test_content_browser_client.cc
@@ -61,13 +61,21 @@
 #include "mojo/public/cpp/bindings/associated_receiver_set.h"
 #include "mojo/public/cpp/bindings/binder_map.h"
 #include "mojo/public/cpp/bindings/pending_receiver.h"
+#include "mojo/public/cpp/bindings/pending_remote.h"
+#include "mojo/public/cpp/bindings/remote.h"
 #include "mojo/public/cpp/bindings/remote_set.h"
 #include "mojo/public/cpp/bindings/self_owned_receiver.h"
 #include "net/net_buildflags.h"
+#include "net/proxy_resolution/proxy_config_with_annotation.h"
+#include "net/traffic_annotation/network_traffic_annotation_test_helper.h"
 #include "services/network/public/mojom/network_context.mojom.h"
 #include "services/network/public/mojom/network_service.mojom.h"
+#include "services/proxy_resolver/proxy_resolver_factory_impl.h"  // nogncheck
+#include "services/proxy_resolver/public/mojom/proxy_resolver.mojom.h"
+#include "services/service_manager/public/cpp/connector.h"
 #include "services/service_manager/public/cpp/manifest.h"
 #include "services/service_manager/public/cpp/manifest_builder.h"
+#include "services/service_manager/public/mojom/connector.mojom.h"
 #include "storage/browser/quota/quota_settings.h"
 #include "third_party/blink/public/common/associated_interfaces/associated_interface_registry.h"
 #include "third_party/blink/public/common/web_preferences/web_preferences.h"
@@ -218,6 +226,39 @@
   mojo::AssociatedRemoteSet<CounterObserver> observers_;
 };
 
+class MojoWebTestProxyResolverFactory
+    : public proxy_resolver::mojom::ProxyResolverFactory {
+ public:
+  MojoWebTestProxyResolverFactory() = default;
+
+  static mojo::PendingRemote<proxy_resolver::mojom::ProxyResolverFactory>
+  CreateWithSelfOwnedReceiver() {
+    mojo::PendingRemote<proxy_resolver::mojom::ProxyResolverFactory> remote;
+    mojo::MakeSelfOwnedReceiver(
+        std::make_unique<MojoWebTestProxyResolverFactory>(),
+        remote.InitWithNewPipeAndPassReceiver());
+    return remote;
+  }
+
+  void CreateResolver(
+      const std::string& pac_script,
+      mojo::PendingReceiver<proxy_resolver::mojom::ProxyResolver> receiver,
+      mojo::PendingRemote<
+          proxy_resolver::mojom::ProxyResolverFactoryRequestClient> client)
+      override {
+    static base::NoDestructor<
+        mojo::Remote<proxy_resolver::mojom::ProxyResolverFactory>>
+        remote;
+    if (!remote->is_bound()) {
+      static base::NoDestructor<proxy_resolver::ProxyResolverFactoryImpl>
+          factory(remote->BindNewPipeAndPassReceiver());
+    }
+
+    remote->get()->CreateResolver(pac_script, std::move(receiver),
+                                  std::move(client));
+  }
+};
+
 }  // namespace
 
 WebTestContentBrowserClient::WebTestContentBrowserClient() {
@@ -568,6 +609,18 @@
   context_params->reporting_delivery_interval =
       kReportingDeliveryIntervalTimeForWebTests;
   context_params->skip_reporting_send_permission_check = true;
+
+  const char* kProxyPacUrl = "proxy-pac-url";
+  auto pac_url =
+      base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(kProxyPacUrl);
+
+  if (!pac_url.empty()) {
+    auto proxy_config = net::ProxyConfig::CreateFromCustomPacURL(GURL(pac_url));
+    context_params->proxy_resolver_factory =
+        MojoWebTestProxyResolverFactory::CreateWithSelfOwnedReceiver();
+    context_params->initial_proxy_config = net::ProxyConfigWithAnnotation(
+        proxy_config, TRAFFIC_ANNOTATION_FOR_TESTS);
+  }
 }
 
 void WebTestContentBrowserClient::CreateFakeBluetoothChooserFactory(
diff --git a/device/BUILD.gn b/device/BUILD.gn
index a255f57..64f2e6f9 100644
--- a/device/BUILD.gn
+++ b/device/BUILD.gn
@@ -278,6 +278,7 @@
       "bluetooth/floss/exported_callback_manager_unittest.cc",
       "bluetooth/floss/floss_adapter_client_unittest.cc",
       "bluetooth/floss/floss_manager_client_unittest.cc",
+      "bluetooth/floss/floss_socket_manager_unittest.cc",
       "bluetooth/test/bluetooth_test_bluez.cc",
       "bluetooth/test/bluetooth_test_bluez.h",
     ]
diff --git a/device/bluetooth/BUILD.gn b/device/bluetooth/BUILD.gn
index 6aa8766..9299fef 100644
--- a/device/bluetooth/BUILD.gn
+++ b/device/bluetooth/BUILD.gn
@@ -449,6 +449,8 @@
         "floss/floss_features.h",
         "floss/floss_manager_client.cc",
         "floss/floss_manager_client.h",
+        "floss/floss_socket_manager.cc",
+        "floss/floss_socket_manager.h",
       ]
       if (is_chromeos) {
         import("//chromeos/dbus/config/use_real_dbus_clients.gni")
diff --git a/device/bluetooth/floss/floss_adapter_client.h b/device/bluetooth/floss/floss_adapter_client.h
index a7a22246..9e906ac8 100644
--- a/device/bluetooth/floss/floss_adapter_client.h
+++ b/device/bluetooth/floss/floss_adapter_client.h
@@ -80,25 +80,6 @@
     kRemoteDeviceTimestamp = 0xFF,
   };
 
-  // Adopted from bt_status_t in system/include/hardware/bluetooth.h
-  enum class BtifStatus {
-    kSuccess = 0,
-    kFail,
-    kNotReady,
-    kNomem,
-    kBusy,
-    kDone,
-    kUnsupported,
-    kParmInvalid,
-    kUnhandled,
-    kAuthFailure,
-    kRmtDevDown,
-    kAuthRejected,
-    kJniEnvironmentError,
-    kJniThreadAttachError,
-    kWakelockError,
-  };
-
   class Observer : public base::CheckedObserver {
    public:
     Observer(const Observer&) = delete;
diff --git a/device/bluetooth/floss/floss_dbus_client.cc b/device/bluetooth/floss/floss_dbus_client.cc
index f4fbab26..6db9b20 100644
--- a/device/bluetooth/floss/floss_dbus_client.cc
+++ b/device/bluetooth/floss/floss_dbus_client.cc
@@ -23,6 +23,8 @@
 const char kManagerObject[] = "/org/chromium/bluetooth/Manager";
 const char kAdapterObjectFormat[] = "/org/chromium/bluetooth/hci%d/adapter";
 
+const char kSocketManagerInterface[] = "org.chromium.bluetooth.SocketManager";
+
 namespace adapter {
 const char kGetAddress[] = "GetAddress";
 const char kGetName[] = "GetName";
@@ -80,6 +82,32 @@
 const char kOnHciEnabledChanged[] = "OnHciEnabledChanged";
 }  // namespace manager
 
+namespace socket_manager {
+const char kRegisterCallback[] = "RegisterCallback";
+const char kListenUsingInsecureL2capChannel[] =
+    "ListenUsingInsecureL2capChannel";
+const char kListenUsingInsecureRfcommWithServiceRecord[] =
+    "ListenUsingInsecureRfcommWithServiceRecord";
+const char kListenUsingL2capChannel[] = "ListenUsingL2capChannel";
+const char kListenUsingRfcommWithServiceRecord[] =
+    "ListenUsingRfcommWithServiceRecord";
+const char kCreateInsecureL2capChannel[] = "CreateInsecureL2capChannel";
+const char kCreateInsecureRfcommSocketToServiceRecord[] =
+    "CreateInsecureRfcommSocketToServiceRecord";
+const char kCreateL2capChannel[] = "CreateL2capChannel";
+const char kCreateRfcommSocketToServiceRecord[] =
+    "CreateRfcommSocketToServiceRecord";
+const char kAccept[] = "Accept";
+const char kClose[] = "Close";
+const char kCallbackInterface[] =
+    "org.chromium.bluetooth.SocketManagerCallback";
+
+const char kOnIncomingSocketReady[] = "OnIncomingSocketReady";
+const char kOnIncomingSocketClosed[] = "OnIncomingSocketClosed";
+const char kOnHandleIncomingConnection[] = "OnHandleIncomingConnection";
+const char kOnOutgoingConnectionResult[] = "OnOutgoingConnectionResult";
+}  // namespace socket_manager
+
 namespace {
 constexpr char kDeviceIdNameKey[] = "name";
 constexpr char kDeviceIdAddressKey[] = "address";
@@ -120,6 +148,7 @@
     "org.chromium.Error.InvalidReturn";
 const char FlossDBusClient::kErrorDoesNotExist[] =
     "org.chromium.Error.DoesNotExist";
+const char FlossDBusClient::kOptionalValueKey[] = "optional_value";
 
 // Default error handler for dbus clients is to just print the error right now.
 // TODO(abps) - Deprecate this once error handling is implemented in the upper
@@ -153,41 +182,11 @@
   return result;
 }
 
+// static
+// No-op read for a void value.
 template <>
-void FlossDBusClient::DefaultResponseWithCallback<Void>(
-    ResponseCallback<Void> callback,
-    dbus::Response* response,
-    dbus::ErrorResponse* error_response) {
-  if (response) {
-    std::move(callback).Run(Void{});
-    return;
-  }
-
-  std::move(callback).Run(base::unexpected(ErrorResponseToError(
-      kErrorNoResponse, /*default_message=*/std::string(), error_response)));
-}
-
-template <typename T>
-void FlossDBusClient::DefaultResponseWithCallback(
-    ResponseCallback<T> callback,
-    dbus::Response* response,
-    dbus::ErrorResponse* error_response) {
-  if (response) {
-    T ret;
-    dbus::MessageReader reader(response);
-
-    if (!FlossDBusClient::ReadAllDBusParams<T>(&reader, &ret)) {
-      LOG(ERROR) << "Failed reading return from response";
-      std::move(callback).Run(base::unexpected(Error(kErrorInvalidReturn, "")));
-      return;
-    }
-
-    std::move(callback).Run(ret);
-    return;
-  }
-
-  std::move(callback).Run(base::unexpected(ErrorResponseToError(
-      kErrorNoResponse, /*default_message=*/std::string(), error_response)));
+bool FlossDBusClient::ReadDBusParam(dbus::MessageReader* reader, Void* value) {
+  return true;
 }
 
 // static
@@ -213,11 +212,35 @@
 // static
 template <>
 bool FlossDBusClient::ReadDBusParam(dbus::MessageReader* reader,
+                                    uint64_t* value) {
+  return reader->PopUint64(value);
+}
+
+// static
+template <>
+bool FlossDBusClient::ReadDBusParam(dbus::MessageReader* reader,
+                                    int32_t* value) {
+  return reader->PopInt32(value);
+}
+
+// static
+template bool FlossDBusClient::ReadDBusParam<int32_t>(
+    dbus::MessageReader* reader,
+    absl::optional<int32_t>* value);
+
+// static
+template <>
+bool FlossDBusClient::ReadDBusParam(dbus::MessageReader* reader,
                                     std::string* value) {
   return reader->PopString(value);
 }
 
 // static
+template bool FlossDBusClient::ReadDBusParam<std::string>(
+    dbus::MessageReader* reader,
+    absl::optional<std::string>* value);
+
+// static
 template <>
 bool FlossDBusClient::ReadDBusParam(
     dbus::MessageReader* reader,
@@ -256,6 +279,37 @@
 }
 
 // static
+template bool FlossDBusClient::ReadDBusParam<device::BluetoothUUID>(
+    dbus::MessageReader* reader,
+    absl::optional<device::BluetoothUUID>* uuid);
+
+// static
+template <>
+bool FlossDBusClient::ReadDBusParam(dbus::MessageReader* reader,
+                                    FlossDBusClient::BtifStatus* status) {
+  uint32_t raw_type = 0;
+  bool read = FlossDBusClient::ReadDBusParam(reader, &raw_type);
+
+  if (read) {
+    *status = static_cast<FlossDBusClient::BtifStatus>(raw_type);
+  }
+
+  return read;
+}
+
+// static
+template <>
+bool FlossDBusClient::ReadDBusParam(dbus::MessageReader* reader,
+                                    base::ScopedFD* fd) {
+  return reader->PopFileDescriptor(fd);
+}
+
+// static
+template bool FlossDBusClient::ReadDBusParam<base::ScopedFD>(
+    dbus::MessageReader* reader,
+    absl::optional<base::ScopedFD>* fd);
+
+// static
 // Specialization for vector of anything.
 template <typename T>
 bool FlossDBusClient::ReadDBusParam(dbus::MessageReader* reader,
@@ -322,34 +376,75 @@
 
   writer->OpenArray("{sv}", &array);
 
-  // Serialize name
-  array.OpenDictEntry(&dict);
-  dict.AppendString(kDeviceIdNameKey);
-  dict.AppendVariantOfString(device.name);
-  array.CloseContainer(&dict);
-
-  // Serialize address
-  array.OpenDictEntry(&dict);
-  dict.AppendString(kDeviceIdAddressKey);
-  dict.AppendVariantOfString(device.address);
-  array.CloseContainer(&dict);
+  WriteDictEntry(&array, kDeviceIdNameKey, device.name);
+  WriteDictEntry(&array, kDeviceIdAddressKey, device.address);
 
   writer->CloseContainer(&array);
 }
 
 template <>
+void FlossDBusClient::WriteDBusParamIntoVariant(dbus::MessageWriter* writer,
+                                                const FlossDeviceId& device) {
+  dbus::MessageWriter variant(nullptr);
+
+  writer->OpenVariant("a{sv}", &variant);
+  WriteDBusParam(&variant, device);
+  writer->CloseContainer(&variant);
+}
+
+template <>
+void FlossDBusClient::WriteDBusParam(dbus::MessageWriter* writer,
+                                     const uint64_t& data) {
+  writer->AppendUint64(data);
+}
+
+template <>
+void FlossDBusClient::WriteDBusParamIntoVariant(dbus::MessageWriter* writer,
+                                                const uint64_t& data) {
+  writer->AppendVariantOfUint64(data);
+}
+
+template <>
 void FlossDBusClient::WriteDBusParam(dbus::MessageWriter* writer,
                                      const uint32_t& data) {
   writer->AppendUint32(data);
 }
 
 template <>
+void FlossDBusClient::WriteDBusParamIntoVariant(dbus::MessageWriter* writer,
+                                                const uint32_t& data) {
+  writer->AppendVariantOfUint32(data);
+}
+
+template void FlossDBusClient::WriteDBusParam<uint32_t>(
+    dbus::MessageWriter* writer,
+    const absl::optional<uint32_t>& data);
+
+template <>
+void FlossDBusClient::WriteDBusParam(dbus::MessageWriter* writer,
+                                     const int32_t& data) {
+  writer->AppendInt32(data);
+}
+
+template <>
+void FlossDBusClient::WriteDBusParamIntoVariant(dbus::MessageWriter* writer,
+                                                const int32_t& data) {
+  writer->AppendVariantOfInt32(data);
+}
+
+template <>
 void FlossDBusClient::WriteDBusParam(dbus::MessageWriter* writer,
                                      const std::string& data) {
   writer->AppendString(data);
 }
 
 template <>
+void FlossDBusClient::WriteDBusParamIntoVariant(dbus::MessageWriter* writer,
+                                                const std::string& data) {
+  writer->AppendVariantOfString(data);
+}
+
+template <>
 void FlossDBusClient::WriteDBusParam(dbus::MessageWriter* writer,
                                      const bool& data) {
   writer->AppendBool(data);
@@ -361,6 +456,46 @@
   writer->AppendArrayOfBytes(data.data(), data.size());
 }
 
+template <>
+void FlossDBusClient::WriteDBusParam(dbus::MessageWriter* writer,
+                                     const device::BluetoothUUID& uuid) {
+  WriteDBusParam(writer, uuid.GetBytes());
+}
+
+template <>
+void FlossDBusClient::WriteDBusParamIntoVariant(
+    dbus::MessageWriter* writer,
+    const device::BluetoothUUID& uuid) {
+  dbus::MessageWriter variant(nullptr);
+  writer->OpenVariant("ay", &variant);
+  WriteDBusParam(&variant, uuid);
+  writer->CloseContainer(&variant);
+}
+
+template <>
+void FlossDBusClient::WriteDBusParam(dbus::MessageWriter* writer,
+                                     const base::ScopedFD& fd) {
+  writer->AppendFileDescriptor(fd.get());
+}
+
+template <>
+void FlossDBusClient::WriteDBusParamIntoVariant(dbus::MessageWriter* writer,
+                                                const base::ScopedFD& fd) {
+  dbus::MessageWriter variant(nullptr);
+
+  writer->OpenVariant("h", &variant);
+  variant.AppendFileDescriptor(fd.get());
+  writer->CloseContainer(&variant);
+}
+
+template <>
+void FlossDBusClient::WriteDBusParam(
+    dbus::MessageWriter* writer,
+    const FlossDBusClient::BtifStatus& status) {
+  uint32_t raw_type = static_cast<uint32_t>(status);
+  WriteDBusParam(writer, raw_type);
+}
+
 template void FlossDBusClient::DefaultResponseWithCallback(
     ResponseCallback<bool> callback,
     dbus::Response* response,
@@ -396,6 +531,11 @@
     dbus::Response* response,
     dbus::ErrorResponse* error_response);
 
+template void FlossDBusClient::DefaultResponseWithCallback(
+    ResponseCallback<FlossDBusClient::BtifStatus> callback,
+    dbus::Response* response,
+    dbus::ErrorResponse* error_response);
+
 void FlossDBusClient::DefaultResponse(const std::string& caller,
                                       dbus::Response* response,
                                       dbus::ErrorResponse* error_response) {
diff --git a/device/bluetooth/floss/floss_dbus_client.h b/device/bluetooth/floss/floss_dbus_client.h
index 3d28fa1f..d0685c7 100644
--- a/device/bluetooth/floss/floss_dbus_client.h
+++ b/device/bluetooth/floss/floss_dbus_client.h
@@ -30,6 +30,9 @@
 extern DEVICE_BLUETOOTH_EXPORT const char kManagerObject[];
 extern DEVICE_BLUETOOTH_EXPORT const char kAdapterObjectFormat[];
 
+// Other interfaces
+extern DEVICE_BLUETOOTH_EXPORT const char kSocketManagerInterface[];
+
 namespace adapter {
 extern DEVICE_BLUETOOTH_EXPORT const char kGetAddress[];
 extern DEVICE_BLUETOOTH_EXPORT const char kGetName[];
@@ -85,6 +88,28 @@
 extern DEVICE_BLUETOOTH_EXPORT const char kOnHciEnabledChanged[];
 }  // namespace manager
 
+namespace socket_manager {
+extern DEVICE_BLUETOOTH_EXPORT const char kRegisterCallback[];
+extern DEVICE_BLUETOOTH_EXPORT const char kListenUsingInsecureL2capChannel[];
+extern DEVICE_BLUETOOTH_EXPORT const char
+    kListenUsingInsecureRfcommWithServiceRecord[];
+extern DEVICE_BLUETOOTH_EXPORT const char kListenUsingL2capChannel[];
+extern DEVICE_BLUETOOTH_EXPORT const char kListenUsingRfcommWithServiceRecord[];
+extern DEVICE_BLUETOOTH_EXPORT const char kCreateInsecureL2capChannel[];
+extern DEVICE_BLUETOOTH_EXPORT const char
+    kCreateInsecureRfcommSocketToServiceRecord[];
+extern DEVICE_BLUETOOTH_EXPORT const char kCreateL2capChannel[];
+extern DEVICE_BLUETOOTH_EXPORT const char kCreateRfcommSocketToServiceRecord[];
+extern DEVICE_BLUETOOTH_EXPORT const char kAccept[];
+extern DEVICE_BLUETOOTH_EXPORT const char kClose[];
+extern DEVICE_BLUETOOTH_EXPORT const char kCallbackInterface[];
+
+extern DEVICE_BLUETOOTH_EXPORT const char kOnIncomingSocketReady[];
+extern DEVICE_BLUETOOTH_EXPORT const char kOnIncomingSocketClosed[];
+extern DEVICE_BLUETOOTH_EXPORT const char kOnHandleIncomingConnection[];
+extern DEVICE_BLUETOOTH_EXPORT const char kOnOutgoingConnectionResult[];
+}  // namespace socket_manager
+
 // BluetoothDevice structure for DBus apis.
 struct DEVICE_BLUETOOTH_EXPORT FlossDeviceId {
   std::string address;
@@ -169,19 +194,41 @@
 
 // Restrict all access to DBus client initialization to FlossDBusManager so we
 // can enforce the proper ordering of initialization and shutdowns.
-class FlossDBusClient {
+class DEVICE_BLUETOOTH_EXPORT FlossDBusClient {
  public:
+  // Adopted from bt_status_t in system/include/hardware/bluetooth.h
+  enum class BtifStatus : uint32_t {
+    kSuccess = 0,
+    kFail,
+    kNotReady,
+    kNomem,
+    kBusy,
+    kDone,
+    kUnsupported,
+    kParmInvalid,
+    kUnhandled,
+    kAuthFailure,
+    kRmtDevDown,
+    kAuthRejected,
+    kJniEnvironmentError,
+    kJniThreadAttachError,
+    kWakelockError,
+  };
+
   // Error: DBus error.
-  static const char DEVICE_BLUETOOTH_EXPORT kErrorDBus[];
+  static const char kErrorDBus[];
 
   // Error: No response from bus.
-  static const char DEVICE_BLUETOOTH_EXPORT kErrorNoResponse[];
+  static const char kErrorNoResponse[];
 
   // Error: Invalid parameters.
-  static const char DEVICE_BLUETOOTH_EXPORT kErrorInvalidParameters[];
+  static const char kErrorInvalidParameters[];
 
   // Error: Invalid return.
-  static const char DEVICE_BLUETOOTH_EXPORT kErrorInvalidReturn[];
+  static const char kErrorInvalidReturn[];
+
+  // Property key for absl::Optional dbus serialization.
+  static const char kOptionalValueKey[];
 
   // Error: does not exist.
   static const char DEVICE_BLUETOOTH_EXPORT kErrorDoesNotExist[];
@@ -189,47 +236,125 @@
   // Generalized DBus serialization (used for generalized method call
   // invocation).
   template <typename T>
-  static void DEVICE_BLUETOOTH_EXPORT
-  WriteDBusParam(dbus::MessageWriter* writer, const T& data);
+  static void WriteDBusParam(dbus::MessageWriter* writer, const T& data);
+
+  // Generalized writer for container types using variants (i.e. a{sv}).
+  template <typename T>
+  static void WriteDBusParamIntoVariant(dbus::MessageWriter* writer,
+                                        const T& data);
+
+  // Optional container type needs to be explicitly listed here.
+  template <typename T>
+  static void WriteDBusParam(dbus::MessageWriter* writer,
+                             const absl::optional<T>& data) {
+    dbus::MessageWriter array(nullptr);
+    dbus::MessageWriter dict(nullptr);
+
+    writer->OpenArray("{sv}", &array);
+
+    // Only serialize optional value if it exists.
+    if (data) {
+      array.OpenDictEntry(&dict);
+      dict.AppendString(kOptionalValueKey);
+      WriteDBusParamIntoVariant<T>(&dict, *data);
+      array.CloseContainer(&dict);
+    }
+    writer->CloseContainer(&array);
+  }
+
+  template <typename T>
+  static void WriteDBusParamIntoVariant(dbus::MessageWriter* writer,
+                                        const absl::optional<T>& data) {
+    dbus::MessageWriter variant(nullptr);
+    writer->OpenVariant("a{sv}", &variant);
+    WriteDBusParam(&variant, data);
+    writer->CloseContainer(&variant);
+  }
 
   // Base case for variadic write.
-  static void DEVICE_BLUETOOTH_EXPORT
-  WriteAllDBusParams(dbus::MessageWriter* writer) {}
+  static void WriteAllDBusParams(dbus::MessageWriter* writer) {}
 
   // Variadic write method that expands to multiple WriteDBusParam calls.
   template <typename T, typename... Args>
-  static void DEVICE_BLUETOOTH_EXPORT
-  WriteAllDBusParams(dbus::MessageWriter* writer,
-                     const T& first,
-                     const Args&... args) {
+  static void WriteAllDBusParams(dbus::MessageWriter* writer,
+                                 const T& first,
+                                 const Args&... args) {
     WriteDBusParam(writer, first);
     WriteAllDBusParams(writer, args...);
   }
 
+  template <typename T>
+  static void WriteDictEntry(dbus::MessageWriter* writer,
+                             const std::string& key,
+                             const T& value) {
+    dbus::MessageWriter dict(nullptr);
+
+    writer->OpenDictEntry(&dict);
+    dict.AppendString(key);
+    WriteDBusParamIntoVariant(&dict, value);
+    writer->CloseContainer(&dict);
+  }
+
   // Generalized DBus deserialization (used for generalized method call returns
   // and can be used for exported methods as well). Implement for each type that
   // you want deserialized.
   template <typename T>
-  static bool DEVICE_BLUETOOTH_EXPORT ReadDBusParam(dbus::MessageReader* reader,
-                                                    T* value);
+  static bool ReadDBusParam(dbus::MessageReader* reader, T* value);
+
+  // Generalized reader for container types using variants (i.e. a{sv}).
+  template <typename T>
+  static bool ReadDBusParamFromVariant(dbus::MessageReader* reader, T* value) {
+    dbus::MessageReader variant_reader(nullptr);
+    if (!reader->PopVariant(&variant_reader)) {
+      return false;
+    }
+
+    return ReadDBusParam(&variant_reader, value);
+  }
 
   // Container type needs to be explicitly listed here.
   template <typename T>
-  static bool DEVICE_BLUETOOTH_EXPORT ReadDBusParam(dbus::MessageReader* reader,
-                                                    std::vector<T>* value);
+  static bool ReadDBusParam(dbus::MessageReader* reader, std::vector<T>* value);
 
-  // Base case for variadic read.
-  static bool DEVICE_BLUETOOTH_EXPORT
-  ReadAllDBusParams(dbus::MessageReader* reader) {
+  // Optional container type needs to be explicitly implemented here.
+  template <typename T>
+  static bool ReadDBusParam(dbus::MessageReader* reader,
+                            absl::optional<T>* value) {
+    dbus::MessageReader array(nullptr);
+    dbus::MessageReader dict(nullptr);
+
+    T inner;
+
+    if (!reader->PopArray(&array)) {
+      return false;
+    }
+
+    while (array.PopDictEntry(&dict)) {
+      std::string key;
+      dict.PopString(&key);
+
+      if (key == kOptionalValueKey) {
+        if (!ReadDBusParamFromVariant<T>(&dict, &inner)) {
+          return false;
+        }
+
+        *value = std::move(absl::optional<T>(std::move(inner)));
+      }
+    }
+
     return true;
   }
 
+  // Base case for variadic read.
+  static bool ReadAllDBusParams(dbus::MessageReader* reader) { return true; }
+
   // Variadic read method that expands to multiple ReadDBusParam calls.
   // Individual calls to |ReadDBusParam| must succeed before the next call is
   // done.
   template <typename T, typename... Args>
-  static bool DEVICE_BLUETOOTH_EXPORT
-  ReadAllDBusParams(dbus::MessageReader* reader, T* first, Args*... args) {
+  static bool ReadAllDBusParams(dbus::MessageReader* reader,
+                                T* first,
+                                Args*... args) {
     return ReadDBusParam(reader, first) && ReadAllDBusParams(reader, args...);
   }
 
@@ -293,10 +418,27 @@
   // Default handler that runs |callback| with the callback with an optional
   // return and optional error.
   template <typename T>
-  void DEVICE_BLUETOOTH_EXPORT
-  DefaultResponseWithCallback(ResponseCallback<T> callback,
-                              dbus::Response* response,
-                              dbus::ErrorResponse* error_response);
+  void DefaultResponseWithCallback(ResponseCallback<T> callback,
+                                   dbus::Response* response,
+                                   dbus::ErrorResponse* error_response) {
+    if (response) {
+      T ret;
+      dbus::MessageReader reader(response);
+
+      if (!FlossDBusClient::ReadAllDBusParams<T>(&reader, &ret)) {
+        LOG(ERROR) << "Failed reading return from response";
+        std::move(callback).Run(
+            base::unexpected(Error(kErrorInvalidReturn, "")));
+        return;
+      }
+
+      std::move(callback).Run(ret);
+      return;
+    }
+
+    std::move(callback).Run(base::unexpected(ErrorResponseToError(
+        kErrorNoResponse, /*default_message=*/std::string(), error_response)));
+  }
 
   // Default handler for a response. It will either log the error response or
   // print |caller| to VLOG. |caller| should be the name of the DBus method that
diff --git a/device/bluetooth/floss/floss_socket_manager.cc b/device/bluetooth/floss/floss_socket_manager.cc
new file mode 100644
index 0000000..dcf46f1
--- /dev/null
+++ b/device/bluetooth/floss/floss_socket_manager.cc
@@ -0,0 +1,655 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+#include "device/bluetooth/floss/floss_socket_manager.h"
+
+#include "base/types/expected.h"
+
+namespace floss {
+namespace {
+void HandleExported(const std::string& method_name,
+                    const std::string& interface_name,
+                    const std::string& object_path,
+                    bool success) {
+  DVLOG(1) << (success ? "Successfully exported " : "Failed to export ")
+           << method_name << " on interface = " << interface_name
+           << ", object = " << object_path;
+}
+
+constexpr char kListeningPropId[] = "id";
+constexpr char kListeningPropSockType[] = "sock_type";
+constexpr char kListeningPropFlags[] = "flags";
+constexpr char kListeningPropPsm[] = "psm";
+constexpr char kListeningPropChannel[] = "channel";
+constexpr char kListeningPropName[] = "name";
+constexpr char kListeningPropUuid[] = "uuid";
+
+constexpr char kConnectingPropId[] = "id";
+constexpr char kConnectingPropRemoteDevice[] = "remote_device";
+constexpr char kConnectingPropSockType[] = "sock_type";
+constexpr char kConnectingPropFlags[] = "flags";
+constexpr char kConnectingPropFd[] = "fd";
+constexpr char kConnectingPropPort[] = "port";
+constexpr char kConnectingPropUuid[] = "uuid";
+constexpr char kConnectingPropMaxRxSize[] = "max_rx_size";
+constexpr char kConnectingPropMaxTxSize[] = "max_tx_size";
+
+constexpr char kResultPropStatus[] = "status";
+constexpr char kResultPropId[] = "id";
+}  // namespace
+
+template <>
+bool FlossDBusClient::ReadDBusParam(dbus::MessageReader* reader,
+                                    FlossSocketManager::SocketType* type) {
+  uint32_t raw_type = 0;
+  bool read = FlossDBusClient::ReadDBusParam(reader, &raw_type);
+
+  if (read) {
+    *type = static_cast<FlossSocketManager::SocketType>(raw_type);
+  }
+
+  return read;
+}
+
+template <>
+void FlossDBusClient::WriteDBusParam(
+    dbus::MessageWriter* writer,
+    const FlossSocketManager::SocketType& type) {
+  WriteDBusParam(writer, static_cast<uint32_t>(type));
+}
+
+template <>
+void FlossDBusClient::WriteDBusParamIntoVariant(
+    dbus::MessageWriter* writer,
+    const FlossSocketManager::SocketType& type) {
+  WriteDBusParamIntoVariant(writer, static_cast<uint32_t>(type));
+}
+
+template <>
+bool FlossDBusClient::ReadDBusParam(
+    dbus::MessageReader* reader,
+    FlossSocketManager::FlossListeningSocket* socket) {
+  dbus::MessageReader array(nullptr);
+  dbus::MessageReader dict(nullptr);
+
+  std::map<std::string, bool> required_keys = {
+      {kListeningPropId, false},      {kListeningPropSockType, false},
+      {kListeningPropFlags, false},   {kListeningPropPsm, false},
+      {kListeningPropChannel, false}, {kListeningPropName, false},
+      {kListeningPropUuid, false},
+  };
+
+  if (!reader->PopArray(&array)) {
+    return false;
+  }
+
+  while (array.PopDictEntry(&dict)) {
+    std::string key;
+    dict.PopString(&key);
+
+    if (required_keys.find(key) != required_keys.end()) {
+      if (key == kListeningPropId) {
+        required_keys[key] = ReadDBusParamFromVariant(&dict, &socket->id);
+      } else if (key == kListeningPropSockType) {
+        required_keys[key] = ReadDBusParamFromVariant(&dict, &socket->type);
+      } else if (key == kListeningPropFlags) {
+        required_keys[key] = ReadDBusParamFromVariant(&dict, &socket->flags);
+      } else if (key == kListeningPropPsm) {
+        required_keys[key] =
+            ReadDBusParamFromVariant<absl::optional<int>>(&dict, &socket->psm);
+      } else if (key == kListeningPropChannel) {
+        required_keys[key] = ReadDBusParamFromVariant<absl::optional<int>>(
+            &dict, &socket->channel);
+      } else if (key == kListeningPropName) {
+        required_keys[key] =
+            ReadDBusParamFromVariant<absl::optional<std::string>>(
+                &dict, &socket->name);
+      } else if (key == kListeningPropUuid) {
+        required_keys[key] =
+            ReadDBusParamFromVariant<absl::optional<device::BluetoothUUID>>(
+                &dict, &socket->uuid);
+      }
+    }
+  }
+
+  // Make sure all required keys were correctly parsed.
+  bool result = true;
+  for (auto [key, found] : required_keys) {
+    result = result && found;
+  }
+
+  return result;
+}
+
+template bool
+FlossDBusClient::ReadDBusParam<FlossSocketManager::FlossListeningSocket>(
+    dbus::MessageReader* reader,
+    absl::optional<FlossSocketManager::FlossListeningSocket>* socket);
+
+template <>
+bool FlossDBusClient::ReadDBusParam(dbus::MessageReader* reader,
+                                    FlossSocketManager::FlossSocket* socket) {
+  dbus::MessageReader array(nullptr);
+  dbus::MessageReader dict(nullptr);
+  std::map<std::string, bool> required_keys = {
+      {kConnectingPropId, false},        {kConnectingPropRemoteDevice, false},
+      {kConnectingPropSockType, false},  {kConnectingPropFlags, false},
+      {kConnectingPropFd, false},        {kConnectingPropPort, false},
+      {kConnectingPropUuid, false},      {kConnectingPropMaxRxSize, false},
+      {kConnectingPropMaxTxSize, false},
+  };
+  if (!reader->PopArray(&array)) {
+    return false;
+  }
+
+  while (array.PopDictEntry(&dict)) {
+    std::string key;
+    dict.PopString(&key);
+
+    if (required_keys.find(key) != required_keys.end()) {
+      if (key == kConnectingPropId) {
+        required_keys[key] = ReadDBusParamFromVariant(&dict, &socket->id);
+      } else if (key == kConnectingPropRemoteDevice) {
+        required_keys[key] =
+            ReadDBusParamFromVariant(&dict, &socket->remote_device);
+      } else if (key == kConnectingPropSockType) {
+        required_keys[key] = ReadDBusParamFromVariant(&dict, &socket->type);
+      } else if (key == kConnectingPropFlags) {
+        required_keys[key] = ReadDBusParamFromVariant(&dict, &socket->flags);
+      } else if (key == kConnectingPropFd) {
+        required_keys[key] =
+            ReadDBusParamFromVariant<absl::optional<base::ScopedFD>>(
+                &dict, &socket->fd);
+      } else if (key == kConnectingPropPort) {
+        required_keys[key] = ReadDBusParamFromVariant(&dict, &socket->port);
+      } else if (key == kConnectingPropUuid) {
+        required_keys[key] =
+            ReadDBusParamFromVariant<absl::optional<device::BluetoothUUID>>(
+                &dict, &socket->uuid);
+      } else if (key == kConnectingPropMaxRxSize) {
+        required_keys[key] =
+            ReadDBusParamFromVariant(&dict, &socket->max_rx_size);
+      } else if (key == kConnectingPropMaxTxSize) {
+        required_keys[key] =
+            ReadDBusParamFromVariant(&dict, &socket->max_tx_size);
+      }
+    }
+  }
+
+  // Make sure all required keys were correctly parsed.
+  bool result = true;
+  for (auto [key, found] : required_keys) {
+    result = result && found;
+  }
+
+  return result;
+}
+
+template bool FlossDBusClient::ReadDBusParam<FlossSocketManager::FlossSocket>(
+    dbus::MessageReader* reader,
+    absl::optional<FlossSocketManager::FlossSocket>* socket);
+
+template <>
+void FlossDBusClient::WriteDBusParam(
+    dbus::MessageWriter* writer,
+    const FlossSocketManager::FlossSocket& socket) {
+  dbus::MessageWriter array(nullptr);
+  dbus::MessageWriter dict(nullptr);
+
+  writer->OpenArray("{sv}", &array);
+
+  WriteDictEntry(&array, kConnectingPropId, socket.id);
+  WriteDictEntry(&array, kConnectingPropRemoteDevice, socket.remote_device);
+  WriteDictEntry(&array, kConnectingPropSockType, socket.type);
+  WriteDictEntry(&array, kConnectingPropFlags, socket.flags);
+  WriteDictEntry(&array, kConnectingPropFd, socket.fd);
+  WriteDictEntry(&array, kConnectingPropPort, socket.port);
+  WriteDictEntry(&array, kConnectingPropUuid, socket.uuid);
+  WriteDictEntry(&array, kConnectingPropMaxRxSize, socket.max_rx_size);
+  WriteDictEntry(&array, kConnectingPropMaxTxSize, socket.max_tx_size);
+
+  writer->CloseContainer(&array);
+}
+
+template <>
+void FlossDBusClient::WriteDBusParamIntoVariant(
+    dbus::MessageWriter* writer,
+    const FlossSocketManager::FlossSocket& socket) {
+  dbus::MessageWriter variant(nullptr);
+
+  writer->OpenVariant("a{sv}", &variant);
+  WriteDBusParam(&variant, socket);
+  writer->CloseContainer(&variant);
+}
+
+template <>
+bool FlossDBusClient::ReadDBusParam(
+    dbus::MessageReader* reader,
+    FlossSocketManager::SocketResult* socket_result) {
+  dbus::MessageReader array(nullptr);
+  dbus::MessageReader dict(nullptr);
+
+  std::map<std::string, bool> required_keys = {
+      {kResultPropStatus, false},
+      {kResultPropId, false},
+  };
+
+  if (!reader->PopArray(&array)) {
+    return false;
+  }
+
+  while (array.PopDictEntry(&dict)) {
+    std::string key;
+    dict.PopString(&key);
+
+    if (required_keys.find(key) != required_keys.end()) {
+      if (key == kResultPropStatus) {
+        required_keys[key] =
+            ReadDBusParamFromVariant(&dict, &socket_result->status);
+      } else if (key == kResultPropId) {
+        required_keys[key] =
+            ReadDBusParamFromVariant(&dict, &socket_result->id);
+      }
+    }
+  }
+
+  // Make sure all required keys were correctly parsed.
+  bool result = true;
+  for (auto [key, found] : required_keys) {
+    result = result && found;
+  }
+
+  return result;
+}
+
+template <>
+void FlossDBusClient::WriteDBusParam(
+    dbus::MessageWriter* writer,
+    const FlossSocketManager::SocketResult& socket_result) {
+  dbus::MessageWriter array(nullptr);
+  dbus::MessageWriter dict(nullptr);
+
+  writer->OpenArray("{sv}", &array);
+
+  WriteDictEntry(&array, kResultPropStatus,
+                 static_cast<uint32_t>(socket_result.status));
+  WriteDictEntry(&array, kResultPropId, socket_result.id);
+
+  writer->CloseContainer(&array);
+}
+
+FlossSocketManager::FlossListeningSocket::FlossListeningSocket() = default;
+FlossSocketManager::FlossListeningSocket::FlossListeningSocket(
+    const FlossListeningSocket&) = default;
+FlossSocketManager::FlossListeningSocket::~FlossListeningSocket() = default;
+
+FlossSocketManager::FlossSocket::FlossSocket() = default;
+FlossSocketManager::FlossSocket::FlossSocket(FlossSocket&&) = default;
+FlossSocketManager::FlossSocket::~FlossSocket() = default;
+
+// static
+const char FlossSocketManager::kErrorInvalidCallback[] =
+    "org.chromium.Error.InvalidCallbackId";
+
+// static
+const char FlossSocketManager::kExportedCallbacksPath[] =
+    "/org/chromium/bluetooth/socketmanager";
+
+// static
+std::unique_ptr<FlossSocketManager> FlossSocketManager::Create() {
+  return std::make_unique<FlossSocketManager>();
+}
+
+FlossSocketManager::FlossSocketManager() = default;
+
+FlossSocketManager::~FlossSocketManager() {
+  if (bus_) {
+    bus_->UnregisterExportedObject(dbus::ObjectPath(kExportedCallbacksPath));
+  }
+}
+
+void FlossSocketManager::ListenUsingL2cap(
+    const Security security_level,
+    ResponseCallback<BtifStatus> callback,
+    ConnectionStateChanged ready_cb,
+    ConnectionAccepted new_connection_cb) {
+  if (callback_id_ == kInvalidCallbackId) {
+    std::move(callback).Run(base::unexpected(Error(kErrorInvalidCallback, "")));
+    return;
+  }
+
+  const char* method = security_level == Security::kInsecure
+                           ? socket_manager::kListenUsingInsecureL2capChannel
+                           : socket_manager::kListenUsingL2capChannel;
+
+  CallSocketMethod(
+      base::BindOnce(&FlossSocketManager::CompleteListen,
+                     weak_ptr_factory_.GetWeakPtr(), std::move(callback),
+                     std::move(ready_cb), std::move(new_connection_cb)),
+      method, callback_id_);
+}
+
+void FlossSocketManager::ListenUsingRfcomm(
+    const std::string& name,
+    const device::BluetoothUUID& uuid,
+    const Security security_level,
+    ResponseCallback<BtifStatus> callback,
+    ConnectionStateChanged ready_cb,
+    ConnectionAccepted new_connection_cb) {
+  if (callback_id_ == kInvalidCallbackId) {
+    std::move(callback).Run(
+        base::unexpected(Error(kErrorInvalidCallback, /*message=*/"")));
+    return;
+  }
+
+  const char* method =
+      security_level == Security::kInsecure
+          ? socket_manager::kListenUsingInsecureRfcommWithServiceRecord
+          : socket_manager::kListenUsingRfcommWithServiceRecord;
+  CallSocketMethod(
+      base::BindOnce(&FlossSocketManager::CompleteListen,
+                     weak_ptr_factory_.GetWeakPtr(), std::move(callback),
+                     std::move(ready_cb), std::move(new_connection_cb)),
+      method, callback_id_, name, uuid);
+}
+
+void FlossSocketManager::ConnectUsingL2cap(const FlossDeviceId& remote_device,
+                                           const int psm,
+                                           const Security security_level,
+                                           ConnectionCompleted callback) {
+  if (callback_id_ == kInvalidCallbackId) {
+    std::move(callback).Run(BtifStatus::kFail, /*socket=*/absl::nullopt);
+    return;
+  }
+
+  const char* method = security_level == Security::kInsecure
+                           ? socket_manager::kCreateInsecureL2capChannel
+                           : socket_manager::kCreateL2capChannel;
+
+  CallSocketMethod(
+      base::BindOnce(&FlossSocketManager::CompleteConnect,
+                     weak_ptr_factory_.GetWeakPtr(), std::move(callback)),
+      method, callback_id_, remote_device, psm);
+}
+
+void FlossSocketManager::ConnectUsingRfcomm(const FlossDeviceId& remote_device,
+                                            const device::BluetoothUUID& uuid,
+                                            const Security security_level,
+                                            ConnectionCompleted callback) {
+  if (callback_id_ == kInvalidCallbackId) {
+    std::move(callback).Run(BtifStatus::kFail, /*socket=*/absl::nullopt);
+    return;
+  }
+
+  const char* method =
+      security_level == Security::kInsecure
+          ? socket_manager::kCreateInsecureRfcommSocketToServiceRecord
+          : socket_manager::kCreateRfcommSocketToServiceRecord;
+
+  CallSocketMethod(
+      base::BindOnce(&FlossSocketManager::CompleteConnect,
+                     weak_ptr_factory_.GetWeakPtr(), std::move(callback)),
+      method, callback_id_, remote_device, uuid);
+}
+
+void FlossSocketManager::Accept(const SocketId id,
+                                absl::optional<uint32_t> timeout_ms,
+                                ResponseCallback<BtifStatus> callback) {
+  if (callback_id_ == kInvalidCallbackId) {
+    std::move(callback).Run(base::unexpected(Error(kErrorInvalidCallback, "")));
+    return;
+  }
+
+  CallSocketMethod(std::move(callback), socket_manager::kAccept, callback_id_,
+                   id, timeout_ms);
+}
+
+void FlossSocketManager::Close(const SocketId id,
+                               ResponseCallback<BtifStatus> callback) {
+  if (callback_id_ == kInvalidCallbackId) {
+    std::move(callback).Run(base::unexpected(Error(kErrorInvalidCallback, "")));
+    return;
+  }
+
+  CallSocketMethod(std::move(callback), socket_manager::kClose, callback_id_,
+                   id);
+}
+
+void FlossSocketManager::Init(dbus::Bus* bus,
+                              const std::string& service_name,
+                              const std::string& adapter_path) {
+  bus_ = bus;
+  service_name_ = service_name;
+  adapter_path_ = dbus::ObjectPath(adapter_path);
+
+  dbus::ObjectProxy* object_proxy =
+      bus_->GetObjectProxy(service_name_, adapter_path_);
+  if (!object_proxy) {
+    LOG(ERROR) << "FlossSocketManager couldn't init. Object proxy was null.";
+    return;
+  }
+
+  dbus::ExportedObject* callbacks =
+      bus_->GetExportedObject(dbus::ObjectPath(kExportedCallbacksPath));
+  if (!callbacks) {
+    LOG(ERROR) << "FlossSocketManager couldn't export client callbacks.";
+    return;
+  }
+
+  // Export callbacks for socket manager.
+  callbacks->ExportMethod(
+      socket_manager::kCallbackInterface,
+      socket_manager::kOnIncomingSocketReady,
+      base::BindRepeating(&FlossSocketManager::OnIncomingSocketReady,
+                          weak_ptr_factory_.GetWeakPtr()),
+      base::BindOnce(&HandleExported, socket_manager::kOnIncomingSocketReady));
+  callbacks->ExportMethod(
+      socket_manager::kCallbackInterface,
+      socket_manager::kOnIncomingSocketClosed,
+      base::BindRepeating(&FlossSocketManager::OnIncomingSocketClosed,
+                          weak_ptr_factory_.GetWeakPtr()),
+      base::BindOnce(&HandleExported, socket_manager::kOnIncomingSocketClosed));
+  callbacks->ExportMethod(
+      socket_manager::kCallbackInterface,
+      socket_manager::kOnHandleIncomingConnection,
+      base::BindRepeating(&FlossSocketManager::OnHandleIncomingConnection,
+                          weak_ptr_factory_.GetWeakPtr()),
+      base::BindOnce(&HandleExported,
+                     socket_manager::kOnHandleIncomingConnection));
+  callbacks->ExportMethod(
+      socket_manager::kCallbackInterface,
+      socket_manager::kOnOutgoingConnectionResult,
+      base::BindRepeating(&FlossSocketManager::OnOutgoingConnectionResult,
+                          weak_ptr_factory_.GetWeakPtr()),
+      base::BindOnce(&HandleExported,
+                     socket_manager::kOnOutgoingConnectionResult));
+
+  // Register callbacks and store the callback id.
+  dbus::MethodCall register_callback(kSocketManagerInterface,
+                                     socket_manager::kRegisterCallback);
+  dbus::MessageWriter writer(&register_callback);
+  writer.AppendObjectPath(dbus::ObjectPath(kExportedCallbacksPath));
+
+  object_proxy->CallMethodWithErrorResponse(
+      &register_callback, kDBusTimeoutMs,
+      base::BindOnce(&FlossSocketManager::CompleteRegisterCallback,
+                     weak_ptr_factory_.GetWeakPtr()));
+}
+
+void FlossSocketManager::CompleteRegisterCallback(
+    dbus::Response* response,
+    dbus::ErrorResponse* error_response) {
+  if (error_response) {
+    FlossDBusClient::LogErrorResponse("SocketManager::RegisterCallback",
+                                      error_response);
+  } else {
+    dbus::MessageReader reader(response);
+    uint32_t result;
+    if (!reader.PopUint32(&result)) {
+      LOG(ERROR)
+          << "No callback id provided for SocketManager::RegisterCallback";
+      return;
+    }
+
+    callback_id_ = result;
+  }
+}
+
+void FlossSocketManager::CompleteListen(ResponseCallback<BtifStatus> callback,
+                                        ConnectionStateChanged ready_cb,
+                                        ConnectionAccepted new_connection_cb,
+                                        DBusResult<SocketResult> result) {
+  if (!result.has_value()) {
+    std::move(callback).Run(base::unexpected(result.error()));
+    return;
+  }
+
+  // We got back a valid socket id from listen. Put into listening list.
+  if (result->id != kInvalidSocketId) {
+    listening_sockets_to_callbacks_.insert({
+        result->id,
+        {std::move(ready_cb), std::move(new_connection_cb)},
+    });
+  }
+
+  // Complete callback with the BtifStatus.
+  std::move(callback).Run(result->status);
+}
+
+void FlossSocketManager::CompleteConnect(ConnectionCompleted callback,
+                                         DBusResult<SocketResult> result) {
+  if (!result.has_value()) {
+    std::move(callback).Run(BtifStatus::kFail, /*socket=*/absl::nullopt);
+    return;
+  }
+
+  // If we got back a valid socket id from connect, put into connecting list.
+  // Otherwise, return the failed status back upwards.
+  if (result->id != kInvalidSocketId) {
+    connecting_sockets_to_callbacks_.insert({
+        result->id,
+        std::move(callback),
+    });
+  } else {
+    std::move(callback).Run(result->status, /*socket=*/absl::nullopt);
+  }
+}
+
+void FlossSocketManager::OnIncomingSocketReady(
+    dbus::MethodCall* method_call,
+    dbus::ExportedObject::ResponseSender response_sender) {
+  dbus::MessageReader reader(method_call);
+  FlossListeningSocket socket;
+  BtifStatus status;
+
+  if (!ReadAllDBusParams(&reader, &socket, &status)) {
+    std::move(response_sender)
+        .Run(dbus::ErrorResponse::FromMethodCall(
+            method_call, kErrorInvalidParameters, std::string()));
+    return;
+  }
+
+  // If this is a known socket, run the |ConnectionStateChanged| callback.
+  auto found = listening_sockets_to_callbacks_.find(socket.id);
+  if (found != listening_sockets_to_callbacks_.end()) {
+    auto& [key, callbacks] = *found;
+    auto& [state_changed, accepted] = callbacks;
+
+    state_changed.Run(ServerSocketState::kReady, socket, status);
+  }
+
+  std::move(response_sender).Run(dbus::Response::FromMethodCall(method_call));
+}
+
+void FlossSocketManager::OnIncomingSocketClosed(
+    dbus::MethodCall* method_call,
+    dbus::ExportedObject::ResponseSender response_sender) {
+  dbus::MessageReader reader(method_call);
+  SocketId id;
+  BtifStatus status;
+
+  if (!ReadAllDBusParams(&reader, &id, &status)) {
+    std::move(response_sender)
+        .Run(dbus::ErrorResponse::FromMethodCall(
+            method_call, kErrorInvalidParameters, std::string()));
+    return;
+  }
+
+  // If this is a known socket, run the |ConnectionStateChanged| callback and
+  // remove this from the list of listening sockets.
+  auto found = listening_sockets_to_callbacks_.find(id);
+  if (found != listening_sockets_to_callbacks_.end()) {
+    FlossListeningSocket socket;
+    socket.id = id;
+
+    auto& [key, callbacks] = *found;
+    auto& [state_changed, accepted] = callbacks;
+
+    state_changed.Run(ServerSocketState::kClosed, socket, status);
+    listening_sockets_to_callbacks_.erase(found);
+  }
+
+  std::move(response_sender).Run(dbus::Response::FromMethodCall(method_call));
+}
+
+void FlossSocketManager::OnHandleIncomingConnection(
+    dbus::MethodCall* method_call,
+    dbus::ExportedObject::ResponseSender response_sender) {
+  dbus::MessageReader reader(method_call);
+  SocketId id;
+  FlossSocket socket;
+
+  if (!ReadAllDBusParams(&reader, &id, &socket)) {
+    std::move(response_sender)
+        .Run(dbus::ErrorResponse::FromMethodCall(
+            method_call, kErrorInvalidParameters, std::string()));
+    return;
+  }
+
+  // New connection on a known listening socket. Call the |ConnectionAccepted|
+  // callback.
+  auto found = listening_sockets_to_callbacks_.find(id);
+  if (found != listening_sockets_to_callbacks_.end()) {
+    auto& [key, callbacks] = *found;
+    auto& [state_changed, accepted] = callbacks;
+
+    accepted.Run(std::move(socket));
+  }
+
+  std::move(response_sender).Run(dbus::Response::FromMethodCall(method_call));
+}
+
+void FlossSocketManager::OnOutgoingConnectionResult(
+    dbus::MethodCall* method_call,
+    dbus::ExportedObject::ResponseSender response_sender) {
+  dbus::MessageReader reader(method_call);
+  SocketId id;
+  BtifStatus status;
+  absl::optional<FlossSocket> socket;
+
+  if (!ReadAllDBusParams(&reader, &id, &status, &socket)) {
+    std::move(response_sender)
+        .Run(dbus::ErrorResponse::FromMethodCall(
+            method_call, kErrorInvalidParameters, std::string()));
+    return;
+  }
+
+  // Connecting callback finished. Call the |ConnectionCompleted| callback and
+  // remove this entry from the pending connections list.
+  auto found = connecting_sockets_to_callbacks_.find(id);
+  if (found != connecting_sockets_to_callbacks_.end()) {
+    auto& [key, complete_callback] = *found;
+    std::move(complete_callback).Run(status, std::move(socket));
+    connecting_sockets_to_callbacks_.erase(found);
+  }
+
+  std::move(response_sender).Run(dbus::Response::FromMethodCall(method_call));
+}
+
+// Specializations for default responses.
+template void FlossDBusClient::DefaultResponseWithCallback(
+    ResponseCallback<FlossSocketManager::SocketResult> callback,
+    dbus::Response* response,
+    dbus::ErrorResponse* error_response);
+
+}  // namespace floss
diff --git a/device/bluetooth/floss/floss_socket_manager.h b/device/bluetooth/floss/floss_socket_manager.h
new file mode 100644
index 0000000..1c7f762
--- /dev/null
+++ b/device/bluetooth/floss/floss_socket_manager.h
@@ -0,0 +1,253 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+#ifndef DEVICE_BLUETOOTH_FLOSS_FLOSS_SOCKET_MANAGER_H_
+#define DEVICE_BLUETOOTH_FLOSS_FLOSS_SOCKET_MANAGER_H_
+
+#include <memory>
+#include <string>
+#include <unordered_map>
+
+#include "base/callback.h"
+#include "base/files/scoped_file.h"
+#include "base/memory/weak_ptr.h"
+#include "dbus/exported_object.h"
+#include "dbus/object_path.h"
+#include "device/bluetooth/bluetooth_export.h"
+#include "device/bluetooth/floss/floss_dbus_client.h"
+#include "device/bluetooth/public/cpp/bluetooth_uuid.h"
+
+namespace floss {
+
+// The socket manager allows creation and connection of RFCOMM/L2CAP services.
+// It is managed by FlossClientBundle and will be initialized with an adapter
+// when one is powered on.
+class DEVICE_BLUETOOTH_EXPORT FlossSocketManager : public FlossDBusClient {
+ public:
+  // Id given after register callbacks.
+  using CallbackId = uint32_t;
+
+  // Id given after creating any socket type.
+  using SocketId = uint64_t;
+
+  // Supported socket types for api.
+  enum class SocketType {
+    kUnknown = 0,
+    kRfcomm = 1,
+    // Not supported via the socket manager api.
+    kSco_DONOTUSE = 2,
+    kL2cap = 3,
+    kL2capLe = 4,
+  };
+
+  // States for server socket.
+  enum class ServerSocketState {
+    // FlossListeningSocket is ready. Call |Accept| to accept incoming
+    // connections.
+    kReady,
+
+    // FlossListeningSocket is closed.
+    kClosed,
+  };
+
+  // Security level of connection.
+  enum class Security {
+    kInsecure,
+    kSecure,
+  };
+
+  // Represents a listening socket.
+  struct FlossListeningSocket {
+    SocketId id;
+    SocketType type;
+    int flags;
+    absl::optional<int> psm;
+    absl::optional<int> channel;
+    absl::optional<std::string> name;
+    absl::optional<device::BluetoothUUID> uuid;
+
+    FlossListeningSocket();
+    FlossListeningSocket(const FlossListeningSocket&);
+    ~FlossListeningSocket();
+  };
+
+  // Represents a connecting socket (either incoming or outgoing).
+  struct FlossSocket {
+    SocketId id;
+    FlossDeviceId remote_device;
+    SocketType type;
+    int flags;
+    absl::optional<base::ScopedFD> fd;
+    int port;
+    absl::optional<device::BluetoothUUID> uuid;
+    int max_rx_size;
+    int max_tx_size;
+
+    FlossSocket();
+    ~FlossSocket();
+
+    // Due to ScopedFD, we don't want to use copy constructor for this.
+    FlossSocket(const FlossSocket&) = delete;
+    FlossSocket& operator=(const FlossSocket&) = delete;
+
+    // Move constructor and assignment operator is ok.
+    FlossSocket(FlossSocket&&);
+    FlossSocket& operator=(FlossSocket&&) = default;
+
+    bool is_valid() const {
+      return id != FlossSocketManager::kInvalidSocketId;
+    };
+  };
+
+  // Represents a result from any socket api call.
+  struct SocketResult {
+    BtifStatus status;
+    SocketId id;
+  };
+
+  // Callback sent when a listening socket is ready to accept connections.
+  using ConnectionStateChanged = base::RepeatingCallback<
+      void(ServerSocketState, FlossListeningSocket, BtifStatus)>;
+
+  // Callback used when a listening socket accepts new connections.
+  using ConnectionAccepted = base::RepeatingCallback<void(FlossSocket&&)>;
+
+  // Callback when a connection socket completes.
+  using ConnectionCompleted =
+      base::OnceCallback<void(BtifStatus, absl::optional<FlossSocket>&&)>;
+
+  // Error: Callback id is invalid.
+  static const char kErrorInvalidCallback[];
+
+  // Valid callback ids are always greater than 0.
+  static const CallbackId kInvalidCallbackId = 0;
+
+  // Valid socket ids are always greater than 0.
+  static const SocketId kInvalidSocketId = 0;
+
+  static std::unique_ptr<FlossSocketManager> Create();
+
+  FlossSocketManager(const FlossSocketManager&) = delete;
+  FlossSocketManager& operator=(const FlossSocketManager&) = delete;
+
+  FlossSocketManager();
+  ~FlossSocketManager() override;
+
+  // Listen for connections using a connection oriented LE L2Cap channel.
+  virtual void ListenUsingL2cap(const Security security_level,
+                                ResponseCallback<BtifStatus> callback,
+                                ConnectionStateChanged ready_cb,
+                                ConnectionAccepted new_connection_cb);
+
+  // Listen for connections using an RFCOMM channel. Creates SDP record with
+  // given name and UUID.
+  virtual void ListenUsingRfcomm(const std::string& name,
+                                 const device::BluetoothUUID& uuid,
+                                 const Security security_level,
+                                 ResponseCallback<BtifStatus> callback,
+                                 ConnectionStateChanged ready_cb,
+                                 ConnectionAccepted new_connection_cb);
+
+  // Connect via a connection oriented LE L2Cap channel on given psm.
+  virtual void ConnectUsingL2cap(const FlossDeviceId& remote_device,
+                                 const int psm,
+                                 const Security security_level,
+                                 ConnectionCompleted callback);
+
+  // Connect to a remote service using a RFCOMM channel.
+  virtual void ConnectUsingRfcomm(const FlossDeviceId& remote_device,
+                                  const device::BluetoothUUID& uuid,
+                                  const Security security_level,
+                                  ConnectionCompleted callback);
+
+  // Accept new connections on |id|. If the given SocketId is not a listening
+  // socket or closed, the callback will receive a failing |BtifStatus| value.
+  virtual void Accept(const SocketId id,
+                      absl::optional<uint32_t> timeout_ms,
+                      ResponseCallback<BtifStatus> callback);
+
+  // Closes the socket on |id|. Only works for listening sockets. For connecting
+  // sockets, simply close the fd to terminate the connection.
+  virtual void Close(const SocketId id, ResponseCallback<BtifStatus> callback);
+
+  // Initializes the socket manager with given adapter.
+  void Init(dbus::Bus* bus,
+            const std::string& service_name,
+            const std::string& adapter_path) override;
+
+ protected:
+  friend class FlossSocketManagerTest;
+
+  // Complete the method call for |RegisterCallback|.
+  void CompleteRegisterCallback(dbus::Response* response,
+                                dbus::ErrorResponse* error_response);
+
+  // Complete any of |ListenUsingL2cap| or |ListenUsingRfcomm|.
+  void CompleteListen(ResponseCallback<BtifStatus> callback,
+                      ConnectionStateChanged ready_cb,
+                      ConnectionAccepted new_connection_cb,
+                      DBusResult<SocketResult> result);
+
+  // Complete any of |ConnectUsingL2cap| or |ConnectUsingRfcomm|.
+  void CompleteConnect(ConnectionCompleted callback,
+                       DBusResult<SocketResult> result);
+
+  // Handle callback |IncomingSocketReady| on exported object path.
+  void OnIncomingSocketReady(
+      dbus::MethodCall* method_call,
+      dbus::ExportedObject::ResponseSender response_sender);
+
+  // Handle callback |IncomingSocketClosed| on exported object path.
+  void OnIncomingSocketClosed(
+      dbus::MethodCall* method_call,
+      dbus::ExportedObject::ResponseSender response_sender);
+
+  // Handle callback |HandleIncomingConnection| on exported object path.
+  void OnHandleIncomingConnection(
+      dbus::MethodCall* method_call,
+      dbus::ExportedObject::ResponseSender response_sender);
+
+  // Handle callback |OutgoingConnectionResult| on exported object path.
+  void OnOutgoingConnectionResult(
+      dbus::MethodCall* method_call,
+      dbus::ExportedObject::ResponseSender response_sender);
+
+  // Managed by FlossDBusManager - we keep local pointer to access object proxy.
+  dbus::Bus* bus_ = nullptr;
+
+  // Adapter used for socket connections by this class.
+  dbus::ObjectPath adapter_path_;
+
+  // Service which implements the SocketManager interface.
+  std::string service_name_;
+
+ private:
+  template <typename R, typename... Args>
+  void CallSocketMethod(ResponseCallback<R> callback,
+                        const char* member,
+                        Args... args) {
+    CallMethod(std::move(callback), bus_, service_name_,
+               kSocketManagerInterface, adapter_path_, member, args...);
+  }
+
+  // Object path for exported callbacks registered against manager interface.
+  static const char kExportedCallbacksPath[];
+
+  // All socket api calls require callback id since callbacks must take
+  // ownership of the file descriptors. A value of zero is invalid.
+  CallbackId callback_id_ = 0;
+
+  // Map of listening sockets to callbacks.
+  std::unordered_map<SocketId,
+                     std::pair<ConnectionStateChanged, ConnectionAccepted>>
+      listening_sockets_to_callbacks_;
+
+  // Map of connection sockets that haven't completed.
+  std::unordered_map<SocketId, ConnectionCompleted>
+      connecting_sockets_to_callbacks_;
+
+  base::WeakPtrFactory<FlossSocketManager> weak_ptr_factory_{this};
+};
+}  // namespace floss
+
+#endif  // DEVICE_BLUETOOTH_FLOSS_FLOSS_SOCKET_MANAGER_H_
diff --git a/device/bluetooth/floss/floss_socket_manager_unittest.cc b/device/bluetooth/floss/floss_socket_manager_unittest.cc
new file mode 100644
index 0000000..b0ec631
--- /dev/null
+++ b/device/bluetooth/floss/floss_socket_manager_unittest.cc
@@ -0,0 +1,341 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "device/bluetooth/floss/floss_socket_manager.h"
+
+#include "base/run_loop.h"
+#include "base/test/bind.h"
+#include "base/test/task_environment.h"
+#include "base/threading/sequenced_task_runner_handle.h"
+#include "dbus/bus.h"
+#include "dbus/message.h"
+#include "dbus/mock_bus.h"
+#include "dbus/mock_exported_object.h"
+#include "dbus/mock_object_proxy.h"
+#include "dbus/object_path.h"
+#include "device/bluetooth/floss/floss_dbus_client.h"
+#include "device/bluetooth/floss/floss_manager_client.h"
+#include "testing/gmock/include/gmock/gmock.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace {
+
+using testing::_;
+
+// Matches a dbus::MethodCall based on the method name (member).
+MATCHER_P(HasMemberOf, member, "") {
+  return arg->GetMember() == member;
+}
+}  // namespace
+
+namespace floss {
+
+using Security = FlossSocketManager::Security;
+using BtifStatus = FlossDBusClient::BtifStatus;
+
+class FlossSocketManagerTest : public testing::Test {
+ public:
+  FlossSocketManagerTest() = default;
+
+  void SetUpMocks() {
+    adapter_path_ = FlossManagerClient::GenerateAdapterPath(adapter_index_);
+    sockmgr_proxy_ = base::MakeRefCounted<::dbus::MockObjectProxy>(
+        bus_.get(), kSocketManagerInterface, adapter_path_);
+    exported_callbacks_ = base::MakeRefCounted<::dbus::MockExportedObject>(
+        bus_.get(),
+        ::dbus::ObjectPath(FlossSocketManager::kExportedCallbacksPath));
+
+    EXPECT_CALL(*bus_.get(),
+                GetObjectProxy(kSocketManagerInterface, adapter_path_))
+        .WillRepeatedly(::testing::Return(sockmgr_proxy_.get()));
+    EXPECT_CALL(*bus_.get(), GetExportedObject)
+        .WillRepeatedly(::testing::Return(exported_callbacks_.get()));
+
+    // Make sure we export all callbacks. This will need to be updated once new
+    // callbacks are added.
+    EXPECT_CALL(*exported_callbacks_.get(), ExportMethod).Times(4);
+
+    // Handle method calls on the object proxy.
+    ON_CALL(*sockmgr_proxy_.get(),
+            DoCallMethodWithErrorResponse(
+                HasMemberOf(socket_manager::kRegisterCallback), _, _))
+        .WillByDefault(
+            Invoke(this, &FlossSocketManagerTest::HandleRegisterCallback));
+  }
+
+  void SetUp() override {
+    ::dbus::Bus::Options options;
+    options.bus_type = ::dbus::Bus::BusType::SYSTEM;
+    bus_ = base::MakeRefCounted<::dbus::MockBus>(options);
+    sockmgr_ = FlossSocketManager::Create();
+
+    SetUpMocks();
+  }
+
+  void TearDown() override {
+    // Clean up the socket manager first to get rid of all references to various
+    // buses, object proxies, etc.
+    sockmgr_.reset();
+  }
+
+  void Init() {
+    sockmgr_->Init(bus_.get(), kSocketManagerInterface, adapter_path_.value());
+  }
+
+  void HandleRegisterCallback(
+      ::dbus::MethodCall* method_call,
+      int timeout_ms,
+      ::dbus::ObjectProxy::ResponseOrErrorCallback* cb) {
+    auto response = ::dbus::Response::CreateEmpty();
+    ::dbus::MessageWriter msg(response.get());
+    FlossDBusClient::WriteAllDBusParams(&msg, callback_id_ctr_);
+
+    // Increment callback counter for next call.
+    callback_id_ctr_++;
+
+    std::move(*cb).Run(response.get(), nullptr);
+  }
+
+  void HandleReturnSocketResult(
+      ::dbus::MethodCall* method_call,
+      int timeout_ms,
+      ::dbus::ObjectProxy::ResponseOrErrorCallback* cb) {
+    auto response = ::dbus::Response::CreateEmpty();
+    ::dbus::MessageWriter msg(response.get());
+    FlossSocketManager::SocketResult result = {
+        .status = BtifStatus::kSuccess,
+        .id = socket_id_ctr_,
+    };
+    FlossDBusClient::WriteAllDBusParams(&msg, result);
+
+    socket_id_ctr_++;
+
+    std::move(*cb).Run(response.get(), nullptr);
+  }
+
+  void SendOutgoingConnectionResult(
+      FlossSocketManager::SocketId id,
+      BtifStatus status,
+      absl::optional<FlossSocketManager::FlossSocket> socket,
+      dbus::ExportedObject::ResponseSender response) {
+    dbus::MethodCall method_call(socket_manager::kCallbackInterface,
+                                 socket_manager::kOnOutgoingConnectionResult);
+    method_call.SetSerial(serial_++);
+    dbus::MessageWriter writer(&method_call);
+    FlossDBusClient::WriteAllDBusParams(&writer, id, status, socket);
+
+    sockmgr_->OnOutgoingConnectionResult(&method_call, std::move(response));
+  }
+
+  void SockStatusCb(DBusResult<BtifStatus> result) {
+    if (!result.has_value()) {
+      last_status_ = BtifStatus::kFail;
+    } else {
+      last_status_ = *result;
+    }
+  }
+
+  void SockConnectionStateChanged(
+      FlossSocketManager::ServerSocketState state,
+      FlossSocketManager::FlossListeningSocket socket,
+      BtifStatus status) {
+    // No-op
+  }
+
+  void SockConnectionAccepted(FlossSocketManager::FlossSocket&& socket) {
+    // No -op
+  }
+
+  void ExpectNormalResponse(std::unique_ptr<dbus::Response> response) {
+    EXPECT_NE(response->GetMessageType(),
+              dbus::Message::MessageType::MESSAGE_ERROR);
+  }
+
+  int adapter_index_ = 2;
+  int serial_ = 1;
+  dbus::ObjectPath adapter_path_;
+  BtifStatus last_status_;
+
+  uint32_t callback_id_ctr_ = 1;
+  uint64_t socket_id_ctr_ = 1;
+
+  scoped_refptr<::dbus::MockBus> bus_;
+  scoped_refptr<::dbus::MockExportedObject> exported_callbacks_;
+  scoped_refptr<::dbus::MockObjectProxy> sockmgr_proxy_;
+  std::unique_ptr<FlossSocketManager> sockmgr_;
+
+  base::test::TaskEnvironment task_environment_;
+  base::WeakPtrFactory<FlossSocketManagerTest> weak_ptr_factory_{this};
+};
+
+// Tests for good path
+
+TEST_F(FlossSocketManagerTest, ListenOnSockets) {
+  Init();
+
+  std::map<std::string, Security> l2cap_apis = {
+      {socket_manager::kListenUsingInsecureL2capChannel, Security::kInsecure},
+      {socket_manager::kListenUsingL2capChannel, Security::kSecure},
+  };
+  std::map<std::string, Security> rfcomm_apis = {
+      {socket_manager::kListenUsingInsecureRfcommWithServiceRecord,
+       Security::kInsecure},
+      {socket_manager::kListenUsingRfcommWithServiceRecord, Security::kSecure},
+  };
+
+  // Exercise all security paths.
+  for (auto kv : l2cap_apis) {
+    EXPECT_CALL(*sockmgr_proxy_.get(),
+                DoCallMethodWithErrorResponse(HasMemberOf(kv.first), _, _))
+        .WillOnce(
+            Invoke(this, &FlossSocketManagerTest::HandleReturnSocketResult));
+
+    last_status_ = BtifStatus::kNotReady;
+    sockmgr_->ListenUsingL2cap(
+        kv.second,
+        base::BindOnce(&FlossSocketManagerTest::SockStatusCb,
+                       weak_ptr_factory_.GetWeakPtr()),
+        base::BindRepeating(&FlossSocketManagerTest::SockConnectionStateChanged,
+                            weak_ptr_factory_.GetWeakPtr()),
+        base::BindRepeating(&FlossSocketManagerTest::SockConnectionAccepted,
+                            weak_ptr_factory_.GetWeakPtr()));
+
+    EXPECT_EQ(BtifStatus::kSuccess, last_status_);
+  }
+
+  for (auto kv : rfcomm_apis) {
+    EXPECT_CALL(*sockmgr_proxy_.get(),
+                DoCallMethodWithErrorResponse(HasMemberOf(kv.first), _, _))
+        .WillOnce(
+            Invoke(this, &FlossSocketManagerTest::HandleReturnSocketResult));
+
+    last_status_ = BtifStatus::kNotReady;
+    sockmgr_->ListenUsingRfcomm(
+        "Foo", device::BluetoothUUID(), kv.second,
+        base::BindOnce(&FlossSocketManagerTest::SockStatusCb,
+                       weak_ptr_factory_.GetWeakPtr()),
+        base::BindRepeating(&FlossSocketManagerTest::SockConnectionStateChanged,
+                            weak_ptr_factory_.GetWeakPtr()),
+        base::BindRepeating(&FlossSocketManagerTest::SockConnectionAccepted,
+                            weak_ptr_factory_.GetWeakPtr()));
+
+    EXPECT_EQ(BtifStatus::kSuccess, last_status_);
+  }
+}
+
+TEST_F(FlossSocketManagerTest, ConnectToSockets) {
+  Init();
+
+  std::map<std::string, Security> l2cap_apis = {
+      {socket_manager::kCreateInsecureL2capChannel, Security::kInsecure},
+      {socket_manager::kCreateL2capChannel, Security::kSecure},
+  };
+
+  std::map<std::string, Security> rfcomm_apis = {
+      {socket_manager::kCreateInsecureRfcommSocketToServiceRecord,
+       Security::kInsecure},
+      {socket_manager::kCreateRfcommSocketToServiceRecord, Security::kSecure},
+  };
+
+  FlossDeviceId remote_device = {
+      .address = "00:11:22:33:44:55",
+      .name = "Remote device",
+  };
+
+  int psm = 42;
+
+  device::BluetoothUUID uuid("f0de");
+
+  for (auto kv : l2cap_apis) {
+    EXPECT_CALL(*sockmgr_proxy_.get(),
+                DoCallMethodWithErrorResponse(HasMemberOf(kv.first), _, _))
+        .WillOnce(
+            Invoke(this, &FlossSocketManagerTest::HandleReturnSocketResult));
+
+    bool callback_completed = false;
+    BtifStatus callback_status = BtifStatus::kNotReady;
+    int found_psm = -1;
+
+    sockmgr_->ConnectUsingL2cap(
+        remote_device, psm, kv.second,
+        base::BindOnce(
+            [](bool* complete, BtifStatus* cb_status, int* fpsm,
+               BtifStatus status,
+               absl::optional<FlossSocketManager::FlossSocket>&& socket) {
+              *complete = true;
+              *cb_status = status;
+              if (socket) {
+                *fpsm = socket->port;
+              }
+            },
+            &callback_completed, &callback_status, &found_psm));
+
+    // Status shouldn't be updated yet since we get callback update AFTER we
+    // send outgoing result.
+    EXPECT_FALSE(callback_completed);
+    EXPECT_EQ(BtifStatus::kNotReady, callback_status);
+
+    absl::optional<FlossSocketManager::FlossSocket> sock =
+        FlossSocketManager::FlossSocket();
+    sock->id = socket_id_ctr_ - 1;
+    sock->port = psm;
+
+    // Trigger the callback completion. We don't care about socket itself.
+    SendOutgoingConnectionResult(
+        socket_id_ctr_ - 1, BtifStatus::kSuccess, std::move(sock),
+        base::BindOnce(&FlossSocketManagerTest::ExpectNormalResponse,
+                       weak_ptr_factory_.GetWeakPtr()));
+
+    EXPECT_TRUE(callback_completed);
+    EXPECT_EQ(BtifStatus::kSuccess, callback_status);
+    EXPECT_EQ(psm, found_psm);
+  }
+
+  for (auto kv : rfcomm_apis) {
+    EXPECT_CALL(*sockmgr_proxy_.get(),
+                DoCallMethodWithErrorResponse(HasMemberOf(kv.first), _, _))
+        .WillOnce(
+            Invoke(this, &FlossSocketManagerTest::HandleReturnSocketResult));
+
+    bool callback_completed = false;
+    BtifStatus callback_status = BtifStatus::kNotReady;
+    device::BluetoothUUID found_uuid;
+
+    sockmgr_->ConnectUsingRfcomm(
+        remote_device, uuid, kv.second,
+        base::BindOnce(
+            [](bool* complete, BtifStatus* cb_status, device::BluetoothUUID* uu,
+               BtifStatus status,
+               absl::optional<FlossSocketManager::FlossSocket>&& socket) {
+              *complete = true;
+              *cb_status = status;
+              if (socket && socket->uuid) {
+                *uu = *socket->uuid;
+              }
+            },
+            &callback_completed, &callback_status, &found_uuid));
+
+    // Status shouldn't be updated yet since we get callback update AFTER we
+    // send outgoing result.
+    EXPECT_FALSE(callback_completed);
+    EXPECT_EQ(BtifStatus::kNotReady, callback_status);
+
+    absl::optional<FlossSocketManager::FlossSocket> sock =
+        FlossSocketManager::FlossSocket();
+    sock->id = socket_id_ctr_ - 1;
+    sock->uuid = uuid;
+
+    // Trigger the callback completion. We don't care about socket itself.
+    SendOutgoingConnectionResult(
+        socket_id_ctr_ - 1, BtifStatus::kSuccess, std::move(sock),
+        base::BindOnce(&FlossSocketManagerTest::ExpectNormalResponse,
+                       weak_ptr_factory_.GetWeakPtr()));
+
+    EXPECT_TRUE(callback_completed);
+    EXPECT_EQ(BtifStatus::kSuccess, callback_status);
+    EXPECT_EQ(uuid, found_uuid);
+  }
+}
+
+}  // namespace floss
diff --git a/device/vr/android/arcore/arcore.h b/device/vr/android/arcore/arcore.h
index e052ec70..0530e2c 100644
--- a/device/vr/android/arcore/arcore.h
+++ b/device/vr/android/arcore/arcore.h
@@ -87,7 +87,7 @@
       display::Display::Rotation display_rotation) = 0;
   virtual void SetCameraTexture(uint32_t camera_texture_id) = 0;
 
-  virtual gfx::Size GetUncroppedCameraImageSize() const;
+  virtual gfx::Size GetUncroppedCameraImageSize() const = 0;
 
   gfx::Transform GetCameraUvFromScreenUvTransform() const;
   gfx::Transform GetDepthUvFromScreenUvTransform() const;
diff --git a/extensions/browser/extension_util.cc b/extensions/browser/extension_util.cc
index d23920e..3b1583e 100644
--- a/extensions/browser/extension_util.cc
+++ b/extensions/browser/extension_util.cc
@@ -11,7 +11,6 @@
 #include "components/crx_file/id_util.h"
 #include "content/public/browser/browser_context.h"
 #include "content/public/browser/child_process_security_policy.h"
-#include "content/public/browser/cors_origin_pattern_setter.h"
 #include "content/public/browser/site_instance.h"
 #include "content/public/browser/storage_partition_config.h"
 #include "content/public/common/url_constants.h"
@@ -20,7 +19,6 @@
 #include "extensions/browser/extensions_browser_client.h"
 #include "extensions/browser/process_manager.h"
 #include "extensions/browser/ui_util.h"
-#include "extensions/common/cors_util.h"
 #include "extensions/common/extension.h"
 #include "extensions/common/features/behavior_feature.h"
 #include "extensions/common/features/feature.h"
@@ -50,28 +48,6 @@
 }
 #endif
 
-void SetCorsOriginAccessListForExtensionHelper(
-    const std::vector<content::BrowserContext*>& browser_contexts,
-    const Extension& extension,
-    std::vector<network::mojom::CorsOriginPatternPtr> allow_patterns,
-    std::vector<network::mojom::CorsOriginPatternPtr> block_patterns,
-    base::OnceClosure closure) {
-  auto barrier_closure =
-      BarrierClosure(browser_contexts.size(), std::move(closure));
-  for (content::BrowserContext* browser_context : browser_contexts) {
-    // SetCorsOriginAccessListForExtensionHelper should only affect an incognito
-    // profile if the extension is actually allowed to run in an incognito
-    // profile (not just by the extension manifest, but also by user
-    // preferences).
-    if (browser_context->IsOffTheRecord())
-      DCHECK(IsIncognitoEnabled(extension.id(), browser_context));
-
-    content::CorsOriginPatternSetter::Set(
-        browser_context, extension.origin(), mojo::Clone(allow_patterns),
-        mojo::Clone(block_patterns), barrier_closure);
-  }
-}
-
 }  // namespace
 
 bool CanBeIncognitoEnabled(const Extension* extension) {
@@ -243,22 +219,6 @@
   return iter->second;
 }
 
-void SetCorsOriginAccessListForExtension(
-    const std::vector<content::BrowserContext*>& browser_contexts,
-    const Extension& extension,
-    base::OnceClosure closure) {
-  SetCorsOriginAccessListForExtensionHelper(
-      browser_contexts, extension, CreateCorsOriginAccessAllowList(extension),
-      CreateCorsOriginAccessBlockList(extension), std::move(closure));
-}
-
-void ResetCorsOriginAccessListForExtension(
-    content::BrowserContext* browser_context,
-    const Extension& extension) {
-  SetCorsOriginAccessListForExtensionHelper({browser_context}, extension, {},
-                                            {}, base::DoNothing());
-}
-
 // Returns whether the |extension| should be loaded in the given
 // |browser_context|.
 bool IsExtensionVisibleToContext(const Extension& extension,
diff --git a/extensions/browser/extension_util.h b/extensions/browser/extension_util.h
index 22fe192..080e8b0 100644
--- a/extensions/browser/extension_util.h
+++ b/extensions/browser/extension_util.h
@@ -83,19 +83,6 @@
 // Returns a unique int id for each context.
 int GetBrowserContextId(content::BrowserContext* context);
 
-// Calculates the allowlist and blocklist for |extension| and forwards the
-// request to |browser_contexts|.
-void SetCorsOriginAccessListForExtension(
-    const std::vector<content::BrowserContext*>& browser_contexts,
-    const Extension& extension,
-    base::OnceClosure closure);
-
-// Resets the allowlist and blocklist for |extension| to empty lists for
-// |browser_context| and for all related regular+incognito contexts.
-void ResetCorsOriginAccessListForExtension(
-    content::BrowserContext* browser_context,
-    const Extension& extension);
-
 // Returns whether the |extension| should be loaded in the given
 // |browser_context|.
 bool IsExtensionVisibleToContext(const Extension& extension,
diff --git a/extensions/browser/network_permissions_updater.cc b/extensions/browser/network_permissions_updater.cc
index 17c7f91..582716c 100644
--- a/extensions/browser/network_permissions_updater.cc
+++ b/extensions/browser/network_permissions_updater.cc
@@ -6,14 +6,42 @@
 
 #include "base/barrier_closure.h"
 #include "content/public/browser/browser_context.h"
+#include "content/public/browser/cors_origin_pattern_setter.h"
 #include "extensions/browser/extension_registry.h"
 #include "extensions/browser/extension_util.h"
 #include "extensions/browser/extensions_browser_client.h"
+#include "extensions/common/cors_util.h"
 #include "extensions/common/extension.h"
 #include "extensions/common/extension_set.h"
 
 namespace extensions {
 
+namespace {
+
+void SetCorsOriginAccessListForExtensionHelper(
+    const std::vector<content::BrowserContext*>& browser_contexts,
+    const Extension& extension,
+    std::vector<network::mojom::CorsOriginPatternPtr> allow_patterns,
+    std::vector<network::mojom::CorsOriginPatternPtr> block_patterns,
+    base::OnceClosure closure) {
+  auto barrier_closure =
+      BarrierClosure(browser_contexts.size(), std::move(closure));
+  for (content::BrowserContext* browser_context : browser_contexts) {
+    // SetCorsOriginAccessListForExtensionHelper should only affect an incognito
+    // profile if the extension is actually allowed to run in an incognito
+    // profile (not just by the extension manifest, but also by user
+    // preferences).
+    if (browser_context->IsOffTheRecord())
+      DCHECK(util::IsIncognitoEnabled(extension.id(), browser_context));
+
+    content::CorsOriginPatternSetter::Set(
+        browser_context, extension.origin(), mojo::Clone(allow_patterns),
+        mojo::Clone(block_patterns), barrier_closure);
+  }
+}
+
+}  // namespace
+
 NetworkPermissionsUpdater::NetworkPermissionsUpdater(
     PassKey pass_key,
     content::BrowserContext& browser_context,
@@ -67,6 +95,13 @@
   }
 }
 
+void NetworkPermissionsUpdater::ResetOriginAccessForExtension(
+    content::BrowserContext& browser_context,
+    const Extension& extension) {
+  SetCorsOriginAccessListForExtensionHelper({&browser_context}, extension, {},
+                                            {}, base::DoNothing());
+}
+
 void NetworkPermissionsUpdater::UpdateExtension(
     const Extension& extension,
     ContextSet context_set,
@@ -81,8 +116,10 @@
             browser_context_, extension);
   }
 
-  util::SetCorsOriginAccessListForExtension(target_contexts, extension,
-                                            std::move(completion_callback));
+  SetCorsOriginAccessListForExtensionHelper(
+      target_contexts, extension, CreateCorsOriginAccessAllowList(extension),
+      CreateCorsOriginAccessBlockList(extension),
+      std::move(completion_callback));
 }
 
 // static
diff --git a/extensions/browser/network_permissions_updater.h b/extensions/browser/network_permissions_updater.h
index e95b8b2..7de78ad 100644
--- a/extensions/browser/network_permissions_updater.h
+++ b/extensions/browser/network_permissions_updater.h
@@ -63,6 +63,14 @@
   static void UpdateAllExtensions(content::BrowserContext& browser_context,
                                   base::OnceClosure completion_callback);
 
+  // Resets the origin allowlist and blocklist for `extension` to empty lists
+  // for `browser_context`. This only affects the specified `browser_context`;
+  // it does not affect any related (incognito) contexts.
+  // TODO(devlin/lukasza): Should it?
+  static void ResetOriginAccessForExtension(
+      content::BrowserContext& browser_context,
+      const Extension& extension);
+
  private:
   // Updates a single extension in the network layer, invoking
   // `completion_callback` when the operation is complete.
diff --git a/extensions/browser/renderer_startup_helper.cc b/extensions/browser/renderer_startup_helper.cc
index 97fbee44..1bd1f2b 100644
--- a/extensions/browser/renderer_startup_helper.cc
+++ b/extensions/browser/renderer_startup_helper.cc
@@ -318,7 +318,8 @@
   }
 
   // Resets registered origin access lists in the BrowserContext asynchronously.
-  util::ResetCorsOriginAccessListForExtension(browser_context_, extension);
+  NetworkPermissionsUpdater::ResetOriginAccessForExtension(*browser_context_,
+                                                           extension);
 
   for (auto& process_extensions_pair : pending_active_extensions_)
     process_extensions_pair.second.erase(extension.id());
diff --git a/extensions/browser/updater/extension_downloader_test_helper.h b/extensions/browser/updater/extension_downloader_test_helper.h
index aa4b7c7d..0bf906ed 100644
--- a/extensions/browser/updater/extension_downloader_test_helper.h
+++ b/extensions/browser/updater/extension_downloader_test_helper.h
@@ -187,6 +187,10 @@
     updatecheck_params.emplace("hash", std::move(value));
     return std::move(*this);
   }
+  UpdateManifestItem&& hash_sha256(std::string value) && {
+    updatecheck_params.emplace("hash_sha256", std::move(value));
+    return std::move(*this);
+  }
   UpdateManifestItem&& info(std::string value) && {
     updatecheck_params.emplace("info", std::move(value));
     return std::move(*this);
diff --git a/extensions/browser/updater/safe_manifest_parser_unittest.cc b/extensions/browser/updater/safe_manifest_parser_unittest.cc
index 9c464f9..621e6db4 100644
--- a/extensions/browser/updater/safe_manifest_parser_unittest.cc
+++ b/extensions/browser/updater/safe_manifest_parser_unittest.cc
@@ -7,6 +7,7 @@
 #include "base/bind.h"
 #include "base/run_loop.h"
 #include "content/public/test/browser_task_environment.h"
+#include "extensions/browser/updater/extension_downloader_test_helper.h"
 #include "extensions/browser/updater/safe_manifest_parser.h"
 #include "services/data_decoder/public/cpp/test_support/in_process_data_decoder.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -81,14 +82,9 @@
 }
 
 TEST_F(ExtensionUpdateManifestTest, InvalidCodebase) {
-  TestParseUpdateManifest(
-      "<?xml version='1.0'?>"
-      "<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>"
-      " <app appid='12345' status='ok'>"
-      "  <updatecheck codebase='example.com/extension_1.2.3.4.crx'"
-      "               version='1.2.3.4' />"
-      " </app>"
-      "</gupdate>");
+  TestParseUpdateManifest(CreateUpdateManifest(
+      {UpdateManifestItem("12345").version("1.2.3.4").codebase(
+          "example.com/extension_1.2.3.4.crx")}));
   ASSERT_EQ(1u, results()->update_list.size());
   EXPECT_TRUE(results()->update_list.at(0).parse_error);
   EXPECT_EQ(results()->update_list.at(0).parse_error.value().error,
@@ -98,12 +94,8 @@
 
 TEST_F(ExtensionUpdateManifestTest, MissingVersion) {
   TestParseUpdateManifest(
-      "<?xml version='1.0'?>"
-      "<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>"
-      " <app appid='12345' status='ok'>"
-      "  <updatecheck codebase='http://example.com/extension_1.2.3.4.crx' />"
-      " </app>"
-      "</gupdate>");
+      CreateUpdateManifest({UpdateManifestItem("12345").codebase(
+          "http://example.com/extension_1.2.3.4.crx")}));
   ASSERT_EQ(1u, results()->update_list.size());
   EXPECT_TRUE(results()->update_list.at(0).parse_error);
   EXPECT_EQ(results()->update_list.at(0).parse_error.value().error,
@@ -112,14 +104,9 @@
 }
 
 TEST_F(ExtensionUpdateManifestTest, InvalidVersion) {
-  TestParseUpdateManifest(
-      "<?xml version='1.0'?>"
-      "<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>"
-      " <app appid='12345' status='ok'>"
-      "  <updatecheck codebase='http://example.com/extension_1.2.3.4.crx' "
-      "               version='1.2.3.a'/>"
-      " </app>"
-      "</gupdate>");
+  TestParseUpdateManifest(CreateUpdateManifest(
+      {UpdateManifestItem("12345").version("1.2.3.a").codebase(
+          "http://example.com/extension_1.2.3.4.crx")}));
   ASSERT_EQ(1u, results()->update_list.size());
   EXPECT_TRUE(results()->update_list.at(0).parse_error);
   EXPECT_EQ(results()->update_list.at(0).parse_error.value().error,
@@ -128,14 +115,11 @@
 }
 
 TEST_F(ExtensionUpdateManifestTest, ValidXml) {
-  TestParseUpdateManifest(
-      "<?xml version='1.0' encoding='UTF-8'?>"
-      "<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>"
-      " <app appid='12345'>"
-      "  <updatecheck codebase='http://example.com/extension_1.2.3.4.crx'"
-      "               version='1.2.3.4' prodversionmin='2.0.143.0' />"
-      " </app>"
-      "</gupdate>");
+  TestParseUpdateManifest(CreateUpdateManifest(
+      {UpdateManifestItem("12345")
+           .version("1.2.3.4")
+           .prodversionmin("2.0.143.0")
+           .codebase("http://example.com/extension_1.2.3.4.crx")}));
   ExpectNoError();
   ASSERT_TRUE(results());
   EXPECT_EQ(1U, results()->update_list.size());
@@ -196,15 +180,12 @@
 }
 
 TEST_F(ExtensionUpdateManifestTest, XmlWithHash) {
-  TestParseUpdateManifest(
-      "<?xml version='1.0' encoding='UTF-8'?>"
-      "<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>"
-      " <app appid='12345'>"
-      "  <updatecheck codebase='http://example.com/extension_1.2.3.4.crx'"
-      "               version='1.2.3.4' prodversionmin='2.0.143.0' "
-      "               hash_sha256='1234'/>"
-      " </app>"
-      "</gupdate>");
+  TestParseUpdateManifest(CreateUpdateManifest(
+      {UpdateManifestItem("12345")
+           .version("1.2.3.4")
+           .prodversionmin("2.0.143.0")
+           .codebase("http://example.com/extension_1.2.3.4.crx")
+           .hash_sha256("1234")}));
   ExpectNoError();
   ASSERT_TRUE(results());
   EXPECT_EQ(1U, results()->update_list.size());
@@ -230,12 +211,7 @@
 
 TEST_F(ExtensionUpdateManifestTest, NoUpdateResponse) {
   TestParseUpdateManifest(
-      "<?xml version='1.0' encoding='UTF-8'?>"
-      "<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>"
-      " <app appid='12345'>"
-      "  <updatecheck status='noupdate' />"
-      " </app>"
-      "</gupdate>");
+      CreateUpdateManifest({UpdateManifestItem("12345").status("noupdate")}));
   ExpectNoError();
   ASSERT_TRUE(results());
   ASSERT_FALSE(results()->update_list.empty());
@@ -267,21 +243,14 @@
 
 TEST_F(ExtensionUpdateManifestTest, Duplicates) {
   TestParseUpdateManifest(
-      "<?xml version='1.0' encoding='UTF-8'?>"
-      "<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>"
-      " <app appid='aaaaaaaa'>"
-      "  <updatecheck status='noupdate' />"
-      " </app>"
-      " <app appid='bbbbbbbb'>"
-      "  <updatecheck codebase='http://example.com/b_3.1.crx' version='3.1'/>"
-      " </app>"
-      " <app appid='aaaaaaaa'>"
-      "  <updatecheck status='noupdate' />"
-      " </app>"
-      " <app appid='aaaaaaaa'>"
-      "  <updatecheck codebase='http://example.com/a_2.0.crx' version='2.0'/>"
-      " </app>"
-      "</gupdate>");
+      CreateUpdateManifest({UpdateManifestItem("aaaaaaaa").status("noupdate"),
+                            UpdateManifestItem("bbbbbbbb")
+                                .version("3.1")
+                                .codebase("http://example.com/b_3.1.crx"),
+                            UpdateManifestItem("aaaaaaaa").status("noupdate"),
+                            UpdateManifestItem("aaaaaaaa")
+                                .version("2.0")
+                                .codebase("http://example.com/a_2.0.crx")}));
 
   ExpectNoError();
   ASSERT_TRUE(results());
@@ -309,28 +278,14 @@
 }
 
 TEST_F(ExtensionUpdateManifestTest, GroupByID) {
-  TestParseUpdateManifest(
-      "<?xml version='1.0' encoding='UTF-8'?>"
-      "<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>"
-      " <app appid='aaaaaaaa'>"
-      "  <updatecheck status='noupdate' />"
-      " </app>"
-      " <app appid='bbbbbbbb'>"
-      "  <updatecheck status='noupdate' />"
-      " </app>"
-      " <app appid='aaaaaaaa'>"
-      "  <updatecheck status='noupdate' />"
-      " </app>"
-      " <app appid='bbbbbbbb'>"
-      "  <updatecheck status='noupdate' />"
-      " </app>"
-      " <app appid='cccccccc'>"
-      "  <updatecheck status='noupdate' />"
-      " </app>"
-      " <app appid='aaaaaaaa'>"
-      "  <updatecheck status='noupdate' />"
-      " </app>"
-      "</gupdate>");
+  TestParseUpdateManifest(CreateUpdateManifest({
+      UpdateManifestItem("aaaaaaaa").status("noupdate"),
+      UpdateManifestItem("bbbbbbbb").status("noupdate"),
+      UpdateManifestItem("aaaaaaaa").status("noupdate"),
+      UpdateManifestItem("bbbbbbbb").status("noupdate"),
+      UpdateManifestItem("cccccccc").status("noupdate"),
+      UpdateManifestItem("aaaaaaaa").status("noupdate"),
+  }));
 
   ExpectNoError();
   ASSERT_TRUE(results());
diff --git a/fuchsia_web/webengine/BUILD.gn b/fuchsia_web/webengine/BUILD.gn
index bf3cc6e..9e0e1bf 100644
--- a/fuchsia_web/webengine/BUILD.gn
+++ b/fuchsia_web/webengine/BUILD.gn
@@ -473,7 +473,10 @@
 
 # TODO(crbug.com/1081525): Move to ../common/test.
 source_set("browsertest_core") {
-  visibility += [ "//fuchsia_web/runners:*" ]
+  visibility += [
+    "//fuchsia_web/runners:*",
+    "//fuchsia_web/webinstance_host:*",
+  ]
   testonly = true
   sources = [
     "test/frame_for_test.cc",
@@ -666,10 +669,6 @@
     "web_engine_integration_test.cc",
     "web_engine_integration_test_base.cc",
     "web_engine_integration_test_base.h",
-
-    # TODO(crbug.com/1081525): Move to //fuchsia_web/webinstance_host/ and
-    # remove the deps below.
-    "web_instance_host_integration_test.cc",
   ]
   data = [ "test/data" ]
   deps = [
@@ -679,7 +678,7 @@
     "//components/version_info",
     "//fuchsia_web/common/test:run_all_integration_tests",
     "//fuchsia_web/common/test:test_support",
-    "//fuchsia_web/webinstance_host",
+    "//fuchsia_web/webinstance_host:webinstance_host_integration_test",
     "//media",
     "//media/fuchsia/audio:test_support",
     "//media/fuchsia/camera:test_support",
diff --git a/fuchsia_web/webinstance_host/BUILD.gn b/fuchsia_web/webinstance_host/BUILD.gn
index 3dc09d3cb..dc318b6 100644
--- a/fuchsia_web/webinstance_host/BUILD.gn
+++ b/fuchsia_web/webinstance_host/BUILD.gn
@@ -4,7 +4,7 @@
 
 assert(is_fuchsia)
 
-visibility = []
+visibility = [ ":*" ]
 
 source_set("webinstance_host") {
   assert_no_deps = [
@@ -19,10 +19,6 @@
     "//fuchsia_web/runners/*",
     "//fuchsia_web/shell:*",
     "//fuchsia_web/webengine:context_provider",
-
-    # TODO(crbug.com/1081525): Move dependent tests into this directory and
-    # source_sets that have these deps.
-    "//fuchsia_web/webengine:web_engine_integration_tests__exec",
   ]
   sources = [
     "fuchsia_web_debug_proxy.cc",
@@ -53,3 +49,18 @@
     "//third_party/fuchsia-sdk/sdk/pkg/fidl",
   ]
 }
+
+source_set("webinstance_host_integration_test") {
+  testonly = true
+  visibility += [ "//fuchsia_web/webengine/*" ]
+  sources = [ "web_instance_host_integration_test.cc" ]
+  deps = [
+    ":webinstance_host",
+    "//base",
+    "//fuchsia_web/common/test:test_support",
+    "//fuchsia_web/webengine:browsertest_core",
+    "//net:test_support",
+    "//testing/gtest",
+    "//third_party/fuchsia-sdk/sdk/pkg/sys_cpp",
+  ]
+}
diff --git a/fuchsia_web/webinstance_host/DEPS b/fuchsia_web/webinstance_host/DEPS
index cfb5c0d4..d5a99afc 100644
--- a/fuchsia_web/webinstance_host/DEPS
+++ b/fuchsia_web/webinstance_host/DEPS
@@ -1,20 +1,24 @@
 include_rules = [
   "+components/embedder_support",
   "+components/fuchsia_component_support",
-  "+content/public/common",
   "+fuchsia_web/webengine/features.h",
   "+fuchsia_web/webengine/switches.h",
-  "+gpu/config/gpu_finch_features.h",
   "+gpu/command_buffer/service/gpu_switches.h",
-  "+media/base/key_system_names.h",
-  "+media/base/media_switches.h",
+  "+gpu/config/gpu_finch_features.h",
   "+net/http/http_util.h",
   "+services/network/public/cpp/features.h",
   "+services/network/public/cpp/network_switches.h",
   "+third_party/blink/public/common/switches.h",
   "+third_party/widevine/cdm/widevine_cdm_common.h",
   "+ui/display/display_switches.h",
-  "+ui/gl/gl_switches.h",
   "+ui/gfx/switches.h",
+  "+ui/gl/gl_switches.h",
   "+ui/ozone/public/ozone_switches.h",
 ]
+
+specific_include_rules = {
+  "web_instance_host_integration_test\.cc": [
+    "+fuchsia_web/webengine/test/frame_for_test.h",
+    "+net/test/embedded_test_server",
+  ],
+}
diff --git a/fuchsia_web/webengine/web_instance_host_integration_test.cc b/fuchsia_web/webinstance_host/web_instance_host_integration_test.cc
similarity index 100%
rename from fuchsia_web/webengine/web_instance_host_integration_test.cc
rename to fuchsia_web/webinstance_host/web_instance_host_integration_test.cc
diff --git a/infra/config/generated/builders/ci/ToTiOS/properties.json b/infra/config/generated/builders/ci/ToTiOS/properties.json
index 2dbb94fe..7812158 100644
--- a/infra/config/generated/builders/ci/ToTiOS/properties.json
+++ b/infra/config/generated/builders/ci/ToTiOS/properties.json
@@ -12,5 +12,5 @@
   "sheriff_rotations": [
     "chromium.clang"
   ],
-  "xcode_build_version": "14a5284g"
+  "xcode_build_version": "14a5294e"
 }
\ No newline at end of file
diff --git a/infra/config/generated/builders/ci/ToTiOSDevice/properties.json b/infra/config/generated/builders/ci/ToTiOSDevice/properties.json
index 2dbb94fe..7812158 100644
--- a/infra/config/generated/builders/ci/ToTiOSDevice/properties.json
+++ b/infra/config/generated/builders/ci/ToTiOSDevice/properties.json
@@ -12,5 +12,5 @@
   "sheriff_rotations": [
     "chromium.clang"
   ],
-  "xcode_build_version": "14a5284g"
+  "xcode_build_version": "14a5294e"
 }
\ No newline at end of file
diff --git a/infra/config/generated/builders/ci/ios-asan/properties.json b/infra/config/generated/builders/ci/ios-asan/properties.json
index 734e34c..2bbf4f7 100644
--- a/infra/config/generated/builders/ci/ios-asan/properties.json
+++ b/infra/config/generated/builders/ci/ios-asan/properties.json
@@ -72,5 +72,5 @@
   "sheriff_rotations": [
     "ios"
   ],
-  "xcode_build_version": "14a5284g"
+  "xcode_build_version": "14a5294e"
 }
\ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/ios-device \050reclient shadow\051/properties.json" "b/infra/config/generated/builders/ci/ios-device \050reclient shadow\051/properties.json"
index ba2dd18b..eef2d9b 100644
--- "a/infra/config/generated/builders/ci/ios-device \050reclient shadow\051/properties.json"
+++ "b/infra/config/generated/builders/ci/ios-device \050reclient shadow\051/properties.json"
@@ -52,5 +52,5 @@
   },
   "builder_group": "chromium.mac",
   "recipe": "chromium",
-  "xcode_build_version": "14a5284g"
+  "xcode_build_version": "14a5294e"
 }
\ No newline at end of file
diff --git a/infra/config/generated/builders/ci/ios-device/properties.json b/infra/config/generated/builders/ci/ios-device/properties.json
index fdfc2bb..7d9e0a02 100644
--- a/infra/config/generated/builders/ci/ios-device/properties.json
+++ b/infra/config/generated/builders/ci/ios-device/properties.json
@@ -63,5 +63,5 @@
     "chromium",
     "ios"
   ],
-  "xcode_build_version": "14a5284g"
+  "xcode_build_version": "14a5294e"
 }
\ No newline at end of file
diff --git a/infra/config/generated/builders/ci/ios-fieldtrial-rel/properties.json b/infra/config/generated/builders/ci/ios-fieldtrial-rel/properties.json
index a0b29eb..a86a5d1 100644
--- a/infra/config/generated/builders/ci/ios-fieldtrial-rel/properties.json
+++ b/infra/config/generated/builders/ci/ios-fieldtrial-rel/properties.json
@@ -58,5 +58,5 @@
   },
   "builder_group": "chromium.fyi",
   "recipe": "chromium",
-  "xcode_build_version": "14a5284g"
+  "xcode_build_version": "14a5294e"
 }
\ No newline at end of file
diff --git a/infra/config/generated/builders/ci/ios-m1-simulator-cronet/properties.json b/infra/config/generated/builders/ci/ios-m1-simulator-cronet/properties.json
index a9afdcd..5a7f7d4 100644
--- a/infra/config/generated/builders/ci/ios-m1-simulator-cronet/properties.json
+++ b/infra/config/generated/builders/ci/ios-m1-simulator-cronet/properties.json
@@ -58,5 +58,5 @@
   },
   "builder_group": "chromium.fyi",
   "recipe": "chromium",
-  "xcode_build_version": "14a5284g"
+  "xcode_build_version": "14a5294e"
 }
\ No newline at end of file
diff --git a/infra/config/generated/builders/ci/ios-m1-simulator/properties.json b/infra/config/generated/builders/ci/ios-m1-simulator/properties.json
index 5f97f14..d43ea35a 100644
--- a/infra/config/generated/builders/ci/ios-m1-simulator/properties.json
+++ b/infra/config/generated/builders/ci/ios-m1-simulator/properties.json
@@ -58,5 +58,5 @@
   },
   "builder_group": "chromium.fyi",
   "recipe": "chromium",
-  "xcode_build_version": "14a5284g"
+  "xcode_build_version": "14a5294e"
 }
\ No newline at end of file
diff --git a/infra/config/generated/builders/ci/ios-reclient/properties.json b/infra/config/generated/builders/ci/ios-reclient/properties.json
index 3b20b3a45..10e3f762 100644
--- a/infra/config/generated/builders/ci/ios-reclient/properties.json
+++ b/infra/config/generated/builders/ci/ios-reclient/properties.json
@@ -17,5 +17,5 @@
   },
   "builder_group": "chromium.fyi",
   "recipe": "chromium",
-  "xcode_build_version": "14a5284g"
+  "xcode_build_version": "14a5294e"
 }
\ No newline at end of file
diff --git a/infra/config/generated/builders/ci/ios-simulator-code-coverage/properties.json b/infra/config/generated/builders/ci/ios-simulator-code-coverage/properties.json
index 1ff363c..edea5b5 100644
--- a/infra/config/generated/builders/ci/ios-simulator-code-coverage/properties.json
+++ b/infra/config/generated/builders/ci/ios-simulator-code-coverage/properties.json
@@ -21,5 +21,5 @@
   },
   "builder_group": "chromium.fyi",
   "recipe": "chromium",
-  "xcode_build_version": "14a5284g"
+  "xcode_build_version": "14a5294e"
 }
\ No newline at end of file
diff --git "a/infra/config/generated/builders/ci/ios-simulator-cronet \050reclient shadow\051/properties.json" "b/infra/config/generated/builders/ci/ios-simulator-cronet \050reclient shadow\051/properties.json"
index e996cc3..5b7fa25d 100644
--- "a/infra/config/generated/builders/ci/ios-simulator-cronet \050reclient shadow\051/properties.json"
+++ "b/infra/config/generated/builders/ci/ios-simulator-cronet \050reclient shadow\051/properties.json"
@@ -53,5 +53,5 @@
   },
   "builder_group": "chromium.fyi",
   "recipe": "chromium",
-  "xcode_build_version": "14a5284g"
+  "xcode_build_version": "14a5294e"
 }
\ No newline at end of file
diff --git a/infra/config/generated/builders/ci/ios-simulator-cronet/properties.json b/infra/config/generated/builders/ci/ios-simulator-cronet/properties.json
index 744100c..3a86890 100644
--- a/infra/config/generated/builders/ci/ios-simulator-cronet/properties.json
+++ b/infra/config/generated/builders/ci/ios-simulator-cronet/properties.json
@@ -59,5 +59,5 @@
   },
   "builder_group": "chromium.fyi",
   "recipe": "chromium",
-  "xcode_build_version": "14a5284g"
+  "xcode_build_version": "14a5294e"
 }
\ No newline at end of file
diff --git a/infra/config/generated/builders/ci/ios-simulator-full-configs/properties.json b/infra/config/generated/builders/ci/ios-simulator-full-configs/properties.json
index eb50af3d..a018dd6 100644
--- a/infra/config/generated/builders/ci/ios-simulator-full-configs/properties.json
+++ b/infra/config/generated/builders/ci/ios-simulator-full-configs/properties.json
@@ -66,5 +66,5 @@
     "chromium",
     "ios"
   ],
-  "xcode_build_version": "14a5284g"
+  "xcode_build_version": "14a5294e"
 }
\ No newline at end of file
diff --git a/infra/config/generated/builders/ci/ios-simulator-multi-window/properties.json b/infra/config/generated/builders/ci/ios-simulator-multi-window/properties.json
index 593d92af..3576de13 100644
--- a/infra/config/generated/builders/ci/ios-simulator-multi-window/properties.json
+++ b/infra/config/generated/builders/ci/ios-simulator-multi-window/properties.json
@@ -13,5 +13,5 @@
   },
   "builder_group": "chromium.fyi",
   "recipe": "chromium",
-  "xcode_build_version": "14a5284g"
+  "xcode_build_version": "14a5294e"
 }
\ No newline at end of file
diff --git a/infra/config/generated/builders/ci/ios-simulator-noncq/properties.json b/infra/config/generated/builders/ci/ios-simulator-noncq/properties.json
index 0f3a146f..1d0ac922 100644
--- a/infra/config/generated/builders/ci/ios-simulator-noncq/properties.json
+++ b/infra/config/generated/builders/ci/ios-simulator-noncq/properties.json
@@ -63,5 +63,5 @@
     "chromium",
     "ios"
   ],
-  "xcode_build_version": "14a5284g"
+  "xcode_build_version": "14a5294e"
 }
\ No newline at end of file
diff --git a/infra/config/generated/builders/ci/ios-simulator/properties.json b/infra/config/generated/builders/ci/ios-simulator/properties.json
index 57748ba..748de0e0 100644
--- a/infra/config/generated/builders/ci/ios-simulator/properties.json
+++ b/infra/config/generated/builders/ci/ios-simulator/properties.json
@@ -74,5 +74,5 @@
     "chromium",
     "ios"
   ],
-  "xcode_build_version": "14a5284g"
+  "xcode_build_version": "14a5294e"
 }
\ No newline at end of file
diff --git a/infra/config/generated/builders/ci/ios15-beta-simulator/properties.json b/infra/config/generated/builders/ci/ios15-beta-simulator/properties.json
index 593d92af..3576de13 100644
--- a/infra/config/generated/builders/ci/ios15-beta-simulator/properties.json
+++ b/infra/config/generated/builders/ci/ios15-beta-simulator/properties.json
@@ -13,5 +13,5 @@
   },
   "builder_group": "chromium.fyi",
   "recipe": "chromium",
-  "xcode_build_version": "14a5284g"
+  "xcode_build_version": "14a5294e"
 }
\ No newline at end of file
diff --git a/infra/config/generated/builders/ci/ios15-sdk-device/properties.json b/infra/config/generated/builders/ci/ios15-sdk-device/properties.json
index 593d92af..3576de13 100644
--- a/infra/config/generated/builders/ci/ios15-sdk-device/properties.json
+++ b/infra/config/generated/builders/ci/ios15-sdk-device/properties.json
@@ -13,5 +13,5 @@
   },
   "builder_group": "chromium.fyi",
   "recipe": "chromium",
-  "xcode_build_version": "14a5284g"
+  "xcode_build_version": "14a5294e"
 }
\ No newline at end of file
diff --git a/infra/config/generated/builders/ci/ios15-sdk-simulator/properties.json b/infra/config/generated/builders/ci/ios15-sdk-simulator/properties.json
index 593d92af..3576de13 100644
--- a/infra/config/generated/builders/ci/ios15-sdk-simulator/properties.json
+++ b/infra/config/generated/builders/ci/ios15-sdk-simulator/properties.json
@@ -13,5 +13,5 @@
   },
   "builder_group": "chromium.fyi",
   "recipe": "chromium",
-  "xcode_build_version": "14a5284g"
+  "xcode_build_version": "14a5294e"
 }
\ No newline at end of file
diff --git a/infra/config/generated/builders/ci/ios16-beta-simulator/properties.json b/infra/config/generated/builders/ci/ios16-beta-simulator/properties.json
index 208c524..691f0bf 100644
--- a/infra/config/generated/builders/ci/ios16-beta-simulator/properties.json
+++ b/infra/config/generated/builders/ci/ios16-beta-simulator/properties.json
@@ -59,5 +59,5 @@
   },
   "builder_group": "chromium.fyi",
   "recipe": "chromium",
-  "xcode_build_version": "14a5284g"
+  "xcode_build_version": "14a5294e"
 }
\ No newline at end of file
diff --git a/infra/config/generated/builders/try/ios-asan/properties.json b/infra/config/generated/builders/try/ios-asan/properties.json
index 642630f..e330255 100644
--- a/infra/config/generated/builders/try/ios-asan/properties.json
+++ b/infra/config/generated/builders/try/ios-asan/properties.json
@@ -58,5 +58,5 @@
   },
   "builder_group": "tryserver.chromium.mac",
   "recipe": "chromium_trybot",
-  "xcode_build_version": "14a5284g"
+  "xcode_build_version": "14a5294e"
 }
\ No newline at end of file
diff --git a/infra/config/generated/builders/try/ios-device/properties.json b/infra/config/generated/builders/try/ios-device/properties.json
index 5a0a1cf..6bb0821 100644
--- a/infra/config/generated/builders/try/ios-device/properties.json
+++ b/infra/config/generated/builders/try/ios-device/properties.json
@@ -53,5 +53,5 @@
   },
   "builder_group": "tryserver.chromium.mac",
   "recipe": "chromium_trybot",
-  "xcode_build_version": "14a5284g"
+  "xcode_build_version": "14a5294e"
 }
\ No newline at end of file
diff --git a/infra/config/generated/builders/try/ios-fieldtrial-rel/properties.json b/infra/config/generated/builders/try/ios-fieldtrial-rel/properties.json
index 2e923934..6d8969b 100644
--- a/infra/config/generated/builders/try/ios-fieldtrial-rel/properties.json
+++ b/infra/config/generated/builders/try/ios-fieldtrial-rel/properties.json
@@ -52,5 +52,5 @@
   },
   "builder_group": "tryserver.chromium.mac",
   "recipe": "chromium_trybot",
-  "xcode_build_version": "14a5284g"
+  "xcode_build_version": "14a5294e"
 }
\ No newline at end of file
diff --git a/infra/config/generated/builders/try/ios-m1-simulator-cronet/properties.json b/infra/config/generated/builders/try/ios-m1-simulator-cronet/properties.json
index d0c77f6..30939a23 100644
--- a/infra/config/generated/builders/try/ios-m1-simulator-cronet/properties.json
+++ b/infra/config/generated/builders/try/ios-m1-simulator-cronet/properties.json
@@ -52,5 +52,5 @@
   },
   "builder_group": "tryserver.chromium.mac",
   "recipe": "chromium_trybot",
-  "xcode_build_version": "14a5284g"
+  "xcode_build_version": "14a5294e"
 }
\ No newline at end of file
diff --git a/infra/config/generated/builders/try/ios-m1-simulator/properties.json b/infra/config/generated/builders/try/ios-m1-simulator/properties.json
index 1464ebf..e5a0a94 100644
--- a/infra/config/generated/builders/try/ios-m1-simulator/properties.json
+++ b/infra/config/generated/builders/try/ios-m1-simulator/properties.json
@@ -52,5 +52,5 @@
   },
   "builder_group": "tryserver.chromium.mac",
   "recipe": "chromium_trybot",
-  "xcode_build_version": "14a5284g"
+  "xcode_build_version": "14a5294e"
 }
\ No newline at end of file
diff --git a/infra/config/generated/builders/try/ios-simulator-cronet/properties.json b/infra/config/generated/builders/try/ios-simulator-cronet/properties.json
index 1d741cf..90cd441 100644
--- a/infra/config/generated/builders/try/ios-simulator-cronet/properties.json
+++ b/infra/config/generated/builders/try/ios-simulator-cronet/properties.json
@@ -56,5 +56,5 @@
   },
   "builder_group": "tryserver.chromium.mac",
   "recipe": "chromium_trybot",
-  "xcode_build_version": "14a5284g"
+  "xcode_build_version": "14a5294e"
 }
\ No newline at end of file
diff --git a/infra/config/generated/builders/try/ios-simulator-full-configs/properties.json b/infra/config/generated/builders/try/ios-simulator-full-configs/properties.json
index a62a8c16..77e86b6 100644
--- a/infra/config/generated/builders/try/ios-simulator-full-configs/properties.json
+++ b/infra/config/generated/builders/try/ios-simulator-full-configs/properties.json
@@ -67,5 +67,5 @@
   },
   "builder_group": "tryserver.chromium.mac",
   "recipe": "chromium_trybot",
-  "xcode_build_version": "14a5284g"
+  "xcode_build_version": "14a5294e"
 }
\ No newline at end of file
diff --git a/infra/config/generated/builders/try/ios-simulator-inverse-fieldtrials-fyi/properties.json b/infra/config/generated/builders/try/ios-simulator-inverse-fieldtrials-fyi/properties.json
index 732cf39..ad6e72e 100644
--- a/infra/config/generated/builders/try/ios-simulator-inverse-fieldtrials-fyi/properties.json
+++ b/infra/config/generated/builders/try/ios-simulator-inverse-fieldtrials-fyi/properties.json
@@ -56,5 +56,5 @@
   },
   "builder_group": "tryserver.chromium.mac",
   "recipe": "chromium_trybot",
-  "xcode_build_version": "14a5284g"
+  "xcode_build_version": "14a5294e"
 }
\ No newline at end of file
diff --git a/infra/config/generated/builders/try/ios-simulator-multi-window/properties.json b/infra/config/generated/builders/try/ios-simulator-multi-window/properties.json
index b93e9eaa..6224be58 100644
--- a/infra/config/generated/builders/try/ios-simulator-multi-window/properties.json
+++ b/infra/config/generated/builders/try/ios-simulator-multi-window/properties.json
@@ -13,5 +13,5 @@
   },
   "builder_group": "tryserver.chromium.mac",
   "recipe": "chromium_trybot",
-  "xcode_build_version": "14a5284g"
+  "xcode_build_version": "14a5294e"
 }
\ No newline at end of file
diff --git a/infra/config/generated/builders/try/ios-simulator-noncq/properties.json b/infra/config/generated/builders/try/ios-simulator-noncq/properties.json
index f9497671..6ced4785 100644
--- a/infra/config/generated/builders/try/ios-simulator-noncq/properties.json
+++ b/infra/config/generated/builders/try/ios-simulator-noncq/properties.json
@@ -53,5 +53,5 @@
   },
   "builder_group": "tryserver.chromium.mac",
   "recipe": "chromium_trybot",
-  "xcode_build_version": "14a5284g"
+  "xcode_build_version": "14a5294e"
 }
\ No newline at end of file
diff --git a/infra/config/generated/builders/try/ios-simulator-rts/properties.json b/infra/config/generated/builders/try/ios-simulator-rts/properties.json
index 8a2eeed6..98a4e78 100644
--- a/infra/config/generated/builders/try/ios-simulator-rts/properties.json
+++ b/infra/config/generated/builders/try/ios-simulator-rts/properties.json
@@ -70,5 +70,5 @@
   },
   "builder_group": "tryserver.chromium.mac",
   "recipe": "chromium_trybot",
-  "xcode_build_version": "14a5284g"
+  "xcode_build_version": "14a5294e"
 }
\ No newline at end of file
diff --git a/infra/config/generated/builders/try/ios-simulator/properties.json b/infra/config/generated/builders/try/ios-simulator/properties.json
index ffeeda5..c9fddc50 100644
--- a/infra/config/generated/builders/try/ios-simulator/properties.json
+++ b/infra/config/generated/builders/try/ios-simulator/properties.json
@@ -67,5 +67,5 @@
   },
   "builder_group": "tryserver.chromium.mac",
   "recipe": "chromium_trybot",
-  "xcode_build_version": "14a5284g"
+  "xcode_build_version": "14a5294e"
 }
\ No newline at end of file
diff --git a/infra/config/generated/builders/try/ios15-beta-simulator/properties.json b/infra/config/generated/builders/try/ios15-beta-simulator/properties.json
index b93e9eaa..6224be58 100644
--- a/infra/config/generated/builders/try/ios15-beta-simulator/properties.json
+++ b/infra/config/generated/builders/try/ios15-beta-simulator/properties.json
@@ -13,5 +13,5 @@
   },
   "builder_group": "tryserver.chromium.mac",
   "recipe": "chromium_trybot",
-  "xcode_build_version": "14a5284g"
+  "xcode_build_version": "14a5294e"
 }
\ No newline at end of file
diff --git a/infra/config/generated/builders/try/ios15-sdk-simulator/properties.json b/infra/config/generated/builders/try/ios15-sdk-simulator/properties.json
index b93e9eaa..6224be58 100644
--- a/infra/config/generated/builders/try/ios15-sdk-simulator/properties.json
+++ b/infra/config/generated/builders/try/ios15-sdk-simulator/properties.json
@@ -13,5 +13,5 @@
   },
   "builder_group": "tryserver.chromium.mac",
   "recipe": "chromium_trybot",
-  "xcode_build_version": "14a5284g"
+  "xcode_build_version": "14a5294e"
 }
\ No newline at end of file
diff --git a/infra/config/generated/builders/try/ios16-beta-simulator/properties.json b/infra/config/generated/builders/try/ios16-beta-simulator/properties.json
index ead9455..a704e3e 100644
--- a/infra/config/generated/builders/try/ios16-beta-simulator/properties.json
+++ b/infra/config/generated/builders/try/ios16-beta-simulator/properties.json
@@ -53,5 +53,5 @@
   },
   "builder_group": "tryserver.chromium.mac",
   "recipe": "chromium_trybot",
-  "xcode_build_version": "14a5284g"
+  "xcode_build_version": "14a5294e"
 }
\ No newline at end of file
diff --git a/infra/config/generated/builders/webrtc.fyi/WebRTC Chromium FYI ios-device/properties.json b/infra/config/generated/builders/webrtc.fyi/WebRTC Chromium FYI ios-device/properties.json
index c1f79de..a28b328 100644
--- a/infra/config/generated/builders/webrtc.fyi/WebRTC Chromium FYI ios-device/properties.json
+++ b/infra/config/generated/builders/webrtc.fyi/WebRTC Chromium FYI ios-device/properties.json
@@ -13,5 +13,5 @@
   },
   "builder_group": "chromium.webrtc.fyi",
   "recipe": "chromium",
-  "xcode_build_version": "14a5284g"
+  "xcode_build_version": "14a5294e"
 }
\ No newline at end of file
diff --git a/infra/config/generated/builders/webrtc.fyi/WebRTC Chromium FYI ios-simulator/properties.json b/infra/config/generated/builders/webrtc.fyi/WebRTC Chromium FYI ios-simulator/properties.json
index c1f79de..a28b328 100644
--- a/infra/config/generated/builders/webrtc.fyi/WebRTC Chromium FYI ios-simulator/properties.json
+++ b/infra/config/generated/builders/webrtc.fyi/WebRTC Chromium FYI ios-simulator/properties.json
@@ -13,5 +13,5 @@
   },
   "builder_group": "chromium.webrtc.fyi",
   "recipe": "chromium",
-  "xcode_build_version": "14a5284g"
+  "xcode_build_version": "14a5294e"
 }
\ No newline at end of file
diff --git a/infra/config/generated/luci/cr-buildbucket.cfg b/infra/config/generated/luci/cr-buildbucket.cfg
index 2adc44c..7839f69 100644
--- a/infra/config/generated/luci/cr-buildbucket.cfg
+++ b/infra/config/generated/luci/cr-buildbucket.cfg
@@ -4031,12 +4031,12 @@
         '  },'
         '  "builder_group": "chromium.fyi",'
         '  "recipe": "reclient_goma_comparison",'
-        '  "xcode_build_version": "14a5284g"'
+        '  "xcode_build_version": "14a5294e"'
         '}'
       execution_timeout_secs: 36000
       caches {
-        name: "xcode_ios_14a5284g"
-        path: "xcode_ios_14a5284g.app"
+        name: "xcode_ios_14a5294e"
+        path: "xcode_ios_14a5294e.app"
       }
       build_numbers: YES
       service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
@@ -4114,12 +4114,12 @@
         '  },'
         '  "builder_group": "chromium.fyi",'
         '  "recipe": "reclient_goma_comparison",'
-        '  "xcode_build_version": "14a5284g"'
+        '  "xcode_build_version": "14a5294e"'
         '}'
       execution_timeout_secs: 36000
       caches {
-        name: "xcode_ios_14a5284g"
-        path: "xcode_ios_14a5284g.app"
+        name: "xcode_ios_14a5294e"
+        path: "xcode_ios_14a5294e.app"
       }
       build_numbers: YES
       service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
@@ -10030,12 +10030,12 @@
         '  },'
         '  "builder_group": "chromium.fuzz",'
         '  "recipe": "chromium_libfuzzer",'
-        '  "xcode_build_version": "14a5284g"'
+        '  "xcode_build_version": "14a5294e"'
         '}'
       execution_timeout_secs: 14400
       caches {
-        name: "xcode_ios_14a5284g"
-        path: "xcode_ios_14a5284g.app"
+        name: "xcode_ios_14a5294e"
+        path: "xcode_ios_14a5294e.app"
       }
       build_numbers: YES
       service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
@@ -19675,8 +19675,8 @@
         '}'
       execution_timeout_secs: 50400
       caches {
-        name: "xcode_ios_14a5284g"
-        path: "xcode_ios_14a5284g.app"
+        name: "xcode_ios_14a5294e"
+        path: "xcode_ios_14a5294e.app"
       }
       build_numbers: YES
       service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
@@ -19760,8 +19760,8 @@
         '}'
       execution_timeout_secs: 50400
       caches {
-        name: "xcode_ios_14a5284g"
-        path: "xcode_ios_14a5284g.app"
+        name: "xcode_ios_14a5294e"
+        path: "xcode_ios_14a5294e.app"
       }
       build_numbers: YES
       service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
@@ -31812,12 +31812,12 @@
         '  "sheriff_rotations": ['
         '    "angle"'
         '  ],'
-        '  "xcode_build_version": "14a5284g"'
+        '  "xcode_build_version": "14a5294e"'
         '}'
       execution_timeout_secs: 10800
       caches {
-        name: "xcode_ios_14a5284g"
-        path: "xcode_ios_14a5284g.app"
+        name: "xcode_ios_14a5294e"
+        path: "xcode_ios_14a5294e.app"
       }
       build_numbers: YES
       service_account: "chromium-ci-gpu-builder@chops-service-accounts.iam.gserviceaccount.com"
@@ -32056,8 +32056,8 @@
         '}'
       execution_timeout_secs: 10800
       caches {
-        name: "xcode_ios_14a5284g"
-        path: "xcode_ios_14a5284g.app"
+        name: "xcode_ios_14a5294e"
+        path: "xcode_ios_14a5294e.app"
       }
       build_numbers: YES
       service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
@@ -32226,8 +32226,8 @@
         '}'
       execution_timeout_secs: 10800
       caches {
-        name: "xcode_ios_14a5284g"
-        path: "xcode_ios_14a5284g.app"
+        name: "xcode_ios_14a5294e"
+        path: "xcode_ios_14a5294e.app"
       }
       build_numbers: YES
       service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
@@ -32308,8 +32308,8 @@
         '}'
       execution_timeout_secs: 10800
       caches {
-        name: "xcode_ios_14a5284g"
-        path: "xcode_ios_14a5284g.app"
+        name: "xcode_ios_14a5294e"
+        path: "xcode_ios_14a5294e.app"
       }
       build_numbers: YES
       service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
@@ -32388,8 +32388,8 @@
         '}'
       execution_timeout_secs: 36000
       caches {
-        name: "xcode_ios_14a5284g"
-        path: "xcode_ios_14a5284g.app"
+        name: "xcode_ios_14a5294e"
+        path: "xcode_ios_14a5294e.app"
       }
       build_numbers: YES
       service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
@@ -32469,8 +32469,8 @@
         '}'
       execution_timeout_secs: 36000
       caches {
-        name: "xcode_ios_14a5284g"
-        path: "xcode_ios_14a5284g.app"
+        name: "xcode_ios_14a5294e"
+        path: "xcode_ios_14a5294e.app"
       }
       build_numbers: YES
       service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
@@ -32550,8 +32550,8 @@
         '}'
       execution_timeout_secs: 36000
       caches {
-        name: "xcode_ios_14a5284g"
-        path: "xcode_ios_14a5284g.app"
+        name: "xcode_ios_14a5294e"
+        path: "xcode_ios_14a5294e.app"
       }
       build_numbers: YES
       service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
@@ -32632,8 +32632,8 @@
         '}'
       execution_timeout_secs: 36000
       caches {
-        name: "xcode_ios_14a5284g"
-        path: "xcode_ios_14a5284g.app"
+        name: "xcode_ios_14a5294e"
+        path: "xcode_ios_14a5294e.app"
       }
       build_numbers: YES
       service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
@@ -32718,8 +32718,8 @@
         '}'
       execution_timeout_secs: 10800
       caches {
-        name: "xcode_ios_14a5284g"
-        path: "xcode_ios_14a5284g.app"
+        name: "xcode_ios_14a5294e"
+        path: "xcode_ios_14a5294e.app"
       }
       build_numbers: YES
       service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
@@ -32800,8 +32800,8 @@
         '}'
       execution_timeout_secs: 72000
       caches {
-        name: "xcode_ios_14a5284g"
-        path: "xcode_ios_14a5284g.app"
+        name: "xcode_ios_14a5294e"
+        path: "xcode_ios_14a5294e.app"
       }
       build_numbers: YES
       service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
@@ -32880,8 +32880,8 @@
         '}'
       execution_timeout_secs: 36000
       caches {
-        name: "xcode_ios_14a5284g"
-        path: "xcode_ios_14a5284g.app"
+        name: "xcode_ios_14a5294e"
+        path: "xcode_ios_14a5294e.app"
       }
       build_numbers: YES
       service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
@@ -32962,8 +32962,8 @@
         '}'
       execution_timeout_secs: 36000
       caches {
-        name: "xcode_ios_14a5284g"
-        path: "xcode_ios_14a5284g.app"
+        name: "xcode_ios_14a5294e"
+        path: "xcode_ios_14a5294e.app"
       }
       build_numbers: YES
       service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
@@ -33047,8 +33047,8 @@
         '}'
       execution_timeout_secs: 10800
       caches {
-        name: "xcode_ios_14a5284g"
-        path: "xcode_ios_14a5284g.app"
+        name: "xcode_ios_14a5294e"
+        path: "xcode_ios_14a5294e.app"
       }
       build_numbers: YES
       service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
@@ -33127,8 +33127,8 @@
         '}'
       execution_timeout_secs: 36000
       caches {
-        name: "xcode_ios_14a5284g"
-        path: "xcode_ios_14a5284g.app"
+        name: "xcode_ios_14a5294e"
+        path: "xcode_ios_14a5294e.app"
       }
       build_numbers: YES
       service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
@@ -33212,8 +33212,8 @@
         '}'
       execution_timeout_secs: 10800
       caches {
-        name: "xcode_ios_14a5284g"
-        path: "xcode_ios_14a5284g.app"
+        name: "xcode_ios_14a5294e"
+        path: "xcode_ios_14a5294e.app"
       }
       build_numbers: YES
       service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
@@ -33373,8 +33373,8 @@
         '}'
       execution_timeout_secs: 36000
       caches {
-        name: "xcode_ios_14a5284g"
-        path: "xcode_ios_14a5284g.app"
+        name: "xcode_ios_14a5294e"
+        path: "xcode_ios_14a5294e.app"
       }
       build_numbers: YES
       service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
@@ -33454,8 +33454,8 @@
         '}'
       execution_timeout_secs: 36000
       caches {
-        name: "xcode_ios_14a5284g"
-        path: "xcode_ios_14a5284g.app"
+        name: "xcode_ios_14a5294e"
+        path: "xcode_ios_14a5294e.app"
       }
       build_numbers: YES
       service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
@@ -33535,8 +33535,8 @@
         '}'
       execution_timeout_secs: 36000
       caches {
-        name: "xcode_ios_14a5284g"
-        path: "xcode_ios_14a5284g.app"
+        name: "xcode_ios_14a5294e"
+        path: "xcode_ios_14a5294e.app"
       }
       build_numbers: YES
       service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
@@ -33616,8 +33616,8 @@
         '}'
       execution_timeout_secs: 36000
       caches {
-        name: "xcode_ios_14a5284g"
-        path: "xcode_ios_14a5284g.app"
+        name: "xcode_ios_14a5294e"
+        path: "xcode_ios_14a5294e.app"
       }
       build_numbers: YES
       service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
@@ -64715,8 +64715,8 @@
         path: "win_toolchain"
       }
       caches {
-        name: "xcode_ios_14a5284g"
-        path: "xcode_ios_14a5284g.app"
+        name: "xcode_ios_14a5294e"
+        path: "xcode_ios_14a5294e.app"
       }
       build_numbers: YES
       service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com"
@@ -64985,8 +64985,8 @@
         path: "win_toolchain"
       }
       caches {
-        name: "xcode_ios_14a5284g"
-        path: "xcode_ios_14a5284g.app"
+        name: "xcode_ios_14a5294e"
+        path: "xcode_ios_14a5294e.app"
       }
       build_numbers: YES
       service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com"
@@ -65077,8 +65077,8 @@
         path: "win_toolchain"
       }
       caches {
-        name: "xcode_ios_14a5284g"
-        path: "xcode_ios_14a5284g.app"
+        name: "xcode_ios_14a5294e"
+        path: "xcode_ios_14a5294e.app"
       }
       build_numbers: YES
       service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com"
@@ -65169,8 +65169,8 @@
         path: "win_toolchain"
       }
       caches {
-        name: "xcode_ios_14a5284g"
-        path: "xcode_ios_14a5284g.app"
+        name: "xcode_ios_14a5294e"
+        path: "xcode_ios_14a5294e.app"
       }
       build_numbers: YES
       service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com"
@@ -65261,8 +65261,8 @@
         path: "win_toolchain"
       }
       caches {
-        name: "xcode_ios_14a5284g"
-        path: "xcode_ios_14a5284g.app"
+        name: "xcode_ios_14a5294e"
+        path: "xcode_ios_14a5294e.app"
       }
       build_numbers: YES
       service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com"
@@ -65353,8 +65353,8 @@
         path: "win_toolchain"
       }
       caches {
-        name: "xcode_ios_14a5284g"
-        path: "xcode_ios_14a5284g.app"
+        name: "xcode_ios_14a5294e"
+        path: "xcode_ios_14a5294e.app"
       }
       build_numbers: YES
       service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com"
@@ -65449,8 +65449,8 @@
         path: "win_toolchain"
       }
       caches {
-        name: "xcode_ios_14a5284g"
-        path: "xcode_ios_14a5284g.app"
+        name: "xcode_ios_14a5294e"
+        path: "xcode_ios_14a5294e.app"
       }
       build_numbers: YES
       service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com"
@@ -65541,8 +65541,8 @@
         path: "win_toolchain"
       }
       caches {
-        name: "xcode_ios_14a5284g"
-        path: "xcode_ios_14a5284g.app"
+        name: "xcode_ios_14a5294e"
+        path: "xcode_ios_14a5294e.app"
       }
       build_numbers: YES
       service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com"
@@ -65633,8 +65633,8 @@
         path: "win_toolchain"
       }
       caches {
-        name: "xcode_ios_14a5284g"
-        path: "xcode_ios_14a5284g.app"
+        name: "xcode_ios_14a5294e"
+        path: "xcode_ios_14a5294e.app"
       }
       build_numbers: YES
       service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com"
@@ -65725,8 +65725,8 @@
         path: "win_toolchain"
       }
       caches {
-        name: "xcode_ios_14a5284g"
-        path: "xcode_ios_14a5284g.app"
+        name: "xcode_ios_14a5294e"
+        path: "xcode_ios_14a5294e.app"
       }
       build_numbers: YES
       service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com"
@@ -65817,8 +65817,8 @@
         path: "win_toolchain"
       }
       caches {
-        name: "xcode_ios_14a5284g"
-        path: "xcode_ios_14a5284g.app"
+        name: "xcode_ios_14a5294e"
+        path: "xcode_ios_14a5294e.app"
       }
       build_numbers: YES
       service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com"
@@ -65909,8 +65909,8 @@
         path: "win_toolchain"
       }
       caches {
-        name: "xcode_ios_14a5284g"
-        path: "xcode_ios_14a5284g.app"
+        name: "xcode_ios_14a5294e"
+        path: "xcode_ios_14a5294e.app"
       }
       build_numbers: YES
       service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com"
@@ -66001,8 +66001,8 @@
         path: "win_toolchain"
       }
       caches {
-        name: "xcode_ios_14a5284g"
-        path: "xcode_ios_14a5284g.app"
+        name: "xcode_ios_14a5294e"
+        path: "xcode_ios_14a5294e.app"
       }
       build_numbers: YES
       service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com"
@@ -66093,8 +66093,8 @@
         path: "win_toolchain"
       }
       caches {
-        name: "xcode_ios_14a5284g"
-        path: "xcode_ios_14a5284g.app"
+        name: "xcode_ios_14a5294e"
+        path: "xcode_ios_14a5294e.app"
       }
       build_numbers: YES
       service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com"
@@ -66185,8 +66185,8 @@
         path: "win_toolchain"
       }
       caches {
-        name: "xcode_ios_14a5284g"
-        path: "xcode_ios_14a5284g.app"
+        name: "xcode_ios_14a5294e"
+        path: "xcode_ios_14a5294e.app"
       }
       build_numbers: YES
       service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com"
@@ -82285,8 +82285,8 @@
         '}'
       execution_timeout_secs: 7200
       caches {
-        name: "xcode_ios_14a5284g"
-        path: "xcode_ios_14a5284g.app"
+        name: "xcode_ios_14a5294e"
+        path: "xcode_ios_14a5294e.app"
       }
       build_numbers: YES
       service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
@@ -82336,8 +82336,8 @@
         '}'
       execution_timeout_secs: 7200
       caches {
-        name: "xcode_ios_14a5284g"
-        path: "xcode_ios_14a5284g.app"
+        name: "xcode_ios_14a5294e"
+        path: "xcode_ios_14a5294e.app"
       }
       build_numbers: YES
       service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
diff --git a/infra/config/lib/builders.star b/infra/config/lib/builders.star
index 7dea943..af68e77b 100644
--- a/infra/config/lib/builders.star
+++ b/infra/config/lib/builders.star
@@ -185,8 +185,8 @@
     x13main = xcode_enum("13c100"),
     # A newer Xcode 13 version used on beta bots.
     x13betabots = xcode_enum("13f17a"),
-    # Xcode14 beta 4 will be used to build Main iOS
-    x14main = xcode_enum("14a5284g"),
+    # Xcode14 beta 5 will be used to build Main iOS
+    x14main = xcode_enum("14a5294e"),
     # A newer Xcode 14 version used on beta bots.
     x14betabots = xcode_enum("14a5294e"),
     # in use by ios-webkit-tot
diff --git a/ios/chrome/app/strings/ios_strings.grd b/ios/chrome/app/strings/ios_strings.grd
index 87d3bb5..31398cee 100644
--- a/ios/chrome/app/strings/ios_strings.grd
+++ b/ios/chrome/app/strings/ios_strings.grd
@@ -2295,6 +2295,9 @@
       <message name="IDS_IOS_PASSWORD_MANAGER_HEADER_NOT_SYNCING" desc="Header text for the view in Settings for managing saved passwords. This string only appears when the user is not syncing their passwords. [Length: unlimited] [iOS only]">
         Passwords are saved to Google Password Manager on this device only.
       </message>
+      <message name="IDS_IOS_ADD_PASSWORD" desc="Text on a button which allows the user to save a password for a website in their Password Manager.">
+        Add Password...
+      </message>
       <message name="IDS_IOS_CHECK_PASSWORDS" desc="Title for the item in Settings for Password Check feature" meaning="Label tells the user about status of Password Check [CHAR_LIMIT=25] [iOS only]">
         Check Passwords
       </message>
diff --git a/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_ADD_PASSWORD.png.sha1 b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_ADD_PASSWORD.png.sha1
new file mode 100644
index 0000000..24c2a695
--- /dev/null
+++ b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_ADD_PASSWORD.png.sha1
@@ -0,0 +1 @@
+5cadf2ac66a717eddb4da4d92fd08c6b5449f27e
\ No newline at end of file
diff --git a/ios/chrome/browser/OWNERS b/ios/chrome/browser/OWNERS
index 0ec755b..d98bf90 100644
--- a/ios/chrome/browser/OWNERS
+++ b/ios/chrome/browser/OWNERS
@@ -1 +1,3 @@
 per-file ios_chrome_io_thread*=rch@chromium.org
+per-file system_flags*=*
+per-file resources/*=*
diff --git a/ios/chrome/browser/flags/about_flags.mm b/ios/chrome/browser/flags/about_flags.mm
index f2d77c5..3cbc6ea 100644
--- a/ios/chrome/browser/flags/about_flags.mm
+++ b/ios/chrome/browser/flags/about_flags.mm
@@ -1161,7 +1161,7 @@
 #endif  // BUILDFLAG(IOS_BACKGROUND_MODE_ENABLED)
     {"enable-cbd-sign-out", flag_descriptions::kEnableCBDSignOutName,
      flag_descriptions::kEnableCBDSignOutDescription, flags_ui::kOsIos,
-     FEATURE_VALUE_TYPE(kEnableCBDSignOut)},
+     FEATURE_VALUE_TYPE(switches::kEnableCbdSignOut)},
 };
 
 bool SkipConditionalFeatureEntry(const flags_ui::FeatureEntry& entry) {
diff --git a/ios/chrome/browser/ui/autofill/manual_fill/address_view_controller_egtest.mm b/ios/chrome/browser/ui/autofill/manual_fill/address_view_controller_egtest.mm
index 7dde5c11..6086164 100644
--- a/ios/chrome/browser/ui/autofill/manual_fill/address_view_controller_egtest.mm
+++ b/ios/chrome/browser/ui/autofill/manual_fill/address_view_controller_egtest.mm
@@ -204,7 +204,8 @@
 
 // Tests that the Address View Controller is dismissed when tapping the
 // keyboard icon.
-- (void)testKeyboardIconDismissAddressController {
+// TODO(crbug.com/1352114): Re-enable
+- (void)DISABLED_testKeyboardIconDismissAddressController {
   if ([ChromeEarlGrey isIPadIdiom]) {
     // The keyboard icon is never present in iPads.
     EARL_GREY_TEST_SKIPPED(@"Test is not applicable for iPad");
diff --git a/ios/chrome/browser/ui/download/download_manager_egtest.mm b/ios/chrome/browser/ui/download/download_manager_egtest.mm
index edfb484..9f8c480 100644
--- a/ios/chrome/browser/ui/download/download_manager_egtest.mm
+++ b/ios/chrome/browser/ui/download/download_manager_egtest.mm
@@ -411,7 +411,8 @@
 }
 
 // Tests accessibility on Download Manager UI when download is complete.
-- (void)testAccessibilityOnCompletedDownloadToolbar {
+// TODO(crbug.com/1352113): Re-enable
+- (void)DISABLED_testAccessibilityOnCompletedDownloadToolbar {
   [super testAccessibilityOnCompletedDownloadToolbar];
 }
 
diff --git a/ios/chrome/browser/ui/download/pass_kit_egtest.mm b/ios/chrome/browser/ui/download/pass_kit_egtest.mm
index 0b947f6c..f29d427b 100644
--- a/ios/chrome/browser/ui/download/pass_kit_egtest.mm
+++ b/ios/chrome/browser/ui/download/pass_kit_egtest.mm
@@ -110,7 +110,7 @@
   // presentation.
   XCUIApplication* app = [[XCUIApplication alloc] init];
   XCUIElement* title = nil;
-  title = app.staticTexts[@"Toy Town Membership"];
+  title = app.staticTexts[@"Toy Town"];
   GREYAssert([title waitForExistenceWithTimeout:kWaitForDownloadTimeout],
              @"PassKit dialog UI was not presented");
 }
diff --git a/ios/chrome/browser/ui/first_run/enterprise_loading_screen_egtest.mm b/ios/chrome/browser/ui/first_run/enterprise_loading_screen_egtest.mm
index 44c81d0..5d556fba 100644
--- a/ios/chrome/browser/ui/first_run/enterprise_loading_screen_egtest.mm
+++ b/ios/chrome/browser/ui/first_run/enterprise_loading_screen_egtest.mm
@@ -132,7 +132,8 @@
 
 // Ensures that the loading screen is dismissed when registration succeeds and
 // policy fetch fails.
-- (void)testLoadingScreenDismissedByPolicyFetchError {
+// TODO(crbug.com/1352111): Re-enable
+- (void)DISABLED_testLoadingScreenDismissedByPolicyFetchError {
   _policyTestServer->ConfigureRequestError(
       policy::dm_protocol::kValueRequestPolicy, net::HTTP_METHOD_NOT_ALLOWED);
 
diff --git a/ios/chrome/browser/ui/first_run/trending_queries_field_trial.cc b/ios/chrome/browser/ui/first_run/trending_queries_field_trial.cc
index f0cba9e..767c59f 100644
--- a/ios/chrome/browser/ui/first_run/trending_queries_field_trial.cc
+++ b/ios/chrome/browser/ui/first_run/trending_queries_field_trial.cc
@@ -157,11 +157,6 @@
     feature_list->RegisterFieldTrialOverride(
         kTrendingQueriesModule.name, base::FeatureList::OVERRIDE_ENABLE_FEATURE,
         trial.get());
-    if (!base::FeatureList::IsEnabled(kContentSuggestionsUIModuleRefresh)) {
-      feature_list->RegisterFieldTrialOverride(
-          kContentSuggestionsUIModuleRefresh.name,
-          base::FeatureList::OVERRIDE_ENABLE_FEATURE, trial.get());
-    }
   }
 
   return kCurrentTrialVersion;
diff --git a/ios/chrome/browser/ui/first_run/trending_queries_field_trial_unittest.mm b/ios/chrome/browser/ui/first_run/trending_queries_field_trial_unittest.mm
index 6e7fe05..e1a5a5dd 100644
--- a/ios/chrome/browser/ui/first_run/trending_queries_field_trial_unittest.mm
+++ b/ios/chrome/browser/ui/first_run/trending_queries_field_trial_unittest.mm
@@ -52,8 +52,6 @@
   scoped_feature_list_.InitWithFeatureList(std::move(feature_list));
   ASSERT_TRUE(base::FieldTrialList::IsTrialActive(kTrendingQueriesModule.name));
   EXPECT_FALSE(base::FeatureList::IsEnabled(kTrendingQueriesModule));
-  EXPECT_FALSE(
-      base::FeatureList::IsEnabled(kContentSuggestionsUIModuleRefresh));
 }
 
 // Tests kTrendingQueriesEnabledAllUsersID field trial.
@@ -68,7 +66,6 @@
   scoped_feature_list_.InitWithFeatureList(std::move(feature_list));
   ASSERT_TRUE(base::FieldTrialList::IsTrialActive(kTrendingQueriesModule.name));
   EXPECT_TRUE(base::FeatureList::IsEnabled(kTrendingQueriesModule));
-  EXPECT_TRUE(base::FeatureList::IsEnabled(kContentSuggestionsUIModuleRefresh));
   EXPECT_FALSE(base::GetFieldTrialParamByFeatureAsBool(
       kTrendingQueriesModule, kTrendingQueriesHideShortcutsParam, true));
   EXPECT_FALSE(base::GetFieldTrialParamByFeatureAsBool(
@@ -91,7 +88,6 @@
   scoped_feature_list_.InitWithFeatureList(std::move(feature_list));
   ASSERT_TRUE(base::FieldTrialList::IsTrialActive(kTrendingQueriesModule.name));
   EXPECT_TRUE(base::FeatureList::IsEnabled(kTrendingQueriesModule));
-  EXPECT_TRUE(base::FeatureList::IsEnabled(kContentSuggestionsUIModuleRefresh));
   EXPECT_TRUE(base::GetFieldTrialParamByFeatureAsBool(
       kTrendingQueriesModule, kTrendingQueriesHideShortcutsParam, false));
   EXPECT_FALSE(base::GetFieldTrialParamByFeatureAsBool(
@@ -114,7 +110,6 @@
   scoped_feature_list_.InitWithFeatureList(std::move(feature_list));
   ASSERT_TRUE(base::FieldTrialList::IsTrialActive(kTrendingQueriesModule.name));
   EXPECT_TRUE(base::FeatureList::IsEnabled(kTrendingQueriesModule));
-  EXPECT_TRUE(base::FeatureList::IsEnabled(kContentSuggestionsUIModuleRefresh));
   EXPECT_FALSE(base::GetFieldTrialParamByFeatureAsBool(
       kTrendingQueriesModule, kTrendingQueriesHideShortcutsParam, true));
   EXPECT_TRUE(base::GetFieldTrialParamByFeatureAsBool(
@@ -137,7 +132,6 @@
   scoped_feature_list_.InitWithFeatureList(std::move(feature_list));
   ASSERT_TRUE(base::FieldTrialList::IsTrialActive(kTrendingQueriesModule.name));
   EXPECT_TRUE(base::FeatureList::IsEnabled(kTrendingQueriesModule));
-  EXPECT_TRUE(base::FeatureList::IsEnabled(kContentSuggestionsUIModuleRefresh));
   EXPECT_TRUE(base::GetFieldTrialParamByFeatureAsBool(
       kTrendingQueriesModule, kTrendingQueriesHideShortcutsParam, false));
   EXPECT_FALSE(base::GetFieldTrialParamByFeatureAsBool(
@@ -160,7 +154,6 @@
   scoped_feature_list_.InitWithFeatureList(std::move(feature_list));
   ASSERT_TRUE(base::FieldTrialList::IsTrialActive(kTrendingQueriesModule.name));
   EXPECT_TRUE(base::FeatureList::IsEnabled(kTrendingQueriesModule));
-  EXPECT_TRUE(base::FeatureList::IsEnabled(kContentSuggestionsUIModuleRefresh));
   EXPECT_TRUE(base::GetFieldTrialParamByFeatureAsBool(
       kTrendingQueriesModule, kTrendingQueriesHideShortcutsParam, false));
   EXPECT_FALSE(base::GetFieldTrialParamByFeatureAsBool(
diff --git a/ios/chrome/browser/ui/infobars/translate_infobar_egtest.mm b/ios/chrome/browser/ui/infobars/translate_infobar_egtest.mm
index 0e4b55b..8108347 100644
--- a/ios/chrome/browser/ui/infobars/translate_infobar_egtest.mm
+++ b/ios/chrome/browser/ui/infobars/translate_infobar_egtest.mm
@@ -900,7 +900,8 @@
 
 // Tests that the "Never Translate this site" option dismisses the infobar and
 // updates the prefs accordingly.
-- (void)testInfobarNeverTranslateSite {
+// TODO(crbug.com/1352108): Re-enable
+- (void)DISABLED_testInfobarNeverTranslateSite {
   // Start the HTTP server.
   std::unique_ptr<web::DataResponseProvider> provider(new TestResponseProvider);
   web::test::SetUpHttpServer(std::move(provider));
diff --git a/ios/chrome/browser/ui/settings/clear_browsing_data/BUILD.gn b/ios/chrome/browser/ui/settings/clear_browsing_data/BUILD.gn
index a0132138..3898f0e 100644
--- a/ios/chrome/browser/ui/settings/clear_browsing_data/BUILD.gn
+++ b/ios/chrome/browser/ui/settings/clear_browsing_data/BUILD.gn
@@ -45,7 +45,6 @@
     "//ios/chrome/browser/search_engines",
     "//ios/chrome/browser/signin",
     "//ios/chrome/browser/sync",
-    "//ios/chrome/browser/ui:feature_flags",
     "//ios/chrome/browser/ui/alert_coordinator",
     "//ios/chrome/browser/ui/authentication",
     "//ios/chrome/browser/ui/collection_view",
diff --git a/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_manager.mm b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_manager.mm
index ce6457be..88beb0b 100644
--- a/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_manager.mm
+++ b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_manager.mm
@@ -21,6 +21,7 @@
 #include "components/prefs/pref_service.h"
 #include "components/search_engines/template_url_service.h"
 #include "components/search_engines/template_url_service_observer.h"
+#import "components/signin/public/base/signin_switches.h"
 #include "components/signin/public/identity_manager/identity_manager.h"
 #include "components/strings/grit/components_strings.h"
 #include "components/sync/driver/sync_service.h"
@@ -59,7 +60,6 @@
 #import "ios/chrome/browser/ui/table_view/cells/table_view_text_button_item.h"
 #import "ios/chrome/browser/ui/table_view/cells/table_view_text_item.h"
 #import "ios/chrome/browser/ui/table_view/cells/table_view_text_link_item.h"
-#include "ios/chrome/browser/ui/ui_feature_flags.h"
 #import "ios/chrome/browser/ui/util/uikit_ui_util.h"
 #include "ios/chrome/common/channel_info.h"
 #import "ios/chrome/common/ui/colors/semantic_color_names.h"
@@ -415,7 +415,7 @@
   [model addSectionWithIdentifier:SectionIdentifierSavedSiteData];
   syncer::SyncService* syncService =
       SyncServiceFactory::GetForBrowserState(self.browserState);
-  if (!base::FeatureList::IsEnabled(kEnableCBDSignOut)) {
+  if (!base::FeatureList::IsEnabled(switches::kEnableCbdSignOut)) {
     if (syncService && syncService->IsSyncFeatureActive()) {
       [model setFooter:[self footerClearSyncAndSavedSiteDataItem]
           forSectionWithIdentifier:SectionIdentifierSavedSiteData];
diff --git a/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_table_view_controller.mm b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_table_view_controller.mm
index dbc415b..22aa5e6 100644
--- a/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_table_view_controller.mm
+++ b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_table_view_controller.mm
@@ -11,6 +11,7 @@
 #include "components/browsing_data/core/pref_names.h"
 #include "components/prefs/pref_service.h"
 #import "components/signin/public/base/signin_metrics.h"
+#import "components/signin/public/base/signin_switches.h"
 #include "ios/chrome/browser/browser_state/chrome_browser_state.h"
 #include "ios/chrome/browser/browsing_data/browsing_data_features.h"
 #include "ios/chrome/browser/browsing_data/browsing_data_remove_mask.h"
@@ -35,7 +36,6 @@
 #import "ios/chrome/browser/ui/table_view/cells/table_view_text_link_item.h"
 #import "ios/chrome/browser/ui/table_view/chrome_table_view_styler.h"
 #import "ios/chrome/browser/ui/table_view/table_view_utils.h"
-#import "ios/chrome/browser/ui/ui_feature_flags.h"
 #import "ios/chrome/common/ui/colors/semantic_color_names.h"
 #import "ios/chrome/common/ui/table_view/table_view_cells_constants.h"
 #include "ios/chrome/grit/ios_chromium_strings.h"
@@ -310,7 +310,7 @@
 
 - (void)view:(TableViewLinkHeaderFooterView*)view didTapLinkURL:(CrURL*)url {
   if (url.gurl == GURL(kCBDSignOutOfChromeURL)) {
-    DCHECK(base::FeatureList::IsEnabled(kEnableCBDSignOut));
+    DCHECK(base::FeatureList::IsEnabled(switches::kEnableCbdSignOut));
     // TODO(crbug.com/1341654): Log a user action indicating that the user
     // clicked on the sign out link from the footer. Remove the action
     // indicating that this came from signin > signout.
diff --git a/ios/chrome/browser/ui/settings/password/password_manager_egtest.mm b/ios/chrome/browser/ui/settings/password/password_manager_egtest.mm
index b6d7a5b..269d417 100644
--- a/ios/chrome/browser/ui/settings/password/password_manager_egtest.mm
+++ b/ios/chrome/browser/ui/settings/password/password_manager_egtest.mm
@@ -295,10 +295,9 @@
       grey_userInteractionEnabled(), nil);
 }
 
-// Returns matcher for the "Add Password" button located at the bottom of the
-// screen.
+// Returns matcher for the "Add Password" button.
 id<GREYMatcher> AddPasswordButton() {
-  return grey_accessibilityID(kSettingsToolbarAddButtonId);
+  return grey_accessibilityID(kAddPasswordButtonId);
 }
 
 // Returns matcher for the "Save" button in the "Add Password" view.
@@ -1703,14 +1702,17 @@
 }
 
 // Checks that the "Add" button is not shown on Edit.
-- (void)testNoAddButtonInEditMode {
+- (void)testAddButtonDisabledInEditMode {
   SaveExamplePasswordForm();
   OpenPasswordSettings();
 
   TapEdit();
 
-  // Expect Add Password button to be removed.
   [[EarlGrey selectElementWithMatcher:AddPasswordButton()]
+      performAction:grey_tap()];
+
+  // Verify that the dialog didn't show up after tapping the Add button.
+  [[EarlGrey selectElementWithMatcher:PasswordDetailPassword()]
       assertWithMatcher:grey_nil()];
 }
 
diff --git a/ios/chrome/browser/ui/settings/password/password_manager_view_controller.mm b/ios/chrome/browser/ui/settings/password/password_manager_view_controller.mm
index 4ebd67f..10426d3 100644
--- a/ios/chrome/browser/ui/settings/password/password_manager_view_controller.mm
+++ b/ios/chrome/browser/ui/settings/password/password_manager_view_controller.mm
@@ -108,6 +108,8 @@
   ItemTypeOnDeviceEncryptionSetUp,
   ItemTypeOnDeviceEncryptionOptedInDescription,
   ItemTypeOnDeviceEncryptionOptedInLearnMore,
+  // Section: SectionIdentifierAddPasswordButton
+  ItemTypeAddPasswordButton,
 };
 
 // Return if the feature flag for the favicon is enabled.
@@ -205,6 +207,8 @@
   SettingsCheckItem* _passwordProblemsItem;
   // The button to start password check.
   TableViewTextItem* _checkForProblemsItem;
+  // The button to add a password.
+  TableViewTextItem* _addPasswordItem;
   // The item related to the button for exporting passwords.
   TableViewTextItem* _exportPasswordsItem;
   // The text explaining why the user should opt-in on device encryption.
@@ -407,13 +411,11 @@
                      action:@selector(dismissSearchController:)
            forControlEvents:UIControlEventTouchUpInside];
 
-  // If the settings are managed by enterprise policy and the password manager
-  // is not enabled, there won't be any add functionality.
-  if (!(_browserState->GetPrefs()->IsManagedPreference(
-            password_manager::prefs::kCredentialsEnableService) &&
-        ![_passwordManagerEnabled value])) {
+  if (ShouldShowSettingsUI() && [self allowsAddPassword]) {
     self.shouldShowAddButtonInToolbar = YES;
     self.addButtonInToolbar.enabled = YES;
+  } else {
+    self.shouldShowAddButtonInToolbar = NO;
   }
 
   [self loadModel];
@@ -475,6 +477,7 @@
       [self setExportPasswordsButtonEnabled:YES];
     }
   }
+  [self setAddPasswordButtonEnabled:!editing];
   [self setSearchBarEnabled:self.shouldEnableSearchBar];
   [self updatePasswordCheckButtonWithState:self.passwordCheckState];
   [self updatePasswordCheckStatusLabelWithState:self.passwordCheckState];
@@ -554,6 +557,14 @@
                                           withRowAnimation:
                                               UITableViewRowAnimationNone];
 
+  // Add Password button.
+  if (!ShouldShowSettingsUI() && [self allowsAddPassword]) {
+    [model addSectionWithIdentifier:SectionIdentifierAddPasswordButton];
+    _addPasswordItem = [self addPasswordItem];
+    [model addItem:_addPasswordItem
+        toSectionWithIdentifier:SectionIdentifierAddPasswordButton];
+  }
+
   // Saved passwords.
   if (!_passwords.empty()) {
     [model addSectionWithIdentifier:SectionIdentifierSavedPasswords];
@@ -909,6 +920,16 @@
   return item;
 }
 
+- (TableViewTextItem*)addPasswordItem {
+  TableViewTextItem* addPasswordItem =
+      [[TableViewTextItem alloc] initWithType:ItemTypeAddPasswordButton];
+  addPasswordItem.text = l10n_util::GetNSString(IDS_IOS_ADD_PASSWORD);
+  addPasswordItem.accessibilityIdentifier = kAddPasswordButtonId;
+  addPasswordItem.accessibilityTraits = UIAccessibilityTraitButton;
+  addPasswordItem.textColor = [UIColor colorNamed:kBlueColor];
+  return addPasswordItem;
+}
+
 - (TableViewTextItem*)exportPasswordsItem {
   TableViewTextItem* exportPasswordsItem =
       [[TableViewTextItem alloc] initWithType:ItemTypeExportPasswordsButton];
@@ -1201,6 +1222,9 @@
                         withRowAnimation:UITableViewRowAnimationTop];
         self.onDeviceEncryptionStateInModel = OnDeviceEncryptionStateNotShown;
 
+        [self clearSectionWithIdentifier:SectionIdentifierAddPasswordButton
+                        withRowAnimation:UITableViewRowAnimationTop];
+
         [self clearSectionWithIdentifier:SectionIdentifierPasswordCheck
                         withRowAnimation:UITableViewRowAnimationTop];
 
@@ -1288,6 +1312,27 @@
                                                      inSection:checkSection]];
         [rowsIndexPaths addObject:[NSIndexPath indexPathForRow:1
                                                      inSection:checkSection]];
+        sectionIndex++;
+
+        // Add "Add Password" button.
+        if (!ShouldShowSettingsUI() && [self allowsAddPassword]) {
+          [model insertSectionWithIdentifier:SectionIdentifierAddPasswordButton
+                                     atIndex:sectionIndex];
+          [self.tableView
+                insertSections:[NSIndexSet indexSetWithIndex:sectionIndex]
+              withRowAnimation:UITableViewRowAnimationTop];
+          [model addItem:_addPasswordItem
+              toSectionWithIdentifier:SectionIdentifierAddPasswordButton];
+          [rowsIndexPaths
+              addObject:
+                  [NSIndexPath
+                      indexPathForRow:0
+                            inSection:
+                                [model
+                                    sectionForSectionIdentifier:
+                                        SectionIdentifierAddPasswordButton]]];
+          sectionIndex++;
+        }
 
         [model setHeader:_manageAccountLinkItem
             forSectionWithIdentifier:[self sectionForManageAccountLinkHeader]];
@@ -1632,6 +1677,20 @@
   }
 }
 
+- (void)setAddPasswordButtonEnabled:(BOOL)enabled {
+  if (!_addPasswordItem) {
+    return;
+  }
+  if (enabled) {
+    _addPasswordItem.textColor = [UIColor colorNamed:kBlueColor];
+    _addPasswordItem.accessibilityTraits &= ~UIAccessibilityTraitNotEnabled;
+  } else {
+    _addPasswordItem.textColor = [UIColor colorNamed:kTextSecondaryColor];
+    _addPasswordItem.accessibilityTraits |= UIAccessibilityTraitNotEnabled;
+  }
+  [self reconfigureCellsForItems:@[ _addPasswordItem ]];
+}
+
 - (void)updateExportPasswordsButton {
   if (!_exportPasswordsItem)
     return;
@@ -1855,6 +1914,14 @@
                                percentage);
 }
 
+- (bool)allowsAddPassword {
+  // If the settings are managed by enterprise policy and the password manager
+  // is not enabled, there won't be any add functionality.
+  return !(_browserState->GetPrefs()->IsManagedPreference(
+               password_manager::prefs::kCredentialsEnableService) &&
+           ![_passwordManagerEnabled value]);
+}
+
 #pragma mark - UITableViewDelegate
 
 - (void)tableView:(UITableView*)tableView
@@ -1933,6 +2000,10 @@
       BlockToOpenURL(self, self.dispatcher)(url);
       break;
     }
+    case ItemTypeAddPasswordButton: {
+      [self.handler showAddPasswordSheet];
+      break;
+    }
     case ItemTypeOnDeviceEncryptionOptedInDescription:
     case ItemTypeLastCheckTimestampFooter:
     case ItemTypeOnDeviceEncryptionOptInDescription:
@@ -1970,6 +2041,8 @@
              self.passwordCheckState != PasswordCheckStateDisabled;
     case ItemTypeExportPasswordsButton:
       return _exportReady;
+    case ItemTypeAddPasswordButton:
+      return [self allowsAddPassword];
   }
   return YES;
 }
diff --git a/ios/chrome/browser/ui/settings/password/passwords_table_view_constants.h b/ios/chrome/browser/ui/settings/password/passwords_table_view_constants.h
index 5ada60d..da62b13 100644
--- a/ios/chrome/browser/ui/settings/password/passwords_table_view_constants.h
+++ b/ios/chrome/browser/ui/settings/password/passwords_table_view_constants.h
@@ -36,6 +36,10 @@
 // The accessibility identifier of the password issues table view.
 extern NSString* const kPasswordIssuesTableViewId;
 
+// The accessibility identifier of the large "Add Password..." button when
+// displayed in the table.
+extern NSString* const kAddPasswordButtonId;
+
 // Sections of the password settings
 typedef NS_ENUM(NSInteger, PasswordSectionIdentifier) {
   SectionIdentifierSavePasswordsSwitch = kSectionIdentifierEnumZero,
@@ -45,6 +49,7 @@
   SectionIdentifierExportPasswordsButton,
   SectionIdentifierPasswordCheck,
   SectionIdentifierOnDeviceEncryption,
+  SectionIdentifierAddPasswordButton,
 };
 
 #endif  // IOS_CHROME_BROWSER_UI_SETTINGS_PASSWORD_PASSWORDS_TABLE_VIEW_CONSTANTS_H_
diff --git a/ios/chrome/browser/ui/settings/password/passwords_table_view_constants.mm b/ios/chrome/browser/ui/settings/password/passwords_table_view_constants.mm
index 8b72c3f..b71aa7cf 100644
--- a/ios/chrome/browser/ui/settings/password/passwords_table_view_constants.mm
+++ b/ios/chrome/browser/ui/settings/password/passwords_table_view_constants.mm
@@ -36,4 +36,6 @@
 NSString* const kSettingsPasswordsInOtherAppsCellId =
     @"kSettingsPasswordsInOtherAppsCellId";
 
+NSString* const kAddPasswordButtonId = @"addPasswordItem";
+
 NSString* const kPasswordIssuesTableViewId = @"kPasswordIssuesTableViewId";
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_egtest.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_egtest.mm
index 51379a1..a3831b0f 100644
--- a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_egtest.mm
+++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_egtest.mm
@@ -1733,7 +1733,8 @@
 
 // Tests that the search suggested actions section has the right rows in the
 // recent tabs page.
-- (void)testSearchSuggestedActionsSectionContentInRecentTabs {
+// TODO(crbug.com/1352109): Re-enable.
+- (void)DISABLED_testSearchSuggestedActionsSectionContentInRecentTabs {
   [self loadTestURLsInNewTabs];
   [ChromeEarlGrey showTabSwitcher];
   [[EarlGrey selectElementWithMatcher:TabGridOtherDevicesPanelButton()]
diff --git a/ios/chrome/browser/ui/table_view/chrome_table_view_controller_test.mm b/ios/chrome/browser/ui/table_view/chrome_table_view_controller_test.mm
index 8dfb1ef..7e145d5 100644
--- a/ios/chrome/browser/ui/table_view/chrome_table_view_controller_test.mm
+++ b/ios/chrome/browser/ui/table_view/chrome_table_view_controller_test.mm
@@ -188,7 +188,7 @@
   id switch_item = GetTableViewItem(section, item);
   EXPECT_TRUE([switch_item respondsToSelector:@selector(text)]);
   EXPECT_NSEQ(expected_title, [switch_item text]);
-  EXPECT_TRUE([switch_item respondsToSelector:@selector(isOn)]);
+  ASSERT_TRUE([switch_item respondsToSelector:@selector(isOn)]);
   EXPECT_EQ(expected_state, [switch_item isOn]);
 }
 
diff --git a/ios/chrome/browser/ui/ui_feature_flags.cc b/ios/chrome/browser/ui/ui_feature_flags.cc
index 44ae836..ddbec789 100644
--- a/ios/chrome/browser/ui/ui_feature_flags.cc
+++ b/ios/chrome/browser/ui/ui_feature_flags.cc
@@ -83,9 +83,6 @@
 const base::Feature kEnableExpKitAppleCalendar{
     "EnableExpKitAppleCalendar", base::FEATURE_DISABLED_BY_DEFAULT};
 
-const base::Feature kEnableCBDSignOut{"EnableCbdSignOut",
-                                      base::FEATURE_DISABLED_BY_DEFAULT};
-
 const base::Feature kEnablePhoneNumbers{"EnablePhoneNumbers",
                                         base::FEATURE_DISABLED_BY_DEFAULT};
 
diff --git a/ios/chrome/browser/ui/ui_feature_flags.h b/ios/chrome/browser/ui/ui_feature_flags.h
index 6b4e3aa..c64847b0 100644
--- a/ios/chrome/browser/ui/ui_feature_flags.h
+++ b/ios/chrome/browser/ui/ui_feature_flags.h
@@ -100,9 +100,6 @@
 // Feature flag to enable Apple Calendar event in experience kit.
 extern const base::Feature kEnableExpKitAppleCalendar;
 
-// Feature flag to enable sign-out from Chrome Browsing Data.
-extern const base::Feature kEnableCBDSignOut;
-
 // Feature flag to enable Phone Numbers detection.
 extern const base::Feature kEnablePhoneNumbers;
 
diff --git a/ios/chrome/browser/web/browsing_egtest.mm b/ios/chrome/browser/web/browsing_egtest.mm
index 7a7da63..7b8eec5 100644
--- a/ios/chrome/browser/web/browsing_egtest.mm
+++ b/ios/chrome/browser/web/browsing_egtest.mm
@@ -200,7 +200,8 @@
 
 // Tests tapping a link that navigates to a page that immediately navigates
 // again via document.location.href.
-- (void)testBrowsingWindowDataLinkScriptRedirect {
+// TODO(crbug.com/1352105): Flaky on iPhone.
+- (void)DISABLED_testBrowsingWindowDataLinkScriptRedirect {
   // Create map of canned responses and set up the test HTML server.
   std::map<GURL, std::string> responses;
   const GURL URL =
diff --git a/ios/chrome/browser/web/navigation_egtest.mm b/ios/chrome/browser/web/navigation_egtest.mm
index b1f2c5bf..355dba5 100644
--- a/ios/chrome/browser/web/navigation_egtest.mm
+++ b/ios/chrome/browser/web/navigation_egtest.mm
@@ -126,19 +126,6 @@
   return std::move(http_response);
 }
 
-CGVector FixCoordinateOffset(CGVector offset) {
-#if TARGET_IPHONE_SIMULATOR
-  // TODO(crbug.com/1342819): For some unknown reason, the XCUICoordinate
-  // space is scaled by the simulator's scale factor when computing offsets
-  // relative to the app or screen.
-  if (@available(iOS 16, *)) {
-    CGFloat scale = UIScreen.mainScreen.scale;
-    return CGVectorMake(offset.dx * scale, offset.dy * scale);
-  }
-#endif
-  return offset;
-}
-
 }  // namespace
 
 // Integration tests for navigating history via JavaScript and the forward and
@@ -637,10 +624,9 @@
   // of zero.
   CGFloat leftEdge = 0;
   XCUICoordinate* leftEdgeCoord =
-      [app coordinateWithNormalizedOffset:FixCoordinateOffset(
-                                              CGVectorMake(leftEdge, 0.5))];
-  XCUICoordinate* swipeRight = [leftEdgeCoord
-      coordinateWithOffset:FixCoordinateOffset(CGVectorMake(600, 0.5))];
+      [app coordinateWithNormalizedOffset:CGVectorMake(leftEdge, 0.5)];
+  XCUICoordinate* swipeRight =
+      [leftEdgeCoord coordinateWithOffset:CGVectorMake(600, 0.5)];
 
   // Swipe back twice.
   [leftEdgeCoord pressForDuration:0.1f thenDragToCoordinate:swipeRight];
@@ -658,10 +644,9 @@
   CGFloat rightEdgeNTP = 0.99;
   CGFloat rightEdge = 1;
   XCUICoordinate* rightEdgeCoordFromNTP =
-      [app coordinateWithNormalizedOffset:FixCoordinateOffset(
-                                              CGVectorMake(rightEdgeNTP, 0.5))];
-  XCUICoordinate* swipeLeftFromNTP = [rightEdgeCoordFromNTP
-      coordinateWithOffset:FixCoordinateOffset(CGVectorMake(-600, 0.5))];
+      [app coordinateWithNormalizedOffset:CGVectorMake(rightEdgeNTP, 0.5)];
+  XCUICoordinate* swipeLeftFromNTP =
+      [rightEdgeCoordFromNTP coordinateWithOffset:CGVectorMake(-600, 0.5)];
 
   // Swiping forward twice and verify each page.
   [rightEdgeCoordFromNTP pressForDuration:0.1f
@@ -670,10 +655,9 @@
   [ChromeEarlGrey waitForWebStateContainingText:"pony"];
 
   XCUICoordinate* rightEdgeCoord =
-      [app coordinateWithNormalizedOffset:FixCoordinateOffset(
-                                              CGVectorMake(rightEdge, 0.5))];
-  XCUICoordinate* swipeLeft = [rightEdgeCoord
-      coordinateWithOffset:FixCoordinateOffset(CGVectorMake(-600, 0.5))];
+      [app coordinateWithNormalizedOffset:CGVectorMake(rightEdge, 0.5)];
+  XCUICoordinate* swipeLeft =
+      [rightEdgeCoord coordinateWithOffset:CGVectorMake(-600, 0.5)];
   [rightEdgeCoord pressForDuration:0.1f thenDragToCoordinate:swipeLeft];
   GREYWaitForAppToIdle(@"App failed to idle");
   [ChromeEarlGrey waitForWebStateContainingText:"onload"];
diff --git a/ios/chrome/test/earl_grey/chrome_xcui_actions.mm b/ios/chrome/test/earl_grey/chrome_xcui_actions.mm
index b037afe..62f191f 100644
--- a/ios/chrome/test/earl_grey/chrome_xcui_actions.mm
+++ b/ios/chrome/test/earl_grey/chrome_xcui_actions.mm
@@ -17,19 +17,6 @@
 // The splitter is 10 points wide.
 const CGFloat kSplitterWidth = 10.0;
 
-CGVector FixCoordinateOffset(CGVector offset) {
-#if TARGET_IPHONE_SIMULATOR
-  // TODO(crbug.com/1342819): For some unknown reason, the XCUICoordinate
-  // space is scaled by the simulator's scale factor when computing offsets
-  // relative to the app or screen.
-  if (@available(iOS 16, *)) {
-    CGFloat scale = UIScreen.mainScreen.scale;
-    return CGVectorMake(offset.dx * scale, offset.dy * scale);
-  }
-#endif
-  return offset;
-}
-
 // Returns a normalized vector for the given edge.
 CGVector GetNormalizedEdgeVector(GREYContentEdge edge) {
   switch (edge) {
@@ -114,8 +101,8 @@
       app, accessibility_identifier, window_number, XCUIElementTypeCell);
 
   // |app| is still an element, so it can just be passed in directly here.
-  return LongPressAndDragBetweenElements(
-      drag_element, app, FixCoordinateOffset(GetNormalizedEdgeVector(edge)));
+  return LongPressAndDragBetweenElements(drag_element, app,
+                                         GetNormalizedEdgeVector(edge));
 }
 
 BOOL LongPressCellAndDragToOffsetOf(NSString* src_accessibility_identifier,
diff --git a/media/capture/video/chromeos/request_manager.cc b/media/capture/video/chromeos/request_manager.cc
index 8afdb6e0..9f15aa28 100644
--- a/media/capture/video/chromeos/request_manager.cc
+++ b/media/capture/video/chromeos/request_manager.cc
@@ -594,10 +594,20 @@
     cros::mojom::Camera3CaptureResultPtr result) {
   DCHECK(ipc_task_runner_->BelongsToCurrentThread());
 
+  uint32_t frame_number = result->frame_number;
   if (!capturing_) {
+    if (result->output_buffers) {
+      for (auto& stream_buffer : result->output_buffers.value()) {
+        TRACE_EVENT_END("camera",
+                        GetTraceTrack(CameraTraceEvent::kCaptureStream,
+                                      frame_number, stream_buffer->stream_id));
+      }
+    }
+    TRACE_EVENT("camera", "Capture Result", "frame_number", frame_number);
+    TRACE_EVENT_END("camera", GetTraceTrack(CameraTraceEvent::kCaptureRequest,
+                                            frame_number));
     return;
   }
-  uint32_t frame_number = result->frame_number;
   // A new partial result may be created in either ProcessCaptureResult or
   // Notify.
   CaptureResult& pending_result = pending_results_[frame_number];
diff --git a/media/capture/video/fake_video_capture_device.cc b/media/capture/video/fake_video_capture_device.cc
index 8efb9a8b..2f9a435 100644
--- a/media/capture/video/fake_video_capture_device.cc
+++ b/media/capture/video/fake_video_capture_device.cc
@@ -540,9 +540,9 @@
     std::unique_ptr<FakePhotoDevice> photo_device,
     std::unique_ptr<FakeDeviceState> device_state)
     : supported_formats_(supported_formats),
-      frame_deliverer_factory_(std::move(frame_deliverer_factory)),
+      device_state_(std::move(device_state)),
       photo_device_(std::move(photo_device)),
-      device_state_(std::move(device_state)) {}
+      frame_deliverer_factory_(std::move(frame_deliverer_factory)) {}
 
 FakeVideoCaptureDevice::~FakeVideoCaptureDevice() {
   DCHECK(thread_checker_.CalledOnValidThread());
diff --git a/media/capture/video/fake_video_capture_device.h b/media/capture/video/fake_video_capture_device.h
index 35e7b0b..b9fb62b 100644
--- a/media/capture/video/fake_video_capture_device.h
+++ b/media/capture/video/fake_video_capture_device.h
@@ -49,8 +49,7 @@
                   int bytes_per_row);
 
   const Format pixel_format_;
-  raw_ptr<const FakeDeviceState, DanglingUntriaged> fake_device_state_ =
-      nullptr;
+  raw_ptr<const FakeDeviceState> fake_device_state_ = nullptr;
 };
 
 // Implementation of VideoCaptureDevice that generates test frames. This is
@@ -94,9 +93,11 @@
   void OnNextFrameDue(base::TimeTicks expected_execution_time, int session_id);
 
   const VideoCaptureFormats supported_formats_;
-  const std::unique_ptr<FrameDelivererFactory> frame_deliverer_factory_;
-  const std::unique_ptr<FakePhotoDevice> photo_device_;
+  // `photo_device_` and `frame_deliverer_factory_` both hold a raw pointer on
+  // `device_state_`, so they need to be declared last to be destroyed first.
   const std::unique_ptr<FakeDeviceState> device_state_;
+  const std::unique_ptr<FakePhotoDevice> photo_device_;
+  const std::unique_ptr<FrameDelivererFactory> frame_deliverer_factory_;
   std::unique_ptr<FrameDeliverer> frame_deliverer_;
   int current_session_id_ = 0;
 
@@ -160,7 +161,7 @@
 
  private:
   const FakeVideoCaptureDevice::DeliveryMode delivery_mode_;
-  raw_ptr<const FakeDeviceState, DanglingUntriaged> device_state_ = nullptr;
+  raw_ptr<const FakeDeviceState> device_state_ = nullptr;
   std::unique_ptr<gpu::GpuMemoryBufferSupport> gmb_support_;
 };
 
@@ -188,7 +189,7 @@
 
  private:
   const std::unique_ptr<PacmanFramePainter> sk_n32_painter_;
-  const raw_ptr<const FakeDeviceState, DanglingUntriaged> fake_device_state_;
+  const raw_ptr<const FakeDeviceState> fake_device_state_;
   const FakePhotoDeviceConfig config_;
 };
 
diff --git a/media/formats/hls/media_playlist.cc b/media/formats/hls/media_playlist.cc
index b493b116..61a4466 100644
--- a/media/formats/hls/media_playlist.cc
+++ b/media/formats/hls/media_playlist.cc
@@ -8,6 +8,7 @@
 #include <utility>
 #include <vector>
 
+#include "base/memory/scoped_refptr.h"
 #include "base/numerics/clamped_math.h"
 #include "base/strings/string_piece.h"
 #include "base/time/time.h"
@@ -31,7 +32,7 @@
   bool independent_segments;
   base::TimeDelta target_duration;
   absl::optional<PartialSegmentInfo> partial_segment_info;
-  std::vector<MediaSegment> segments;
+  std::vector<scoped_refptr<MediaSegment>> segments;
   base::TimeDelta total_duration;
   absl::optional<PlaylistType> playlist_type;
   bool end_list;
@@ -84,7 +85,7 @@
   absl::optional<XServerControlTag> server_control_tag;
   absl::optional<XMediaSequenceTag> media_sequence_tag;
   absl::optional<XDiscontinuitySequenceTag> discontinuity_sequence_tag;
-  std::vector<MediaSegment> segments;
+  std::vector<scoped_refptr<MediaSegment>> segments;
   scoped_refptr<MediaSegment::InitializationSegment> initialization_segment;
 
   types::DecimalInteger discontinuity_sequence_number = 0;
@@ -356,12 +357,12 @@
         offset = range.offset.value();
       } else if (segments.empty()) {
         return ParseStatusCode::kByteRangeRequiresOffset;
-      } else if (!segments.back().GetByteRange().has_value()) {
+      } else if (!segments.back()->GetByteRange().has_value()) {
         return ParseStatusCode::kByteRangeRequiresOffset;
-      } else if (segments.back().GetUri() != segment_uri) {
+      } else if (segments.back()->GetUri() != segment_uri) {
         return ParseStatusCode::kByteRangeRequiresOffset;
       } else {
-        offset = segments.back().GetByteRange()->GetEnd();
+        offset = segments.back()->GetByteRange()->GetEnd();
       }
 
       byterange = types::ByteRange::Validate(range.length, offset);
@@ -383,10 +384,10 @@
       bitrate = base::ClampMul(bitrate_tag->bitrate, 1000u);
     }
 
-    segments.emplace_back(inf_tag->duration, media_sequence_number,
-                          discontinuity_sequence_number, std::move(segment_uri),
-                          initialization_segment, byterange, bitrate,
-                          discontinuity_tag.has_value(), gap_tag.has_value());
+    segments.push_back(base::MakeRefCounted<MediaSegment>(
+        inf_tag->duration, media_sequence_number, discontinuity_sequence_number,
+        std::move(segment_uri), initialization_segment, byterange, bitrate,
+        discontinuity_tag.has_value(), gap_tag.has_value()));
 
     // Reset per-segment tags
     inf_tag.reset();
@@ -469,7 +470,7 @@
     // duration after rounding to the nearest integer.
     // https://datatracker.ietf.org/doc/html/draft-pantos-hls-rfc8216bis#section-4.4.3.1
     const auto rounded_duration =
-        std::round(segment.GetDuration().InSecondsF());
+        std::round(segment->GetDuration().InSecondsF());
 
     // Compare the rounded segment duration to the target duration (as an
     // integer). Target duration should always be an integer of seconds, so to
@@ -479,7 +480,7 @@
       return ParseStatusCode::kMediaSegmentExceedsTargetDuration;
     }
 
-    total_duration += segment.GetDuration();
+    total_duration += segment->GetDuration();
   }
 
   if (total_duration.is_max()) {
diff --git a/media/formats/hls/media_playlist.h b/media/formats/hls/media_playlist.h
index 06f86351..deb2dcc2 100644
--- a/media/formats/hls/media_playlist.h
+++ b/media/formats/hls/media_playlist.h
@@ -7,6 +7,7 @@
 
 #include <vector>
 
+#include "base/memory/scoped_refptr.h"
 #include "base/time/time.h"
 #include "media/base/media_export.h"
 #include "media/formats/hls/parse_status.h"
@@ -45,7 +46,9 @@
 
   // Returns all segments in this playlist, in chronological order. This vector
   // may be copied independently of this Playlist.
-  const std::vector<MediaSegment>& GetSegments() const { return segments_; }
+  const std::vector<scoped_refptr<MediaSegment>>& GetSegments() const {
+    return segments_;
+  }
 
   // Returns the target duration (maximum length of any segment, rounded to the
   // nearest integer) for this playlist.
@@ -140,7 +143,7 @@
 
   base::TimeDelta target_duration_;
   absl::optional<PartialSegmentInfo> partial_segment_info_;
-  std::vector<MediaSegment> segments_;
+  std::vector<scoped_refptr<MediaSegment>> segments_;
   base::TimeDelta computed_duration_;
   absl::optional<PlaylistType> playlist_type_;
   bool end_list_;
diff --git a/media/formats/hls/media_playlist_test_builder.cc b/media/formats/hls/media_playlist_test_builder.cc
index 2290d73e..febc854 100644
--- a/media/formats/hls/media_playlist_test_builder.cc
+++ b/media/formats/hls/media_playlist_test_builder.cc
@@ -51,7 +51,7 @@
     const auto& segment = playlist.GetSegments().at(i);
     const auto& expectations = segment_expectations_.at(i);
     for (const auto& expectation : expectations.expectations) {
-      expectation.Run(segment);
+      expectation.Run(*segment);
     }
   }
 }
diff --git a/media/formats/hls/media_segment.cc b/media/formats/hls/media_segment.cc
index cb0418dc..447a4d88f 100644
--- a/media/formats/hls/media_segment.cc
+++ b/media/formats/hls/media_segment.cc
@@ -39,12 +39,4 @@
 
 MediaSegment::~MediaSegment() = default;
 
-MediaSegment::MediaSegment(const MediaSegment&) = default;
-
-MediaSegment::MediaSegment(MediaSegment&&) = default;
-
-MediaSegment& MediaSegment::operator=(const MediaSegment&) = default;
-
-MediaSegment& MediaSegment::operator=(MediaSegment&&) = default;
-
 }  // namespace media::hls
diff --git a/media/formats/hls/media_segment.h b/media/formats/hls/media_segment.h
index f3b3723..dce5476 100644
--- a/media/formats/hls/media_segment.h
+++ b/media/formats/hls/media_segment.h
@@ -14,12 +14,10 @@
 
 namespace media::hls {
 
-class MEDIA_EXPORT MediaSegment {
+class MEDIA_EXPORT MediaSegment : public base::RefCounted<MediaSegment> {
  public:
   class MEDIA_EXPORT InitializationSegment
       : public base::RefCounted<InitializationSegment> {
-    friend class base::RefCounted<InitializationSegment>;
-
    public:
     InitializationSegment(GURL uri, absl::optional<types::ByteRange>);
     InitializationSegment(const InitializationSegment& copy) = delete;
@@ -39,6 +37,7 @@
     }
 
    private:
+    friend class base::RefCounted<InitializationSegment>;
     ~InitializationSegment();
 
     GURL uri_;
@@ -54,11 +53,10 @@
                absl::optional<types::DecimalInteger> bitrate,
                bool has_discontinuity,
                bool is_gap);
-  ~MediaSegment();
-  MediaSegment(const MediaSegment&);
-  MediaSegment(MediaSegment&&);
-  MediaSegment& operator=(const MediaSegment&);
-  MediaSegment& operator=(MediaSegment&&);
+  MediaSegment(const MediaSegment&) = delete;
+  MediaSegment(MediaSegment&&) = delete;
+  MediaSegment& operator=(const MediaSegment&) = delete;
+  MediaSegment& operator=(MediaSegment&&) = delete;
 
   // The approximate duration of this media segment.
   base::TimeDelta GetDuration() const { return duration_; }
@@ -102,6 +100,9 @@
   absl::optional<types::DecimalInteger> GetBitRate() const { return bitrate_; }
 
  private:
+  friend class base::RefCounted<MediaSegment>;
+  ~MediaSegment();
+
   base::TimeDelta duration_;
   types::DecimalInteger media_sequence_number_;
   types::DecimalInteger discontinuity_sequence_number_;
diff --git a/net/base/backoff_entry_serializer.cc b/net/base/backoff_entry_serializer.cc
index dd31a2a..2a65462e 100644
--- a/net/base/backoff_entry_serializer.cc
+++ b/net/base/backoff_entry_serializer.cc
@@ -71,27 +71,23 @@
   return base::Value(std::move(serialized));
 }
 
-std::unique_ptr<BackoffEntry> BackoffEntrySerializer::DeserializeFromValue(
-    const base::Value& serialized,
+std::unique_ptr<BackoffEntry> BackoffEntrySerializer::DeserializeFromList(
+    const base::Value::List& serialized,
     const BackoffEntry::Policy* policy,
     const base::TickClock* tick_clock,
     base::Time time_now) {
-  if (!serialized.is_list())
-    return nullptr;
-  const base::Value::List& list = serialized.GetList();
-
-  if (list.size() != 4)
+  if (serialized.size() != 4)
     return nullptr;
 
-  if (!list[0].is_int())
+  if (!serialized[0].is_int())
     return nullptr;
-  int version_number = list[0].GetInt();
+  int version_number = serialized[0].GetInt();
   if (version_number != kVersion1 && version_number != kVersion2)
     return nullptr;
 
-  if (!list[1].is_int())
+  if (!serialized[1].is_int())
     return nullptr;
-  int failure_count = list[1].GetInt();
+  int failure_count = serialized[1].GetInt();
   if (failure_count < 0) {
     return nullptr;
   }
@@ -100,17 +96,17 @@
   base::TimeDelta original_backoff_duration;
   switch (version_number) {
     case kVersion1: {
-      if (!list[2].is_double())
+      if (!serialized[2].is_double())
         return nullptr;
-      double original_backoff_duration_double = list[2].GetDouble();
+      double original_backoff_duration_double = serialized[2].GetDouble();
       original_backoff_duration =
           base::Seconds(original_backoff_duration_double);
       break;
     }
     case kVersion2: {
-      if (!list[2].is_string())
+      if (!serialized[2].is_string())
         return nullptr;
-      std::string original_backoff_duration_string = list[2].GetString();
+      std::string original_backoff_duration_string = serialized[2].GetString();
       int64_t original_backoff_duration_us;
       if (!base::StringToInt64(original_backoff_duration_string,
                                &original_backoff_duration_us)) {
@@ -124,9 +120,9 @@
       NOTREACHED() << "Unexpected version_number: " << version_number;
   }
 
-  if (!list[3].is_string())
+  if (!serialized[3].is_string())
     return nullptr;
-  std::string absolute_release_time_string = list[3].GetString();
+  std::string absolute_release_time_string = serialized[3].GetString();
 
   int64_t absolute_release_time_us;
   if (!base::StringToInt64(absolute_release_time_string,
@@ -175,4 +171,15 @@
   return entry;
 }
 
+std::unique_ptr<BackoffEntry> BackoffEntrySerializer::DeserializeFromValue(
+    const base::Value& serialized,
+    const BackoffEntry::Policy* policy,
+    const base::TickClock* tick_clock,
+    base::Time time_now) {
+  if (!serialized.is_list())
+    return nullptr;
+  return DeserializeFromList(serialized.GetList(), policy, tick_clock,
+                             time_now);
+}
+
 }  // namespace net
diff --git a/net/base/backoff_entry_serializer.h b/net/base/backoff_entry_serializer.h
index 42c47b7..6a35545 100644
--- a/net/base/backoff_entry_serializer.h
+++ b/net/base/backoff_entry_serializer.h
@@ -8,11 +8,11 @@
 #include <memory>
 
 #include "base/time/time.h"
+#include "base/values.h"
 #include "net/base/backoff_entry.h"
 #include "net/base/net_export.h"
 
 namespace base {
-class Value;
 class TickClock;
 }
 
@@ -35,7 +35,7 @@
   // later be passed to Deserialize to re-create the given BackoffEntry. It
   // always serializes using the latest format version. The Policy is not
   // serialized, instead callers must pass an identical Policy* when
-  // deserializing. |time_now| should be base::Time::Now(), except for tests
+  // deserializing. `time_now` should be `base::Time::Now()`, except for tests
   // that want to simulate time changes. The release time TimeTicks will be
   // converted to an absolute timestamp, thus the time will continue counting
   // down even whilst the device is powered off, and will be partially
@@ -43,14 +43,24 @@
   static base::Value SerializeToValue(const BackoffEntry& entry,
                                       base::Time time_now);
 
-  // Deserializes a Value back to a BackoffEntry. It supports all
-  // serialization format versions. |policy| MUST be the same Policy as the
-  // serialized entry had. |clock| may be NULL. Both |policy| and |clock| (if
-  // not NULL) must enclose lifetime of the returned BackoffEntry. |time_now|
-  // should be base::Time::Now(), except for tests that want to simulate time
+  // Deserializes a `list` back to a BackoffEntry. It supports all
+  // serialization format versions. `policy` MUST be the same Policy as the
+  // serialized entry had. `clock` may be NULL. Both `policy` and `clock` (if
+  // not NULL) must enclose lifetime of the returned BackoffEntry. `time_now`
+  // should be `base::Time::Now()`, except for tests that want to simulate time
   // changes. The absolute timestamp that was serialized will be converted back
   // to TimeTicks as best as possible. Returns NULL if deserialization was
   // unsuccessful.
+  static std::unique_ptr<BackoffEntry> DeserializeFromList(
+      const base::Value::List& serialized,
+      const BackoffEntry::Policy* policy,
+      const base::TickClock* clock,
+      base::Time time_now);
+
+  // Same as `DeserializeFromList` if `serialized` is a list.
+  // Returns `nullptr` otherwise.
+  // TODO(https://crbug.com/1352136) migrated call sites to
+  // DeserializeFromList and remove DeserializeFromValue.
   static std::unique_ptr<BackoffEntry> DeserializeFromValue(
       const base::Value& serialized,
       const BackoffEntry::Policy* policy,
diff --git a/net/http/transport_security_state_static.pins b/net/http/transport_security_state_static.pins
index 0145ee7..aa1cb9bf 100644
--- a/net/http/transport_security_state_static.pins
+++ b/net/http/transport_security_state_static.pins
@@ -43,9 +43,9 @@
 #   hash function for preloaded entries again (we have already done so once).
 #
 
-# Last updated: 2022-08-02 12:58 UTC
+# Last updated: 2022-08-11 12:54 UTC
 PinsListTimestamp
-1659445093
+1660222449
 
 TestSPKI
 sha256/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
diff --git a/remoting/codec/webrtc_video_encoder_vpx.cc b/remoting/codec/webrtc_video_encoder_vpx.cc
index bf1328f..f6acfa2 100644
--- a/remoting/codec/webrtc_video_encoder_vpx.cc
+++ b/remoting/codec/webrtc_video_encoder_vpx.cc
@@ -263,27 +263,26 @@
 
   UpdateConfig(params);
 
-  vpx_active_map_t act_map;
-  act_map.rows = active_map_.height();
-  act_map.cols = active_map_.width();
-  act_map.active_map = active_map_.data();
-
   webrtc::DesktopRegion updated_region;
   // Convert the updated capture data ready for encode.
   PrepareImage(frame.get(), &updated_region);
 
-  // Update active map based on updated region.
-  if (params.clear_active_map)
-    active_map_.Clear();
+  vpx_active_map_t act_map;
+  if (use_active_map_) {
+    if (params.clear_active_map)
+      active_map_.Clear();
 
-  if (params.key_frame)
-    updated_region.SetRect(webrtc::DesktopRect::MakeSize(frame_size));
+    if (params.key_frame)
+      updated_region.SetRect(webrtc::DesktopRect::MakeSize(frame_size));
 
-  active_map_.Update(updated_region);
+    active_map_.Update(updated_region);
 
-  // Apply active map to the encoder.
-  if (vpx_codec_control(codec_.get(), VP8E_SET_ACTIVEMAP, &act_map)) {
-    LOG(ERROR) << "Unable to apply active map";
+    act_map.rows = active_map_.height();
+    act_map.cols = active_map_.width();
+    act_map.active_map = active_map_.data();
+    if (vpx_codec_control(codec_.get(), VP8E_SET_ACTIVEMAP, &act_map)) {
+      LOG(ERROR) << "Unable to apply active map";
+    }
   }
 
   vpx_codec_err_t ret = vpx_codec_encode(
@@ -299,12 +298,14 @@
     return;
   }
 
-  // VP8 doesn't return an active map so we assume it hasn't changed.
-  if (use_vp9_ && !lossless_encode_) {
-    ret = vpx_codec_control(codec_.get(), VP9E_GET_ACTIVEMAP, &act_map);
-    DCHECK_EQ(ret, VPX_CODEC_OK)
-        << "Failed to fetch active map: " << vpx_codec_err_to_string(ret)
-        << "\n";
+  if (use_active_map_) {
+    // VP8 doesn't return an active map so we assume it hasn't changed.
+    if (use_vp9_ && !lossless_encode_) {
+      ret = vpx_codec_control(codec_.get(), VP9E_GET_ACTIVEMAP, &act_map);
+      DCHECK_EQ(ret, VPX_CODEC_OK)
+          << "Failed to fetch active map: " << vpx_codec_err_to_string(ret)
+          << "\n";
+    }
   }
 
   // Read the encoded data.
@@ -382,8 +383,9 @@
     codec_.reset();
   }
 
-  // Initialize active map.
-  active_map_.Initialize(size);
+  if (use_active_map_) {
+    active_map_.Initialize(size);
+  }
 
   // Fetch a default configuration for the desired codec.
   const vpx_codec_iface_t* interface =
diff --git a/remoting/codec/webrtc_video_encoder_vpx.h b/remoting/codec/webrtc_video_encoder_vpx.h
index 859045c..d0f3f595 100644
--- a/remoting/codec/webrtc_video_encoder_vpx.h
+++ b/remoting/codec/webrtc_video_encoder_vpx.h
@@ -102,6 +102,8 @@
 
   // Active map used to optimize out processing of unchanged macroblocks.
   VideoEncoderActiveMap active_map_;
+  // TODO(joedow): Remove this flag after we're done with performance tuning.
+  const bool use_active_map_ = true;
 
   raw_ptr<const base::TickClock> clock_;
 
diff --git a/services/audio/public/cpp/input_ipc.cc b/services/audio/public/cpp/input_ipc.cc
index 8262c0e..946b0ac1 100644
--- a/services/audio/public/cpp/input_ipc.cc
+++ b/services/audio/public/cpp/input_ipc.cc
@@ -55,7 +55,6 @@
   if (log_)
     log = log_.Unbind();
 
-  // TODO(crbug.com/1284652): Pass a real |processing_config|.
   stream_factory_->CreateInputStream(
       stream_.BindNewPipeAndPassReceiver(), std::move(client), {},
       std::move(log), device_id_, params, total_segments,
diff --git a/services/network/cors/preflight_controller.cc b/services/network/cors/preflight_controller.cc
index d551fec9..2d680ac 100644
--- a/services/network/cors/preflight_controller.cc
+++ b/services/network/cors/preflight_controller.cc
@@ -25,6 +25,7 @@
 #include "services/network/public/cpp/cors/cors.h"
 #include "services/network/public/cpp/cors/cors_error_status.h"
 #include "services/network/public/cpp/devtools_observer_util.h"
+#include "services/network/public/cpp/features.h"
 #include "services/network/public/cpp/is_potentially_trustworthy.h"
 #include "services/network/public/cpp/resource_request.h"
 #include "services/network/public/cpp/simple_url_loader.h"
@@ -438,7 +439,9 @@
     // respond, and that should not fail the overall request. Instead, we should
     // wait a short while then move on. See also https://crbug.com/1299382.
     if (private_network_access_behavior_ ==
-        PrivateNetworkAccessPreflightBehavior::kWarnWithTimeout) {
+            PrivateNetworkAccessPreflightBehavior::kWarnWithTimeout &&
+        base::FeatureList::IsEnabled(
+            features::kPrivateNetworkAccessPreflightShortTimeout)) {
       loader_->SetTimeoutDuration(base::Milliseconds(200));
     }
   }
diff --git a/services/network/cors/preflight_controller_unittest.cc b/services/network/cors/preflight_controller_unittest.cc
index a8d77d3..e091450 100644
--- a/services/network/cors/preflight_controller_unittest.cc
+++ b/services/network/cors/preflight_controller_unittest.cc
@@ -9,6 +9,7 @@
 
 #include "base/bind.h"
 #include "base/run_loop.h"
+#include "base/test/scoped_feature_list.h"
 #include "base/test/task_environment.h"
 #include "mojo/public/cpp/bindings/remote.h"
 #include "net/base/load_flags.h"
@@ -25,6 +26,7 @@
 #include "services/network/cors/cors_url_loader_factory.h"
 #include "services/network/network_service.h"
 #include "services/network/public/cpp/cors/cors.h"
+#include "services/network/public/cpp/features.h"
 #include "services/network/public/mojom/devtools_observer.mojom.h"
 #include "services/network/public/mojom/http_raw_headers.mojom.h"
 #include "services/network/public/mojom/network_context.mojom.h"
@@ -856,6 +858,52 @@
   EXPECT_EQ(net::OK, net_error());
 }
 
+class PreflightControllerNoPNAPreflightShortTimeoutTest
+    : public PreflightControllerTest {
+ public:
+  PreflightControllerNoPNAPreflightShortTimeoutTest() {
+    feature_list_.InitAndDisableFeature(
+        features::kPrivateNetworkAccessPreflightShortTimeout);
+  }
+
+ private:
+  base::test::ScopedFeatureList feature_list_;
+};
+
+TEST_F(PreflightControllerNoPNAPreflightShortTimeoutTest,
+       CheckPrivateNetworkAccessRequestTimeoutBehaviorWarnWithTimeout) {
+  net::EmbeddedTestServer delayed_server;
+  delayed_server.RegisterRequestHandler(
+      base::BindRepeating(&AllowPrivateNetworkAccess));
+  ASSERT_TRUE(delayed_server.Start());
+  ResourceRequest request;
+  request.method = std::string("GET");
+  GURL url = delayed_server.GetURL("/");
+  request.url = url;
+  request.request_initiator = url::Origin::Create(url);
+  request.mode = mojom::RequestMode::kCors;
+  request.credentials_mode = mojom::CredentialsMode::kOmit;
+  request.target_ip_address_space = network::mojom::IPAddressSpace::kLocal;
+
+  mojom::ClientSecurityStatePtr client_security_state =
+      ClientSecurityStateBuilder()
+          .WithPrivateNetworkRequestPolicy(
+              mojom::PrivateNetworkRequestPolicy::kPreflightWarn)
+          .Build();
+
+  // Set the client security state in the request's trusted params, because the
+  // test uses a shared factory with no client security state in its factory
+  // params, and URLLoader expects requests with a target IP address space to
+  // carry a client security state.
+  request.trusted_params = ResourceRequest::TrustedParams();
+  request.trusted_params->client_security_state = client_security_state.Clone();
+
+  PerformPreflightCheck(request, /*tainted=*/false, net::IsolationInfo(),
+                        PrivateNetworkAccessPreflightBehavior::kWarnWithTimeout,
+                        /*client_security_state=*/nullptr);
+  EXPECT_EQ(net::OK, net_error());
+}
+
 TEST_F(PreflightControllerTest, DevToolsEvents) {
   ResourceRequest request;
   request.mode = mojom::RequestMode::kCors;
diff --git a/services/network/public/cpp/features.cc b/services/network/public/cpp/features.cc
index 1d96b39c..4095088 100644
--- a/services/network/public/cpp/features.cc
+++ b/services/network/public/cpp/features.cc
@@ -282,5 +282,11 @@
 const base::Feature kDisableResourceScheduler{
     "DisableResourceScheduler", base::FEATURE_DISABLED_BY_DEFAULT};
 
+// Reduce PNA preflight response waiting time to 200ms.
+// See: https://wicg.github.io/private-network-access/#cors-preflight
+const base::Feature kPrivateNetworkAccessPreflightShortTimeout = {
+    "PrivateNetworkAccessPreflightReduceTimeout",
+    base::FEATURE_ENABLED_BY_DEFAULT};
+
 }  // namespace features
 }  // namespace network
diff --git a/services/network/public/cpp/features.h b/services/network/public/cpp/features.h
index 7436a24..b8e049d 100644
--- a/services/network/public/cpp/features.h
+++ b/services/network/public/cpp/features.h
@@ -117,6 +117,9 @@
 COMPONENT_EXPORT(NETWORK_CPP)
 extern const base::Feature kDisableResourceScheduler;
 
+COMPONENT_EXPORT(NETWORK_CPP)
+extern const base::Feature kPrivateNetworkAccessPreflightShortTimeout;
+
 }  // namespace features
 }  // namespace network
 
diff --git a/services/tracing/public/cpp/perfetto/trace_event_data_source_unittest.cc b/services/tracing/public/cpp/perfetto/trace_event_data_source_unittest.cc
index b5b5fc8..279e648b 100644
--- a/services/tracing/public/cpp/perfetto/trace_event_data_source_unittest.cc
+++ b/services/tracing/public/cpp/perfetto/trace_event_data_source_unittest.cc
@@ -2601,6 +2601,22 @@
 #endif  // !BUILDFLAG(USE_PERFETTO_CLIENT_LIBRARY)
 }
 
+TEST_F(TraceEventDataSourceTest, SupportNullptrEventName) {
+  StartTraceEventDataSource();
+  TRACE_EVENT_INSTANT("browser", nullptr, [&](::perfetto::EventContext& ctx) {
+                          ctx.event()->set_name(std::string("EventName"));
+                        });
+  const auto& packets = GetFinalizedPackets();
+  ASSERT_GT(packets.size(), 0u);
+  const auto& last_packet = *packets.back();
+  EXPECT_TRUE(last_packet.has_track_event());
+  EXPECT_FALSE(last_packet.track_event().has_name_iid());
+  EXPECT_TRUE(last_packet.track_event().has_name());
+  EXPECT_EQ("EventName", last_packet.track_event().name());
+  EXPECT_TRUE(last_packet.has_interned_data());
+  EXPECT_EQ(0, last_packet.interned_data().event_names().size());
+}
+
 // TODO(eseckler): Add startup tracing unittests.
 
 }  // namespace
diff --git a/services/tracing/public/cpp/perfetto/track_event_thread_local_event_sink.cc b/services/tracing/public/cpp/perfetto/track_event_thread_local_event_sink.cc
index 838d6e929..feee4de7 100644
--- a/services/tracing/public/cpp/perfetto/track_event_thread_local_event_sink.cc
+++ b/services/tracing/public/cpp/perfetto/track_event_thread_local_event_sink.cc
@@ -441,7 +441,7 @@
   // Legacy async events (TRACE_EVENT_ASYNC*) are only pass-through in trace
   // processor, so we still have to emit names for these.
   const char* trace_event_name = trace_event->name();
-  if (!is_sync_end && !is_nestable_async_end) {
+  if (!is_sync_end && !is_nestable_async_end && trace_event_name != nullptr) {
     bool filter_name =
         copy_strings && !is_java_event && privacy_filtering_enabled_;
     if (filter_name)
diff --git a/testing/buildbot/chromium.clang.json b/testing/buildbot/chromium.clang.json
index 6d5b09e1..3e89378 100644
--- a/testing/buildbot/chromium.clang.json
+++ b/testing/buildbot/chromium.clang.json
@@ -40646,7 +40646,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "absl_hardening_tests",
@@ -40676,7 +40676,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -40698,7 +40698,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -40728,7 +40728,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -40750,7 +40750,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "boringssl_crypto_tests",
@@ -40780,7 +40780,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -40802,7 +40802,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "boringssl_ssl_tests",
@@ -40832,7 +40832,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -40854,7 +40854,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -40884,7 +40884,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -40906,7 +40906,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "crypto_unittests",
@@ -40936,7 +40936,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -40958,7 +40958,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -40988,7 +40988,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -41010,7 +41010,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "google_apis_unittests",
@@ -41040,7 +41040,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -41062,7 +41062,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -41092,7 +41092,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -41114,7 +41114,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_net_unittests",
@@ -41144,7 +41144,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -41166,7 +41166,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -41196,7 +41196,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -41218,7 +41218,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -41248,7 +41248,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -41270,7 +41270,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -41300,7 +41300,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -41322,7 +41322,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "net_unittests",
@@ -41352,7 +41352,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -41374,7 +41374,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -41404,7 +41404,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -41426,7 +41426,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "sql_unittests",
@@ -41456,7 +41456,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -41478,7 +41478,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -41508,7 +41508,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -41530,7 +41530,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "url_unittests",
@@ -41560,7 +41560,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -41602,7 +41602,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "absl_hardening_tests",
@@ -41634,7 +41634,7 @@
           "expiration": 21600,
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             }
           ],
@@ -41649,7 +41649,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -41681,7 +41681,7 @@
           "expiration": 21600,
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             }
           ],
@@ -41696,7 +41696,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "boringssl_crypto_tests",
@@ -41728,7 +41728,7 @@
           "expiration": 21600,
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             }
           ],
@@ -41743,7 +41743,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "boringssl_ssl_tests",
@@ -41775,7 +41775,7 @@
           "expiration": 21600,
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             }
           ],
@@ -41790,7 +41790,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -41822,7 +41822,7 @@
           "expiration": 21600,
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             }
           ],
@@ -41837,7 +41837,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "crypto_unittests",
@@ -41869,7 +41869,7 @@
           "expiration": 21600,
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             }
           ],
@@ -41884,7 +41884,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -41916,7 +41916,7 @@
           "expiration": 21600,
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             }
           ],
@@ -41931,7 +41931,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "google_apis_unittests",
@@ -41963,7 +41963,7 @@
           "expiration": 21600,
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             }
           ],
@@ -41978,7 +41978,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -42010,7 +42010,7 @@
           "expiration": 21600,
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             }
           ],
@@ -42025,7 +42025,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_net_unittests",
@@ -42057,7 +42057,7 @@
           "expiration": 21600,
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             }
           ],
@@ -42072,7 +42072,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -42104,7 +42104,7 @@
           "expiration": 21600,
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             }
           ],
@@ -42119,7 +42119,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -42151,7 +42151,7 @@
           "expiration": 21600,
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             }
           ],
@@ -42166,7 +42166,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -42198,7 +42198,7 @@
           "expiration": 21600,
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             }
           ],
@@ -42213,7 +42213,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "net_unittests",
@@ -42245,7 +42245,7 @@
           "expiration": 21600,
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             }
           ],
@@ -42260,7 +42260,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -42292,7 +42292,7 @@
           "expiration": 21600,
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             }
           ],
@@ -42307,7 +42307,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "sql_unittests",
@@ -42339,7 +42339,7 @@
           "expiration": 21600,
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             }
           ],
@@ -42354,7 +42354,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -42386,7 +42386,7 @@
           "expiration": 21600,
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             }
           ],
@@ -42401,7 +42401,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "url_unittests",
@@ -42433,7 +42433,7 @@
           "expiration": 21600,
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             }
           ],
diff --git a/testing/buildbot/chromium.fyi.json b/testing/buildbot/chromium.fyi.json
index f104a36b..369abc5 100644
--- a/testing/buildbot/chromium.fyi.json
+++ b/testing/buildbot/chromium.fyi.json
@@ -31291,7 +31291,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization",
           "--extra-app-args=--disable-field-trial-config"
@@ -31323,7 +31323,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -31345,7 +31345,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization",
           "--extra-app-args=--disable-field-trial-config"
@@ -31377,7 +31377,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -31399,7 +31399,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization",
           "--extra-app-args=--disable-field-trial-config"
@@ -31431,7 +31431,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -31454,7 +31454,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization",
           "--extra-app-args=--disable-field-trial-config"
@@ -31486,7 +31486,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -31509,7 +31509,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization",
           "--extra-app-args=--disable-field-trial-config"
@@ -31541,7 +31541,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -31564,7 +31564,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization",
           "--extra-app-args=--disable-field-trial-config"
@@ -31596,7 +31596,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -31619,7 +31619,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization",
           "--extra-app-args=--disable-field-trial-config"
@@ -31651,7 +31651,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -31674,7 +31674,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization",
           "--extra-app-args=--disable-field-trial-config"
@@ -31706,7 +31706,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -31729,7 +31729,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization",
           "--extra-app-args=--disable-field-trial-config"
@@ -31761,7 +31761,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -31783,7 +31783,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization",
           "--extra-app-args=--disable-field-trial-config"
@@ -31815,7 +31815,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -31837,7 +31837,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization",
           "--extra-app-args=--disable-field-trial-config"
@@ -31869,7 +31869,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -31892,7 +31892,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization",
           "--extra-app-args=--disable-field-trial-config"
@@ -31924,7 +31924,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -31947,7 +31947,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization",
           "--extra-app-args=--disable-field-trial-config"
@@ -31979,7 +31979,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -32001,7 +32001,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization",
           "--extra-app-args=--disable-field-trial-config"
@@ -32033,7 +32033,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -32055,7 +32055,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization",
           "--extra-app-args=--disable-field-trial-config"
@@ -32087,7 +32087,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -32109,7 +32109,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization",
           "--extra-app-args=--disable-field-trial-config"
@@ -32141,7 +32141,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -32163,7 +32163,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization",
           "--extra-app-args=--disable-field-trial-config"
@@ -32195,7 +32195,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -32217,7 +32217,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization",
           "--extra-app-args=--disable-field-trial-config"
@@ -32249,7 +32249,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -32278,7 +32278,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "absl_hardening_tests",
@@ -32308,7 +32308,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -32330,7 +32330,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -32360,7 +32360,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -32382,7 +32382,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -32412,7 +32412,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -32434,7 +32434,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -32464,7 +32464,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -32486,7 +32486,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -32516,7 +32516,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -32538,7 +32538,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "boringssl_crypto_tests",
@@ -32568,7 +32568,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -32590,7 +32590,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "boringssl_ssl_tests",
@@ -32620,7 +32620,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -32642,7 +32642,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -32672,7 +32672,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -32694,7 +32694,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -32724,7 +32724,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -32746,7 +32746,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -32776,7 +32776,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -32798,7 +32798,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -32828,7 +32828,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -32850,7 +32850,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "crashpad_tests",
@@ -32880,7 +32880,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -32902,7 +32902,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "crypto_unittests",
@@ -32932,7 +32932,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -32954,7 +32954,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -32984,7 +32984,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -33006,7 +33006,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -33036,7 +33036,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -33058,7 +33058,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -33088,7 +33088,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -33110,7 +33110,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -33140,7 +33140,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -33162,7 +33162,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "google_apis_unittests",
@@ -33192,7 +33192,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -33214,7 +33214,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -33245,7 +33245,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -33267,7 +33267,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -33298,7 +33298,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -33320,7 +33320,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -33351,7 +33351,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -33373,7 +33373,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -33404,7 +33404,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -33427,7 +33427,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -33458,7 +33458,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -33481,7 +33481,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -33512,7 +33512,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -33535,7 +33535,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -33566,7 +33566,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -33589,7 +33589,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -33620,7 +33620,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -33643,7 +33643,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -33674,7 +33674,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -33697,7 +33697,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -33728,7 +33728,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -33751,7 +33751,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -33782,7 +33782,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -33805,7 +33805,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -33836,7 +33836,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -33859,7 +33859,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -33890,7 +33890,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -33912,7 +33912,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -33943,7 +33943,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -33965,7 +33965,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -33996,7 +33996,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -34018,7 +34018,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -34049,7 +34049,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -34072,7 +34072,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -34103,7 +34103,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -34126,7 +34126,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -34157,7 +34157,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -34180,7 +34180,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -34210,7 +34210,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -34232,7 +34232,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -34262,7 +34262,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -34284,7 +34284,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -34314,7 +34314,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -34336,7 +34336,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -34366,7 +34366,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -34388,7 +34388,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -34419,7 +34419,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -34441,7 +34441,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -34472,7 +34472,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -34494,7 +34494,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -34525,7 +34525,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -34547,7 +34547,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_components_unittests",
@@ -34577,7 +34577,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -34599,7 +34599,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_net_unittests",
@@ -34629,7 +34629,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -34652,7 +34652,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_remoting_unittests",
@@ -34682,7 +34682,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -34704,7 +34704,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -34735,7 +34735,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -34757,7 +34757,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -34788,7 +34788,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -34810,7 +34810,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -34841,7 +34841,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -34863,7 +34863,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_testing_unittests",
@@ -34893,7 +34893,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -34915,7 +34915,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -34945,7 +34945,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -34967,7 +34967,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -34997,7 +34997,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -35019,7 +35019,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -35049,7 +35049,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -35071,7 +35071,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -35101,7 +35101,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -35123,7 +35123,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -35154,7 +35154,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -35176,7 +35176,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -35207,7 +35207,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -35229,7 +35229,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -35260,7 +35260,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -35282,7 +35282,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -35312,7 +35312,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -35334,7 +35334,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -35364,7 +35364,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -35386,7 +35386,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -35416,7 +35416,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -35438,7 +35438,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -35468,7 +35468,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -35490,7 +35490,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -35520,7 +35520,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -35542,7 +35542,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -35572,7 +35572,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -35594,7 +35594,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -35624,7 +35624,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -35646,7 +35646,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -35676,7 +35676,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -35698,7 +35698,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -35728,7 +35728,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -35750,7 +35750,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -35780,7 +35780,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -35802,7 +35802,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -35832,7 +35832,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -35854,7 +35854,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -35884,7 +35884,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -35906,7 +35906,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "net_unittests",
@@ -35936,7 +35936,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -35958,7 +35958,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "services_unittests",
@@ -35988,7 +35988,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -36010,7 +36010,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -36040,7 +36040,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -36062,7 +36062,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -36092,7 +36092,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -36114,7 +36114,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -36144,7 +36144,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -36166,7 +36166,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -36196,7 +36196,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -36218,7 +36218,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "sql_unittests",
@@ -36248,7 +36248,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -36270,7 +36270,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -36300,7 +36300,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -36322,7 +36322,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -36352,7 +36352,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -36374,7 +36374,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -36404,7 +36404,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -36426,7 +36426,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -36456,7 +36456,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -36478,7 +36478,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "url_unittests",
@@ -36508,7 +36508,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -36534,7 +36534,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "cronet_test",
@@ -36564,7 +36564,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -36593,7 +36593,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "absl_hardening_tests",
@@ -36623,7 +36623,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -36645,7 +36645,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "absl_hardening_tests",
@@ -36675,7 +36675,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -36697,7 +36697,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -36727,7 +36727,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -36749,7 +36749,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -36779,7 +36779,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -36801,7 +36801,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -36831,7 +36831,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -36853,7 +36853,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -36883,7 +36883,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -36905,7 +36905,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -36935,7 +36935,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -36957,7 +36957,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -36987,7 +36987,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -37009,7 +37009,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -37039,7 +37039,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -37061,7 +37061,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -37091,7 +37091,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -37113,7 +37113,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "boringssl_crypto_tests",
@@ -37143,7 +37143,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -37165,7 +37165,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "boringssl_crypto_tests",
@@ -37195,7 +37195,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -37217,7 +37217,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "boringssl_ssl_tests",
@@ -37247,7 +37247,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -37269,7 +37269,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "boringssl_ssl_tests",
@@ -37299,7 +37299,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -37321,7 +37321,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -37351,7 +37351,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -37373,7 +37373,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -37403,7 +37403,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -37425,7 +37425,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -37455,7 +37455,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -37477,7 +37477,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -37507,7 +37507,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -37529,7 +37529,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -37559,7 +37559,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -37581,7 +37581,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -37611,7 +37611,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -37633,7 +37633,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -37663,7 +37663,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -37685,7 +37685,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -37715,7 +37715,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -37737,7 +37737,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "crashpad_tests",
@@ -37767,7 +37767,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -37789,7 +37789,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "crashpad_tests",
@@ -37819,7 +37819,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -37841,7 +37841,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "crypto_unittests",
@@ -37871,7 +37871,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -37893,7 +37893,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "crypto_unittests",
@@ -37923,7 +37923,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -37945,7 +37945,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -37975,7 +37975,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -37997,7 +37997,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -38027,7 +38027,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -38049,7 +38049,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -38079,7 +38079,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -38101,7 +38101,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -38131,7 +38131,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -38153,7 +38153,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -38183,7 +38183,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -38205,7 +38205,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -38235,7 +38235,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -38257,7 +38257,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -38287,7 +38287,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -38309,7 +38309,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -38339,7 +38339,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -38361,7 +38361,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "google_apis_unittests",
@@ -38391,7 +38391,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -38413,7 +38413,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "google_apis_unittests",
@@ -38443,7 +38443,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -38465,7 +38465,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -38496,7 +38496,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -38518,7 +38518,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -38549,7 +38549,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -38571,7 +38571,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -38602,7 +38602,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -38624,7 +38624,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -38655,7 +38655,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -38677,7 +38677,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -38708,7 +38708,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -38730,7 +38730,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -38761,7 +38761,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -38783,7 +38783,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -38814,7 +38814,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -38837,7 +38837,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -38868,7 +38868,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -38891,7 +38891,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -38922,7 +38922,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -38945,7 +38945,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -38976,7 +38976,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -38999,7 +38999,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -39030,7 +39030,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -39053,7 +39053,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -39084,7 +39084,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -39107,7 +39107,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -39138,7 +39138,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -39161,7 +39161,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -39192,7 +39192,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -39215,7 +39215,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -39246,7 +39246,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -39269,7 +39269,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -39300,7 +39300,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -39323,7 +39323,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -39354,7 +39354,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -39377,7 +39377,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -39408,7 +39408,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -39431,7 +39431,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -39462,7 +39462,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -39485,7 +39485,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -39516,7 +39516,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -39539,7 +39539,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -39570,7 +39570,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -39593,7 +39593,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -39624,7 +39624,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -39647,7 +39647,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -39678,7 +39678,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -39701,7 +39701,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -39732,7 +39732,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -39755,7 +39755,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -39786,7 +39786,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -39808,7 +39808,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -39839,7 +39839,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -39861,7 +39861,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -39892,7 +39892,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -39914,7 +39914,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -39945,7 +39945,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -39967,7 +39967,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -39998,7 +39998,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -40020,7 +40020,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -40051,7 +40051,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -40073,7 +40073,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -40104,7 +40104,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -40127,7 +40127,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -40158,7 +40158,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -40181,7 +40181,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -40212,7 +40212,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -40235,7 +40235,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -40266,7 +40266,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -40289,7 +40289,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -40320,7 +40320,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -40343,7 +40343,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -40374,7 +40374,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -40397,7 +40397,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -40427,7 +40427,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -40449,7 +40449,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -40479,7 +40479,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -40501,7 +40501,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -40531,7 +40531,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -40553,7 +40553,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -40583,7 +40583,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -40605,7 +40605,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -40635,7 +40635,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -40657,7 +40657,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -40687,7 +40687,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -40709,7 +40709,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -40739,7 +40739,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -40761,7 +40761,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -40791,7 +40791,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -40813,7 +40813,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -40844,7 +40844,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -40866,7 +40866,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -40897,7 +40897,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -40919,7 +40919,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -40950,7 +40950,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -40972,7 +40972,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -41003,7 +41003,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -41025,7 +41025,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -41056,7 +41056,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -41078,7 +41078,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -41109,7 +41109,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -41131,7 +41131,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_components_unittests",
@@ -41161,7 +41161,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -41183,7 +41183,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_components_unittests",
@@ -41213,7 +41213,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -41235,7 +41235,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_net_unittests",
@@ -41265,7 +41265,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -41288,7 +41288,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_net_unittests",
@@ -41318,7 +41318,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -41341,7 +41341,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_remoting_unittests",
@@ -41371,7 +41371,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -41393,7 +41393,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_remoting_unittests",
@@ -41423,7 +41423,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -41445,7 +41445,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -41476,7 +41476,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -41498,7 +41498,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -41529,7 +41529,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -41551,7 +41551,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -41582,7 +41582,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -41604,7 +41604,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -41635,7 +41635,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -41657,7 +41657,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -41688,7 +41688,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -41710,7 +41710,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -41741,7 +41741,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -41763,7 +41763,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_testing_unittests",
@@ -41793,7 +41793,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -41815,7 +41815,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_testing_unittests",
@@ -41845,7 +41845,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -41867,7 +41867,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -41897,7 +41897,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -41919,7 +41919,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -41949,7 +41949,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -41971,7 +41971,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -42001,7 +42001,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -42023,7 +42023,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -42053,7 +42053,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -42075,7 +42075,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -42105,7 +42105,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -42127,7 +42127,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -42157,7 +42157,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -42179,7 +42179,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -42209,7 +42209,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -42231,7 +42231,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -42261,7 +42261,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -42283,7 +42283,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -42314,7 +42314,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -42336,7 +42336,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -42367,7 +42367,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -42389,7 +42389,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -42420,7 +42420,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -42442,7 +42442,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -42473,7 +42473,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -42495,7 +42495,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -42526,7 +42526,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -42548,7 +42548,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -42579,7 +42579,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -42601,7 +42601,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -42631,7 +42631,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -42653,7 +42653,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -42683,7 +42683,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -42705,7 +42705,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -42735,7 +42735,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -42757,7 +42757,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -42787,7 +42787,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -42809,7 +42809,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -42839,7 +42839,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -42861,7 +42861,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -42891,7 +42891,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -42913,7 +42913,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -42943,7 +42943,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -42965,7 +42965,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -42995,7 +42995,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -43017,7 +43017,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -43047,7 +43047,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -43069,7 +43069,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -43099,7 +43099,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -43121,7 +43121,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -43151,7 +43151,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -43173,7 +43173,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -43203,7 +43203,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -43225,7 +43225,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -43255,7 +43255,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -43277,7 +43277,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -43307,7 +43307,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -43329,7 +43329,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -43359,7 +43359,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -43381,7 +43381,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -43411,7 +43411,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -43433,7 +43433,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -43463,7 +43463,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -43485,7 +43485,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -43515,7 +43515,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -43537,7 +43537,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -43567,7 +43567,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -43589,7 +43589,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -43619,7 +43619,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -43641,7 +43641,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -43671,7 +43671,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -43693,7 +43693,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -43723,7 +43723,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -43745,7 +43745,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -43775,7 +43775,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -43797,7 +43797,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -43827,7 +43827,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -43849,7 +43849,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "net_unittests",
@@ -43879,7 +43879,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -43901,7 +43901,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "net_unittests",
@@ -43931,7 +43931,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -43953,7 +43953,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "services_unittests",
@@ -43983,7 +43983,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -44005,7 +44005,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "services_unittests",
@@ -44035,7 +44035,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -44057,7 +44057,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -44087,7 +44087,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -44109,7 +44109,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -44139,7 +44139,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -44161,7 +44161,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -44191,7 +44191,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -44213,7 +44213,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -44243,7 +44243,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -44265,7 +44265,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -44295,7 +44295,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -44317,7 +44317,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -44347,7 +44347,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -44369,7 +44369,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -44399,7 +44399,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -44421,7 +44421,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -44451,7 +44451,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -44473,7 +44473,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "sql_unittests",
@@ -44503,7 +44503,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -44525,7 +44525,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "sql_unittests",
@@ -44555,7 +44555,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -44577,7 +44577,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -44607,7 +44607,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -44629,7 +44629,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -44659,7 +44659,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -44681,7 +44681,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -44711,7 +44711,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -44733,7 +44733,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -44763,7 +44763,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -44785,7 +44785,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -44815,7 +44815,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -44837,7 +44837,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -44867,7 +44867,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -44889,7 +44889,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -44919,7 +44919,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -44941,7 +44941,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -44971,7 +44971,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -44993,7 +44993,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "url_unittests",
@@ -45023,7 +45023,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -45045,7 +45045,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "url_unittests",
@@ -45075,7 +45075,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -45103,7 +45103,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "absl_hardening_tests",
@@ -45134,7 +45134,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -45158,7 +45158,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "absl_hardening_tests",
@@ -45189,7 +45189,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -45213,7 +45213,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -45244,7 +45244,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -45268,7 +45268,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -45299,7 +45299,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -45323,7 +45323,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -45354,7 +45354,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -45378,7 +45378,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -45409,7 +45409,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -45433,7 +45433,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -45464,7 +45464,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -45488,7 +45488,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -45519,7 +45519,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -45543,7 +45543,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -45574,7 +45574,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -45598,7 +45598,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -45629,7 +45629,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -45653,7 +45653,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "boringssl_crypto_tests",
@@ -45684,7 +45684,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -45708,7 +45708,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "boringssl_crypto_tests",
@@ -45739,7 +45739,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -45763,7 +45763,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "boringssl_ssl_tests",
@@ -45794,7 +45794,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -45818,7 +45818,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "boringssl_ssl_tests",
@@ -45849,7 +45849,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -45873,7 +45873,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -45904,7 +45904,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -45928,7 +45928,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -45959,7 +45959,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -45983,7 +45983,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -46014,7 +46014,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -46038,7 +46038,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -46069,7 +46069,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -46093,7 +46093,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -46124,7 +46124,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -46148,7 +46148,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -46179,7 +46179,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -46203,7 +46203,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -46234,7 +46234,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -46258,7 +46258,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -46289,7 +46289,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -46313,7 +46313,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "crashpad_tests",
@@ -46344,7 +46344,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -46368,7 +46368,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "crashpad_tests",
@@ -46399,7 +46399,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -46423,7 +46423,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "crypto_unittests",
@@ -46454,7 +46454,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -46478,7 +46478,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "crypto_unittests",
@@ -46509,7 +46509,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -46533,7 +46533,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -46564,7 +46564,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -46588,7 +46588,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -46619,7 +46619,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -46643,7 +46643,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -46674,7 +46674,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -46698,7 +46698,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -46729,7 +46729,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -46753,7 +46753,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -46784,7 +46784,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -46808,7 +46808,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -46839,7 +46839,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -46863,7 +46863,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -46894,7 +46894,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -46918,7 +46918,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -46949,7 +46949,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -46973,7 +46973,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "google_apis_unittests",
@@ -47004,7 +47004,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -47028,7 +47028,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "google_apis_unittests",
@@ -47059,7 +47059,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -47083,7 +47083,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -47115,7 +47115,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -47139,7 +47139,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -47171,7 +47171,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -47195,7 +47195,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -47227,7 +47227,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -47251,7 +47251,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -47283,7 +47283,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -47307,7 +47307,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -47339,7 +47339,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -47363,7 +47363,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -47395,7 +47395,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -47419,7 +47419,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -47451,7 +47451,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -47476,7 +47476,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -47508,7 +47508,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -47533,7 +47533,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -47565,7 +47565,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -47590,7 +47590,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -47622,7 +47622,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -47647,7 +47647,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -47679,7 +47679,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -47704,7 +47704,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -47736,7 +47736,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -47761,7 +47761,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -47793,7 +47793,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -47818,7 +47818,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -47850,7 +47850,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -47875,7 +47875,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -47907,7 +47907,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -47932,7 +47932,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -47964,7 +47964,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -47989,7 +47989,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -48021,7 +48021,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -48046,7 +48046,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -48078,7 +48078,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -48103,7 +48103,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -48135,7 +48135,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -48160,7 +48160,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -48192,7 +48192,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -48217,7 +48217,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -48249,7 +48249,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -48274,7 +48274,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -48306,7 +48306,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -48331,7 +48331,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -48363,7 +48363,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -48388,7 +48388,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -48420,7 +48420,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -48445,7 +48445,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -48477,7 +48477,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -48501,7 +48501,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -48533,7 +48533,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -48557,7 +48557,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -48589,7 +48589,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -48613,7 +48613,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -48645,7 +48645,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -48669,7 +48669,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -48701,7 +48701,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -48725,7 +48725,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -48757,7 +48757,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -48781,7 +48781,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -48813,7 +48813,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -48838,7 +48838,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -48870,7 +48870,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -48895,7 +48895,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -48927,7 +48927,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -48952,7 +48952,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -48984,7 +48984,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -49009,7 +49009,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -49041,7 +49041,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -49066,7 +49066,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -49098,7 +49098,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -49123,7 +49123,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -49154,7 +49154,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -49178,7 +49178,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -49209,7 +49209,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -49233,7 +49233,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -49264,7 +49264,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -49288,7 +49288,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -49319,7 +49319,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -49343,7 +49343,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -49374,7 +49374,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -49398,7 +49398,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -49429,7 +49429,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -49453,7 +49453,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -49484,7 +49484,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -49508,7 +49508,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -49539,7 +49539,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -49563,7 +49563,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -49595,7 +49595,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -49619,7 +49619,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -49651,7 +49651,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -49675,7 +49675,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -49707,7 +49707,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -49731,7 +49731,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -49763,7 +49763,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -49787,7 +49787,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -49819,7 +49819,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -49843,7 +49843,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -49875,7 +49875,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -49899,7 +49899,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_components_unittests",
@@ -49930,7 +49930,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -49954,7 +49954,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_components_unittests",
@@ -49985,7 +49985,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -50009,7 +50009,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_net_unittests",
@@ -50040,7 +50040,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -50065,7 +50065,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_net_unittests",
@@ -50096,7 +50096,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -50121,7 +50121,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_remoting_unittests",
@@ -50152,7 +50152,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -50176,7 +50176,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_remoting_unittests",
@@ -50207,7 +50207,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -50231,7 +50231,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -50263,7 +50263,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -50287,7 +50287,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -50319,7 +50319,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -50343,7 +50343,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -50375,7 +50375,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -50399,7 +50399,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -50431,7 +50431,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -50455,7 +50455,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -50487,7 +50487,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -50511,7 +50511,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -50543,7 +50543,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -50567,7 +50567,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_testing_unittests",
@@ -50598,7 +50598,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -50622,7 +50622,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_testing_unittests",
@@ -50653,7 +50653,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -50677,7 +50677,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -50708,7 +50708,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -50732,7 +50732,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -50763,7 +50763,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -50787,7 +50787,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -50818,7 +50818,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -50842,7 +50842,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -50873,7 +50873,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -50897,7 +50897,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -50928,7 +50928,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -50952,7 +50952,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -50983,7 +50983,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -51007,7 +51007,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -51038,7 +51038,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -51062,7 +51062,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -51093,7 +51093,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -51117,7 +51117,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -51149,7 +51149,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -51173,7 +51173,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -51205,7 +51205,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -51229,7 +51229,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -51261,7 +51261,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -51285,7 +51285,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -51317,7 +51317,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -51341,7 +51341,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -51373,7 +51373,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -51397,7 +51397,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -51429,7 +51429,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -51453,7 +51453,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -51484,7 +51484,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -51508,7 +51508,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -51539,7 +51539,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -51563,7 +51563,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -51594,7 +51594,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -51618,7 +51618,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -51649,7 +51649,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -51673,7 +51673,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -51704,7 +51704,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -51728,7 +51728,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -51759,7 +51759,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -51783,7 +51783,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -51814,7 +51814,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -51838,7 +51838,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -51869,7 +51869,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -51893,7 +51893,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -51924,7 +51924,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -51948,7 +51948,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -51979,7 +51979,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -52003,7 +52003,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -52034,7 +52034,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -52058,7 +52058,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -52089,7 +52089,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -52113,7 +52113,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -52144,7 +52144,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -52168,7 +52168,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -52199,7 +52199,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -52223,7 +52223,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -52254,7 +52254,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -52278,7 +52278,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -52309,7 +52309,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -52333,7 +52333,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -52364,7 +52364,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -52388,7 +52388,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -52419,7 +52419,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -52443,7 +52443,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -52474,7 +52474,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -52498,7 +52498,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -52529,7 +52529,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -52553,7 +52553,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -52584,7 +52584,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -52608,7 +52608,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -52639,7 +52639,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -52663,7 +52663,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -52694,7 +52694,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -52718,7 +52718,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -52749,7 +52749,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -52773,7 +52773,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "net_unittests",
@@ -52804,7 +52804,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -52828,7 +52828,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "net_unittests",
@@ -52859,7 +52859,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -52883,7 +52883,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "services_unittests",
@@ -52914,7 +52914,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -52938,7 +52938,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "services_unittests",
@@ -52969,7 +52969,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -52993,7 +52993,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -53024,7 +53024,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -53048,7 +53048,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -53079,7 +53079,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -53103,7 +53103,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -53134,7 +53134,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -53158,7 +53158,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -53189,7 +53189,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -53213,7 +53213,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -53244,7 +53244,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -53268,7 +53268,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -53299,7 +53299,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -53323,7 +53323,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -53354,7 +53354,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -53378,7 +53378,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -53409,7 +53409,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -53433,7 +53433,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "sql_unittests",
@@ -53464,7 +53464,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -53488,7 +53488,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "sql_unittests",
@@ -53519,7 +53519,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -53543,7 +53543,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -53574,7 +53574,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -53598,7 +53598,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -53629,7 +53629,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -53653,7 +53653,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -53684,7 +53684,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -53708,7 +53708,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -53739,7 +53739,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -53763,7 +53763,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -53794,7 +53794,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -53818,7 +53818,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -53849,7 +53849,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -53873,7 +53873,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -53904,7 +53904,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -53928,7 +53928,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -53959,7 +53959,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -53983,7 +53983,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "url_unittests",
@@ -54014,7 +54014,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -54038,7 +54038,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "url_unittests",
@@ -54069,7 +54069,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -54095,7 +54095,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "cronet_test",
@@ -54125,7 +54125,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -54156,7 +54156,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "absl_hardening_tests",
@@ -54186,7 +54186,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -54208,7 +54208,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -54238,7 +54238,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -54260,7 +54260,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "boringssl_crypto_tests",
@@ -54290,7 +54290,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -54312,7 +54312,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "boringssl_ssl_tests",
@@ -54342,7 +54342,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -54364,7 +54364,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -54394,7 +54394,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -54416,7 +54416,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "crashpad_tests",
@@ -54446,7 +54446,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -54468,7 +54468,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "crypto_unittests",
@@ -54498,7 +54498,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -54520,7 +54520,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -54550,7 +54550,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -54572,7 +54572,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "google_apis_unittests",
@@ -54602,7 +54602,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -54624,7 +54624,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -54655,7 +54655,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -54677,7 +54677,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -54708,7 +54708,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -54731,7 +54731,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -54762,7 +54762,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -54785,7 +54785,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -54816,7 +54816,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -54839,7 +54839,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -54870,7 +54870,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -54892,7 +54892,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -54923,7 +54923,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -54946,7 +54946,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -54976,7 +54976,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -54998,7 +54998,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -55029,7 +55029,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -55051,7 +55051,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_components_unittests",
@@ -55081,7 +55081,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -55103,7 +55103,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_net_unittests",
@@ -55133,7 +55133,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -55156,7 +55156,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_remoting_unittests",
@@ -55186,7 +55186,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -55208,7 +55208,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -55239,7 +55239,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -55261,7 +55261,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_testing_unittests",
@@ -55291,7 +55291,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -55313,7 +55313,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -55343,7 +55343,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -55365,7 +55365,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -55396,7 +55396,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -55418,7 +55418,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -55448,7 +55448,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -55470,7 +55470,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -55500,7 +55500,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -55522,7 +55522,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -55552,7 +55552,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -55574,7 +55574,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "net_unittests",
@@ -55604,7 +55604,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -55626,7 +55626,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "services_unittests",
@@ -55656,7 +55656,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -55678,7 +55678,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -55708,7 +55708,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -55730,7 +55730,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "sql_unittests",
@@ -55760,7 +55760,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -55782,7 +55782,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -55812,7 +55812,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -55834,7 +55834,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "url_unittests",
@@ -55864,7 +55864,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -55892,7 +55892,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "absl_hardening_tests",
@@ -55922,7 +55922,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -55946,7 +55946,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "absl_hardening_tests",
@@ -55976,7 +55976,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -56000,7 +56000,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -56030,7 +56030,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -56054,7 +56054,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -56084,7 +56084,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -56108,7 +56108,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "boringssl_crypto_tests",
@@ -56138,7 +56138,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -56162,7 +56162,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "boringssl_crypto_tests",
@@ -56192,7 +56192,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -56216,7 +56216,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "boringssl_ssl_tests",
@@ -56246,7 +56246,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -56270,7 +56270,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "boringssl_ssl_tests",
@@ -56300,7 +56300,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -56324,7 +56324,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -56354,7 +56354,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -56378,7 +56378,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -56408,7 +56408,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -56432,7 +56432,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "crashpad_tests",
@@ -56462,7 +56462,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -56486,7 +56486,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "crashpad_tests",
@@ -56516,7 +56516,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -56540,7 +56540,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "crypto_unittests",
@@ -56570,7 +56570,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -56594,7 +56594,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "crypto_unittests",
@@ -56624,7 +56624,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -56648,7 +56648,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -56678,7 +56678,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -56702,7 +56702,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -56732,7 +56732,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -56756,7 +56756,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "google_apis_unittests",
@@ -56786,7 +56786,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -56810,7 +56810,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "google_apis_unittests",
@@ -56840,7 +56840,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -56864,7 +56864,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -56895,7 +56895,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -56919,7 +56919,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -56950,7 +56950,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -56974,7 +56974,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -57005,7 +57005,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -57030,7 +57030,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -57061,7 +57061,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -57086,7 +57086,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -57117,7 +57117,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -57142,7 +57142,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -57173,7 +57173,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -57198,7 +57198,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -57229,7 +57229,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -57254,7 +57254,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -57285,7 +57285,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -57310,7 +57310,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -57341,7 +57341,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -57365,7 +57365,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -57396,7 +57396,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -57420,7 +57420,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -57451,7 +57451,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -57476,7 +57476,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -57507,7 +57507,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -57532,7 +57532,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -57562,7 +57562,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -57586,7 +57586,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -57616,7 +57616,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -57640,7 +57640,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -57671,7 +57671,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -57695,7 +57695,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -57726,7 +57726,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -57750,7 +57750,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_components_unittests",
@@ -57780,7 +57780,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -57804,7 +57804,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_components_unittests",
@@ -57834,7 +57834,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -57858,7 +57858,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_net_unittests",
@@ -57888,7 +57888,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -57913,7 +57913,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_net_unittests",
@@ -57943,7 +57943,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -57968,7 +57968,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_remoting_unittests",
@@ -57998,7 +57998,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -58022,7 +58022,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_remoting_unittests",
@@ -58052,7 +58052,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -58076,7 +58076,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -58107,7 +58107,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -58131,7 +58131,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -58162,7 +58162,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -58186,7 +58186,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_testing_unittests",
@@ -58216,7 +58216,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -58240,7 +58240,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_testing_unittests",
@@ -58270,7 +58270,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -58294,7 +58294,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -58324,7 +58324,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -58348,7 +58348,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -58378,7 +58378,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -58402,7 +58402,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -58433,7 +58433,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -58457,7 +58457,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -58488,7 +58488,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -58512,7 +58512,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -58542,7 +58542,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -58566,7 +58566,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -58596,7 +58596,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -58620,7 +58620,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -58650,7 +58650,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -58674,7 +58674,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -58704,7 +58704,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -58728,7 +58728,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -58758,7 +58758,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -58782,7 +58782,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -58812,7 +58812,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -58836,7 +58836,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "net_unittests",
@@ -58866,7 +58866,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -58890,7 +58890,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "net_unittests",
@@ -58920,7 +58920,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -58944,7 +58944,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "services_unittests",
@@ -58974,7 +58974,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -58998,7 +58998,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "services_unittests",
@@ -59028,7 +59028,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -59052,7 +59052,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -59082,7 +59082,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -59106,7 +59106,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -59136,7 +59136,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -59160,7 +59160,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "sql_unittests",
@@ -59190,7 +59190,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -59214,7 +59214,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "sql_unittests",
@@ -59244,7 +59244,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -59268,7 +59268,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -59298,7 +59298,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -59322,7 +59322,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -59352,7 +59352,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -59376,7 +59376,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "url_unittests",
@@ -59406,7 +59406,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -59430,7 +59430,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "url_unittests",
@@ -59460,7 +59460,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -59489,7 +59489,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "absl_hardening_tests",
@@ -59519,7 +59519,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -59541,7 +59541,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "absl_hardening_tests",
@@ -59571,7 +59571,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -59593,7 +59593,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -59623,7 +59623,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -59645,7 +59645,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -59675,7 +59675,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -59697,7 +59697,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -59727,7 +59727,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -59749,7 +59749,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -59779,7 +59779,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -59801,7 +59801,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -59831,7 +59831,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -59853,7 +59853,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -59883,7 +59883,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -59905,7 +59905,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -59935,7 +59935,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -59957,7 +59957,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -59987,7 +59987,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -60009,7 +60009,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "boringssl_crypto_tests",
@@ -60039,7 +60039,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -60061,7 +60061,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "boringssl_crypto_tests",
@@ -60091,7 +60091,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -60113,7 +60113,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "boringssl_ssl_tests",
@@ -60143,7 +60143,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -60165,7 +60165,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "boringssl_ssl_tests",
@@ -60195,7 +60195,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -60217,7 +60217,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -60247,7 +60247,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -60269,7 +60269,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -60299,7 +60299,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -60321,7 +60321,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -60351,7 +60351,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -60373,7 +60373,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -60403,7 +60403,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -60425,7 +60425,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -60455,7 +60455,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -60477,7 +60477,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -60507,7 +60507,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -60529,7 +60529,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -60559,7 +60559,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -60581,7 +60581,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -60611,7 +60611,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -60633,7 +60633,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "crashpad_tests",
@@ -60663,7 +60663,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -60685,7 +60685,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "crashpad_tests",
@@ -60715,7 +60715,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -60737,7 +60737,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "crypto_unittests",
@@ -60767,7 +60767,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -60789,7 +60789,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "crypto_unittests",
@@ -60819,7 +60819,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -60841,7 +60841,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -60871,7 +60871,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -60893,7 +60893,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -60923,7 +60923,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -60945,7 +60945,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -60975,7 +60975,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -60997,7 +60997,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -61027,7 +61027,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -61049,7 +61049,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -61079,7 +61079,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -61101,7 +61101,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -61131,7 +61131,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -61153,7 +61153,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -61183,7 +61183,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -61205,7 +61205,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -61235,7 +61235,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -61257,7 +61257,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "google_apis_unittests",
@@ -61287,7 +61287,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -61309,7 +61309,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "google_apis_unittests",
@@ -61339,7 +61339,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -61361,7 +61361,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -61392,7 +61392,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -61414,7 +61414,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -61445,7 +61445,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -61467,7 +61467,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -61498,7 +61498,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -61520,7 +61520,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -61551,7 +61551,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -61573,7 +61573,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -61604,7 +61604,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -61626,7 +61626,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -61657,7 +61657,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -61679,7 +61679,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -61710,7 +61710,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -61733,7 +61733,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -61764,7 +61764,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -61787,7 +61787,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -61818,7 +61818,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -61841,7 +61841,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -61872,7 +61872,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -61895,7 +61895,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -61926,7 +61926,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -61949,7 +61949,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -61980,7 +61980,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -62003,7 +62003,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -62034,7 +62034,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -62057,7 +62057,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -62088,7 +62088,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -62111,7 +62111,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -62142,7 +62142,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -62165,7 +62165,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -62196,7 +62196,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -62219,7 +62219,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -62250,7 +62250,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -62273,7 +62273,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -62304,7 +62304,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -62327,7 +62327,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -62358,7 +62358,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -62381,7 +62381,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -62412,7 +62412,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -62435,7 +62435,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -62466,7 +62466,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -62489,7 +62489,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -62520,7 +62520,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -62543,7 +62543,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -62574,7 +62574,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -62597,7 +62597,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -62628,7 +62628,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -62651,7 +62651,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -62682,7 +62682,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -62704,7 +62704,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -62735,7 +62735,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -62757,7 +62757,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -62788,7 +62788,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -62810,7 +62810,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -62841,7 +62841,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -62863,7 +62863,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -62894,7 +62894,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -62916,7 +62916,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -62947,7 +62947,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -62969,7 +62969,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -63000,7 +63000,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -63023,7 +63023,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -63054,7 +63054,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -63077,7 +63077,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -63108,7 +63108,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -63131,7 +63131,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -63162,7 +63162,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -63185,7 +63185,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -63216,7 +63216,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -63239,7 +63239,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -63270,7 +63270,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -63293,7 +63293,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -63323,7 +63323,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -63345,7 +63345,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -63375,7 +63375,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -63397,7 +63397,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -63427,7 +63427,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -63449,7 +63449,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -63479,7 +63479,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -63501,7 +63501,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -63531,7 +63531,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -63553,7 +63553,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -63583,7 +63583,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -63605,7 +63605,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -63635,7 +63635,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -63657,7 +63657,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -63687,7 +63687,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -63709,7 +63709,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -63740,7 +63740,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -63762,7 +63762,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -63793,7 +63793,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -63815,7 +63815,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -63846,7 +63846,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -63868,7 +63868,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -63899,7 +63899,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -63921,7 +63921,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -63952,7 +63952,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -63974,7 +63974,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -64005,7 +64005,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -64027,7 +64027,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_components_unittests",
@@ -64057,7 +64057,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -64079,7 +64079,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_components_unittests",
@@ -64109,7 +64109,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -64131,7 +64131,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_net_unittests",
@@ -64161,7 +64161,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -64184,7 +64184,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_net_unittests",
@@ -64214,7 +64214,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -64237,7 +64237,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_remoting_unittests",
@@ -64267,7 +64267,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -64289,7 +64289,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_remoting_unittests",
@@ -64319,7 +64319,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -64341,7 +64341,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -64372,7 +64372,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -64394,7 +64394,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -64425,7 +64425,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -64447,7 +64447,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -64478,7 +64478,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -64500,7 +64500,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -64531,7 +64531,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -64553,7 +64553,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -64584,7 +64584,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -64606,7 +64606,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -64637,7 +64637,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -64659,7 +64659,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -64690,7 +64690,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -64712,7 +64712,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -64743,7 +64743,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -64765,7 +64765,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_testing_unittests",
@@ -64795,7 +64795,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -64817,7 +64817,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_testing_unittests",
@@ -64847,7 +64847,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -64869,7 +64869,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -64899,7 +64899,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -64921,7 +64921,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -64951,7 +64951,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -64973,7 +64973,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -65003,7 +65003,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -65025,7 +65025,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -65055,7 +65055,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -65077,7 +65077,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -65107,7 +65107,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -65129,7 +65129,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -65159,7 +65159,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -65181,7 +65181,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -65211,7 +65211,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -65233,7 +65233,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -65263,7 +65263,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -65285,7 +65285,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -65316,7 +65316,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -65338,7 +65338,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -65369,7 +65369,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -65391,7 +65391,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -65422,7 +65422,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -65444,7 +65444,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -65475,7 +65475,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -65497,7 +65497,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -65528,7 +65528,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -65550,7 +65550,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -65581,7 +65581,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -65603,7 +65603,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -65633,7 +65633,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -65655,7 +65655,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -65685,7 +65685,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -65707,7 +65707,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -65737,7 +65737,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -65759,7 +65759,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -65789,7 +65789,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -65811,7 +65811,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -65841,7 +65841,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -65863,7 +65863,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -65893,7 +65893,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -65915,7 +65915,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -65945,7 +65945,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -65967,7 +65967,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -65997,7 +65997,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -66019,7 +66019,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -66049,7 +66049,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -66071,7 +66071,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -66101,7 +66101,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -66123,7 +66123,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -66153,7 +66153,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -66175,7 +66175,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -66205,7 +66205,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -66227,7 +66227,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -66257,7 +66257,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -66279,7 +66279,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -66309,7 +66309,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -66331,7 +66331,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -66361,7 +66361,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -66383,7 +66383,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -66413,7 +66413,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -66435,7 +66435,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -66465,7 +66465,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -66487,7 +66487,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -66517,7 +66517,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -66539,7 +66539,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -66569,7 +66569,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -66591,7 +66591,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -66621,7 +66621,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -66643,7 +66643,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -66673,7 +66673,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -66695,7 +66695,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -66725,7 +66725,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -66747,7 +66747,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -66777,7 +66777,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -66799,7 +66799,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -66829,7 +66829,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -66851,7 +66851,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "net_unittests",
@@ -66881,7 +66881,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -66903,7 +66903,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "net_unittests",
@@ -66933,7 +66933,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -66955,7 +66955,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "services_unittests",
@@ -66985,7 +66985,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -67007,7 +67007,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "services_unittests",
@@ -67037,7 +67037,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -67059,7 +67059,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -67089,7 +67089,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -67111,7 +67111,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -67141,7 +67141,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -67163,7 +67163,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -67193,7 +67193,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -67215,7 +67215,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -67245,7 +67245,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -67267,7 +67267,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -67297,7 +67297,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -67319,7 +67319,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -67349,7 +67349,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -67371,7 +67371,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -67401,7 +67401,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -67423,7 +67423,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -67453,7 +67453,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -67475,7 +67475,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "sql_unittests",
@@ -67505,7 +67505,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -67527,7 +67527,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "sql_unittests",
@@ -67557,7 +67557,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -67579,7 +67579,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -67609,7 +67609,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -67631,7 +67631,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -67661,7 +67661,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -67683,7 +67683,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -67713,7 +67713,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -67735,7 +67735,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -67765,7 +67765,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -67787,7 +67787,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -67817,7 +67817,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -67839,7 +67839,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -67869,7 +67869,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -67891,7 +67891,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -67921,7 +67921,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -67943,7 +67943,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -67973,7 +67973,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -67995,7 +67995,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "url_unittests",
@@ -68025,7 +68025,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -68047,7 +68047,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "url_unittests",
@@ -68077,7 +68077,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -68111,7 +68111,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "absl_hardening_tests",
@@ -68141,7 +68141,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -68163,7 +68163,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "absl_hardening_tests",
@@ -68193,7 +68193,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -68215,7 +68215,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -68245,7 +68245,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -68267,7 +68267,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -68297,7 +68297,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -68319,7 +68319,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -68349,7 +68349,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -68371,7 +68371,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -68401,7 +68401,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -68423,7 +68423,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -68453,7 +68453,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -68475,7 +68475,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -68505,7 +68505,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -68527,7 +68527,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -68557,7 +68557,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -68579,7 +68579,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -68609,7 +68609,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -68631,7 +68631,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "boringssl_crypto_tests",
@@ -68661,7 +68661,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -68683,7 +68683,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "boringssl_crypto_tests",
@@ -68713,7 +68713,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -68735,7 +68735,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "boringssl_ssl_tests",
@@ -68765,7 +68765,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -68787,7 +68787,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "boringssl_ssl_tests",
@@ -68817,7 +68817,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -68839,7 +68839,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -68869,7 +68869,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -68891,7 +68891,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -68921,7 +68921,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -68943,7 +68943,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -68973,7 +68973,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -68995,7 +68995,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -69025,7 +69025,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -69047,7 +69047,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -69077,7 +69077,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -69099,7 +69099,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -69129,7 +69129,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -69151,7 +69151,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -69181,7 +69181,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -69203,7 +69203,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -69233,7 +69233,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -69255,7 +69255,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "crashpad_tests",
@@ -69285,7 +69285,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -69307,7 +69307,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "crashpad_tests",
@@ -69337,7 +69337,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -69359,7 +69359,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "crypto_unittests",
@@ -69389,7 +69389,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -69411,7 +69411,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "crypto_unittests",
@@ -69441,7 +69441,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -69463,7 +69463,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -69493,7 +69493,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -69515,7 +69515,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -69545,7 +69545,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -69567,7 +69567,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -69597,7 +69597,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -69619,7 +69619,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -69649,7 +69649,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -69671,7 +69671,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -69701,7 +69701,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -69723,7 +69723,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -69753,7 +69753,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -69775,7 +69775,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -69805,7 +69805,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -69827,7 +69827,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -69857,7 +69857,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -69879,7 +69879,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "google_apis_unittests",
@@ -69909,7 +69909,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -69931,7 +69931,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "google_apis_unittests",
@@ -69961,7 +69961,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -69983,7 +69983,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -70014,7 +70014,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -70036,7 +70036,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -70067,7 +70067,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -70089,7 +70089,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -70120,7 +70120,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -70142,7 +70142,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -70173,7 +70173,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -70195,7 +70195,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -70226,7 +70226,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -70248,7 +70248,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -70279,7 +70279,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -70301,7 +70301,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -70332,7 +70332,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -70355,7 +70355,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -70386,7 +70386,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -70409,7 +70409,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -70440,7 +70440,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -70463,7 +70463,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -70494,7 +70494,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -70517,7 +70517,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -70548,7 +70548,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -70571,7 +70571,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -70602,7 +70602,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -70625,7 +70625,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -70656,7 +70656,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -70679,7 +70679,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -70710,7 +70710,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -70733,7 +70733,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -70764,7 +70764,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -70787,7 +70787,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -70818,7 +70818,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -70841,7 +70841,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -70872,7 +70872,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -70895,7 +70895,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -70926,7 +70926,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -70949,7 +70949,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -70980,7 +70980,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -71003,7 +71003,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -71034,7 +71034,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -71057,7 +71057,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -71088,7 +71088,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -71111,7 +71111,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -71142,7 +71142,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -71165,7 +71165,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -71196,7 +71196,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -71219,7 +71219,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -71250,7 +71250,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -71273,7 +71273,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -71304,7 +71304,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -71326,7 +71326,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -71357,7 +71357,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -71379,7 +71379,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -71410,7 +71410,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -71432,7 +71432,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -71463,7 +71463,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -71485,7 +71485,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -71516,7 +71516,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -71538,7 +71538,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -71569,7 +71569,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -71591,7 +71591,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -71622,7 +71622,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -71645,7 +71645,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -71676,7 +71676,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -71699,7 +71699,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -71730,7 +71730,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -71753,7 +71753,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -71784,7 +71784,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -71807,7 +71807,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -71838,7 +71838,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -71861,7 +71861,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -71892,7 +71892,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -71915,7 +71915,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -71945,7 +71945,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -71967,7 +71967,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -71997,7 +71997,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -72019,7 +72019,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -72049,7 +72049,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -72071,7 +72071,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -72101,7 +72101,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -72123,7 +72123,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -72153,7 +72153,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -72175,7 +72175,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -72205,7 +72205,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -72227,7 +72227,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -72257,7 +72257,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -72279,7 +72279,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -72309,7 +72309,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -72331,7 +72331,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -72362,7 +72362,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -72384,7 +72384,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -72415,7 +72415,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -72437,7 +72437,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -72468,7 +72468,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -72490,7 +72490,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -72521,7 +72521,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -72543,7 +72543,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -72574,7 +72574,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -72596,7 +72596,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -72627,7 +72627,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -72649,7 +72649,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_components_unittests",
@@ -72679,7 +72679,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -72701,7 +72701,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_components_unittests",
@@ -72731,7 +72731,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -72753,7 +72753,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_net_unittests",
@@ -72783,7 +72783,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -72806,7 +72806,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_net_unittests",
@@ -72836,7 +72836,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -72859,7 +72859,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_remoting_unittests",
@@ -72889,7 +72889,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -72911,7 +72911,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_remoting_unittests",
@@ -72941,7 +72941,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -72963,7 +72963,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -72994,7 +72994,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -73016,7 +73016,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -73047,7 +73047,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -73069,7 +73069,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -73100,7 +73100,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -73122,7 +73122,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -73153,7 +73153,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -73175,7 +73175,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -73206,7 +73206,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -73228,7 +73228,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -73259,7 +73259,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -73281,7 +73281,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_testing_unittests",
@@ -73311,7 +73311,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -73333,7 +73333,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_testing_unittests",
@@ -73363,7 +73363,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -73385,7 +73385,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -73415,7 +73415,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -73437,7 +73437,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -73467,7 +73467,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -73489,7 +73489,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -73519,7 +73519,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -73541,7 +73541,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -73571,7 +73571,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -73593,7 +73593,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -73623,7 +73623,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -73645,7 +73645,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -73675,7 +73675,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -73697,7 +73697,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -73727,7 +73727,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -73749,7 +73749,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -73779,7 +73779,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -73801,7 +73801,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -73832,7 +73832,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -73854,7 +73854,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -73885,7 +73885,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -73907,7 +73907,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -73938,7 +73938,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -73960,7 +73960,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -73991,7 +73991,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -74013,7 +74013,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -74044,7 +74044,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -74066,7 +74066,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -74097,7 +74097,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -74119,7 +74119,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -74149,7 +74149,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -74171,7 +74171,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -74201,7 +74201,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -74223,7 +74223,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -74253,7 +74253,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -74275,7 +74275,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -74305,7 +74305,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -74327,7 +74327,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -74357,7 +74357,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -74379,7 +74379,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -74409,7 +74409,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -74431,7 +74431,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -74461,7 +74461,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -74483,7 +74483,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -74513,7 +74513,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -74535,7 +74535,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -74565,7 +74565,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -74587,7 +74587,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -74617,7 +74617,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -74639,7 +74639,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -74669,7 +74669,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -74691,7 +74691,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -74721,7 +74721,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -74743,7 +74743,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -74773,7 +74773,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -74795,7 +74795,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -74825,7 +74825,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -74847,7 +74847,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -74877,7 +74877,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -74899,7 +74899,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -74929,7 +74929,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -74951,7 +74951,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -74981,7 +74981,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -75003,7 +75003,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -75033,7 +75033,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -75055,7 +75055,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -75085,7 +75085,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -75107,7 +75107,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -75137,7 +75137,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -75159,7 +75159,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -75189,7 +75189,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -75211,7 +75211,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -75241,7 +75241,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -75263,7 +75263,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -75293,7 +75293,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -75315,7 +75315,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -75345,7 +75345,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -75367,7 +75367,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "net_unittests",
@@ -75397,7 +75397,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -75419,7 +75419,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "net_unittests",
@@ -75449,7 +75449,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -75471,7 +75471,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "services_unittests",
@@ -75501,7 +75501,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -75523,7 +75523,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "services_unittests",
@@ -75553,7 +75553,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -75575,7 +75575,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -75605,7 +75605,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -75627,7 +75627,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -75657,7 +75657,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -75679,7 +75679,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -75709,7 +75709,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -75731,7 +75731,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -75761,7 +75761,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -75783,7 +75783,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -75813,7 +75813,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -75835,7 +75835,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -75865,7 +75865,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -75887,7 +75887,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -75917,7 +75917,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -75939,7 +75939,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -75969,7 +75969,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -75991,7 +75991,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "sql_unittests",
@@ -76021,7 +76021,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -76043,7 +76043,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "sql_unittests",
@@ -76073,7 +76073,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -76095,7 +76095,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -76125,7 +76125,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -76147,7 +76147,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -76177,7 +76177,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -76199,7 +76199,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -76229,7 +76229,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -76251,7 +76251,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -76281,7 +76281,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -76303,7 +76303,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -76333,7 +76333,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -76355,7 +76355,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -76385,7 +76385,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -76407,7 +76407,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -76437,7 +76437,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -76459,7 +76459,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -76489,7 +76489,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -76511,7 +76511,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "url_unittests",
@@ -76541,7 +76541,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -76563,7 +76563,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "url_unittests",
@@ -76593,7 +76593,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
diff --git a/testing/buildbot/chromium.mac.json b/testing/buildbot/chromium.mac.json
index 3e15c8d..de9ab7d 100644
--- a/testing/buildbot/chromium.mac.json
+++ b/testing/buildbot/chromium.mac.json
@@ -10979,7 +10979,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "absl_hardening_tests",
@@ -11011,7 +11011,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -11033,7 +11033,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -11065,7 +11065,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -11087,7 +11087,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -11119,7 +11119,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -11141,7 +11141,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -11173,7 +11173,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -11195,7 +11195,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -11227,7 +11227,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -11249,7 +11249,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "boringssl_crypto_tests",
@@ -11281,7 +11281,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -11303,7 +11303,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "boringssl_ssl_tests",
@@ -11335,7 +11335,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -11357,7 +11357,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -11389,7 +11389,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -11411,7 +11411,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -11443,7 +11443,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -11465,7 +11465,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -11497,7 +11497,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -11519,7 +11519,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -11551,7 +11551,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -11573,7 +11573,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "crashpad_tests",
@@ -11605,7 +11605,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -11627,7 +11627,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "crypto_unittests",
@@ -11659,7 +11659,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -11681,7 +11681,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -11713,7 +11713,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -11735,7 +11735,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -11767,7 +11767,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -11789,7 +11789,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -11821,7 +11821,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -11843,7 +11843,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -11875,7 +11875,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -11897,7 +11897,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "google_apis_unittests",
@@ -11929,7 +11929,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -11951,7 +11951,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -11984,7 +11984,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -12007,7 +12007,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -12040,7 +12040,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -12063,7 +12063,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -12096,7 +12096,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -12119,7 +12119,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -12151,7 +12151,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -12173,7 +12173,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -12205,7 +12205,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -12227,7 +12227,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -12259,7 +12259,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -12281,7 +12281,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -12313,7 +12313,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -12335,7 +12335,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_components_unittests",
@@ -12367,7 +12367,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -12389,7 +12389,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_net_unittests",
@@ -12421,7 +12421,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -12444,7 +12444,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_remoting_unittests",
@@ -12476,7 +12476,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -12498,7 +12498,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_testing_unittests",
@@ -12530,7 +12530,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -12552,7 +12552,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -12584,7 +12584,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -12606,7 +12606,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -12638,7 +12638,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -12660,7 +12660,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -12692,7 +12692,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -12714,7 +12714,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -12746,7 +12746,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -12768,7 +12768,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -12801,7 +12801,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -12823,7 +12823,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -12855,7 +12855,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -12877,7 +12877,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -12909,7 +12909,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -12931,7 +12931,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -12963,7 +12963,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -12985,7 +12985,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -13017,7 +13017,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -13039,7 +13039,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -13071,7 +13071,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -13093,7 +13093,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -13125,7 +13125,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -13147,7 +13147,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -13179,7 +13179,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -13201,7 +13201,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -13233,7 +13233,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -13255,7 +13255,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -13287,7 +13287,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -13309,7 +13309,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -13341,7 +13341,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -13363,7 +13363,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -13395,7 +13395,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -13417,7 +13417,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -13449,7 +13449,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -13471,7 +13471,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "net_unittests",
@@ -13503,7 +13503,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -13525,7 +13525,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "services_unittests",
@@ -13557,7 +13557,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -13579,7 +13579,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -13611,7 +13611,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -13633,7 +13633,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -13665,7 +13665,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -13687,7 +13687,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -13719,7 +13719,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -13741,7 +13741,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -13773,7 +13773,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -13795,7 +13795,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "sql_unittests",
@@ -13827,7 +13827,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -13849,7 +13849,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -13881,7 +13881,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -13903,7 +13903,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -13935,7 +13935,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -13957,7 +13957,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -13989,7 +13989,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -14011,7 +14011,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -14043,7 +14043,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -14065,7 +14065,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "url_unittests",
@@ -14097,7 +14097,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -14126,7 +14126,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "absl_hardening_tests",
@@ -14157,7 +14157,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -14179,7 +14179,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -14210,7 +14210,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -14232,7 +14232,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -14263,7 +14263,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -14285,7 +14285,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -14316,7 +14316,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -14338,7 +14338,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -14369,7 +14369,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -14391,7 +14391,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "boringssl_crypto_tests",
@@ -14422,7 +14422,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -14444,7 +14444,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "boringssl_ssl_tests",
@@ -14475,7 +14475,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -14497,7 +14497,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -14528,7 +14528,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -14550,7 +14550,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -14581,7 +14581,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -14603,7 +14603,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -14634,7 +14634,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -14656,7 +14656,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -14687,7 +14687,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -14709,7 +14709,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "crashpad_tests",
@@ -14740,7 +14740,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -14762,7 +14762,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "crypto_unittests",
@@ -14793,7 +14793,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -14815,7 +14815,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -14846,7 +14846,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -14868,7 +14868,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -14899,7 +14899,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -14921,7 +14921,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -14952,7 +14952,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -14974,7 +14974,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -15005,7 +15005,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -15027,7 +15027,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "google_apis_unittests",
@@ -15058,7 +15058,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -15080,7 +15080,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -15112,7 +15112,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -15134,7 +15134,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -15166,7 +15166,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -15188,7 +15188,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -15220,7 +15220,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -15242,7 +15242,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -15274,7 +15274,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -15296,7 +15296,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -15328,7 +15328,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -15350,7 +15350,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -15382,7 +15382,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -15404,7 +15404,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -15436,7 +15436,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -15459,7 +15459,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -15491,7 +15491,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -15514,7 +15514,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -15546,7 +15546,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -15569,7 +15569,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -15601,7 +15601,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -15624,7 +15624,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -15656,7 +15656,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -15679,7 +15679,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -15711,7 +15711,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -15734,7 +15734,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -15766,7 +15766,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -15789,7 +15789,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -15821,7 +15821,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -15844,7 +15844,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -15876,7 +15876,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -15899,7 +15899,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -15931,7 +15931,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -15954,7 +15954,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -15986,7 +15986,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -16009,7 +16009,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -16041,7 +16041,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -16064,7 +16064,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -16096,7 +16096,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -16119,7 +16119,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -16151,7 +16151,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -16174,7 +16174,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -16206,7 +16206,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -16229,7 +16229,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -16261,7 +16261,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -16284,7 +16284,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -16316,7 +16316,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -16338,7 +16338,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -16370,7 +16370,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -16392,7 +16392,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -16424,7 +16424,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -16446,7 +16446,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -16478,7 +16478,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -16500,7 +16500,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -16532,7 +16532,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -16554,7 +16554,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -16586,7 +16586,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -16608,7 +16608,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -16640,7 +16640,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -16663,7 +16663,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -16695,7 +16695,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -16718,7 +16718,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -16750,7 +16750,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -16773,7 +16773,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -16805,7 +16805,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -16828,7 +16828,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -16860,7 +16860,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -16883,7 +16883,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -16914,7 +16914,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -16936,7 +16936,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -16967,7 +16967,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -16989,7 +16989,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -17020,7 +17020,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -17042,7 +17042,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -17073,7 +17073,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -17095,7 +17095,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -17127,7 +17127,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -17149,7 +17149,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -17181,7 +17181,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -17203,7 +17203,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -17235,7 +17235,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -17257,7 +17257,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -17289,7 +17289,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -17311,7 +17311,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -17343,7 +17343,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -17365,7 +17365,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -17397,7 +17397,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -17419,7 +17419,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_components_unittests",
@@ -17450,7 +17450,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -17472,7 +17472,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_net_unittests",
@@ -17503,7 +17503,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -17526,7 +17526,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_remoting_unittests",
@@ -17557,7 +17557,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -17579,7 +17579,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -17611,7 +17611,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -17633,7 +17633,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -17665,7 +17665,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -17687,7 +17687,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -17719,7 +17719,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -17741,7 +17741,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -17773,7 +17773,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -17795,7 +17795,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -17827,7 +17827,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -17849,7 +17849,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -17881,7 +17881,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -17903,7 +17903,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_testing_unittests",
@@ -17934,7 +17934,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -17956,7 +17956,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -17987,7 +17987,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -18009,7 +18009,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -18040,7 +18040,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -18062,7 +18062,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -18093,7 +18093,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -18115,7 +18115,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -18146,7 +18146,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -18168,7 +18168,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -18200,7 +18200,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -18222,7 +18222,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -18254,7 +18254,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -18276,7 +18276,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -18308,7 +18308,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -18330,7 +18330,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -18362,7 +18362,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -18384,7 +18384,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -18416,7 +18416,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -18438,7 +18438,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -18469,7 +18469,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -18491,7 +18491,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -18522,7 +18522,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -18544,7 +18544,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -18575,7 +18575,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -18597,7 +18597,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -18628,7 +18628,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -18650,7 +18650,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -18681,7 +18681,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -18703,7 +18703,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -18734,7 +18734,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -18756,7 +18756,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -18787,7 +18787,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -18809,7 +18809,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -18840,7 +18840,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -18862,7 +18862,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -18893,7 +18893,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -18915,7 +18915,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -18946,7 +18946,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -18968,7 +18968,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -18999,7 +18999,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -19021,7 +19021,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -19052,7 +19052,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -19074,7 +19074,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "net_unittests",
@@ -19105,7 +19105,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -19127,7 +19127,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "services_unittests",
@@ -19158,7 +19158,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -19180,7 +19180,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -19211,7 +19211,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -19233,7 +19233,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -19264,7 +19264,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -19286,7 +19286,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -19317,7 +19317,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -19339,7 +19339,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -19370,7 +19370,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -19392,7 +19392,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "sql_unittests",
@@ -19423,7 +19423,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -19445,7 +19445,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -19476,7 +19476,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -19498,7 +19498,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -19529,7 +19529,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -19551,7 +19551,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -19582,7 +19582,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -19604,7 +19604,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -19635,7 +19635,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -19657,7 +19657,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "url_unittests",
@@ -19688,7 +19688,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -19717,7 +19717,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "absl_hardening_tests",
@@ -19747,7 +19747,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -19769,7 +19769,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -19799,7 +19799,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -19821,7 +19821,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -19851,7 +19851,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -19873,7 +19873,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -19903,7 +19903,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -19925,7 +19925,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -19955,7 +19955,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -19977,7 +19977,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "boringssl_crypto_tests",
@@ -20007,7 +20007,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -20029,7 +20029,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "boringssl_ssl_tests",
@@ -20059,7 +20059,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -20081,7 +20081,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -20111,7 +20111,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -20133,7 +20133,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -20163,7 +20163,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -20185,7 +20185,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -20215,7 +20215,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -20237,7 +20237,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -20267,7 +20267,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -20289,7 +20289,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "crashpad_tests",
@@ -20319,7 +20319,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -20341,7 +20341,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "crypto_unittests",
@@ -20371,7 +20371,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -20393,7 +20393,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -20423,7 +20423,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -20445,7 +20445,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -20475,7 +20475,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -20497,7 +20497,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -20527,7 +20527,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -20549,7 +20549,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -20579,7 +20579,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -20601,7 +20601,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "google_apis_unittests",
@@ -20631,7 +20631,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -20653,7 +20653,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -20684,7 +20684,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -20706,7 +20706,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -20737,7 +20737,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -20759,7 +20759,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -20790,7 +20790,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -20812,7 +20812,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -20843,7 +20843,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -20865,7 +20865,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -20896,7 +20896,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -20919,7 +20919,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -20950,7 +20950,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -20973,7 +20973,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -21004,7 +21004,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -21027,7 +21027,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -21058,7 +21058,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -21081,7 +21081,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -21112,7 +21112,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -21135,7 +21135,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -21166,7 +21166,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -21189,7 +21189,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -21220,7 +21220,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -21243,7 +21243,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -21274,7 +21274,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -21297,7 +21297,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -21328,7 +21328,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -21351,7 +21351,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -21382,7 +21382,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -21405,7 +21405,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -21436,7 +21436,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -21459,7 +21459,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -21490,7 +21490,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -21513,7 +21513,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -21544,7 +21544,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -21567,7 +21567,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -21598,7 +21598,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -21621,7 +21621,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -21652,7 +21652,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -21674,7 +21674,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -21705,7 +21705,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -21727,7 +21727,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -21758,7 +21758,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -21780,7 +21780,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -21811,7 +21811,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -21833,7 +21833,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -21864,7 +21864,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -21887,7 +21887,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -21918,7 +21918,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -21941,7 +21941,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -21972,7 +21972,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -21995,7 +21995,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -22026,7 +22026,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -22049,7 +22049,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -22080,7 +22080,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -22103,7 +22103,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -22133,7 +22133,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -22155,7 +22155,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -22185,7 +22185,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -22207,7 +22207,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -22237,7 +22237,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -22259,7 +22259,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -22289,7 +22289,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -22311,7 +22311,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -22342,7 +22342,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -22364,7 +22364,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -22395,7 +22395,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -22417,7 +22417,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -22448,7 +22448,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -22470,7 +22470,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -22501,7 +22501,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -22523,7 +22523,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_components_unittests",
@@ -22553,7 +22553,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -22575,7 +22575,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -22606,7 +22606,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -22628,7 +22628,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -22659,7 +22659,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -22681,7 +22681,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_net_unittests",
@@ -22711,7 +22711,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -22734,7 +22734,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_remoting_unittests",
@@ -22764,7 +22764,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -22786,7 +22786,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -22817,7 +22817,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -22839,7 +22839,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -22870,7 +22870,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -22892,7 +22892,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -22923,7 +22923,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -22945,7 +22945,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -22976,7 +22976,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -22998,7 +22998,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_testing_unittests",
@@ -23028,7 +23028,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -23050,7 +23050,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -23080,7 +23080,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -23102,7 +23102,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -23132,7 +23132,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -23154,7 +23154,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -23184,7 +23184,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -23206,7 +23206,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -23236,7 +23236,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -23258,7 +23258,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -23289,7 +23289,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -23311,7 +23311,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -23342,7 +23342,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -23364,7 +23364,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -23395,7 +23395,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -23417,7 +23417,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -23448,7 +23448,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -23470,7 +23470,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest",
           "--xcode-parallelization"
         ],
@@ -23501,7 +23501,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -23523,7 +23523,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -23553,7 +23553,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -23575,7 +23575,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -23605,7 +23605,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -23627,7 +23627,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -23657,7 +23657,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -23679,7 +23679,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -23709,7 +23709,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -23731,7 +23731,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -23761,7 +23761,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -23783,7 +23783,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -23813,7 +23813,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -23835,7 +23835,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -23865,7 +23865,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -23887,7 +23887,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -23917,7 +23917,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -23939,7 +23939,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -23969,7 +23969,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -23991,7 +23991,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -24021,7 +24021,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -24043,7 +24043,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -24073,7 +24073,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -24095,7 +24095,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -24125,7 +24125,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -24147,7 +24147,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "net_unittests",
@@ -24177,7 +24177,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -24199,7 +24199,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "services_unittests",
@@ -24229,7 +24229,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -24251,7 +24251,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -24281,7 +24281,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -24303,7 +24303,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -24333,7 +24333,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -24355,7 +24355,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -24385,7 +24385,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -24407,7 +24407,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -24437,7 +24437,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -24459,7 +24459,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "sql_unittests",
@@ -24489,7 +24489,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -24511,7 +24511,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -24541,7 +24541,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -24563,7 +24563,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -24593,7 +24593,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -24615,7 +24615,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -24645,7 +24645,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -24667,7 +24667,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -24697,7 +24697,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -24719,7 +24719,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "url_unittests",
@@ -24749,7 +24749,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
diff --git a/testing/buildbot/chromium.memory.json b/testing/buildbot/chromium.memory.json
index 7b5944e8..680dc015 100644
--- a/testing/buildbot/chromium.memory.json
+++ b/testing/buildbot/chromium.memory.json
@@ -17530,7 +17530,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "absl_hardening_tests",
@@ -17560,7 +17560,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -17582,7 +17582,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "absl_hardening_tests",
@@ -17612,7 +17612,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -17634,7 +17634,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -17664,7 +17664,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -17686,7 +17686,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "base_unittests",
@@ -17716,7 +17716,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -17738,7 +17738,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "boringssl_crypto_tests",
@@ -17768,7 +17768,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -17790,7 +17790,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "boringssl_crypto_tests",
@@ -17820,7 +17820,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -17842,7 +17842,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "boringssl_ssl_tests",
@@ -17872,7 +17872,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -17894,7 +17894,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "boringssl_ssl_tests",
@@ -17924,7 +17924,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -17946,7 +17946,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -17976,7 +17976,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -17998,7 +17998,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "components_unittests",
@@ -18028,7 +18028,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -18050,7 +18050,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "crashpad_tests",
@@ -18080,7 +18080,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -18102,7 +18102,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "crashpad_tests",
@@ -18132,7 +18132,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -18154,7 +18154,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "crypto_unittests",
@@ -18184,7 +18184,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -18206,7 +18206,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "crypto_unittests",
@@ -18236,7 +18236,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -18258,7 +18258,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -18288,7 +18288,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -18310,7 +18310,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "gfx_unittests",
@@ -18340,7 +18340,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -18362,7 +18362,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "google_apis_unittests",
@@ -18392,7 +18392,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -18414,7 +18414,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "google_apis_unittests",
@@ -18444,7 +18444,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -18466,7 +18466,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -18496,7 +18496,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -18518,7 +18518,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_chrome_unittests",
@@ -18548,7 +18548,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -18570,7 +18570,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_components_unittests",
@@ -18600,7 +18600,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -18622,7 +18622,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_components_unittests",
@@ -18652,7 +18652,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -18674,7 +18674,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_net_unittests",
@@ -18704,7 +18704,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -18727,7 +18727,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_net_unittests",
@@ -18757,7 +18757,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -18780,7 +18780,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_remoting_unittests",
@@ -18810,7 +18810,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -18832,7 +18832,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_remoting_unittests",
@@ -18862,7 +18862,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -18884,7 +18884,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_testing_unittests",
@@ -18914,7 +18914,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -18936,7 +18936,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_testing_unittests",
@@ -18966,7 +18966,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -18988,7 +18988,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -19018,7 +19018,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -19040,7 +19040,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_inttests",
@@ -19070,7 +19070,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -19092,7 +19092,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -19122,7 +19122,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -19144,7 +19144,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_unittests",
@@ -19174,7 +19174,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -19196,7 +19196,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -19226,7 +19226,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -19248,7 +19248,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_inttests",
@@ -19278,7 +19278,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -19300,7 +19300,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -19330,7 +19330,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -19352,7 +19352,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_web_view_unittests",
@@ -19382,7 +19382,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -19404,7 +19404,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "net_unittests",
@@ -19434,7 +19434,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -19456,7 +19456,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "net_unittests",
@@ -19486,7 +19486,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -19508,7 +19508,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "services_unittests",
@@ -19538,7 +19538,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -19560,7 +19560,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "services_unittests",
@@ -19590,7 +19590,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -19612,7 +19612,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -19642,7 +19642,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -19664,7 +19664,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "skia_unittests",
@@ -19694,7 +19694,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -19716,7 +19716,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "sql_unittests",
@@ -19746,7 +19746,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -19768,7 +19768,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "sql_unittests",
@@ -19798,7 +19798,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -19820,7 +19820,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -19850,7 +19850,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -19872,7 +19872,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ui_base_unittests",
@@ -19902,7 +19902,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -19924,7 +19924,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "url_unittests",
@@ -19954,7 +19954,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -19976,7 +19976,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "url_unittests",
@@ -20006,7 +20006,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
diff --git a/testing/buildbot/chromium.webrtc.fyi.json b/testing/buildbot/chromium.webrtc.fyi.json
index 03b09bc..c9e35c27 100644
--- a/testing/buildbot/chromium.webrtc.fyi.json
+++ b/testing/buildbot/chromium.webrtc.fyi.json
@@ -571,7 +571,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_remoting_unittests",
@@ -601,7 +601,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
@@ -623,7 +623,7 @@
           "--out-dir",
           "${ISOLATED_OUTDIR}",
           "--xcode-build-version",
-          "14a5284g",
+          "14a5294e",
           "--xctest"
         ],
         "isolate_name": "ios_remoting_unittests",
@@ -653,7 +653,7 @@
           ],
           "named_caches": [
             {
-              "name": "xcode_ios_14a5284g",
+              "name": "xcode_ios_14a5294e",
               "path": "Xcode.app"
             },
             {
diff --git a/testing/buildbot/mixins.pyl b/testing/buildbot/mixins.pyl
index b83c659..2e0025e 100644
--- a/testing/buildbot/mixins.pyl
+++ b/testing/buildbot/mixins.pyl
@@ -1387,13 +1387,13 @@
     '$mixin_append': {
       'args': [
         '--xcode-build-version',
-        '14a5284g'
+        '14a5294e'
       ],
     },
     'swarming': {
       'named_caches': [
         {
-          'name': 'xcode_ios_14a5284g',
+          'name': 'xcode_ios_14a5294e',
           'path': 'Xcode.app',
         },
       ],
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json
index a41c521..9d34f08a 100644
--- a/testing/variations/fieldtrial_testing_config.json
+++ b/testing/variations/fieldtrial_testing_config.json
@@ -2328,11 +2328,8 @@
             ],
             "experiments": [
                 {
-                    "name": "Fixed_20220421",
-                    "params": {
-                        "fix_configuring": "true"
-                    },
-                    "enable_features": [
+                    "name": "Disabled_20220715",
+                    "disable_features": [
                         "CacheInlineScriptCode"
                     ]
                 }
@@ -4158,21 +4155,6 @@
             ]
         }
     ],
-    "EnableNewDownloadAPI": [
-        {
-            "platforms": [
-                "ios"
-            ],
-            "experiments": [
-                {
-                    "name": "EnableNewDownloadAPI",
-                    "enable_features": [
-                        "EnableNewDownloadAPI"
-                    ]
-                }
-            ]
-        }
-    ],
     "EnablePDPMetricsUSDesktopIOS": [
         {
             "platforms": [
@@ -6311,6 +6293,26 @@
             ]
         }
     ],
+    "NewSigninRequestHeaderCheckOrder": [
+        {
+            "platforms": [
+                "android",
+                "chromeos",
+                "chromeos_lacros",
+                "linux",
+                "mac",
+                "windows"
+            ],
+            "experiments": [
+                {
+                    "name": "Enabled",
+                    "enable_features": [
+                        "NewSigninRequestHeaderCheckOrder"
+                    ]
+                }
+            ]
+        }
+    ],
     "NoWakeUpsForCanceledTasks": [
         {
             "platforms": [
diff --git a/third_party/blink/renderer/core/animation/css/css_scroll_timeline_test.cc b/third_party/blink/renderer/core/animation/css/css_scroll_timeline_test.cc
index 86d4ea19..e6c313f3 100644
--- a/third_party/blink/renderer/core/animation/css/css_scroll_timeline_test.cc
+++ b/third_party/blink/renderer/core/animation/css/css_scroll_timeline_test.cc
@@ -265,7 +265,7 @@
   //
   // [1] https://drafts.csswg.org/scroll-animations-1/#avoiding-cycles
   // [2] https://github.com/w3c/csswg-drafts/issues/5261
-  EXPECT_EQ(MakeRGB(0, 128, 0),
+  EXPECT_EQ(Color::FromRGB(0, 128, 0),
             element->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 }
diff --git a/third_party/blink/renderer/core/animation/css_color_interpolation_type.cc b/third_party/blink/renderer/core/animation/css_color_interpolation_type.cc
index 39296839..5734f71 100644
--- a/third_party/blink/renderer/core/animation/css_color_interpolation_type.cc
+++ b/third_party/blink/renderer/core/animation/css_color_interpolation_type.cc
@@ -112,10 +112,11 @@
   if (color[kAlpha] == 0)
     return Color::kTransparent;
 
-  return Color(MakeRGBA(ClampTo<int>(std::round(color[kRed] / color[kAlpha])),
-                        ClampTo<int>(std::round(color[kGreen] / color[kAlpha])),
-                        ClampTo<int>(std::round(color[kBlue] / color[kAlpha])),
-                        ClampTo<int>(color[kAlpha])));
+  return Color::FromRGBA(
+      ClampTo<int>(std::round(color[kRed] / color[kAlpha])),
+      ClampTo<int>(std::round(color[kGreen] / color[kAlpha])),
+      ClampTo<int>(std::round(color[kBlue] / color[kAlpha])),
+      ClampTo<int>(color[kAlpha]));
 }
 
 bool CSSColorInterpolationType::IsRGBA(const InterpolableValue& value) {
@@ -211,7 +212,7 @@
   if (alpha == 0)
     return Color::kTransparent;
 
-  return MakeRGBA(
+  return Color::FromRGBA(
       ClampTo<int>(round(red / alpha)), ClampTo<int>(round(green / alpha)),
       ClampTo<int>(round(blue / alpha)), ClampTo<int>(round(alpha)));
 }
diff --git a/third_party/blink/renderer/core/animation/css_color_interpolation_type_test.cc b/third_party/blink/renderer/core/animation/css_color_interpolation_type_test.cc
index cc5d0fd..38450b6f 100644
--- a/third_party/blink/renderer/core/animation/css_color_interpolation_type_test.cc
+++ b/third_party/blink/renderer/core/animation/css_color_interpolation_type_test.cc
@@ -31,7 +31,7 @@
 
 TEST(CSSColorInterpolationTypeTest, GetRGBA4) {
   Color color(35, 140, 10, 0);
-  EXPECT_EQ(Color(MakeRGBA(0, 0, 0, 0)),
+  EXPECT_EQ(Color::FromRGBA(0, 0, 0, 0),
             CSSColorInterpolationType::GetRGBA(
                 *CSSColorInterpolationType::CreateInterpolableColor(color)));
 }
diff --git a/third_party/blink/renderer/core/clipboard/data_transfer_test.cc b/third_party/blink/renderer/core/clipboard/data_transfer_test.cc
index 86d12bc..b9a9615 100644
--- a/third_party/blink/renderer/core/clipboard/data_transfer_test.cc
+++ b/third_party/blink/renderer/core/clipboard/data_transfer_test.cc
@@ -49,7 +49,7 @@
   Element* sample = GetDocument().getElementById("sample");
   const std::unique_ptr<DragImage> image =
       DataTransfer::NodeImage(GetFrame(), *sample);
-  EXPECT_EQ(Color(0, 255, 0),
+  EXPECT_EQ(Color::FromRGB(0, 255, 0),
             sample->firstChild()->GetLayoutObject()->ResolveColor(
                 GetCSSPropertyColor()))
       << "Descendants node should have :-webkit-drag.";
@@ -100,14 +100,14 @@
 
   EXPECT_TRUE(sample->GetLayoutObject() != before_layout_object)
       << ":-webkit-drag causes sample to have different layout object.";
-  EXPECT_EQ(Color(255, 0, 0),
+  EXPECT_EQ(Color::FromRGB(255, 0, 0),
             sample->GetLayoutObject()->ResolveColor(GetCSSPropertyColor()))
       << "#sample has :-webkit-drag.";
 
   // Layout w/o :-webkit-drag
   UpdateAllLifecyclePhasesForTest();
 
-  EXPECT_EQ(Color(0, 0, 255),
+  EXPECT_EQ(Color::FromRGB(0, 0, 255),
             sample->GetLayoutObject()->ResolveColor(GetCSSPropertyColor()))
       << "#sample doesn't have :-webkit-drag.";
 }
@@ -332,11 +332,10 @@
   EXPECT_EQ(gfx::Size(drag_width, drag_height), image->Size());
 
   // The dragged image should be (drag_width x drag_height) and fully green.
-  Color green = 0xFF00FF00;
   const SkBitmap& bitmap = image->Bitmap();
   for (int x = 0; x < drag_width; ++x) {
     for (int y = 0; y < drag_height; ++y)
-      EXPECT_EQ(green, bitmap.getColor(x, y));
+      EXPECT_EQ(SK_ColorGREEN, bitmap.getColor(x, y));
   }
 }
 
@@ -375,11 +374,10 @@
 
   // The dragged image should be (drag_width x drag_height) and fully green
   // which is the color of the #child which fully covers the dragged element.
-  Color green = 0xFF00FF00;
   const SkBitmap& bitmap = image->Bitmap();
   for (int x = 0; x < drag_width; ++x) {
     for (int y = 0; y < drag_height; ++y)
-      EXPECT_EQ(green, bitmap.getColor(x, y));
+      EXPECT_EQ(SK_ColorGREEN, bitmap.getColor(x, y));
   }
 }
 
@@ -393,7 +391,7 @@
   auto image = DataTransfer::NodeImage(GetFrame(),
                                        *GetDocument().getElementById("drag"));
   EXPECT_EQ(gfx::Size(100, 100), image->Size());
-  Color green(0, 0x80, 0);
+  SkColor green = SkColorSetRGB(0, 0x80, 0);
   const SkBitmap& bitmap = image->Bitmap();
   for (int x = 0; x < 100; ++x) {
     for (int y = 0; y < 100; ++y)
@@ -418,12 +416,13 @@
   auto image = DataTransfer::NodeImage(GetFrame(),
                                        *GetDocument().getElementById("drag"));
   EXPECT_EQ(gfx::Size(100, 100), image->Size());
-  Color green(0, 0x80, 0);
-  Color blue(0, 0, 0xFF);
+  SkColor green = SkColorSetRGB(0, 0x80, 0);
+  SkColor blue = SkColorSetRGB(0, 0, 0xFF);
   const SkBitmap& bitmap = image->Bitmap();
   for (int x = 0; x < 100; ++x) {
-    for (int y = 0; y < 50; ++y)
-      ASSERT_EQ(x < 50 ? green : Color::kTransparent, bitmap.getColor(x, y));
+    for (int y = 0; y < 50; ++y) {
+      ASSERT_EQ(x < 50 ? green : SK_ColorTRANSPARENT, bitmap.getColor(x, y));
+    }
     for (int y = 50; y < 100; ++y)
       ASSERT_EQ(blue, bitmap.getColor(x, y));
   }
diff --git a/third_party/blink/renderer/core/css/affected_by_pseudo_test.cc b/third_party/blink/renderer/core/css/affected_by_pseudo_test.cc
index 4e4db5a..f4448a5d 100644
--- a/third_party/blink/renderer/core/css/affected_by_pseudo_test.cc
+++ b/third_party/blink/renderer/core/css/affected_by_pseudo_test.cc
@@ -3058,7 +3058,7 @@
                               {kAncestorsOrAncestorSiblingsAffectedByHas, true},
                               {kSiblingsAffectedByHas, false}});
 
-  EXPECT_EQ(MakeRGB(0, 0, 0),
+  EXPECT_EQ(Color::FromRGB(0, 0, 0),
             GetElementById("div11")->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 
@@ -3068,7 +3068,7 @@
   UpdateAllLifecyclePhasesForTest();
   EXPECT_EQ(1U, GetStyleEngine().StyleForElementCount() - start_count);
 
-  EXPECT_EQ(MakeRGB(0, 0, 0),
+  EXPECT_EQ(Color::FromRGB(0, 0, 0),
             GetElementById("div11")->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 
@@ -3477,7 +3477,7 @@
        {kSiblingsAffectedByHasForSiblingRelationship, false},
        {kSiblingsAffectedByHasForSiblingDescendantRelationship, false}});
 
-  EXPECT_EQ(MakeRGB(0, 0, 0),
+  EXPECT_EQ(Color::FromRGB(0, 0, 0),
             GetElementById("div12")->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 
@@ -3491,7 +3491,7 @@
   UpdateAllLifecyclePhasesForTest();
   EXPECT_EQ(2U, GetStyleEngine().StyleForElementCount() - start_count);
 
-  EXPECT_EQ(MakeRGB(0, 0, 0),
+  EXPECT_EQ(Color::FromRGB(0, 0, 0),
             GetElementById("div12")->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 
@@ -3515,7 +3515,7 @@
   UpdateAllLifecyclePhasesForTest();
   EXPECT_EQ(1U, GetStyleEngine().StyleForElementCount() - start_count);
 
-  EXPECT_EQ(MakeRGB(0, 128, 0),
+  EXPECT_EQ(Color::FromRGB(0, 128, 0),
             GetElementById("div12")->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 
@@ -3837,7 +3837,7 @@
        {kSiblingsAffectedByHasForSiblingRelationship, false},
        {kSiblingsAffectedByHasForSiblingDescendantRelationship, false}});
 
-  EXPECT_EQ(MakeRGB(0, 0, 0),
+  EXPECT_EQ(Color::FromRGB(0, 0, 0),
             GetElementById("div11")->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 
@@ -3855,7 +3855,7 @@
   UpdateAllLifecyclePhasesForTest();
   EXPECT_EQ(5U, GetStyleEngine().StyleForElementCount() - start_count);
 
-  EXPECT_EQ(MakeRGB(0, 128, 0),
+  EXPECT_EQ(Color::FromRGB(0, 128, 0),
             GetElementById("div11")->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 
@@ -4092,7 +4092,7 @@
        {kSiblingsAffectedByHasForSiblingRelationship, false},
        {kSiblingsAffectedByHasForSiblingDescendantRelationship, false}});
 
-  EXPECT_EQ(MakeRGB(0, 0, 0),
+  EXPECT_EQ(Color::FromRGB(0, 0, 0),
             GetElementById("div11")->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 
@@ -4107,7 +4107,7 @@
   UpdateAllLifecyclePhasesForTest();
   EXPECT_EQ(3U, GetStyleEngine().StyleForElementCount() - start_count);
 
-  EXPECT_EQ(MakeRGB(0, 0, 0),
+  EXPECT_EQ(Color::FromRGB(0, 0, 0),
             GetElementById("div11")->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 
@@ -4168,7 +4168,7 @@
                  {kAncestorsOrAncestorSiblingsAffectedByHas, false},
                  {kSiblingsAffectedByHas, false}});
 
-  EXPECT_EQ(MakeRGB(0, 0, 0),
+  EXPECT_EQ(Color::FromRGB(0, 0, 0),
             GetElementById("div22")->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 
@@ -4196,7 +4196,7 @@
        {kSiblingsAffectedByHasForSiblingRelationship, false},
        {kSiblingsAffectedByHasForSiblingDescendantRelationship, false}});
 
-  EXPECT_EQ(MakeRGB(0, 0, 0),
+  EXPECT_EQ(Color::FromRGB(0, 0, 0),
             GetElementById("div22")->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 
@@ -4232,7 +4232,7 @@
        {kSiblingsAffectedByHasForSiblingRelationship, false},
        {kSiblingsAffectedByHasForSiblingDescendantRelationship, false}});
 
-  EXPECT_EQ(MakeRGB(0, 128, 0),
+  EXPECT_EQ(Color::FromRGB(0, 128, 0),
             GetElementById("div22")->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 }
diff --git a/third_party/blink/renderer/core/css/css_color.cc b/third_party/blink/renderer/core/css/css_color.cc
index 2bd5adfe7..bf1b0e7 100644
--- a/third_party/blink/renderer/core/css/css_color.cc
+++ b/third_party/blink/renderer/core/css/css_color.cc
@@ -12,18 +12,20 @@
 
 CSSColor* CSSColor::Create(RGBA32 color) {
   // These are the empty and deleted values of the hash table.
-  if (color == Color::kTransparent)
+  if (Color::FromRGBA32(color) == Color::kTransparent)
     return CssValuePool().TransparentColor();
-  if (color == Color::kWhite)
+  if (Color::FromRGBA32(color) == Color::kWhite)
     return CssValuePool().WhiteColor();
   // Just because it is common.
-  if (color == Color::kBlack)
+  if (Color::FromRGBA32(color) == Color::kBlack)
     return CssValuePool().BlackColor();
 
   CSSValuePool::ColorValueCache::AddResult entry =
       CssValuePool().GetColorCacheEntry(color);
-  if (entry.is_new_entry)
-    entry.stored_value->value = MakeGarbageCollected<CSSColor>(color);
+  if (entry.is_new_entry) {
+    entry.stored_value->value =
+        MakeGarbageCollected<CSSColor>(Color::FromRGBA32(color));
+  }
   return entry.stored_value->value;
 }
 
diff --git a/third_party/blink/renderer/core/css/css_style_sheet_test.cc b/third_party/blink/renderer/core/css/css_style_sheet_test.cc
index a8603c9..6cd104fa 100644
--- a/third_party/blink/renderer/core/css/css_style_sheet_test.cc
+++ b/third_party/blink/renderer/core/css/css_style_sheet_test.cc
@@ -124,7 +124,7 @@
   ASSERT_TRUE(sheet->Contents()->HasRuleSet());
   EXPECT_NE(rule_set, &sheet->Contents()->GetRuleSet());
   EXPECT_EQ(
-      MakeRGB(0, 128, 0),
+      Color::FromRGB(0, 128, 0),
       green->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
   EXPECT_EQ(Color::kBlack, blue->GetComputedStyle()->VisitedDependentColor(
                                GetCSSPropertyColor()));
@@ -142,10 +142,11 @@
   UpdateAllLifecyclePhasesForTest();
 
   EXPECT_EQ(
-      MakeRGB(0, 128, 0),
+      Color::FromRGB(0, 128, 0),
       green->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
-  EXPECT_EQ(MakeRGB(0, 0, 255), blue->GetComputedStyle()->VisitedDependentColor(
-                                    GetCSSPropertyColor()));
+  EXPECT_EQ(
+      Color::FromRGB(0, 0, 255),
+      blue->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
 }
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/css/cssom/css_color_value.cc b/third_party/blink/renderer/core/css/cssom/css_color_value.cc
index 99ce695..843b43c8 100644
--- a/third_party/blink/renderer/core/css/cssom/css_color_value.cc
+++ b/third_party/blink/renderer/core/css/cssom/css_color_value.cc
@@ -157,7 +157,7 @@
       getValueName(To<CSSIdentifierValue>(parsed_value)->GetValueID());
   if (const NamedColor* named_color =
           FindColor(value_name, static_cast<wtf_size_t>(strlen(value_name)))) {
-    Color color(named_color->argb_value);
+    Color color = Color::FromRGBA32(named_color->argb_value);
 
     return MakeGarbageCollected<V8UnionCSSColorValueOrCSSStyleValue>(
         CreateCSSRGBByNumbers(color.Red(), color.Green(), color.Blue(),
diff --git a/third_party/blink/renderer/core/css/cssom/css_hsl.cc b/third_party/blink/renderer/core/css/cssom/css_hsl.cc
index a26bcaf..7e8e2794 100644
--- a/third_party/blink/renderer/core/css/cssom/css_hsl.cc
+++ b/third_party/blink/renderer/core/css/cssom/css_hsl.cc
@@ -109,7 +109,7 @@
 
 Color CSSHSL::ToColor() const {
   // MakeRGBAFromHSLA expects hue in the range [0, 6)
-  return MakeRGBAFromHSLA(
+  return Color::FromHSLA(
       h_->to(CSSPrimitiveValue::UnitType::kDegrees)->value() / 60,
       ComponentToColorInput(s_), ComponentToColorInput(l_),
       ComponentToColorInput(alpha_));
diff --git a/third_party/blink/renderer/core/css/cssom/css_hwb.cc b/third_party/blink/renderer/core/css/cssom/css_hwb.cc
index 5d09e5e5..6a365e55 100644
--- a/third_party/blink/renderer/core/css/cssom/css_hwb.cc
+++ b/third_party/blink/renderer/core/css/cssom/css_hwb.cc
@@ -105,7 +105,7 @@
 
 Color CSSHWB::ToColor() const {
   // MakeRGBAFromHSLA expects hue in the range [0, 6)
-  return MakeRGBAFromHWBA(
+  return Color::FromHWBA(
       h_->to(CSSPrimitiveValue::UnitType::kDegrees)->value() / 60,
       ComponentToColorInput(w_), ComponentToColorInput(b_),
       ComponentToColorInput(alpha_));
diff --git a/third_party/blink/renderer/core/css/properties/css_parsing_utils.cc b/third_party/blink/renderer/core/css/properties/css_parsing_utils.cc
index 3e92165..85f40e1 100644
--- a/third_party/blink/renderer/core/css/properties/css_parsing_utils.cc
+++ b/third_party/blink/renderer/core/css/properties/css_parsing_utils.cc
@@ -1713,8 +1713,8 @@
                                          SK_ColorWHITE) >
                    color_utils::GetContrastRatio(resolved_background_color,
                                                  SK_ColorBLACK)
-               ? MakeGarbageCollected<cssvalue::CSSColor>(SK_ColorWHITE)
-               : MakeGarbageCollected<cssvalue::CSSColor>(SK_ColorBLACK);
+               ? MakeGarbageCollected<cssvalue::CSSColor>(Color::kWhite)
+               : MakeGarbageCollected<cssvalue::CSSColor>(Color::kBlack);
   }
 
   return MakeGarbageCollected<cssvalue::CSSColor>(
diff --git a/third_party/blink/renderer/core/css/style_color.cc b/third_party/blink/renderer/core/css/style_color.cc
index 703e015..26620519 100644
--- a/third_party/blink/renderer/core/css/style_color.cc
+++ b/third_party/blink/renderer/core/css/style_color.cc
@@ -33,7 +33,7 @@
   if (const char* value_name = getValueName(keyword)) {
     if (const NamedColor* named_color =
             FindColor(value_name, static_cast<wtf_size_t>(strlen(value_name))))
-      return Color(named_color->argb_value);
+      return Color::FromRGBA32(named_color->argb_value);
   }
   return LayoutTheme::GetTheme().SystemColor(keyword, color_scheme);
 }
diff --git a/third_party/blink/renderer/core/css/style_color.h b/third_party/blink/renderer/core/css/style_color.h
index 87dae6f..c8db004 100644
--- a/third_party/blink/renderer/core/css/style_color.h
+++ b/third_party/blink/renderer/core/css/style_color.h
@@ -46,8 +46,11 @@
   StyleColor() = default;
   explicit StyleColor(Color color)
       : color_(color), color_keyword_(CSSValueID::kInvalid) {}
+  // TODO(https://crbug.com/1351544): Remove the constructor that takes an
+  // RGBA32.
   explicit StyleColor(RGBA32 color)
-      : color_(color), color_keyword_(CSSValueID::kInvalid) {}
+      : color_(Color::FromRGBA32(color)),
+        color_keyword_(CSSValueID::kInvalid) {}
   explicit StyleColor(CSSValueID keyword) : color_keyword_(keyword) {}
   // We need to store the color and keyword for system colors to be able to
   // distinguish system colors from a normal color. System colors won't be
diff --git a/third_party/blink/renderer/core/css/style_engine_test.cc b/third_party/blink/renderer/core/css/style_engine_test.cc
index e7963e4..15bde67 100644
--- a/third_party/blink/renderer/core/css/style_engine_test.cc
+++ b/third_party/blink/renderer/core/css/style_engine_test.cc
@@ -244,12 +244,15 @@
   ASSERT_TRUE(t1->GetComputedStyle());
   ASSERT_TRUE(t2->GetComputedStyle());
   ASSERT_TRUE(t3->GetComputedStyle());
-  EXPECT_EQ(MakeRGB(255, 0, 0), t1->GetComputedStyle()->VisitedDependentColor(
-                                    GetCSSPropertyColor()));
-  EXPECT_EQ(MakeRGB(0, 0, 0), t2->GetComputedStyle()->VisitedDependentColor(
-                                  GetCSSPropertyColor()));
-  EXPECT_EQ(MakeRGB(0, 0, 0), t3->GetComputedStyle()->VisitedDependentColor(
-                                  GetCSSPropertyColor()));
+  EXPECT_EQ(
+      Color::FromRGB(255, 0, 0),
+      t1->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
+  EXPECT_EQ(
+      Color::FromRGB(0, 0, 0),
+      t2->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
+  EXPECT_EQ(
+      Color::FromRGB(0, 0, 0),
+      t3->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
 
   const unsigned initial_count = GetStyleEngine().StyleForElementCount();
 
@@ -271,13 +274,15 @@
   ASSERT_TRUE(t3->GetComputedStyle());
 
   // Important user rules override both regular and important author rules.
-  EXPECT_EQ(MakeRGB(0, 128, 0), t1->GetComputedStyle()->VisitedDependentColor(
-                                    GetCSSPropertyColor()));
   EXPECT_EQ(
-      MakeRGB(255, 255, 255),
+      Color::FromRGB(0, 128, 0),
+      t1->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
+  EXPECT_EQ(
+      Color::FromRGB(255, 255, 255),
       t2->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
-  EXPECT_EQ(MakeRGB(0, 0, 0), t3->GetComputedStyle()->VisitedDependentColor(
-                                  GetCSSPropertyColor()));
+  EXPECT_EQ(
+      Color::FromRGB(0, 0, 0),
+      t3->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
 
   auto* blue_parsed_sheet = MakeGarbageCollected<StyleSheetContents>(
       MakeGarbageCollected<CSSParserContext>(GetDocument()));
@@ -297,14 +302,15 @@
   ASSERT_TRUE(t3->GetComputedStyle());
 
   // Only important user rules override previously set important user rules.
-  EXPECT_EQ(MakeRGB(0, 0, 255), t1->GetComputedStyle()->VisitedDependentColor(
-                                    GetCSSPropertyColor()));
   EXPECT_EQ(
-      MakeRGB(255, 255, 255),
+      Color::FromRGB(0, 0, 255),
+      t1->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
+  EXPECT_EQ(
+      Color::FromRGB(255, 255, 255),
       t2->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
   // Important user rules override inline author rules.
   EXPECT_EQ(
-      MakeRGB(192, 192, 192),
+      Color::FromRGB(192, 192, 192),
       t3->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
 
   GetStyleEngine().RemoveInjectedSheet(green_key, WebCssOrigin::kUser);
@@ -315,12 +321,14 @@
   ASSERT_TRUE(t3->GetComputedStyle());
 
   // Regular user rules do not override author rules.
-  EXPECT_EQ(MakeRGB(0, 0, 255), t1->GetComputedStyle()->VisitedDependentColor(
-                                    GetCSSPropertyColor()));
-  EXPECT_EQ(MakeRGB(0, 0, 0), t2->GetComputedStyle()->VisitedDependentColor(
-                                  GetCSSPropertyColor()));
   EXPECT_EQ(
-      MakeRGB(192, 192, 192),
+      Color::FromRGB(0, 0, 255),
+      t1->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
+  EXPECT_EQ(
+      Color::FromRGB(0, 0, 0),
+      t2->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
+  EXPECT_EQ(
+      Color::FromRGB(192, 192, 192),
       t3->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
 
   GetStyleEngine().RemoveInjectedSheet(blue_key, WebCssOrigin::kUser);
@@ -329,12 +337,15 @@
   ASSERT_TRUE(t1->GetComputedStyle());
   ASSERT_TRUE(t2->GetComputedStyle());
   ASSERT_TRUE(t3->GetComputedStyle());
-  EXPECT_EQ(MakeRGB(255, 0, 0), t1->GetComputedStyle()->VisitedDependentColor(
-                                    GetCSSPropertyColor()));
-  EXPECT_EQ(MakeRGB(0, 0, 0), t2->GetComputedStyle()->VisitedDependentColor(
-                                  GetCSSPropertyColor()));
-  EXPECT_EQ(MakeRGB(0, 0, 0), t3->GetComputedStyle()->VisitedDependentColor(
-                                  GetCSSPropertyColor()));
+  EXPECT_EQ(
+      Color::FromRGB(255, 0, 0),
+      t1->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
+  EXPECT_EQ(
+      Color::FromRGB(0, 0, 0),
+      t2->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
+  EXPECT_EQ(
+      Color::FromRGB(0, 0, 0),
+      t3->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
 
   // @font-face rules
 
@@ -490,10 +501,11 @@
   ASSERT_TRUE(t7);
   ASSERT_TRUE(t6->GetComputedStyle());
   ASSERT_TRUE(t7->GetComputedStyle());
-  EXPECT_EQ(MakeRGB(0, 0, 0), t6->GetComputedStyle()->VisitedDependentColor(
-                                  GetCSSPropertyColor()));
   EXPECT_EQ(
-      MakeRGB(255, 255, 255),
+      Color::FromRGB(0, 0, 0),
+      t6->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
+  EXPECT_EQ(
+      Color::FromRGB(255, 255, 255),
       t7->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
 
   auto* custom_properties_parsed_sheet =
@@ -511,10 +523,11 @@
   UpdateAllLifecyclePhases();
   ASSERT_TRUE(t6->GetComputedStyle());
   ASSERT_TRUE(t7->GetComputedStyle());
-  EXPECT_EQ(MakeRGB(255, 0, 0), t6->GetComputedStyle()->VisitedDependentColor(
-                                    GetCSSPropertyColor()));
   EXPECT_EQ(
-      MakeRGB(255, 255, 255),
+      Color::FromRGB(255, 0, 0),
+      t6->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
+  EXPECT_EQ(
+      Color::FromRGB(255, 255, 255),
       t7->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
 
   GetStyleEngine().RemoveInjectedSheet(custom_properties_key,
@@ -522,10 +535,11 @@
   UpdateAllLifecyclePhases();
   ASSERT_TRUE(t6->GetComputedStyle());
   ASSERT_TRUE(t7->GetComputedStyle());
-  EXPECT_EQ(MakeRGB(0, 0, 0), t6->GetComputedStyle()->VisitedDependentColor(
-                                  GetCSSPropertyColor()));
   EXPECT_EQ(
-      MakeRGB(255, 255, 255),
+      Color::FromRGB(0, 0, 0),
+      t6->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
+  EXPECT_EQ(
+      Color::FromRGB(255, 255, 255),
       t7->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
 
   // Media queries
@@ -534,7 +548,7 @@
   ASSERT_TRUE(t8);
   ASSERT_TRUE(t8->GetComputedStyle());
   EXPECT_EQ(
-      MakeRGB(255, 255, 255),
+      Color::FromRGB(255, 255, 255),
       t8->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
 
   auto* media_queries_parsed_sheet = MakeGarbageCollected<StyleSheetContents>(
@@ -555,26 +569,29 @@
                                media_queries_parsed_sheet, WebCssOrigin::kUser);
   UpdateAllLifecyclePhases();
   ASSERT_TRUE(t8->GetComputedStyle());
-  EXPECT_EQ(MakeRGB(255, 0, 0), t8->GetComputedStyle()->VisitedDependentColor(
-                                    GetCSSPropertyColor()));
+  EXPECT_EQ(
+      Color::FromRGB(255, 0, 0),
+      t8->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
 
   gfx::SizeF page_size(400, 400);
   GetDocument().GetFrame()->StartPrinting(page_size, page_size, 1);
   ASSERT_TRUE(t8->GetComputedStyle());
-  EXPECT_EQ(MakeRGB(0, 0, 0), t8->GetComputedStyle()->VisitedDependentColor(
-                                  GetCSSPropertyColor()));
+  EXPECT_EQ(
+      Color::FromRGB(0, 0, 0),
+      t8->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
 
   GetDocument().GetFrame()->EndPrinting();
   ASSERT_TRUE(t8->GetComputedStyle());
-  EXPECT_EQ(MakeRGB(255, 0, 0), t8->GetComputedStyle()->VisitedDependentColor(
-                                    GetCSSPropertyColor()));
+  EXPECT_EQ(
+      Color::FromRGB(255, 0, 0),
+      t8->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
 
   GetStyleEngine().RemoveInjectedSheet(media_queries_sheet_key,
                                        WebCssOrigin::kUser);
   UpdateAllLifecyclePhases();
   ASSERT_TRUE(t8->GetComputedStyle());
   EXPECT_EQ(
-      MakeRGB(255, 255, 255),
+      Color::FromRGB(255, 255, 255),
       t8->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
 
   // Author style sheets
@@ -585,10 +602,12 @@
   ASSERT_TRUE(t10);
   ASSERT_TRUE(t9->GetComputedStyle());
   ASSERT_TRUE(t10->GetComputedStyle());
-  EXPECT_EQ(MakeRGB(255, 0, 0), t9->GetComputedStyle()->VisitedDependentColor(
-                                    GetCSSPropertyColor()));
-  EXPECT_EQ(MakeRGB(0, 0, 0), t10->GetComputedStyle()->VisitedDependentColor(
-                                   GetCSSPropertyColor()));
+  EXPECT_EQ(
+      Color::FromRGB(255, 0, 0),
+      t9->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
+  EXPECT_EQ(
+      Color::FromRGB(0, 0, 0),
+      t10->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
 
   auto* parsed_author_sheet = MakeGarbageCollected<StyleSheetContents>(
       MakeGarbageCollected<CSSParserContext>(GetDocument()));
@@ -607,20 +626,24 @@
   ASSERT_TRUE(t10->GetComputedStyle());
 
   // Specificity works within author origin.
-  EXPECT_EQ(MakeRGB(0, 128, 0), t9->GetComputedStyle()->VisitedDependentColor(
-                                    GetCSSPropertyColor()));
+  EXPECT_EQ(
+      Color::FromRGB(0, 128, 0),
+      t9->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
   // Important author rules do not override important inline author rules.
-  EXPECT_EQ(MakeRGB(0, 0, 0), t10->GetComputedStyle()->VisitedDependentColor(
-                                   GetCSSPropertyColor()));
+  EXPECT_EQ(
+      Color::FromRGB(0, 0, 0),
+      t10->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
 
   GetStyleEngine().RemoveInjectedSheet(author_sheet_key, WebCssOrigin::kAuthor);
   UpdateAllLifecyclePhases();
   ASSERT_TRUE(t9->GetComputedStyle());
   ASSERT_TRUE(t10->GetComputedStyle());
-  EXPECT_EQ(MakeRGB(255, 0, 0), t9->GetComputedStyle()->VisitedDependentColor(
-                                    GetCSSPropertyColor()));
-  EXPECT_EQ(MakeRGB(0, 0, 0), t10->GetComputedStyle()->VisitedDependentColor(
-                                   GetCSSPropertyColor()));
+  EXPECT_EQ(
+      Color::FromRGB(255, 0, 0),
+      t9->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
+  EXPECT_EQ(
+      Color::FromRGB(0, 0, 0),
+      t10->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
 
   // Style sheet removal
 
@@ -628,7 +651,7 @@
   ASSERT_TRUE(t11);
   ASSERT_TRUE(t11->GetComputedStyle());
   EXPECT_EQ(
-      MakeRGB(255, 255, 255),
+      Color::FromRGB(255, 255, 255),
       t11->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
 
   auto* parsed_removable_red_sheet = MakeGarbageCollected<StyleSheetContents>(
@@ -640,8 +663,9 @@
   UpdateAllLifecyclePhases();
   ASSERT_TRUE(t11->GetComputedStyle());
 
-  EXPECT_EQ(MakeRGB(255, 0, 0), t11->GetComputedStyle()->VisitedDependentColor(
-                                     GetCSSPropertyColor()));
+  EXPECT_EQ(
+      Color::FromRGB(255, 0, 0),
+      t11->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
 
   auto* parsed_removable_green_sheet = MakeGarbageCollected<StyleSheetContents>(
       MakeGarbageCollected<CSSParserContext>(GetDocument()));
@@ -654,8 +678,9 @@
   UpdateAllLifecyclePhases();
   ASSERT_TRUE(t11->GetComputedStyle());
 
-  EXPECT_EQ(MakeRGB(0, 128, 0), t11->GetComputedStyle()->VisitedDependentColor(
-                                     GetCSSPropertyColor()));
+  EXPECT_EQ(
+      Color::FromRGB(0, 128, 0),
+      t11->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
 
   auto* parsed_removable_red_sheet2 = MakeGarbageCollected<StyleSheetContents>(
       MakeGarbageCollected<CSSParserContext>(GetDocument()));
@@ -666,8 +691,9 @@
   UpdateAllLifecyclePhases();
   ASSERT_TRUE(t11->GetComputedStyle());
 
-  EXPECT_EQ(MakeRGB(255, 0, 0), t11->GetComputedStyle()->VisitedDependentColor(
-                                     GetCSSPropertyColor()));
+  EXPECT_EQ(
+      Color::FromRGB(255, 0, 0),
+      t11->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
 
   GetStyleEngine().RemoveInjectedSheet(removable_red_sheet_key,
                                        WebCssOrigin::kAuthor);
@@ -675,8 +701,9 @@
   ASSERT_TRUE(t11->GetComputedStyle());
 
   // Removal works only within the same origin.
-  EXPECT_EQ(MakeRGB(255, 0, 0), t11->GetComputedStyle()->VisitedDependentColor(
-                                     GetCSSPropertyColor()));
+  EXPECT_EQ(
+      Color::FromRGB(255, 0, 0),
+      t11->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
 
   GetStyleEngine().RemoveInjectedSheet(removable_red_sheet_key,
                                        WebCssOrigin::kUser);
@@ -684,8 +711,9 @@
   ASSERT_TRUE(t11->GetComputedStyle());
 
   // The last sheet with the given key is removed.
-  EXPECT_EQ(MakeRGB(0, 128, 0), t11->GetComputedStyle()->VisitedDependentColor(
-                                     GetCSSPropertyColor()));
+  EXPECT_EQ(
+      Color::FromRGB(0, 128, 0),
+      t11->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
 
   GetStyleEngine().RemoveInjectedSheet(removable_green_sheet_key,
                                        WebCssOrigin::kUser);
@@ -693,8 +721,9 @@
   ASSERT_TRUE(t11->GetComputedStyle());
 
   // Only the last sheet with the given key is removed.
-  EXPECT_EQ(MakeRGB(255, 0, 0), t11->GetComputedStyle()->VisitedDependentColor(
-                                     GetCSSPropertyColor()));
+  EXPECT_EQ(
+      Color::FromRGB(255, 0, 0),
+      t11->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
 
   GetStyleEngine().RemoveInjectedSheet(removable_red_sheet_key,
                                        WebCssOrigin::kUser);
@@ -702,7 +731,7 @@
   ASSERT_TRUE(t11->GetComputedStyle());
 
   EXPECT_EQ(
-      MakeRGB(255, 255, 255),
+      Color::FromRGB(255, 255, 255),
       t11->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
 }
 
@@ -771,8 +800,9 @@
   Element* t1 = GetDocument().getElementById("t1");
   ASSERT_TRUE(t1);
   ASSERT_TRUE(t1->GetComputedStyle());
-  EXPECT_EQ(MakeRGB(255, 0, 0), t1->GetComputedStyle()->VisitedDependentColor(
-                                    GetCSSPropertyColor()));
+  EXPECT_EQ(
+      Color::FromRGB(255, 0, 0),
+      t1->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
 }
 
 TEST_F(StyleEngineTest, TextToSheetCache) {
@@ -1013,8 +1043,9 @@
   Element* t1 = GetDocument().getElementById("t1");
   ASSERT_TRUE(t1);
   ASSERT_TRUE(t1->GetComputedStyle());
-  EXPECT_EQ(MakeRGB(0, 0, 0), t1->GetComputedStyle()->VisitedDependentColor(
-                                  GetCSSPropertyColor()));
+  EXPECT_EQ(
+      Color::FromRGB(0, 0, 0),
+      t1->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
 
   unsigned before_count = GetStyleEngine().StyleForElementCount();
 
@@ -1026,8 +1057,9 @@
   EXPECT_EQ(1u, after_count - before_count);
 
   ASSERT_TRUE(t1->GetComputedStyle());
-  EXPECT_EQ(MakeRGB(0, 128, 0), t1->GetComputedStyle()->VisitedDependentColor(
-                                    GetCSSPropertyColor()));
+  EXPECT_EQ(
+      Color::FromRGB(0, 128, 0),
+      t1->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
 }
 
 TEST_F(StyleEngineTest, StyleMediaAttributeNoStyleChange) {
@@ -1039,8 +1071,9 @@
   Element* t1 = GetDocument().getElementById("t1");
   ASSERT_TRUE(t1);
   ASSERT_TRUE(t1->GetComputedStyle());
-  EXPECT_EQ(MakeRGB(0, 128, 0), t1->GetComputedStyle()->VisitedDependentColor(
-                                    GetCSSPropertyColor()));
+  EXPECT_EQ(
+      Color::FromRGB(0, 128, 0),
+      t1->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
 
   unsigned before_count = GetStyleEngine().StyleForElementCount();
 
@@ -1052,8 +1085,9 @@
   EXPECT_EQ(0u, after_count - before_count);
 
   ASSERT_TRUE(t1->GetComputedStyle());
-  EXPECT_EQ(MakeRGB(0, 128, 0), t1->GetComputedStyle()->VisitedDependentColor(
-                                    GetCSSPropertyColor()));
+  EXPECT_EQ(
+      Color::FromRGB(0, 128, 0),
+      t1->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
 }
 
 TEST_F(StyleEngineTest, ModifyStyleRuleMatchedPropertiesCache) {
@@ -1070,8 +1104,9 @@
   Element* t1 = GetDocument().getElementById("t1");
   ASSERT_TRUE(t1);
   ASSERT_TRUE(t1->GetComputedStyle());
-  EXPECT_EQ(MakeRGB(0, 0, 255), t1->GetComputedStyle()->VisitedDependentColor(
-                                    GetCSSPropertyColor()));
+  EXPECT_EQ(
+      Color::FromRGB(0, 0, 255),
+      t1->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
 
   auto* sheet = To<CSSStyleSheet>(GetDocument().StyleSheets().item(0));
   ASSERT_TRUE(sheet);
@@ -1091,16 +1126,18 @@
   UpdateAllLifecyclePhases();
 
   ASSERT_TRUE(t1->GetComputedStyle());
-  EXPECT_EQ(MakeRGB(255, 0, 0), t1->GetComputedStyle()->VisitedDependentColor(
-                                    GetCSSPropertyColor()));
+  EXPECT_EQ(
+      Color::FromRGB(255, 0, 0),
+      t1->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
 
   style_rule->style()->setProperty(GetDocument().GetExecutionContext(), "color",
                                    "green", "", ASSERT_NO_EXCEPTION);
   UpdateAllLifecyclePhases();
 
   ASSERT_TRUE(t1->GetComputedStyle());
-  EXPECT_EQ(MakeRGB(0, 128, 0), t1->GetComputedStyle()->VisitedDependentColor(
-                                    GetCSSPropertyColor()));
+  EXPECT_EQ(
+      Color::FromRGB(0, 128, 0),
+      t1->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
 }
 
 TEST_F(StyleEngineTest, VisitedExplicitInheritanceMatchedPropertiesCache) {
@@ -1540,13 +1577,13 @@
   )HTML");
 
   UpdateAllLifecyclePhases();
-  EXPECT_EQ(MakeRGB(255, 0, 0),
+  EXPECT_EQ(Color::FromRGB(255, 0, 0),
             GetDocument().body()->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 
   GetDocument().GetSettings()->SetDefaultFontSize(40);
   UpdateAllLifecyclePhases();
-  EXPECT_EQ(MakeRGB(0, 128, 0),
+  EXPECT_EQ(Color::FromRGB(0, 128, 0),
             GetDocument().body()->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 }
@@ -1567,14 +1604,14 @@
   )HTML");
 
   UpdateAllLifecyclePhases();
-  EXPECT_EQ(MakeRGB(255, 0, 0),
+  EXPECT_EQ(Color::FromRGB(255, 0, 0),
             GetDocument().body()->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 
   color_scheme_helper.SetPreferredColorScheme(
       mojom::blink::PreferredColorScheme::kDark);
   UpdateAllLifecyclePhases();
-  EXPECT_EQ(MakeRGB(0, 128, 0),
+  EXPECT_EQ(Color::FromRGB(0, 128, 0),
             GetDocument().body()->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 }
@@ -1598,7 +1635,7 @@
   )HTML");
 
   UpdateAllLifecyclePhases();
-  EXPECT_EQ(MakeRGB(0, 128, 0),
+  EXPECT_EQ(Color::FromRGB(0, 128, 0),
             GetDocument().body()->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 }
@@ -1625,28 +1662,28 @@
   )HTML");
 
   UpdateAllLifecyclePhases();
-  EXPECT_EQ(MakeRGB(0, 128, 0),
+  EXPECT_EQ(Color::FromRGB(0, 128, 0),
             GetDocument().body()->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 
   color_scheme_helper.SetPreferredContrast(
       mojom::blink::PreferredContrast::kMore);
   UpdateAllLifecyclePhases();
-  EXPECT_EQ(MakeRGB(0, 0, 255),
+  EXPECT_EQ(Color::FromRGB(0, 0, 255),
             GetDocument().body()->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 
   color_scheme_helper.SetPreferredContrast(
       mojom::blink::PreferredContrast::kLess);
   UpdateAllLifecyclePhases();
-  EXPECT_EQ(MakeRGB(0, 0, 255),
+  EXPECT_EQ(Color::FromRGB(0, 0, 255),
             GetDocument().body()->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 
   color_scheme_helper.SetPreferredContrast(
       mojom::blink::PreferredContrast::kCustom);
   UpdateAllLifecyclePhases();
-  EXPECT_EQ(MakeRGB(0, 0, 255),
+  EXPECT_EQ(Color::FromRGB(0, 0, 255),
             GetDocument().body()->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 }
@@ -1676,28 +1713,28 @@
   )HTML");
 
   UpdateAllLifecyclePhases();
-  EXPECT_EQ(MakeRGB(255, 0, 0),
+  EXPECT_EQ(Color::FromRGB(255, 0, 0),
             GetDocument().body()->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 
   color_scheme_helper.SetPreferredContrast(
       mojom::blink::PreferredContrast::kMore);
   UpdateAllLifecyclePhases();
-  EXPECT_EQ(MakeRGB(0, 0, 255),
+  EXPECT_EQ(Color::FromRGB(0, 0, 255),
             GetDocument().body()->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 
   color_scheme_helper.SetPreferredContrast(
       mojom::blink::PreferredContrast::kLess);
   UpdateAllLifecyclePhases();
-  EXPECT_EQ(MakeRGB(255, 165, 0),
+  EXPECT_EQ(Color::FromRGB(255, 165, 0),
             GetDocument().body()->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 
   color_scheme_helper.SetPreferredContrast(
       mojom::blink::PreferredContrast::kCustom);
   UpdateAllLifecyclePhases();
-  EXPECT_EQ(MakeRGB(255, 255, 0),
+  EXPECT_EQ(Color::FromRGB(255, 255, 0),
             GetDocument().body()->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 }
@@ -1727,14 +1764,14 @@
   )HTML");
 
   UpdateAllLifecyclePhases();
-  EXPECT_EQ(MakeRGB(255, 0, 0),
+  EXPECT_EQ(Color::FromRGB(255, 0, 0),
             GetDocument().body()->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 
   GetDocument().GetPage()->SetMediaFeatureOverride("prefers-contrast", "more");
 
   UpdateAllLifecyclePhases();
-  EXPECT_EQ(MakeRGB(0, 0, 255),
+  EXPECT_EQ(Color::FromRGB(0, 0, 255),
             GetDocument().body()->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 
@@ -1742,14 +1779,14 @@
                                                    "no-preference");
 
   UpdateAllLifecyclePhases();
-  EXPECT_EQ(MakeRGB(255, 0, 0),
+  EXPECT_EQ(Color::FromRGB(255, 0, 0),
             GetDocument().body()->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 
   GetDocument().GetPage()->SetMediaFeatureOverride("prefers-contrast", "less");
 
   UpdateAllLifecyclePhases();
-  EXPECT_EQ(MakeRGB(255, 165, 0),
+  EXPECT_EQ(Color::FromRGB(255, 165, 0),
             GetDocument().body()->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 
@@ -1757,14 +1794,14 @@
                                                    "custom");
 
   UpdateAllLifecyclePhases();
-  EXPECT_EQ(MakeRGB(255, 255, 0),
+  EXPECT_EQ(Color::FromRGB(255, 255, 0),
             GetDocument().body()->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 
   GetDocument().GetPage()->ClearMediaFeatureOverrides();
 
   UpdateAllLifecyclePhases();
-  EXPECT_EQ(MakeRGB(255, 0, 0),
+  EXPECT_EQ(Color::FromRGB(255, 0, 0),
             GetDocument().body()->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 }
@@ -1781,13 +1818,13 @@
   )HTML");
 
   UpdateAllLifecyclePhases();
-  EXPECT_EQ(MakeRGB(255, 0, 0),
+  EXPECT_EQ(Color::FromRGB(255, 0, 0),
             GetDocument().body()->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 
   GetDocument().GetSettings()->SetPrefersReducedMotion(true);
   UpdateAllLifecyclePhases();
-  EXPECT_EQ(MakeRGB(0, 128, 0),
+  EXPECT_EQ(Color::FromRGB(0, 128, 0),
             GetDocument().body()->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 }
@@ -1808,7 +1845,7 @@
   UpdateAllLifecyclePhases();
 
   EXPECT_TRUE(GetNetworkStateNotifier().SaveDataEnabled());
-  EXPECT_EQ(MakeRGB(0, 128, 0),
+  EXPECT_EQ(Color::FromRGB(0, 128, 0),
             GetDocument().body()->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 }
@@ -1829,7 +1866,7 @@
   UpdateAllLifecyclePhases();
 
   EXPECT_FALSE(GetNetworkStateNotifier().SaveDataEnabled());
-  EXPECT_EQ(MakeRGB(255, 0, 0),
+  EXPECT_EQ(Color::FromRGB(255, 0, 0),
             GetDocument().body()->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 }
@@ -1852,14 +1889,14 @@
   )HTML");
 
   UpdateAllLifecyclePhases();
-  EXPECT_EQ(MakeRGB(255, 0, 0),
+  EXPECT_EQ(Color::FromRGB(255, 0, 0),
             GetDocument().body()->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 
   ColorSchemeHelper color_scheme_helper(GetDocument());
   color_scheme_helper.SetForcedColors(GetDocument(), ForcedColors::kActive);
   UpdateAllLifecyclePhases();
-  EXPECT_EQ(MakeRGB(0, 128, 0),
+  EXPECT_EQ(Color::FromRGB(0, 128, 0),
             GetDocument().body()->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 }
@@ -1893,7 +1930,7 @@
   color_scheme_helper.SetPreferredColorScheme(
       mojom::blink::PreferredColorScheme::kLight);
   UpdateAllLifecyclePhases();
-  EXPECT_EQ(MakeRGB(255, 0, 0),
+  EXPECT_EQ(Color::FromRGB(255, 0, 0),
             GetDocument().body()->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 
@@ -1901,14 +1938,14 @@
   color_scheme_helper.SetPreferredColorScheme(
       mojom::blink::PreferredColorScheme::kDark);
   UpdateAllLifecyclePhases();
-  EXPECT_EQ(MakeRGB(0, 128, 0),
+  EXPECT_EQ(Color::FromRGB(0, 128, 0),
             GetDocument().body()->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 
   // ForcedColors = kActive, PreferredColorScheme = kDark
   color_scheme_helper.SetForcedColors(GetDocument(), ForcedColors::kActive);
   UpdateAllLifecyclePhases();
-  EXPECT_EQ(MakeRGB(255, 165, 0),
+  EXPECT_EQ(Color::FromRGB(255, 165, 0),
             GetDocument().body()->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 
@@ -1916,7 +1953,7 @@
   color_scheme_helper.SetPreferredColorScheme(
       mojom::blink::PreferredColorScheme::kLight);
   UpdateAllLifecyclePhases();
-  EXPECT_EQ(MakeRGB(0, 0, 255),
+  EXPECT_EQ(Color::FromRGB(0, 0, 255),
             GetDocument().body()->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 }
@@ -1938,7 +1975,7 @@
   )HTML");
 
   UpdateAllLifecyclePhases();
-  EXPECT_EQ(MakeRGB(255, 0, 0),
+  EXPECT_EQ(Color::FromRGB(255, 0, 0),
             GetDocument().body()->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 
@@ -1946,19 +1983,19 @@
   GetDocument().GetPage()->SetMediaFeatureOverride("forced-colors", "active");
 
   UpdateAllLifecyclePhases();
-  EXPECT_EQ(MakeRGB(0, 128, 0),
+  EXPECT_EQ(Color::FromRGB(0, 128, 0),
             GetDocument().body()->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 
   GetDocument().GetPage()->SetMediaFeatureOverride("forced-colors", "none");
   UpdateAllLifecyclePhases();
-  EXPECT_EQ(MakeRGB(255, 0, 0),
+  EXPECT_EQ(Color::FromRGB(255, 0, 0),
             GetDocument().body()->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 
   GetDocument().GetPage()->ClearMediaFeatureOverrides();
   UpdateAllLifecyclePhases();
-  EXPECT_EQ(MakeRGB(255, 0, 0),
+  EXPECT_EQ(Color::FromRGB(255, 0, 0),
             GetDocument().body()->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 }
@@ -1981,20 +2018,20 @@
   )HTML");
 
   UpdateAllLifecyclePhases();
-  EXPECT_EQ(MakeRGB(255, 0, 0),
+  EXPECT_EQ(Color::FromRGB(255, 0, 0),
             GetDocument().body()->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 
   GetDocument().GetPage()->SetMediaFeatureOverride("prefers-color-scheme",
                                                    "dark");
   UpdateAllLifecyclePhases();
-  EXPECT_EQ(MakeRGB(0, 128, 0),
+  EXPECT_EQ(Color::FromRGB(0, 128, 0),
             GetDocument().body()->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 
   GetDocument().GetPage()->ClearMediaFeatureOverrides();
   UpdateAllLifecyclePhases();
-  EXPECT_EQ(MakeRGB(255, 0, 0),
+  EXPECT_EQ(Color::FromRGB(255, 0, 0),
             GetDocument().body()->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 }
@@ -2108,20 +2145,20 @@
   )HTML");
 
   UpdateAllLifecyclePhases();
-  EXPECT_EQ(MakeRGB(255, 0, 0),
+  EXPECT_EQ(Color::FromRGB(255, 0, 0),
             GetDocument().body()->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 
   GetDocument().GetPage()->SetMediaFeatureOverride("prefers-reduced-motion",
                                                    "reduce");
   UpdateAllLifecyclePhases();
-  EXPECT_EQ(MakeRGB(0, 128, 0),
+  EXPECT_EQ(Color::FromRGB(0, 128, 0),
             GetDocument().body()->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 
   GetDocument().GetPage()->ClearMediaFeatureOverrides();
   UpdateAllLifecyclePhases();
-  EXPECT_EQ(MakeRGB(255, 0, 0),
+  EXPECT_EQ(Color::FromRGB(255, 0, 0),
             GetDocument().body()->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 }
@@ -2141,14 +2178,14 @@
   )HTML");
 
   UpdateAllLifecyclePhases();
-  EXPECT_EQ(MakeRGB(255, 0, 0),
+  EXPECT_EQ(Color::FromRGB(255, 0, 0),
             GetDocument().body()->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 
   GetDocument().GetSettings()->SetNavigationControls(
       NavigationControls::kBackButton);
   UpdateAllLifecyclePhases();
-  EXPECT_EQ(MakeRGB(0, 128, 0),
+  EXPECT_EQ(Color::FromRGB(0, 128, 0),
             GetDocument().body()->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()));
 }
@@ -2939,8 +2976,9 @@
 
   // Only the single div element should have its style recomputed.
   EXPECT_EQ(1u, GetStyleEngine().StyleForElementCount() - initial_count);
-  EXPECT_EQ(MakeRGB(0, 128, 0), div->GetComputedStyle()->VisitedDependentColor(
-                                    GetCSSPropertyColor()));
+  EXPECT_EQ(
+      Color::FromRGB(0, 128, 0),
+      div->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
 }
 
 TEST_F(StyleEngineTest,
@@ -2977,8 +3015,9 @@
 
   // Only the single div element should have its style recomputed.
   EXPECT_EQ(1u, GetStyleEngine().StyleForElementCount() - initial_count);
-  EXPECT_EQ(MakeRGB(0, 128, 0), div->GetComputedStyle()->VisitedDependentColor(
-                                    GetCSSPropertyColor()));
+  EXPECT_EQ(
+      Color::FromRGB(0, 128, 0),
+      div->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
 }
 
 TEST_F(StyleEngineTest,
@@ -3015,8 +3054,9 @@
 
   // Only the single div element should have its style recomputed.
   EXPECT_EQ(1u, GetStyleEngine().StyleForElementCount() - initial_count);
-  EXPECT_EQ(MakeRGB(0, 128, 0), div->GetComputedStyle()->VisitedDependentColor(
-                                    GetCSSPropertyColor()));
+  EXPECT_EQ(
+      Color::FromRGB(0, 128, 0),
+      div->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
 }
 
 TEST_F(StyleEngineTest, RevertUseCount) {
@@ -3100,8 +3140,9 @@
                                GetCSSPropertyColor()));
   EXPECT_EQ(mojom::blink::ColorScheme::kDark,
             root->GetComputedStyle()->UsedColorScheme());
-  EXPECT_EQ(MakeRGB(255, 0, 0), body->GetComputedStyle()->VisitedDependentColor(
-                                    GetCSSPropertyColor()));
+  EXPECT_EQ(
+      Color::FromRGB(255, 0, 0),
+      body->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
 
   gfx::SizeF page_size(400, 400);
   GetDocument().GetFrame()->StartPrinting(page_size, page_size, 1);
@@ -3109,16 +3150,18 @@
                                GetCSSPropertyColor()));
   EXPECT_EQ(mojom::blink::ColorScheme::kLight,
             root->GetComputedStyle()->UsedColorScheme());
-  EXPECT_EQ(MakeRGB(0, 128, 0), body->GetComputedStyle()->VisitedDependentColor(
-                                    GetCSSPropertyColor()));
+  EXPECT_EQ(
+      Color::FromRGB(0, 128, 0),
+      body->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
 
   GetDocument().GetFrame()->EndPrinting();
   EXPECT_EQ(Color::kWhite, root->GetComputedStyle()->VisitedDependentColor(
                                GetCSSPropertyColor()));
   EXPECT_EQ(mojom::blink::ColorScheme::kDark,
             root->GetComputedStyle()->UsedColorScheme());
-  EXPECT_EQ(MakeRGB(255, 0, 0), body->GetComputedStyle()->VisitedDependentColor(
-                                    GetCSSPropertyColor()));
+  EXPECT_EQ(
+      Color::FromRGB(255, 0, 0),
+      body->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
 }
 
 TEST_F(StyleEngineTest, AtPropertyUseCount) {
@@ -4772,9 +4815,9 @@
   scoped_refptr<const ComputedStyle> new_style = span->EnsureComputedStyle();
   EXPECT_NE(new_style, old_style);
 
-  EXPECT_EQ(MakeRGB(255, 0, 0),
+  EXPECT_EQ(Color::FromRGB(255, 0, 0),
             old_style->VisitedDependentColor(GetCSSPropertyColor()));
-  EXPECT_EQ(MakeRGB(0, 128, 0),
+  EXPECT_EQ(Color::FromRGB(0, 128, 0),
             new_style->VisitedDependentColor(GetCSSPropertyColor()));
 }
 
@@ -5835,7 +5878,7 @@
   // sheet is render-blocking.
   EXPECT_EQ(
       trans->ComputedStyleRef().VisitedDependentColor(GetCSSPropertyColor()),
-      MakeRGB(0, 128, 0));
+      Color::FromRGB(0, 128, 0));
 }
 
 namespace {
diff --git a/third_party/blink/renderer/core/display_lock/display_lock_context_test.cc b/third_party/blink/renderer/core/display_lock/display_lock_context_test.cc
index b971d4ca..9363ffd 100644
--- a/third_party/blink/renderer/core/display_lock/display_lock_context_test.cc
+++ b/third_party/blink/renderer/core/display_lock/display_lock_context_test.cc
@@ -227,7 +227,7 @@
   EXPECT_TRUE(element->GetComputedStyle());
   EXPECT_EQ(
       element->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()),
-      MakeRGB(255, 0, 0));
+      Color::FromRGB(255, 0, 0));
   // Manually commit the lock so that we can verify which dirty bits get
   // propagated.
   UnlockImmediate(element->GetDisplayLockContext());
@@ -257,7 +257,7 @@
   ASSERT_TRUE(child->GetComputedStyle());
   EXPECT_EQ(
       child->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()),
-      MakeRGB(0, 0, 255));
+      Color::FromRGB(0, 0, 255));
 
   UnlockImmediate(child->GetDisplayLockContext());
   child->setAttribute(html_names::kStyleAttr, "color: blue;");
@@ -274,7 +274,7 @@
   ASSERT_TRUE(child->GetComputedStyle());
   EXPECT_EQ(
       child->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()),
-      MakeRGB(0, 0, 255));
+      Color::FromRGB(0, 0, 255));
 }
 
 TEST_F(DisplayLockContextTest, LockedElementIsNotSearchableViaFindInPage) {
@@ -1329,7 +1329,7 @@
   ASSERT_TRUE(document_child->GetComputedStyle());
   EXPECT_EQ(document_child->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()),
-            MakeRGB(255, 0, 0));
+            Color::FromRGB(255, 0, 0));
 
   auto* grandchild = GetDocument().getElementById("grandchild");
   EXPECT_FALSE(grandchild->NeedsStyleRecalc());
@@ -1337,7 +1337,7 @@
   ASSERT_TRUE(grandchild->GetComputedStyle());
   EXPECT_EQ(grandchild->GetComputedStyle()->VisitedDependentColor(
                 GetCSSPropertyColor()),
-            MakeRGB(0, 0, 255));
+            Color::FromRGB(0, 0, 255));
 }
 
 TEST_F(DisplayLockContextTest, AncestorAllowedTouchAction) {
diff --git a/third_party/blink/renderer/core/dom/text_link_colors.cc b/third_party/blink/renderer/core/dom/text_link_colors.cc
index e84929d..7e21a7b 100644
--- a/third_party/blink/renderer/core/dom/text_link_colors.cc
+++ b/third_party/blink/renderer/core/dom/text_link_colors.cc
@@ -39,16 +39,12 @@
 
 namespace blink {
 
-constexpr Color kDefaultLinkColorLight = Color::CreateUnchecked(0, 0, 238);
-constexpr Color kDefaultLinkColorDark = Color::CreateUnchecked(158, 158, 255);
-constexpr Color kDefaultVisitedLinkColorLight =
-    Color::CreateUnchecked(85, 26, 139);
-constexpr Color kDefaultVisitedLinkColorDark =
-    Color::CreateUnchecked(208, 173, 240);
-constexpr Color kDefaultActiveLinkColorLight =
-    Color::CreateUnchecked(255, 0, 0);
-constexpr Color kDefaultActiveLinkColorDark =
-    Color::CreateUnchecked(255, 158, 158);
+constexpr Color kDefaultLinkColorLight = Color::FromRGB(0, 0, 238);
+constexpr Color kDefaultLinkColorDark = Color::FromRGB(158, 158, 255);
+constexpr Color kDefaultVisitedLinkColorLight = Color::FromRGB(85, 26, 139);
+constexpr Color kDefaultVisitedLinkColorDark = Color::FromRGB(208, 173, 240);
+constexpr Color kDefaultActiveLinkColorLight = Color::FromRGB(255, 0, 0);
+constexpr Color kDefaultActiveLinkColorDark = Color::FromRGB(255, 158, 158);
 
 TextLinkColors::TextLinkColors() : text_color_(Color::kBlack) {
   ResetLinkColor();
diff --git a/third_party/blink/renderer/core/editing/editing_style.cc b/third_party/blink/renderer/core/editing/editing_style.cc
index b46efee..880c73cd 100644
--- a/third_party/blink/renderer/core/editing/editing_style.cc
+++ b/third_party/blink/renderer/core/editing/editing_style.cc
@@ -435,7 +435,7 @@
   if (color_value)
     return color_value->Value();
 
-  Color color = 0;
+  Color color = Color::kTransparent;
   // FIXME: Why ignore the return value?
   CSSParser::ParseColor(color, value->CssText());
   return color;
diff --git a/third_party/blink/renderer/core/editing/ime/edit_context.cc b/third_party/blink/renderer/core/editing/ime/edit_context.cc
index 3e2fc29..551c0a4 100644
--- a/third_party/blink/renderer/core/editing/ime/edit_context.cc
+++ b/third_party/blink/renderer/core/editing/ime/edit_context.cc
@@ -175,15 +175,15 @@
         break;
     }
 
-    text_formats.push_back(
-        TextFormat::Create(range_start, range_end,
-                           cssvalue::CSSColor::SerializeAsCSSComponentValue(
-                               ime_text_span.text_color),
-                           cssvalue::CSSColor::SerializeAsCSSComponentValue(
-                               ime_text_span.background_color),
-                           cssvalue::CSSColor::SerializeAsCSSComponentValue(
-                               ime_text_span.underline_color),
-                           underline_style, underline_thickness));
+    text_formats.push_back(TextFormat::Create(
+        range_start, range_end,
+        cssvalue::CSSColor::SerializeAsCSSComponentValue(
+            Color::FromSkColor(ime_text_span.text_color)),
+        cssvalue::CSSColor::SerializeAsCSSComponentValue(
+            Color::FromSkColor(ime_text_span.background_color)),
+        cssvalue::CSSColor::SerializeAsCSSComponentValue(
+            Color::FromSkColor(ime_text_span.underline_color)),
+        underline_style, underline_thickness));
   }
 
   TextFormatUpdateEvent* event = MakeGarbageCollected<TextFormatUpdateEvent>(
diff --git a/third_party/blink/renderer/core/editing/ime/ime_text_span.cc b/third_party/blink/renderer/core/editing/ime/ime_text_span.cc
index d8abfd8..5fc34de 100644
--- a/third_party/blink/renderer/core/editing/ime/ime_text_span.cc
+++ b/third_party/blink/renderer/core/editing/ime/ime_text_span.cc
@@ -135,12 +135,12 @@
     : ImeTextSpan(ConvertUiTypeToType(ime_text_span.type),
                   ime_text_span.start_offset,
                   ime_text_span.end_offset,
-                  Color(ime_text_span.underline_color),
+                  Color::FromSkColor(ime_text_span.underline_color),
                   ConvertUiThicknessToThickness(ime_text_span.thickness),
                   ConvertUiUnderlineToUnderline(ime_text_span.underline_style),
-                  Color(ime_text_span.text_color),
-                  Color(ime_text_span.background_color),
-                  Color(ime_text_span.suggestion_highlight_color),
+                  Color::FromSkColor(ime_text_span.text_color),
+                  Color::FromSkColor(ime_text_span.background_color),
+                  Color::FromSkColor(ime_text_span.suggestion_highlight_color),
                   ime_text_span.remove_on_finish_composing,
                   ime_text_span.interim_char_selection,
                   ConvertStdVectorOfStdStringsToVectorOfStrings(
diff --git a/third_party/blink/renderer/core/editing/ime/input_method_controller_test.cc b/third_party/blink/renderer/core/editing/ime/input_method_controller_test.cc
index 36c100f..087162f 100644
--- a/third_party/blink/renderer/core/editing/ime/input_method_controller_test.cc
+++ b/third_party/blink/renderer/core/editing/ime/input_method_controller_test.cc
@@ -183,7 +183,8 @@
   Vector<ImeTextSpan> ime_text_spans;
   ime_text_spans.push_back(ImeTextSpan(
       ImeTextSpan::Type::kComposition, 0, 5, Color(255, 0, 0),
-      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid, 0, 0));
+      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid,
+      Color::kTransparent, Color::kTransparent));
   Controller().SetCompositionFromExistingText(ime_text_spans, 0, 5);
 
   Range* range = GetCompositionRange();
@@ -201,7 +202,8 @@
   Vector<ImeTextSpan> ime_text_spans;
   ime_text_spans.push_back(ImeTextSpan(
       ImeTextSpan::Type::kAutocorrect, 0, 5, Color(255, 0, 0),
-      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid, 0, 0));
+      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid,
+      Color::kTransparent, Color::kTransparent));
   Controller().AddImeTextSpansToExistingText(ime_text_spans, 0, 5);
 
   EXPECT_EQ(1u, GetDocument().Markers().Markers().size());
@@ -226,10 +228,12 @@
   Vector<ImeTextSpan> grammar_ime_text_spans;
   grammar_ime_text_spans.push_back(ImeTextSpan(
       ImeTextSpan::Type::kGrammarSuggestion, 3, 6, Color(255, 0, 0),
-      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid, 0, 0));
+      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid,
+      Color::kTransparent, Color::kTransparent));
   grammar_ime_text_spans.push_back(ImeTextSpan(
       ImeTextSpan::Type::kGrammarSuggestion, 8, 10, Color(255, 0, 0),
-      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid, 0, 0));
+      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid,
+      Color::kTransparent, Color::kTransparent));
 
   Controller().AddImeTextSpansToExistingText(grammar_ime_text_spans, 0, 10);
   // The first grammar check span should not be added because it overlaps with
@@ -250,17 +254,21 @@
                     "sample");
   ImeTextSpan span1 = ImeTextSpan(ImeTextSpan::Type::kAutocorrect, 0, 5,
                                   Color(255, 0, 0), ImeTextSpanThickness::kThin,
-                                  ImeTextSpanUnderlineStyle::kSolid, 0, 0);
+                                  ImeTextSpanUnderlineStyle::kSolid,
+                                  Color::kTransparent, Color::kTransparent);
   ImeTextSpan span2 = ImeTextSpan(ImeTextSpan::Type::kComposition, 1, 3,
                                   Color(255, 0, 0), ImeTextSpanThickness::kThin,
-                                  ImeTextSpanUnderlineStyle::kSolid, 0, 0);
+                                  ImeTextSpanUnderlineStyle::kSolid,
+                                  Color::kTransparent, Color::kTransparent);
   ImeTextSpan span3 = ImeTextSpan(
       ImeTextSpan::Type::kMisspellingSuggestion, 1, 3, Color(255, 0, 0),
-      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid, 0, 0);
-  ImeTextSpan span4 = ImeTextSpan(ImeTextSpan::Type::kGrammarSuggestion, 6, 8,
-                                  Color(255, 0, 0), ImeTextSpanThickness::kThin,
-                                  ImeTextSpanUnderlineStyle::kSolid, 0, 0, 0,
-                                  false, false, {String("fake_suggestion")});
+      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid,
+      Color::kTransparent, Color::kTransparent);
+  ImeTextSpan span4 = ImeTextSpan(
+      ImeTextSpan::Type::kGrammarSuggestion, 6, 8, Color(255, 0, 0),
+      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid,
+      Color::kTransparent, Color::kTransparent, Color::kTransparent, false,
+      false, {String("fake_suggestion")});
 
   Controller().AddImeTextSpansToExistingText({span1, span2, span3, span4}, 0,
                                              10);
@@ -290,7 +298,8 @@
   Vector<ImeTextSpan> ime_text_spans;
   ime_text_spans.push_back(ImeTextSpan(
       ImeTextSpan::Type::kComposition, 0, 2, Color(255, 0, 0),
-      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid, 0, 0));
+      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid,
+      Color::kTransparent, Color::kTransparent));
 
   GetDocument().UpdateStyleAndLayout(DocumentUpdateReason::kTest);
   Controller().SetEditableSelectionOffsets(PlainTextRange(2, 2));
@@ -318,7 +327,8 @@
   Vector<ImeTextSpan> ime_text_spans;
   ime_text_spans.push_back(ImeTextSpan(
       ImeTextSpan::Type::kComposition, 6, 6, Color(255, 0, 0),
-      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid, 0, 0));
+      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid,
+      Color::kTransparent, Color::kTransparent));
   GetDocument().UpdateStyleAndLayout(DocumentUpdateReason::kTest);
 
   // UTF16 = 0x0939 0x0947 0x0932 0x0932. Note that 0x0932 0x0932 is a grapheme
@@ -346,7 +356,8 @@
   Vector<ImeTextSpan> ime_text_spans;
   ime_text_spans.push_back(ImeTextSpan(
       ImeTextSpan::Type::kComposition, 12, 12, Color(255, 0, 0),
-      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid, 0, 0));
+      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid,
+      Color::kTransparent, Color::kTransparent));
   GetDocument().UpdateStyleAndLayout(DocumentUpdateReason::kTest);
 
   // UTF16 = 0x0939 0x0947 0x0932 0x094D 0x0932 0x094B. 0x0939 0x0947 0x0932 is
@@ -382,7 +393,8 @@
   Vector<ImeTextSpan> ime_text_spans;
   ime_text_spans.push_back(ImeTextSpan(
       ImeTextSpan::Type::kComposition, 3, 12, Color(255, 0, 0),
-      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid, 0, 0));
+      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid,
+      Color::kTransparent, Color::kTransparent));
   Controller().SetCompositionFromExistingText(ime_text_spans, 3, 12);
 
   // Subtract a character.
@@ -410,7 +422,8 @@
   Vector<ImeTextSpan> ime_text_spans;
   ime_text_spans.push_back(ImeTextSpan(
       ImeTextSpan::Type::kComposition, 0, 2, Color(255, 0, 0),
-      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid, 0, 0));
+      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid,
+      Color::kTransparent, Color::kTransparent));
 
   Controller().SetCompositionFromExistingText(ime_text_spans, 0, 2);
 
@@ -436,7 +449,8 @@
   Vector<ImeTextSpan> ime_text_spans;
   ime_text_spans.push_back(ImeTextSpan(
       ImeTextSpan::Type::kComposition, 0, 2, Color(255, 0, 0),
-      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid, 0, 0));
+      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid,
+      Color::kTransparent, Color::kTransparent));
   Controller().SetCompositionFromExistingText(ime_text_spans, 0, 1);
 
   // 0xE0 0xB0 0x83 0xE0 0xB0 0x83, a telugu character with 2 code points in
@@ -459,7 +473,8 @@
   Vector<ImeTextSpan> ime_text_spans;
   ime_text_spans.push_back(ImeTextSpan(
       ImeTextSpan::Type::kComposition, 3, 12, Color(255, 0, 0),
-      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid, 0, 0));
+      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid,
+      Color::kTransparent, Color::kTransparent));
   Controller().SetCompositionFromExistingText(ime_text_spans, 3, 12);
 
   Controller().SetComposition(String("123hello789"), ime_text_spans, 11, 11);
@@ -487,7 +502,8 @@
   Vector<ImeTextSpan> ime_text_spans;
   ime_text_spans.push_back(ImeTextSpan(
       ImeTextSpan::Type::kComposition, 3, 12, Color(255, 0, 0),
-      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid, 0, 0));
+      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid,
+      Color::kTransparent, Color::kTransparent));
   Controller().SetCompositionFromExistingText(ime_text_spans, 3, 12);
 
   Controller().CommitText(String("123789"), ime_text_spans, 0);
@@ -500,7 +516,8 @@
   Vector<ImeTextSpan> ime_text_spans;
   ime_text_spans.push_back(ImeTextSpan(
       ImeTextSpan::Type::kComposition, 0, 11, Color(255, 0, 0),
-      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid, 0, 0));
+      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid,
+      Color::kTransparent, Color::kTransparent));
 
   Controller().CommitText(String("hello\nworld"), ime_text_spans, 0);
   EXPECT_EQ("hello<div>world</div>", div->innerHTML());
@@ -526,7 +543,8 @@
   Vector<ImeTextSpan> ime_text_spans;
   ime_text_spans.push_back(ImeTextSpan(
       ImeTextSpan::Type::kComposition, 0, 5, Color(255, 0, 0),
-      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid, 0, 0));
+      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid,
+      Color::kTransparent, Color::kTransparent));
   Controller().SetCompositionFromExistingText(ime_text_spans, 0, 5);
 
   Controller().FinishComposingText(InputMethodController::kKeepSelection);
@@ -563,7 +581,8 @@
   Vector<ImeTextSpan> ime_text_spans;
   ime_text_spans.push_back(ImeTextSpan(
       ImeTextSpan::Type::kComposition, 0, 3, Color(255, 0, 0),
-      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid, 0, 0));
+      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid,
+      Color::kTransparent, Color::kTransparent));
   Controller().SetCompositionFromExistingText(ime_text_spans, 0, 3);
 
   Controller().SetComposition(String(""), ime_text_spans, 0, 3);
@@ -581,7 +600,8 @@
   Vector<ImeTextSpan> ime_text_spans;
   ime_text_spans.push_back(ImeTextSpan(
       ImeTextSpan::Type::kComposition, 0, 5, Color(255, 0, 0),
-      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid, 0, 0));
+      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid,
+      Color::kTransparent, Color::kTransparent));
   Controller().SetCompositionFromExistingText(ime_text_spans, 0, 5);
 
   Range* range = GetCompositionRange();
@@ -600,7 +620,8 @@
   Vector<ImeTextSpan> ime_text_spans;
   ime_text_spans.push_back(ImeTextSpan(
       ImeTextSpan::Type::kComposition, 7, 8, Color(255, 0, 0),
-      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid, 0, 0));
+      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid,
+      Color::kTransparent, Color::kTransparent));
   Controller().SetCompositionFromExistingText(ime_text_spans, 7, 8);
 
   EXPECT_FALSE(GetCompositionRange());
@@ -613,7 +634,8 @@
   Vector<ImeTextSpan> ime_text_spans;
   ime_text_spans.push_back(ImeTextSpan(
       ImeTextSpan::Type::kComposition, 0, 5, Color(255, 0, 0),
-      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid, 0, 0));
+      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid,
+      Color::kTransparent, Color::kTransparent));
   Controller().SetComposition("foo", ime_text_spans, 0, 3);
   Controller().FinishComposingText(InputMethodController::kKeepSelection);
 
@@ -1071,7 +1093,8 @@
   Vector<ImeTextSpan> ime_text_spans;
   ime_text_spans.push_back(ImeTextSpan(
       ImeTextSpan::Type::kComposition, 0, 2, Color(255, 0, 0),
-      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid, 0, 0));
+      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid,
+      Color::kTransparent, Color::kTransparent));
 
   // The caret exceeds left boundary.
   // "*heABllo", where * stands for caret.
@@ -1137,7 +1160,8 @@
   Vector<ImeTextSpan> ime_text_spans;
   ime_text_spans.push_back(ImeTextSpan(
       ImeTextSpan::Type::kComposition, 0, 2, Color(255, 0, 0),
-      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid, 0, 0));
+      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid,
+      Color::kTransparent, Color::kTransparent));
 
   // The caret exceeds left boundary.
   // "*hello\nworld\n\n01234AB56789", where * stands for caret.
@@ -1229,11 +1253,13 @@
   Vector<ImeTextSpan> ime_text_spans0;
   ime_text_spans0.push_back(ImeTextSpan(
       ImeTextSpan::Type::kComposition, 0, 0, Color(255, 0, 0),
-      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid, 0, 0));
+      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid,
+      Color::kTransparent, Color::kTransparent));
   Vector<ImeTextSpan> ime_text_spans2;
   ime_text_spans2.push_back(ImeTextSpan(
       ImeTextSpan::Type::kComposition, 0, 2, Color(255, 0, 0),
-      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid, 0, 0));
+      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid,
+      Color::kTransparent, Color::kTransparent));
 
   Controller().SetComposition("AB", ime_text_spans2, 2, 2);
   // With previous composition.
@@ -1256,7 +1282,8 @@
   Vector<ImeTextSpan> ime_text_spans;
   ime_text_spans.push_back(ImeTextSpan(
       ImeTextSpan::Type::kComposition, 0, 5, Color(255, 0, 0),
-      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid, 0, 0));
+      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid,
+      Color::kTransparent, Color::kTransparent));
   Controller().SetComposition("hello", ime_text_spans, 5, 5);
   EXPECT_EQ("hello", div->innerText());
   EXPECT_EQ(5u, Controller().GetSelectionOffsets().Start());
@@ -1275,7 +1302,8 @@
   Vector<ImeTextSpan> ime_text_spans;
   ime_text_spans.push_back(ImeTextSpan(
       ImeTextSpan::Type::kComposition, 0, 2, Color(255, 0, 0),
-      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid, 0, 0));
+      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid,
+      Color::kTransparent, Color::kTransparent));
   Controller().CommitText("hello", ime_text_spans, 0);
   EXPECT_EQ("hello", div->innerText());
 
@@ -1308,7 +1336,8 @@
   Vector<ImeTextSpan> ime_text_spans;
   ime_text_spans.push_back(ImeTextSpan(
       ImeTextSpan::Type::kComposition, 0, 5, Color(255, 0, 0),
-      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid, 0, 0));
+      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid,
+      Color::kTransparent, Color::kTransparent));
   editable->Focus();
 
   GetDocument().setTitle(g_empty_string);
@@ -1330,7 +1359,8 @@
   Vector<ImeTextSpan> ime_text_spans;
   ime_text_spans.push_back(ImeTextSpan(
       ImeTextSpan::Type::kComposition, 0, 5, Color(255, 0, 0),
-      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid, 0, 0));
+      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid,
+      Color::kTransparent, Color::kTransparent));
 
   GetDocument().setTitle(g_empty_string);
   Controller().SetComposition("hell", ime_text_spans, 4, 4);
@@ -1353,7 +1383,8 @@
   Vector<ImeTextSpan> ime_text_spans;
   ime_text_spans.push_back(ImeTextSpan(
       ImeTextSpan::Type::kComposition, 0, 5, Color(255, 0, 0),
-      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid, 0, 0));
+      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid,
+      Color::kTransparent, Color::kTransparent));
 
   GetDocument().setTitle(g_empty_string);
   Controller().SetComposition("hello", ime_text_spans, 5, 5);
@@ -1374,7 +1405,8 @@
   Vector<ImeTextSpan> ime_text_spans;
   ime_text_spans.push_back(ImeTextSpan(
       ImeTextSpan::Type::kComposition, 0, 5, Color(255, 0, 0),
-      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid, 0, 0));
+      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid,
+      Color::kTransparent, Color::kTransparent));
 
   GetDocument().setTitle(g_empty_string);
   Controller().SetComposition("hello", ime_text_spans, 5, 5);
@@ -1398,7 +1430,8 @@
   Vector<ImeTextSpan> ime_text_spans;
   ime_text_spans.push_back(ImeTextSpan(
       ImeTextSpan::Type::kComposition, 0, 5, Color(255, 0, 0),
-      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid, 0, 0));
+      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid,
+      Color::kTransparent, Color::kTransparent));
 
   // Insert new text without previous composition.
   GetDocument().setTitle(g_empty_string);
@@ -1430,7 +1463,8 @@
   Vector<ImeTextSpan> ime_text_spans;
   ime_text_spans.push_back(ImeTextSpan(
       ImeTextSpan::Type::kComposition, 0, 5, Color(255, 0, 0),
-      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid, 0, 0));
+      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid,
+      Color::kTransparent, Color::kTransparent));
 
   // Insert empty text without previous composition.
   GetDocument().setTitle(g_empty_string);
@@ -1460,7 +1494,8 @@
   Vector<ImeTextSpan> ime_text_spans;
   ime_text_spans.push_back(ImeTextSpan(
       ImeTextSpan::Type::kComposition, 0, 5, Color(255, 0, 0),
-      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid, 0, 0));
+      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid,
+      Color::kTransparent, Color::kTransparent));
 
   Controller().SetComposition("hello", ime_text_spans, 1, 1);
   GetDocument().UpdateStyleAndLayout(DocumentUpdateReason::kTest);
@@ -1515,7 +1550,8 @@
   Vector<ImeTextSpan> ime_text_spans;
   ime_text_spans.push_back(ImeTextSpan(
       ImeTextSpan::Type::kComposition, 0, 1, Color(255, 0, 0),
-      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid, 0, 0));
+      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid,
+      Color::kTransparent, Color::kTransparent));
 
   Controller().SetComposition(" ", ime_text_spans, 1, 1);
 
@@ -1532,8 +1568,9 @@
   Vector<ImeTextSpan> ime_text_spans;
   ime_text_spans.push_back(ImeTextSpan(
       ImeTextSpan::Type::kComposition, 0, 1, Color(255, 0, 0),
-      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid, 0, 0, 0,
-      false, true /*interim_char_selection*/));
+      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid,
+      Color::kTransparent, Color::kTransparent, Color::kTransparent, false,
+      true /*interim_char_selection*/));
 
   Controller().SetComposition("a", ime_text_spans, 0, 1);
 
@@ -1555,7 +1592,8 @@
 
   ime_text_spans.push_back(ImeTextSpan(
       ImeTextSpan::Type::kComposition, 1, 11, Color(255, 0, 0),
-      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid, 0, 0));
+      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid,
+      Color::kTransparent, Color::kTransparent));
 
   Controller().CommitText(String("ime_text_spand"), ime_text_spans, 0);
 
@@ -1575,7 +1613,8 @@
 
   ime_text_spans.push_back(ImeTextSpan(
       ImeTextSpan::Type::kComposition, 1, 11, Color(255, 0, 0),
-      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid, 0, 0));
+      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid,
+      Color::kTransparent, Color::kTransparent));
 
   Controller().CommitText(String("string"), ime_text_spans, 0);
 
@@ -1598,7 +1637,8 @@
 
   ime_text_spans.push_back(ImeTextSpan(
       ImeTextSpan::Type::kComposition, 0, 5, Color(255, 0, 0),
-      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid, 0, 0));
+      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid,
+      Color::kTransparent, Color::kTransparent));
   Controller().SetComposition(String("world"), ime_text_spans, 0, 0);
   ASSERT_EQ(1u, GetDocument().Markers().Markers().size());
 
@@ -1634,7 +1674,8 @@
   Vector<ImeTextSpan> ime_text_spans;
   ime_text_spans.push_back(ImeTextSpan(
       ImeTextSpan::Type::kComposition, 0, 5, Color(255, 0, 0),
-      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid, 0, 0));
+      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid,
+      Color::kTransparent, Color::kTransparent));
   Controller().SetComposition("foo", ime_text_spans, 3, 3);
 
   EXPECT_TRUE(Controller().HasComposition());
@@ -1681,7 +1722,8 @@
   Vector<ImeTextSpan> ime_text_spans;
   ime_text_spans.push_back(ImeTextSpan(
       ImeTextSpan::Type::kComposition, 0, 3, Color(255, 0, 0),
-      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid, 0, 0));
+      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid,
+      Color::kTransparent, Color::kTransparent));
   Controller().SetComposition(String("def"), ime_text_spans, 0, 3);
   Controller().SetComposition(String(""), ime_text_spans, 0, 3);
   Controller().CommitText(String("def"), ime_text_spans, 0);
@@ -2271,7 +2313,7 @@
   EphemeralRange marker_range = PlainTextRange(5, 10).CreateRange(*div);
   GetDocument().Markers().AddActiveSuggestionMarker(
       marker_range, Color::kBlack, ImeTextSpanThickness::kThin,
-      ImeTextSpanUnderlineStyle::kSolid, 0, Color::kBlack);
+      ImeTextSpanUnderlineStyle::kSolid, Color::kTransparent, Color::kBlack);
 
   EXPECT_EQ(1u, GetDocument().Markers().Markers().size());
 
@@ -2309,7 +2351,7 @@
   EphemeralRange marker_range = PlainTextRange(5, 10).CreateRange(*div);
   GetDocument().Markers().AddActiveSuggestionMarker(
       marker_range, Color::kBlack, ImeTextSpanThickness::kThin,
-      ImeTextSpanUnderlineStyle::kSolid, 0, Color::kBlack);
+      ImeTextSpanUnderlineStyle::kSolid, Color::kTransparent, Color::kBlack);
 
   // Delete middle of marker
   Vector<ImeTextSpan> empty_ime_text_spans;
@@ -2365,17 +2407,17 @@
   EphemeralRange marker_range = PlainTextRange(0, 5).CreateRange(*div);
   GetDocument().Markers().AddActiveSuggestionMarker(
       marker_range, Color::kBlack, ImeTextSpanThickness::kThin,
-      ImeTextSpanUnderlineStyle::kSolid, 0, Color::kBlack);
+      ImeTextSpanUnderlineStyle::kSolid, Color::kTransparent, Color::kBlack);
 
   marker_range = PlainTextRange(5, 10).CreateRange(*div);
   GetDocument().Markers().AddActiveSuggestionMarker(
       marker_range, Color::kBlack, ImeTextSpanThickness::kThin,
-      ImeTextSpanUnderlineStyle::kSolid, 0, Color::kBlack);
+      ImeTextSpanUnderlineStyle::kSolid, Color::kTransparent, Color::kBlack);
 
   marker_range = PlainTextRange(10, 15).CreateRange(*div);
   GetDocument().Markers().AddActiveSuggestionMarker(
       marker_range, Color::kBlack, ImeTextSpanThickness::kThin,
-      ImeTextSpanUnderlineStyle::kSolid, 0, Color::kBlack);
+      ImeTextSpanUnderlineStyle::kSolid, Color::kTransparent, Color::kBlack);
 
   EXPECT_EQ(3u, GetDocument().Markers().Markers().size());
 
@@ -2440,17 +2482,17 @@
   EphemeralRange marker_range = PlainTextRange(0, 5).CreateRange(*div);
   GetDocument().Markers().AddActiveSuggestionMarker(
       marker_range, Color::kBlack, ImeTextSpanThickness::kThin,
-      ImeTextSpanUnderlineStyle::kSolid, 0, Color::kBlack);
+      ImeTextSpanUnderlineStyle::kSolid, Color::kTransparent, Color::kBlack);
 
   marker_range = PlainTextRange(5, 15).CreateRange(*div);
   GetDocument().Markers().AddActiveSuggestionMarker(
       marker_range, Color::kBlack, ImeTextSpanThickness::kThin,
-      ImeTextSpanUnderlineStyle::kSolid, 0, Color::kBlack);
+      ImeTextSpanUnderlineStyle::kSolid, Color::kTransparent, Color::kBlack);
 
   marker_range = PlainTextRange(15, 20).CreateRange(*div);
   GetDocument().Markers().AddActiveSuggestionMarker(
       marker_range, Color::kBlack, ImeTextSpanThickness::kThin,
-      ImeTextSpanUnderlineStyle::kSolid, 0, Color::kBlack);
+      ImeTextSpanUnderlineStyle::kSolid, Color::kTransparent, Color::kBlack);
 
   EXPECT_EQ(3u, GetDocument().Markers().Markers().size());
 
@@ -2610,7 +2652,8 @@
   Vector<ImeTextSpan> ime_text_spans;
   ime_text_spans.push_back(ImeTextSpan(
       ImeTextSpan::Type::kComposition, 0, 4, Color(255, 0, 0),
-      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid, 0, 0));
+      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid,
+      Color::kTransparent, Color::kTransparent));
   Controller().SetCompositionFromExistingText(Vector<ImeTextSpan>(), 0, 4);
   Controller().SetComposition("test", ime_text_spans, 0, 4);
 
@@ -2691,7 +2734,8 @@
   Vector<ImeTextSpan> ime_text_spans;
   ime_text_spans.push_back(ImeTextSpan(
       ImeTextSpan::Type::kComposition, 0, 1, Color(255, 0, 0),
-      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid, 0, 0));
+      ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid,
+      Color::kTransparent, Color::kTransparent));
   Controller().CommitText(" ", ime_text_spans, 0);
   // Add character U+094D: 'DEVANAGARI SIGN VIRAMA'
   Controller().SetComposition(String::FromUTF8("\xE0\xA5\x8D"), ime_text_spans,
diff --git a/third_party/blink/renderer/core/editing/serializers/serialization_test.cc b/third_party/blink/renderer/core/editing/serializers/serialization_test.cc
index cd32aa1..2f8fcb2 100644
--- a/third_party/blink/renderer/core/editing/serializers/serialization_test.cc
+++ b/third_party/blink/renderer/core/editing/serializers/serialization_test.cc
@@ -70,7 +70,7 @@
   // a1
   ASSERT_THAT(style1.InsideLink(), EInsideLink::kNotInsideLink);
   ASSERT_THAT(style1.VisitedDependentColor(GetCSSPropertyColor()),
-              MakeRGB(1, 1, 1))
+              Color::FromRGB(1, 1, 1))
       << "should not be :visited/:link color";
   EXPECT_THAT(
       SerailizeToHTMLText(a1),
@@ -83,7 +83,7 @@
   // visited/unvisited state of link for privacy reason.
   ASSERT_THAT(style2.InsideLink(), EInsideLink::kInsideVisitedLink);
   ASSERT_THAT(style2.VisitedDependentColor(GetCSSPropertyColor()),
-              MakeRGB(3, 3, 3))
+              Color::FromRGB(3, 3, 3))
       << "should be :visited color";
   EXPECT_THAT(
       SerailizeToHTMLText(a2),
@@ -93,7 +93,7 @@
   // a3
   ASSERT_THAT(style3.InsideLink(), EInsideLink::kInsideUnvisitedLink);
   ASSERT_THAT(style3.VisitedDependentColor(GetCSSPropertyColor()),
-              MakeRGB(2, 2, 2))
+              Color::FromRGB(2, 2, 2))
       << "should be :link color";
   EXPECT_THAT(
       SerailizeToHTMLText(a3),
diff --git a/third_party/blink/renderer/core/editing/suggestion/text_suggestion_controller.cc b/third_party/blink/renderer/core/editing/suggestion/text_suggestion_controller.cc
index 4f07d25b..d49e8ab6 100644
--- a/third_party/blink/renderer/core/editing/suggestion/text_suggestion_controller.cc
+++ b/third_party/blink/renderer/core/editing/suggestion/text_suggestion_controller.cc
@@ -148,7 +148,8 @@
       node_suggestion_marker_pairs_sorted_by_length.front().second.Get());
 
   suggestion_infos_with_node_and_highlight_color.highlight_color =
-      (first_suggestion_marker->SuggestionHighlightColor() == 0)
+      (first_suggestion_marker->SuggestionHighlightColor() ==
+       Color::kTransparent)
           ? LayoutTheme::TapHighlightColor()
           : first_suggestion_marker->SuggestionHighlightColor();
 
@@ -428,9 +429,9 @@
   is_suggestion_menu_open_ = true;
   GetFrame().Selection().SetCaretEnabled(false);
   GetDocument().Markers().AddActiveSuggestionMarker(
-      active_suggestion_range, SK_ColorTRANSPARENT,
+      active_suggestion_range, Color::kTransparent,
       ui::mojom::ImeTextSpanThickness::kNone,
-      ui::mojom::ImeTextSpanUnderlineStyle::kSolid, SK_ColorTRANSPARENT,
+      ui::mojom::ImeTextSpanUnderlineStyle::kSolid, Color::kTransparent,
       LayoutTheme::GetTheme().PlatformActiveSpellingMarkerHighlightColor());
 
   Vector<String> suggestions;
@@ -496,8 +497,8 @@
                                     Position(text_node, span_union_end));
 
   GetDocument().Markers().AddActiveSuggestionMarker(
-      marker_range, SK_ColorTRANSPARENT, ui::mojom::ImeTextSpanThickness::kThin,
-      ui::mojom::ImeTextSpanUnderlineStyle::kSolid, SK_ColorTRANSPARENT,
+      marker_range, Color::kTransparent, ui::mojom::ImeTextSpanThickness::kThin,
+      ui::mojom::ImeTextSpanUnderlineStyle::kSolid, Color::kTransparent,
       suggestion_infos_with_node_and_highlight_color.highlight_color);
 
   is_suggestion_menu_open_ = true;
diff --git a/third_party/blink/renderer/core/exported/web_render_theme.cc b/third_party/blink/renderer/core/exported/web_render_theme.cc
index 8de1561..68c8ba1 100644
--- a/third_party/blink/renderer/core/exported/web_render_theme.cc
+++ b/third_party/blink/renderer/core/exported/web_render_theme.cc
@@ -41,16 +41,22 @@
 }
 
 void SetFocusRingColor(SkColor color) {
-  LayoutTheme::GetTheme().SetCustomFocusRingColor(color);
+  // TODO(https://crbug.com/1351544): SetFocusRing should specify an SkColor4f
+  // or a string.
+  LayoutTheme::GetTheme().SetCustomFocusRingColor(Color::FromSkColor(color));
 }
 
 void SetSelectionColors(unsigned active_background_color,
                         unsigned active_foreground_color,
                         unsigned inactive_background_color,
                         unsigned inactive_foreground_color) {
+  // TODO(https://crbug.com/1351544): SetSelectionColors should specify an
+  // SkColor4f or a string.
   LayoutTheme::GetTheme().SetSelectionColors(
-      active_background_color, active_foreground_color,
-      inactive_background_color, inactive_foreground_color);
+      Color::FromRGBA32(active_background_color),
+      Color::FromRGBA32(active_foreground_color),
+      Color::FromRGBA32(inactive_background_color),
+      Color::FromRGBA32(inactive_foreground_color));
 }
 
 void SystemColorsChanged() {
diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_party/blink/renderer/core/exported/web_view_impl.cc
index c91c868..6d15fc1 100644
--- a/third_party/blink/renderer/core/exported/web_view_impl.cc
+++ b/third_party/blink/renderer/core/exported/web_view_impl.cc
@@ -3143,12 +3143,16 @@
 
 Color WebViewImpl::BaseBackgroundColor() const {
   if (override_base_background_color_to_transparent_)
-    return SK_ColorTRANSPARENT;
-  if (base_background_color_override_for_inspector_)
-    return base_background_color_override_for_inspector_.value();
+    return Color::kTransparent;
+  // TODO(https://crbug.com/1351544): The base background color override should
+  // be an SkColor4f or a Color.
+  if (base_background_color_override_for_inspector_) {
+    return Color::FromSkColor(
+        base_background_color_override_for_inspector_.value());
+  }
   // Use the page background color if this is the WebView of the main frame.
   if (MainFrameImpl())
-    return page_base_background_color_;
+    return Color::FromSkColor(page_base_background_color_);
   return Color::kWhite;
 }
 
diff --git a/third_party/blink/renderer/core/exported/web_view_test.cc b/third_party/blink/renderer/core/exported/web_view_test.cc
index 9b26cd1..88598043 100644
--- a/third_party/blink/renderer/core/exported/web_view_test.cc
+++ b/third_party/blink/renderer/core/exported/web_view_test.cc
@@ -452,7 +452,7 @@
 
   // Creating a new frame view with the background color having 0 alpha.
   frame->CreateView(gfx::Size(1024, 768), Color::kTransparent);
-  EXPECT_EQ(SK_ColorTRANSPARENT, frame->View()->BaseBackgroundColor());
+  EXPECT_EQ(Color::kTransparent, frame->View()->BaseBackgroundColor());
   frame->View()->Dispose();
 
   const Color transparent_red(100, 0, 0, 0);
@@ -684,7 +684,7 @@
   EXPECT_EQ(original, OutlineColor(span1));
 
   // Set the focus ring color for the mobile theme to something known.
-  Color custom_color = MakeRGB(123, 145, 167);
+  Color custom_color = Color::FromRGB(123, 145, 167);
   {
     ScopedMobileLayoutThemeForTest mobile_layout_theme_enabled(true);
     LayoutTheme::GetTheme().SetCustomFocusRingColor(custom_color);
@@ -5329,8 +5329,9 @@
   Document* document = frame->GetFrame()->GetDocument();
   Element* div = document->getElementById("d");
 
-  EXPECT_EQ(MakeRGB(0, 128, 0), div->GetComputedStyle()->VisitedDependentColor(
-                                    GetCSSPropertyColor()));
+  EXPECT_EQ(
+      Color::FromRGB(0, 128, 0),
+      div->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
 
   gfx::Size page_size(300, 360);
 
@@ -5340,8 +5341,9 @@
   frame->PrintBegin(print_params, WebNode());
   frame->PrintEnd();
 
-  EXPECT_EQ(MakeRGB(0, 128, 0), div->GetComputedStyle()->VisitedDependentColor(
-                                    GetCSSPropertyColor()));
+  EXPECT_EQ(
+      Color::FromRGB(0, 128, 0),
+      div->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
 }
 
 TEST_F(WebViewTest, ViewportUnitsPrintingWithPageZoom) {
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 a89f1b9..d4c3c4c 100644
--- a/third_party/blink/renderer/core/frame/frame_overlay_test.cc
+++ b/third_party/blink/renderer/core/frame/frame_overlay_test.cc
@@ -71,7 +71,8 @@
   FrameOverlay* CreateSolidYellowOverlay() {
     return MakeGarbageCollected<FrameOverlay>(
         GetWebView()->MainFrameImpl()->GetFrame(),
-        std::make_unique<SolidColorOverlay>(SK_ColorYELLOW));
+        std::make_unique<SolidColorOverlay>(
+            Color::FromSkColor(SK_ColorYELLOW)));
   }
 
   template <typename OverlayType>
diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/blink/renderer/core/frame/local_frame.cc
index 32e90bd3..62b3496 100644
--- a/third_party/blink/renderer/core/frame/local_frame.cc
+++ b/third_party/blink/renderer/core/frame/local_frame.cc
@@ -2433,11 +2433,12 @@
                              gfx::Rect(view->Size()));
     gfx::RectF rect(0, 0, view->Width(), view->Height());
     graphics_context.FillRect(
-        rect, color_,
+        rect, Color::FromSkColor(color_),
         PaintAutoDarkMode(view->GetLayoutView()->StyleRef(),
                           DarkModeFilter::ElementRole::kBackground));
   }
 
+  // TODO(https://crbug.com/1351544): This should be an SkColor4f or a Color.
   SkColor color_;
   Persistent<LocalFrame> frame_;
 };
@@ -2458,7 +2459,7 @@
   if (frame_color_overlay_)
     frame_color_overlay_.Release()->Destroy();
 
-  if (color == Color::kTransparent)
+  if (color == SK_ColorTRANSPARENT)
     return;
 
   frame_color_overlay_ = MakeGarbageCollected<FrameOverlay>(
diff --git a/third_party/blink/renderer/core/frame/local_frame_test.cc b/third_party/blink/renderer/core/frame/local_frame_test.cc
index 2765783..68b2346 100644
--- a/third_party/blink/renderer/core/frame/local_frame_test.cc
+++ b/third_party/blink/renderer/core/frame/local_frame_test.cc
@@ -122,8 +122,9 @@
   Element* div = doc.getElementById("div");
   ASSERT_TRUE(div);
   ASSERT_TRUE(div->GetComputedStyle());
-  EXPECT_EQ(MakeRGB(0, 128, 0), div->GetComputedStyle()->VisitedDependentColor(
-                                    GetCSSPropertyColor()));
+  EXPECT_EQ(
+      Color::FromRGB(0, 128, 0),
+      div->GetComputedStyle()->VisitedDependentColor(GetCSSPropertyColor()));
 }
 
 }  // namespace
diff --git a/third_party/blink/renderer/core/frame/local_frame_view.cc b/third_party/blink/renderer/core/frame/local_frame_view.cc
index 808f06f..6f2c802 100644
--- a/third_party/blink/renderer/core/frame/local_frame_view.cc
+++ b/third_party/blink/renderer/core/frame/local_frame_view.cc
@@ -1991,8 +1991,10 @@
   Color doc_bg =
       background_source->ResolveColor(GetCSSPropertyBackgroundColor());
   if (background_source->StyleRef().ColorSchemeForced()) {
-    doc_bg = EnsureDarkModeFilter().InvertColorIfNeeded(
-        doc_bg.Rgb(), DarkModeFilter::ElementRole::kBackground);
+    // TODO(https://crbug.com/1351544): The DarkModeFilter operate on SkColor4f,
+    // and DocumentBackgroundColor should return an SkColor4f.
+    doc_bg = Color::FromSkColor(EnsureDarkModeFilter().InvertColorIfNeeded(
+        SkColor(doc_bg), DarkModeFilter::ElementRole::kBackground));
   }
   if (blend_with_base)
     return result.Blend(doc_bg);
diff --git a/third_party/blink/renderer/core/frame/web_frame_test.cc b/third_party/blink/renderer/core/frame/web_frame_test.cc
index 902b2db6..487a8b84 100644
--- a/third_party/blink/renderer/core/frame/web_frame_test.cc
+++ b/third_party/blink/renderer/core/frame/web_frame_test.cc
@@ -9048,7 +9048,7 @@
                                     &client);
   EXPECT_TRUE(host.DidNotify());
   WebLocalFrameImpl* frame = web_view_helper.LocalMainFrame();
-  EXPECT_EQ(Color(0, 0, 255), frame->GetDocument().ThemeColor());
+  EXPECT_EQ(SK_ColorBLUE, frame->GetDocument().ThemeColor());
   // Change color by rgb.
   host.Reset();
   frame->ExecuteScript(
@@ -9056,7 +9056,7 @@
                       "'rgb(0, 0, 0)');"));
   RunPendingTasks();
   EXPECT_TRUE(host.DidNotify());
-  EXPECT_EQ(Color::kBlack, frame->GetDocument().ThemeColor());
+  EXPECT_EQ(SK_ColorBLACK, frame->GetDocument().ThemeColor());
   // Change color by hsl.
   host.Reset();
   frame->ExecuteScript(
@@ -9064,7 +9064,7 @@
                       "'hsl(240,100%, 50%)');"));
   RunPendingTasks();
   EXPECT_TRUE(host.DidNotify());
-  EXPECT_EQ(Color(0, 0, 255), frame->GetDocument().ThemeColor());
+  EXPECT_EQ(SK_ColorBLUE, frame->GetDocument().ThemeColor());
   // Change of second theme-color meta tag will not change frame's theme
   // color.
   host.Reset();
@@ -9072,14 +9072,14 @@
       "document.getElementById('tc2').setAttribute('content', '#00FF00');"));
   RunPendingTasks();
   EXPECT_TRUE(host.DidNotify());
-  EXPECT_EQ(Color(0, 0, 255), frame->GetDocument().ThemeColor());
+  EXPECT_EQ(SK_ColorBLUE, frame->GetDocument().ThemeColor());
   // Remove the first theme-color meta tag to apply the second.
   host.Reset();
   frame->ExecuteScript(
       WebScriptSource("document.getElementById('tc1').remove();"));
   RunPendingTasks();
   EXPECT_TRUE(host.DidNotify());
-  EXPECT_EQ(Color(0, 255, 0), frame->GetDocument().ThemeColor());
+  EXPECT_EQ(SK_ColorGREEN, frame->GetDocument().ThemeColor());
   // Remove the name attribute of the remaining meta.
   host.Reset();
   frame->ExecuteScript(WebScriptSource(
diff --git a/third_party/blink/renderer/core/html/forms/color_chooser_popup_ui_controller.cc b/third_party/blink/renderer/core/html/forms/color_chooser_popup_ui_controller.cc
index 6b82bac..a9096f9 100644
--- a/third_party/blink/renderer/core/html/forms/color_chooser_popup_ui_controller.cc
+++ b/third_party/blink/renderer/core/html/forms/color_chooser_popup_ui_controller.cc
@@ -156,8 +156,12 @@
   DCHECK(client_->ShouldShowSuggestions());
 
   Vector<String> suggestion_values;
-  for (auto& suggestion : client_->Suggestions())
-    suggestion_values.push_back(Color(suggestion->color).Serialized());
+  for (auto& suggestion : client_->Suggestions()) {
+    // TODO(https://crbug.com/1351544): ColorSuggestions be sent as Color or
+    // SkColor4f.
+    suggestion_values.push_back(
+        Color::FromRGBA32(suggestion->color).Serialized());
+  }
   gfx::Rect anchor_rect_in_screen = chrome_client_->ViewportToScreen(
       client_->ElementRectRelativeToViewport(), frame_->View());
 
@@ -258,7 +262,9 @@
   scoped_refptr<SharedBuffer> data = SharedBuffer::Create();
   PagePopupClient::AddString("window.updateData = {\n", data.get());
   AddProperty("success", success, data.get());
-  AddProperty("color", Color(color).Serialized(), data.get());
+  // TODO(https://crbug.com/1351544): The EyeDropper should use Color or
+  // SkColor4f.
+  AddProperty("color", Color::FromRGBA32(color).Serialized(), data.get());
   PagePopupClient::AddString("}\n", data.get());
   popup_->PostMessageToPopup(String::FromUTF8(data->Data(), data->size()));
 }
diff --git a/third_party/blink/renderer/core/html/forms/color_chooser_ui_controller.cc b/third_party/blink/renderer/core/html/forms/color_chooser_ui_controller.cc
index a106f5b4..c925730 100644
--- a/third_party/blink/renderer/core/html/forms/color_chooser_ui_controller.cc
+++ b/third_party/blink/renderer/core/html/forms/color_chooser_ui_controller.cc
@@ -76,7 +76,7 @@
 }
 
 void ColorChooserUIController::DidChooseColor(uint32_t color) {
-  client_->DidChooseColor(color);
+  client_->DidChooseColor(Color::FromRGBA32(color));
 }
 
 #if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_MAC)
diff --git a/third_party/blink/renderer/core/layout/collapsed_border_value.h b/third_party/blink/renderer/core/layout/collapsed_border_value.h
index 40f0a85..48aec6c3 100644
--- a/third_party/blink/renderer/core/layout/collapsed_border_value.h
+++ b/third_party/blink/renderer/core/layout/collapsed_border_value.h
@@ -49,7 +49,7 @@
  public:
   // Constructs a CollapsedBorderValue for non-existence border.
   CollapsedBorderValue()
-      : color_(0),
+      : color_(Color::kTransparent),
         width_(0),
         style_(static_cast<unsigned>(EBorderStyle::kNone)),
         precedence_(kBorderPrecedenceOff) {}
diff --git a/third_party/blink/renderer/core/layout/layout_theme.cc b/third_party/blink/renderer/core/layout/layout_theme.cc
index 3687f5b..8818343 100644
--- a/third_party/blink/renderer/core/layout/layout_theme.cc
+++ b/third_party/blink/renderer/core/layout/layout_theme.cc
@@ -556,7 +556,7 @@
 
   switch (css_value_id) {
     case CSSValueID::kActivetext:
-      return 0xFFFF0000;
+      return Color::FromRGBA32(0xFFFF0000);
     case CSSValueID::kButtonborder:
     // The following system colors were deprecated to default to ButtonBorder.
     case CSSValueID::kActiveborder:
@@ -566,18 +566,21 @@
     case CSSValueID::kThreedlightshadow:
     case CSSValueID::kThreedshadow:
     case CSSValueID::kWindowframe:
-      return color_scheme == mojom::blink::ColorScheme::kDark ? 0xFF6B6B6B
-                                                              : 0xFF767676;
+      return color_scheme == mojom::blink::ColorScheme::kDark
+                 ? Color::FromRGBA32(0xFF6B6B6B)
+                 : Color::FromRGBA32(0xFF767676);
     case CSSValueID::kButtonface:
     // The following system colors were deprecated to default to ButtonFace.
     case CSSValueID::kButtonhighlight:
     case CSSValueID::kButtonshadow:
     case CSSValueID::kThreedface:
-      return color_scheme == mojom::blink::ColorScheme::kDark ? 0xFF6B6B6B
-                                                              : 0xFFEFEFEF;
+      return color_scheme == mojom::blink::ColorScheme::kDark
+                 ? Color::FromRGBA32(0xFF6B6B6B)
+                 : Color::FromRGBA32(0xFFEFEFEF);
     case CSSValueID::kButtontext:
-      return color_scheme == mojom::blink::ColorScheme::kDark ? 0xFFFFFFFF
-                                                              : 0xFF000000;
+      return color_scheme == mojom::blink::ColorScheme::kDark
+                 ? Color::FromRGBA32(0xFFFFFFFF)
+                 : Color::FromRGBA32(0xFF000000);
     case CSSValueID::kCanvas:
     // The following system colors were deprecated to default to Canvas.
     case CSSValueID::kAppworkspace:
@@ -587,8 +590,9 @@
     case CSSValueID::kMenu:
     case CSSValueID::kScrollbar:
     case CSSValueID::kWindow:
-      return color_scheme == mojom::blink::ColorScheme::kDark ? 0xFF121212
-                                                              : 0xFFFFFFFF;
+      return color_scheme == mojom::blink::ColorScheme::kDark
+                 ? Color::FromRGBA32(0xFF121212)
+                 : Color::FromRGBA32(0xFFFFFFFF);
     case CSSValueID::kCanvastext:
     // The following system colors were deprecated to default to CanvasText.
     case CSSValueID::kActivecaption:
@@ -596,35 +600,40 @@
     case CSSValueID::kInfotext:
     case CSSValueID::kMenutext:
     case CSSValueID::kWindowtext:
-      return color_scheme == mojom::blink::ColorScheme::kDark ? 0xFFFFFFFF
-                                                              : 0xFF000000;
+      return color_scheme == mojom::blink::ColorScheme::kDark
+                 ? Color::FromRGBA32(0xFFFFFFFF)
+                 : Color::FromRGBA32(0xFF000000);
 
     case CSSValueID::kField:
-      return color_scheme == mojom::blink::ColorScheme::kDark ? 0xFF3B3B3B
-                                                              : 0xFFFFFFFF;
+      return color_scheme == mojom::blink::ColorScheme::kDark
+                 ? Color::FromRGBA32(0xFF3B3B3B)
+                 : Color::FromRGBA32(0xFFFFFFFF);
     case CSSValueID::kFieldtext:
-      return color_scheme == mojom::blink::ColorScheme::kDark ? 0xFFFFFFFF
-                                                              : 0xFF000000;
+      return color_scheme == mojom::blink::ColorScheme::kDark
+                 ? Color::FromRGBA32(0xFFFFFFFF)
+                 : Color::FromRGBA32(0xFF000000);
     case CSSValueID::kGraytext:
     // The following system color was deprecated to default to GrayText.
     case CSSValueID::kInactivecaptiontext:
-      return 0xFF808080;
+      return Color::FromRGBA32(0xFF808080);
     case CSSValueID::kHighlight:
-      return 0xFFB5D5FF;
+      return Color::FromRGBA32(0xFFB5D5FF);
     case CSSValueID::kHighlighttext:
-      return color_scheme == mojom::blink::ColorScheme::kDark ? 0xFFFFFFFF
-                                                              : 0xFF000000;
+      return color_scheme == mojom::blink::ColorScheme::kDark
+                 ? Color::FromRGBA32(0xFFFFFFFF)
+                 : Color::FromRGBA32(0xFF000000);
     case CSSValueID::kLinktext:
-      return 0xFF0000EE;
+      return Color::FromRGBA32(0xFF0000EE);
     case CSSValueID::kMark:
-      return 0xFFFFFF00;
+      return Color::FromRGBA32(0xFFFFFF00);
     case CSSValueID::kMarktext:
-      return 0xFF000000;
+      return Color::FromRGBA32(0xFF000000);
     case CSSValueID::kText:
-      return color_scheme == mojom::blink::ColorScheme::kDark ? 0xFFFFFFFF
-                                                              : 0xFF000000;
+      return color_scheme == mojom::blink::ColorScheme::kDark
+                 ? Color::FromRGBA32(0xFFFFFFFF)
+                 : Color::FromRGBA32(0xFF000000);
     case CSSValueID::kVisitedtext:
-      return 0xFF551A8B;
+      return Color::FromRGBA32(0xFF551A8B);
     case CSSValueID::kSelecteditem:
     case CSSValueID::kInternalActiveListBoxSelection:
       return ActiveListBoxSelectionBackgroundColor(color_scheme);
@@ -711,7 +720,7 @@
   const absl::optional<SkColor> system_color =
       WebThemeEngineHelper::GetNativeThemeEngine()->GetSystemColor(theme_color);
   if (system_color)
-    return Color(system_color.value());
+    return Color::FromSkColor((system_color.value()));
   return DefaultSystemColor(css_value_id, color_scheme);
 }
 
diff --git a/third_party/blink/renderer/core/layout/layout_theme.h b/third_party/blink/renderer/core/layout/layout_theme.h
index 98b05e6c..37834ccd6 100644
--- a/third_party/blink/renderer/core/layout/layout_theme.h
+++ b/third_party/blink/renderer/core/layout/layout_theme.h
@@ -253,9 +253,11 @@
 
   // This color is expected to be drawn on a semi-transparent overlay,
   // making it more transparent than its alpha value indicates.
-  static const RGBA32 kDefaultTapHighlightColor = 0x66000000;
+  static constexpr Color kDefaultTapHighlightColor =
+      Color::FromRGBA32(0x66000000);
 
-  static const RGBA32 kDefaultCompositionBackgroundColor = 0xFFFFDD55;
+  static constexpr Color kDefaultCompositionBackgroundColor =
+      Color::FromRGBA32(0xFFFFDD55);
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/layout/layout_theme_android.cc b/third_party/blink/renderer/core/layout/layout_theme_android.cc
index 2ee1187..bda07859 100644
--- a/third_party/blink/renderer/core/layout/layout_theme_android.cc
+++ b/third_party/blink/renderer/core/layout/layout_theme_android.cc
@@ -23,7 +23,7 @@
 Color LayoutThemeAndroid::PlatformActiveSelectionBackgroundColor(
     mojom::blink::ColorScheme color_scheme) const {
   return color_scheme == mojom::blink::ColorScheme::kDark
-             ? 0xFF99C8FF
+             ? Color::FromRGBA32(0xFF99C8FF)
              : LayoutThemeMobile::PlatformActiveSelectionBackgroundColor(
                    color_scheme);
 }
@@ -31,7 +31,7 @@
 Color LayoutThemeAndroid::PlatformActiveSelectionForegroundColor(
     mojom::blink::ColorScheme color_scheme) const {
   return color_scheme == mojom::blink::ColorScheme::kDark
-             ? 0xFF3B3B3B
+             ? Color::FromRGBA32(0xFF3B3B3B)
              : LayoutThemeMobile::PlatformActiveSelectionForegroundColor(
                    color_scheme);
 }
diff --git a/third_party/blink/renderer/core/layout/layout_theme_default.cc b/third_party/blink/renderer/core/layout/layout_theme_default.cc
index f301834..ac7fe0e 100644
--- a/third_party/blink/renderer/core/layout/layout_theme_default.cc
+++ b/third_party/blink/renderer/core/layout/layout_theme_default.cc
@@ -45,20 +45,26 @@
 static const float kMinCancelButtonSize = 5;
 static const float kMaxCancelButtonSize = 21;
 
-Color LayoutThemeDefault::active_selection_background_color_ = 0xFF1E90FF;
-Color LayoutThemeDefault::active_selection_foreground_color_ = 0xFF000000;
-Color LayoutThemeDefault::inactive_selection_background_color_ = 0xFFC8C8C8;
-Color LayoutThemeDefault::inactive_selection_foreground_color_ = 0xFF323232;
+Color LayoutThemeDefault::active_selection_background_color_ =
+    Color::FromRGBA32(0xFF1E90FF);
+Color LayoutThemeDefault::active_selection_foreground_color_ =
+    Color::FromRGBA32(0xFF000000);
+Color LayoutThemeDefault::inactive_selection_background_color_ =
+    Color::FromRGBA32(0xFFC8C8C8);
+Color LayoutThemeDefault::inactive_selection_foreground_color_ =
+    Color::FromRGBA32(0xFF323232);
 Color
     LayoutThemeDefault::active_list_box_selection_background_color_dark_mode_ =
-        0xFF99C8FF;
+        Color::FromRGBA32(0xFF99C8FF);
 Color
     LayoutThemeDefault::active_list_box_selection_foreground_color_dark_mode_ =
-        0xFF3B3B3B;
+        Color::FromRGBA32(0xFF3B3B3B);
 Color LayoutThemeDefault::
-    inactive_list_box_selection_background_color_dark_mode_ = 0x4D3B3B3B;
+    inactive_list_box_selection_background_color_dark_mode_ =
+        Color::FromRGBA32(0x4D3B3B3B);
 Color LayoutThemeDefault::
-    inactive_list_box_selection_foreground_color_dark_mode_ = 0xFF323232;
+    inactive_list_box_selection_foreground_color_dark_mode_ =
+        Color::FromRGBA32(0xFF323232);
 
 LayoutThemeDefault::LayoutThemeDefault() : painter_(*this) {}
 
@@ -176,7 +182,7 @@
 }
 
 Color LayoutThemeDefault::PlatformFocusRingColor() const {
-  constexpr Color focus_ring_color(0xFFE59700);
+  constexpr Color focus_ring_color = Color::FromRGBA32(0xFFE59700);
   return focus_ring_color;
 }
 
diff --git a/third_party/blink/renderer/core/layout/layout_theme_default.h b/third_party/blink/renderer/core/layout/layout_theme_default.h
index 442b1f9..1e91320 100644
--- a/third_party/blink/renderer/core/layout/layout_theme_default.h
+++ b/third_party/blink/renderer/core/layout/layout_theme_default.h
@@ -65,7 +65,7 @@
   void AdjustButtonStyle(ComputedStyle&) const override;
 
   Color PlatformTapHighlightColor() const override {
-    return Color(kDefaultTapHighlightColor);
+    return kDefaultTapHighlightColor;
   }
 
   void SetSelectionColors(Color active_background_color,
@@ -110,7 +110,8 @@
 
   int MenuListInternalPadding(const ComputedStyle&, int padding) const;
 
-  static const RGBA32 kDefaultTapHighlightColor = 0x2e000000;  // 18% black.
+  static constexpr Color kDefaultTapHighlightColor =
+      Color::FromRGBA32(0x2e000000);  // 18% black.
 
   static Color active_selection_background_color_;
   static Color active_selection_foreground_color_;
diff --git a/third_party/blink/renderer/core/layout/layout_theme_mac.mm b/third_party/blink/renderer/core/layout/layout_theme_mac.mm
index daca69a..a95eed4d 100644
--- a/third_party/blink/renderer/core/layout/layout_theme_mac.mm
+++ b/third_party/blink/renderer/core/layout/layout_theme_mac.mm
@@ -44,7 +44,8 @@
   auto* sandbox_support = Platform::Current()->GetSandboxSupport();
   if (!sandbox_support)
     return Color();
-  return sandbox_support->GetSystemColor(color_id, color_scheme);
+  return Color::FromSkColor(
+      sandbox_support->GetSystemColor(color_id, color_scheme));
 }
 }
 
@@ -108,22 +109,25 @@
   if (@available(macOS 10.14, *)) {
     return GetSystemColor(MacSystemColorID::kControlAccentColor, color_scheme);
   } else {
-    return static_cast<RGBA32>([[NSUserDefaults standardUserDefaults]
-        integerForKey:@"AppleAquaColorVariant"]);
+    return Color::FromRGBA32(
+        static_cast<RGBA32>([[NSUserDefaults standardUserDefaults]
+            integerForKey:@"AppleAquaColorVariant"]));
   }
 }
 
 Color LayoutThemeMac::GetCustomFocusRingColor(
     mojom::blink::ColorScheme color_scheme) const {
   return color_scheme == mojom::blink::ColorScheme::kDark
-             ? SkColorSetRGB(0x99, 0xC8, 0xFF)
+             ? Color::FromRGB(0x99, 0xC8, 0xFF)
              : LayoutTheme::GetCustomFocusRingColor();
 }
 
 Color LayoutThemeMac::FocusRingColor(
     mojom::blink::ColorScheme color_scheme) const {
-  static const RGBA32 kDefaultFocusRingColorLight = 0xFF101010;
-  static const RGBA32 kDefaultFocusRingColorDark = 0xFF99C8FF;
+  const Color kDefaultFocusRingColorLight =
+      Color::FromRGBA(0x10, 0x10, 0x10, 0xFF);
+  const Color kDefaultFocusRingColorDark =
+      Color::FromRGBA(0x99, 0xC8, 0xFF, 0xFF);
   if (UsesTestModeFocusRingColor()) {
     return HasCustomFocusRingColor()
                ? GetCustomFocusRingColor(color_scheme)
@@ -134,14 +138,14 @@
 
   if (ui::NativeTheme::GetInstanceForWeb()->UserHasContrastPreference()) {
     // When high contrast is enabled, #101010 should be used.
-    return Color(0xFF101010);
+    return Color::FromRGBA(0x10, 0x10, 0x10, 0xFF);
   }
 
   SkColor keyboard_focus_indicator = SkColor(
       GetSystemColor(MacSystemColorID::kKeyboardFocusIndicator, color_scheme));
-  Color focus_ring =
+  Color focus_ring = Color::FromSkColor(
       ui::NativeTheme::GetInstanceForWeb()->FocusRingColorForBaseColor(
-          keyboard_focus_indicator);
+          keyboard_focus_indicator));
 
   if (!HasCustomFocusRingColor())
     return focus_ring;
diff --git a/third_party/blink/renderer/core/layout/layout_theme_mobile.h b/third_party/blink/renderer/core/layout/layout_theme_mobile.h
index 09ee09d..34eb64b 100644
--- a/third_party/blink/renderer/core/layout/layout_theme_mobile.h
+++ b/third_party/blink/renderer/core/layout/layout_theme_mobile.h
@@ -52,8 +52,10 @@
   ~LayoutThemeMobile() override;
 
  private:
-  static const RGBA32 kDefaultTapHighlightColor = 0x6633b5e5;
-  static const RGBA32 kDefaultActiveSelectionBackgroundColor = 0x6633b5e5;
+  static constexpr Color kDefaultTapHighlightColor =
+      Color::FromRGBA32(0x6633b5e5);
+  static constexpr Color kDefaultActiveSelectionBackgroundColor =
+      Color::FromRGBA32(0x6633b5e5);
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/layout/layout_theme_test.cc b/third_party/blink/renderer/core/layout/layout_theme_test.cc
index 6d83b2fc..c6752c6 100644
--- a/third_party/blink/renderer/core/layout/layout_theme_test.cc
+++ b/third_party/blink/renderer/core/layout/layout_theme_test.cc
@@ -48,7 +48,7 @@
   EXPECT_NE(nullptr, span);
   EXPECT_NE(nullptr, span->GetLayoutObject());
 
-  Color custom_color = MakeRGB(123, 145, 167);
+  Color custom_color = Color::FromRGB(123, 145, 167);
 
   // Checking unfocused style.
   EXPECT_EQ(EBorderStyle::kNone, OutlineStyle(span));
diff --git a/third_party/blink/renderer/core/layout/ng/ng_out_of_flow_layout_part.cc b/third_party/blink/renderer/core/layout/ng/ng_out_of_flow_layout_part.cc
index 1fc26ec0..c4c8999 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_out_of_flow_layout_part.cc
+++ b/third_party/blink/renderer/core/layout/ng/ng_out_of_flow_layout_part.cc
@@ -1110,7 +1110,8 @@
         // column balancing. However, if the containing block has not finished
         // layout, we should wait to lay out the OOF in case its position is
         // dependent on its containing block's final size.
-        if (containing_block->PhysicalFragments().back().BreakToken()) {
+        if (containing_block->PhysicalFragments().IsEmpty() ||
+            containing_block->PhysicalFragments().back().BreakToken()) {
           delayed_descendants_.push_back(descendant);
           continue;
         }
diff --git a/third_party/blink/renderer/core/page/plugin_data.cc b/third_party/blink/renderer/core/page/plugin_data.cc
index 8a1c903..cada4c6 100644
--- a/third_party/blink/renderer/core/page/plugin_data.cc
+++ b/third_party/blink/renderer/core/page/plugin_data.cc
@@ -113,7 +113,8 @@
   for (const auto& plugin : plugins) {
     auto* plugin_info = MakeGarbageCollected<PluginInfo>(
         std::move(plugin->name), FilePathToWebString(plugin->filename),
-        std::move(plugin->description), plugin->background_color,
+        std::move(plugin->description),
+        Color::FromRGBA32(plugin->background_color),
         plugin->may_use_external_handler);
     plugins_.push_back(plugin_info);
     for (const auto& mime : plugin->mime_types) {
diff --git a/third_party/blink/renderer/core/paint/box_painter_base.cc b/third_party/blink/renderer/core/paint/box_painter_base.cc
index 76fcf9a..8762193 100644
--- a/third_party/blink/renderer/core/paint/box_painter_base.cc
+++ b/third_party/blink/renderer/core/paint/box_painter_base.cc
@@ -172,11 +172,13 @@
         style.UsedColorScheme());
     // DarkModeFilter::ApplyToFlagsIfNeeded does not apply dark mode to the draw
     // looper used for shadows so we need to apply dark mode to the color here.
-    const Color& shadow_color =
-        style.ForceDark() ? context.GetDarkModeFilter()->InvertColorIfNeeded(
-                                resolved_shadow_color.Rgb(),
-                                DarkModeFilter::ElementRole::kBackground)
-                          : resolved_shadow_color;
+    const Color shadow_color =
+        style.ForceDark()
+            ? Color::FromSkColor(
+                  context.GetDarkModeFilter()->InvertColorIfNeeded(
+                      SkColor(resolved_shadow_color),
+                      DarkModeFilter::ElementRole::kBackground))
+            : resolved_shadow_color;
 
     gfx::RectF fill_rect = border.Rect();
     fill_rect.Outset(shadow_spread);
@@ -323,10 +325,12 @@
     // DarkModeFilter::ApplyToFlagsIfNeeded does not apply dark mode to the draw
     // looper used for shadows so we need to apply dark mode to the color here.
     const Color& shadow_color =
-        style.ForceDark() ? context.GetDarkModeFilter()->InvertColorIfNeeded(
-                                resolved_shadow_color.Rgb(),
-                                DarkModeFilter::ElementRole::kBackground)
-                          : resolved_shadow_color;
+        style.ForceDark()
+            ? Color::FromSkColor(
+                  context.GetDarkModeFilter()->InvertColorIfNeeded(
+                      SkColor(resolved_shadow_color),
+                      DarkModeFilter::ElementRole::kBackground))
+            : resolved_shadow_color;
 
     gfx::RectF inner_rect = bounds.Rect();
     AdjustInnerRectForSideClipping(inner_rect, shadow, sides_to_include);
diff --git a/third_party/blink/renderer/core/paint/embedded_object_painter.cc b/third_party/blink/renderer/core/paint/embedded_object_painter.cc
index 2485fe1..5afc1ed 100644
--- a/third_party/blink/renderer/core/paint/embedded_object_painter.cc
+++ b/third_party/blink/renderer/core/paint/embedded_object_painter.cc
@@ -76,7 +76,8 @@
   FloatRoundedRect rounded_background_rect(
       gfx::RectF(ToPixelSnappedRect(background_rect)),
       kReplacementTextRoundedRectRadius);
-  Color color = ScaleAlpha(SK_ColorWHITE, kReplacementTextRoundedRectOpacity);
+  Color color = Color::FromSkColor(
+      ScaleAlpha(SK_ColorWHITE, kReplacementTextRoundedRectOpacity));
   AutoDarkMode auto_dark_mode(
       PaintAutoDarkMode(layout_embedded_object_.StyleRef(),
                         DarkModeFilter::ElementRole::kBackground));
@@ -86,7 +87,8 @@
   text_rect.Offset(gfx::PointF(content_rect.Center()) -
                    text_rect.CenterPoint());
   TextRunPaintInfo run_info(text_run);
-  context.SetFillColor(ScaleAlpha(SK_ColorBLACK, kReplacementTextTextOpacity));
+  context.SetFillColor(Color::FromSkColor(
+      ScaleAlpha(SK_ColorBLACK, kReplacementTextTextOpacity)));
   context.DrawBidiText(
       font, run_info,
       text_rect.origin() +
diff --git a/third_party/blink/renderer/core/paint/highlight_painting_utils.cc b/third_party/blink/renderer/core/paint/highlight_painting_utils.cc
index f4414a38..7f1ab392 100644
--- a/third_party/blink/renderer/core/paint/highlight_painting_utils.cc
+++ b/third_party/blink/renderer/core/paint/highlight_painting_utils.cc
@@ -123,7 +123,8 @@
                  : LayoutTheme::GetTheme().InactiveSelectionBackgroundColor(
                        style.UsedColorScheme());
     case kPseudoIdTargetText:
-      return Color(shared_highlighting::kFragmentTextBackgroundColorARGB);
+      return Color::FromRGBA32(
+          shared_highlighting::kFragmentTextBackgroundColorARGB);
     case kPseudoIdSpellingError:
     case kPseudoIdGrammarError:
     case kPseudoIdHighlight:
diff --git a/third_party/blink/renderer/core/scroll/scrollbar_theme_overlay_mobile.cc b/third_party/blink/renderer/core/scroll/scrollbar_theme_overlay_mobile.cc
index 4d6d1c7..8330ed0a 100644
--- a/third_party/blink/renderer/core/scroll/scrollbar_theme_overlay_mobile.cc
+++ b/third_party/blink/renderer/core/scroll/scrollbar_theme_overlay_mobile.cc
@@ -44,7 +44,8 @@
       ScrollbarThemeOverlayMobile, theme,
       (ScrollbarStyle().thumb_thickness, ScrollbarStyle().scrollbar_margin,
        ScrollbarStyle().thumb_thickness_thin,
-       ScrollbarStyle().scrollbar_margin_thin, ScrollbarStyle().color));
+       ScrollbarStyle().scrollbar_margin_thin,
+       Color::FromSkColor(ScrollbarStyle().color)));
   return theme;
 }
 
diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d_state.cc b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d_state.cc
index e72ce1a5..416abc8 100644
--- a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d_state.cc
+++ b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d_state.cc
@@ -571,7 +571,7 @@
   if (!shadow_only_draw_looper_) {
     DrawLooperBuilder draw_looper_builder;
     draw_looper_builder.AddShadow(shadow_offset_, ClampTo<float>(shadow_blur_),
-                                  shadow_color_,
+                                  Color::FromSkColor(shadow_color_),
                                   DrawLooperBuilder::kShadowIgnoresTransforms,
                                   DrawLooperBuilder::kShadowRespectsAlpha);
     shadow_only_draw_looper_ = draw_looper_builder.DetachDrawLooper();
@@ -584,7 +584,7 @@
   if (!shadow_and_foreground_draw_looper_) {
     DrawLooperBuilder draw_looper_builder;
     draw_looper_builder.AddShadow(shadow_offset_, ClampTo<float>(shadow_blur_),
-                                  shadow_color_,
+                                  Color::FromSkColor(shadow_color_),
                                   DrawLooperBuilder::kShadowIgnoresTransforms,
                                   DrawLooperBuilder::kShadowRespectsAlpha);
     draw_looper_builder.AddUnmodifiedContent();
diff --git a/third_party/blink/renderer/modules/media_capabilities/media_capabilities_decoding_info.idl b/third_party/blink/renderer/modules/media_capabilities/media_capabilities_decoding_info.idl
index 8ddb1de..3695616 100644
--- a/third_party/blink/renderer/modules/media_capabilities/media_capabilities_decoding_info.idl
+++ b/third_party/blink/renderer/modules/media_capabilities/media_capabilities_decoding_info.idl
@@ -5,5 +5,5 @@
 // https://wicg.github.io/media-capabilities/#dictdef-mediacapabilitiesdecodinginfo
 
 dictionary MediaCapabilitiesDecodingInfo : MediaCapabilitiesInfo {
-    [RuntimeEnabled=MediaCapabilitiesEncryptedMedia] MediaKeySystemAccess? keySystemAccess = null;
+    MediaKeySystemAccess? keySystemAccess = null;
 };
diff --git a/third_party/blink/renderer/modules/media_capabilities/media_decoding_configuration.idl b/third_party/blink/renderer/modules/media_capabilities/media_decoding_configuration.idl
index 64aec03..30cb378 100644
--- a/third_party/blink/renderer/modules/media_capabilities/media_decoding_configuration.idl
+++ b/third_party/blink/renderer/modules/media_capabilities/media_decoding_configuration.idl
@@ -14,5 +14,5 @@
 
 dictionary MediaDecodingConfiguration : MediaConfiguration {
     required MediaDecodingType type;
-    [RuntimeEnabled=MediaCapabilitiesEncryptedMedia] MediaCapabilitiesKeySystemConfiguration keySystemConfiguration;
+    MediaCapabilitiesKeySystemConfiguration keySystemConfiguration;
 };
diff --git a/third_party/blink/renderer/modules/payments/payment_manager.idl b/third_party/blink/renderer/modules/payments/payment_manager.idl
index fc8b8d33..93ca3db2 100644
--- a/third_party/blink/renderer/modules/payments/payment_manager.idl
+++ b/third_party/blink/renderer/modules/payments/payment_manager.idl
@@ -17,5 +17,5 @@
 ] interface PaymentManager {
     [SameObject, MeasureAs=PaymentInstruments] readonly attribute PaymentInstruments instruments;
     attribute DOMString userHint;
-    [CallWith=ScriptState, RaisesException] Promise<void> enableDelegations(FrozenArray<PaymentDelegation> delegations);
+    [CallWith=ScriptState, RaisesException] Promise<void> enableDelegations(sequence<PaymentDelegation> delegations);
 };
diff --git a/third_party/blink/renderer/modules/payments/payment_request_details_update.idl b/third_party/blink/renderer/modules/payments/payment_request_details_update.idl
index 5654d80c..e319ac6 100644
--- a/third_party/blink/renderer/modules/payments/payment_request_details_update.idl
+++ b/third_party/blink/renderer/modules/payments/payment_request_details_update.idl
@@ -7,8 +7,8 @@
 dictionary PaymentRequestDetailsUpdate {
   DOMString error;
   PaymentCurrencyAmount total;
-  FrozenArray<PaymentDetailsModifier> modifiers;
-  FrozenArray<PaymentShippingOption> shippingOptions;
+  sequence<PaymentDetailsModifier> modifiers;
+  sequence<PaymentShippingOption> shippingOptions;
   object paymentMethodErrors;
   AddressErrors shippingAddressErrors;
 };
diff --git a/third_party/blink/renderer/platform/graphics/color.cc b/third_party/blink/renderer/platform/graphics/color.cc
index 358e655..91629344 100644
--- a/third_party/blink/renderer/platform/graphics/color.cc
+++ b/third_party/blink/renderer/platform/graphics/color.cc
@@ -304,8 +304,8 @@
 
 Color Color::Light() const {
   // Hardcode this common case for speed.
-  if (color_ == kBlack)
-    return kLightenedBlack;
+  if (color_ == kBlack.color_)
+    return Color(kLightenedBlack);
 
   const float scale_factor = nextafterf(256.0f, 0.0f);
 
@@ -327,8 +327,8 @@
 
 Color Color::Dark() const {
   // Hardcode this common case for speed.
-  if (color_ == kWhite)
-    return kDarkenedWhite;
+  if (color_ == kWhite.color_)
+    return Color(kDarkenedWhite);
 
   const float scale_factor = nextafterf(256.0f, 0.0f);
 
@@ -346,7 +346,7 @@
 Color Color::CombineWithAlpha(float other_alpha) const {
   RGBA32 rgb_only = Rgb() & 0x00FFFFFF;
   float override_alpha = (Alpha() / 255.f) * other_alpha;
-  return rgb_only | ColorFloatToRGBAByte(override_alpha) << 24;
+  return Color(rgb_only | ColorFloatToRGBAByte(override_alpha) << 24);
 }
 
 Color Color::Blend(const Color& source) const {
diff --git a/third_party/blink/renderer/platform/graphics/color.h b/third_party/blink/renderer/platform/graphics/color.h
index f9b58c0..f601a3a 100644
--- a/third_party/blink/renderer/platform/graphics/color.h
+++ b/third_party/blink/renderer/platform/graphics/color.h
@@ -80,9 +80,6 @@
   // The default constructor creates a transparent color.
   constexpr Color() : color_(0) {}
 
-  // TODO(crbug.com/1351544): Make this constructor explicit and private.
-  constexpr Color(RGBA32 color) : color_(color) {}
-
   // TODO(crbug.com/1351544): Replace these constructors with explicit From
   // functions below. Replace the CreateUnchecked functions with FromRGB and
   // FromRGBA.
@@ -106,12 +103,14 @@
 
   // Create a color using rgb() syntax.
   static constexpr Color FromRGB(int r, int g, int b) {
-    return Color(MakeRGB(r, g, b));
+    return Color(0xFF000000 | ClampInt(r) << 16 | ClampInt(g) << 8 |
+                 ClampInt(b));
   }
 
   // Create a color using rgba() syntax.
   static constexpr Color FromRGBA(int r, int g, int b, int a) {
-    return Color(MakeRGBA(r, g, b, a));
+    return Color(ClampInt(a) << 24 | ClampInt(r) << 16 | ClampInt(g) << 8 |
+                 ClampInt(b));
   }
 
   // Create a color using the hsl() syntax.
@@ -127,7 +126,7 @@
   // TODO(crbug.com/1308932): These three functions are just helpers for while
   // we're converting platform/graphics to float color.
   static Color FromSkColor4f(SkColor4f fc) {
-    return MakeRGBA32FromFloats(fc.fR, fc.fG, fc.fB, fc.fA);
+    return Color(MakeRGBA32FromFloats(fc.fR, fc.fG, fc.fB, fc.fA));
   }
   static constexpr Color FromSkColor(SkColor color) { return Color(color); }
   static constexpr Color FromRGBA32(RGBA32 color) { return Color(color); }
@@ -189,6 +188,10 @@
   static const Color kTransparent;
 
  private:
+  constexpr explicit Color(RGBA32 color) : color_(color) {}
+  static constexpr int ClampInt(int x) {
+    return x < 0 ? 0 : (x > 255 ? 255 : x);
+  }
   void GetHueMaxMin(double&, double&, double&) const;
 
   RGBA32 color_;
diff --git a/third_party/blink/renderer/platform/graphics/graphics_context.cc b/third_party/blink/renderer/platform/graphics/graphics_context.cc
index 86638b2..8e7de0b 100644
--- a/third_party/blink/renderer/platform/graphics/graphics_context.cc
+++ b/third_party/blink/renderer/platform/graphics/graphics_context.cc
@@ -96,8 +96,8 @@
   if (auto_dark_mode.enabled) {
     // TODO(https://crbug.com/1351544): DarkModeFilter should operate on
     // SkColor4f, not SkColor.
-    return context.GetDarkModeFilter()->InvertColorIfNeeded(
-        SkColor(color), auto_dark_mode.role);
+    return Color::FromSkColor(context.GetDarkModeFilter()->InvertColorIfNeeded(
+        SkColor(color), auto_dark_mode.role));
   }
   return color;
 }
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
index 4a0fc48..43635dd 100644
--- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
+++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -1374,10 +1374,6 @@
       status: "experimental",
     },
     {
-      name: "MediaCapabilitiesEncryptedMedia",
-      status: "stable",
-    },
-    {
       name: "MediaCapabilitiesSpatialAudio",
       status: "test",
     },
diff --git a/third_party/blink/tools/blinkpy/w3c/wpt_manifest.py b/third_party/blink/tools/blinkpy/w3c/wpt_manifest.py
index d45ced9e..65fbf19 100644
--- a/third_party/blink/tools/blinkpy/w3c/wpt_manifest.py
+++ b/third_party/blink/tools/blinkpy/w3c/wpt_manifest.py
@@ -208,6 +208,25 @@
         extras = self._get_extras_from_item(item)
         return extras.get('timeout') == 'long'
 
+    def extract_test_pac(self, url):
+        """Get the proxy configuration (PAC) for the test
+
+        Args:
+            url: A WPT URL.
+
+        Returns:
+            A relative PAC url if noted by the test, None otherwise.
+        """
+        if not self.is_test_url(url):
+            return None
+
+        item = self._item_for_url(url)
+        if not item:
+            return None
+
+        extras = self._get_extras_from_item(item)
+        return extras.get('pac')
+
     def extract_reference_list(self, path_in_wpt):
         """Extracts reference information of the specified reference test.
 
diff --git a/third_party/blink/tools/blinkpy/w3c/wpt_manifest_unittest.py b/third_party/blink/tools/blinkpy/w3c/wpt_manifest_unittest.py
index d286606..6410d1c 100644
--- a/third_party/blink/tools/blinkpy/w3c/wpt_manifest_unittest.py
+++ b/third_party/blink/tools/blinkpy/w3c/wpt_manifest_unittest.py
@@ -265,3 +265,43 @@
                          (None, None))
         self.assertEqual(manifest.extract_fuzzy_metadata('not_a_reftest.html'),
                          (None, None))
+
+    def test_extract_pac(self):
+        manifest_json = '''
+{
+    "items": {
+        "testharness": {
+     "without-pac.html": [
+      "df2f8b048c370d3ab009946d73d7de6f8a412471",
+      [
+       null,
+       {
+       }
+      ]
+     ],
+     "with-pac.html": [
+      "598836d376813b754366d49616b39a4183cd3753",
+      [
+       null,
+       {
+        "pac": "proxy.pac"
+       }
+      ]
+     ]
+    }
+    }
+}
+        '''
+
+        host = MockHost()
+        host.filesystem.write_text_file(
+            WEB_TEST_DIR + '/external/wpt/MANIFEST.json', manifest_json)
+        manifest = WPTManifest(host,
+                               WEB_TEST_DIR + '/external/wpt/MANIFEST.json')
+
+        self.assertEqual(
+            manifest.extract_test_pac('with-pac.html'),
+            "proxy.pac",
+        )
+
+        self.assertEqual(manifest.extract_test_pac('without-pac.html'), None)
diff --git a/third_party/blink/tools/blinkpy/web_tests/port/base.py b/third_party/blink/tools/blinkpy/web_tests/port/base.py
index 021f6945..8b99c6a 100644
--- a/third_party/blink/tools/blinkpy/web_tests/port/base.py
+++ b/third_party/blink/tools/blinkpy/web_tests/port/base.py
@@ -44,6 +44,8 @@
 import six
 from six.moves import zip_longest
 
+from urllib.parse import urljoin
+
 from blinkpy.common import exit_codes
 from blinkpy.common import find_files
 from blinkpy.common import read_checksum_from_png
@@ -1140,6 +1142,22 @@
         path_in_wpt = match.group(2)
         return self.wpt_manifest(wpt_path).is_slow_test(path_in_wpt)
 
+    def extract_wpt_pac(self, test_name):
+        match = self.WPT_REGEX.match(test_name)
+        if not match:
+            return None
+        wpt_path = match.group(1)
+        path_in_wpt = match.group(2)
+        pac = self.wpt_manifest(wpt_path).extract_test_pac(path_in_wpt)
+        if pac is None:
+            return None
+
+        hosts_and_ports = self.create_driver(0).WPT_HOST_AND_PORTS
+
+        return urljoin(
+            "http://{}:{}".format(hosts_and_ports[0], hosts_and_ports[1]),
+            urljoin(path_in_wpt, pac))
+
     def get_wpt_fuzzy_metadata(self, test_name):
         """Returns the WPT-style fuzzy metadata for the given test.
 
@@ -1476,6 +1494,10 @@
     @memoized
     def args_for_test(self, test_name):
         args = self._lookup_virtual_test_args(test_name)
+        pac_url = self.extract_wpt_pac(test_name)
+        if pac_url is not None:
+            args.append("--proxy-pac-url=" + pac_url)
+
         tracing_categories = self.get_option('enable_tracing')
         if tracing_categories:
             args.append('--trace-startup=' + tracing_categories)
diff --git a/third_party/blink/web_tests/FlagExpectations/disable-layout-ng b/third_party/blink/web_tests/FlagExpectations/disable-layout-ng
index 947887e..8c51f72 100644
--- a/third_party/blink/web_tests/FlagExpectations/disable-layout-ng
+++ b/third_party/blink/web_tests/FlagExpectations/disable-layout-ng
@@ -631,6 +631,7 @@
 crbug.com/874051 external/wpt/css/css-multicol/multicol-span-all-fieldset-001.html [ Failure ]
 crbug.com/874051 external/wpt/css/css-multicol/multicol-span-all-fieldset-002.html [ Failure ]
 crbug.com/874051 external/wpt/css/css-multicol/multicol-span-all-fieldset-003.html [ Failure ]
+crbug.com/915204 external/wpt/css/css-multicol/multicol-span-all-005.html [ Failure ]
 crbug.com/915204 external/wpt/css/css-multicol/multicol-span-all-006.html [ Failure ]
 crbug.com/915204 external/wpt/css/css-multicol/multicol-span-all-007.html [ Failure ]
 crbug.com/915204 external/wpt/css/css-multicol/multicol-span-all-009.html [ Failure ]
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations
index 0572745e9..b4af098 100644
--- a/third_party/blink/web_tests/TestExpectations
+++ b/third_party/blink/web_tests/TestExpectations
@@ -3371,6 +3371,7 @@
 crbug.com/626703 [ Win ] virtual/partitioned-cookies/http/tests/inspector-protocol/network/disabled-cache-navigation.js [ Failure ]
 
 # ====== New tests from wpt-importer added here ======
+crbug.com/626703 [ Mac10.15 ] virtual/off-main-thread-css-paint/external/wpt/css/css-paint-api/dynamic-import.https.html [ Failure ]
 crbug.com/626703 external/wpt/custom-elements/form-associated/ElementInternals-target-element-is-held-strongly.html [ Timeout ]
 crbug.com/626703 [ Mac11-arm64 ] external/wpt/html/browsers/browsing-the-web/remote-context-helper-tests/navigation-same-document.window.html [ Failure Timeout ]
 crbug.com/626703 external/wpt/custom-elements/throw-on-dynamic-markup-insertion-counter-construct-xml-parser.xhtml [ Crash ]
@@ -3967,7 +3968,6 @@
 crbug.com/963109 external/wpt/css/css-multicol/multicol-span-all-button-001.html [ Failure ]
 crbug.com/963109 external/wpt/css/css-multicol/multicol-span-all-button-002.html [ Failure ]
 crbug.com/963109 external/wpt/css/css-multicol/multicol-span-all-button-003.html [ Failure ]
-crbug.com/915204 external/wpt/css/css-multicol/multicol-span-all-005.html [ Failure ]
 crbug.com/636055 external/wpt/css/css-multicol/multicol-span-all-margin-nested-002.xht [ Failure ]
 crbug.com/990240 external/wpt/css/css-multicol/multicol-span-all-rule-001.html [ Failure ]
 crbug.com/964183 external/wpt/css/css-multicol/multicol-width-005.html [ Failure ]
@@ -7092,5 +7092,11 @@
 crbug.com/1350337 [ Linux ] external/wpt/web-locks/query-ordering.tentative.https.html [ Failure Pass ]
 crbug.com/1350341 [ Linux ] virtual/threaded-no-composited-antialiasing/animations/direction-and-fill/fill-mode-missing-from-to-keyframes.html [ Failure Pass ]
 
+
+# These seem to consistently fail with disabling code cache.
+crbug.com/1351903 http/tests/devtools/network/font-face.js [ Failure Pass ]
+crbug.com/1351903 virtual/disable-frequency-capping-for-overlay-popup-detection/http/tests/subresource_filter/overlay_popup_ad/overlay-popup-ad-fixed-position.html [ Failure Pass ]
+crbug.com/1351903 virtual/disable-frequency-capping-for-overlay-popup-detection/http/tests/subresource_filter/overlay_popup_ad/overlay-popup-image-ad-fixed-position.html [ Failure Pass ]
+
 # TODO(crbug.com/1352009): Research how to re-enable test once not flaky
 crbug.com/1352009 external/wpt/preload/preconnect.html [ Failure Pass ]
diff --git a/third_party/blink/web_tests/WebDriverExpectations b/third_party/blink/web_tests/WebDriverExpectations
index a499aa1..645bac2 100644
--- a/third_party/blink/web_tests/WebDriverExpectations
+++ b/third_party/blink/web_tests/WebDriverExpectations
@@ -88,6 +88,8 @@
 crbug.com/1167321 [ Linux ] external/wpt/webdriver/tests/find_element_from_shadow_root/find.py>>test_find_element[xpath-//a] [ Failure ]
 
 # ====== New tests from wpt-importer added here ======
+crbug.com/626703 [ Linux ] external/wpt/webdriver/tests/get_element_property/get.py>>test_web_reference[frame-Frame] [ Failure ]
+crbug.com/626703 [ Linux ] external/wpt/webdriver/tests/get_element_property/get.py>>test_web_reference[window-Window] [ Failure ]
 crbug.com/626703 [ Linux ] external/wpt/webdriver/tests/get_computed_label/get.py>>test_stale_element_reference[child_context] [ Failure ]
 crbug.com/626703 [ Linux ] external/wpt/webdriver/tests/get_computed_label/get.py>>test_stale_element_reference[top_context] [ Failure ]
 crbug.com/626703 [ Linux ] external/wpt/webdriver/tests/get_computed_role/get.py>>test_no_browsing_context [ Failure ]
diff --git a/third_party/blink/web_tests/external/Version b/third_party/blink/web_tests/external/Version
index 19c52b8..596ce405 100644
--- a/third_party/blink/web_tests/external/Version
+++ b/third_party/blink/web_tests/external/Version
@@ -1 +1 @@
-Version: a33a5d46cb7bce1f634fc50adb29d4f4c7e1d54e
+Version: 321bbd64536947a851b62a1af992efd8f8efc1fe
diff --git a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json
index 7f902f1f..1e23bb1 100644
--- a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json
+++ b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json
@@ -390893,6 +390893,13 @@
         {}
        ]
       ],
+      "contain-intrinsic-size-031.html": [
+       "981ddc693bce23fc98a724e965cdaf1bdc6fd412",
+       [
+        null,
+        {}
+       ]
+      ],
       "contain-intrinsic-size-logical-003.html": [
        "59ae8328f2dfaba25094bdf90cf6c0bc1abbdee0",
        [
@@ -491034,7 +491041,9 @@
       "598836d376813b754366d49616b39a4183cd3753",
       [
        null,
-       {}
+       {
+        "pac": "resources/proxy.sub.pac"
+       }
       ]
      ],
      "title.any.js": [
@@ -594921,7 +594930,7 @@
      },
      "get_element_property": {
       "get.py": [
-       "6c15545b26589ccb05870c9b197390c555a14a80",
+       "46755ffc9b138a00f525a68e89062bc04ed8e28e",
        [
         null,
         {}
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/table/table-in-abspos-multicol-with-nested-meter-crash.html b/third_party/blink/web_tests/external/wpt/css/css-break/table/table-in-abspos-multicol-with-nested-meter-crash.html
new file mode 100644
index 0000000..363324b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-break/table/table-in-abspos-multicol-with-nested-meter-crash.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1351677">
+<p>PASS if no crash or DCHECK failure.</p>
+<div style="position:absolute; column-count:1;">
+  <table>
+    <caption>
+      <meter style="column-count:1;"></meter>
+    </caption>
+  </table>
+</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-031.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-031.html
new file mode 100644
index 0000000..981ddc69
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-031.html
@@ -0,0 +1,72 @@
+<!DOCTYPE html>
+<meta charset="utf8">
+<title>CSS contain-intrinsic-size: multi-column containers</title>
+<link rel="author" title="Oriol Brufau" href="mailto:obrufau@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
+<link rel="help" href="https://drafts.csswg.org/css-multicol-1/#the-multi-column-model">
+<style>
+.test {
+  contain: size;
+  display: inline-block;
+  padding: 0;
+  border: 5px solid;
+  column-gap: 5px;
+}
+.columns-60px-1 {
+  columns: 60px 1;
+}
+.columns-120px-1 {
+  columns: 120px 1;
+}
+.columns-60px-2 {
+  columns: 60px 2;
+}
+.cis-none {
+  contain-intrinsic-size: none none;
+}
+.cis-height {
+  contain-intrinsic-size: none 50px;
+}
+.cis-width {
+  contain-intrinsic-size: 100px none;
+}
+.cis-both {
+  contain-intrinsic-size: 100px 50px;
+}
+</style>
+
+<div id="log"></div>
+
+<div class="test columns-60px-1 cis-none"
+     data-expected-client-width="60" data-expected-client-height="0"></div>
+<div class="test columns-60px-1 cis-height"
+     data-expected-client-width="60" data-expected-client-height="50"></div>
+<div class="test columns-60px-1 cis-width"
+     data-expected-client-width="100" data-expected-client-height="0"></div>
+<div class="test columns-60px-1 cis-both"
+     data-expected-client-width="100" data-expected-client-height="50"></div>
+
+<div class="test columns-120px-1 cis-none"
+     data-expected-client-width="120" data-expected-client-height="0"></div>
+<div class="test columns-120px-1 cis-height"
+     data-expected-client-width="120" data-expected-client-height="50"></div>
+<div class="test columns-120px-1 cis-width"
+     data-expected-client-width="100" data-expected-client-height="0"></div>
+<div class="test columns-120px-1 cis-both"
+     data-expected-client-width="100" data-expected-client-height="50"></div>
+
+<div class="test columns-60px-2 cis-none"
+     data-expected-client-width="125" data-expected-client-height="0"></div>
+<div class="test columns-60px-2 cis-height"
+     data-expected-client-width="125" data-expected-client-height="50"></div>
+<div class="test columns-60px-2 cis-width"
+     data-expected-client-width="100" data-expected-client-height="0"></div>
+<div class="test columns-60px-2 cis-both"
+     data-expected-client-width="100" data-expected-client-height="50"></div>
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+<script>
+checkLayout(".test");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/webdriver/tests/get_element_property/get.py b/third_party/blink/web_tests/external/wpt/webdriver/tests/get_element_property/get.py
index 6c15545..46755ffc 100644
--- a/third_party/blink/web_tests/external/wpt/webdriver/tests/get_element_property/get.py
+++ b/third_party/blink/web_tests/external/wpt/webdriver/tests/get_element_property/get.py
@@ -1,6 +1,7 @@
 import pytest
+from webdriver import Element, Frame, ShadowRoot, Window
 
-from tests.support.asserts import assert_error, assert_success
+from tests.support.asserts import assert_error, assert_same_element, assert_success
 
 
 def get_element_property(session, element_id, prop):
@@ -107,6 +108,46 @@
     assert_success(response, py_primitive)
 
 
+@pytest.mark.parametrize("js_web_reference,py_web_reference", [
+    ("element", Element),
+    ("frame", Frame),
+    ("shadowRoot", ShadowRoot),
+    ("window", Window),
+])
+def test_web_reference(session, inline, js_web_reference, py_web_reference):
+    session.url = inline("""
+        <div id="parent"></div>
+        <p id="element"></p>
+        <iframe id="frame"></iframe>
+        <shadow-element id="custom"></shadow-element>
+
+        <script>
+            customElements.define("shadow-element",
+                class extends HTMLElement {
+                    constructor() {
+                        super();
+                        this.attachShadow({ mode: "open" }).innerHTML = "<p>foo";
+                    }
+                }
+            );
+
+            const parent = document.getElementById("parent");
+            parent.__element = document.getElementById("element");
+            parent.__frame = document.getElementById("frame").contentWindow;
+            parent.__shadowRoot = document.getElementById("custom").shadowRoot;
+            parent.__window = document.defaultView;
+        </script>
+        """)
+
+    elem = session.find.css("#parent", all=False)
+    response = get_element_property(session, elem.id, "__{}".format(js_web_reference))
+    value = assert_success(response)
+
+    assert isinstance(value, dict)
+    assert py_web_reference.identifier in value
+    assert isinstance(value[py_web_reference.identifier], str)
+
+
 def test_mutated_element(session, inline):
     session.url = inline("<input type=checkbox>")
     element = session.find.css("input", all=False)
diff --git a/third_party/blink/web_tests/platform/generic/external/wpt/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-031-expected.txt b/third_party/blink/web_tests/platform/generic/external/wpt/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-031-expected.txt
new file mode 100644
index 0000000..87ff06f
--- /dev/null
+++ b/third_party/blink/web_tests/platform/generic/external/wpt/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-031-expected.txt
@@ -0,0 +1,23 @@
+This is a testharness.js-based test.
+PASS .test 1
+PASS .test 2
+PASS .test 3
+PASS .test 4
+PASS .test 5
+PASS .test 6
+FAIL .test 7 assert_equals: 
+<div class="test columns-120px-1 cis-width" data-expected-client-width="100" data-expected-client-height="0"></div>
+clientWidth expected 100 but got 120
+FAIL .test 8 assert_equals: 
+<div class="test columns-120px-1 cis-both" data-expected-client-width="100" data-expected-client-height="50"></div>
+clientWidth expected 100 but got 120
+PASS .test 9
+PASS .test 10
+FAIL .test 11 assert_equals: 
+<div class="test columns-60px-2 cis-width" data-expected-client-width="100" data-expected-client-height="0"></div>
+clientWidth expected 100 but got 205
+FAIL .test 12 assert_equals: 
+<div class="test columns-60px-2 cis-both" data-expected-client-width="100" data-expected-client-height="50"></div>
+clientWidth expected 100 but got 205
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/generic/external/wpt/infrastructure/server/test-pac-expected.txt b/third_party/blink/web_tests/platform/generic/external/wpt/infrastructure/server/test-pac-expected.txt
deleted file mode 100644
index a807756..0000000
--- a/third_party/blink/web_tests/platform/generic/external/wpt/infrastructure/server/test-pac-expected.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-This is a testharness.js-based test.
-FAIL test that PAC metadata is respected promise_test: Unhandled rejection with value: object "TypeError: Failed to fetch"
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/platform/generic/shadow-dom/focus-slide-on-shadow-host-expected.txt b/third_party/blink/web_tests/platform/generic/shadow-dom/focus-slide-on-shadow-host-expected.txt
deleted file mode 100644
index a2c36bf..0000000
--- a/third_party/blink/web_tests/platform/generic/shadow-dom/focus-slide-on-shadow-host-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-This is a testharness.js-based test.
-PASS click on inner div should focus shadow host (with delegatesFocus = false).
-FAIL click on inner div should focus inner focusable (with delegatesFocus = true). assert_equals: expected 1 but got 0
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/shadow-dom/focus-slide-on-shadow-host.html b/third_party/blink/web_tests/shadow-dom/focus-slide-on-shadow-host.html
index f07322e..295a3603 100644
--- a/third_party/blink/web_tests/shadow-dom/focus-slide-on-shadow-host.html
+++ b/third_party/blink/web_tests/shadow-dom/focus-slide-on-shadow-host.html
@@ -89,16 +89,18 @@
     // Clicking on focusable directly will cause the element to be focused.
     clickOn(inputA);
     assert_innermost_active_element('shadowHost/inputA');
+    inputA.setSelectionRange(1, 1);
     clickOn(innerDiv);
     assert_innermost_active_element('shadowHost/inputA');
-    assert_equals(inputA.selectionStart, 1);
-    assert_equals(inputA.selectionEnd, 1);
+    assert_equals(inputA.selectionStart, 1, 'inputA selection start should be preserved.');
+    assert_equals(inputA.selectionEnd, 1, 'inputA selection end should be preserved.');
 
     clickOn(inputB);
     assert_innermost_active_element('shadowHost/inputB');
+    inputA.setSelectionRange(1, 1);
     clickOn(innerDiv);
     assert_innermost_active_element('shadowHost/inputB');
-    assert_equals(inputB.selectionStart, 1);
-    assert_equals(inputB.selectionEnd, 1);
+    assert_equals(inputB.selectionStart, 1, 'inputB selection start should be preserved.');
+    assert_equals(inputB.selectionEnd, 1, 'inputB selection end should be preserved.');
 }, 'click on inner div should focus inner focusable (with delegatesFocus = true).');
 </script>
diff --git a/tools/memory/mac/parse_vmmap.py b/tools/memory/mac/parse_vmmap.py
index 4357ec9..9954b9b 100755
--- a/tools/memory/mac/parse_vmmap.py
+++ b/tools/memory/mac/parse_vmmap.py
@@ -19,6 +19,25 @@
 ])
 
 
+def _FormatSize(n: int):
+  _KIB = 1024
+  _MIB = 1024 * _KIB
+  result = ''
+  if n > _MIB:
+    result = '%.1fMiB' % (n / _MIB)
+  else:
+    result = '%0.1fkiB' % (n / _KIB)
+  return result.rjust(8)
+
+
+def IOSurfaceToString(iosurface: IOSurface):
+  return ('%x-%x\tVirtual Size: %s\tResident: %s\tDirty: %s\tSwapped: %s'
+          '\tDimensions: %dx%d') % (
+              iosurface.start, iosurface.end, _FormatSize(iosurface.virtual),
+              _FormatSize(iosurface.resident), _FormatSize(iosurface.dirty),
+              _FormatSize(iosurface.swapped), iosurface.width, iosurface.height)
+
+
 def ExecuteVmmap(pid: int) -> str:
   """Runs vmmap PID and returns its output."""
   ret = subprocess.run(['vmmap', str(pid)], capture_output=True)
@@ -123,12 +142,17 @@
   io_surfaces.sort(key=operator.attrgetter('virtual'))
   print('\nIOSurfaces sorted by virtual size:')
   for io_surface in io_surfaces:
-    print('\t' + str(io_surface))
+    print('\t' + IOSurfaceToString(io_surface))
 
   io_surfaces.sort(key=operator.attrgetter('width'))
   print('\nIOSurfaces sorted by width:')
   for io_surface in io_surfaces:
-    print('\t' + str(io_surface))
+    print('\t' + IOSurfaceToString(io_surface))
+
+  io_surfaces.sort(key=lambda x: x.dirty + x.swapped)
+  print('\nIOSurfaces sorted by dirty/swapped:')
+  for io_surface in io_surfaces:
+    print('\t' + IOSurfaceToString(io_surface))
 
   lost_to_paging = sum(io_surface.virtual - io_surface.size
                        for io_surface in io_surfaces)
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index 3c010de..edc99fc 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -2956,7 +2956,7 @@
       label="WEB_SETTINGS_GET_ENTERPRISE_AUTHENTICATION_APP_LINK_POLICY_ENABLED">
     WebSettingsCompat#getEnterpriseAuthenticationAppLinkPolicyEnabled()
   </int>
-  <int value="63" label="WEB_View_COOKIE_MANAGER_GET_COOKIE_INFO">
+  <int value="63" label="WEB_VIEW_COOKIE_MANAGER_GET_COOKIE_INFO">
     CookieManagerCompat#getCookieInfo()
   </int>
 </enum>
@@ -26128,6 +26128,12 @@
   <int value="8" label="Viewport intersection"/>
 </enum>
 
+<enum name="DisplayMirroringImplementation">
+  <summary>Defines the implementation of mirror mode.</summary>
+  <int value="0" label="Software-based mirroring"/>
+  <int value="1" label="Hardware-based mirroring"/>
+</enum>
+
 <enum name="DisplayMirrorModeTypes">
   <summary>
     Defines the types of mirror mode in which displays connected to the device
@@ -57690,6 +57696,8 @@
   <int value="-871784177" label="DeprecateMenagerieAPI:enabled"/>
   <int value="-871520682"
       label="AccessibilityInternalsPageImprovements:enabled"/>
+  <int value="-871467950"
+      label="PrivateNetworkAccessPreflightReduceTimeout:enabled"/>
   <int value="-871450829"
       label="ThreadedScrollPreventRenderingStarvation:disabled"/>
   <int value="-870994173" label="NtpChromeCartModule:enabled"/>
@@ -61142,6 +61150,8 @@
   <int value="1324623677"
       label="SessionRestorePrioritizesBackgroundUseCases:enabled"/>
   <int value="1325459977" label="HandwritingGestureEditing:disabled"/>
+  <int value="1326346535"
+      label="PrivateNetworkAccessPreflightReduceTimeout:disabled"/>
   <int value="1326530782" label="AutofillParseAsync:enabled"/>
   <int value="1327883321"
       label="OmniboxHistoryQuickProviderAllowMidwordContinuations:enabled"/>
@@ -70524,6 +70534,8 @@
   <int value="148" label="Tailored Security Disabled"/>
   <int value="149" label="Tailored Security Enabled"/>
   <int value="150" label="Tailored Security Promotion"/>
+  <int value="151" label="ARC Low Disk Space Pre-stop"/>
+  <int value="152" label="ARC Low Disk Space Post-stop"/>
 </enum>
 
 <enum name="NotificationDatabaseStatus">
diff --git a/tools/metrics/histograms/metadata/feature_engagement/histograms.xml b/tools/metrics/histograms/metadata/feature_engagement/histograms.xml
index e4874cc..c84d4b5 100644
--- a/tools/metrics/histograms/metadata/feature_engagement/histograms.xml
+++ b/tools/metrics/histograms/metadata/feature_engagement/histograms.xml
@@ -231,6 +231,8 @@
       summary="proactive Web Feed follow recommendations"/>
   <variant name="IPH_WebFeedPostFollowDialog"
       summary="Web Feed successful follow operations"/>
+  <variant name="IPH_WebUiHelpBubbleTest"
+      summary="testing the WebUI help bubble"/>
   <variant name="IPH_WebUITabStrip" summary="opening the WebUI tab strip"/>
 </variants>
 
diff --git a/tools/metrics/histograms/metadata/others/histograms.xml b/tools/metrics/histograms/metadata/others/histograms.xml
index 9338a279..3c852a5 100644
--- a/tools/metrics/histograms/metadata/others/histograms.xml
+++ b/tools/metrics/histograms/metadata/others/histograms.xml
@@ -4765,6 +4765,19 @@
   </summary>
 </histogram>
 
+<histogram name="DisplayManager.MirroringImplementation"
+    enum="DisplayMirroringImplementation" expires_after="2023-02-09">
+  <owner>jshargo@chromium.org</owner>
+  <owner>oshima@chromium.org</owner>
+  <owner>chromeos-gfx-compositor@google.com</owner>
+  <summary>
+    The way in which mirroring is implemented, either in hardware or software.
+    This is emitted once when mirroring is enabled through API call, or the
+    display configuration changes ( e.g. adding or removing a display) when
+    mirror mode is on.
+  </summary>
+</histogram>
+
 <histogram name="DisplayManager.MirrorModeTypes" enum="DisplayMirrorModeTypes"
     expires_after="2022-12-04">
   <owner>zentaro@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/v8/histograms.xml b/tools/metrics/histograms/metadata/v8/histograms.xml
index b705ae00..76aba1f 100644
--- a/tools/metrics/histograms/metadata/v8/histograms.xml
+++ b/tools/metrics/histograms/metadata/v8/histograms.xml
@@ -1909,6 +1909,66 @@
   </summary>
 </histogram>
 
+<histogram name="V8.WasmMaxLazyCompilationTime120SecMilliSeconds" units="ms"
+    expires_after="2023-08-01">
+  <owner>ahaas@chromium.org</owner>
+  <owner>clemensb@chromium.org</owner>
+  <owner>ecmziegler@chromium.org</owner>
+  <owner>wasm-v8@google.com</owner>
+  <summary>
+    Maximum time spent on the main thread on compiling a single WebAssembly
+    function with lazy compilation in the first 120 seconds after the first
+    instantiation of a WebAssembly module. Recorded 120 seconds after calling
+    the start function of the WebAssembly module during the first instantiation
+    of a WebAssembly module.
+  </summary>
+</histogram>
+
+<histogram name="V8.WasmMaxLazyCompilationTime20SecMilliSeconds" units="ms"
+    expires_after="2023-08-01">
+  <owner>ahaas@chromium.org</owner>
+  <owner>clemensb@chromium.org</owner>
+  <owner>ecmziegler@chromium.org</owner>
+  <owner>wasm-v8@google.com</owner>
+  <summary>
+    Maximum time spent on the main thread on compiling a single WebAssembly
+    function with lazy compilation in the first 20 seconds after the first
+    instantiation of a WebAssembly module. Recorded 20 seconds after calling the
+    start function of the WebAssembly module during the first instantiation of a
+    WebAssembly module.
+  </summary>
+</histogram>
+
+<histogram name="V8.WasmMaxLazyCompilationTime5SecMilliSeconds" units="ms"
+    expires_after="2023-08-01">
+  <owner>ahaas@chromium.org</owner>
+  <owner>clemensb@chromium.org</owner>
+  <owner>ecmziegler@chromium.org</owner>
+  <owner>wasm-v8@google.com</owner>
+  <summary>
+    Maximum time spent on the main thread on compiling a single WebAssembly
+    function with lazy compilation in the first 5 seconds after the first
+    instantiation of a WebAssembly module. Recorded 5 seconds after calling the
+    start function of the WebAssembly module during the first instantiation of a
+    WebAssembly module.
+  </summary>
+</histogram>
+
+<histogram name="V8.WasmMaxLazyCompilationTime60SecMilliSeconds" units="ms"
+    expires_after="2023-08-01">
+  <owner>ahaas@chromium.org</owner>
+  <owner>clemensb@chromium.org</owner>
+  <owner>ecmziegler@chromium.org</owner>
+  <owner>wasm-v8@google.com</owner>
+  <summary>
+    Maximum time spent on the main thread on compiling a single WebAssembly
+    function with lazy compilation in the first 60 seconds after the first
+    instantiation of a WebAssembly module. Recorded 60 seconds after calling the
+    start function of the WebAssembly module during the first instantiation of a
+    WebAssembly module.
+  </summary>
+</histogram>
+
 <histogram name="V8.WasmMaxMemPagesCount" units="pages"
     expires_after="2022-02-15">
   <owner>ecmziegler@chromium.org</owner>
@@ -2069,6 +2129,62 @@
   </summary>
 </histogram>
 
+<histogram name="V8.WasmNumLazyCompilations120Sec" units="count"
+    expires_after="2023-08-01">
+  <owner>ahaas@chromium.org</owner>
+  <owner>clemensb@chromium.org</owner>
+  <owner>ecmziegler@chromium.org</owner>
+  <owner>wasm-v8@google.com</owner>
+  <summary>
+    Number of functions that get compiled lazily in 120 seconds after the first
+    instantiation of a WebAssembly module. Recorded 120 seconds after calling
+    the start function of the WebAssembly module during the first instantiation
+    of a WebAssembly module.
+  </summary>
+</histogram>
+
+<histogram name="V8.WasmNumLazyCompilations20Sec" units="count"
+    expires_after="2023-08-01">
+  <owner>ahaas@chromium.org</owner>
+  <owner>clemensb@chromium.org</owner>
+  <owner>ecmziegler@chromium.org</owner>
+  <owner>wasm-v8@google.com</owner>
+  <summary>
+    Number of functions that get compiled lazily in 20 seconds after the first
+    instantiation of a WebAssembly module. Recorded 20 seconds after calling the
+    start function of the WebAssembly module during the first instantiation of a
+    WebAssembly module.
+  </summary>
+</histogram>
+
+<histogram name="V8.WasmNumLazyCompilations5Sec" units="count"
+    expires_after="2023-08-01">
+  <owner>ahaas@chromium.org</owner>
+  <owner>clemensb@chromium.org</owner>
+  <owner>ecmziegler@chromium.org</owner>
+  <owner>wasm-v8@google.com</owner>
+  <summary>
+    Number of functions that get compiled lazily in 5 seconds after the first
+    instantiation of a WebAssembly module. Recorded 5 seconds after calling the
+    start function of the WebAssembly module during the first instantiation of a
+    WebAssembly module.
+  </summary>
+</histogram>
+
+<histogram name="V8.WasmNumLazyCompilations60Sec" units="count"
+    expires_after="2023-08-01">
+  <owner>ahaas@chromium.org</owner>
+  <owner>clemensb@chromium.org</owner>
+  <owner>ecmziegler@chromium.org</owner>
+  <owner>wasm-v8@google.com</owner>
+  <summary>
+    Number of functions that get compiled lazily in 60 seconds after the first
+    instantiation of a WebAssembly module. Recorded 60 seconds after calling the
+    start function of the WebAssembly module during the first instantiation of a
+    WebAssembly module.
+  </summary>
+</histogram>
+
 <histogram name="V8.WasmReThrowCount" units="count" expires_after="2023-08-01">
   <owner>thibaudm@chromium.org</owner>
   <owner>ecmziegler@chromium.org</owner>
@@ -2107,6 +2223,66 @@
   </summary>
 </histogram>
 
+<histogram name="V8.WasmSumLazyCompilationTime120SecMilliSeconds" units="ms"
+    expires_after="2023-08-01">
+  <owner>ahaas@chromium.org</owner>
+  <owner>clemensb@chromium.org</owner>
+  <owner>ecmziegler@chromium.org</owner>
+  <owner>wasm-v8@google.com</owner>
+  <summary>
+    Total time spent on the main thread on compiling WebAssembly functions with
+    lazy compilation in the first 120 seconds after the first instantiation of a
+    WebAssembly module. Recorded 120 seconds after calling the start function of
+    the WebAssembly module during the first instantiation of a WebAssembly
+    module.
+  </summary>
+</histogram>
+
+<histogram name="V8.WasmSumLazyCompilationTime20SecMilliSeconds" units="ms"
+    expires_after="2023-08-01">
+  <owner>ahaas@chromium.org</owner>
+  <owner>clemensb@chromium.org</owner>
+  <owner>ecmziegler@chromium.org</owner>
+  <owner>wasm-v8@google.com</owner>
+  <summary>
+    Total time spent on the main thread on compiling WebAssembly functions with
+    lazy compilation in the first 20 seconds after the first instantiation of a
+    WebAssembly module. Recorded 20 seconds after calling the start function of
+    the WebAssembly module during the first instantiation of a WebAssembly
+    module.
+  </summary>
+</histogram>
+
+<histogram name="V8.WasmSumLazyCompilationTime5SecMilliSeconds" units="ms"
+    expires_after="2023-08-01">
+  <owner>ahaas@chromium.org</owner>
+  <owner>clemensb@chromium.org</owner>
+  <owner>ecmziegler@chromium.org</owner>
+  <owner>wasm-v8@google.com</owner>
+  <summary>
+    Total time spent on the main thread on compiling WebAssembly functions with
+    lazy compilation in the first 5 seconds after the first instantiation of a
+    WebAssembly module. Recorded 5 seconds after calling the start function of
+    the WebAssembly module during the first instantiation of a WebAssembly
+    module.
+  </summary>
+</histogram>
+
+<histogram name="V8.WasmSumLazyCompilationTime60SecMilliSeconds" units="ms"
+    expires_after="2023-08-01">
+  <owner>ahaas@chromium.org</owner>
+  <owner>clemensb@chromium.org</owner>
+  <owner>ecmziegler@chromium.org</owner>
+  <owner>wasm-v8@google.com</owner>
+  <summary>
+    Total time spent on the main thread on compiling WebAssembly functions with
+    lazy compilation in the first 60 seconds after the first instantiation of a
+    WebAssembly module. Recorded 60 seconds after calling the start function of
+    the WebAssembly module during the first instantiation of a WebAssembly
+    module.
+  </summary>
+</histogram>
+
 <histogram name="V8.WasmThrowCount" units="count" expires_after="2023-08-01">
   <owner>thibaudm@chromium.org</owner>
   <owner>ecmziegler@chromium.org</owner>
diff --git a/ui/accessibility/platform/ax_platform_node_base.cc b/ui/accessibility/platform/ax_platform_node_base.cc
index f842d40..440ebf11 100644
--- a/ui/accessibility/platform/ax_platform_node_base.cc
+++ b/ui/accessibility/platform/ax_platform_node_base.cc
@@ -1777,6 +1777,31 @@
   return GetHypertextOffsetFromHyperlinkIndex(hyperlink_index);
 }
 
+int AXPlatformNodeBase::HypertextOffsetFromChildIndex(int child_index) const {
+  DCHECK_GE(child_index, 0);
+  DCHECK_LE(child_index, static_cast<int>(GetChildCount()));
+
+  // Use both a child index and an iterator to avoid an O(n^2) complexity which
+  // would be the case if we were to call GetChildAtIndex on each child.
+  int hypertext_offset = 0;
+  int endpoint_child_index = 0;
+  for (AXPlatformNodeChildIterator child_iter = AXPlatformNodeChildrenBegin();
+       child_iter != AXPlatformNodeChildrenEnd(); ++child_iter) {
+    if (endpoint_child_index >= child_index) {
+      break;
+    }
+
+    int child_text_len = 1;
+    if (child_iter->IsText())
+      child_text_len =
+          base::checked_cast<int>(child_iter->GetHypertext().size());
+
+    endpoint_child_index++;
+    hypertext_offset += child_text_len;
+  }
+  return hypertext_offset;
+}
+
 int32_t AXPlatformNodeBase::GetHypertextOffsetFromDescendant(
     AXPlatformNodeBase* descendant) {
   auto* parent_object = static_cast<AXPlatformNodeBase*>(
@@ -1795,44 +1820,50 @@
 int AXPlatformNodeBase::GetHypertextOffsetFromEndpoint(
     AXPlatformNodeBase* endpoint_object,
     int endpoint_offset) {
+  DCHECK_GE(endpoint_offset, 0);
+
   // There are three cases:
-  // 1. The selection endpoint is inside this object but not one of its
-  // descendants, or is in an ancestor of this object. endpoint_offset should be
+  // 1. The selection endpoint is this object itself: endpoint_offset should be
   // returned, possibly adjusted from a child offset to a hypertext offset.
-  // 2. The selection endpoint is a descendant of this object. The offset of the
+  // 2. The selection endpoint is an ancestor of this object. If endpoint_offset
+  // points out after this object, then this object text length is returned,
+  // otherwise 0.
+  // 3. The selection endpoint is a descendant of this object. The offset of the
   // character in this object's hypertext corresponding to the subtree in which
   // the endpoint is located should be returned.
-  // 3. The selection endpoint is in a completely different part of the tree.
+  // 4. The selection endpoint is in a completely different part of the tree.
   // Either 0 or hypertext length should be returned depending on the direction
   // that one needs to travel to find the endpoint.
   //
   // TODO(nektar): Replace all this logic with the use of AXNodePosition.
 
-  // Case 1. Is the endpoint object equal to this object or an ancestor of this
-  // object?
-  //
-  // IsDescendantOf includes the case when endpoint_object == this.
-  if (IsDescendantOf(endpoint_object)) {
-    if (endpoint_object->IsLeaf()) {
-      DCHECK_EQ(endpoint_object, this) << "Text objects cannot have children.";
+  // Case 1. Is the endpoint object equal to this object
+  if (endpoint_object == this) {
+    if (endpoint_object->IsLeaf())
       return endpoint_offset;
-    } else {
-      DCHECK_GE(endpoint_offset, 0);
-      DCHECK_LE(static_cast<size_t>(endpoint_offset),
-                endpoint_object->GetDelegate()->GetChildCount());
+    return HypertextOffsetFromChildIndex(endpoint_offset);
+  }
 
-      // Adjust the |endpoint_offset| because the selection endpoint is a tree
-      // position, i.e. it represents a child index and not a text offset.
-      if (static_cast<size_t>(endpoint_offset) >=
-          endpoint_object->GetChildCount()) {
-        return static_cast<int>(endpoint_object->GetHypertext().size());
-      } else {
-        auto* child = static_cast<AXPlatformNodeBase*>(FromNativeViewAccessible(
-            endpoint_object->ChildAtIndex(endpoint_offset)));
-        DCHECK(child);
-        return endpoint_object->GetHypertextOffsetFromChild(child);
-      }
+  // Case 2. Is the endpoint an ancestor of this object.
+  if (IsDescendantOf(endpoint_object)) {
+    DCHECK_LE(endpoint_offset,
+              static_cast<int>(endpoint_object->GetChildCount()));
+
+    AXPlatformNodeBase* closest_ancestor = this;
+    while (closest_ancestor) {
+      AXPlatformNodeBase* parent = static_cast<AXPlatformNodeBase*>(
+          FromNativeViewAccessible(closest_ancestor->GetParent()));
+      if (parent == endpoint_object)
+        break;
+      closest_ancestor = parent;
     }
+
+    // If the endpoint is after this node, then return the node's
+    // hypertext length, otherwise 0 as the endpoint points before the node.
+    if (endpoint_offset >
+        static_cast<int>(*closest_ancestor->GetIndexInParent()))
+      return static_cast<int>(GetHypertext().size());
+    return 0;
   }
 
   AXPlatformNodeBase* common_parent = this;
diff --git a/ui/accessibility/platform/ax_platform_node_base.h b/ui/accessibility/platform/ax_platform_node_base.h
index 07cc866..0b80dab 100644
--- a/ui/accessibility/platform/ax_platform_node_base.h
+++ b/ui/accessibility/platform/ax_platform_node_base.h
@@ -543,6 +543,7 @@
   int32_t GetHyperlinkIndexFromChild(AXPlatformNodeBase* child);
   int32_t GetHypertextOffsetFromHyperlinkIndex(int32_t hyperlink_index);
   int32_t GetHypertextOffsetFromChild(AXPlatformNodeBase* child);
+  int HypertextOffsetFromChildIndex(int child_index) const;
   int32_t GetHypertextOffsetFromDescendant(AXPlatformNodeBase* descendant);
 
   // If the selection endpoint is either equal to or an ancestor of this object,
@@ -588,6 +589,8 @@
 
   friend AXPlatformNode* AXPlatformNode::Create(
       AXPlatformNodeDelegate* delegate);
+
+  FRIEND_TEST_ALL_PREFIXES(AXPlatformNodeTest, HypertextOffsetFromEndpoint);
 };
 
 }  // namespace ui
diff --git a/ui/accessibility/platform/ax_platform_node_base_unittest.cc b/ui/accessibility/platform/ax_platform_node_base_unittest.cc
index 1d094de..d1965121 100644
--- a/ui/accessibility/platform/ax_platform_node_base_unittest.cc
+++ b/ui/accessibility/platform/ax_platform_node_base_unittest.cc
@@ -516,4 +516,73 @@
     }
   }
 }
+
+TEST_F(AXPlatformNodeTest, HypertextOffsetFromEndpoint) {
+  // <p>
+  //   <a href="google.com">link</a>
+  // </p>
+  //
+  // kRootWebArea
+  // ++kParagraph
+  // ++++kLink
+  // ++++++kStaticText "link"
+  // ++++++kStaticText "link#2"
+  AXTree* tree =
+      Init({Role::kRootWebArea,
+            {{Role::kParagraph, {{Role::kLink, {{"link"}, {"link#2"}}}}}}});
+  auto* root = static_cast<AXPlatformNodeBase*>(
+      TestAXNodeWrapper::GetOrCreate(tree, tree->root())->ax_platform_node());
+
+  // Set an AXMode on the AXPlatformNode as some platforms (auralinux) use it to
+  // determine if it should enable accessibility.
+  ui::testing::ScopedAxModeSetter ax_mode_setter(kAXModeComplete);
+
+  auto* paragraph = static_cast<AXPlatformNodeBase*>(
+      AXPlatformNode::FromNativeViewAccessible(root->ChildAtIndex(0)));
+
+  auto* link = static_cast<AXPlatformNodeBase*>(
+      AXPlatformNode::FromNativeViewAccessible(paragraph->ChildAtIndex(0)));
+
+  auto* static_text = static_cast<AXPlatformNodeBase*>(
+      AXPlatformNode::FromNativeViewAccessible(link->ChildAtIndex(0)));
+
+  auto* static_text2 = static_cast<AXPlatformNodeBase*>(
+      AXPlatformNode::FromNativeViewAccessible(link->ChildAtIndex(1)));
+
+  // End point is a parent, points before/after the link.
+  {
+    EXPECT_EQ(link->GetHypertextOffsetFromEndpoint(paragraph, 0), 0);
+    EXPECT_EQ(link->GetHypertextOffsetFromEndpoint(paragraph, 1), 10);
+  }
+
+  // End point is a parent, points before/after the static texts.
+  {
+    EXPECT_EQ(static_text->GetHypertextOffsetFromEndpoint(link, 0), 0);
+    EXPECT_EQ(static_text->GetHypertextOffsetFromEndpoint(link, 1), 4);
+    EXPECT_EQ(static_text->GetHypertextOffsetFromEndpoint(link, 2), 4);
+
+    EXPECT_EQ(static_text2->GetHypertextOffsetFromEndpoint(link, 0), 0);
+    EXPECT_EQ(static_text2->GetHypertextOffsetFromEndpoint(link, 1), 0);
+    EXPECT_EQ(static_text2->GetHypertextOffsetFromEndpoint(link, 2), 6);
+  }
+
+  // End point is a grand parent, points before/after the static text.
+  {
+    EXPECT_EQ(static_text->GetHypertextOffsetFromEndpoint(paragraph, 0), 0);
+    EXPECT_EQ(static_text->GetHypertextOffsetFromEndpoint(paragraph, 1), 4);
+  }
+
+  // End point is |this|, points into |this| text leaf object.
+  {
+    EXPECT_EQ(static_text->GetHypertextOffsetFromEndpoint(static_text, 0), 0);
+    EXPECT_EQ(static_text->GetHypertextOffsetFromEndpoint(static_text, 4), 4);
+  }
+
+  // End point is |this|, points into |this| hypertext object.
+  {
+    EXPECT_EQ(link->GetHypertextOffsetFromEndpoint(link, 0), 0);
+    EXPECT_EQ(link->GetHypertextOffsetFromEndpoint(link, 1), 4);
+  }
+}
+
 }  // namespace ui
diff --git a/ui/base/x/x11_clipboard_helper.cc b/ui/base/x/x11_clipboard_helper.cc
index 98cda92..6dc7835 100644
--- a/ui/base/x/x11_clipboard_helper.cc
+++ b/ui/base/x/x11_clipboard_helper.cc
@@ -195,16 +195,14 @@
       if (format_map_it != format_map.end())
         return SelectionData(format_map_it->first, format_map_it->second);
     }
-  } else {
-    auto targets = GetTargetList(buffer);
-
-    x11::Atom selection_name = LookupSelectionForClipboardBuffer(buffer);
-    std::vector<x11::Atom> intersection;
-    GetAtomIntersection(types, targets.target_list(), &intersection);
-    return selection_requestor_->RequestAndWaitForTypes(selection_name,
-                                                        intersection);
+    return SelectionData();
   }
-  return SelectionData();
+
+  auto targets = GetTargetList(buffer);
+  std::vector<x11::Atom> intersection;
+  GetAtomIntersection(types, targets.target_list(), &intersection);
+  return selection_requestor_->RequestAndWaitForTypes(selection_name,
+                                                      intersection);
 }
 
 std::vector<std::string> XClipboardHelper::GetAvailableTypes(
diff --git a/ui/base/x/x11_software_bitmap_presenter.cc b/ui/base/x/x11_software_bitmap_presenter.cc
index b47438ba..d91d59d6 100644
--- a/ui/base/x/x11_software_bitmap_presenter.cc
+++ b/ui/base/x/x11_software_bitmap_presenter.cc
@@ -92,12 +92,12 @@
     connection->ChangeGC(x11::ChangeGCRequest{
         .gc = gc, .subwindow_mode = x11::SubwindowMode::ClipByChildren});
 
-    auto req = connection->GetImage(
+    auto pix_req = connection->GetImage(
         {x11::ImageFormat::ZPixmap, pixmap_id, 0, 0, w_u16, h_u16, kAllPlanes});
-    if (auto reply = req.Sync())
-      bg = reply->data;
-    else
+    auto pix_reply = pix_req.Sync();
+    if (!pix_reply)
       return false;
+    bg = pix_reply->data;
   }
 
   SkBitmap bg_bitmap;
diff --git a/ui/display/manager/display_manager.cc b/ui/display/manager/display_manager.cc
index 1b3dc00f..6653b26 100644
--- a/ui/display/manager/display_manager.cc
+++ b/ui/display/manager/display_manager.cc
@@ -72,6 +72,11 @@
 const char kMirroringDisplayCountRangesHistogram[] =
     "DisplayManager.MirroringDisplayCountRanges";
 
+// The UMA histogram that logs whether mirroring is done in hardware or
+// software.
+const char kMirroringImplementationHistogram[] =
+    "DisplayManager.MirroringImplementation";
+
 #if BUILDFLAG(IS_CHROMEOS_ASH)
 // The UMA historgram that logs the zoom percentage level of the intenral
 // display.
@@ -277,6 +282,21 @@
   return DisplayCountRange::kGreaterThan8Displays;
 }
 
+// Describes the way mirror mode is implemented as reported by UMA.
+//
+// WARNING: These values are persisted to logs. Entries should not be renumbered
+//          and numeric values should never be reused.
+enum class MirroringImplementation {
+  // Software mirroring, where the same content is rendered for each display
+  // independently.
+  kSoftware = 0,
+  // Hardware mirroring, where a display is rendered once and shared across
+  // multiple displays.
+  kHardware = 1,
+
+  kMaxValue = kHardware,
+};
+
 // Defines the types of mirror mode in which the displays connected to the
 // device are in as reported by UMA.
 //
@@ -1124,6 +1144,10 @@
         kMirroringDisplayCountRangesHistogram,
         GetDisplayCountRange(GetMirroringDestinationDisplayIdList().size() + 1),
         DisplayCountRange::kCount);
+    UMA_HISTOGRAM_ENUMERATION(kMirroringImplementationHistogram,
+                              IsInSoftwareMirrorMode()
+                                  ? MirroringImplementation::kSoftware
+                                  : MirroringImplementation::kHardware);
     UMA_HISTOGRAM_ENUMERATION(kMirrorModeTypesHistogram,
                               mixed_mirror_mode_params_
                                   ? MirrorModeTypes::kMixed
diff --git a/ui/ozone/platform/wayland/host/wayland_frame_manager.cc b/ui/ozone/platform/wayland/host/wayland_frame_manager.cc
index 38f4698..edf3880 100644
--- a/ui/ozone/platform/wayland/host/wayland_frame_manager.cc
+++ b/ui/ozone/platform/wayland/host/wayland_frame_manager.cc
@@ -117,8 +117,6 @@
 
   // Window is still neither configured nor has pending configure bounds, need
   // to wait. Probably happens only in early stages of window initialization.
-  // TODO(crbug.com/1313023): Check whether this is still needed, otherwise
-  // move/merge into the block after UpdateVisualSize() call below.
   if (!window_->received_configure_event())
     return;
 
@@ -155,7 +153,7 @@
   //    is still out-of-sync with the pending configure sequences received from
   //    the Wayland compositor. This avoids protocol errors as observed in
   //    https://crbug.com/1313023.
-  if (frame->buffer_lost || !IsSurfaceConfigured())
+  if (frame->buffer_lost || !window_->IsSurfaceConfigured())
     DiscardFrame(std::move(pending_frames_.front()));
   else
     PlayBackFrame(std::move(pending_frames_.front()));
@@ -173,7 +171,7 @@
 
 void WaylandFrameManager::PlayBackFrame(std::unique_ptr<WaylandFrame> frame) {
   DCHECK(!frame->buffer_lost);
-  DCHECK(IsSurfaceConfigured());
+  DCHECK(window_->IsSurfaceConfigured());
 
   auto* root_surface = frame->root_surface.get();
   auto& root_config = frame->root_config;
@@ -683,19 +681,4 @@
           submitted_frames_.back()->presentation_acked));
 }
 
-bool WaylandFrameManager::IsSurfaceConfigured() const {
-  // TODO(crbug.com/1346534): Lacros fractional scale is still buggy, at least
-  // until migration of WaylandWindow to use DIP instead of pixels to store
-  // window bounds (see crbug.com/1306688). Rounding issues may lead to bounds
-  // mismatches when processing visual updates (i.e: set_geometry/ack_configure
-  // are not sent). As of now, however, Exo does not send protocol error when
-  // attaching buffers to non-configured surfaces. Thus, return
-  // received_configure_event until it gets fixed.
-#if BUILDFLAG(IS_CHROMEOS_LACROS)
-  return window_->received_configure_event();
-#else
-  return window_->IsSurfaceConfigured();
-#endif
-}
-
 }  // namespace ui
diff --git a/ui/ozone/platform/wayland/host/wayland_frame_manager.h b/ui/ozone/platform/wayland/host/wayland_frame_manager.h
index fc71c60..2fcace1 100644
--- a/ui/ozone/platform/wayland/host/wayland_frame_manager.h
+++ b/ui/ozone/platform/wayland/host/wayland_frame_manager.h
@@ -178,8 +178,6 @@
   // frame must not be used for the further submission.
   bool EnsureWlBuffersExist(WaylandFrame& frame);
 
-  bool IsSurfaceConfigured() const;
-
   const raw_ptr<WaylandWindow> window_;
 
   // When RecordFrame() is called, a Frame is pushed to |pending_frames_|. See
diff --git a/ui/ozone/platform/wayland/wayland_buffer_manager_unittest.cc b/ui/ozone/platform/wayland/wayland_buffer_manager_unittest.cc
index 0101849..7a1a95d 100644
--- a/ui/ozone/platform/wayland/wayland_buffer_manager_unittest.cc
+++ b/ui/ozone/platform/wayland/wayland_buffer_manager_unittest.cc
@@ -1128,19 +1128,6 @@
   }
 }
 
-#if BUILDFLAG(IS_CHROMEOS_LACROS)
-// TODO(1346534): Lacros fractional scale is still buggy, at least until
-// migration of WaylandWindow to use DIP instead of pixels to store window
-// bounds (see crbug.com/1306688). Rounding issues may lead to bounds
-// mismatches when processing visual updates (i.e: set_geometry/ack_configure
-// are not sent). Enable this back once those issues get fixed.
-#define MAYBE_CommitBufferConditionsWithDeferredAckConfigure \
-  DISABLED_CommitBufferConditionsWithDeferredAckConfigure
-#else
-#define MAYBE_CommitBufferConditionsWithDeferredAckConfigure \
-  CommitBufferConditionsWithDeferredAckConfigure
-#endif
-
 // Verifies toplevel surfaces do not have buffers attached until configured,
 // even when the initial configure sequence is not acked in response to
 // xdg_surface.configure event, i.e: done asynchronously when UpdateVisualSize()
@@ -1148,7 +1135,7 @@
 //
 // Regression test for https://crbug.com/1313023.
 TEST_P(WaylandBufferManagerTest,
-       MAYBE_CommitBufferConditionsWithDeferredAckConfigure) {
+       CommitBufferConditionsWithDeferredAckConfigure) {
   constexpr gfx::Rect kNormalBounds{800, 800};
   constexpr gfx::Rect kRestoredBounds{500, 500};
   constexpr uint32_t kDmabufBufferId = 1;
diff --git a/ui/ozone/platform/x11/x11_screen_ozone.cc b/ui/ozone/platform/x11/x11_screen_ozone.cc
index 202dcd1..8b25f6b 100644
--- a/ui/ozone/platform/x11/x11_screen_ozone.cc
+++ b/ui/ozone/platform/x11/x11_screen_ozone.cc
@@ -113,8 +113,8 @@
     gfx::Point point_in_pixels = gfx::ToFlooredPoint(
         gfx::ConvertPointToPixels(point, GetXDisplayScaleFactor()));
     base::flat_set<x11::Window> ignore_windows;
-    for (auto widget : ignore)
-      ignore_windows.insert(static_cast<x11::Window>(widget));
+    for (auto ignore_widget : ignore)
+      ignore_windows.insert(static_cast<x11::Window>(ignore_widget));
     widget = static_cast<gfx::AcceleratedWidget>(
         x11::GetWindowAtPoint(point_in_pixels, &ignore_windows));
   }
diff --git a/ui/ozone/platform/x11/x11_surface_factory.cc b/ui/ozone/platform/x11/x11_surface_factory.cc
index b19cfb1..2efa942a 100644
--- a/ui/ozone/platform/x11/x11_surface_factory.cc
+++ b/ui/ozone/platform/x11/x11_surface_factory.cc
@@ -216,9 +216,9 @@
       ui::GpuMemoryBufferSupportX11::GetInstance()->CreateBufferFromHandle(
           size, format, std::move(handle));
   if (buffer) {
-    gfx::NativePixmapHandle handle = buffer->ExportHandle();
-    pixmap = base::MakeRefCounted<gfx::NativePixmapDmaBuf>(size, format,
-                                                           std::move(handle));
+    gfx::NativePixmapHandle buffer_handle = buffer->ExportHandle();
+    pixmap = base::MakeRefCounted<gfx::NativePixmapDmaBuf>(
+        size, format, std::move(buffer_handle));
   }
   return pixmap;
 }
diff --git a/ui/webui/resources/cr_components/help_bubble/README.md b/ui/webui/resources/cr_components/help_bubble/README.md
index 1f8a74d..9cd5b72 100644
--- a/ui/webui/resources/cr_components/help_bubble/README.md
+++ b/ui/webui/resources/cr_components/help_bubble/README.md
@@ -52,6 +52,10 @@
      bubble to, but whose visibility you care able for a Tutorial step or
      interactive test.
 
+   * It is rare, but if your anchor element is not immediately present in your
+     component, you can instead wait to call `registerHelpBubbleIdentifier()`
+     until after the element is created.
+
 ## Limitations
 
 Currently the frontend has the following limitations (many of these will be